diff options
155 files changed, 112976 insertions, 392 deletions
@@ -124,3 +124,6 @@ test/unit/proj_errno_string_test.o jniwrap/out /docs/build +/docs/.doxygen_up_to_date + +tmp_breathe diff --git a/.travis.yml b/.travis.yml index 86545b14..137e9afb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -47,6 +47,7 @@ matrix: compiler: gcc language: cpp dist: trusty + sudo: required env: - BUILD_NAME=csa - DETAILS="CLang Static Analyzer" diff --git a/CMakeLists.txt b/CMakeLists.txt index e6265dc0..62a16d7f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,19 +19,20 @@ if (NOT CMAKE_VERSION VERSION_LESS 3.1) cmake_policy(SET CMP0054 NEW) endif () +add_definitions(-DPROJ_COMPILATION=1) + # Set warnings if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") # Suppress warning 4706 about assignment within conditional expression # Suppress warning 4996 about sprintf, etc., being unsafe - # Suppress warning 4589 about Constructor of abstract class...ignores initializer for virtual base class (see https://github.com/weidai11/cryptopp/issues/214#issuecomment-230283061) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4 /wd4706 /wd4996 /D_CRT_SECURE_NO_WARNINGS") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /W4 /wd4706 /wd4996 /wd4589 /D_CRT_SECURE_NO_WARNINGS") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /W4 /wd4706 /wd4996 /D_CRT_SECURE_NO_WARNINGS") elseif("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-prototypes -Wmissing-declarations -Wformat -Wformat-security") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-declarations -Wformat -Wformat-security") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-prototypes -Wmissing-declarations -Wformat -Wformat-security") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -std=c++11 -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-declarations -Wformat -Wformat-security") elseif("${CMAKE_C_COMPILER_ID}" MATCHES "Clang") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-prototypes -Wmissing-declarations -Wformat -Wformat-security -Wfloat-conversion -Wc99-extensions -Wc11-extensions") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-declarations -Wformat -Wformat-security -Wfloat-conversion") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-prototypes -Wmissing-declarations -Wformat -Wformat-security -Wfloat-conversion -Wc99-extensions -Wc11-extensions") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -std=c++11 -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-declarations -Wformat -Wformat-security -Wfloat-conversion") endif() # Tell Intel compiler to do arithmetic accurately. This is needed to @@ -43,8 +44,8 @@ if (CMAKE_C_COMPILER_ID STREQUAL "Intel") set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /fp:precise") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Qstd=c++11") else () - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise") - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -fp-model precise") + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -std=c++11") endif () endif () @@ -76,6 +77,20 @@ include(ProjMac) include(policies) ################################################################################# +# Check for sqlite3 +################################################################################# +find_program(EXE_SQLITE3 sqlite3) +if (NOT EXE_SQLITE3) +MESSAGE (SEND_ERROR "sqlite3 binary not found!") +ENDIF (NOT EXE_SQLITE3) + +FIND_PACKAGE(Sqlite3) +IF (NOT SQLITE3_FOUND) +MESSAGE (SEND_ERROR "sqlite3 dependency not found!") +ENDIF (NOT SQLITE3_FOUND) + + +################################################################################# # threading configuration ################################################################################# set(CMAKE_THREAD_PREFER_PTHREAD TRUE) @@ -172,6 +187,7 @@ include_directories(${PROJ4_SOURCE_DIR}/src) message(STATUS "") add_subdirectory(data) +add_subdirectory(include) add_subdirectory(src) add_subdirectory(man) add_subdirectory(cmake) diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 00000000..cc772c2e --- /dev/null +++ b/Doxyfile @@ -0,0 +1,2441 @@ +# Doxyfile 1.8.11 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "PROJ C++ API" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +#ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. For +# instance to make doxygen treat .inc files as Fortran files (default is PHP), +# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +#GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO, these declarations will be +# included in the documentation. +# The default value is: NO. + +# Changed by ERO +HIDE_FRIEND_COMPOUNDS = YES + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +#HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if <section_label> ... \endif and \cond <section_label> +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +#WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = src include/proj src/proj.h src/general_doc.dox + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl, +# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js. + +FILE_PATTERNS = *.hpp *.cpp + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = include/proj/nn.hpp + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# <filter> <input-file> +# +# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the +# cost of reduced performance. This can be particularly helpful with template +# rich C++ code for which doxygen's built-in parser lacks the necessary type +# information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse-libclang=ON option for CMake. +# The default value is: NO. + +#CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +#CLANG_OPTIONS = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +# Modified by ERO +HTML_OUTPUT = docs/build/doxygen_html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use <access key> + S +# (what the <access key> is depends on the OS and browser, but it is typically +# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down +# key> to jump into the search results window, the results can be navigated +# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel +# the search. The filter options can be selected when the cursor is inside the +# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys> +# to select a filter and <Enter> or <escape> to activate or cancel the filter +# option. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +SEARCHENGINE = YES + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a web server instead of a web client using Javascript. There +# are two flavors of web server based searching depending on the EXTERNAL_SEARCH +# setting. When disabled, doxygen will generate a PHP script for searching and +# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing +# and searching needs to be provided by external tools. See the section +# "External Indexing and Searching" for details. +# The default value is: NO. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SERVER_BASED_SEARCH = NO + +# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP +# script for searching. Instead the search results are written to an XML file +# which needs to be processed by an external indexer. Doxygen will invoke an +# external search engine pointed to by the SEARCHENGINE_URL option to obtain the +# search results. +# +# Doxygen ships with an example indexer (doxyindexer) and search engine +# (doxysearch.cgi) which are based on the open source search engine library +# Xapian (see: http://xapian.org/). +# +# See the section "External Indexing and Searching" for details. +# The default value is: NO. +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTERNAL_SEARCH = NO + +# The SEARCHENGINE_URL should point to a search engine hosted by a web server +# which will return the search results when EXTERNAL_SEARCH is enabled. +# +# Doxygen ships with an example indexer (doxyindexer) and search engine +# (doxysearch.cgi) which are based on the open source search engine library +# Xapian (see: http://xapian.org/). See the section "External Indexing and +# Searching" for details. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SEARCHENGINE_URL = + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed +# search data is written to a file for indexing by an external tool. With the +# SEARCHDATA_FILE tag the name of this file can be specified. +# The default file is: searchdata.xml. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SEARCHDATA_FILE = searchdata.xml + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the +# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is +# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple +# projects and redirect the results back to the right project. +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTERNAL_SEARCH_ID = + +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# projects other than the one defined by this configuration file, but that are +# all added to the same external search index. Each project needs to have a +# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of +# to a relative location where the documentation can be found. The format is: +# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ... +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTRA_SEARCH_MAPPINGS = + +#--------------------------------------------------------------------------- +# Configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output. +# The default value is: YES. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: latex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. +# +# Note that when enabling USE_PDFLATEX this option is only used for generating +# bitmaps for formulas in the HTML output, but not in the Makefile that is +# written to the output directory. +# The default file is: latex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate +# index for LaTeX. +# The default file is: makeindex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX +# documents. This may be useful for small projects and may help to save some +# trees in general. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used by the +# printer. +# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x +# 14 inches) and executive (7.25 x 10.5 inches). +# The default value is: a4. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +PAPER_TYPE = a4 + +# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names +# that should be included in the LaTeX output. The package can be specified just +# by its name or with the correct syntax as to be used with the LaTeX +# \usepackage command. To get the times font for instance you can specify : +# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times} +# To use the option intlimits with the amsmath package you can specify: +# EXTRA_PACKAGES=[intlimits]{amsmath} +# If left blank no extra packages will be included. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the +# generated LaTeX document. The header should contain everything until the first +# chapter. If it is left blank doxygen will generate a standard header. See +# section "Doxygen usage" for information on how to let doxygen write the +# default header to a separate file. +# +# Note: Only use a user-defined header if you know what you are doing! The +# following commands have a special meaning inside the header: $title, +# $datetime, $date, $doxygenversion, $projectname, $projectnumber, +# $projectbrief, $projectlogo. Doxygen will replace $title with the empty +# string, for the replacement values of the other commands the user is referred +# to HTML_HEADER. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_HEADER = + +# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the +# generated LaTeX document. The footer should contain everything after the last +# chapter. If it is left blank doxygen will generate a standard footer. See +# LATEX_HEADER for more information on how to generate a default footer and what +# special commands can be used inside the footer. +# +# Note: Only use a user-defined footer if you know what you are doing! +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_FOOTER = + +# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# LaTeX style sheets that are included after the standard style sheets created +# by doxygen. Using this option one can overrule certain style aspects. Doxygen +# will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). +# This tag requires that the tag GENERATE_LATEX is set to YES. + +#LATEX_EXTRA_STYLESHEET = + +# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the LATEX_OUTPUT output +# directory. Note that the files will be copied as-is; there are no commands or +# markers available. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_EXTRA_FILES = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is +# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will +# contain links (just like the HTML output) instead of page references. This +# makes the output suitable for online browsing using a PDF viewer. +# The default value is: YES. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate +# the PDF file directly from the LaTeX files. Set this option to YES, to get a +# higher quality PDF documentation. +# The default value is: YES. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode +# command to the generated LaTeX files. This will instruct LaTeX to keep running +# if errors occur, instead of asking the user for help. This option is also used +# when generating formulas in HTML. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_BATCHMODE = NO + +# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the +# index chapters (such as File Index, Compound Index, etc.) in the output. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_HIDE_INDICES = NO + +# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source +# code with syntax highlighting in the LaTeX output. +# +# Note that which sources are shown also depends on other settings such as +# SOURCE_BROWSER. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_SOURCE_CODE = NO + +# The LATEX_BIB_STYLE tag can be used to specify the style to use for the +# bibliography, e.g. plainnat, or ieeetr. See +# http://en.wikipedia.org/wiki/BibTeX and \cite for more info. +# The default value is: plain. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_BIB_STYLE = plain + +# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated +# page will contain the date and time when the page was generated. Setting this +# to NO can help when comparing the output of multiple runs. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +#LATEX_TIMESTAMP = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The +# RTF output is optimized for Word 97 and may not look too pretty with other RTF +# readers/editors. +# The default value is: NO. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: rtf. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF +# documents. This may be useful for small projects and may help to save some +# trees in general. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will +# contain hyperlink fields. The RTF file will contain links (just like the HTML +# output) instead of page references. This makes the output suitable for online +# browsing using Word or some other Word compatible readers that support those +# fields. +# +# Note: WordPad (write) and others do not support links. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's config +# file, i.e. a series of assignments. You only have to provide replacements, +# missing definitions are set to their default value. +# +# See also section "Doxygen usage" for information on how to generate the +# default style sheet that doxygen normally uses. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an RTF document. Syntax is +# similar to doxygen's config file. A template extensions file can be generated +# using doxygen -e rtf extensionFile. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_EXTENSIONS_FILE = + +# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code +# with syntax highlighting in the RTF output. +# +# Note that which sources are shown also depends on other settings such as +# SOURCE_BROWSER. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +#RTF_SOURCE_CODE = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for +# classes and files. +# The default value is: NO. + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. A directory man3 will be created inside the directory specified by +# MAN_OUTPUT. +# The default directory is: man. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to the generated +# man pages. In case the manual section does not start with a number, the number +# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is +# optional. +# The default value is: .3. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_EXTENSION = .3 + +# The MAN_SUBDIR tag determines the name of the directory created within +# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by +# MAN_EXTENSION with the initial . removed. +# This tag requires that the tag GENERATE_MAN is set to YES. + +#MAN_SUBDIR = + +# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it +# will generate one additional man file for each entity documented in the real +# man page(s). These additional files only source the real man page, but without +# them the man command would be unable to find the correct page. +# The default value is: NO. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that +# captures the structure of the code including all documentation. +# The default value is: NO. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: xml. +# This tag requires that the tag GENERATE_XML is set to YES. + +# Modified by ERO +XML_OUTPUT = docs/build/xml + +# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program +# listings (including syntax highlighting and cross-referencing information) to +# the XML output. Note that enabling this will significantly increase the size +# of the XML output. +# The default value is: YES. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# Configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- + +# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files +# that can be used to generate PDF. +# The default value is: NO. + +GENERATE_DOCBOOK = NO + +# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in +# front of it. +# The default directory is: docbook. +# This tag requires that the tag GENERATE_DOCBOOK is set to YES. + +DOCBOOK_OUTPUT = docbook + +# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the +# program listings (including syntax highlighting and cross-referencing +# information) to the DOCBOOK output. Note that enabling this will significantly +# increase the size of the DOCBOOK output. +# The default value is: NO. +# This tag requires that the tag GENERATE_DOCBOOK is set to YES. + +#DOCBOOK_PROGRAMLISTING = NO + +#--------------------------------------------------------------------------- +# Configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an +# AutoGen Definitions (see http://autogen.sf.net) file that captures the +# structure of the code including all documentation. Note that this feature is +# still experimental and incomplete at the moment. +# The default value is: NO. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module +# file that captures the structure of the code including all documentation. +# +# Note that this feature is still experimental and incomplete at the moment. +# The default value is: NO. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary +# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI +# output from the Perl module output. +# The default value is: NO. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely +# formatted so it can be parsed by a human reader. This is useful if you want to +# understand what is going on. On the other hand, if this tag is set to NO, the +# size of the Perl module output will be much smaller and Perl will parse it +# just the same. +# The default value is: YES. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file are +# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful +# so different doxyrules.make files included by the same Makefile don't +# overwrite each other's variables. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all +# C-preprocessor directives found in the sources and include files. +# The default value is: YES. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names +# in the source code. If set to NO, only conditional compilation will be +# performed. Macro expansion can be done in a controlled way by setting +# EXPAND_ONLY_PREDEF to YES. +# The default value is: NO. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +# ERO: manually modified +MACRO_EXPANSION = YES + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then +# the macro expansion is limited to the macros specified with the PREDEFINED and +# EXPAND_AS_DEFINED tags. +# The default value is: NO. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES, the include files in the +# INCLUDE_PATH will be searched if a #include is found. +# The default value is: YES. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by the +# preprocessor. +# This tag requires that the tag SEARCH_INCLUDES is set to YES. + +INCLUDE_PATH = include + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will be +# used. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that are +# defined before the preprocessor is started (similar to the -D option of e.g. +# gcc). The argument of the tag is a list of macros of the form: name or +# name=definition (no spaces). If the definition and the "=" are omitted, "=1" +# is assumed. To prevent a macro definition from being undefined via #undef or +# recursively expanded use the := operator instead of the = operator. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +PREDEFINED = DOXYGEN_ENABLED \ + PROJ_DLL= \ + PROJ_INTERNAL= \ + PROJ_GCC_DLL= \ + PROJ_MSVC_DLL= \ + NS_PROJ_START="namespace osgeo { namespace proj {" \ + NS_PROJ_END="} }" \ + protected=private \ + INLINED_MAKE_SHARED= \ + PROJ_OPAQUE_PRIVATE_DATA= \ + PROJ_PRIVATE=private + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this +# tag can be used to specify a list of macro names that should be expanded. The +# macro definition that is found in the sources will be used. Use the PREDEFINED +# tag if you want to use a different macro definition that overrules the +# definition found in the source code. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will +# remove all references to function-like macros that are alone on a line, have +# an all uppercase name, and do not end with a semicolon. Such function macros +# are typically used for boiler-plate code, and will confuse the parser if not +# removed. +# The default value is: YES. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration options related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES tag can be used to specify one or more tag files. For each tag +# file the location of the external documentation should be added. The format of +# a tag file without this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where loc1 and loc2 can be relative or absolute paths or URLs. See the +# section "Linking to external documentation" for more information about the use +# of tag files. +# Note: Each tag file must have a unique name (where the name does NOT include +# the path). If a tag file is not located in the directory in which doxygen is +# run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create a +# tag file that is based on the input files it reads. See section "Linking to +# external documentation" for more information about the usage of tag files. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES, all external class will be listed in +# the class index. If set to NO, only the inherited external classes will be +# listed. +# The default value is: NO. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will be +# listed. +# The default value is: YES. + +EXTERNAL_GROUPS = YES + +# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in +# the related pages index. If set to NO, only the current project's pages will +# be listed. +# The default value is: YES. + +EXTERNAL_PAGES = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of 'which perl'). +# The default file (with absolute path) is: /usr/bin/perl. + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram +# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to +# NO turns the diagrams off. Note that this option also works with HAVE_DOT +# disabled, but it is recommended to install and use dot, since it yields more +# powerful graphs. +# The default value is: YES. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see: +# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# You can include diagrams made with dia in doxygen documentation. Doxygen will +# then run dia to produce the diagram and insert it in the documentation. The +# DIA_PATH tag allows you to specify the directory where the dia binary resides. +# If left empty dia is assumed to be found in the default search path. + +DIA_PATH = + +# If set to YES the inheritance and collaboration graphs will hide inheritance +# and usage relations if the target is undocumented or is not a class. +# The default value is: YES. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz (see: +# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent +# Bell Labs. The other options in this section have no effect if this option is +# set to NO +# The default value is: YES. + +HAVE_DOT = YES + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed +# to run in parallel. When set to 0 doxygen will base this on the number of +# processors available in the system. You can set it explicitly to a value +# larger than 0 to get control over the balance between CPU load and processing +# speed. +# Minimum value: 0, maximum value: 32, default value: 0. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_NUM_THREADS = 0 + +# When you want a differently looking font in the dot files that doxygen +# generates you can specify the font name using DOT_FONTNAME. You need to make +# sure dot is able to find the font, which can be done by putting it in a +# standard location or by setting the DOTFONTPATH environment variable or by +# setting DOT_FONTPATH to the directory containing the font. +# The default value is: Helvetica. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTNAME = Helvetica + +# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of +# dot graphs. +# Minimum value: 4, maximum value: 24, default value: 10. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the default font as specified with +# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set +# the path where dot can find it using this tag. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTPATH = + +# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for +# each documented class showing the direct and indirect inheritance relations. +# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a +# graph for each documented class showing the direct and indirect implementation +# dependencies (inheritance, containment, and class references variables) of the +# class with other documented classes. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for +# groups, showing the direct groups dependencies. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +UML_LOOK = NO + +# If the UML_LOOK tag is enabled, the fields and methods are shown inside the +# class node. If there are many fields or methods and many nodes the graph may +# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the +# number of items for each type to make the size more manageable. Set this to 0 +# for no limit. Note that the threshold may be exceeded by 50% before the limit +# is enforced. So when you set the threshold to 10, up to 15 fields may appear, +# but if the number exceeds 15, the total amount of fields shown is limited to +# 10. +# Minimum value: 0, maximum value: 100, default value: 10. +# This tag requires that the tag HAVE_DOT is set to YES. + +UML_LIMIT_NUM_FIELDS = 10 + +# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and +# collaboration graphs will show the relations between templates and their +# instances. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +TEMPLATE_RELATIONS = NO + +# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to +# YES then doxygen will generate a graph for each documented file showing the +# direct and indirect include dependencies of the file with other documented +# files. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +INCLUDE_GRAPH = YES + +# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are +# set to YES then doxygen will generate a graph for each documented file showing +# the direct and indirect include dependencies of the file with other documented +# files. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH tag is set to YES then doxygen will generate a call +# dependency graph for every global function or class method. +# +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. Disabling a call graph can be +# accomplished by means of the command \hidecallgraph. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller +# dependency graph for every global function or class method. +# +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. Disabling a caller graph can be +# accomplished by means of the command \hidecallergraph. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical +# hierarchy of all classes instead of a textual one. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the +# dependencies a directory has on other directories in a graphical way. The +# dependency relations are determined by the #include relations between the +# files in the directories. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. For an explanation of the image formats see the section +# output formats in the documentation of the dot tool (Graphviz (see: +# http://www.graphviz.org/)). +# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order +# to make the SVG files visible in IE 9+ (other browsers do not have this +# requirement). +# Possible values are: png, png:cairo, png:cairo:cairo, png:cairo:gd, png:gd, +# png:gd:gd, jpg, jpg:cairo, jpg:cairo:gd, jpg:gd, jpg:gd:gd, gif, gif:cairo, +# gif:cairo:gd, gif:gd, gif:gd:gd, svg, png:gd, png:gd:gd, png:cairo, +# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and +# png:gdiplus:gdiplus. +# The default value is: png. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_IMAGE_FORMAT = png + +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +# enable generation of interactive SVG images that allow zooming and panning. +# +# Note that this requires a modern browser other than Internet Explorer. Tested +# and working are Firefox, Chrome, Safari, and Opera. +# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make +# the SVG files visible. Older versions of IE do not have SVG support. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +INTERACTIVE_SVG = NO + +# The DOT_PATH tag can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the \dotfile +# command). +# This tag requires that the tag HAVE_DOT is set to YES. + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the \mscfile +# command). + +MSCFILE_DIRS = + +# The DIAFILE_DIRS tag can be used to specify one or more directories that +# contain dia files that are included in the documentation (see the \diafile +# command). + +DIAFILE_DIRS = + +# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the +# path where java can find the plantuml.jar file. If left blank, it is assumed +# PlantUML is not used or called during a preprocessing step. Doxygen will +# generate a warning when it encounters a \startuml command in this case and +# will not generate output for the diagram. + +#PLANTUML_JAR_PATH = + +# When using plantuml, the specified paths are searched for files specified by +# the !include statement in a plantuml block. + +#PLANTUML_INCLUDE_PATH = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes +# that will be shown in the graph. If the number of nodes in a graph becomes +# larger than this value, doxygen will truncate the graph, which is visualized +# by representing a node as a red box. Note that doxygen if the number of direct +# children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that +# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. +# Minimum value: 0, maximum value: 10000, default value: 50. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs +# generated by dot. A depth value of 3 means that only nodes reachable from the +# root by following a path via at most 3 edges will be shown. Nodes that lay +# further from the root node will be omitted. Note that setting this option to 1 +# or 2 may greatly reduce the computation time needed for large code bases. Also +# note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. +# Minimum value: 0, maximum value: 1000, default value: 0. +# This tag requires that the tag HAVE_DOT is set to YES. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not seem +# to support this out of the box. +# +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) support +# this, this feature is disabled by default. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page +# explaining the meaning of the various boxes and arrows in the dot generated +# graphs. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot +# files that are used to generate the various graphs. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_CLEANUP = YES diff --git a/Makefile.am b/Makefile.am index 760a4da9..52e456ff 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = src man data jniwrap cmake test +SUBDIRS = include src man data jniwrap cmake test EXTRA_DIST = CMakeLists.txt CITATION diff --git a/appveyor.yml b/appveyor.yml index 11059e92..2a1aa976 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -17,19 +17,28 @@ shallow_clone: true build_script: - echo build_script + - vcpkg install sqlite3:"%platform%"-windows + - ps: | + appveyor DownloadFile https://sqlite.org/2018/sqlite-tools-win32-x86-3250100.zip + 7z x sqlite-tools-win32-x86-3250100.zip + copy sqlite-tools-win32-x86-3250100/sqlite3.exe . - if "%platform%" == "x64" SET VS_FULL=%VS_VERSION% Win64 - if "%platform%" == "x86" SET VS_FULL=%VS_VERSION% - echo "%VS_FULL%" # - if "%platform%" == "x64" mkdir build_dll - if "%platform%" == "x64" cd build_dll - - if "%platform%" == "x64" cmake -G "%VS_FULL%" .. -DCMAKE_BUILD_TYPE=Release -DBUILD_LIBPROJ_SHARED=ON -DCMAKE_C_FLAGS="/WX" + - if "%platform%" == "x64" copy ..\sqlite3.exe . + - if "%platform%" == "x64" copy c:\tools\vcpkg\installed\x64-windows\bin\sqlite3.dll . + - if "%platform%" == "x64" cmake -G "%VS_FULL%" .. -DCMAKE_BUILD_TYPE=Release -DBUILD_LIBPROJ_SHARED=ON -DCMAKE_C_FLAGS="/WX" -DCMAKE_CXX_FLAGS="/WX" -DCMAKE_TOOLCHAIN_FILE=c:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake - if "%platform%" == "x64" cmake --build . --config Release - if "%platform%" == "x64" cd .. # - if "%platform%" == "x86" mkdir build_static - if "%platform%" == "x86" cd build_static - - if "%platform%" == "x86" cmake -G "%VS_FULL%" .. -DCMAKE_BUILD_TYPE=Release -DBUILD_LIBPROJ_SHARED=OFF -DCMAKE_C_FLAGS="/WX" + - if "%platform%" == "x86" copy ..\sqlite3.exe . + - if "%platform%" == "x86" copy c:\tools\vcpkg\installed\x86-windows\bin\sqlite3.dll . + - if "%platform%" == "x86" cmake -G "%VS_FULL%" .. -DCMAKE_BUILD_TYPE=Release -DBUILD_LIBPROJ_SHARED=OFF -DCMAKE_C_FLAGS="/WX" -DCMAKE_CXX_FLAGS="/WX" -DCMAKE_TOOLCHAIN_FILE=c:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake - if "%platform%" == "x86" cmake --build . --config Release - if "%platform%" == "x86" cd .. @@ -45,11 +54,11 @@ test_script: - cd %CURDIR% # - if "%platform%" == "x64" cd build_dll - - if "%platform%" == "x64" ctest -C Release + - if "%platform%" == "x64" ctest -V -C Release - if "%platform%" == "x64" cd .. # - if "%platform%" == "x86" cd build_static - - if "%platform%" == "x86" ctest -C Release + - if "%platform%" == "x86" ctest -V -C Release - if "%platform%" == "x86" cd .. deploy: off diff --git a/cmake/FindSqlite3.cmake b/cmake/FindSqlite3.cmake new file mode 100644 index 00000000..4ac079c4 --- /dev/null +++ b/cmake/FindSqlite3.cmake @@ -0,0 +1,66 @@ +# Find Sqlite3 +# ~~~~~~~~~~~~ +# Copyright (c) 2007, Martin Dobias <wonder.sk at gmail.com> +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +# +# CMake module to search for Sqlite3 library +# +# If it's found it sets SQLITE3_FOUND to TRUE +# and following variables are set: +# SQLITE3_INCLUDE_DIR +# SQLITE3_LIBRARY + + +# FIND_PATH and FIND_LIBRARY normally search standard locations +# before the specified paths. To search non-standard paths first, +# FIND_* is invoked first with specified paths and NO_DEFAULT_PATH +# and then again with no specified paths to search the default +# locations. When an earlier FIND_* succeeds, subsequent FIND_*s +# searching for the same item do nothing. + +# try to use framework on mac +# want clean framework path, not unix compatibility path +IF (APPLE) + IF (CMAKE_FIND_FRAMEWORK MATCHES "FIRST" + OR CMAKE_FRAMEWORK_PATH MATCHES "ONLY" + OR NOT CMAKE_FIND_FRAMEWORK) + SET (CMAKE_FIND_FRAMEWORK_save ${CMAKE_FIND_FRAMEWORK} CACHE STRING "" FORCE) + SET (CMAKE_FIND_FRAMEWORK "ONLY" CACHE STRING "" FORCE) + #FIND_PATH(SQLITE3_INCLUDE_DIR SQLite3/sqlite3.h) + FIND_LIBRARY(SQLITE3_LIBRARY SQLite3) + IF (SQLITE3_LIBRARY) + # FIND_PATH doesn't add "Headers" for a framework + SET (SQLITE3_INCLUDE_DIR ${SQLITE3_LIBRARY}/Headers CACHE PATH "Path to a file.") + ENDIF (SQLITE3_LIBRARY) + SET (CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_save} CACHE STRING "" FORCE) + ENDIF () +ENDIF (APPLE) + +FIND_PATH(SQLITE3_INCLUDE_DIR sqlite3.h + "$ENV{LIB_DIR}/include" + "$ENV{LIB_DIR}/include/sqlite" + "$ENV{INCLUDE}" +) + +FIND_LIBRARY(SQLITE3_LIBRARY NAMES sqlite3_i sqlite3 PATHS + "$ENV{LIB_DIR}/lib" + "$ENV{LIB}/lib" + ) + +IF (SQLITE3_INCLUDE_DIR AND SQLITE3_LIBRARY) + SET(SQLITE3_FOUND TRUE) +ENDIF (SQLITE3_INCLUDE_DIR AND SQLITE3_LIBRARY) + +IF (SQLITE3_FOUND) + IF (NOT SQLITE3_FIND_QUIETLY) + MESSAGE(STATUS "Found Sqlite3: ${SQLITE3_LIBRARY}") + ENDIF (NOT SQLITE3_FIND_QUIETLY) + +ELSE (SQLITE3_FOUND) + + IF (SQLITE3_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find Sqlite3") + ENDIF (SQLITE3_FIND_REQUIRED) + +ENDIF (SQLITE3_FOUND) diff --git a/cmake/Makefile.am b/cmake/Makefile.am index 14ce7af6..c2799f3a 100644 --- a/cmake/Makefile.am +++ b/cmake/Makefile.am @@ -10,5 +10,6 @@ EXTRA_DIST = CMakeLists.txt \ policies.cmake \ proj_config.cmake.in \ project-config-version.cmake.in \ - project-config.cmake.in + project-config.cmake.in \ + FindSqlite3.cmake diff --git a/configure.ac b/configure.ac index a8747838..31cb2a8a 100644 --- a/configure.ac +++ b/configure.ac @@ -126,6 +126,11 @@ fi dnl Clang enables -Woverloaded-virtual if -Wall is defined, but not GCC AX_CHECK_COMPILE_FLAG([-Woverloaded-virtual], [CXX_WFLAGS="$CXX_WFLAGS -Woverloaded-virtual"],,[$ERROR_ON_UNKNOWN_OPTIONS]) +AX_CHECK_COMPILE_FLAG([-Wweak-vtables], [CXX_WFLAGS="$CXX_WFLAGS -Wweak-vtables"],,[$ERROR_ON_UNKNOWN_OPTIONS]) +AX_CHECK_COMPILE_FLAG([-Wdeprecated], [CXX_WFLAGS="$CXX_WFLAGS -Wdeprecated"],,[$ERROR_ON_UNKNOWN_OPTIONS]) +AX_CHECK_COMPILE_FLAG([-Wabstract-vbase-init], [CXX_WFLAGS="$CXX_WFLAGS -Wabstract-vbase-init"],,[$ERROR_ON_UNKNOWN_OPTIONS]) +AX_CHECK_COMPILE_FLAG([-Winconsistent-missing-destructor-override], [CXX_WFLAGS="$CXX_WFLAGS -Winconsistent-missing-destructor-override"],,[$ERROR_ON_UNKNOWN_OPTIONS]) + dnl Forbid use of 'or', 'and', ... alias operators AX_CHECK_COMPILE_FLAG([-fno-operator-names], [CXX_WFLAGS="$CXX_WFLAGS -fno-operator-names"],,[$ERROR_ON_UNKNOWN_OPTIONS]) @@ -138,10 +143,47 @@ fi AC_LANG_POP([C++]) +dnl --------------------------------------------------------------------------- +dnl Check for --enable-lto +dnl --------------------------------------------------------------------------- + +AC_MSG_CHECKING([to enable LTO (link time optimization) build]) + +AC_ARG_ENABLE(lto, + AS_HELP_STRING([--enable-lto], + [enable LTO(link time optimization) (enabled by default)])) + +FLTO_FLAG="" +if test "x$enable_lto" = "xyes" -o "x$enable_lto" = "x"; then + AC_LANG_PUSH([C++]) + AX_CHECK_COMPILE_FLAG([-flto], [FLTO_FLAG="-flto"],,[$ERROR_ON_UNKNOWN_OPTIONS]) + if test "$FLTO_FLAG" != ""; then + SAVED_CXXFLAGS=$CXXFLAGS + CXXFLAGS="$CXXFLAGS $FLTO_FLAG -Werror" + AC_MSG_CHECKING([if -flto is available at link time]) + AC_LINK_IFELSE([AC_LANG_PROGRAM( + [[]])], + [AC_MSG_RESULT([yes])], + [FLTO_FLAG=""] + [AC_MSG_RESULT([no])]) + CXXFLAGS="$SAVED_CXXFLAGS" + fi + AC_LANG_POP([C++]) + AX_CHECK_COMPILE_FLAG([-Wodr], [CXX_WFLAGS="$CXX_WFLAGS -Wodr"],,[$ERROR_ON_UNKNOWN_OPTIONS]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST(FLTO_FLAG,$FLTO_FLAG) + +dnl Result in better inlining, but larger file +dnl AX_CHECK_COMPILE_FLAG([-fno-semantic-interposition], [CFLAGS="$CFLAGS -fno-semantic-interposition" CXXFLAGS="$CXXFLAGS -fno-semantic-interposition"],,[$ERROR_ON_UNKNOWN_OPTIONS]) + AC_SUBST(C_WFLAGS,$C_WFLAGS) AC_SUBST(CXX_WFLAGS,$CXX_WFLAGS) AC_SUBST(NO_ZERO_AS_NULL_POINTER_CONSTANT_FLAG,$NO_ZERO_AS_NULL_POINTER_CONSTANT_FLAG) +CFLAGS="${CFLAGS} -fvisibility=hidden" +CXXFLAGS="${CXXFLAGS} -fvisibility=hidden" dnl Checks for libraries. save_CFLAGS="$CFLAGS" @@ -263,7 +305,52 @@ fi AC_SUBST(MUTEX_SETTING,$MUTEX_SETTING) AC_SUBST(THREAD_LIB,$THREAD_LIB) -AC_CONFIG_FILES([Makefile cmake/Makefile src/Makefile +dnl --------------------------------------------------------------------------- +dnl Check for sqlite3 library and binary +dnl --------------------------------------------------------------------------- + +AC_ARG_WITH(sqlite3-include, + [ --with-sqlite3-include=ARG sqlite3 include directory],,,) + +if test "x$with_sqlite3_include" = "x" ; then +SQLITE3_FLAGS="" +if test -z "`uname | grep Darwin`" ; then + AC_CHECK_HEADERS([sqlite3.h]) + if test "$ac_cv_header_sqlite3_h" = "no" ; then + AC_MSG_ERROR([Please install sqlite3 development package.]) + fi +fi +else + SQLITE3_FLAGS="-I$with_sqlite3_include" +fi +AC_SUBST(SQLITE3_FLAGS,$SQLITE3_FLAGS) + +AC_ARG_WITH(sqlite3-ldflags, + [ --with-sqlite3-ldflags=ARG sqlite3 link flags (i.e. -L/xxx -lsqlite3)],,,) + +SQLITE3_LDFLAGS="" +if test "x$with_sqlite3_ldflags" = "x" ; then + AC_CHECK_LIB(sqlite3,sqlite3_open,SQLITE3_LIB_FOUND=yes,SQLITE3_LIB_FOUND=no,) + if test x"$SQLITE3_LIB_FOUND" != x"yes"; then + AC_MSG_ERROR([Please install sqlite3 development package.]) + fi + SQLITE3_LDFLAGS="-lsqlite3" +else + SQLITE3_LDFLAGS="$with_sqlite3_ldflags" +fi +AC_SUBST(SQLITE3_LDFLAGS,$SQLITE3_LDFLAGS) + + +AC_CHECK_PROG(SQLITE3_CHECK,sqlite3,yes) +if test x"$SQLITE3_CHECK" != x"yes" ; then + AC_MSG_ERROR([Please install sqlite3 binary.]) +fi + +dnl --------------------------------------------------------------------------- +dnl Generate files +dnl --------------------------------------------------------------------------- + +AC_CONFIG_FILES([Makefile cmake/Makefile src/Makefile include/Makefile include/proj/Makefile include/proj/internal/Makefile test/Makefile test/old/Makefile test/gie/Makefile test/gigs/Makefile test/unit/Makefile test/googletest/Makefile test/googletest/include/Makefile test/googletest/include/gtest/Makefile diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 82927b8b..d7d1486f 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -39,12 +39,36 @@ if(CONVERT_DATA) endif(BUILD_NAD2BIN) endif(CONVERT_DATA) +set(ALL_SQL_IN "${CMAKE_CURRENT_SOURCE_DIR}/all.sql.in") +set(PROJ_DB "${CMAKE_CURRENT_SOURCE_DIR}/proj.db") +include(sql_filelist.cmake) + +add_custom_command(OUTPUT ${ALL_SQL_IN} + COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_SOURCE_DIR}/generate_all_sql_in.cmake" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + DEPENDS ${SQL_FILES} + COMMENT "Generating all.sql.in" + VERBATIM +) + +add_custom_target(generate_all_sql_in ALL DEPENDS ${ALL_SQL_IN}) + +add_custom_command(OUTPUT ${PROJ_DB} + COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJ_DB} + COMMAND ${EXE_SQLITE3} -init ${ALL_SQL_IN} ${PROJ_DB} .quit + # note: we didn't port yet the foreign_key_check done in Makefile.am + DEPENDS generate_all_sql_in ${ALL_SQL_IN} + COMMENT "Generating proj.db" + VERBATIM +) + +add_custom_target(generate_proj_db ALL DEPENDS ${PROJ_DB}) # #install # set(ALL_DATA_FILE ${PROJ_DICTIONARY} ${GRIDSHIFT_FILES} - ${GEOID_FILES}) + ${GEOID_FILES} "proj.db") install(FILES ${ALL_DATA_FILE} - DESTINATION ${DATADIR}) + DESTINATION ${DATADIR}) diff --git a/data/Makefile.am b/data/Makefile.am index 917e113a..74cc0992 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -3,14 +3,45 @@ DATAPATH = $(top_srcdir)/data pkgdata_DATA = GL27 nad.lst proj_def.dat nad27 nad83 world epsg esri \ esri.extra other.extra \ CH IGNF \ - ITRF2000 ITRF2008 ITRF2014 + ITRF2000 ITRF2008 ITRF2014 proj.db + +SQL_ORDERED_LIST = sql/begin.sql \ + sql/proj_db_table_defs.sql \ + sql/conversion_triggers.sql \ + sql/metadata.sql \ + sql/unit_of_measure.sql \ + sql/area.sql \ + sql/coordinate_system.sql \ + sql/axis.sql \ + sql/ellipsoid.sql \ + sql/prime_meridian.sql \ + sql/geodetic_datum.sql \ + sql/vertical_datum.sql \ + sql/conversion.sql \ + sql/geodetic_crs.sql \ + sql/projected_crs.sql \ + sql/vertical_crs.sql \ + sql/compound_crs.sql \ + sql/helmert_transformation.sql \ + sql/grid_transformation.sql \ + sql/grid_transformation_custom.sql \ + sql/other_transformation.sql \ + sql/concatenated_operation.sql \ + sql/esri.sql \ + sql/ignf.sql \ + sql/grid_alternatives.sql \ + sql/grid_alternatives_generated.sql \ + sql/customizations.sql \ + sql/commit.sql EXTRA_DIST = GL27 nad.lst proj_def.dat nad27 nad83 \ world epsg esri \ esri.extra other.extra \ CH IGNF \ ITRF2000 ITRF2008 ITRF2014 \ - CMakeLists.txt tests/test_nodata.gtx null.lla + CMakeLists.txt tests/test_nodata.gtx null.lla \ + generate_all_sql_in.cmake sql_filelist.cmake \ + $(SQL_ORDERED_LIST) process-nad2bin: @if [ -f $(DATAPATH)/null.lla -a ! -f null ] || [ -f $(DATAPATH)/conus.lla -a ! -f conus ] ; then \ @@ -46,6 +77,26 @@ install-data-local: process-nad2bin fi; \ done +proj.db: $(DATAPATH)/sql/*.sql + @echo "Make proj.db" + $(RM) proj.db + @export SQL_EXPANDED_LIST=""; \ + for x in $(SQL_ORDERED_LIST); do \ + export SQL_EXPANDED_LIST="$${SQL_EXPANDED_LIST} $(DATAPATH)/$$x"; \ + done; \ + cat $${SQL_EXPANDED_LIST} | sqlite3 proj.db; \ + if [ $$? -ne 0 ] ; then \ + echo "Build of proj.db failed"; \ + $(RM) proj.db; \ + exit 1; \ + fi; \ + if [[ $$(echo "pragma foreign_key_check;" | sqlite3 proj.db | head -c1 | wc -c) -ne 0 ]]; then \ + echo "Foreign key check failed"; \ + $(RM) proj.db; \ + exit 1; \ + fi + + # For out-of-tree builds, link all file of the source data dir to the generated data check-local: process-nad2bin @if [ ! -f GL27 ]; then \ diff --git a/data/generate_all_sql_in.cmake b/data/generate_all_sql_in.cmake new file mode 100644 index 00000000..51cfa717 --- /dev/null +++ b/data/generate_all_sql_in.cmake @@ -0,0 +1,10 @@ +function(cat IN_FILE OUT_FILE) + file(READ ${IN_FILE} CONTENTS) + file(APPEND ${OUT_FILE} "${CONTENTS}") +endfunction() + +file(WRITE all.sql.in "") +include(sql_filelist.cmake) +foreach(SQL_FILE ${SQL_FILES}) + cat(${SQL_FILE} all.sql.in) +endforeach() diff --git a/data/sql/area.sql b/data/sql/area.sql new file mode 100644 index 00000000..6de6cdbb --- /dev/null +++ b/data/sql/area.sql @@ -0,0 +1,3507 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +INSERT INTO "area" VALUES('EPSG','1024','Afghanistan','Afghanistan.',29.4,38.48,60.5,74.92,0); +INSERT INTO "area" VALUES('EPSG','1025','Albania','Albania - onshore and offshore.',39.63,42.67,18.46,21.06,0); +INSERT INTO "area" VALUES('EPSG','1026','Algeria','Algeria - onshore and offshore.',18.97,38.8,-8.67,11.99,0); +INSERT INTO "area" VALUES('EPSG','1027','American Samoa','American Samoa - onshore and offshore.',-17.56,-10.02,-173.75,-165.2,0); +INSERT INTO "area" VALUES('EPSG','1028','Andorra','Andorra.',42.43,42.66,1.42,1.79,0); +INSERT INTO "area" VALUES('EPSG','1029','Angola','Angola - onshore and offshore.',-18.02,-4.38,8.2,24.09,0); +INSERT INTO "area" VALUES('EPSG','1030','Anguilla','Anguilla - onshore and offshore.',17.94,21.93,-63.9,-60.68,0); +INSERT INTO "area" VALUES('EPSG','1031','Antarctica','Antarctica.',-90.0,-60.0,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','1032','Antigua and Barbuda','Antigua and Barbuda - Antigua, Barbuda and Redonda.',16.61,20.88,-62.76,-58.37,0); +INSERT INTO "area" VALUES('EPSG','1033','Argentina','Argentina - onshore and offshore.',-58.41,-21.78,-73.59,-52.63,0); +INSERT INTO "area" VALUES('EPSG','1034','Armenia','Armenia.',38.84,41.3,43.45,46.63,0); +INSERT INTO "area" VALUES('EPSG','1035','Aruba','Aruba - onshore and offshore.',12.14,15.42,-70.42,-69.31,0); +INSERT INTO "area" VALUES('EPSG','1036','Australia - onshore and EEZ','Australia - onshore and offshore to 200 nautical mile EEZ boundary. Includes Lord Howe Island, Ashmore and Cartier Islands.',-47.2,-8.88,109.23,163.2,0); +INSERT INTO "area" VALUES('EPSG','1037','Austria','Austria.',46.4,49.02,9.53,17.17,0); +INSERT INTO "area" VALUES('EPSG','1038','Azerbaijan','Azerbaijan - onshore and offshore.',37.89,42.59,44.77,51.73,0); +INSERT INTO "area" VALUES('EPSG','1039','Bahamas','Bahamas - onshore and offshore.',20.36,30.36,-81.22,-70.63,0); +INSERT INTO "area" VALUES('EPSG','1040','Bahrain','Bahrain - onshore and offshore.',25.53,27.17,50.26,51.13,0); +INSERT INTO "area" VALUES('EPSG','1041','Bangladesh','Bangladesh - onshore and offshore.',18.56,26.64,88.01,92.67,0); +INSERT INTO "area" VALUES('EPSG','1042','Barbados','Barbados - onshore and offshore.',10.68,16.0,-60.39,-55.99,0); +INSERT INTO "area" VALUES('EPSG','1043','Belarus','Belarus.',51.25,56.17,23.16,32.75,0); +INSERT INTO "area" VALUES('EPSG','1044','Belgium','Belgium - onshore and offshore.',49.5,51.88,2.23,6.4,0); +INSERT INTO "area" VALUES('EPSG','1045','Belize','Belize - onshore and offshore.',15.88,18.49,-89.22,-86.11,0); +INSERT INTO "area" VALUES('EPSG','1046','Benin','Benin - onshore and offshore.',2.99,12.4,0.77,3.86,0); +INSERT INTO "area" VALUES('EPSG','1047','Bermuda','Bermuda - onshore and offshore.',28.91,35.73,-68.83,-60.7,0); +INSERT INTO "area" VALUES('EPSG','1048','Bhutan','Bhutan.',26.7,28.33,88.74,92.13,0); +INSERT INTO "area" VALUES('EPSG','1049','Bolivia','Bolivia.',-22.91,-9.67,-69.66,-57.52,0); +INSERT INTO "area" VALUES('EPSG','1050','Bosnia and Herzegovina','Bosnia and Herzegovina.',42.56,45.27,15.74,19.62,0); +INSERT INTO "area" VALUES('EPSG','1051','Botswana','Botswana.',-26.88,-17.78,19.99,29.38,0); +INSERT INTO "area" VALUES('EPSG','1052','Bouvet Island','Bouvet Island - onshore and offshore.',-57.8,-51.06,-2.38,9.21,0); +INSERT INTO "area" VALUES('EPSG','1053','Brazil','Brazil - onshore and offshore. Includes Rocas, Fernando de Noronha archipelago, Trindade, Ihlas Martim Vaz and Sao Pedro e Sao Paulo.',-35.71,7.04,-74.01,-25.28,0); +INSERT INTO "area" VALUES('EPSG','1054','British Indian Ocean Territory','British Indian Ocean Territory - onshore and offshore - Chagos Archipelago.',-10.8,-2.28,67.88,75.86,0); +INSERT INTO "area" VALUES('EPSG','1055','Brunei','Brunei Darussalam - onshore and offshore.',4.01,6.31,112.37,115.37,0); +INSERT INTO "area" VALUES('EPSG','1056','Bulgaria','Bulgaria - onshore and offshore.',41.24,44.23,22.36,31.35,0); +INSERT INTO "area" VALUES('EPSG','1057','Burkina Faso','Burkina Faso.',9.39,15.09,-5.53,2.4,0); +INSERT INTO "area" VALUES('EPSG','1058','Burundi','Burundi.',-4.45,-2.3,28.98,30.86,0); +INSERT INTO "area" VALUES('EPSG','1059','Cambodia','Cambodia - onshore and offshore.',8.78,14.71,101.33,107.64,0); +INSERT INTO "area" VALUES('EPSG','1060','Cameroon','Cameroon - onshore and offshore.',1.65,13.09,8.32,16.21,0); +INSERT INTO "area" VALUES('EPSG','1061','Canada','Canada - onshore and offshore - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon.',40.04,86.46,-141.01,-47.74,0); +INSERT INTO "area" VALUES('EPSG','1062','Cape Verde','Cape Verde - onshore and offshore. Includes Boa Vista, Brava, Fogo, Maio, Sal, Santo Antao, Sao Nicolau, Sao Tiago, Sao Vicente.',11.47,20.54,-28.85,-19.53,0); +INSERT INTO "area" VALUES('EPSG','1063','Cayman Islands','Cayman Islands - onshore and offshore. Includes Grand Cayman, Little Cayman and Cayman Brac.',17.58,20.68,-83.6,-78.72,0); +INSERT INTO "area" VALUES('EPSG','1064','Central African Republic','Central African Republic.',2.22,11.01,14.41,27.46,0); +INSERT INTO "area" VALUES('EPSG','1065','Chad','Chad.',7.45,23.46,13.46,24.01,0); +INSERT INTO "area" VALUES('EPSG','1066','Chile','Chile - onshore and offshore. Includes Easter Island, Juan Fernandez Islands, San Felix, and Sala y Gomez.',-59.87,-17.5,-113.21,-65.72,0); +INSERT INTO "area" VALUES('EPSG','1067','China','China - onshore and offshore.',16.7,53.56,73.62,134.77,0); +INSERT INTO "area" VALUES('EPSG','1068','Christmas Island','Christmas Island - onshore and offshore.',-13.92,-8.87,102.14,109.03,0); +INSERT INTO "area" VALUES('EPSG','1069','Cocos (Keeling) Islands - onshore','Cocos (Keeling) Islands - onshore.',-12.27,-11.76,96.76,96.99,0); +INSERT INTO "area" VALUES('EPSG','1070','Colombia','Colombia - onshore and offshore. Includes San Andres y Providencia, Malpelo Islands, Roncador Bank, Serrana Bank and Serranilla Bank.',-4.23,15.51,-84.77,-66.87,0); +INSERT INTO "area" VALUES('EPSG','1071','Comoros','Comoros - onshore and offshore. Includes Anjouan, Grande Comore, Moheli and other islands.',-14.43,-8.01,41.93,45.79,0); +INSERT INTO "area" VALUES('EPSG','1072','Congo','Congo - onshore and offshore.',-6.91,3.72,8.84,18.65,0); +INSERT INTO "area" VALUES('EPSG','1073','Cook Islands','Cook Islands - onshore and offshore.',-25.28,-5.85,-168.53,-154.8,0); +INSERT INTO "area" VALUES('EPSG','1074','Costa Rica','Costa Rica - onshore and offshore.',2.15,11.77,-90.45,-81.43,0); +INSERT INTO "area" VALUES('EPSG','1075','Cote d''Ivoire (Ivory Coast)','Côte d''Ivoire (Ivory Coast) - onshore and offshore.',1.02,10.74,-8.61,-2.48,0); +INSERT INTO "area" VALUES('EPSG','1076','Croatia','Croatia - onshore and offshore.',41.62,46.54,13.0,19.43,0); +INSERT INTO "area" VALUES('EPSG','1077','Cuba','Cuba - onshore and offshore.',18.83,25.51,-87.01,-73.57,0); +INSERT INTO "area" VALUES('EPSG','1078','Cyprus','Cyprus - onshore and offshore.',32.88,36.21,29.95,35.2,0); +INSERT INTO "area" VALUES('EPSG','1079','Czech Republic','Czech Republic.',48.58,51.06,12.09,18.86,0); +INSERT INTO "area" VALUES('EPSG','1080','Denmark','Denmark - onshore and offshore.',54.36,58.27,3.24,16.51,0); +INSERT INTO "area" VALUES('EPSG','1081','Djibouti','Djibouti - onshore and offshore.',10.94,12.72,41.75,44.15,0); +INSERT INTO "area" VALUES('EPSG','1082','Dominica','Dominica - onshore and offshore.',14.48,16.62,-62.82,-57.52,0); +INSERT INTO "area" VALUES('EPSG','1083','Dominican Republic','Dominican Republic - onshore and offshore.',14.96,22.42,-73.46,-66.82,0); +INSERT INTO "area" VALUES('EPSG','1084','East Timor','Timor-Leste (East Timor) - onshore and offshore. Includes enclave of Oe-Cussi (Okusi).',-10.47,-7.97,123.92,127.97,0); +INSERT INTO "area" VALUES('EPSG','1085','Ecuador','Ecuador - onshore and offshore. Includes Galapagos Islands (Archipelago de Colon).',-5.01,5.0,-95.35,-75.21,0); +INSERT INTO "area" VALUES('EPSG','1086','Egypt','Egypt - onshore and offshore.',21.89,33.82,24.7,37.91,0); +INSERT INTO "area" VALUES('EPSG','1087','El Salvador','El Salvador - onshore and offshore.',9.97,14.44,-91.43,-87.65,0); +INSERT INTO "area" VALUES('EPSG','1088','Equatorial Guinea','Equatorial Guinea - onshore and offshore. Includes Rio Muni, Bioko, Annobon, Corisco, Elobey Chico, and Ebony Grande.',-4.8,4.13,2.26,11.36,0); +INSERT INTO "area" VALUES('EPSG','1089','Eritrea','Eritrea - onshore and offshore.',12.36,18.1,36.44,43.31,0); +INSERT INTO "area" VALUES('EPSG','1090','Estonia','Estonia - onshore and offshore.',57.52,60.0,20.37,28.2,0); +INSERT INTO "area" VALUES('EPSG','1091','Ethiopia','Ethiopia.',3.4,14.89,32.99,47.99,0); +INSERT INTO "area" VALUES('EPSG','1092','Falkland Islands','Falkland Islands (Malvinas) - onshore and offshore.',-56.25,-47.68,-65.01,-52.31,0); +INSERT INTO "area" VALUES('EPSG','1093','Faroe Islands','Faroe Islands - onshore and offshore.',59.94,65.7,-13.91,-0.48,0); +INSERT INTO "area" VALUES('EPSG','1094','Fiji - onshore','Fiji - onshore. Includes Viti Levu, Vanua Levu, Taveuni, the Yasawa Group, the Kadavu Group, the Lau Islands and Rotuma Islands.',-20.81,-12.42,176.81,-178.15,0); +INSERT INTO "area" VALUES('EPSG','1095','Finland','Finland - onshore and offshore.',58.84,70.09,19.08,31.59,0); +INSERT INTO "area" VALUES('EPSG','1096','France','France - onshore and offshore, mainland and Corsica.',41.15,51.56,-9.86,10.38,0); +INSERT INTO "area" VALUES('EPSG','1097','French Guiana','French Guiana - onshore and offshore.',2.11,8.88,-54.6,-49.46,0); +INSERT INTO "area" VALUES('EPSG','1098','French Polynesia','French Polynesia - onshore and offshore. Includes Society archipelago, Tuamotu archipelago, Marquesas Islands, Gambier Islands and Austral Islands.',-31.24,-4.52,-158.13,-131.97,0); +INSERT INTO "area" VALUES('EPSG','1099','French Southern Territories','French Southern Territories - onshore and offshore. Includes Amsterdam and St Paul, Bassas da India, Crozet, Europa, Glorieuses, Juan de Nova, Kerguelen and Tromelin.',-53.24,-10.65,37.55,81.83,0); +INSERT INTO "area" VALUES('EPSG','1100','Gabon','Gabon - onshore and offshore.',-6.37,2.32,7.03,14.52,0); +INSERT INTO "area" VALUES('EPSG','1101','Gambia','Gambia - onshore and offshore.',13.05,13.83,-20.19,-13.79,0); +INSERT INTO "area" VALUES('EPSG','1102','Georgia','Georgia - onshore and offshore.',41.04,43.59,38.97,46.72,0); +INSERT INTO "area" VALUES('EPSG','1103','Germany','Germany - onshore and offshore.',47.27,55.92,3.34,15.04,0); +INSERT INTO "area" VALUES('EPSG','1104','Ghana','Ghana - onshore and offshore.',1.4,11.16,-3.79,2.1,0); +INSERT INTO "area" VALUES('EPSG','1105','Gibraltar','Gibraltar - onshore and offshore.',36.0,36.16,-5.42,-4.89,0); +INSERT INTO "area" VALUES('EPSG','1106','Greece','Greece - onshore and offshore. Includes Aegean Islands, Ionian Islands, Dodecanese Islands, Crete, and Mount Athos.',33.26,41.75,18.26,30.23,0); +INSERT INTO "area" VALUES('EPSG','1107','Greenland','Greenland - onshore and offshore.',56.38,87.03,-75.0,8.12,0); +INSERT INTO "area" VALUES('EPSG','1108','Grenada','Grenada and southern Grenadine Islands - onshore and offshore.',11.36,13.4,-63.28,-60.82,0); +INSERT INTO "area" VALUES('EPSG','1109','Guadeloupe','Guadeloupe - onshore and offshore. Includes Grande Terre, Basse Terre, Marie Galante, Les Saintes, Iles de la Petite Terre, La Desirade; St Barthélemy, and northern St Martin.',15.06,18.54,-63.66,-57.54,0); +INSERT INTO "area" VALUES('EPSG','1110','Guam','Guam - onshore and offshore.',10.95,15.91,141.19,148.18,0); +INSERT INTO "area" VALUES('EPSG','1111','Guatemala','Guatemala - onshore and offshore.',10.6,17.83,-94.57,-88.16,0); +INSERT INTO "area" VALUES('EPSG','1112','Guinea','Guinea - onshore and offshore.',7.19,12.68,-18.26,-7.65,0); +INSERT INTO "area" VALUES('EPSG','1113','Guinea-Bissau','Guinea-Bissau - onshore and offshore.',8.64,12.69,-19.8,-13.64,0); +INSERT INTO "area" VALUES('EPSG','1114','Guyana','Guyana - onshore and offshore.',1.18,10.7,-61.39,-55.77,0); +INSERT INTO "area" VALUES('EPSG','1115','Haiti','Haiti - onshore and offshore.',14.73,20.72,-75.73,-71.62,0); +INSERT INTO "area" VALUES('EPSG','1116','Heard Island and McDonald Islands','Heard Island and McDonald Islands - onshore and offshore.',-59.02,-49.5,62.92,83.57,0); +INSERT INTO "area" VALUES('EPSG','1117','Honduras','Honduras - onshore and offshore. Includes Swan Islands.',12.98,19.59,-89.36,-79.87,0); +INSERT INTO "area" VALUES('EPSG','1118','China - Hong Kong','China - Hong Kong - onshore and offshore.',22.13,22.58,113.76,114.51,0); +INSERT INTO "area" VALUES('EPSG','1119','Hungary','Hungary.',45.74,48.58,16.11,22.9,0); +INSERT INTO "area" VALUES('EPSG','1120','Iceland','Iceland - onshore and offshore.',59.96,69.59,-30.87,-5.55,0); +INSERT INTO "area" VALUES('EPSG','1121','India','India - onshore and offshore. Includes Amandivis, Laccadives, Minicoy, Andaman Islands, Nicobar Islands, and Sikkim.',3.87,35.51,65.6,97.42,0); +INSERT INTO "area" VALUES('EPSG','1122','Indonesia','Indonesia - onshore and offshore.',-13.95,7.79,92.01,141.46,0); +INSERT INTO "area" VALUES('EPSG','1123','Iran','Iran - onshore and offshore.',23.34,39.78,44.03,63.34,0); +INSERT INTO "area" VALUES('EPSG','1124','Iraq','Iraq - onshore and offshore.',29.06,37.39,38.79,48.75,0); +INSERT INTO "area" VALUES('EPSG','1125','Ireland','Ireland - onshore and offshore.',48.18,56.57,-16.1,-5.24,0); +INSERT INTO "area" VALUES('EPSG','1126','Israel','Israel - onshore and offshore.',29.45,33.53,32.99,35.69,0); +INSERT INTO "area" VALUES('EPSG','1127','Italy','Italy - onshore and offshore.',34.76,47.1,5.93,18.99,0); +INSERT INTO "area" VALUES('EPSG','1128','Jamaica','Jamaica - onshore and offshore. Includes Morant Cays and Pedro Cays.',14.08,19.36,-80.6,-74.51,0); +INSERT INTO "area" VALUES('EPSG','1129','Japan','Japan - onshore and offshore.',17.09,46.05,122.38,157.65,0); +INSERT INTO "area" VALUES('EPSG','1130','Jordan','Jordan.',29.18,33.38,34.88,39.31,0); +INSERT INTO "area" VALUES('EPSG','1131','Kazakhstan','Kazakhstan - onshore including Caspian Sea.',40.59,55.45,46.49,87.35,0); +INSERT INTO "area" VALUES('EPSG','1132','Kenya','Kenya - onshore and offshore.',-4.9,4.63,33.9,44.28,0); +INSERT INTO "area" VALUES('EPSG','1133','Kiribati','Kiribati - onshore and offshore. Includes Fanning Island, Washington Island and Christmas in the Line Islands, Ocean Islands, Phoenix Islands.',-13.84,7.92,167.81,-146.82,0); +INSERT INTO "area" VALUES('EPSG','1134','Korea, Democratic People''s Republic of (North Korea)','Democratic People''s Republic of Korea (North Korea) - onshore and offshore.',37.1,43.01,123.54,132.82,0); +INSERT INTO "area" VALUES('EPSG','1135','Korea, Republic of (South Korea)','Republic of Korea (South Korea) - onshore and offshore.',28.6,40.27,122.71,134.28,0); +INSERT INTO "area" VALUES('EPSG','1136','Kuwait','Kuwait - onshore and offshore.',28.53,30.09,46.54,49.53,0); +INSERT INTO "area" VALUES('EPSG','1137','Kyrgyzstan','Kyrgyzstan.',39.19,43.22,69.24,80.29,0); +INSERT INTO "area" VALUES('EPSG','1138','Laos','Laos.',13.92,22.5,100.09,107.7,0); +INSERT INTO "area" VALUES('EPSG','1139','Latvia','Latvia - onshore and offshore.',55.67,58.09,19.06,28.24,0); +INSERT INTO "area" VALUES('EPSG','1140','Lebanon','Lebanon - onshore and offshore.',33.06,34.84,33.75,36.63,0); +INSERT INTO "area" VALUES('EPSG','1141','Lesotho','Lesotho.',-30.66,-28.57,27.01,29.46,0); +INSERT INTO "area" VALUES('EPSG','1142','Liberia','Liberia - onshore and offshore.',1.02,8.52,-13.59,-7.36,0); +INSERT INTO "area" VALUES('EPSG','1143','Libya','Libya - onshore and offshore.',19.5,35.23,9.31,26.21,0); +INSERT INTO "area" VALUES('EPSG','1144','Liechtenstein','Liechtenstein.',47.05,47.28,9.47,9.64,0); +INSERT INTO "area" VALUES('EPSG','1145','Lithuania','Lithuania - onshore and offshore.',53.89,56.45,19.02,26.82,0); +INSERT INTO "area" VALUES('EPSG','1146','Luxembourg','Luxembourg.',49.44,50.19,5.73,6.53,0); +INSERT INTO "area" VALUES('EPSG','1147','China - Macao','China - Macao - onshore and offshore.',22.06,22.23,113.52,113.68,0); +INSERT INTO "area" VALUES('EPSG','1148','Macedonia','The Former Yugoslav Republic of Macedonia.',40.85,42.36,20.45,23.04,0); +INSERT INTO "area" VALUES('EPSG','1149','Madagascar - onshore and nearshore','Madagascar - onshore and nearshore.',-26.59,-11.69,42.53,51.03,0); +INSERT INTO "area" VALUES('EPSG','1150','Malawi','Malawi.',-17.14,-9.37,32.68,35.93,0); +INSERT INTO "area" VALUES('EPSG','1151','Malaysia','Malaysia - onshore and offshore. Includes peninsular Malayasia, Sabah and Sarawak.',0.85,7.81,98.02,119.61,0); +INSERT INTO "area" VALUES('EPSG','1152','Maldives','Maldives - onshore and offshore.',-3.47,8.1,69.29,77.08,0); +INSERT INTO "area" VALUES('EPSG','1153','Mali','Mali.',10.14,25.01,-12.25,4.26,0); +INSERT INTO "area" VALUES('EPSG','1154','Malta','Malta - onshore and offshore.',34.49,36.56,13.41,18.06,0); +INSERT INTO "area" VALUES('EPSG','1155','Marshall Islands','Marshall Islands - onshore and offshore.',1.77,17.88,157.47,175.52,0); +INSERT INTO "area" VALUES('EPSG','1156','Martinique','Martinique - onshore and offshore.',14.08,16.36,-62.82,-57.52,0); +INSERT INTO "area" VALUES('EPSG','1157','Mauritania','Mauritania - onshore and offshore.',14.72,27.3,-20.04,-4.8,0); +INSERT INTO "area" VALUES('EPSG','1158','Mauritius','Mauritius - onshore and offshore. Includes Rodrigues, Agalega Islands, and Cargados Carajos.',-23.81,-8.43,53.8,67.05,0); +INSERT INTO "area" VALUES('EPSG','1159','Mayotte','Mayotte - onshore and offshore.',-14.49,-11.33,43.68,46.7,0); +INSERT INTO "area" VALUES('EPSG','1160','Mexico','Mexico - onshore and offshore.',12.1,32.72,-122.19,-84.64,0); +INSERT INTO "area" VALUES('EPSG','1161','Micronesia','Federated States of Micronesia - onshore and offshore. Includes Caroline Islands, Yap, Truk, Ponape, Kosrae.',-1.19,13.43,135.27,165.68,0); +INSERT INTO "area" VALUES('EPSG','1162','Moldova','Moldova.',45.44,48.47,26.63,30.13,0); +INSERT INTO "area" VALUES('EPSG','1163','Monaco','Monaco - onshore and offshore.',42.94,43.77,7.39,7.76,0); +INSERT INTO "area" VALUES('EPSG','1164','Mongolia','Mongolia.',41.58,52.15,87.76,119.94,0); +INSERT INTO "area" VALUES('EPSG','1165','Montserrat','Montserrat - onshore and offshore.',15.84,17.04,-63.05,-61.82,0); +INSERT INTO "area" VALUES('EPSG','1166','Morocco','Morocco - onshore and offshore.',27.66,36.0,-13.86,-1.01,0); +INSERT INTO "area" VALUES('EPSG','1167','Mozambique','Mozambique - onshore and offshore.',-27.71,-10.09,30.21,43.03,0); +INSERT INTO "area" VALUES('EPSG','1168','Myanmar (Burma)','Myanmar (Burma) - onshore and offshore.',9.48,28.55,89.61,101.17,0); +INSERT INTO "area" VALUES('EPSG','1169','Namibia','Namibia - onshore and offshore.',-30.64,-16.95,8.24,25.27,0); +INSERT INTO "area" VALUES('EPSG','1170','Nauru','Nauru - onshore and offshore.',-3.91,2.69,163.58,168.6,0); +INSERT INTO "area" VALUES('EPSG','1171','Nepal','Nepal.',26.34,30.43,80.06,88.21,0); +INSERT INTO "area" VALUES('EPSG','1172','Netherlands','Netherlands - onshore and offshore.',50.75,55.77,2.53,7.22,0); +INSERT INTO "area" VALUES('EPSG','1173','Netherlands Antilles','Netherlands Antilles - onshore and offshore. Includes Bonaire, Curacao, Saba, St Eustatius, and southern St Martin',11.67,18.07,-69.59,-62.82,1); +INSERT INTO "area" VALUES('EPSG','1174','New Caledonia','New Caledonia - onshore and offshore. Isle de Pins, Loyalty Islands, Huon Islands, Belep archipelago, Chesterfield Islands, and Walpole.',-26.45,-14.83,156.25,174.28,0); +INSERT INTO "area" VALUES('EPSG','1175','New Zealand','New Zealand - onshore and offshore. Includes Antipodes Islands, Auckland Islands, Bounty Islands, Chatham Islands, Cambell Island, Kermadec Islands, Raoul Island and Snares Islands.',-55.95,-25.88,160.6,-171.2,0); +INSERT INTO "area" VALUES('EPSG','1176','Nicaragua','Nicaragua - onshore and offshore.',9.75,16.26,-89.43,-79.76,0); +INSERT INTO "area" VALUES('EPSG','1177','Niger','Niger.',11.69,23.53,0.16,16.0,0); +INSERT INTO "area" VALUES('EPSG','1178','Nigeria','Nigeria - onshore and offshore.',1.92,13.9,2.66,14.65,0); +INSERT INTO "area" VALUES('EPSG','1179','Niue','Niue - onshore and offshore.',-22.49,-16.58,-172.01,-166.31,0); +INSERT INTO "area" VALUES('EPSG','1180','Norfolk Island','Norfolk Island - onshore and offshore.',-32.48,-25.61,163.36,173.35,0); +INSERT INTO "area" VALUES('EPSG','1181','Northern Mariana Islands','Northern Mariana Islands - onshore and offshore.',12.38,23.9,141.33,149.55,0); +INSERT INTO "area" VALUES('EPSG','1182','Norway','Norway including Svalbard - onshore and offshore.',56.08,84.17,-3.7,39.65,0); +INSERT INTO "area" VALUES('EPSG','1183','Oman','Oman - onshore and offshore.',14.33,26.74,51.99,63.38,0); +INSERT INTO "area" VALUES('EPSG','1184','Pakistan','Pakistan - onshore and offshore.',21.05,37.07,60.86,77.83,0); +INSERT INTO "area" VALUES('EPSG','1185','Palau','Palau - onshore and offshore.',1.64,11.45,129.48,136.98,0); +INSERT INTO "area" VALUES('EPSG','1186','Panama','Panama - onshore and offshore.',5.0,12.51,-84.32,-77.04,0); +INSERT INTO "area" VALUES('EPSG','1187','Papua New Guinea','Papua New Guinea - onshore and offshore. Includes Bismark archipelago, Louisade archipelago, Admiralty Islands, d''Entrecasteaux Islands, northern Solomon Islands, Trobriand Islands, New Britain, New Ireland, Woodlark, and associated islands.',-14.75,2.58,139.2,162.81,0); +INSERT INTO "area" VALUES('EPSG','1188','Paraguay','Paraguay.',-27.59,-19.29,-62.65,-54.24,0); +INSERT INTO "area" VALUES('EPSG','1189','Peru','Peru - onshore and offshore.',-21.05,-0.03,-84.68,-68.67,0); +INSERT INTO "area" VALUES('EPSG','1190','Philippines','Philippines - onshore and offshore.',3.0,22.18,116.04,129.95,0); +INSERT INTO "area" VALUES('EPSG','1191','Pitcairn','Pitcairn - Pitcairn Island, Henderson Island, Ducie Island and Oeno Atoll.',-28.41,-20.58,-133.43,-121.11,0); +INSERT INTO "area" VALUES('EPSG','1192','Poland','Poland - onshore and offshore.',49.0,55.93,14.14,24.15,0); +INSERT INTO "area" VALUES('EPSG','1193','Portugal','Portugal - mainland, Azores and Madeira, onshore and offshore.',29.24,43.07,-35.58,-6.19,0); +INSERT INTO "area" VALUES('EPSG','1194','Puerto Rico','Puerto Rico - onshore and offshore.',14.92,21.86,-68.49,-65.04,0); +INSERT INTO "area" VALUES('EPSG','1195','Qatar','Qatar - onshore and offshore.',24.55,27.05,50.55,53.04,0); +INSERT INTO "area" VALUES('EPSG','1196','Reunion','Reunion - onshore and offshore - Reunion island, Ile Europa, Bassas da India, Juan de Nova, Iles Glorieuses, and Ile Tromelin.',-25.92,-10.6,37.58,58.27,1); +INSERT INTO "area" VALUES('EPSG','1197','Romania','Romania - onshore and offshore.',43.44,48.27,20.26,31.41,0); +INSERT INTO "area" VALUES('EPSG','1198','Russia','Russian Federation - onshore and offshore.',39.87,85.2,18.92,-168.97,0); +INSERT INTO "area" VALUES('EPSG','1199','Rwanda','Rwanda.',-2.83,-1.05,28.85,30.9,0); +INSERT INTO "area" VALUES('EPSG','1200','St Kitts and Nevis','St Kitts and Nevis - onshore and offshore.',16.34,17.67,-63.63,-62.2,0); +INSERT INTO "area" VALUES('EPSG','1201','St Lucia','St Lucia - onshore and offshore.',13.23,14.28,-62.5,-59.99,0); +INSERT INTO "area" VALUES('EPSG','1202','St Vincent and the Grenadines','St Vincent and the northern Grenadine Islands - onshore and offshore.',12.03,14.09,-63.38,-60.28,0); +INSERT INTO "area" VALUES('EPSG','1203','Samoa','Samoa - onshore and offshore.',-15.84,-10.94,-174.54,-170.51,0); +INSERT INTO "area" VALUES('EPSG','1204','San Marino','San Marino.',43.89,43.99,12.4,12.52,0); +INSERT INTO "area" VALUES('EPSG','1205','Sao Tome and Principe','Sao Tome and Principe - onshore and offshore.',-1.49,2.72,3.2,8.56,0); +INSERT INTO "area" VALUES('EPSG','1206','Saudi Arabia','Saudi Arabia - onshore and offshore.',15.61,32.16,34.44,55.67,0); +INSERT INTO "area" VALUES('EPSG','1207','Senegal','Senegal - onshore and offshore.',10.64,16.7,-20.22,-11.36,0); +INSERT INTO "area" VALUES('EPSG','1208','Seychelles','Seychelles - onshore and offshore - Alphonse, Bijoutier, St Francois Islands, St Pierre islet, Cosmoledo Islands, Amirantes, Aldabra, Farquhar, and Desroches.',-12.72,-0.37,43.19,59.66,0); +INSERT INTO "area" VALUES('EPSG','1209','Sierra Leone','Sierra Leone - onshore and offshore.',4.22,10.0,-16.57,-10.26,0); +INSERT INTO "area" VALUES('EPSG','1210','Singapore','Singapore - onshore and offshore.',1.13,1.47,103.59,104.07,0); +INSERT INTO "area" VALUES('EPSG','1211','Slovakia','Slovakia.',47.73,49.61,16.84,22.56,0); +INSERT INTO "area" VALUES('EPSG','1212','Slovenia','Slovenia - onshore and offshore.',45.42,46.88,13.38,16.61,0); +INSERT INTO "area" VALUES('EPSG','1213','Solomon Islands - onshore main islands','Solomon Islands - onshore southern Solomon Islands, primarily Guadalcanal, Malaita, San Cristobel, Santa Isobel, Choiseul, Makira-Ulawa.',-10.9,-6.55,155.62,162.44,0); +INSERT INTO "area" VALUES('EPSG','1214','Somalia','Somalia - onshore and offshore.',-3.61,13.5,40.98,54.43,0); +INSERT INTO "area" VALUES('EPSG','1215','South Africa','South Africa - onshore and offshore, including Marion Island, and Prince Edward Island.',-50.32,-22.13,13.33,42.85,0); +INSERT INTO "area" VALUES('EPSG','1216','South Georgia and the South Sandwich Islands','South Georgia and the South Sandwich Islands - onshore and offshore.',-62.79,-50.15,-48.06,-19.84,0); +INSERT INTO "area" VALUES('EPSG','1217','Spain','Spain - mainland, Balearic Islands, Canary Islands, Ceuta and Melila - onshore and offshore.',24.6,46.26,-21.93,6.3,0); +INSERT INTO "area" VALUES('EPSG','1218','Sri Lanka','Sri Lanka - onshore and offshore.',2.58,11.45,77.02,85.24,0); +INSERT INTO "area" VALUES('EPSG','1219','St Helena, Ascension and Tristan da Cunha','St Helena, Ascension and Tristan da Cunha archipelago (Gough, Inaccessible, Nightingale and Stoltenhoff Islands) - onshore and offshore.',-43.71,-4.55,-17.79,-2.16,0); +INSERT INTO "area" VALUES('EPSG','1220','St Pierre and Miquelon','St Pierre and Miquelon - onshore and offshore.',43.41,47.37,-57.1,-55.9,0); +INSERT INTO "area" VALUES('EPSG','1221','Sudan','Sudan - onshore and offshore.',8.64,22.24,21.82,39.76,0); +INSERT INTO "area" VALUES('EPSG','1222','Suriname','Suriname - onshore and offshore.',1.83,9.35,-58.08,-52.66,0); +INSERT INTO "area" VALUES('EPSG','1223','Svalbard and Jan Mayen','Svalbard and Jan Mayen - onshore and offshore. Includes Bear Island.',66.24,85.05,-16.22,35.02,1); +INSERT INTO "area" VALUES('EPSG','1224','Swaziland','Swaziland',-27.32,-25.72,30.79,32.14,0); +INSERT INTO "area" VALUES('EPSG','1225','Sweden','Sweden - onshore and offshore.',54.96,69.07,10.03,24.17,0); +INSERT INTO "area" VALUES('EPSG','1226','Switzerland','Switzerland.',45.82,47.81,5.96,10.49,0); +INSERT INTO "area" VALUES('EPSG','1227','Syria','Syria - onshore and offshore.',32.31,37.3,34.96,42.38,0); +INSERT INTO "area" VALUES('EPSG','1228','Taiwan','Taiwan, Republic of China - onshore and offshore - Taiwan Island, Penghu (Pescadores) Islands.',17.36,26.96,114.32,123.61,0); +INSERT INTO "area" VALUES('EPSG','1229','Tajikistan','Tajikistan.',36.67,41.05,67.36,75.19,0); +INSERT INTO "area" VALUES('EPSG','1230','Tanzania','Tanzania - onshore and offshore.',-11.75,-0.99,29.34,43.29,0); +INSERT INTO "area" VALUES('EPSG','1231','Thailand','Thailand - onshore and offshore.',5.63,20.46,95.52,105.64,0); +INSERT INTO "area" VALUES('EPSG','1232','Togo','Togo - onshore and offshore.',2.91,11.14,-0.15,2.42,0); +INSERT INTO "area" VALUES('EPSG','1233','Tokelau','Tokelau - onshore and offshore.',-11.04,-6.46,-175.86,-167.98,0); +INSERT INTO "area" VALUES('EPSG','1234','Tonga','Tonga - onshore and offshore.',-25.68,-14.14,-179.08,-171.28,0); +INSERT INTO "area" VALUES('EPSG','1235','Trinidad and Tobago','Trinidad and Tobago - onshore and offshore.',9.83,12.34,-62.09,-57.28,0); +INSERT INTO "area" VALUES('EPSG','1236','Tunisia','Tunisia - onshore and offshore.',30.23,38.41,7.49,13.67,0); +INSERT INTO "area" VALUES('EPSG','1237','Turkey','Turkey - onshore and offshore.',34.42,43.45,25.62,44.83,0); +INSERT INTO "area" VALUES('EPSG','1238','Turkmenistan','Turkmenistan - onshore and offshore.',35.14,42.8,51.3,66.68,0); +INSERT INTO "area" VALUES('EPSG','1239','Turks and Caicos Islands','Turks and Caicos Islands - onshore and offshore.',20.54,25.07,-72.82,-67.66,0); +INSERT INTO "area" VALUES('EPSG','1240','Tuvalu','Tuvalu - onshore and offshore. Funafuti, Nanumanga, Nui, Nanomea, Nurakita, Niutao, Nukufetau, Nukulaelae, and Vaitupu.',-13.24,-4.0,172.73,-176.71,0); +INSERT INTO "area" VALUES('EPSG','1241','Uganda','Uganda.',-1.48,4.23,29.57,35.01,0); +INSERT INTO "area" VALUES('EPSG','1242','Ukraine','Ukraine - onshore and offshore.',43.18,52.38,22.15,40.18,0); +INSERT INTO "area" VALUES('EPSG','1243','UAE','United Arab Emirates (UAE) - onshore and offshore. Abu Dhabi, Dubai, Sharjah, Umm al Qaywayn, Al Fujairah, Ras al Khaymah.',22.63,26.27,51.5,57.13,0); +INSERT INTO "area" VALUES('EPSG','1244','UK','United Kingdom (UK) - onshore and offshore - England, Scotland including Orkney and Shetland Islands, Wales, Northern Ireland (Ulster).',47.42,63.89,-14.89,3.4,0); +INSERT INTO "area" VALUES('EPSG','1245','USA','United States (USA) - onshore and offshore.',15.56,74.71,167.65,-65.69,0); +INSERT INTO "area" VALUES('EPSG','1246','United States Minor Outlying Islands','United States Minor Outlying Islands - onshore and offshore - Baker Island, Howland Islands, Jarvis Island, Johnston Atoll, Kingman Reef, Midway Islands, Palmyra Islands, and Wake Island.',-3.74,31.8,163.07,-157.41,0); +INSERT INTO "area" VALUES('EPSG','1247','Uruguay','Uruguay - onshore and offshore.',-37.77,-30.09,-58.49,-50.01,0); +INSERT INTO "area" VALUES('EPSG','1248','Uzbekistan','Uzbekistan.',37.18,45.58,55.99,73.17,0); +INSERT INTO "area" VALUES('EPSG','1249','Vanuatu','Vanuatu - onshore and offshore.',-21.65,-12.27,163.16,173.59,0); +INSERT INTO "area" VALUES('EPSG','1250','Holy See (Vatican City State)','Holy See (Vatican City State).',41.9,41.91,12.44,12.46,0); +INSERT INTO "area" VALUES('EPSG','1251','Venezuela','Venezuela - onshore and offshore.',0.64,16.75,-73.38,-58.95,0); +INSERT INTO "area" VALUES('EPSG','1252','Vietnam','Vietnam - onshore and offshore.',5.67,23.33,102.14,112.55,0); +INSERT INTO "area" VALUES('EPSG','1253','Virgin Islands, British','British Virgin Islands - onshore and offshore - Anegada, Jost Van Dyke, Tortola, and Virgin Gorda.',17.96,22.09,-65.85,-63.29,0); +INSERT INTO "area" VALUES('EPSG','1254','Virgin Islands, US','US Virgin Islands - onshore and offshore - St Croix, St John, and St Thomas.',16.22,21.83,-66.05,-63.88,0); +INSERT INTO "area" VALUES('EPSG','1255','Wallis and Futuna','Wallis and Futuna - onshore and offshore - Uvea, Futuna, and Alofi.',-15.94,-9.84,179.49,-174.27,0); +INSERT INTO "area" VALUES('EPSG','1256','Western Sahara','Western Sahara - onshore and offshore.',18.98,27.67,-20.68,-8.66,0); +INSERT INTO "area" VALUES('EPSG','1257','Yemen','Yemen - onshore and offshore.',8.95,19.0,41.08,57.96,0); +INSERT INTO "area" VALUES('EPSG','1258','Yugoslavia - Serbia and Montenegro','Yugoslavia - Union of Serbia and Montenegro - onshore and offshore.',41.82,46.23,18.44,23.05,1); +INSERT INTO "area" VALUES('EPSG','1259','Congo DR (Zaire)','The Democratic Republic of the Congo (Zaire) - onshore and offshore.',-13.46,5.39,11.79,31.31,0); +INSERT INTO "area" VALUES('EPSG','1260','Zambia','Zambia.',-18.08,-8.19,21.99,33.71,0); +INSERT INTO "area" VALUES('EPSG','1261','Zimbabwe','Zimbabwe.',-22.42,-15.61,25.23,33.08,0); +INSERT INTO "area" VALUES('EPSG','1262','World','World.',-90.0,90.0,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','1263','Not specified','Not specified.',-90.0,90.0,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','1264','UK - Great Britain; Isle of Man','United Kingdom (UK) - Great Britain - England and Wales onshore, Scotland onshore and Western Isles nearshore; Isle of Man onshore.',49.79,60.94,-8.82,1.92,0); +INSERT INTO "area" VALUES('EPSG','1265','Argentina - Comodoro Rivadavia','Argentina - Comodoro Rivadavia area.',-46.7,-45.19,-69.5,-67.1,0); +INSERT INTO "area" VALUES('EPSG','1266','Venezuela - Puerto La Cruz','Venezuela - Puerto La Cruz area.',10.0,10.31,-64.7,-64.5,0); +INSERT INTO "area" VALUES('EPSG','1267','Venezuela - Barinas','Venezuela - Barinas area.',7.31,9.07,-71.49,-67.58,0); +INSERT INTO "area" VALUES('EPSG','1268','Venezuela - Falcon state','Venezuela - Falcon state.',10.3,12.25,-71.3,-68.19,0); +INSERT INTO "area" VALUES('EPSG','1269','Venezuela - Pedregal area of Falcon state','Venezuela - Pedregal area of Falcon state.',10.8,11.26,-70.4,-69.69,0); +INSERT INTO "area" VALUES('EPSG','1270','Venezuela - Maracaibo south','Venezuela - south Maracaibo area.',8.72,10.01,-72.4,-70.78,0); +INSERT INTO "area" VALUES('EPSG','1271','Africa - Eritrea, Ethiopia, South Sudan and Sudan','Eritrea; Ethiopia; South Sudan; Sudan.',3.4,22.24,21.82,47.99,0); +INSERT INTO "area" VALUES('EPSG','1272','Asia - Middle East - Bahrain, Kuwait and Saudi Arabia','Bahrain, Kuwait and Saudi Arabia - onshore.',15.61,32.16,34.51,55.67,0); +INSERT INTO "area" VALUES('EPSG','1273','Antigua - onshore','Antigua island - onshore.',16.94,17.22,-61.95,-61.61,0); +INSERT INTO "area" VALUES('EPSG','1274','Brazil - Aratu','Brazil - offshore south and east of a line intersecting the coast at 2°55''S; onshore Tucano basin.',-35.71,4.26,-53.38,-26.0,0); +INSERT INTO "area" VALUES('EPSG','1275','Netherlands - onshore','Netherlands - onshore, including Waddenzee, Dutch Wadden Islands and 12-mile offshore coastal zone.',50.75,53.7,3.2,7.22,0); +INSERT INTO "area" VALUES('EPSG','1276','Africa - Botswana, Malawi, Zambia, Zimbabwe','Botswana; Malawi; Zambia; Zimbabwe.',-26.88,-8.19,19.99,35.93,0); +INSERT INTO "area" VALUES('EPSG','1277','Africa - Burundi, Kenya, Rwanda, Tanzania and Uganda','Burundi, Kenya, Rwanda, Tanzania and Uganda.',-11.75,4.63,28.85,41.91,0); +INSERT INTO "area" VALUES('EPSG','1278','Antarctica - Australian sector','Antarctica between 45°E and 136°E and between 142°E and 160°E - Australian sector.',-90.0,-60.0,45.0,160.0,0); +INSERT INTO "area" VALUES('EPSG','1279','Australasia - Australia and PNG - AGD66','Australia - onshore and offshore. Papua New Guinea - onshore.',-47.2,-1.3,109.23,163.2,0); +INSERT INTO "area" VALUES('EPSG','1280','Australia - Western Australia','Australia - Western Australia.',-35.19,-13.67,112.85,129.01,0); +INSERT INTO "area" VALUES('EPSG','1281','Australia - mainland','Australia - Australian Capital Territory; New South Wales; Northern Territory; Queensland; South Australia; Western Australia; Victoria.',-39.2,-10.65,112.85,153.69,0); +INSERT INTO "area" VALUES('EPSG','1282','Australia - Tasmania','Australia - Tasmania including islands - onshore.',-43.7,-39.52,143.77,148.55,0); +INSERT INTO "area" VALUES('EPSG','1283','Canada - Maritime Provinces','Canada - New Brunswick; Nova Scotia; Prince Edward Island.',43.41,48.07,-69.05,-59.73,0); +INSERT INTO "area" VALUES('EPSG','1284','Europe - FSU, Czechoslovakia - onshore','Armenia; Azerbaijan; Belarus; Czech Republic; Estonia - onshore; Georgia - onshore; Kazakhstan; Kyrgyzstan; Latvia - onshore; Lithuania - onshore; Moldova; Russian Federation - onshore; Slovakia; Tajikistan; Turkmenistan; Ukraine - onshore; Uzbekistan.',35.14,77.79,12.09,-169.57,0); +INSERT INTO "area" VALUES('EPSG','1285','Indonesia - Java and Bali onshore','Indonesia - onshore Java and Bali.',-8.91,-5.83,105.06,115.77,0); +INSERT INTO "area" VALUES('EPSG','1286','Europe - Liechtenstein and Switzerland','Liechtenstein; Switzerland.',45.82,47.81,5.96,10.49,0); +INSERT INTO "area" VALUES('EPSG','1287','Indonesia - Banga & Belitung Islands','Indonesia - Banga and Belitung Islands.',-3.3,-1.44,105.07,108.35,0); +INSERT INTO "area" VALUES('EPSG','1288','Angola - Angola proper','Angola - Angola proper - onshore and offshore.',-18.02,-5.82,8.2,24.09,0); +INSERT INTO "area" VALUES('EPSG','1289','Canada - CGVD28','Canada - onshore - Alberta; British Columbia; Manitoba south of 57°N; New Brunswick; Northwest Territories south west of a line between 60°N, 110°W and the coast at 132°W; Nova Scotia; Ontario south of 52°N; Prince Edward Island; Quebec - mainland west of 66°W and south of 55°N; Saskatchewan south of 55°N; Yukon.',41.67,69.8,-141.01,-59.73,0); +INSERT INTO "area" VALUES('EPSG','1290','Africa - Botswana, Lesotho, South Africa and Swaziland','Botswana; Lesotho; South Africa - mainland; Swaziland.',-34.88,-17.78,16.45,32.95,0); +INSERT INTO "area" VALUES('EPSG','1291','Asia - FSU - Caspian Sea','Azerbaijan - offshore; Kazakhstan - offshore; Russian Federation - Caspian Sea; Turkmenistan - offshore.',37.35,46.97,46.95,53.93,0); +INSERT INTO "area" VALUES('EPSG','1292','Argentina - Neuquen province','Argentina - Neuquen province.',-41.1,-36.14,-71.96,-68.01,0); +INSERT INTO "area" VALUES('EPSG','1293','Brazil - Corrego Alegre 1970-1972','Brazil - onshore - west of 54°W and south of 18°S; also south of 15°S between 54°W and 42°W; also east of 42°W.',-33.78,-2.68,-58.16,-34.74,0); +INSERT INTO "area" VALUES('EPSG','1294','Portugal - mainland - onshore','Portugal - mainland - onshore.',36.95,42.16,-9.56,-6.19,0); +INSERT INTO "area" VALUES('EPSG','1295','Germany - DHDN','Germany - onshore - Baden-Wurtemberg, Bayern, Hessen, Niedersachsen, Nordrhein-Westfalen, Rheinland-Pfalz, Saarland, Schleswig-Holstein. Also former DDR states of Sachsen and Thuringen by transformation.',47.27,55.06,5.87,15.03,1); +INSERT INTO "area" VALUES('EPSG','1296','Europe - ED50 by country','Europe - west: Andorra; Cyprus; Denmark - onshore and offshore; Faroe Islands - onshore; France - offshore; Germany - offshore North Sea; Gibraltar; Greece - offshore; Israel - offshore; Italy including San Marino and Vatican City State; Ireland offshore; Malta; Netherlands - offshore; North Sea; Norway including Svalbard - onshore and offshore; Portugal - mainland - offshore; Spain - onshore; Turkey - onshore and offshore; United Kingdom UKCS offshore east of 6°W including Channel Islands (Guernsey and Jersey). Egypt - Western Desert; Iraq - onshore; Jordan.',25.71,84.17,-16.1,48.61,0); +INSERT INTO "area" VALUES('EPSG','1297','Europe - west','Europe - west.',34.88,84.17,-10.56,39.65,0); +INSERT INTO "area" VALUES('EPSG','1298','Europe - ETRS89','Europe - onshore and offshore: Albania; Andorra; Austria; Belgium; Bosnia and Herzegovina; Bulgaria; Croatia; Cyprus; Czech Republic; Denmark; Estonia; Faroe Islands; Finland; France; Germany; Gibraltar; Greece; Hungary; Ireland; Italy; Latvia; Liechtenstein; Lithuania; Luxembourg; Macedonia; Malta; Moldova; Monaco; Montenegro; Netherlands; Norway including Svalbard and Jan Mayen; Poland; Portugal; Romania; San Marino; Serbia; Slovakia; Slovenia; Spain; Sweden; Switzerland; Ukraine; United Kingdom (UK) including Channel Islands and Isle of Man; Vatican City State.',32.88,84.17,-16.1,40.18,0); +INSERT INTO "area" VALUES('EPSG','1299','Europe - EVRF2000','Europe - onshore - Andorra; Austria; Belgium; Bosnia and Herzegovina; Croatia; Czech Republic; Denmark; Estonia; Finland; France - mainland; Germany; Gibraltar; Hungary; Italy - mainland and Sicily; Latvia; Liechtenstein; Lithuania; Luxembourg; Netherlands; Norway; Poland; Portugal; Romania; San Marino; Slovakia; Slovenia; Spain - mainland; Sweden; Switzerland; United Kingdom (UK) - Great Britain mainland; Vatican City State.',35.95,71.21,-9.56,31.59,0); +INSERT INTO "area" VALUES('EPSG','1300','Iran - FD58','Iran - Arwaz area and onshore Gulf coast west of 54°E, Lavan Island, offshore Balal field and South Pars blocks 2 and 3.',26.21,33.22,47.13,53.61,0); +INSERT INTO "area" VALUES('EPSG','1301','Portugal - Azores C - onshore','Portugal - central Azores onshore - Faial, Graciosa, Pico, Sao Jorge, Terceira.',38.32,39.14,-28.9,-26.97,0); +INSERT INTO "area" VALUES('EPSG','1302','Asia - Cambodia and Vietnam - mainland','Cambodia - mainland onshore; Vietnam - mainland onshore.',8.5,23.33,102.14,109.52,0); +INSERT INTO "area" VALUES('EPSG','1303','South America - Tierra del Fuego','Argentina and Chile - Tierra del Fuego, onshore.',-55.96,-51.99,-74.83,-63.73,0); +INSERT INTO "area" VALUES('EPSG','1304','Asia - Myanmar and Thailand onshore','Myanmar (Burma) - onshore; Thailand - onshore.',5.63,28.55,92.2,105.64,0); +INSERT INTO "area" VALUES('EPSG','1305','Europe - Ireland (Republic and Ulster) - onshore','Ireland - onshore. United Kingdom (UK) - Northern Ireland (Ulster) - onshore.',51.39,55.43,-10.56,-5.34,0); +INSERT INTO "area" VALUES('EPSG','1306','Europe - Czechoslovakia','Czech Republic; Slovakia.',47.73,51.06,12.09,22.56,0); +INSERT INTO "area" VALUES('EPSG','1307','Asia - Bangladesh; India; Myanmar; Pakistan - onshore','Bangladesh - onshore; India - mainland onshore; Myanmar (Burma) - onshore; Pakistan - onshore.',8.02,37.07,60.86,101.17,0); +INSERT INTO "area" VALUES('EPSG','1308','Asia - Bangladesh; India; Myanmar; Pakistan - onshore','Bangladesh - onshore; India - mainland onshore; Myanmar - onshore and Moattama area offshore; Pakistan - onshore.',8.02,37.07,60.86,101.17,0); +INSERT INTO "area" VALUES('EPSG','1309','Asia - Malaysia (west) and Singapore','Malaysia - West Malaysia; Singapore.',1.13,6.72,99.59,104.6,0); +INSERT INTO "area" VALUES('EPSG','1310','Kuwait - Kuwait City','Kuwait - Kuwait City.',29.17,29.45,47.78,48.16,0); +INSERT INTO "area" VALUES('EPSG','1311','Venezuela - Cabimas','Venezuela - Cabimas area.',10.14,10.61,-71.55,-71.29,0); +INSERT INTO "area" VALUES('EPSG','1312','Venezuela - Lake Maracaibo','Venezuela - Lake Maracaibo area, onshore and offshore in lake.',8.72,11.04,-72.4,-70.78,0); +INSERT INTO "area" VALUES('EPSG','1313','Venezuela - north of 7°45''N','Venezuela - onshore north of approximately 7°45''N.',7.75,12.25,-73.38,-59.8,0); +INSERT INTO "area" VALUES('EPSG','1314','Portugal - Madeira archipelago onshore','Portugal - Madeira, Porto Santo and Desertas islands - onshore.',32.35,33.15,-17.31,-16.23,0); +INSERT INTO "area" VALUES('EPSG','1315','Mozambique - west - Tete province','Mozambique - west - Tete province.',-17.76,-14.01,30.21,35.37,0); +INSERT INTO "area" VALUES('EPSG','1316','Indonesia - Sulawesi SW','Indonesia - south west Sulawesi.',-6.54,-1.88,118.71,120.78,0); +INSERT INTO "area" VALUES('EPSG','1317','Angola - Cabinda offshore','Angola - Cabinda offshore.',-6.04,-5.05,10.53,12.18,0); +INSERT INTO "area" VALUES('EPSG','1318','Angola - Cabinda','Angola - Cabinda.',-6.04,-4.38,10.53,13.1,0); +INSERT INTO "area" VALUES('EPSG','1319','Venezuela - Maracaibo area','Venezuela - Maracaibo area, onshore and offshore in lake.',10.0,11.0,-72.25,-71.5,0); +INSERT INTO "area" VALUES('EPSG','1320','Venezuela - Maturin','Venezuela - Maturin area.',9.1,10.13,-64.3,-63.0,0); +INSERT INTO "area" VALUES('EPSG','1321','Europe - Austria and former Yugoslavia onshore','Austria. Bosnia and Herzegovina. Croatia - onshore. FYR Macedonia. Montenegro - onshore. Serbia. Slovenia - onshore.',40.85,49.02,9.53,23.04,0); +INSERT INTO "area" VALUES('EPSG','1322','Trinidad and Tobago - Tobago - onshore','Trinidad and Tobago - Tobago - onshore.',11.08,11.41,-60.9,-60.44,0); +INSERT INTO "area" VALUES('EPSG','1323','USA - CONUS - onshore','United States (USA) - onshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming.',24.41,49.38,-124.79,-66.91,0); +INSERT INTO "area" VALUES('EPSG','1324','USA (all states)','United States (USA) - onshore and offshore - Alabama; Alaska; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Hawaii; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming.',15.56,74.71,167.65,-65.69,0); +INSERT INTO "area" VALUES('EPSG','1325','North America - Canada and USA (CONUS, Alaska mainland)','North America - onshore and offshore: Canada - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon. United States (USA) - Alabama; Alaska (mainland); Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming.',23.81,86.46,-172.54,-47.74,0); +INSERT INTO "area" VALUES('EPSG','1326','France - mainland onshore','France - mainland onshore.',42.33,51.14,-4.87,8.23,0); +INSERT INTO "area" VALUES('EPSG','1327','France - Corsica onshore','France - Corsica onshore.',41.31,43.07,8.5,9.63,0); +INSERT INTO "area" VALUES('EPSG','1328','Indonesia - Kalimantan - Mahakam delta','Indonesia - east Kalimantan - Mahakam delta coastal and offshore shelf areas.',-1.24,0.0,116.72,117.99,0); +INSERT INTO "area" VALUES('EPSG','1329','Mozambique - south','Mozambique - south.',-26.87,-19.84,31.29,35.65,0); +INSERT INTO "area" VALUES('EPSG','1330','USA - Alaska','United States (USA) - Alaska.',51.3,71.4,172.42,-129.99,0); +INSERT INTO "area" VALUES('EPSG','1331','USA - Alaska - St. George Island','United States (USA) - Alaska - Pribilof Islands - St George Island.',56.49,56.67,-169.88,-169.38,0); +INSERT INTO "area" VALUES('EPSG','1332','USA - Alaska - St. Lawrence Island','United States (USA) - Alaska - St Lawrence Island.',62.89,63.84,-171.97,-168.59,0); +INSERT INTO "area" VALUES('EPSG','1333','USA - Alaska - St. Paul Island','United States (USA) - Alaska - Pribilof Islands - St Paul Island.',57.06,57.28,-170.51,-170.04,0); +INSERT INTO "area" VALUES('EPSG','1334','USA - Hawaii - onshore','United States (USA) - Hawaii - main islands onshore.',18.87,22.29,-160.3,-154.74,0); +INSERT INTO "area" VALUES('EPSG','1335','Caribbean - Puerto Rico and Virgin Islands - onshore','Puerto Rico, US Virgin Islands and British Virgin Islands - onshore.',17.62,18.78,-67.97,-64.25,0); +INSERT INTO "area" VALUES('EPSG','1336','Canada - CSRS98','Canada - Alberta; New Brunswick; Saskatchewan; Prince Edward Island; and Quebec.',44.61,62.56,-120.0,-57.1,1); +INSERT INTO "area" VALUES('EPSG','1337','USA - HARN','American Samoa - onshore - Tutuila, Aunu''u, Ofu, Olesega, Ta''u and Rose islands. Guam - onshore. Northern Mariana Islands - onshore. Puerto Rico - onshore. United States (USA) - onshore Alabama, Alaska, Arizona, Arkansas, California, Colorado, Connecticut, Delaware, Florida, Georgia, Hawaii, Idaho, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana, Maine, Maryland, Massachusetts, Michigan, Minnesota, Mississippi, Missouri, Montana, Nebraska, Nevada, New Hampshire, New Jersey, New Mexico, New York, North Carolina, North Dakota, Ohio, Oklahoma, Oregon, Pennsylvania, Rhode Island, South Carolina, South Dakota, Tennessee, Texas, Utah, Vermont, Virginia, Washington, West Virginia, Wisconsin and Wyoming; offshore Gulf of Mexico continental shelf (GoM OCS). US Virgin Islands - onshore.',-14.59,71.4,144.58,-64.51,0); +INSERT INTO "area" VALUES('EPSG','1338','Iran - Taheri refinery','Iran - Taheri refinery site.',27.39,27.61,52.5,52.71,0); +INSERT INTO "area" VALUES('EPSG','1339','Trinidad and Tobago - Trinidad','Trinidad and Tobago - Trinidad - onshore and offshore.',9.83,11.51,-62.09,-60.0,0); +INSERT INTO "area" VALUES('EPSG','1340','Yemen - South Yemen - mainland','Yemen - South Yemen onshore mainland.',12.54,19.0,43.37,53.14,0); +INSERT INTO "area" VALUES('EPSG','1341','South America by country','South America - Argentina, Brazil, Bolivia, Chile, Colombia, Ecuador, French Guiana, Guyana, Paraguay, Peru, Suriname, Uruguay, Venezuela.',-56.15,13.0,-82.0,-34.0,1); +INSERT INTO "area" VALUES('EPSG','1342','Sierra Leone - Freetown Peninsula','Sierra Leone - Freetown Peninsula.',8.32,8.55,-13.34,-13.13,0); +INSERT INTO "area" VALUES('EPSG','1343','Germany - East Germany all states','Germany - states of former East Germany - Berlin, Brandenburg; Mecklenburg-Vorpommern; Sachsen; Sachsen-Anhalt; Thuringen.',50.2,54.74,9.92,15.04,0); +INSERT INTO "area" VALUES('EPSG','1344','Portugal - Azores W - onshore','Portugal - western Azores onshore - Flores, Corvo.',39.3,39.77,-31.34,-31.02,0); +INSERT INTO "area" VALUES('EPSG','1345','Portugal - Azores E - onshore','Portugal - eastern Azores onshore - Sao Miguel, Santa Maria, Formigas.',36.87,37.96,-25.92,-24.62,0); +INSERT INTO "area" VALUES('EPSG','1346','Qatar - onshore','Qatar - onshore.',24.55,26.2,50.69,51.68,0); +INSERT INTO "area" VALUES('EPSG','1347','Belgium - onshore','Belgium - onshore.',49.5,51.51,2.5,6.4,0); +INSERT INTO "area" VALUES('EPSG','1348','South America - PSAD56 by country','Aruba - onshore; Bolivia; Bonaire - onshore; Brazil - offshore - Amazon Cone shelf; Chile - onshore north of 43°30''S; Curacao - onshore; Ecuador - mainland onshore; Guyana - onshore; Peru - onshore; Venezuela - onshore.',-43.5,12.68,-81.41,-47.99,0); +INSERT INTO "area" VALUES('EPSG','1349','North America - NAD27','North and central America: Antigua and Barbuda - onshore. Bahamas - onshore plus offshore over internal continental shelf only. Belize - onshore. British Virgin Islands - onshore. Canada onshore - Alberta, British Columbia, Manitoba, New Brunswick, Newfoundland and Labrador, Northwest Territories, Nova Scotia, Nunavut, Ontario, Prince Edward Island, Quebec, Saskatchewan and Yukon - plus offshore east coast. Cuba - onshore and offshore. El Salvador - onshore. Guatemala - onshore. Honduras - onshore. Panama - onshore. Puerto Rico - onshore. Mexico - onshore plus offshore east coast. Nicaragua - onshore. United States (USA) onshore and offshore - Alabama, Alaska, Arizona, Arkansas, California, Colorado, Connecticut, Delaware, Florida, Georgia, Idaho, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana, Maine, Maryland, Massachusetts, Michigan, Minnesota, Mississippi, Missouri, Montana, Nebraska, Nevada, New Hampshire, New Jersey, New Mexico, New York, North Carolina, North Dakota, Ohio, Oklahoma, Oregon, Pennsylvania, Rhode Island, South Carolina, South Dakota, Tennessee, Texas, Utah, Vermont, Virginia, Washington, West Virginia, Wisconsin and Wyoming - plus offshore . US Virgin Islands - onshore.',7.15,83.17,167.65,-47.74,0); +INSERT INTO "area" VALUES('EPSG','1350','North America - NAD83','North America - onshore and offshore: Canada - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon. Puerto Rico. United States (USA) - Alabama; Alaska; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Hawaii; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Virgin Islands. British Virgin Islands.',14.92,86.46,167.65,-47.74,0); +INSERT INTO "area" VALUES('EPSG','1351','Asia - Middle East - Qatar offshore and UAE','Arabian Gulf; Qatar - offshore; United Arab Emirates (UAE) - Abu Dhabi; Dubai; Sharjah; Ajman; Fujairah; Ras Al Kaimah; Umm Al Qaiwain - onshore and offshore.',22.63,27.05,50.55,57.13,0); +INSERT INTO "area" VALUES('EPSG','1352','Norway - onshore','Norway - onshore.',57.93,71.21,4.68,31.22,0); +INSERT INTO "area" VALUES('EPSG','1353','France - onshore','France - onshore.',NULL,NULL,NULL,NULL,1); +INSERT INTO "area" VALUES('EPSG','1354','Europe - British Isles - UK and Ireland onshore','Ireland - onshore. United Kingdom (UK) - onshore - England; Scotland; Wales; Northern Ireland. Isle of Man.',49.81,60.9,-10.56,1.84,0); +INSERT INTO "area" VALUES('EPSG','1355','Indonesia - Sumatra','Indonesia - Sumatra.',-5.99,5.97,95.16,106.13,0); +INSERT INTO "area" VALUES('EPSG','1356','Asia - Middle East - Israel, Jordan and Palestine onshore','Israel - onshore; Jordan; Palestine Territory - onshore.',29.18,33.38,34.17,39.31,0); +INSERT INTO "area" VALUES('EPSG','1357','Europe - eastern and FSU','Albania; Bulgaria; Czech Republic; Germany (former DDR); Hungary; Poland; Romania; Slovakia. Armenia; Azerbaijan; Belarus; Estonia; Georgia; Kazakhstan; Kyrgyzstan; Latvia; Lithuania; Moldova; Russian Federation; Tajikistan; Turkmenistan; Ukraine; Uzbekistan.',35.1,78.0,9.87,-169.73,1); +INSERT INTO "area" VALUES('EPSG','1358','South America - SAD69 by country','Brazil - onshore and offshore. In rest of South America - onshore north of approximately 45°S and Tierra del Fuego.',-55.96,12.52,-91.72,-25.28,0); +INSERT INTO "area" VALUES('EPSG','1359','Indonesia - Kalimantan SE','Indonesia - Kalimantan - onshore southeast coastal area including Mahakam delta coastal and offshore shelf areas.',-4.24,0.0,114.55,117.99,0); +INSERT INTO "area" VALUES('EPSG','1360','Indonesia - Kalimantan E','Indonesia - Kalimantan - onshore east coastal area including Mahakam delta coastal and offshore shelf areas.',-4.24,4.29,114.55,119.06,0); +INSERT INTO "area" VALUES('EPSG','1361','Sudan - south','Sudan - south.',NULL,NULL,NULL,NULL,1); +INSERT INTO "area" VALUES('EPSG','1362','Asia - Brunei and East Malaysia','Brunei - onshore and offshore; Malaysia - East Malaysia (Sabah; Sarawak) - onshore and offshore.',0.85,7.67,109.31,119.61,0); +INSERT INTO "area" VALUES('EPSG','1363','UAE - Abu Dhabi and Dubai - onshore','United Arab Emirates (UAE) - Abu Dhabi onshore and Dubai onshore.',22.63,25.34,51.56,56.03,0); +INSERT INTO "area" VALUES('EPSG','1364','Asia - Japan and Korea','Japan - onshore; North Korea - onshore; South Korea - onshore.',20.37,45.54,122.83,154.05,0); +INSERT INTO "area" VALUES('EPSG','1365','Algeria - north of 32°N','Algeria - onshore north of 32°N.',31.99,37.14,-2.95,9.09,0); +INSERT INTO "area" VALUES('EPSG','1366','Africa - Algeria, Morocco and Tunisia','Algeria; Morocco; Tunisia.',18.98,37.34,-13.17,11.99,1); +INSERT INTO "area" VALUES('EPSG','1367','Canada - Ontario','Canada - Ontario.',41.67,56.9,-95.16,-74.35,0); +INSERT INTO "area" VALUES('EPSG','1368','Canada - Quebec','Canada - Quebec.',44.99,62.62,-79.85,-57.1,0); +INSERT INTO "area" VALUES('EPSG','1369','France - Alsace','France - Alsace.',47.42,49.07,6.84,8.23,0); +INSERT INTO "area" VALUES('EPSG','1370','Venezuela - Deltana','Venezuela - Deltana area.',7.89,10.46,-62.8,-59.8,0); +INSERT INTO "area" VALUES('EPSG','1371','Venezuela - Guarico state','Venezuela - Guarico state.',7.54,10.03,-68.0,-64.76,0); +INSERT INTO "area" VALUES('EPSG','1372','USA - Alabama','United States (USA) - Alabama.',30.14,35.02,-88.48,-84.89,0); +INSERT INTO "area" VALUES('EPSG','1373','USA - Arizona','United States (USA) - Arizona.',31.33,37.01,-114.81,-109.04,0); +INSERT INTO "area" VALUES('EPSG','1374','USA - Arkansas','United States (USA) - Arkansas.',33.01,36.5,-94.62,-89.64,0); +INSERT INTO "area" VALUES('EPSG','1375','USA - California','United States (USA) - California.',32.53,42.01,-124.45,-114.12,0); +INSERT INTO "area" VALUES('EPSG','1376','USA - Colorado','United States (USA) - Colorado.',36.98,41.01,-109.06,-102.04,0); +INSERT INTO "area" VALUES('EPSG','1377','USA - Connecticut','United States (USA) - Connecticut - counties of Fairfield; Hartford; Litchfield; Middlesex; New Haven; New London; Tolland; Windham.',40.98,42.05,-73.73,-71.78,0); +INSERT INTO "area" VALUES('EPSG','1378','USA - Delaware','United States (USA) - Delaware - counties of Kent; New Castle; Sussex.',38.44,39.85,-75.8,-74.97,0); +INSERT INTO "area" VALUES('EPSG','1379','USA - Florida','United States (USA) - Florida.',24.41,31.01,-87.63,-79.97,0); +INSERT INTO "area" VALUES('EPSG','1380','USA - Georgia','United States (USA) - Georgia.',30.36,35.01,-85.61,-80.77,0); +INSERT INTO "area" VALUES('EPSG','1381','USA - Idaho','United States (USA) - Idaho.',41.99,49.01,-117.24,-111.04,0); +INSERT INTO "area" VALUES('EPSG','1382','USA - Illinois','United States (USA) - Illinois.',36.98,42.51,-91.52,-87.02,0); +INSERT INTO "area" VALUES('EPSG','1383','USA - Indiana','United States (USA) - Indiana.',37.77,41.77,-88.06,-84.78,0); +INSERT INTO "area" VALUES('EPSG','1384','USA - Iowa','United States (USA) - Iowa.',40.37,43.51,-96.65,-90.14,0); +INSERT INTO "area" VALUES('EPSG','1385','USA - Kansas','United States (USA) - Kansas.',36.99,40.01,-102.06,-94.58,0); +INSERT INTO "area" VALUES('EPSG','1386','USA - Kentucky','United States (USA) - Kentucky.',36.49,39.15,-89.57,-81.95,0); +INSERT INTO "area" VALUES('EPSG','1387','USA - Louisiana','United States (USA) - Louisiana.',28.85,33.03,-94.05,-88.75,0); +INSERT INTO "area" VALUES('EPSG','1388','USA - Maine','United States (USA) - Maine.',43.04,47.47,-71.09,-66.91,0); +INSERT INTO "area" VALUES('EPSG','1389','USA - Maryland','United States (USA) - Maryland - counties of Allegany; Anne Arundel; Baltimore; Calvert; Caroline; Carroll; Cecil; Charles; Dorchester; Frederick; Garrett; Harford; Howard; Kent; Montgomery; Prince Georges; Queen Annes; Somerset; St Marys; Talbot; Washington; Wicomico; Worcester.',37.97,39.73,-79.49,-74.97,0); +INSERT INTO "area" VALUES('EPSG','1390','USA - Massachusetts','United States (USA) - Massachusetts.',41.19,42.89,-73.5,-69.86,0); +INSERT INTO "area" VALUES('EPSG','1391','USA - Michigan','United States (USA) - Michigan.',41.69,48.32,-90.42,-82.13,0); +INSERT INTO "area" VALUES('EPSG','1392','USA - Minnesota','United States (USA) - Minnesota.',43.49,49.38,-97.22,-89.49,0); +INSERT INTO "area" VALUES('EPSG','1393','USA - Mississippi','United States (USA) - Mississippi.',30.01,35.01,-91.65,-88.09,0); +INSERT INTO "area" VALUES('EPSG','1394','USA - Missouri','United States (USA) - Missouri.',35.98,40.61,-95.77,-89.1,0); +INSERT INTO "area" VALUES('EPSG','1395','USA - Montana','United States (USA) - Montana - counties of Beaverhead; Big Horn; Blaine; Broadwater; Carbon; Carter; Cascade; Chouteau; Custer; Daniels; Dawson; Deer Lodge; Fallon; Fergus; Flathead; Gallatin; Garfield; Glacier; Golden Valley; Granite; Hill; Jefferson; Judith Basin; Lake; Lewis and Clark; Liberty; Lincoln; Madison; McCone; Meagher; Mineral; Missoula; Musselshell; Park; Petroleum; Phillips; Pondera; Powder River; Powell; Prairie; Ravalli; Richland; Roosevelt; Rosebud; Sanders; Sheridan; Silver Bow; Stillwater; Sweet Grass; Teton; Toole; Treasure; Valley; Wheatland; Wibaux; Yellowstone.',44.35,49.01,-116.07,-104.04,0); +INSERT INTO "area" VALUES('EPSG','1396','USA - Nebraska','United States (USA) - Nebraska - counties of Adams; Antelope; Arthur; Banner; Blaine; Boone; Box Butte; Boyd; Brown; Buffalo; Burt; Butler; Cass; Cedar; Chase; Cherry; Cheyenne; Clay; Colfax; Cuming; Custer; Dakota; Dawes; Dawson; Deuel; Dixon; Dodge; Douglas; Dundy; Fillmore; Franklin; Frontier; Furnas; Gage; Garden; Garfield; Gosper; Grant; Greeley; Hall; Hamilton; Harlan; Hayes; Hitchcock; Holt; Hooker; Howard; Jefferson; Johnson; Kearney; Keith; Keya Paha; Kimball; Knox; Lancaster; Lincoln; Logan; Loup; Madison; McPherson; Merrick; Morrill; Nance; Nemaha; Nuckolls; Otoe; Pawnee; Perkins; Phelps; Pierce; Platte; Polk; Red Willow; Richardson; Rock; Saline; Sarpy; Saunders; Scotts Bluff; Seward; Sheridan; Sherman; Sioux; Stanton; Thayer; Thomas; Thurston; Valley; Washington; Wayne; Webster; Wheeler; York.',39.99,43.01,-104.06,-95.3,0); +INSERT INTO "area" VALUES('EPSG','1397','USA - Nevada','United States (USA) - Nevada.',34.99,42.0,-120.0,-114.03,0); +INSERT INTO "area" VALUES('EPSG','1398','USA - New Hampshire','United States (USA) - New Hampshire - counties of Belknap; Carroll; Cheshire; Coos; Grafton; Hillsborough; Merrimack; Rockingham; Strafford; Sullivan.',42.69,45.31,-72.56,-70.63,0); +INSERT INTO "area" VALUES('EPSG','1399','USA - New Jersey','United States (USA) - New Jersey - counties of Atlantic; Bergen; Burlington; Camden; Cape May; Cumberland; Essex; Gloucester; Hudson; Hunterdon; Mercer; Middlesex; Monmouth; Morris; Ocean; Passaic; Salem; Somerset; Sussex; Union; Warren.',38.87,41.36,-75.6,-73.88,0); +INSERT INTO "area" VALUES('EPSG','1400','USA - New Mexico','United States (USA) - New Mexico.',31.33,37.0,-109.06,-102.99,0); +INSERT INTO "area" VALUES('EPSG','1401','USA - New York','United States (USA) - New York.',40.47,45.02,-79.77,-71.8,0); +INSERT INTO "area" VALUES('EPSG','1402','USA - North Carolina','United States (USA) - North Carolina - counties of Alamance; Alexander; Alleghany; Anson; Ashe; Avery; Beaufort; Bertie; Bladen; Brunswick; Buncombe; Burke; Cabarrus; Caldwell; Camden; Carteret; Caswell; Catawba; Chatham; Cherokee; Chowan; Clay; Cleveland; Columbus; Craven; Cumberland; Currituck; Dare; Davidson; Davie; Duplin; Durham; Edgecombe; Forsyth; Franklin; Gaston; Gates; Graham; Granville; Greene; Guilford; Halifax; Harnett; Haywood; Henderson; Hertford; Hoke; Hyde; Iredell; Jackson; Johnston; Jones; Lee; Lenoir; Lincoln; Macon; Madison; Martin; McDowell; Mecklenburg; Mitchell; Montgomery; Moore; Nash; New Hanover; Northampton; Onslow; Orange; Pamlico; Pasquotank; Pender; Perquimans; Person; Pitt; Polk; Randolph; Richmond; Robeson; Rockingham; Rowan; Rutherford; Sampson; Scotland; Stanly; Stokes; Surry; Swain; Transylvania; Tyrrell; Union; Vance; Wake; Warren; Washington; Watauga; Wayne; Wilkes; Wilson; Yadkin; Yancey.',33.83,36.59,-84.33,-75.38,0); +INSERT INTO "area" VALUES('EPSG','1403','USA - North Dakota','United States (USA) - North Dakota.',45.93,49.01,-104.07,-96.55,0); +INSERT INTO "area" VALUES('EPSG','1404','USA - Ohio','United States (USA) - Ohio.',38.4,42.33,-84.83,-80.51,0); +INSERT INTO "area" VALUES('EPSG','1405','USA - Oklahoma','United States (USA) - Oklahoma.',33.62,37.01,-103.0,-94.42,0); +INSERT INTO "area" VALUES('EPSG','1406','USA - Oregon','United States (USA) - Oregon.',41.98,46.26,-124.6,-116.47,0); +INSERT INTO "area" VALUES('EPSG','1407','USA - Pennsylvania','United States (USA) - Pennsylvania.',39.71,42.53,-80.53,-74.7,0); +INSERT INTO "area" VALUES('EPSG','1408','USA - Rhode Island','United States (USA) - Rhode Island - counties of Bristol; Kent; Newport; Providence; Washington.',41.13,42.02,-71.85,-71.08,0); +INSERT INTO "area" VALUES('EPSG','1409','USA - South Carolina','United States (USA) - South Carolina - counties of Abbeville; Aiken; Allendale; Anderson; Bamberg; Barnwell; Beaufort; Berkeley; Calhoun; Charleston; Cherokee; Chester; Chesterfield; Clarendon; Colleton; Darlington; Dillon; Dorchester; Edgefield; Fairfield; Florence; Georgetown; Greenville; Greenwood; Hampton; Horry; Jasper; Kershaw; Lancaster; Laurens; Lee; Lexington; Marion; Marlboro; McCormick; Newberry; Oconee; Orangeburg; Pickens; Richland; Saluda; Spartanburg; Sumter; Union; Williamsburg; York.',32.05,35.21,-83.36,-78.52,0); +INSERT INTO "area" VALUES('EPSG','1410','USA - South Dakota','United States (USA) - South Dakota.',42.48,45.95,-104.07,-96.43,0); +INSERT INTO "area" VALUES('EPSG','1411','USA - Tennessee','United States (USA) - Tennessee - counties of Anderson; Bedford; Benton; Bledsoe; Blount; Bradley; Campbell; Cannon; Carroll; Carter; Cheatham; Chester; Claiborne; Clay; Cocke; Coffee; Crockett; Cumberland; Davidson; De Kalb; Decatur; Dickson; Dyer; Fayette; Fentress; Franklin; Gibson; Giles; Grainger; Greene; Grundy; Hamblen; Hamilton; Hancock; Hardeman; Hardin; Hawkins; Haywood; Henderson; Henry; Hickman; Houston; Humphreys; Jackson; Jefferson; Johnson; Knox; Lake; Lauderdale; Lawrence; Lewis; Lincoln; Loudon; Macon; Madison; Marion; Marshall; Maury; McMinn; McNairy; Meigs; Monroe; Montgomery; Moore; Morgan; Obion; Overton; Perry; Pickett; Polk; Putnam; Rhea; Roane; Robertson; Rutherford; Scott; Sequatchie; Sevier; Shelby; Smith; Stewart; Sullivan; Sumner; Tipton; Trousdale; Unicoi; Union; Van Buren; Warren; Washington; Wayne; Weakley; White; Williamson; Wilson.',34.98,36.68,-90.31,-81.65,0); +INSERT INTO "area" VALUES('EPSG','1412','USA - Texas','United States (USA) - Texas.',25.83,36.5,-106.66,-93.5,0); +INSERT INTO "area" VALUES('EPSG','1413','USA - Utah','United States (USA) - Utah.',36.99,42.01,-114.05,-109.04,0); +INSERT INTO "area" VALUES('EPSG','1414','USA - Vermont','United States (USA) - Vermont - counties of Addison; Bennington; Caledonia; Chittenden; Essex; Franklin; Grand Isle; Lamoille; Orange; Orleans; Rutland; Washington; Windham; Windsor.',42.72,45.03,-73.44,-71.5,0); +INSERT INTO "area" VALUES('EPSG','1415','USA - Virginia','United States (USA) - Virginia.',36.54,39.46,-83.68,-75.31,0); +INSERT INTO "area" VALUES('EPSG','1416','USA - Washington','United States (USA) - Washington.',45.54,49.05,-124.79,-116.91,0); +INSERT INTO "area" VALUES('EPSG','1417','USA - West Virginia','United States (USA) - West Virginia.',37.2,40.64,-82.65,-77.72,0); +INSERT INTO "area" VALUES('EPSG','1418','USA - Wisconsin','United States (USA) - Wisconsin.',42.48,47.31,-92.89,-86.25,0); +INSERT INTO "area" VALUES('EPSG','1419','USA - Wyoming','United States (USA) - Wyoming.',40.99,45.01,-111.06,-104.05,0); +INSERT INTO "area" VALUES('EPSG','1420','Canada - Quebec - east of 57°W','Canada - Quebec - east of 57°W.',46.6,53.76,-57.0,-54.0,1); +INSERT INTO "area" VALUES('EPSG','1421','Canada - Quebec - 60°W to 57°W','Canada - Quebec - between 60°W and 57°W.',50.1,52.0,-60.0,-57.1,1); +INSERT INTO "area" VALUES('EPSG','1422','Canada - Quebec - 63°W to 60°W','Canada - Quebec - between 63°W and 60°W.',47.16,52.01,-63.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','1423','Canada - Quebec - 66°W to 63°W','Canada - Quebec - between 66°W and 63°W.',47.95,60.42,-66.0,-63.0,0); +INSERT INTO "area" VALUES('EPSG','1424','Canada - Quebec - 69°W to 66°W','Canada - Quebec - between 69°W and 66°W.',47.31,59.0,-69.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','1425','Canada - Quebec - 72°W to 69°W','Canada - Quebec - between 72°W and 69°W.',45.01,61.8,-72.0,-69.0,0); +INSERT INTO "area" VALUES('EPSG','1426','Canada - Quebec - 75°W to 72°W','Canada - Quebec - between 75°W and 72°W.',44.99,62.53,-75.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','1427','Canada - Quebec - 78°W to 75°W','Canada - Quebec - between 78°W and 75°W.',45.37,62.62,-78.0,-75.0,0); +INSERT INTO "area" VALUES('EPSG','1428','Canada - Quebec - west of 78°W','Canada - Quebec - west of 78°W.',46.23,62.45,-79.85,-78.0,0); +INSERT INTO "area" VALUES('EPSG','1429','Canada - Ontario - east of 75°W','Canada - Ontario - east of 75°W.',44.98,45.65,-75.0,-74.35,0); +INSERT INTO "area" VALUES('EPSG','1430','Canada - Ontario - 78°W to 75°W','Canada - Ontario - between 78°W and 75°W.',43.63,46.25,-78.0,-75.0,0); +INSERT INTO "area" VALUES('EPSG','1431','Canada - Ontario - MTM zone 10','Canada - Ontario - between 81°W and 78°W: south of 46°N in area to west of 80°15''W, south of 47°N in area between 80°15''W and 79°30''W, entire province between 79°30''W and 78°W.',42.26,47.33,-81.0,-77.99,0); +INSERT INTO "area" VALUES('EPSG','1432','Canada - Ontario - MTM zone 11','Canada - Ontario - south of 46°N and west of 81°W.',41.67,46.0,-83.6,-81.0,0); +INSERT INTO "area" VALUES('EPSG','1433','Canada - Ontario - MTM zone 12','Canada - Ontario - between 82°30''W and 79°30''W: north of 46°N in area between 82°30''W and 80°15''W, north of 47°N in area between 80°15''W and 79°30''W.',46.0,55.21,-82.5,-79.5,0); +INSERT INTO "area" VALUES('EPSG','1434','Canada - Ontario - MTM zone 13','Canada - Ontario - between 85°30''W and 82°30''W and north of 46°N.',46.0,55.59,-85.5,-82.5,0); +INSERT INTO "area" VALUES('EPSG','1435','Canada - Ontario - 88.5°W to 85.5°W','Canada - Ontario - between 88°30''W and 85°30''W.',47.17,56.7,-88.5,-85.5,0); +INSERT INTO "area" VALUES('EPSG','1436','Canada - Ontario - 91.5°W to 88.5°W','Canada - Ontario - between 91°30''W and 88°30''W.',47.97,56.9,-91.5,-88.5,0); +INSERT INTO "area" VALUES('EPSG','1437','Canada - Ontario - 94.5°W to 91.5°W','Canada - Ontario - between 94°30''W and 91°30''W.',48.06,55.2,-94.5,-91.5,0); +INSERT INTO "area" VALUES('EPSG','1438','Canada - Ontario - west of 94.5°W','Canada - Ontario - west of 94°30''W.',48.69,53.24,-95.16,-94.5,0); +INSERT INTO "area" VALUES('EPSG','1439','Canada - Ontario - west of 90°W','Canada - Ontario - west of 90°W.',48.03,56.2,-95.17,-90.0,0); +INSERT INTO "area" VALUES('EPSG','1440','Canada - Ontario - 90°W to 84°W','Canada - Ontario - between 90°W and 84°W.',46.11,56.9,-90.0,-84.0,0); +INSERT INTO "area" VALUES('EPSG','1441','Canada - Ontario - 84°W to 78°W','Canada - Ontario - between 84°W and 78°W.',41.67,55.37,-84.0,-78.0,0); +INSERT INTO "area" VALUES('EPSG','1442','Canada - Ontario - east of 78°W','Canada - Ontario - east of 78°W.',43.63,46.25,-78.0,-74.35,0); +INSERT INTO "area" VALUES('EPSG','1443','Canada - Quebec - 78°W to 72°W','Canada - Quebec - between 78°W and 72°W.',44.99,62.62,-78.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','1444','Canada - Quebec - 72°W to 66°W','Canada - Quebec - between 72°W and 66°W.',45.01,61.8,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','1445','Canada - Quebec - 66°W to 60°W','Canada - Quebec - between 66°W and 60°W.',47.16,60.42,-66.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','1446','Canada - Quebec - east of 60°W','Canada - Quebec - east of 60°W.',50.2,52.01,-60.0,-57.1,0); +INSERT INTO "area" VALUES('EPSG','1447','Canada - New Brunswick','Canada - New Brunswick.',44.56,48.07,-69.05,-63.7,0); +INSERT INTO "area" VALUES('EPSG','1448','Canada - 72°W to 66°W, south of 62°N','Canada south of 60°N and between 72°W and 66°W - New Brunswick (NB), Labrador, Nova Scotia (NS), Quebec.',44.6,61.5,-72.0,-66.0,1); +INSERT INTO "area" VALUES('EPSG','1449','Canada - 66°W to 60°W, south of 60°N','Canada south of 60°N and between 66°W and 60°W - New Brunswick (NB), Labrador, Nova Scotia (NS), Prince Edward Island (PEI), Quebec.',43.2,60.0,-66.0,-60.0,1); +INSERT INTO "area" VALUES('EPSG','1450','Cote d''Ivoire (Ivory Coast) - east of 6°W','Côte d''Ivoire (Ivory Coast) east of 6°W.',4.92,10.46,-6.0,-2.48,0); +INSERT INTO "area" VALUES('EPSG','1451','Cote d''Ivoire (Ivory Coast) - west of 6°W','Côte d''Ivoire (Ivory Coast) west of 6°W.',4.29,10.74,-8.61,-6.0,0); +INSERT INTO "area" VALUES('EPSG','1452','Vietnam - west of 108°E onshore','Vietnam - onshore west of 108°E.',8.5,23.33,102.14,108.0,0); +INSERT INTO "area" VALUES('EPSG','1453','Vietnam - east of 108°E onshore','Vietnam - onshore east of 108°E.',10.42,21.56,108.0,109.52,0); +INSERT INTO "area" VALUES('EPSG','1454','Namibia - Walvis Bay','Namibia - Walvis Bay.',-23.15,-22.68,14.35,14.6,0); +INSERT INTO "area" VALUES('EPSG','1455','South Africa - west of 18°E','South Africa - onshore west of 18°E.',-33.1,-28.03,16.45,18.0,0); +INSERT INTO "area" VALUES('EPSG','1456','South Africa - 18°E to 20°E','South Africa - onshore between 18°E and 20°E.',-34.88,-28.38,17.99,20.0,0); +INSERT INTO "area" VALUES('EPSG','1457','South Africa - 20°E to 22°E','South Africa - onshore between 20°E and 22°E.',-34.88,-24.76,19.99,22.01,0); +INSERT INTO "area" VALUES('EPSG','1458','South Africa - 22°E to 24°E','South Africa - onshore between 22°E and 24°E.',-34.26,-25.26,22.0,24.01,0); +INSERT INTO "area" VALUES('EPSG','1459','South Africa - 24°E to 26°E','South Africa - onshore between 24°E and 26°E.',-34.26,-24.71,24.0,26.01,0); +INSERT INTO "area" VALUES('EPSG','1460','South Africa - 26°E to 28°E','Lesotho - west of 28°E. South Africa - onshore between 26°E and 28°E.',-33.83,-22.92,26.0,28.0,0); +INSERT INTO "area" VALUES('EPSG','1461','South Africa - 28°E to 30°E','Lesotho - east of 28°E. South Africa - onshore between 28°E and 30°E.',-33.03,-22.13,27.99,30.0,0); +INSERT INTO "area" VALUES('EPSG','1462','South Africa - 30°E to 32°E','South Africa - onshore between 30°E and 32°E. Swaziland.',-31.38,-22.22,29.99,32.02,0); +INSERT INTO "area" VALUES('EPSG','1463','South Africa - east of 32°E','South Africa - east of 32°E.',-28.94,-26.8,31.95,32.95,0); +INSERT INTO "area" VALUES('EPSG','1464','Iran - west of 48°E','Iran - west of 48°E.',30.99,39.78,44.03,48.0,0); +INSERT INTO "area" VALUES('EPSG','1465','Iran - 48°E to 54°E','Iran - onshore and offshore between 48°E and 54°E.',25.47,39.71,48.0,54.0,0); +INSERT INTO "area" VALUES('EPSG','1466','Iran - 54°E to 60°E','Iran - onshore between 54°E and 60°E, Gulf offshore between of 54°E and Strait of Hormuz.',25.32,38.29,54.0,60.0,0); +INSERT INTO "area" VALUES('EPSG','1467','Iran - east of 60°E onshore','Iran - onshore east of 60°E.',25.02,37.06,60.0,63.34,0); +INSERT INTO "area" VALUES('EPSG','1468','Guinea - west of 12°W','Guinea - onshore west of 12°W.',9.01,12.68,-15.13,-12.0,0); +INSERT INTO "area" VALUES('EPSG','1469','Guinea - east of 12°W','Guinea - east of 12°W.',7.19,12.51,-12.0,-7.65,0); +INSERT INTO "area" VALUES('EPSG','1470','Libya - west of 10°E','Libya - west of 10°E.',25.37,30.49,9.31,10.01,0); +INSERT INTO "area" VALUES('EPSG','1471','Libya - 10°E to 12°E onshore','Libya - onshore between 10°E and 12°E.',23.51,33.23,10.0,12.0,0); +INSERT INTO "area" VALUES('EPSG','1472','Libya - 12°E to 14°E onshore','Libya - onshore between 12°E and 14°E.',22.8,33.06,12.0,14.0,0); +INSERT INTO "area" VALUES('EPSG','1473','Libya - 14°E to 16°E onshore','Libya - onshore between 14°E and 16°E.',22.61,32.79,14.0,16.0,0); +INSERT INTO "area" VALUES('EPSG','1474','Libya - 16°E to 18°E onshore','Libya - onshore between 16°E and 18°E.',22.51,31.34,16.0,18.01,0); +INSERT INTO "area" VALUES('EPSG','1475','Libya - 18°E to 20°E onshore','Libya - onshore between 18°E and 20°E.',21.54,32.17,18.0,20.0,0); +INSERT INTO "area" VALUES('EPSG','1476','Libya - 20°E to 22°E onshore','Libya - onshore between 20°E and 22°E.',20.54,33.0,20.0,22.0,0); +INSERT INTO "area" VALUES('EPSG','1477','Libya - 22°E to 24°E onshore','Libya - onshore between 22°E and 24°E.',19.5,32.97,22.0,24.0,0); +INSERT INTO "area" VALUES('EPSG','1478','Libya - east of 24°E onshore','Libya - onshore east of 24°E.',19.99,32.15,24.0,25.21,0); +INSERT INTO "area" VALUES('EPSG','1479','Libya - west of 12°E onshore','Libya - onshore west of 12°E.',23.51,33.23,9.31,12.0,0); +INSERT INTO "area" VALUES('EPSG','1480','Libya - 12°E to 18°E onshore','Libya - onshore between 12°E and 18°E.',22.51,33.06,12.0,18.01,0); +INSERT INTO "area" VALUES('EPSG','1481','Libya - 18°E to 24°E onshore','Libya - onshore between 18°E and 24°E.',19.5,33.0,18.0,24.0,0); +INSERT INTO "area" VALUES('EPSG','1482','Libya - west of 15°E onshore','Libya - onshore west of 15°E.',22.61,33.23,9.31,15.0,0); +INSERT INTO "area" VALUES('EPSG','1483','Argentina - Neuquen province east of 70.5°W','Argentina - Neuquen province east of 70°30''W.',-40.54,-36.14,-70.51,-68.01,0); +INSERT INTO "area" VALUES('EPSG','1484','Argentina - Comodoro Rivadavia - west of 67.5°W','Argentina - Comodoro Rivadavia area west of 67°30''W.',-46.7,-45.19,-69.5,-67.5,0); +INSERT INTO "area" VALUES('EPSG','1485','Argentina - Tierra del Fuego onshore west of 67.5°W','Argentina - Tierra del Fuego onshore west of 67°30''W.',-54.9,-52.59,-68.64,-67.5,0); +INSERT INTO "area" VALUES('EPSG','1486','Argentina - Tierra del Fuego offshore','Argentina - Tierra del Fuego offshore Atlantic.',-54.93,-51.36,-68.62,-61.49,0); +INSERT INTO "area" VALUES('EPSG','1487','Cuba - onshore north of 21°30''N','Cuba - onshore north of 21°30''N but also including all of Isla de la Juventud.',21.38,23.25,-85.01,-76.91,0); +INSERT INTO "area" VALUES('EPSG','1488','Cuba - onshore south of 21°30''N','Cuba - onshore south of 21°30''N and east of 80°W .',19.77,21.5,-78.69,-74.07,0); +INSERT INTO "area" VALUES('EPSG','1489','Tunisia - offshore','Tunisia - offshore.',33.22,38.41,7.81,13.67,0); +INSERT INTO "area" VALUES('EPSG','1490','Yemen - 42°E to 48°E','Yemen - between 42°E and 48°E, onshore and offshore.',11.57,17.53,42.0,48.0,0); +INSERT INTO "area" VALUES('EPSG','1491','Yemen - 48°E to 54°E','Yemen - between 48°E and 54°E, onshore and offshore.',9.45,19.0,48.0,54.0,0); +INSERT INTO "area" VALUES('EPSG','1492','Yemen - South Yemen - mainland west of 48°E','Yemen - South Yemen onshore mainland west of 48°E.',12.54,17.44,43.37,48.0,0); +INSERT INTO "area" VALUES('EPSG','1493','Yemen - South Yemen - mainland east of 48°E','Yemen - South Yemen onshore mainland east of 48°E.',13.94,19.0,48.0,53.14,0); +INSERT INTO "area" VALUES('EPSG','1494','Vietnam - onshore Vung Tau area','Vietnam - onshore Vung Tau area.',9.02,11.03,105.49,107.59,0); +INSERT INTO "area" VALUES('EPSG','1495','Vietnam - offshore Cuu Long basin','Vietnam - offshore - Cuu Long basin and northwestern part of Nam Con Son basin.',7.99,11.15,106.54,110.0,0); +INSERT INTO "area" VALUES('EPSG','1496','Korea, Republic of (South Korea) - east of 128°E onshore','Republic of Korea (South Korea) - onshore east of 128°E.',34.49,38.64,128.0,129.65,0); +INSERT INTO "area" VALUES('EPSG','1497','Korea, Republic of (South Korea) - 126°E to 128°E onshore','Republic of Korea (South Korea) - onshore between 126°E and 128°E.',33.14,38.33,126.0,128.0,0); +INSERT INTO "area" VALUES('EPSG','1498','Korea, Republic of (South Korea) - 124°E to 126°E onshore','Republic of Korea (South Korea) - onshore between 124°E and 126°E.',33.99,38.04,124.53,126.0,0); +INSERT INTO "area" VALUES('EPSG','1499','Venezuela - Maracaibo - blocks I II and III','Venezuela - Maracaibo area offshore blocks I, II and III.',10.0,10.51,-71.5,-71.17,0); +INSERT INTO "area" VALUES('EPSG','1500','New Zealand - North Island','New Zealand - North Island.',-41.67,-34.1,171.99,178.63,0); +INSERT INTO "area" VALUES('EPSG','1501','New Zealand - South Island','New Zealand - South Island.',-46.86,-40.44,166.37,174.46,0); +INSERT INTO "area" VALUES('EPSG','1502','New Zealand - offshore 162°E to168°E','New Zealand - offshore between 162°E and 168°E.',-55.89,-39.68,162.0,168.0,0); +INSERT INTO "area" VALUES('EPSG','1503','New Zealand - offshore 168°E to 174°E','New Zealand - offshore between 168°E and 174°E.',-55.95,-30.78,168.0,174.0,0); +INSERT INTO "area" VALUES('EPSG','1504','New Zealand - offshore 174°E to 180°E','New Zealand - offshore between 174°E and 180°E.',-54.32,-26.42,174.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','1505','Ghana - offshore','Ghana - offshore.',1.4,6.06,-3.79,2.1,0); +INSERT INTO "area" VALUES('EPSG','1506','Canada - 108°W to 102°W, south of 60°N','Canada south of 60°N and between 108°E and 102°W - Saskatchewan.',49.0,60.0,-108.0,-102.0,1); +INSERT INTO "area" VALUES('EPSG','1507','Canada - 114°W to 108°W, south of 60°N','Canada south of 60°N and between 114°E and 108°W - Alberta, Saskatchewan.',49.0,60.0,-114.0,-108.0,1); +INSERT INTO "area" VALUES('EPSG','1508','Canada - 120°W to 114°W, south of 60°N','Canada south of 60°N and between 120°E and 114°W - Alberta, British Columbia (BC).',49.0,60.0,-120.0,-114.0,1); +INSERT INTO "area" VALUES('EPSG','1509','Sierra Leone - west of 12°W','Sierra Leone - onshore west of 12°W.',7.15,9.94,-13.35,-12.0,0); +INSERT INTO "area" VALUES('EPSG','1510','Sierra Leone - east of 12°W','Sierra Leone - onshore east of 12°W.',6.88,10.0,-12.0,-10.26,0); +INSERT INTO "area" VALUES('EPSG','1511','USA - CONUS and Alaska; PRVI','Puerto Rico - onshore and offshore. United States (USA) onshore and offshore - Alabama; Alaska; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Virgin Islands - onshore and offshore.',14.92,74.71,167.65,-63.88,0); +INSERT INTO "area" VALUES('EPSG','1512','Germany - East Germany - west of 10.5°E','Germany - states of former East Germany - west of 10°30''E - Thuringen.',50.35,51.56,9.92,10.5,0); +INSERT INTO "area" VALUES('EPSG','1513','Europe - 10.5°E to 13.5°E onshore by country','Czech Republic - west of 13°30''E. Germany - states of former East Germany onshore - between 10°30''E and 13°30''E - Brandenburg; Mecklenburg-Vorpommern; Sachsen; Sachsen-Anhalt; Thuringen.',48.97,54.74,10.5,13.5,0); +INSERT INTO "area" VALUES('EPSG','1514','Europe - 13.5°E to 16.5°E onshore and S-42(83) by country','Czech Republic - between 13°30''E and 16°30''E. Germany - states of former East Germany onshore east of 13°30''E - Brandenburg; Mecklenburg-Vorpommern; Sachsen. Hungary - west of 16°30''E.',46.54,54.72,13.5,16.5,0); +INSERT INTO "area" VALUES('EPSG','1515','Poland - zone I','Poland - southeast - south of 52°20''N and east of 18°E.',49.0,52.34,18.0,24.15,0); +INSERT INTO "area" VALUES('EPSG','1516','Poland - zone II','Poland - northeast - onshore north of 51°20''N and east of 19°E.',51.33,54.51,19.0,23.95,0); +INSERT INTO "area" VALUES('EPSG','1517','Poland - zone III','Poland - northwest - onshore north of 52°10''N and west of 20°E.',52.16,54.89,14.14,20.0,0); +INSERT INTO "area" VALUES('EPSG','1518','Poland - zone IV','Poland - southwest - south of 53°20''N and west of 19°05''E.',49.39,53.34,14.14,19.09,0); +INSERT INTO "area" VALUES('EPSG','1519','Poland - zone V','Poland - south central - between 49°20''N and 51°20''N, 18°20''E and 19°40''E.',49.39,51.34,18.33,19.67,0); +INSERT INTO "area" VALUES('EPSG','1520','Poland - west of 16.5°E','Poland - onshore and offshore west of 16°30''E.',50.26,55.35,14.14,16.5,0); +INSERT INTO "area" VALUES('EPSG','1521','Poland - 16.5°E to 19.5°E','Poland - onshore and offshore between 16°30''E and 19°30''E.',49.39,55.93,16.5,19.5,0); +INSERT INTO "area" VALUES('EPSG','1522','Poland - 19.5°E to 22.5°E','Poland - onshore and offshore between 19°30''E and 22°30''E.',49.09,54.55,19.5,22.5,0); +INSERT INTO "area" VALUES('EPSG','1523','Poland - east of 22.5°E','Poland - east of 22°30''E.',49.0,54.41,22.5,24.15,0); +INSERT INTO "area" VALUES('EPSG','1524','Turkey - west of 28.5°E onshore','Turkey west of 28°30''E, onshore.',36.5,42.11,25.62,28.5,0); +INSERT INTO "area" VALUES('EPSG','1525','Turkey - 28.5°E to 31.5°E onshore','Turkey between 28°30''E and 31°30''E, onshore.',36.06,41.46,28.5,31.5,0); +INSERT INTO "area" VALUES('EPSG','1526','Turkey - 31.5°E to 34.5°E onshore','Turkey between 31°30''E and 34°30''E, onshore.',35.97,42.07,31.5,34.5,0); +INSERT INTO "area" VALUES('EPSG','1527','Turkey - 34.5°E to 37.5°E onshore','Turkey between 34°30''E and 37°30''E, onshore.',35.81,42.15,34.5,37.5,0); +INSERT INTO "area" VALUES('EPSG','1528','Turkey - 37.5°E to 40.5°E onshore','Turkey between 37°30''E and 40°30''E, onshore.',36.66,41.19,37.5,40.5,0); +INSERT INTO "area" VALUES('EPSG','1529','Turkey - 40.5°E to 43.5°E onshore','Turkey between 40°30''E and 43°30''E, onshore.',37.02,41.6,40.5,43.5,0); +INSERT INTO "area" VALUES('EPSG','1530','Turkey - east of 43.5°E','Turkey east of 43°30''E.',36.97,41.02,43.5,44.83,0); +INSERT INTO "area" VALUES('EPSG','1531','Canada - Maritime Provinces - west of 66°W','Canada - New Brunswick and Nova Scotia - west of 66°W.',43.64,48.07,-69.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','1532','Canada - Maritime Provinces - east of 66°W','Canada - New Brunswick and Nova Scotia east of 66°W; Prince Edward Island.',43.41,47.98,-66.0,-59.73,0); +INSERT INTO "area" VALUES('EPSG','1533','Canada - Prince Edward Island','Canada - Prince Edward Island.',45.9,47.09,-64.49,-61.9,0); +INSERT INTO "area" VALUES('EPSG','1534','Canada - Nova Scotia - east of 63°W','Canada - Nova Scotia - east of 63°W.',44.64,47.08,-63.0,-59.73,0); +INSERT INTO "area" VALUES('EPSG','1535','Canada - Nova Scotia - west of 63°W','Canada - Nova Scotia - west of 63°W.',43.41,46.02,-66.28,-63.0,0); +INSERT INTO "area" VALUES('EPSG','1536','Finland - 19.5°E to 22.5°E onshore','Finland - onshore between 19°30''E and 22°30''E.',59.76,69.33,19.5,22.5,0); +INSERT INTO "area" VALUES('EPSG','1537','Finland - 22.5°E to 25.5°E onshore','Finland - onshore between 22°30''E and 25°30''E.',59.75,68.9,22.5,25.5,0); +INSERT INTO "area" VALUES('EPSG','1538','Finland - 25.5°E to 28.5°E onshore. Also all country.','Finland - onshore between 25°30''E and 28°30''E for Basic Coordinate System and all onshore Finland for Uniform Coordinate System.',59.75,70.09,19.24,31.59,0); +INSERT INTO "area" VALUES('EPSG','1539','Finland - 28.5°E to 31.5°E','Finland - between 28°30''E and 31°30''E.',60.94,69.81,28.5,31.5,0); +INSERT INTO "area" VALUES('EPSG','1540','Mozambique - onshore west of 36°E','Mozambique - onshore west of 36°E.',-26.87,-11.41,30.21,36.0,0); +INSERT INTO "area" VALUES('EPSG','1541','Mozambique - onshore east of 36°E','Mozambique - onshore east of 36°E.',-18.98,-10.42,35.99,40.9,0); +INSERT INTO "area" VALUES('EPSG','1542','Asia - Cambodia and Vietnam - west of 108°E','Cambodia; Vietnam west of 108°E.',8.5,23.33,102.14,108.0,0); +INSERT INTO "area" VALUES('EPSG','1543','Austria - Styria','Austria - Styria.',46.64,47.84,13.58,16.17,0); +INSERT INTO "area" VALUES('EPSG','1544','Oman - onshore west of 54°E','Oman - onshore west of 54°E.',16.59,19.67,51.99,54.0,0); +INSERT INTO "area" VALUES('EPSG','1545','Oman - onshore east of 54°E','Oman - onshore east of 54°E. Includes Musandam and the Kuria Muria (Al Hallaniyah) islands.',16.89,26.58,54.0,59.91,0); +INSERT INTO "area" VALUES('EPSG','1546','USA - Hawaii - island of Hawaii - onshore','United States (USA) - Hawaii - island of Hawaii - onshore.',18.87,20.33,-156.1,-154.74,0); +INSERT INTO "area" VALUES('EPSG','1547','USA - Hawaii - Maui; Kahoolawe; Lanai; Molokai - onshore','United States (USA) - Hawaii - Maui; Kahoolawe; Lanai; Molokai - onshore.',20.45,21.26,-157.36,-155.93,0); +INSERT INTO "area" VALUES('EPSG','1548','USA - Hawaii - Oahu - onshore','United States (USA) - Hawaii - Oahu - onshore.',21.2,21.75,-158.33,-157.61,0); +INSERT INTO "area" VALUES('EPSG','1549','USA - Hawaii - Kauai - onshore','United States (USA) - Hawaii - Kauai - onshore.',21.81,22.29,-159.85,-159.23,0); +INSERT INTO "area" VALUES('EPSG','1550','USA - Hawaii - Niihau - onshore','United States (USA) - Hawaii - Niihau - onshore.',21.73,22.07,-160.3,-159.99,0); +INSERT INTO "area" VALUES('EPSG','1551','Grenada and southern Grenadines - onshore','Grenada and southern Grenadine Islands - onshore.',11.94,12.57,-61.84,-61.35,0); +INSERT INTO "area" VALUES('EPSG','1552','Africa - Eritrea, Ethiopia and Sudan - 36°E to 42°E','Eritrea. Ethiopia - between 36°E and 42°E. Sudan - east of 36°E.',3.4,22.01,36.0,42.0,0); +INSERT INTO "area" VALUES('EPSG','1553','Ethiopia - east of 42°E','Ethiopia - east of 42°E.',4.11,12.85,42.0,47.99,0); +INSERT INTO "area" VALUES('EPSG','1554','Somalia - 42°E to 48°E, N hemisphere onshore','Somalia - onshore north of equator and between 42°E and 48°E.',0.0,11.52,42.0,48.0,0); +INSERT INTO "area" VALUES('EPSG','1555','Somalia - onshore east of 48°E','Somalia - onshore east of 48°E.',4.44,12.03,48.0,51.47,0); +INSERT INTO "area" VALUES('EPSG','1556','Australia - 102°E to 108°E','Australia - between 102°E and 108°E.',-56.0,-10.0,102.0,108.0,1); +INSERT INTO "area" VALUES('EPSG','1557','Australia - 108°E to 114°E (EEZ)','Australia - onshore and offshore to 200 nautical mile EEZ boundary between 108°E and 114°E.',-37.84,-17.19,109.23,114.0,0); +INSERT INTO "area" VALUES('EPSG','1558','Australia - 114°E to 120°E (EEZ)','Australia - onshore and offshore to 200 nautical mile EEZ boundary between 114°E and 120°E.',-38.53,-12.61,114.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','1559','Australia - 120°E to 126°E','Australia - onshore and offshore between 120°E and 126°E.',-38.07,-10.46,120.0,126.01,0); +INSERT INTO "area" VALUES('EPSG','1560','Australia - 126°E to 132°E','Australia - onshore and offshore between 126°E and 132°E.',-37.38,-9.1,125.99,132.0,0); +INSERT INTO "area" VALUES('EPSG','1561','Australia - 132°E to 138°E','Australia - onshore and offshore between 132°E and 138°E.',-40.71,-8.88,132.0,138.01,0); +INSERT INTO "area" VALUES('EPSG','1562','Australia - 138°E to 144°E','Australia - onshore and offshore between 138°E and 144°E.',-48.19,-9.08,138.0,144.01,0); +INSERT INTO "area" VALUES('EPSG','1563','Australia - 144°E to 150°E','Australia - onshore and offshore between 144°E and 150°E.',-50.89,-9.23,144.0,150.01,0); +INSERT INTO "area" VALUES('EPSG','1564','Australia - 150°E to 156°E','Australia - onshore and offshore between 150°E and 156°E.',-58.96,-13.87,150.0,156.0,0); +INSERT INTO "area" VALUES('EPSG','1565','Australia - 156°E to 162°E','Australia including Lord Howe Island - onshore and offshore between 156°E and 162°E.',-35.13,-14.08,156.0,162.01,0); +INSERT INTO "area" VALUES('EPSG','1566','Australia - EEZ east of 162°E','Australia - offshore east of 162°E to 200 nautical mile EEZ boundary.',-34.22,-27.25,162.0,163.2,0); +INSERT INTO "area" VALUES('EPSG','1567','Australasia - Australia and PNG - 138°E to 144°E','Australia - onshore and offshore between 138°E and 144°E. Papua New Guinea - onshore west of 144°E.',-46.63,-2.53,138.0,144.01,0); +INSERT INTO "area" VALUES('EPSG','1568','Australasia - Australia and PNG - 144°E to 150°E','Australia - onshore and offshore between 144°E and 150°E. Papua New Guinea (PNG) - onshore between 144°E and 150°E.',-47.2,-1.3,144.0,150.01,0); +INSERT INTO "area" VALUES('EPSG','1569','Saudi Arabia - onshore 36°E to 42°E','Saudi Arabia - onshore between 36°E and 42°E.',16.59,32.16,36.0,42.0,0); +INSERT INTO "area" VALUES('EPSG','1570','Asia - Middle East - Kuwait and Saudi - 48°E to 54°E','Kuwait - onshore east of 48°E. Saudi Arabia - onshore between 48°E and 54°E.',17.43,30.04,48.0,54.01,0); +INSERT INTO "area" VALUES('EPSG','1571','Asia - Middle East - Kuwait and Saudi - 42°E to 48°E','Kuwait - west of 48°E. Saudi Arabia - between of 42°E and 48°E.',15.61,31.15,42.0,48.0,0); +INSERT INTO "area" VALUES('EPSG','1572','Brazil - 54°W to 48°W and Aratu','Brazil - offshore between 54°W and 48°W, including Pelotas basin.',-35.71,-25.01,-53.38,-47.99,0); +INSERT INTO "area" VALUES('EPSG','1573','Brazil - 48°W to 42°W and Aratu','Brazil - offshore areas south of intersection of parallel of 2°55''S with coast and between 48°W and 42°W including Santos basin.',-33.5,0.0,-48.01,-41.99,0); +INSERT INTO "area" VALUES('EPSG','1574','Brazil - 42°W to 36°W and Aratu','Brazil - between 42°W and 36°W, southern hemisphere offshore including Campos and Espirito Santo basins; onshore Tucano basin area.',-26.35,0.01,-42.01,-36.0,0); +INSERT INTO "area" VALUES('EPSG','1575','Africa - Botswana and Zambia - west of 24°E','Botswana and Zambia - west of 24°E.',-26.88,-10.86,19.99,24.0,0); +INSERT INTO "area" VALUES('EPSG','1576','Africa - Botswana, Zambia and Zimbabwe - 24°E to 30°E','Botswana - east of 24°E; Zambia - between 24°E and 30°E; Zimbabwe - west of 30°E .',-25.84,-8.31,24.0,30.0,0); +INSERT INTO "area" VALUES('EPSG','1577','Africa - Malawi, Zambia and Zimbabwe - east of 30°E','Malawi. Zambia and Zimbabwe - east of 30°E.',-22.42,-8.19,30.0,35.93,0); +INSERT INTO "area" VALUES('EPSG','1578','Uganda - north of equator and west of 30°E','Uganda - north of equator and west of 30°E.',0.0,0.86,29.71,30.0,0); +INSERT INTO "area" VALUES('EPSG','1579','Africa - Tanzania and Uganda - south of equator and west of 30°E','Tanzania - west of 30°E; Uganda - south of equator and west of 30°E.',-6.81,0.0,29.34,30.0,0); +INSERT INTO "area" VALUES('EPSG','1580','Africa - Kenya and Uganda - north of equator and 30°E to 36°E','Kenya - north of equator and west of 36°E; Uganda - north of equator and east of 30°E.',0.0,4.63,29.99,36.0,0); +INSERT INTO "area" VALUES('EPSG','1581','Africa - Kenya, Tanzania and Uganda - south of equator and 30°E to 36°E','Kenya - south of equator and west of 36°E; Tanzania - 30°E to 36°E; Uganda - south of equator and east of 30°E.',-11.61,0.01,29.99,36.0,0); +INSERT INTO "area" VALUES('EPSG','1582','Kenya - north of equator and east of 36°E','Kenya - north of equator and east of 36°E.',0.0,4.49,36.0,41.91,0); +INSERT INTO "area" VALUES('EPSG','1583','Africa - Kenya and Tanzania - south of equator and east of 36°E','Kenya - south of equator and east of 36°E; Tanzania - east of 36°E.',-11.75,0.0,36.0,41.6,0); +INSERT INTO "area" VALUES('EPSG','1584','Indonesia - Java and Java Sea - west of 108°E','Indonesia - onshore Java and offshore southern Java Sea west of 108°E.',-7.79,-4.07,105.06,108.0,0); +INSERT INTO "area" VALUES('EPSG','1585','Indonesia - Java and Java Sea - east of 114°E','Indonesia - onshore Java and Bali, offshore southern Java Sea, Madura Strait and western Bali Sea - east of 114°E.',-8.91,-5.33,114.0,117.01,0); +INSERT INTO "area" VALUES('EPSG','1586','Indonesia - Java and Java Sea - 108°E to 114°E','Indonesia - onshore Java and Madura and offshore southern Java Sea and Madura Strait - between 108°E and 114°E.',-8.67,-4.27,108.0,114.0,0); +INSERT INTO "area" VALUES('EPSG','1587','China - west of 78°E','China - west of 78°E.',35.42,41.07,73.62,78.01,0); +INSERT INTO "area" VALUES('EPSG','1588','China - 78°E to 84°E','China - between 78°E and 84°E.',29.16,47.23,77.98,84.0,0); +INSERT INTO "area" VALUES('EPSG','1589','China - 84°E to 90°E','China - between 84°E and 90°E.',27.32,49.18,84.0,90.0,0); +INSERT INTO "area" VALUES('EPSG','1590','China - 90°E to 96°E','China - between 90°E and 96°E.',27.71,47.9,90.0,96.01,0); +INSERT INTO "area" VALUES('EPSG','1591','China - 96°E to 102°E','China - between 96°E and 102°E.',21.13,43.18,96.0,102.01,0); +INSERT INTO "area" VALUES('EPSG','1592','China - 102°E to 108°E onshore','China - onshore between 102°E and 108°E.',21.53,42.47,102.0,108.0,0); +INSERT INTO "area" VALUES('EPSG','1593','China - 108°E to 114°E onshore','China - onshore between 108°E and 114°E.',18.11,45.11,108.0,114.0,0); +INSERT INTO "area" VALUES('EPSG','1594','China - 114°E to 120°E onshore','China - onshore between 114°E and 120°E.',22.14,51.52,114.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','1595','China - 120°E to 126°E onshore','China - onshore between 120°E and 126°E.',26.34,53.56,120.0,126.0,0); +INSERT INTO "area" VALUES('EPSG','1596','China - 126°E to 132°E onshore','China - onshore between 126°E and 132°E.',40.89,52.79,126.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','1597','China - east of 132°E','China - east of 132°E.',45.02,48.4,132.0,134.77,0); +INSERT INTO "area" VALUES('EPSG','1598','Colombia - west of 75°35''W','Colombia - mainland onshore west of 1°30''W of Bogota (75°34''51.30"W of Greenwich).',0.03,10.21,-79.1,-75.58,0); +INSERT INTO "area" VALUES('EPSG','1599','Colombia - 75°35''W to 72°35''W','Colombia - onshore between 1°30''W and 1°30''E of Bogota (75°35''W and 72°35''W of Greenwich).',-2.51,11.82,-75.59,-72.58,0); +INSERT INTO "area" VALUES('EPSG','1600','Colombia - 72°35''W to 69°35''W','Colombia - onshore between 1°30''E and 4°30''E of Bogota (72°35''W and 69°34''W of Greenwich).',-4.23,12.52,-72.59,-69.58,0); +INSERT INTO "area" VALUES('EPSG','1601','Colombia - east of 69°35''W','Colombia - east of 4°30''E of Bogota (69°34''51.3"W of Greenwich).',-2.25,6.31,-69.59,-66.87,0); +INSERT INTO "area" VALUES('EPSG','1602','Colombia - offshore west of 78°W','Colombia - offshore west of 78°W of Greenwich.',NULL,NULL,NULL,NULL,1); +INSERT INTO "area" VALUES('EPSG','1603','Colombia - offshore Caribbean west of 72°W','Colombia - offshore Caribbean west of 72°W of Greenwich.',7.9,13.68,-77.37,-72.0,0); +INSERT INTO "area" VALUES('EPSG','1604','Angola - Angola proper - offshore','Angola - Angola proper - offshore.',-17.26,-6.01,8.2,13.86,0); +INSERT INTO "area" VALUES('EPSG','1605','Angola - offshore block 15','Angola - offshore block 15.',-6.59,-6.03,10.83,11.67,0); +INSERT INTO "area" VALUES('EPSG','1606','Angola - Angola proper - offshore - west of 12°E','Angola - Angola proper - offshore - west of 12°E.',-17.26,-6.03,8.2,12.0,0); +INSERT INTO "area" VALUES('EPSG','1607','Angola - 12°E to 18°E','Angola - Angola proper between 12°E and 18°E.',-17.44,-5.82,12.0,18.0,0); +INSERT INTO "area" VALUES('EPSG','1608','Argentina - west of 70.5°W','Argentina - west of 70°30''W.',-52.0,-36.16,-73.59,-70.5,0); +INSERT INTO "area" VALUES('EPSG','1609','Argentina - 70.5°W to 67.5°W onshore','Argentina - between 70°30''W and 67°30''W, onshore.',-54.9,-24.08,-70.5,-67.49,0); +INSERT INTO "area" VALUES('EPSG','1610','Argentina - 67.5°W to 64.5°W onshore','Argentina - between 67°30''W and 64°30''W, onshore.',-55.11,-21.78,-67.5,-64.49,0); +INSERT INTO "area" VALUES('EPSG','1611','Argentina - 64.5°W to 61.5°W onshore','Argentina - between 64°30''W and 61°30''W, onshore.',-54.91,-21.99,-64.5,-61.5,0); +INSERT INTO "area" VALUES('EPSG','1612','Argentina - 61.5°W to 58.5°W onshore','Argentina - between 61°30''W and 58°30''W onshore.',-39.06,-23.37,-61.51,-58.5,0); +INSERT INTO "area" VALUES('EPSG','1613','Argentina - 58.5°W to 55.5°W onshore','Argentina - between 58°30''W and 55°30''W, onshore.',-38.59,-24.84,-58.5,-55.49,0); +INSERT INTO "area" VALUES('EPSG','1614','Argentina - east of 55.5°W onshore','Argentina - east of 55°30''W, onshore.',-28.11,-25.49,-55.5,-53.65,0); +INSERT INTO "area" VALUES('EPSG','1615','Botswana - west of 24°E','Botswana - west of 24°E.',-26.88,-17.99,19.99,24.0,0); +INSERT INTO "area" VALUES('EPSG','1616','Botswana - 21°E to 27°E','Botswana - between 21°E and 27°E.',-26.88,-17.78,21.0,27.0,1); +INSERT INTO "area" VALUES('EPSG','1617','Botswana - east of 24°E','Botswana - east of 24°E.',-25.84,-17.78,24.0,29.38,0); +INSERT INTO "area" VALUES('EPSG','1618','Tunisia - onshore','Tunisia - onshore.',30.23,37.4,7.49,11.59,0); +INSERT INTO "area" VALUES('EPSG','1619','Tunisia - north of 34°39''N','Tunisia - onshore north of 38.5 grads North (34°39''N).',34.65,37.4,8.18,11.37,0); +INSERT INTO "area" VALUES('EPSG','1620','Tunisia - south of 34°39''N','Tunisia - onshore south of 38.5 grads North (34°39''N) .',30.23,34.66,7.49,11.59,0); +INSERT INTO "area" VALUES('EPSG','1621','Brazil - Corrego Alegre - west of 42°W','Brazil - NE coastal area between 45°W and 42°W.',-3.9,-1.5,-45.0,-42.0,1); +INSERT INTO "area" VALUES('EPSG','1622','Brazil - Corrego Alegre - east of 42°W','Brazil - NE coastal area between 42°W and 40°W.',-4.0,-2.7,-42.0,-40.0,1); +INSERT INTO "area" VALUES('EPSG','1623','Asia - Middle East - Lebanon and Syria onshore','Lebanon - onshore. Syrian Arab Republic - onshore.',32.31,37.3,35.04,42.38,0); +INSERT INTO "area" VALUES('EPSG','1624','Germany - West Germany - west of 7.5°E','Germany - former West Germany onshore west of 7°30''E - states of Niedersachsen, Nordrhein-Westfalen, Rheinland-Pfalz, Saarland.',49.11,53.81,5.86,7.5,0); +INSERT INTO "area" VALUES('EPSG','1625','Germany - West-Germany - 7.5°E to 10.5°E','Germany - former West Germany onshore between 7°30''E and 10°30''E - states of Baden-Wurtemberg, Bayern, Bremen, Hamberg, Hessen, Niedersachsen, Nordrhein-Westfalen, Rhineland-Pfalz, Schleswig-Holstein.',47.27,55.09,7.5,10.51,0); +INSERT INTO "area" VALUES('EPSG','1626','Germany - West Germany - 10.5°E to 13.5°E','Germany - former West Germany onshore between 10°30''E and 13°30''E - states of Bayern, Berlin, Niedersachsen, Schleswig-Holstein.',47.39,54.59,10.5,13.51,0); +INSERT INTO "area" VALUES('EPSG','1627','Germany - West Germany - east of 13.5°E','Germany - former West Germany onshore east of 13°30''E - state of Bayern.',48.51,48.98,13.5,13.84,0); +INSERT INTO "area" VALUES('EPSG','1628','Germany - west of 4.5°E','Germany - onshore - west of 4°30''E.',NULL,NULL,NULL,NULL,1); +INSERT INTO "area" VALUES('EPSG','1629','UK - offshore - North Sea','United Kingdom (UK) - offshore - North Sea.',51.03,62.03,-5.05,3.4,0); +INSERT INTO "area" VALUES('EPSG','1630','Netherlands - offshore','Netherlands - offshore North Sea.',51.45,55.77,2.53,6.41,0); +INSERT INTO "area" VALUES('EPSG','1631','Europe - 18°W to 12°W and ED50 by country','Europe - between 18°W and 12°W - Ireland offshore.',48.43,56.57,-16.1,-12.0,0); +INSERT INTO "area" VALUES('EPSG','1632','Europe - 12°W to 6°W and ED50 by country','Europe - between 12°W and 6°W - Faroe Islands - onshore; Spain - mainland onshore; Ireland offshore.',36.13,62.41,-12.0,-6.0,0); +INSERT INTO "area" VALUES('EPSG','1633','Europe - 6°W to 0°W and ED50 by country','Europe - between 6°W and 0°W - Channel Islands (Jersey, Guernsey); France offshore; Gibraltar; Ireland offshore; Norway including Svalbard - offshore; Spain - onshore; United Kingdom - UKCS offshore.',35.26,80.53,-6.0,0.0,0); +INSERT INTO "area" VALUES('EPSG','1634','Europe - 0°E to 6°E and ED50 by country','Europe - between 0°E and 6°E - Andorra; Denmark (North Sea); Germany offshore; Netherlands offshore; Norway including Svalbard - onshore and offshore; Spain - onshore (mainland and Balearic Islands); United Kingdom (UKCS) offshore.',38.56,82.41,0.0,6.01,0); +INSERT INTO "area" VALUES('EPSG','1635','Europe - 6°E to 12°E and ED50 by country','Europe - between 6°E and 12°E - Denmark - onshore and offshore; France - offshore; Germany offshore; Italy - onshore and offshore; Netherlands offshore; Norway including Svalbard - onshore and offshore.',36.53,83.92,5.99,12.0,0); +INSERT INTO "area" VALUES('EPSG','1636','Europe - 12°E to 18°E and ED50 by country','Europe - between 12°E and 18°E onshore and offshore - Denmark (including Bornholm); Italy including San Marino and Vatican City State; Malta; Norway including Svalbard.',34.49,84.0,12.0,18.0,0); +INSERT INTO "area" VALUES('EPSG','1637','Europe - 18°E to 24°E and ED50 by country','Europe - between 18°E and 24°E - Greece - offshore; Italy - onshore and offshore; Norway including Svalbard - onshore and offshore.',33.59,84.0,18.0,24.0,0); +INSERT INTO "area" VALUES('EPSG','1638','Europe - 24°E to 30°E and ED50 by country','Europe - between 24°E and 30°E - Greece - offshore; Norway including Svalbard - onshore and offshore; Turkey - onshore and offshore. Egypt - Western Desert.',25.71,84.01,24.0,30.0,0); +INSERT INTO "area" VALUES('EPSG','1639','Europe - 30°E to 36°E and ED50 by country','Europe - between 30°E and 36°E - Israel - offshore; Jordan; Norway including Svalbard - onshore and offshore; Turkey - onshore and offshore.',29.19,83.89,29.99,36.0,0); +INSERT INTO "area" VALUES('EPSG','1640','Europe - 36°E to 42°E and ED50 by country','Europe - between 36°E and 42°E - Jordan; Norway including Svalbard - offshore; Turkey onshore and offshore.',29.18,79.09,36.0,42.0,0); +INSERT INTO "area" VALUES('EPSG','1641','Europe - 42°E to 48°E and ED50 by country','Europe - between 42°E and 48°E - Turkey.',36.97,41.6,42.0,44.83,0); +INSERT INTO "area" VALUES('EPSG','1642','Egypt - east of 33°E onshore','Egypt - east of 33°E - onshore plus offshore Gulf of Suez.',21.97,31.36,33.0,36.95,0); +INSERT INTO "area" VALUES('EPSG','1643','Egypt - 29°E to 33°E','Egypt – onshore between 29°E and 33°E, offshore Mediterranean east of 29°E and offshore Gulf of Suez.',21.99,33.82,29.0,34.27,0); +INSERT INTO "area" VALUES('EPSG','1644','Egypt - west of 29°E; north of 28°11''N','Egypt - onshore west of 29°E and north of approximately 28°11''N.',28.18,31.68,24.7,29.0,0); +INSERT INTO "area" VALUES('EPSG','1645','Egypt - west of 29°E; south of 28°11''N','Egypt - west of 29°E; south of approximately 28°11''N.',21.99,28.19,24.99,29.01,0); +INSERT INTO "area" VALUES('EPSG','1646','Europe - Estonia; Latvia; Lithuania','Estonia, Latvia and Lithuania - onshore and offshore.',53.89,60.0,19.02,28.24,0); +INSERT INTO "area" VALUES('EPSG','1647','Indonesia - west of 96°E, N hemisphere','Indonesia - north of equator and west of 96°E - onshore and offshore.',0.0,7.79,92.01,96.0,0); +INSERT INTO "area" VALUES('EPSG','1648','Indonesia - west of 96°E, S hemisphere','Indonesia - south of equator and west of 96°E.',NULL,NULL,NULL,NULL,1); +INSERT INTO "area" VALUES('EPSG','1649','Indonesia - 96°E to 102°E, N hemisphere','Indonesia - north of equator and between 96°E and 102°E - onshore and offshore.',0.0,7.49,96.0,102.0,0); +INSERT INTO "area" VALUES('EPSG','1650','Indonesia - 96°E to 102°E, S hemisphere','Indonesia - south of equator and between 96°E and 102°E - onshore and offshore.',-8.86,0.0,96.0,102.0,0); +INSERT INTO "area" VALUES('EPSG','1651','Indonesia - 102°E to 108°E, N hemisphere','Indonesia - north of equator and between 102°E and 108°E - onshore and offshore.',0.0,6.94,102.0,108.0,0); +INSERT INTO "area" VALUES('EPSG','1652','Indonesia - 102°E to 108°E, S hemisphere','Indonesia - south of equator and between 102°E and 108°E - onshore and offshore.',-10.73,0.0,102.0,108.01,0); +INSERT INTO "area" VALUES('EPSG','1653','Indonesia - 108°E to 114°E, N hemisphere','Indonesia - north of equator and between 108°E and 114°E - onshore and offshore.',0.0,7.37,108.0,114.0,0); +INSERT INTO "area" VALUES('EPSG','1654','Indonesia - 108°E to 114°E, S hemisphere','Indonesia - south of equator and between 108°E and 114°E - onshore and offshore.',-12.07,0.0,108.0,114.0,0); +INSERT INTO "area" VALUES('EPSG','1655','Indonesia - 114°E to 120°E, N hemisphere','Indonesia - north of equator and between 114°E and 120°E - onshore and offshore.',0.0,4.37,114.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','1656','Indonesia - 114°E to 120°E, S hemisphere','Indonesia - south of equator and between 114°E and 120°E - onshore and offshore.',-13.06,0.0,114.0,120.01,0); +INSERT INTO "area" VALUES('EPSG','1657','Indonesia - 120°E to 126°E, N hemisphere','Indonesia - north of equator and between 120°E and 126°E - onshore and offshore.',0.0,5.48,120.0,126.0,0); +INSERT INTO "area" VALUES('EPSG','1658','Indonesia - 120°E to 126°E, S hemisphere','Indonesia - south of equator and between 120°E and 126°E - onshore and offshore.',-13.95,0.01,120.0,126.01,0); +INSERT INTO "area" VALUES('EPSG','1659','Indonesia - 126°E to 132°E, N hemisphere','Indonesia - north of equator and between 126°E and 132°E - onshore and offshore.',0.0,6.68,126.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','1660','Indonesia - 126°E to 132°E, S hemisphere','Indonesia - south of equator and between 126°E and 132°E - onshore and offshore.',-9.45,0.0,126.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','1661','Indonesia - 132°E to 138°E, N hemisphere','Indonesia - north of equator and east of 132°E.',NULL,NULL,NULL,NULL,1); +INSERT INTO "area" VALUES('EPSG','1662','Indonesia - 132°E to 138°E, S hemisphere','Indonesia - south of equator and between 132°E and 138°E - onshore and offshore.',-10.06,0.0,132.0,138.01,0); +INSERT INTO "area" VALUES('EPSG','1663','Indonesia - east of 138°E, S hemisphere','Indonesia - south of equator and east of 138°E - onshore and offshore.',-10.84,0.0,138.0,141.46,0); +INSERT INTO "area" VALUES('EPSG','1664','Myanmar (Burma) - onshore west of 96°E','Myanmar (Burma) - onshore west of 96°E.',15.66,27.14,92.2,96.01,0); +INSERT INTO "area" VALUES('EPSG','1665','Asia - Myanmar and Thailand - 96°E to 102°E','Myanmar (Burma) - onshore east of 96°E; Thailand - onshore west of 102°E.',5.63,28.55,95.99,102.01,0); +INSERT INTO "area" VALUES('EPSG','1666','Thailand - east of 102°E','Thailand - onshore and offshore east of 102°E.',6.02,18.44,102.0,105.64,0); +INSERT INTO "area" VALUES('EPSG','1667','Thailand - onshore and GoT 96°E to102°E','Thailand - onshore west of 102°E plus offshore Gulf of Thailand west of 102°E.',5.63,20.46,97.34,102.01,0); +INSERT INTO "area" VALUES('EPSG','1668','Pakistan - north of 35°35''N','Pakistan - north of 35°35''N.',35.58,37.07,71.18,77.01,0); +INSERT INTO "area" VALUES('EPSG','1669','Asia - India; Pakistan - 28°N to 35°35''N','India - north of 28°N; Pakistan - between 28°N and 35°35''N.',28.0,35.59,60.86,81.64,0); +INSERT INTO "area" VALUES('EPSG','1670','Asia - India; Pakistan - onshore 21°N to 28°N and west of 82°E','India - onshore between 21°N and 28°N and west of 82°E; Pakistan - onshore south of 28°N.',21.0,28.01,61.59,82.01,0); +INSERT INTO "area" VALUES('EPSG','1671','Asia - Bangladesh; India; Myanmar; Pakistan - zone Ilb','Bangladesh - onshore north of 21°N; India - onshore north of 21°N and east of 82°E; Myanmar (Burma) - north of 21°N.',21.0,29.47,82.0,101.17,0); +INSERT INTO "area" VALUES('EPSG','1672','India - onshore 15°N to 21°N','India - onshore between 15°N and 21°N.',15.0,21.01,70.14,87.15,0); +INSERT INTO "area" VALUES('EPSG','1673','India - mainland south of 15°N','India - mainland onshore south of 15°N.',8.02,15.01,73.94,80.4,0); +INSERT INTO "area" VALUES('EPSG','1674','Bangladesh - onshore west of 90°E','Bangladesh - onshore west of 90°E.',21.59,26.64,88.01,90.0,0); +INSERT INTO "area" VALUES('EPSG','1675','Bangladesh - onshore east of 90°E','Bangladesh - onshore east of 90°E.',20.52,25.29,90.0,92.67,0); +INSERT INTO "area" VALUES('EPSG','1676','India - north of 28°N','India - north of 28°N.',28.0,35.51,70.35,81.64,0); +INSERT INTO "area" VALUES('EPSG','1677','India - onshore 21°N to 28°N and west of 82°E','India - onshore between 21°N and 28°N and west of 82°E.',21.0,28.01,68.13,82.01,0); +INSERT INTO "area" VALUES('EPSG','1678','India - onshore north of 21°N and east of 82°E','India - onshore north of 21°N and east of 82°E.',21.0,29.47,82.0,97.42,0); +INSERT INTO "area" VALUES('EPSG','1679','India - onshore west of 72°E','India - onshore west of 72°E.',20.64,28.22,68.13,72.01,0); +INSERT INTO "area" VALUES('EPSG','1680','India - mainland 72°E to 78°E','India - mainland onshore between 72°E and 78°E.',8.02,35.51,72.0,78.01,0); +INSERT INTO "area" VALUES('EPSG','1681','India - onshore 78°E to 84°E','India - onshore between 78°E and 84°E.',8.29,35.5,78.0,84.01,0); +INSERT INTO "area" VALUES('EPSG','1682','India - onshore 84°E to 90°E','India - onshore between 84°E and 90°E.',18.18,28.14,84.0,90.01,0); +INSERT INTO "area" VALUES('EPSG','1683','India - mainland 90°E to 96°E','India - mainland onshore between 90°E and 96°E.',21.94,29.42,90.0,96.01,0); +INSERT INTO "area" VALUES('EPSG','1684','India - east of 96°E','India - east of 96°E.',27.1,29.47,96.0,97.42,0); +INSERT INTO "area" VALUES('EPSG','1685','Pakistan - 28°N to 35°35''N','Pakistan - between 28°N and 35°35''N.',28.0,35.59,60.86,77.83,0); +INSERT INTO "area" VALUES('EPSG','1686','Pakistan - onshore south of 28°N','Pakistan - onshore south of 28°N.',23.64,28.01,61.59,71.91,0); +INSERT INTO "area" VALUES('EPSG','1687','Pakistan - onshore west of 66°E','Pakistan - onshore west of 66°E.',24.98,29.87,60.86,66.01,0); +INSERT INTO "area" VALUES('EPSG','1688','Pakistan - onshore 66°E to 72°E','Pakistan - onshore between 66°E and 72°E.',23.64,36.56,66.0,72.01,0); +INSERT INTO "area" VALUES('EPSG','1689','Pakistan - east of 72°E','Pakistan - east of 72°E.',28.21,37.07,72.0,77.83,0); +INSERT INTO "area" VALUES('EPSG','1690','Malaysia - West Malaysia - onshore','Malaysia - West Malaysia onshore.',1.21,6.72,99.59,104.6,0); +INSERT INTO "area" VALUES('EPSG','1691','Malaysia - West Malaysia - onshore west of 102°E','Malaysia - West Malaysia onshore west of 102°E.',2.29,6.72,99.59,102.01,0); +INSERT INTO "area" VALUES('EPSG','1692','Malaysia - West Malaysia - east of 102°E','Malaysia - onshore West Malaysia east of 102°E and offshore east coast.',1.21,7.81,102.0,105.82,0); +INSERT INTO "area" VALUES('EPSG','1693','Venezuela - west of 72°W','Venezuela - west of 72°W.',7.02,11.62,-73.38,-71.99,0); +INSERT INTO "area" VALUES('EPSG','1694','Venezuela - 72°W and 66°W onshore','Venezuela - between 72°W and 66°W, onshore.',0.73,12.25,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','1695','Venezuela - east of 66°W onshore','Venezuela - onshore east of 66°W.',0.64,11.23,-66.0,-59.8,0); +INSERT INTO "area" VALUES('EPSG','1696','Gabon - north of equator and west of 12°E onshore','Gabon - onshore north of equator and west of 12°E.',0.0,2.32,9.25,12.0,0); +INSERT INTO "area" VALUES('EPSG','1697','Gabon - west of 12°E','Gabon - west of 12°E - onshore and offshore.',-6.37,2.32,7.03,12.01,0); +INSERT INTO "area" VALUES('EPSG','1698','Philippines - zone I','Philippines - west of 118°E onshore and offshore.',6.21,18.64,116.04,118.0,0); +INSERT INTO "area" VALUES('EPSG','1699','Philippines - zone II','Philippines - approximately between 118°E and 120°E - Palawan; Calamian Islands - onshore and offshore.',3.02,20.42,118.0,120.07,0); +INSERT INTO "area" VALUES('EPSG','1700','Philippines - zone III','Philippines - approximately between 120°E and 122°E, onshore and offshore. Luzon (west of 122°E); Mindoro.',3.0,21.62,119.7,122.21,0); +INSERT INTO "area" VALUES('EPSG','1701','Philippines - zone IV','Philippines - approximately between 122°E and 124°E onshore and offshore - southeast Luzon (east of 122°E); Tablas; Masbate; Panay; Cebu; Negros; west Mindanao (west of 122°E).',3.44,22.18,121.74,124.29,0); +INSERT INTO "area" VALUES('EPSG','1702','Philippines - zone V','Philippines - approximately between 124°E and 126°E, onshore and offshore - east Mindanao (east of 124°E); Bohol; Samar.',4.76,21.97,123.73,126.65,0); +INSERT INTO "area" VALUES('EPSG','1703','Morocco - north of 31.5°N','Morocco onshore north of 35 grads North (31°30''N).',31.49,35.97,-9.85,-1.01,0); +INSERT INTO "area" VALUES('EPSG','1704','Morocco - 27.9°N to 31.5°N','Morocco between 31 grads and 35 grads North (27°54''N and 31°30''N).',27.9,31.5,-13.0,-3.5,1); +INSERT INTO "area" VALUES('EPSG','1705','Morocco - south of 27.9°N','Morocco south of 31 grads North (27°54''N).',21.06,27.9,-17.0,-8.67,1); +INSERT INTO "area" VALUES('EPSG','1706','Austria - west of 11°50''E','Austria west of 11°50''E of Greenwich (29°30''E of Ferro).',46.77,47.61,9.53,11.84,0); +INSERT INTO "area" VALUES('EPSG','1707','Austria - 11°50''E to 14°50''E','Austria between 11°50''E and 14°50''E of Greenwich (29°30''E and 32°30''E of Ferro).',46.4,48.79,11.83,14.84,0); +INSERT INTO "area" VALUES('EPSG','1708','Austria - east of 14°50''E','Austria east of 14°50''E of Greenwich (32°30''E of Ferro).',46.56,49.02,14.83,17.17,0); +INSERT INTO "area" VALUES('EPSG','1709','Europe - former Yugoslavia onshore west of 16.5°E','Bosnia and Herzegovina - west of 16°30''E; Croatia - onshore west of 16°30''E; Slovenia - onshore.',42.95,46.88,13.38,16.5,0); +INSERT INTO "area" VALUES('EPSG','1710','Europe - former Yugoslavia onshore 16.5°E to 19.5°E','Bosnia and Herzegovina - between 16°30''E and 19°30''E; Croatia - onshore east of 16°30''E; Montenegro - onshore west of 19°30''E; Serbia - west of 19°30''E.',41.79,46.55,16.5,19.51,0); +INSERT INTO "area" VALUES('EPSG','1711','Europe - former Yugoslavia onshore 19.5°E to 22.5°E','Bosnia and Herzegovina - east of 19°30''E; FYR Macedonia - west of 22°30''E; Montenegro - east of 19°30''E; Serbia - between 19°30''E and 22°30''E.',40.85,46.19,19.5,22.51,0); +INSERT INTO "area" VALUES('EPSG','1712','Europe - former Yugoslavia onshore east of 22.5°E','FYR Macedonia - east of 22°30''E; Serbia - east of 22°30''E.',41.11,44.7,22.5,23.04,0); +INSERT INTO "area" VALUES('EPSG','1713','Nigeria - east of 10.5°E','Nigeria east of 10°30''E.',6.43,13.72,10.49,14.65,0); +INSERT INTO "area" VALUES('EPSG','1714','Nigeria - 6.5°E to 10.5°E','Nigeria between 6°30''E and 10°30''E, onshore and offshore shelf.',3.57,13.53,6.5,10.51,0); +INSERT INTO "area" VALUES('EPSG','1715','Nigeria - west of 6.5°E','Nigeria - onshore west of 6°30''E, onshore and offshore shelf.',3.57,13.9,2.69,6.5,0); +INSERT INTO "area" VALUES('EPSG','1716','Nigeria - offshore deep water - west of 6°E','Nigeria - offshore beyond continental shelf west of 6°E.',1.92,6.14,2.66,6.0,0); +INSERT INTO "area" VALUES('EPSG','1717','Nigeria - offshore deep water','Nigeria - offshore beyond continental shelf.',1.92,6.14,2.66,7.82,0); +INSERT INTO "area" VALUES('EPSG','1718','Italy - west of 12°E','Italy - onshore and offshore - west of 12°E.',36.53,47.04,5.94,12.0,0); +INSERT INTO "area" VALUES('EPSG','1719','Italy - east of 12°E','Italy - onshore and offshore - east of 12°E including San Marino and Vatican City State.',34.76,47.1,12.0,18.99,0); +INSERT INTO "area" VALUES('EPSG','1720','USA - Michigan - SPCS - E','United States (USA) - Michigan - counties of Alcona; Alpena; Arenac; Bay; Cheboygan; Chippewa; Clinton; Crawford; Genesee; Gladwin; Gratiot; Hillsdale; Huron; Ingham; Iosco; Jackson; Lapeer; Lenawee; Livingston; Macomb; Midland; Monroe; Montmorency; Oakland; Ogemaw; Oscoda; Otsego; Presque Isle; Roscommon; Saginaw; Sanilac; Shiawassee; St Clair; Tuscola; Washtenaw; Wayne.',41.69,46.04,-84.87,-82.13,0); +INSERT INTO "area" VALUES('EPSG','1721','USA - Michigan - SPCS - old central','United States (USA) - Michigan - counties of Alger; Allegan; Antrim; Barry; Benzie; Berrien; Branch; Calhoun; Cass; Charlevoix; Clare; Delta; Eaton; Emmet; Grand Traverse; Ionia; Isabella; Kalamazoo; Kalkaska; Kent; Lake; Leelanau; Luce; Mackinac; Manistee; Mason; Mecosta; Missaukee; Montcalm; Muskegon; Newaygo; Oceana; Osceola; Ottawa; St Joseph; Schoolcraft; Van Buren; Wexford.',41.75,46.11,-87.61,-84.6,0); +INSERT INTO "area" VALUES('EPSG','1722','USA - Michigan - SPCS - W','United States (USA) - Michigan - counties of Alger; Baraga; Chippewa; Delta; Dickinson; Gogebic; Houghton; Iron; Keweenaw; Luce; Mackinac; Marquette; Menominee; Ontonagon; Schoolcraft.',NULL,NULL,NULL,NULL,1); +INSERT INTO "area" VALUES('EPSG','1723','USA - Michigan - SPCS - N','United States (USA) - Michigan north of approximately 45°45''N - counties of Alger; Baraga; Chippewa; Delta; Dickinson; Gogebic; Houghton; Iron; Keweenaw; Luce; Mackinac; Marquette; Menominee; Ontonagon; Schoolcraft.',45.08,48.32,-90.42,-83.44,0); +INSERT INTO "area" VALUES('EPSG','1724','USA - Michigan - SPCS - C','United States (USA) - Michigan - counties of Alcona; Alpena; Antrim; Arenac; Benzie; Charlevoix; Cheboygan; Clare; Crawford; Emmet; Gladwin; Grand Traverse; Iosco; Kalkaska; Lake; Leelanau; Manistee; Mason; Missaukee; Montmorency; Ogemaw; Osceola; Oscoda; Otsego; Presque Isle; Roscommon; Wexford.',43.8,45.92,-87.06,-82.27,0); +INSERT INTO "area" VALUES('EPSG','1725','USA - Michigan - SPCS - S','United States (USA) - Michigan - counties of Allegan; Barry; Bay; Berrien; Branch; Calhoun; Cass; Clinton; Eaton; Genesee; Gratiot; Hillsdale; Huron; Ingham; Ionia; Isabella; Jackson; Kalamazoo; Kent; Lapeer; Lenawee; Livingston; Macomb; Mecosta; Midland; Monroe; Montcalm; Muskegon; Newaygo; Oakland; Oceana; Ottawa; Saginaw; Sanilac; Shiawassee; St Clair; St Joseph; Tuscola; Van Buren; Washtenaw; Wayne.',41.69,44.22,-87.2,-82.13,0); +INSERT INTO "area" VALUES('EPSG','1726','Mozambique - offshore','Mozambique - offshore.',-27.71,-10.09,32.64,43.03,0); +INSERT INTO "area" VALUES('EPSG','1727','Suriname - offshore','Suriname - offshore.',5.34,9.35,-57.25,-52.66,0); +INSERT INTO "area" VALUES('EPSG','1728','Algeria - north of 34°39''N','Algeria - onshore north of 38.5 grads North (34°39''N).',34.64,37.14,-2.22,8.64,0); +INSERT INTO "area" VALUES('EPSG','1729','Algeria - 31°30''N to 34°39''N','Algeria - 35 grads to 38.5 grads North (31°30''N to 34°39''N).',31.49,34.66,-3.85,9.22,0); +INSERT INTO "area" VALUES('EPSG','1730','North America - NAVD88','North America: Canada - Alberta; British Columbia (BC); Manitoba; New Brunswick (NB); Newfoundland and Labrador; Northwest Territories (NWT); Nova Scotia (NS); Nunavut; Ontario; Prince Edward Island (PEI); Quebec; Saskatchewan; Yukon. United States (USA) - Alabama; Alaska; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming.',25.0,58.0,-168.0,-52.0,1); +INSERT INTO "area" VALUES('EPSG','1731','France - mainland north of 48.15°N','France mainland onshore north of 53.5 grads North (48°09''N).',48.14,51.14,-4.87,8.23,0); +INSERT INTO "area" VALUES('EPSG','1732','France - mainland 45.45°N to 48.15°N','France mainland onshore between 50.5 grads and 53.5 grads North (45°27''N to 48°09''N).',45.44,48.15,-4.8,7.63,0); +INSERT INTO "area" VALUES('EPSG','1733','France - mainland south of 45.45°N','France - mainland onshore south of 50.5 grads North (45°27''N).',42.33,45.45,-1.79,7.71,0); +INSERT INTO "area" VALUES('EPSG','1734','France - mainland 45.45°N to 48.15°N. Also all mainland.','France mainland onshore between 50.5 grads and 53.5 grads North (45°27''N to 48°09''N). Also used over all onshore mainland France.',42.33,51.14,-4.87,8.23,0); +INSERT INTO "area" VALUES('EPSG','1735','Algeria - west of 6°W','Algeria - west of 6°W (of Greenwich).',25.73,29.85,-8.67,-6.0,0); +INSERT INTO "area" VALUES('EPSG','1736','Algeria - 6°W to 0°W onshore','Algeria - onshore between 6°W and 0°W (of Greenwich).',21.82,35.96,-6.0,0.0,0); +INSERT INTO "area" VALUES('EPSG','1737','Algeria - 0°E to 6°E onshore','Algeria - onshore between 0°E and 6°E (of Greenwich).',18.97,36.97,0.0,6.01,0); +INSERT INTO "area" VALUES('EPSG','1738','Algeria - east of 6°E onshore','Algeria - onshore east of 6°E (of Greenwich).',19.6,37.14,6.0,11.99,0); +INSERT INTO "area" VALUES('EPSG','1739','Kuwait - west of 48°E onshore','Kuwait - onshore west of 48°E.',28.53,30.09,46.54,48.0,0); +INSERT INTO "area" VALUES('EPSG','1740','Kuwait - east of 48°E onshore','Kuwait - onshore east of 48°E.',28.54,30.04,48.0,48.48,0); +INSERT INTO "area" VALUES('EPSG','1741','Norway - zone I','Norway - west of 3°30''W of Oslo (7°13''22.5"E of Greenwich).',57.93,63.06,4.68,7.23,0); +INSERT INTO "area" VALUES('EPSG','1742','Norway - zone II','Norway - between 3°30''W and 1°10'' W of Oslo (7°13''22.5"E and 9°33''22.5"E of Greenwich).',57.95,63.87,7.22,9.56,0); +INSERT INTO "area" VALUES('EPSG','1743','Norway - zone III','Norway - between 1°10''W and 1°15''E of Oslo (9°33''22.5"E and 11°58''22.5"E of Greenwich).',58.84,65.76,9.55,11.98,0); +INSERT INTO "area" VALUES('EPSG','1744','Norway - zone IV','Norway - between 1°15''E and 4°20''E of Oslo (11°58''22.5"E and 15°03''22.5"E of Greenwich).',59.88,69.06,11.97,15.06,0); +INSERT INTO "area" VALUES('EPSG','1745','Norway - zone V','Norway - between 4°20''E and 8°10''E of Oslo (15°03''22.5"E and 18°53''22.5"E of Greenwich).',66.15,70.19,15.05,18.89,0); +INSERT INTO "area" VALUES('EPSG','1746','Norway - zone VI','Norway - between 8°10''E and 12°10''E of Oslo (18°53''22.5"E and 22°53''22.5"E of Greenwich).',68.33,70.81,18.88,22.89,0); +INSERT INTO "area" VALUES('EPSG','1747','Norway - zone VII','Norway - between 12°10''E and 16°15''E of Oslo (22°53''22.5"E and 26°58''22.5"E of Greenwich).',68.58,71.21,22.88,26.98,0); +INSERT INTO "area" VALUES('EPSG','1748','Norway - zone VIII','Norway - east of 16°15''E of Oslo (26°58''22.5"E of Greenwich).',69.02,71.17,26.97,31.22,0); +INSERT INTO "area" VALUES('EPSG','1749','Asia - Middle East - Qatar offshore and UAE west of 54°E','Qatar - offshore. United Arab Emirates (UAE) - Abu Dhabi - onshore and offshore west of 54°E.',22.76,27.05,50.55,54.01,0); +INSERT INTO "area" VALUES('EPSG','1750','UAE - east of 54°E','United Arab Emirates (UAE) onshore and offshore east of 54°E - Abu Dhabi; Dubai; Sharjah; Ajman; Fujairah; Ras Al Kaimah; Umm Al Qaiwain.',22.63,26.27,54.0,57.13,0); +INSERT INTO "area" VALUES('EPSG','1751','Peru - east of 73°W','Peru - east of 73°W, onshore.',-18.39,-2.14,-73.0,-68.67,0); +INSERT INTO "area" VALUES('EPSG','1752','Peru - 79°W to 73°W','Peru - between 79°W and 73°W, onshore.',-16.57,-0.03,-79.0,-73.0,0); +INSERT INTO "area" VALUES('EPSG','1753','Peru - west of 79°W','Peru - west of 79°W.',-8.32,-3.38,-81.41,-79.0,0); +INSERT INTO "area" VALUES('EPSG','1754','Brazil - Amazon cone shelf','Brazil - offshore shelf - Amazon cone.',-1.05,5.6,-51.64,-48.0,0); +INSERT INTO "area" VALUES('EPSG','1755','South America - 84°W to 78°W, S hemisphere and PSAD56 by country','South America (Ecuador and Peru) between 84°W and 78°W, southern hemisphere, onshore.',-10.53,0.0,-81.41,-78.0,0); +INSERT INTO "area" VALUES('EPSG','1756','South America - 78°W to 72°W, N hemisphere and PSAD56 by country','South America (Ecuador; Venezuela) between 78°W and 72°W, northern hemisphere, onshore.',0.0,11.62,-78.0,-71.99,0); +INSERT INTO "area" VALUES('EPSG','1757','South America - 78°W to 72°W, S hemisphere and PSAD56 by country','South America (Chile - north of 45°S; Ecuador; Peru) between 78°W and 72°W, southern hemisphere, onshore.',-45.0,0.0,-78.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','1758','South America - 72°W to 66°W, N hemisphere and PSAD56 by country','South America (Aruba; Bonaire; Curacao; Venezuela) between 72°W and 66°W, northern hemisphere, onshore.',0.73,12.68,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','1759','South America - 72°W to 66°W, S hemisphere and PSAD56 by country','South America (Bolivia; Chile - north of 45°S; Peru) between 72°W and 66°W, southern hemisphere, onshore.',-45.0,-2.14,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','1760','South America - 66°W to 60°W, N hemisphere and PSAD56 by country','South America (Guyana; Venezuela) onshore between 66°W and 60°W, northern hemisphere.',0.64,11.23,-66.0,-59.99,0); +INSERT INTO "area" VALUES('EPSG','1761','Bolivia - 66°W to 60°W','Bolivia between 66°W and 60°W.',-22.87,-9.67,-66.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','1762','South America - 60°W to 54°W, N hemisphere and PSAD56 by country','South America (Guyana) onshore between 60°W and 54°W, northern hemisphere.',1.18,8.58,-60.0,-56.47,0); +INSERT INTO "area" VALUES('EPSG','1763','Russia - west of 24°E onshore','Russian Federation - onshore west of 24°E - Kaliningrad.',54.32,55.32,19.57,22.87,0); +INSERT INTO "area" VALUES('EPSG','1764','Russia - 24°E to 30°E onshore','Russian Federation - onshore between 24°E and 30°E.',55.69,69.47,26.61,30.0,0); +INSERT INTO "area" VALUES('EPSG','1765','Russia - 30°E to 36°E onshore','Russian Federation - onshore between 30°E and 36°E.',50.34,70.02,30.0,36.0,0); +INSERT INTO "area" VALUES('EPSG','1766','Russia - 36°E to 42°E onshore','Russian Federation - onshore between 36°E and 42°E.',43.18,69.23,36.0,42.01,0); +INSERT INTO "area" VALUES('EPSG','1767','Russia - 42°E to 48°E onshore','Russian Federation - onshore between 42°E and 48°E.',41.19,80.91,42.0,48.0,0); +INSERT INTO "area" VALUES('EPSG','1768','Russia - 48°E to 54°E onshore','Russian Federation - onshore between 48°E and 54°E.',41.39,81.4,48.0,54.0,0); +INSERT INTO "area" VALUES('EPSG','1769','Russia - 54°E to 60°E onshore','Russian Federation - onshore between 54°E and 60°E.',50.47,81.91,54.0,60.0,0); +INSERT INTO "area" VALUES('EPSG','1770','Russia - 60°E to 66°E onshore','Russian Federation - onshore between 60°E and 66°E.',50.66,81.77,60.0,66.0,0); +INSERT INTO "area" VALUES('EPSG','1771','Russia - 66°E to 72°E onshore','Russian Federation - onshore between 66°E and 72°E .',54.1,77.07,66.0,72.0,0); +INSERT INTO "area" VALUES('EPSG','1772','Russia - 72°E to 78°E onshore','Russian Federation - onshore between 72°E and 78°E.',53.17,79.71,72.0,78.0,0); +INSERT INTO "area" VALUES('EPSG','1773','Russia - 78°E to 84°E onshore','Russian Federation - onshore between 78°E and 84°E.',50.69,81.03,78.0,84.0,0); +INSERT INTO "area" VALUES('EPSG','1774','Russia - 84°E to 90°E onshore','Russian Federation - onshore between 84°E and 90°E.',49.07,81.27,84.0,90.0,0); +INSERT INTO "area" VALUES('EPSG','1775','Russia - 90°E to 96°E onshore','Russian Federation - onshore between 90°E and 96°E.',49.89,81.35,90.0,96.0,0); +INSERT INTO "area" VALUES('EPSG','1776','Russia - 96°E to 102°E onshore','Russian Federation - onshore between 96°E and 102°E.',49.73,81.32,96.0,102.0,0); +INSERT INTO "area" VALUES('EPSG','1777','Russia - 102°E to 108°E onshore','Russian Federation - onshore between 102°E and 108°E.',49.64,79.48,102.0,108.0,0); +INSERT INTO "area" VALUES('EPSG','1778','Russia - 108°E to 114°E onshore','Russian Federation - onshore between 108°E and 114°E.',49.14,76.81,108.0,114.0,0); +INSERT INTO "area" VALUES('EPSG','1779','Russia - 114°E to 120°E onshore','Russian Federation - onshore between 114°E and 120°E.',49.51,75.96,114.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','1780','Russia - 120°E to 126°E onshore','Russian Federation - onshore between 120°E and 126°E.',51.51,74.0,120.0,126.0,0); +INSERT INTO "area" VALUES('EPSG','1781','Russia - 126°E to 132°E onshore','Russian Federation - onshore between 126°E and 132°E.',42.25,73.61,126.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','1782','Russia - 132°E to 138°E onshore','Russian Federation - onshore between 132°E and 138°E.',42.63,76.15,132.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','1783','Russia - 138°E to 144°E onshore','Russian Federation - onshore between 138°E and 144°E.',45.84,76.27,138.0,144.0,0); +INSERT INTO "area" VALUES('EPSG','1784','Russia - 144°E to 150°E onshore','Russian Federation - onshore between 144°E and 150°E.',43.6,76.82,144.0,150.0,0); +INSERT INTO "area" VALUES('EPSG','1785','Russia - 150°E to 156°E onshore','Russian Federation - onshore between 150°E and 156°E.',45.77,76.26,150.0,156.0,0); +INSERT INTO "area" VALUES('EPSG','1786','Russia - 156°E to 162°E onshore','Russian Federation - onshore between 156°E and 162°E.',50.27,77.2,156.0,162.0,0); +INSERT INTO "area" VALUES('EPSG','1787','Russia - 162°E to 168°E onshore','Russian Federation - onshore between 162°E and 168°E.',54.47,70.03,162.0,168.0,0); +INSERT INTO "area" VALUES('EPSG','1788','Russia - 168°E to 174°E onshore','Russian Federation - onshore between 168°E and 174°E.',54.45,70.19,168.0,174.0,0); +INSERT INTO "area" VALUES('EPSG','1789','Russia - 174°E to 180°E onshore','Russian Federation - onshore between 174°E and 180°E .',61.65,71.59,174.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','1790','Russia - 180° to 174°W onshore','Russian Federation - onshore between 180°E and 174°W.',64.35,71.65,-180.0,-174.0,0); +INSERT INTO "area" VALUES('EPSG','1791','Russia - east of 174°W onshore','Russian Federation - onshore east of 174°W.',64.2,67.18,-174.0,-168.97,0); +INSERT INTO "area" VALUES('EPSG','1792','Europe - 12°E to 18°E onshore and S-42(58) by country','Germany (former DDR) - onshore east of 12°E. Poland - onshore west of 18°E. Czech Republic, Hungary and Slovakia - west of 18°E.',45.78,54.89,12.0,18.0,0); +INSERT INTO "area" VALUES('EPSG','1793','Europe - FSU onshore 18°E to 24°E and S-42 by country','Belarus, Estonia, Latvia, Lithuania and Ukraine - onshore west of 24°E. Russian Federation - Kaliningrad onshore.',47.95,59.44,19.57,24.0,0); +INSERT INTO "area" VALUES('EPSG','1794','Europe - FSU onshore 24°E to 30°E and S-42 by country','Estonia; Latvia and Lithuania - onshore east of 24°E; Belarus, Moldova, Russian Federation and Ukraine - onshore 24°E to 30°E.',45.18,69.47,24.0,30.01,0); +INSERT INTO "area" VALUES('EPSG','1795','Europe - FSU onshore 30°E to 36°E','Belarus and Moldova - east of 30°E; Russian Federation and Ukraine - onshore 30°E to 36°E.',44.32,70.02,30.0,36.0,0); +INSERT INTO "area" VALUES('EPSG','1796','Europe - FSU onshore 36°E to 42°E','Georgia - onshore west of 36°E; Russian Federation - onshore 36°E to 42°E; Ukraine - onshore east of 36°E.',41.43,69.23,36.0,42.0,0); +INSERT INTO "area" VALUES('EPSG','1797','Europe - FSU onshore 42°E to 48°E','Armenia - west of 48°E; Azerbaijan - west of 48°E; Georgia - east of 42°E; Kazakhstan - west of 48°E; Russian Federation - onshore 42°E to 48°E.',38.84,80.91,42.0,48.01,0); +INSERT INTO "area" VALUES('EPSG','1798','Asia - FSU onshore 48°E to 54°E','Azerbaijan - east of 48°E; Kazakhstan - 48°E to 54°E; Russian Federation - 48°E to 54°E; Turkmenistan - west of 54°E. Includes Caspian Sea (considered a lake rather than offshore).',37.34,81.4,48.0,54.0,0); +INSERT INTO "area" VALUES('EPSG','1799','Asia - FSU onshore 54°E to 60°E','Kazakhstan; Russian Federation - onshore; Turkmenistan - 54°E to 60°E; Uzbekistan - west of 60°E.',37.05,81.91,54.0,60.0,0); +INSERT INTO "area" VALUES('EPSG','1800','Asia - FSU onshore 60°E to 66°E','Kazakhstan; Russian Federation - onshore; Uzbekistan - 60°E to 66°E; Turkmenistan - east of 60°E.',35.14,81.77,60.0,66.0,0); +INSERT INTO "area" VALUES('EPSG','1801','Asia - FSU onshore 66°E to 72°E','Kazakhstan, Russian Federation onshore and Uzbekistan - 66°E to 72°E; Kyrgyzstan and Tajikistan - west of 72°E.',36.67,77.07,66.0,72.0,0); +INSERT INTO "area" VALUES('EPSG','1802','Asia - FSU onshore 72°E to 78°E','Kazakhstan; Kyrgyzstan; Russian Federation onshore - 72°E to 78°E; Tajikistan and Uzbekistan - east of 72°E.',36.79,79.71,72.0,78.0,0); +INSERT INTO "area" VALUES('EPSG','1803','Asia - FSU onshore 78°E to 84°E','Kazakhstan and Russian Federation onshore - 78°E to 84°E; Kyrgyzstan - east of 78°E.',41.04,81.03,78.0,84.01,0); +INSERT INTO "area" VALUES('EPSG','1804','Asia - FSU onshore 84°E to 90°E','Kazakhstan - east of 84°E; Russian Federation - onshore 84°E to 90°E.',46.82,81.27,84.0,90.0,0); +INSERT INTO "area" VALUES('EPSG','1805','Europe - 6°E to 12°E and Pulkovo by country','Czech Republic and Germany (former DDR) - west of 12°E.',50.21,54.18,9.93,12.0,1); +INSERT INTO "area" VALUES('EPSG','1806','South America - UTM 17S and SAD69 by country','South America - between 84°W and 78°W; southern hemisphere.',NULL,NULL,NULL,NULL,1); +INSERT INTO "area" VALUES('EPSG','1807','South America - UTM 18N and SAD69 by country','South America - between 78°W and 72°W; northern hemisphere.',NULL,NULL,NULL,NULL,1); +INSERT INTO "area" VALUES('EPSG','1808','South America - UTM 18S and SAD69 by country','South America - between 78°W and 72°W; southern hemisphere.',NULL,NULL,NULL,NULL,1); +INSERT INTO "area" VALUES('EPSG','1809','South America - UTM 19N and SAD69 by country','South America - between 72°W and 66°W; northern hemisphere.',NULL,NULL,NULL,NULL,1); +INSERT INTO "area" VALUES('EPSG','1810','South America - UTM 19S and SAD69 by country','South America - between 72°W and 66°W; southern hemisphere.',NULL,NULL,NULL,NULL,1); +INSERT INTO "area" VALUES('EPSG','1811','South America - UTM 20N and SAD69 by country','South America - between 66°W and 60°W; northern hemisphere.',NULL,NULL,NULL,NULL,1); +INSERT INTO "area" VALUES('EPSG','1812','South America - UTM 20S and SAD69 by country','South America - between 66°W and 60°W; southern hemisphere.',NULL,NULL,NULL,NULL,1); +INSERT INTO "area" VALUES('EPSG','1813','South America - UTM 21N and SAD69','South America - between 60°W and 54°W; northern hemisphere.',NULL,NULL,NULL,NULL,1); +INSERT INTO "area" VALUES('EPSG','1814','South America - 60°W to 54°W, S hemisphere and SAD69 by country','Brazil - between 60°W and 54°W, northern and southern hemispheres. In rest of South America between 60°W and 54°W southern hemisphere, onshore.',-38.91,4.51,-60.0,-53.99,0); +INSERT INTO "area" VALUES('EPSG','1815','South America - 54°W to 48°W, N hemisphere and SAD69 by country','Brazil - offshore deep water - Amazon cone. In remainder of South America, between 54°W and 48°W, northern hemisphere onshore but excluding most of the area southeast of a line between approximately 2°N, 54°W and 4°N, 52°W.',1.68,5.81,-54.0,-46.65,0); +INSERT INTO "area" VALUES('EPSG','1816','South America - 54°W to 48°W, S hemisphere and SAD69 by country','Brazil - onshore and offshore northern and southern hemispheres between 54°W and 48°W. In remainder of South America - between 54°W and 48°W, southern hemisphere, onshore.',-35.71,7.04,-54.0,-47.99,0); +INSERT INTO "area" VALUES('EPSG','1817','Brazil - 48°W to 42°W','Brazil - between 48°W and 42°W.',-26.3,0.0,-48.0,-42.0,1); +INSERT INTO "area" VALUES('EPSG','1818','Brazil - 42°W to 36°W onshore','Brazil - between 42°W and 36°W, onshore.',-22.96,-2.68,-42.0,-36.0,0); +INSERT INTO "area" VALUES('EPSG','1819','Brazil - 36°W to 30°W','Brazil - between 36°W and 30°W.',-10.05,-5.15,-36.0,-30.0,1); +INSERT INTO "area" VALUES('EPSG','1820','Falkland Islands - onshore west of 60°W','Falkland Islands (Malvinas) - onshore west of 60°W.',-52.33,-50.96,-61.55,-59.99,0); +INSERT INTO "area" VALUES('EPSG','1821','Falkland Islands - onshore east of 60°W','Falkland Islands (Malvinas) - onshore east of 60°W.',-52.51,-51.13,-60.0,-57.6,0); +INSERT INTO "area" VALUES('EPSG','1822','Namibia - offshore','Namibia - offshore.',-30.64,-17.24,8.24,16.46,0); +INSERT INTO "area" VALUES('EPSG','1823','South America - 84°W to 78°W, N hemisphere and SIRGAS95 by country','South America between 84°W and 78°W, northern hemisphere, onshore and offshore.',0.9,15.51,-84.0,-78.0,0); +INSERT INTO "area" VALUES('EPSG','1824','South America - 84°W to 78°W, S hemisphere','South America between 84°W and 78°W, southern hemisphere, onshore and offshore.',-56.45,0.0,-84.0,-78.0,0); +INSERT INTO "area" VALUES('EPSG','1825','South America - 78°W to 72°W, N hemisphere','South America between 78°W and 72°W, northern hemisphere, onshore and offshore.',0.0,15.04,-78.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','1826','South America - 78°W to 72°W, S hemisphere and SIRGAS 1995 by country','South America between 78°W and 72°W, southern hemisphere, onshore and offshore.',-59.36,0.0,-78.0,-71.99,0); +INSERT INTO "area" VALUES('EPSG','1827','South America - 72°W to 66°W, N hemisphere','South America between 72°W and 66°W, northern hemisphere, onshore and offshore.',0.0,15.64,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','1828','South America - 72°W to 66°W, S hemisphere','South America between 72°W and 66°W, southern hemisphere, onshore and offshore.',-59.87,0.0,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','1829','South America - 66°W to 60°W, N hemisphere','South America between 66°W and 60°W, northern hemisphere, onshore and offshore.',0.0,16.75,-66.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','1830','South America - 66°W to 60°W, S hemisphere','South America between 66°W and 60°W, southern hemisphere, onshore and offshore.',-58.39,0.0,-66.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','1831','South America - 60°W to 54°W, N hemisphere','South America between 60°W and 54°W, northern hemisphere, onshore and offshore.',0.0,10.7,-60.0,-54.0,0); +INSERT INTO "area" VALUES('EPSG','1832','South America - 60°W to 54°W, S hemisphere','South America onshore and offshore, southern hemisphere between 60°W and 54°W.',-44.82,0.0,-60.0,-54.0,0); +INSERT INTO "area" VALUES('EPSG','1833','South America - 54°W to 48°W, N hemisphere','South America between 54°W and 48°W, northern hemisphere, onshore and offshore.',0.0,9.24,-54.0,-48.0,0); +INSERT INTO "area" VALUES('EPSG','1834','South America - 54°W to 48°W, S hemisphere','South America between 54°W and 48°W, southern hemisphere, onshore and offshore.',-39.95,0.0,-54.0,-48.0,0); +INSERT INTO "area" VALUES('EPSG','1835','South America - 48°W to 42°W','South America - between 48°W and 42°W, southern hemisphere, onshore and offshore.',-33.5,0.0,-48.0,-42.0,0); +INSERT INTO "area" VALUES('EPSG','1836','South America - 42°W to 36°W','South America - between 42°W and 36°W, southern hemisphere, onshore and offshore.',-26.35,0.0,-42.0,-36.0,0); +INSERT INTO "area" VALUES('EPSG','1837','South America - 36°W to 30°W','South America - between 36°W and 30°W, southern hemisphere, onshore and offshore.',-20.11,0.0,-36.0,-30.0,0); +INSERT INTO "area" VALUES('EPSG','1838','Namibia - west of 12°E','Namibia - onshore west of 12°E.',-18.53,-17.15,11.66,12.0,0); +INSERT INTO "area" VALUES('EPSG','1839','Namibia - 12°E to 14°E','Namibia - onshore between 12°E and 14°E.',-21.9,-16.95,12.0,14.01,0); +INSERT INTO "area" VALUES('EPSG','1840','Namibia - 14°E to 16°E','Namibia - onshore between 14°E and 16°E.',-28.3,-17.38,14.0,16.0,0); +INSERT INTO "area" VALUES('EPSG','1841','Namibia - 16°E to 18°E','Namibia - onshore between 16°E and 18°E.',-28.83,-17.38,15.99,18.01,0); +INSERT INTO "area" VALUES('EPSG','1842','Namibia - 18°E to 20°E','Namibia - between 18°E and 20°E.',-28.97,-17.38,18.0,20.0,0); +INSERT INTO "area" VALUES('EPSG','1843','Namibia - 20°E to 22°E','Namibia - between 20°E and 22°E.',-22.01,-17.85,19.99,22.0,0); +INSERT INTO "area" VALUES('EPSG','1844','Namibia - 22°E to 24°E','Namibia - between 22°E and 24°E.',-18.49,-17.52,21.99,24.0,0); +INSERT INTO "area" VALUES('EPSG','1845','Namibia - east of 24°E','Namibia - east of 24°E.',-18.18,-17.47,24.0,25.27,0); +INSERT INTO "area" VALUES('EPSG','1846','Sudan - south - west of 30°E','Sudan south - west of 30°E.',NULL,NULL,NULL,NULL,1); +INSERT INTO "area" VALUES('EPSG','1847','Sudan - south - east of 30°E','Sudan south - east of 30°E.',NULL,NULL,NULL,NULL,1); +INSERT INTO "area" VALUES('EPSG','1848','Madagascar - nearshore - west of 48°E','Madagascar - nearshore west of 48°E.',-26.59,-13.0,42.53,48.0,0); +INSERT INTO "area" VALUES('EPSG','1849','Madagascar - nearshore - east of 48°E','Madagascar - nearshore east of 48°E.',-24.21,-11.69,48.0,51.03,0); +INSERT INTO "area" VALUES('EPSG','1850','UAE - Abu Dhabi - onshore west of 54°E','United Arab Emirates (UAE) - Abu Dhabi onshore west of 54°E.',22.76,24.32,51.56,54.01,0); +INSERT INTO "area" VALUES('EPSG','1851','Malaysia - East Malaysia onshore','Malaysia - onshore East Malaysia (Sabah; Sarawak).',0.85,7.41,109.54,119.33,0); +INSERT INTO "area" VALUES('EPSG','1852','Asia - Brunei and East Malaysia - 108°E to 114°E','Brunei - offshore west of 114°E; Malaysia - East Malaysia (Sarawak) onshore and offshore west of 114°E).',0.85,7.37,109.31,114.0,0); +INSERT INTO "area" VALUES('EPSG','1853','Asia - Brunei and East Malaysia - 114°E to 120°E','Brunei - onshore and offshore east of 114°E; Malaysia - East Malaysia (Sabah, Sarawak) onshore and offshore east of 114°E).',1.43,7.67,114.0,119.61,0); +INSERT INTO "area" VALUES('EPSG','1854','Japan - zone I','Japan - onshore - Kyushu west of approximately 130°E - Nagasaki-ken; islands of Kagoshima-ken between 27°N and 32°N and between 128°18''E and 130°E (between 128°18''E and 30°13''E for Amami islands).',26.96,34.74,128.17,130.46,0); +INSERT INTO "area" VALUES('EPSG','1855','Japan - zone II','Japan - onshore - Kyushu east of approximately 130°E - Fukuoka-ken; Saga-ken; Kumamoto-ken; Oita-ken; Miyazaki-ken; Kagoshima-ken (except for area within Japan Plane Rectangular Coordinate System zone I).',30.18,33.99,129.76,132.05,0); +INSERT INTO "area" VALUES('EPSG','1856','Japan - zone III','Japan - onshore - Honshu west of approximately 133°15''E - Yamaguchi-ken; Shimane-ken; Hiroshima-ken.',33.72,36.38,130.81,133.49,0); +INSERT INTO "area" VALUES('EPSG','1857','Japan - zone IV','Japan - onshore - Shikoku - Kagawa-ken; Ehime-ken; Tokushima-ken; Kochi-ken.',32.69,34.45,131.95,134.81,0); +INSERT INTO "area" VALUES('EPSG','1858','Japan - zone V','Japan - onshore - Honshu between approximately 133°15''E and 135°10''E - Hyogo-ken; Tottori-ken; Okayama-ken.',34.13,35.71,133.13,135.47,0); +INSERT INTO "area" VALUES('EPSG','1859','Japan - zone VI','Japan - onshore - Honshu between approximately 135°10''E and 136°45''E - Kyoto-fu; Osaka-fu; Fukui-ken; Shiga-ken; Mie-ken; Nara-ken; Wakayama-ken.',33.4,36.33,134.86,136.99,0); +INSERT INTO "area" VALUES('EPSG','1860','Japan - zone VII','Japan - onshore - Honshu between approximately 136°15''E and 137°45''E - Ishikawa-ken; Toyama-ken; Gifu-ken; Aichi-ken.',34.51,37.58,136.22,137.84,0); +INSERT INTO "area" VALUES('EPSG','1861','Japan - zone VIII','Japan - onshore - Honshu between approximately 137°45''E and 139°E - Niigata-ken; Nagano-ken; Yamanashi-ken; Shizuoka-ken.',34.54,38.58,137.32,139.91,0); +INSERT INTO "area" VALUES('EPSG','1862','Japan - zone IX','Japan - onshore - Honshu - Tokyo-to. (Excludes offshore island areas of Tokyo-to covered by Japan Plane Rectangular Coordinate System zones XIV, XVIII and XIX).',29.31,37.98,138.4,141.11,0); +INSERT INTO "area" VALUES('EPSG','1863','Japan - zone X','Japan - onshore - Honshu north of 38°N approximately - Aomori-ken; Akita-ken; Yamagata-ken; Iwate-ken; Miyagi-ken.',37.73,41.58,139.49,142.14,0); +INSERT INTO "area" VALUES('EPSG','1864','Japan - zone XI','Japan - onshore - Hokkaido west of approximately 141°E - Otaru city; Hakodate city; Date city; Usu-gun and Abuta-gun of Iburi-shicho; Hiyama-shicho; Shiribeshi-shicho; Oshima-shicho.',41.34,43.42,139.34,141.46,0); +INSERT INTO "area" VALUES('EPSG','1865','Japan - zone XII','Japan - onshore - Hokkaido between approximately 141°E and 143°E - Sapporo city; Asahikawa city; Wakkanai city; Rumoi city; Bibai city; Yubari city; Iwamizawa city; Tomakomai city; Muroran city; Shibetsu city; Nayoro city; Ashibetsu city; Akabira city; Mikasa city; Takikawa city; Sunagawa city; Ebetsu city; Chitose city; Utashinai city; Fukagawa city; Monbetsu city; Furano city; Noboribetsu city; Eniwa city; Ishikari-shicho; Monbetsu-gun of Abashiri-shicho; Kamikawa-shicho; Soya-shicho; Hidaka-shicho; Iburi-shicho (except Usu-gun and Abuta-gun); Sorachi-shicho; Rumoi-shicho.',42.15,45.54,140.89,143.61,0); +INSERT INTO "area" VALUES('EPSG','1866','Japan - zone XIII','Japan - onshore - Hokkaido east of approximately 143°E - Kitami city; Obihiro city; Kushiro city; Abashiri city; Nemuro city; Nemuro-shicho; Kushiro-shicho; Abashiri-shicho (except Monbetsu-gun); Tokachi-shicho.',41.87,44.4,142.61,145.87,0); +INSERT INTO "area" VALUES('EPSG','1867','Japan - zone XIV','Japan - onshore - Tokyo-to south of 28°N and between 140°30''E and 143°E.',24.67,27.8,141.2,142.33,0); +INSERT INTO "area" VALUES('EPSG','1868','Japan - zone XV','Japan - onshore - Okinawa-ken between 126°E and 130°E.',26.02,26.91,126.63,128.4,0); +INSERT INTO "area" VALUES('EPSG','1869','Japan - zone XVI','Japan - onshore - Okinawa-ken west of 126°E.',23.98,24.94,122.83,125.51,0); +INSERT INTO "area" VALUES('EPSG','1870','Japan - zone XVII','Japan - onshore Okinawa-ken east of 130°E.',24.4,26.01,131.12,131.38,0); +INSERT INTO "area" VALUES('EPSG','1871','Japan - zone XVIII','Japan - onshore - Tokyo-to south of 28°N and west of 140°30''E.',20.37,20.48,136.02,136.16,0); +INSERT INTO "area" VALUES('EPSG','1872','Japan - Minamitori-shima (Marcus Island) - onshore','Japan - onshore - Tokyo-to south of 28°N and east of 143°E - Minamitori-shima (Marcus Island).',24.22,24.35,153.91,154.05,0); +INSERT INTO "area" VALUES('EPSG','1873','World - N hemisphere - 180°W to 174°W','Between 180°W and 174°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-180.0,-174.0,0); +INSERT INTO "area" VALUES('EPSG','1874','World - S hemisphere - 180°W to 174°W','Between 180°W to 174°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-180.0,-174.0,0); +INSERT INTO "area" VALUES('EPSG','1875','World - N hemisphere - 174°W to 168°W','Between 174°W and 168°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-174.0,-168.0,0); +INSERT INTO "area" VALUES('EPSG','1876','World - S hemisphere - 174°W to 168°W','Between 174°W and 168°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-174.0,-168.0,0); +INSERT INTO "area" VALUES('EPSG','1877','World - N hemisphere - 168°W to 162°W','Between 168°W and 162°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-168.0,-162.0,0); +INSERT INTO "area" VALUES('EPSG','1878','World - S hemisphere - 168°W to 162°W','Between 168°W and 162°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-168.0,-162.0,0); +INSERT INTO "area" VALUES('EPSG','1879','World - N hemisphere - 162°W to 156°W','Between 162°W and 156°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-162.0,-156.0,0); +INSERT INTO "area" VALUES('EPSG','1880','World - S hemisphere - 162°W to 156°W','Between 162°W and 156°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-162.0,-156.0,0); +INSERT INTO "area" VALUES('EPSG','1881','World - N hemisphere - 156°W to 150°W','Between 156°W and 150°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-156.0,-150.0,0); +INSERT INTO "area" VALUES('EPSG','1882','World - S hemisphere - 156°W to 150°W','Between 156°W and 150°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-156.0,-150.0,0); +INSERT INTO "area" VALUES('EPSG','1883','World - N hemisphere - 150°W to 144°W','Between 150°W and 144°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-150.0,-144.0,0); +INSERT INTO "area" VALUES('EPSG','1884','World - S hemisphere - 150°W to 144°W','Between 150°W and 144°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-150.0,-144.0,0); +INSERT INTO "area" VALUES('EPSG','1885','World - N hemisphere - 144°W to 138°W','Between 144°W and 138°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-144.0,-138.0,0); +INSERT INTO "area" VALUES('EPSG','1886','World - S hemisphere - 144°W to 138°W','Between 144°W and 138°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-144.0,-138.0,0); +INSERT INTO "area" VALUES('EPSG','1887','World - N hemisphere - 138°W to 132°W','Between 138°W and 132°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-138.0,-132.0,0); +INSERT INTO "area" VALUES('EPSG','1888','World - S hemisphere - 138°W to 132°W','Between 138°W and 132°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-138.0,-132.0,0); +INSERT INTO "area" VALUES('EPSG','1889','World - N hemisphere - 132°W to 126°W','Between 132°W and 126°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-132.0,-126.0,0); +INSERT INTO "area" VALUES('EPSG','1890','World - S hemisphere - 132°W to 126°W','Between 132°W and 126°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-132.0,-126.0,0); +INSERT INTO "area" VALUES('EPSG','1891','World - N hemisphere - 126°W to 120°W','Between 126°W and 120°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-126.0,-120.0,0); +INSERT INTO "area" VALUES('EPSG','1892','World - S hemisphere - 126°W to 120°W','Between 126°W and 120°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-126.0,-120.0,0); +INSERT INTO "area" VALUES('EPSG','1893','World - N hemisphere - 120°W to 114°W','Between 120°W and 114°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-120.0,-114.0,0); +INSERT INTO "area" VALUES('EPSG','1894','World - S hemisphere - 120°W to 114°W','Between 120°W and 114°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-120.0,-114.0,0); +INSERT INTO "area" VALUES('EPSG','1895','World - N hemisphere - 114°W to 108°W','Between 114°W and 108°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-114.0,-108.0,0); +INSERT INTO "area" VALUES('EPSG','1896','World - S hemisphere - 114°W to 108°W','Between 114°W and 108°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-114.0,-108.0,0); +INSERT INTO "area" VALUES('EPSG','1897','World - N hemisphere - 108°W to 102°W','Between 108°W and 102°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-108.0,-102.0,0); +INSERT INTO "area" VALUES('EPSG','1898','World - S hemisphere - 108°W to 102°W','Between 108°W and 102°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-108.0,-102.0,0); +INSERT INTO "area" VALUES('EPSG','1899','World - N hemisphere - 102°W to 96°W','Between 102°W and 96°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-102.0,-96.0,0); +INSERT INTO "area" VALUES('EPSG','1900','World - S hemisphere - 102°W to 96°W','Between 102°W and 96°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-102.0,-96.0,0); +INSERT INTO "area" VALUES('EPSG','1901','World - N hemisphere - 96°W to 90°W','Between 96°W and 90°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-96.0,-90.0,0); +INSERT INTO "area" VALUES('EPSG','1902','World - S hemisphere - 96°W to 90°W','Between 96°W and 90°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-96.0,-90.0,0); +INSERT INTO "area" VALUES('EPSG','1903','World - N hemisphere - 90°W to 84°W','Between 90°W and 84°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-90.0,-84.0,0); +INSERT INTO "area" VALUES('EPSG','1904','World - S hemisphere - 90°W to 84°W','Between 90°W and 84°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-90.0,-84.0,0); +INSERT INTO "area" VALUES('EPSG','1905','World - N hemisphere - 84°W to 78°W','Between 84°W and 78°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-84.0,-78.0,0); +INSERT INTO "area" VALUES('EPSG','1906','World - S hemisphere - 84°W to 78°W','Between 84°W and 78°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-84.0,-78.0,0); +INSERT INTO "area" VALUES('EPSG','1907','World - N hemisphere - 78°W to 72°W','Between 78°W and 72°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-78.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','1908','World - S hemisphere - 78°W to 72°W','Between 78°W and 72°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-78.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','1909','World - N hemisphere - 72°W to 66°W','Between 72°W and 66°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','1910','World - S hemisphere - 72°W to 66°W','Between 72°W and 66°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','1911','World - N hemisphere - 66°W to 60°W','Between 66°W and 60°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-66.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','1912','World - S hemisphere - 66°W to 60°W','Between 66°W and 60°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-66.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','1913','World - N hemisphere - 60°W to 54°W','Between 60°W and 54°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-60.0,-54.0,0); +INSERT INTO "area" VALUES('EPSG','1914','World - S hemisphere - 60°W to 54°W','Between 60°W and 54°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-60.0,-54.0,0); +INSERT INTO "area" VALUES('EPSG','1915','World - N hemisphere - 54°W to 48°W','Between 54°W and 48°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-54.0,-48.0,0); +INSERT INTO "area" VALUES('EPSG','1916','World - S hemisphere - 54°W to 48°W','Between 54°W and 48°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-54.0,-48.0,0); +INSERT INTO "area" VALUES('EPSG','1917','World - N hemisphere - 48°W to 42°W','Between 48°W and 42°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-48.0,-42.0,0); +INSERT INTO "area" VALUES('EPSG','1918','World - S hemisphere - 48°W to 42°W','Between 48°W and 42°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-48.0,-42.0,0); +INSERT INTO "area" VALUES('EPSG','1919','World - N hemisphere - 42°W to 36°W','Between 42°W and 36°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-42.0,-36.0,0); +INSERT INTO "area" VALUES('EPSG','1920','World - S hemisphere - 42°W to 36°W','Between 42°W and 36°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-42.0,-36.0,0); +INSERT INTO "area" VALUES('EPSG','1921','World - N hemisphere - 36°W to 30°W','Between 36°W and 30°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-36.0,-30.0,0); +INSERT INTO "area" VALUES('EPSG','1922','World - S hemisphere - 36°W to 30°W','Between 36°W and 30°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-36.0,-30.0,0); +INSERT INTO "area" VALUES('EPSG','1923','World - N hemisphere - 30°W to 24°W','Between 30°W and 24°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-30.0,-24.0,0); +INSERT INTO "area" VALUES('EPSG','1924','World - S hemisphere - 30°W to 24°W','Between 30°W and 24°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-30.0,-24.0,0); +INSERT INTO "area" VALUES('EPSG','1925','World - N hemisphere - 24°W to 18°W','Between 24°W and 18°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-24.0,-18.0,0); +INSERT INTO "area" VALUES('EPSG','1926','World - S hemisphere - 24°W to 18°W','Between 24°W and 18°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-24.0,-18.0,0); +INSERT INTO "area" VALUES('EPSG','1927','World - N hemisphere - 18°W to 12°W','Between 18°W and 12°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-18.0,-12.0,0); +INSERT INTO "area" VALUES('EPSG','1928','World - S hemisphere - 18°W to 12°W','Between 18°W and 12°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-18.0,-12.0,0); +INSERT INTO "area" VALUES('EPSG','1929','World - N hemisphere - 12°W to 6°W','Between 12°W and 6°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-12.0,-6.0,0); +INSERT INTO "area" VALUES('EPSG','1930','World - S hemisphere - 12°W to 6°W','Between 12°W and 6°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-12.0,-6.0,0); +INSERT INTO "area" VALUES('EPSG','1931','World - N hemisphere - 6°W to 0°W','Between 6°W and 0°W, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-6.0,0.0,0); +INSERT INTO "area" VALUES('EPSG','1932','World - S hemisphere - 6°W to 0°W','Between 6°W and 0°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-6.0,0.0,0); +INSERT INTO "area" VALUES('EPSG','1933','World - N hemisphere - 0°E to 6°E','Between 0°E and 6°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,0.0,6.0,0); +INSERT INTO "area" VALUES('EPSG','1934','World - S hemisphere - 0°E to 6°E','Between 0°E and 6°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,0.0,6.0,0); +INSERT INTO "area" VALUES('EPSG','1935','World - N hemisphere - 6°E to 12°E','Between 6°E and 12°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,6.0,12.0,0); +INSERT INTO "area" VALUES('EPSG','1936','World - S hemisphere - 6°E to 12°E','Between 6°E and 12°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,6.0,12.0,0); +INSERT INTO "area" VALUES('EPSG','1937','World - N hemisphere - 12°E to 18°E','Between 12°E and 18°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,12.0,18.0,0); +INSERT INTO "area" VALUES('EPSG','1938','World - S hemisphere - 12°E to 18°E','Between 12°E and 18°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,12.0,18.0,0); +INSERT INTO "area" VALUES('EPSG','1939','World - N hemisphere - 18°E to 24°E','Between 18°E and 24°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,18.0,24.0,0); +INSERT INTO "area" VALUES('EPSG','1940','World - S hemisphere - 18°E to 24°E','Between 18°E and 24°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,18.0,24.0,0); +INSERT INTO "area" VALUES('EPSG','1941','World - N hemisphere - 24°E to 30°E','Between 24°E and 30°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,24.0,30.0,0); +INSERT INTO "area" VALUES('EPSG','1942','World - S hemisphere - 24°E to 30°E','Between 24°E and 30°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,24.0,30.0,0); +INSERT INTO "area" VALUES('EPSG','1943','World - N hemisphere - 30°E to 36°E','Between 30°E and 36°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,30.0,36.0,0); +INSERT INTO "area" VALUES('EPSG','1944','World - S hemisphere - 30°E to 36°E','Between 30°E and 36°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,30.0,36.0,0); +INSERT INTO "area" VALUES('EPSG','1945','World - N hemisphere - 36°E to 42°E','Between 36°E and 42°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,36.0,42.0,0); +INSERT INTO "area" VALUES('EPSG','1946','World - S hemisphere - 36°E to 42°E','Between 36°E and 42°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,36.0,42.0,0); +INSERT INTO "area" VALUES('EPSG','1947','World - N hemisphere - 42°E to 48°E','Between 42°E and 48°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,42.0,48.0,0); +INSERT INTO "area" VALUES('EPSG','1948','World - S hemisphere - 42°E to 48°E','Between 42°E and 48°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,42.0,48.0,0); +INSERT INTO "area" VALUES('EPSG','1949','World - N hemisphere - 48°E to 54°E','Between 48°E and 54°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,48.0,54.0,0); +INSERT INTO "area" VALUES('EPSG','1950','World - S hemisphere - 48°E to 54°E','Between 48°E and 54°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,48.0,54.0,0); +INSERT INTO "area" VALUES('EPSG','1951','World - N hemisphere - 54°E to 60°E','Between 54°E and 60°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,54.0,60.0,0); +INSERT INTO "area" VALUES('EPSG','1952','World - S hemisphere - 54°E to 60°E','Between 54°E and 60°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,54.0,60.0,0); +INSERT INTO "area" VALUES('EPSG','1953','World - N hemisphere - 60°E to 66°E','Between 60°E and 66°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,60.0,66.0,0); +INSERT INTO "area" VALUES('EPSG','1954','World - S hemisphere - 60°E to 66°E','Between 60°E and 66°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,60.0,66.0,0); +INSERT INTO "area" VALUES('EPSG','1955','World - N hemisphere - 66°E to 72°E','Between 66°E and 72°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,66.0,72.0,0); +INSERT INTO "area" VALUES('EPSG','1956','World - S hemisphere - 66°E to 72°E','Between 66°E and 72°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,66.0,72.0,0); +INSERT INTO "area" VALUES('EPSG','1957','World - N hemisphere - 72°E to 78°E','Between 72°E and 78°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,72.0,78.0,0); +INSERT INTO "area" VALUES('EPSG','1958','World - S hemisphere - 72°E to 78°E','Between 72°E and 78°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,72.0,78.0,0); +INSERT INTO "area" VALUES('EPSG','1959','World - N hemisphere - 78°E to 84°E','Between 78°E and 84°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,78.0,84.0,0); +INSERT INTO "area" VALUES('EPSG','1960','World - S hemisphere - 78°E to 84°E','Between 78°E and 84°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,78.0,84.0,0); +INSERT INTO "area" VALUES('EPSG','1961','World - N hemisphere - 84°E to 90°E','Between 84°E and 90°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,84.0,90.0,0); +INSERT INTO "area" VALUES('EPSG','1962','World - S hemisphere - 84°E to 90°E','Between 84°E and 90°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,84.0,90.0,0); +INSERT INTO "area" VALUES('EPSG','1963','World - N hemisphere - 90°E to 96°E','Between 90°E and 96°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,90.0,96.0,0); +INSERT INTO "area" VALUES('EPSG','1964','World - S hemisphere - 90°E to 96°E','Between 90°E and 96°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,90.0,96.0,0); +INSERT INTO "area" VALUES('EPSG','1965','World - N hemisphere - 96°E to 102°E','Between 96°E and 102°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,96.0,102.0,0); +INSERT INTO "area" VALUES('EPSG','1966','World - S hemisphere - 96°E to 102°E','Between 96°E and 102°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,96.0,102.0,0); +INSERT INTO "area" VALUES('EPSG','1967','World - N hemisphere - 102°E to 108°E','Between 102°E and 108°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,102.0,108.0,0); +INSERT INTO "area" VALUES('EPSG','1968','World - S hemisphere - 102°E to 108°E','Between 102°E and 108°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,102.0,108.0,0); +INSERT INTO "area" VALUES('EPSG','1969','World - N hemisphere - 108°E to 114°E','Between 108°E and 114°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,108.0,114.0,0); +INSERT INTO "area" VALUES('EPSG','1970','World - S hemisphere - 108°E to 114°E','Between 108°E and 114°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,108.0,114.0,0); +INSERT INTO "area" VALUES('EPSG','1971','World - N hemisphere - 114°E to 120°E','Between 114°E and 120°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,114.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','1972','World - S hemisphere - 114°E to 120°E','Between 114°E and 120°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,114.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','1973','World - N hemisphere - 120°E to 126°E','Between 120°E and 126°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,120.0,126.0,0); +INSERT INTO "area" VALUES('EPSG','1974','World - S hemisphere - 120°E to 126°E','Between 120°E and 126°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,120.0,126.0,0); +INSERT INTO "area" VALUES('EPSG','1975','World - N hemisphere - 126°E to 132°E','Between 126°E and 132°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,126.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','1976','World - S hemisphere - 126°E to 132°E','Between 126°E and 132°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,126.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','1977','World - N hemisphere - 132°E to 138°E','Between 132°E and 138°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,132.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','1978','World - S hemisphere - 132°E to 138°E','Between 132°E and 138°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,132.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','1979','World - N hemisphere - 138°E to 144°E','Between 138°E and 144°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,138.0,144.0,0); +INSERT INTO "area" VALUES('EPSG','1980','World - S hemisphere - 138°E to 144°E','Between 138°E and 144°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,138.0,144.0,0); +INSERT INTO "area" VALUES('EPSG','1981','World - N hemisphere - 144°E to 150°E','Between 144°E and 150°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,144.0,150.0,0); +INSERT INTO "area" VALUES('EPSG','1982','World - S hemisphere - 144°E to 150°E','Between 144°E and 150°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,144.0,150.0,0); +INSERT INTO "area" VALUES('EPSG','1983','World - N hemisphere - 150°E to 156°E','Between 150°E and 156°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,150.0,156.0,0); +INSERT INTO "area" VALUES('EPSG','1984','World - S hemisphere - 150°E to 156°E','Between 150°E and 156°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,150.0,156.0,0); +INSERT INTO "area" VALUES('EPSG','1985','World - N hemisphere - 156°E to 162°E','Between 156°E and 162°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,156.0,162.0,0); +INSERT INTO "area" VALUES('EPSG','1986','World - S hemisphere - 156°E to 162°E','Between 156°E and 162°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,156.0,162.0,0); +INSERT INTO "area" VALUES('EPSG','1987','World - N hemisphere - 162°E to 168°E','Between 162°E and 168°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,162.0,168.0,0); +INSERT INTO "area" VALUES('EPSG','1988','World - S hemisphere - 162°E to 168°E','Between 162°E and 168°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,162.0,168.0,0); +INSERT INTO "area" VALUES('EPSG','1989','World - N hemisphere - 168°E to 174°E','Between 168°E and 174°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,168.0,174.0,0); +INSERT INTO "area" VALUES('EPSG','1990','World - S hemisphere - 168°E to 174°E','Between 168°E and 174°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,168.0,174.0,0); +INSERT INTO "area" VALUES('EPSG','1991','World - N hemisphere - 174°E to 180°E','Between 174°E and 180°E, northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,174.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','1992','World - S hemisphere - 174°E to 180°E','Between 174°E and 180°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,174.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','1993','World - N hemisphere - 102°E to 108°E - by country and WGS 72BE','Between 102°E and 108°E, northern hemisphere between equator and 84°N, onshore and offshore. Vietnam - offshore.',0.0,84.0,102.0,108.0,0); +INSERT INTO "area" VALUES('EPSG','1994','World - N hemisphere - 108°E to 114°E - by country and WGS 72BE','Between 108°E and 114°E, northern hemisphere between equator and 84°N, onshore and offshore. Vietnam - offshore.',0.0,84.0,108.0,114.0,0); +INSERT INTO "area" VALUES('EPSG','1995','World - S hemisphere - 108°E to 114°E - by country and WGS 72BE','Between 108°E and 114°E, southern hemisphere between 80°S and equator, onshore and offshore. Indonesia - offshore.',-80.0,0.0,108.0,114.0,0); +INSERT INTO "area" VALUES('EPSG','1996','World - N hemisphere - north of 60°N','Northern hemisphere - north of 60°N onshore and offshore, including Arctic.',60.0,90.0,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','1997','World - S hemisphere - south of 60°S','Southern hemisphere - south of 60°S onshore and offshore - Antarctica.',-90.0,-60.0,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','1998','World - N hemisphere - 0°N to 84°N','Northern hemisphere between equator and 84°N, onshore and offshore.',0.0,84.0,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','1999','World - S hemisphere - 0°N to 80°S','Southern hemisphere between equator and 80°S, onshore and offshore.',-80.0,0.0,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','2000','World - N hemisphere - 180°W to 174°W - by country','Between 180°W and 174°W, northern hemisphere between equator and 84°N, onshore and offshore. Russian Federation; United States (USA) - Alaska (AK).',0.0,84.0,-180.0,-174.0,0); +INSERT INTO "area" VALUES('EPSG','2001','World - S hemisphere - 180°W to 174°W - by country','Between 180°W and 174°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-180.0,-174.0,0); +INSERT INTO "area" VALUES('EPSG','2002','World - N hemisphere - 174°W to 168°W - by country','Between 174°W and 168°W, northern hemisphere between equator and 84°N, onshore and offshore. Russian Federation; United States (USA) - Alaska (AK).',0.0,84.0,-174.0,-168.0,0); +INSERT INTO "area" VALUES('EPSG','2003','World - S hemisphere - 174°W to 168°W - by country','Between 174°W and 168°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-174.0,-168.0,0); +INSERT INTO "area" VALUES('EPSG','2004','World - N hemisphere - 168°W to 162°W - by country','Between 168°W and 162°W, northern hemisphere between equator and 84°N, onshore and offshore. United States (USA) - Alaska (AK).',0.0,84.0,-168.0,-162.0,0); +INSERT INTO "area" VALUES('EPSG','2005','World - S hemisphere - 168°W to 162°W - by country','Between 168°W and 162°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-168.0,-162.0,0); +INSERT INTO "area" VALUES('EPSG','2006','World - N hemisphere - 162°W to 156°W - by country','Between 162°W and 156°W, northern hemisphere between equator and 84°N, onshore and offshore. United States (USA) - Alaska (AK).',0.0,84.0,-162.0,-156.0,0); +INSERT INTO "area" VALUES('EPSG','2007','World - S hemisphere - 162°W to 156°W - by country','Between 162°W and 156°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-162.0,-156.0,0); +INSERT INTO "area" VALUES('EPSG','2008','World - N hemisphere - 156°W to 150°W - by country','Between 156°W and 150°W, northern hemisphere between equator and 84°N, onshore and offshore. United States (USA) - Alaska (AK).',0.0,84.0,-156.0,-150.0,0); +INSERT INTO "area" VALUES('EPSG','2009','World - S hemisphere - 156°W to 150°W - by country','Between 156°W and 150°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-156.0,-150.0,0); +INSERT INTO "area" VALUES('EPSG','2010','World - N hemisphere - 150°W to 144°W - by country','Between 150°W and 144°W, northern hemisphere between equator and 84°N, onshore and offshore. United States (USA) - Alaska (AK).',0.0,84.0,-150.0,-144.0,0); +INSERT INTO "area" VALUES('EPSG','2011','World - S hemisphere - 150°W to 144°W - by country','Between 150°W and 144°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-150.0,-144.0,0); +INSERT INTO "area" VALUES('EPSG','2012','World - N hemisphere - 144°W to 138°W - by country','Between 144°W and 138°W, northern hemisphere between equator and 84°N, onshore and offshore. Canada - British Columbia (BC); Yukon. United States (USA) - Alaska (AK).',0.0,84.0,-144.0,-138.0,0); +INSERT INTO "area" VALUES('EPSG','2013','World - S hemisphere - 144°W to 138°W - by country','Between 144°W and 138°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-144.0,-138.0,0); +INSERT INTO "area" VALUES('EPSG','2014','World - N hemisphere - 138°W to 132°W - by country','Between 138°W and 132°W, northern hemisphere between equator and 84°N, onshore and offshore. Canada - British Columbia (BC); Northwest Territiories (NWT); Yukon. United States (USA) - Alaska (AK).',0.0,84.0,-138.0,-132.0,0); +INSERT INTO "area" VALUES('EPSG','2015','World - S hemisphere - 138°W to 132°W - by country','Between 138°W and 132°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-138.0,-132.0,0); +INSERT INTO "area" VALUES('EPSG','2016','World - N hemisphere - 132°W to 126°W - by country','Between 132°W and 126°W, northern hemisphere between equator and 84°N, onshore and offshore. Canada - British Columbia (BC); NorthW Territories (NWT); Yukon. United States (USA) - Alaska (AK).',0.0,84.0,-132.0,-126.0,0); +INSERT INTO "area" VALUES('EPSG','2017','World - S hemisphere - 132°W to 126°W - by country','Between 132°W and 126°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-132.0,-126.0,0); +INSERT INTO "area" VALUES('EPSG','2018','World - N hemisphere - 126°W to 120°W - by country','Between 126°W and 120°W, northern hemisphere between equator and 84°N, onshore and offshore. Canada - British Columbia (BC); Northwest Territories (NWT); Nunavut; Yukon. United States (USA) - Alaska (AK).',0.0,84.0,-126.0,-120.0,0); +INSERT INTO "area" VALUES('EPSG','2019','World - S hemisphere - 126°W to 120°W - by country','Between 126°W and 120°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-126.0,-120.0,0); +INSERT INTO "area" VALUES('EPSG','2020','World - N hemisphere - 120°W to 114°W - by country','Between 120°W and 114°W, northern hemisphere between equator and 84°N, onshore and offshore. Canada - Alberta; British Columbia (BC); Northwest Territories (NWT); Nunavut. Mexico. United States (USA).',0.0,84.0,-120.0,-114.0,0); +INSERT INTO "area" VALUES('EPSG','2021','World - S hemisphere - 120°W to 114°W - by country','Between 120°W and 114°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-120.0,-114.0,0); +INSERT INTO "area" VALUES('EPSG','2022','World - N hemisphere - 114°W to 108°W - by country','Between 114°W and 108°W, northern hemisphere between equator and 84°N, onshore and offshore. Canada - Alberta; Northwest Territories (NWT); Nunavut; Saskatchewan. Mexico. United States (USA).',0.0,84.0,-114.0,-108.0,0); +INSERT INTO "area" VALUES('EPSG','2023','World - S hemisphere - 114°W to 108°W - by country','Between 114°W and 108°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-114.0,-108.0,0); +INSERT INTO "area" VALUES('EPSG','2024','World - N hemisphere - 108°W to 102°W - by country','Between 108°W and 102°W, northern hemisphere between equator and 84°N, onshore and offshore. Canada - Northwest Territories (NWT); Nunavut; Saskatchewan. Mexico. United States (USA).',0.0,84.0,-108.0,-102.0,0); +INSERT INTO "area" VALUES('EPSG','2025','World - S hemisphere - 108°W to 102°W - by country','Between 108°W and 102°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-108.0,-102.0,0); +INSERT INTO "area" VALUES('EPSG','2026','World - N hemisphere - 102°W to 96°W - by country','Between 102°W and 96°W, northern hemisphere between equator and 84°N, onshore and offshore. Canada - Manitoba; Nunavut; Saskatchewan. Mexico. United States (USA).',0.0,84.0,-102.0,-96.0,0); +INSERT INTO "area" VALUES('EPSG','2027','World - S hemisphere - 102°W to 96°W - by country','Between 102°W and 96°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-102.0,-96.0,0); +INSERT INTO "area" VALUES('EPSG','2028','World - N hemisphere - 96°W to 90°W - by country','Between 96°W and 90°W, northern hemisphere between equator and 84°N, onshore and offshore. Canada - Manitoba; Nunavut; Ontario. Ecuador -Galapagos. Guatemala. Mexico. United States (USA).',0.0,84.0,-96.0,-90.0,0); +INSERT INTO "area" VALUES('EPSG','2029','World - S hemisphere - 96°W to 90°W - by country','Between 96°W and 90°W, southern hemisphere between 80°S and equator, onshore and offshore. Ecuador - Galapagos.',-80.0,0.0,-96.0,-90.0,0); +INSERT INTO "area" VALUES('EPSG','2030','World - N hemisphere - 90°W to 84°W - by country','Between 90°W and 84°W, northern hemisphere between equator and 84°N, onshore and offshore. Belize. Canada - Manitoba; Nunavut; Ontario. Costa Rica. Cuba. Ecuador - Galapagos. El Salvador. Guatemala. Honduras. Mexico. Nicaragua. United States (USA).',0.0,84.0,-90.0,-84.0,0); +INSERT INTO "area" VALUES('EPSG','2031','World - S hemisphere - 90°W to 84°W - by country','Between 90°W and 84°W, southern hemisphere between 80°S and equator, onshore and offshore. Ecuador - Galapagos.',-80.0,0.0,-90.0,-84.0,0); +INSERT INTO "area" VALUES('EPSG','2032','World - N hemisphere - 84°W to 78°W - by country','Between 84°W and 78°W, northern hemisphere between equator and 84°N, onshore and offshore. Bahamas. Ecuador - north of equator. Canada - Nunavut; Ontario; Quebec. Cayman Islands. Colombia. Costa Rica. Cuba. Jamaica. Nicaragua. Panama. United States (USA).',0.0,84.0,-84.0,-78.0,0); +INSERT INTO "area" VALUES('EPSG','2033','World - S hemisphere - 84°W to 78°W - by country','Between 84°W and 78°W, southern hemisphere between 80°S and equator, onshore and offshore. Ecuador. Peru.',-80.0,0.0,-84.0,-78.0,0); +INSERT INTO "area" VALUES('EPSG','2034','World - N hemisphere - 78°W to 72°W - by country','Between 78°W and 72°W, northern hemisphere between equator and 84°N, onshore and offshore. Bahamas. Canada - Nunavut; Ontario; Quebec. Colombia. Cuba. Ecuador. Greenland. Haiti. Jamica. Panama. Turks and Caicos Islands. United States (USA). Venezuela.',0.0,84.0,-78.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','2035','World - S hemisphere - 78°W to 72°W - by country','Between 78°W and 72°W, southern hemisphere between 80°S and equator, onshore and offshore. Argentina. Brazil. Chile. Colombia. Ecuador. Peru.',-80.0,0.0,-78.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','2036','World - N hemisphere - 72°W to 66°W - by country','Between 72°W and 66°W, northern hemisphere between equator and 84°N, onshore and offshore. Aruba. Bahamas. Brazil. Canada - New Brunswick (NB); Labrador; Nunavut; Nova Scotia (NS); Quebec. Colombia. Dominican Republic. Greenland. Netherlands Antilles. Puerto Rico. Turks and Caicos Islands. United States. Venezuela.',0.0,84.0,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','2037','World - S hemisphere - 72°W to 66°W - by country','Between 72°W and 66°W, southern hemisphere between 80°S and equator, onshore and offshore. Argentina. Bolivia. Brazil. Chile. Colombia. Peru.',-80.0,0.0,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','2038','World - N hemisphere - 66°W to 60°W - by country','Between 66°W and 60°W, northern hemisphere between equator and 84°N, onshore and offshore. Anguilla. Antigua and Barbuda. Bermuda. Brazil. British Virgin Islands. Canada - New Brunswick; Labrador; Nova Scotia; Nunavut; Prince Edward Island; Quebec. Dominica. Greenland. Grenada. Guadeloupe. Guyana. Martinique. Montserrat. Puerto Rico. St Kitts and Nevis. St Lucia. St Vncent and the Grenadines. Trinidad and Tobago. Venezuela. US Virgin Islands.',0.0,84.0,-66.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','2039','World - S hemisphere - 66°W to 60°W - by country','Between 66°W and 60°W, southern hemisphere between 80°S and equator, onshore and offshore. Argentina. Bolivia. Brazil. Falkland Islands (Malvinas). Paraguay.',-80.0,0.0,-66.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','2040','World - N hemisphere - 60°W to 54°W - by country','Between 60°W and 54°W, northern hemisphere between equator and 84°N, onshore and offshore. Barbados. Brazil. Canada - Newfoundland and Labrador, Quebec. French Guiana. Greenland. Guyana. St Pierre and Miquelon. Suriname.',0.0,84.0,-60.0,-54.0,0); +INSERT INTO "area" VALUES('EPSG','2041','World - S hemisphere - 60°W to 54°W - by country','Between 60°W and 54°W, southern hemisphere between 80°S and equator, onshore and offshore. Argentina. Bolivia. Brazil. Falkland Islands (Malvinas). Paraguay. Uruguay.',-80.0,0.0,-60.0,-54.0,0); +INSERT INTO "area" VALUES('EPSG','2042','World - N hemisphere - 54°W to 48°W - by country','Between 54°W and 48°W, northern hemisphere between equator and 84°N, onshore and offshore. Brazil. Canada - Newfoundland. French Guiana. Greenland.',0.0,84.0,-54.0,-48.0,0); +INSERT INTO "area" VALUES('EPSG','2043','World - S hemisphere - 54°W to 48°W - by country','Between 54°W and 48°W, southern hemisphere between 80°S and equator, onshore and offshore. Brazil. Uruguay.',-80.0,0.0,-54.0,-48.0,0); +INSERT INTO "area" VALUES('EPSG','2044','World - N hemisphere - 48°W to 42°W - by country','Between 48°W and 42°W, northern hemisphere between equator and 84°N, onshore and offshore. Greenland.',0.0,84.0,-48.0,-42.0,0); +INSERT INTO "area" VALUES('EPSG','2045','World - S hemisphere - 48°W to 42°W - by country','Between 48°W and 42°W, southern hemisphere between 80°S and equator, onshore and offshore. Brazil.',-80.0,0.0,-48.0,-42.0,0); +INSERT INTO "area" VALUES('EPSG','2046','World - N hemisphere - 42°W to 36°W - by country','Between 42°W and 36°W, northern hemisphere between equator and 84°N, onshore and offshore. Greenland.',0.0,84.0,-42.0,-36.0,0); +INSERT INTO "area" VALUES('EPSG','2047','World - S hemisphere - 42°W to 36°W - by country','Between 42°W and 36°W, southern hemisphere between 80°S and equator, onshore and offshore. Brazil. South Georgia and the South Sandwich Islands.',-80.0,0.0,-42.0,-36.0,0); +INSERT INTO "area" VALUES('EPSG','2048','World - N hemisphere - 36°W to 30°W - by country','Between 36°W and 30°W, northern hemisphere between equator and 84°N, onshore and offshore. Greenland.',0.0,84.0,-36.0,-30.0,0); +INSERT INTO "area" VALUES('EPSG','2049','World - S hemisphere - 36°W to 30°W - by country','Between 36°W and 30°W, southern hemisphere between 80°S and equator, onshore and offshore. Brazil.',-80.0,0.0,-36.0,-30.0,0); +INSERT INTO "area" VALUES('EPSG','2050','World - N hemisphere - 30°W to 24°W - by country','Between 30°W and 24°W, northern hemisphere between equator and 84°N, onshore and offshore. Greenland. Iceland.',0.0,84.0,-30.0,-24.0,0); +INSERT INTO "area" VALUES('EPSG','2051','World - S hemisphere - 30°W to 24°W - by country','Between 30°W and 24°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-30.0,-24.0,0); +INSERT INTO "area" VALUES('EPSG','2052','World - N hemisphere - 24°W to 18°W - by country','Between 24°W and 18°W, northern hemisphere between equator and 84°N, onshore and offshore. Greenland. Iceland.',0.0,84.0,-24.0,-18.0,0); +INSERT INTO "area" VALUES('EPSG','2053','World - S hemisphere - 24°W to 18°W - by country','Between 24°W and 18°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-24.0,-18.0,0); +INSERT INTO "area" VALUES('EPSG','2054','World - N hemisphere - 18°W to 12°W - by country','Between 18°W and 12°W, northern hemisphere between equator and 84°N, onshore and offshore. Gambia. Greenland. Guinea. Guinea-Bissau. Iceland. Ireland - offshore Porcupine Basin. Mauritania. Morocco. Senegal. Sierra Leone. Western Sahara.',0.0,84.0,-18.0,-12.0,0); +INSERT INTO "area" VALUES('EPSG','2055','World - S hemisphere - 18°W to 12°W - by country','Between 18°W and 12°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-18.0,-12.0,0); +INSERT INTO "area" VALUES('EPSG','2056','World - N hemisphere - 12°W to 6°W - by country','Between 12°W and 6°W, northern hemisphere between equator and 84°N, onshore and offshore. Algeria. Côte D''Ivoire (Ivory Coast). Faroe Islands. Guinea. Ireland. Jan Mayen. Mali. Mauritania. Morocco. Portugal. Sierra Leone. Spain. United Kingdom (UK). Western Sahara.',0.0,84.0,-12.0,-6.0,0); +INSERT INTO "area" VALUES('EPSG','2057','World - S hemisphere - 12°W to 6°W - by country','Between 12°W and 6°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-12.0,-6.0,0); +INSERT INTO "area" VALUES('EPSG','2058','World - N hemisphere - 6°W to 0°W - by country','Between 6°W and 0°W, northern hemisphere between equator and 84°N, onshore and offshore. Algeria. Burkina Faso. Côte'' Ivoire (Ivory Coast). Faroe Islands - offshore. France. Ghana. Gibraltar. Ireland - offshore Irish Sea. Mali. Mauritania. Morocco. Spain. United Kingdom (UK).',0.0,84.0,-6.0,0.0,0); +INSERT INTO "area" VALUES('EPSG','2059','World - S hemisphere - 6°W to 0°W - by country','Between 6°W and 0°W, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,-6.0,0.0,0); +INSERT INTO "area" VALUES('EPSG','2060','World - N hemisphere - 0°E to 6°E - by country','Between 0°E and 6°E, northern hemisphere between equator and 84°N, onshore and offshore. Algeria. Andorra. Belgium. Benin. Burkina Faso. Denmark - North Sea. France. Germany - North Sea. Ghana. Luxembourg. Mali. Netherlands. Niger. Nigeria. Norway. Spain. Togo. United Kingdom (UK) - North Sea.',0.0,84.0,0.0,6.0,0); +INSERT INTO "area" VALUES('EPSG','2061','World - S hemisphere - 0°E to 6°E - by country','Between 0°E and 6°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,0.0,6.0,0); +INSERT INTO "area" VALUES('EPSG','2062','World - N hemisphere - 6°E to 12°E - by country','Between 6°E and 12°E, northern hemisphere between equator and 84°N, onshore and offshore. Algeria. Austria. Cameroon. Denmark. Equatorial Guinea. France. Gabon. Germany. Italy. Libya. Liechtenstein. Monaco. Netherlands. Niger. Nigeria. Norway. Sao Tome and Principe. Svalbard. Sweden. Switzerland. Tunisia. Vatican City State.',0.0,84.0,6.0,12.0,0); +INSERT INTO "area" VALUES('EPSG','2063','World - S hemisphere - 6°E to 12°E - by country','Between 6°E and 12°E, southern hemisphere between 80°S and equator, onshore and offshore. Angola. Congo. Gabon. Namibia.',-80.0,0.0,6.0,12.0,0); +INSERT INTO "area" VALUES('EPSG','2064','World - N hemisphere - 12°E to 18°E - by country','Between 12°E and 18°E, northern hemisphere between equator and 84°N, onshore and offshore. Austria. Bosnia and Herzegovina. Cameroon. Central African Republic. Chad. Congo. Croatia. Czech Republic. Democratic Republic of the Congo (Zaire). Gabon. Germany. Hungary. Italy. Libya. Malta. Niger. Nigeria. Norway. Poland. San Marino. Slovakia. Slovenia. Svalbard. Sweden. Vatican City State.',0.0,84.0,12.0,18.0,0); +INSERT INTO "area" VALUES('EPSG','2065','World - S hemisphere - 12°E to 18°E - by country','Between 12°E and 18°E, southern hemisphere between 80°S and equator, onshore and offshore. Angola. Congo. Democratic Republic of the Congo (Zaire). Gabon. Namibia. South Africa.',-80.0,0.0,12.0,18.0,0); +INSERT INTO "area" VALUES('EPSG','2066','World - N hemisphere - 18°E to 24°E - by country','Between 18°E and 24°E, northern hemisphere between equator and 84°N, onshore and offshore. Albania. Belarus. Bosnia and Herzegovina. Bulgaria. Central African Republic. Chad. Croatia. Democratic Republic of the Congo (Zaire). Estonia. Finland. FYR Macedonia. Greece. Hungary. Italy. Latvia. Libya. Lithuania. Montenegro. Norway, including Svalbard and Bjornoys. Poland. Romania. Russian Federation. Serbia. Slovakia. Sudan. Sweden. Ukraine.',0.0,84.0,18.0,24.0,0); +INSERT INTO "area" VALUES('EPSG','2067','World - S hemisphere - 18°E to 24°E - by country','Between 18°E and 24°E, southern hemisphere between 80°S and equator, onshore and offshore. Angola. Botswana. Democratic Republic of the Congo (Zaire). Namibia. South Africa. Zambia.',-80.0,0.0,18.0,24.0,0); +INSERT INTO "area" VALUES('EPSG','2068','World - N hemisphere - 24°E to 30°E - by country','Between 24°E and 30°E, northern hemisphere between equator and 84°N, onshore and offshore. Belarus. Bulgaria. Central African Republic. Democratic Republic of the Congo (Zaire). Egypt. Estonia. Finland. Greece. Latvia. Lesotho. Libya. Lithuania. Moldova. Norway. Poland. Romania. Russian Federation. Sudan. Svalbard. Turkey. Uganda. Ukraine.',0.0,84.0,24.0,30.0,0); +INSERT INTO "area" VALUES('EPSG','2069','World - S hemisphere - 24°E to 30°E - by country','Between 24°E and 30°E, southern hemisphere between 80°S and equator, onshore and offshore. Botswana. Burundi. Democratic Republic of the Congo (Zaire). Rwanda. South Africa. Tanzania. Uganda. Zambia. Zimbabwe.',-80.0,0.0,24.0,30.0,0); +INSERT INTO "area" VALUES('EPSG','2070','World - N hemisphere - 30°E to 36°E - by country','Between 30°E and 36°E, northern hemisphere between equator and 84°N, onshore and offshore. Belarus. Cyprus. Egypt. Ethiopia. Finland. Israel. Jordan. Kenya. Lebanon. Moldova. Norway. Russian Federation. Saudi Arabia. Sudan. Syria. Turkey. Uganda. Ukraine.',0.0,84.0,30.0,36.0,0); +INSERT INTO "area" VALUES('EPSG','2071','World - S hemisphere - 30°E to 36°E - by country','Between 30°E and 36°E, southern hemisphere between 80°S and equator, onshore and offshore. Burundi. Kenya. Malawi. Mozambique. Rwanda. South Africa. Swaziland. Tanzania. Uganda. Zambia. Zimbabwe.',-80.0,0.0,30.0,36.0,0); +INSERT INTO "area" VALUES('EPSG','2072','World - N hemisphere - 36°E to 42°E - by country','Between 36°E and 42°E, northern hemisphere between equator and 84°N, onshore and offshore. Djibouti. Egypt. Eritrea. Ethiopia. Georgia. Iraq. Jordan. Kenya. Lebanon. Russian Federation. Saudi Arabia. Somalia. Sudan. Syria. Turkey. Ukraine.',0.0,84.0,36.0,42.0,0); +INSERT INTO "area" VALUES('EPSG','2073','World - S hemisphere - 36°E to 42°E - by country','Between 36°E and 42°E, southern hemisphere between 80°S and equator, onshore and offshore. Kenya. Mozambique. Tanzania.',-80.0,0.0,36.0,42.0,0); +INSERT INTO "area" VALUES('EPSG','2074','World - N hemisphere - 42°E to 48°E - by country','Between 42°E and 48°E, northern hemisphere between equator and 84°N, onshore and offshore. Armenia. Azerbaijan. Djibouti. Eritrea. Ethiopia. Georgia. Islamic Republic of Iran. Iraq. kazakhstan. Kuwait. Russian Federation. Saudi Arabia. Somalia. Turkey. Yemen.',0.0,84.0,42.0,48.0,0); +INSERT INTO "area" VALUES('EPSG','2075','World - S hemisphere - 42°E to 48°E - by country','Between 42°E and 48°E, southern hemisphere between 80°S and equator, onshore and offshore. Madagascar.',-80.0,0.0,42.0,48.0,0); +INSERT INTO "area" VALUES('EPSG','2076','World - N hemisphere - 48°E to 54°E - by country','Between 48°E and 54°E, northern hemisphere between equator and 84°N, onshore and offshore. Azerbaijan. Bahrain. Islamic Republic of Iran. Iraq. Kazakhstan. Kuwait. Oman. Qatar. Russian Federation. Saudi Arabia. Somalia. Turkmenistan. United Arab Emirates. Yemen.',0.0,84.0,48.0,54.0,0); +INSERT INTO "area" VALUES('EPSG','2077','World - S hemisphere - 48°E to 54°E - by country','Between 48°E and 54°E, southern hemisphere between 80°S and equator, onshore and offshore. Madagascar.',-80.0,0.0,48.0,54.0,0); +INSERT INTO "area" VALUES('EPSG','2078','World - N hemisphere - 54°E to 60°E - by country','Between 54°E and 60°E, northern hemisphere between equator and 84°N, onshore and offshore. Islamic Republic of Iran. kazakhstan. Oman. Russian Federation. Saudi Arabia. Turkmenistan. United Arab Emirates. Uzbekistan.',0.0,84.0,54.0,60.0,0); +INSERT INTO "area" VALUES('EPSG','2079','World - S hemisphere - 54°E to 60°E - by country','Between 54°E and 60°E, southern hemisphere between 80°S and equator, onshore and offshore. Seychelles.',-80.0,0.0,54.0,60.0,0); +INSERT INTO "area" VALUES('EPSG','2080','World - N hemisphere - 60°E to 66°E - by country','Between 60°E and 66°E, northern hemisphere between equator and 84°N, onshore and offshore. Afghanistan. Islamic Republic of Iran. kazakhstan. Pakistan. Russian Federation. Turkmenistan. Uzbekistan.',0.0,84.0,60.0,66.0,0); +INSERT INTO "area" VALUES('EPSG','2081','World - S hemisphere - 60°E to 66°E - by country','Between 60°E and 66°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,60.0,66.0,0); +INSERT INTO "area" VALUES('EPSG','2082','World - N hemisphere - 66°E to 72°E - by country','Between 66°E and 72°E, northern hemisphere between equator and 84°N, onshore and offshore. Afghanistan. India. Kazakhstan. Kyrgyzstan. Pakistan. Russian Federation. Tajikistan. Uzbekistan.',0.0,84.0,66.0,72.0,0); +INSERT INTO "area" VALUES('EPSG','2083','World - S hemisphere - 66°E to 72°E - by country','Between 66°E and 72°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,66.0,72.0,0); +INSERT INTO "area" VALUES('EPSG','2084','World - N hemisphere - 72°E to 78°E - by country','Between 72°E and 78°E, northern hemisphere between equator and 84°N, onshore and offshore. China. India. Kazakhstan. Kyrgyzstan. Maldives. Pakistan. Russian Federation. Tajikistan.',0.0,84.0,72.0,78.0,0); +INSERT INTO "area" VALUES('EPSG','2085','World - S hemisphere - 72°E to 78°E - by country','Between 72°E and 78°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,72.0,78.0,0); +INSERT INTO "area" VALUES('EPSG','2086','World - N hemisphere - 78°E to 84°E - by country','Between 78°E and 84°E, northern hemisphere between equator and 84°N, onshore and offshore. China. India. Kazakhstan. Kyrgyzstan. Nepal. Russian Federation. Sri Lanka.',0.0,84.0,78.0,84.0,0); +INSERT INTO "area" VALUES('EPSG','2087','World - S hemisphere - 78°E to 84°E - by country','Between 78°E and 84°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,78.0,84.0,0); +INSERT INTO "area" VALUES('EPSG','2088','World - N hemisphere - 84°E to 90°E - by country','Between 84°E and 90°E, northern hemisphere between equator and 84°N, onshore and offshore. Bangladesh. Bhutan. China. India. Kazakhstan. Mongolia. Nepal. Russian Federation.',0.0,84.0,84.0,90.0,0); +INSERT INTO "area" VALUES('EPSG','2089','World - S hemisphere - 84°E to 90°E - by country','Between 84°E and 90°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,84.0,90.0,0); +INSERT INTO "area" VALUES('EPSG','2090','World - N hemisphere - 90°E to 96°E - by country','Between 90°E and 96°E, northern hemisphere between equator and 84°N, onshore and offshore. Bangladesh. Bhutan. China. Indonesia. Mongolia. Myanmar (Burma). Russian Federation.',0.0,84.0,90.0,96.0,0); +INSERT INTO "area" VALUES('EPSG','2091','World - S hemisphere - 90°E to 96°E - by country','Between 90°E and 96°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,90.0,96.0,0); +INSERT INTO "area" VALUES('EPSG','2092','World - N hemisphere - 96°E to 102°E - by country','Between 96°E and 102°E, northern hemisphere between equator and 84°N, onshore and offshore. China. Indonesia. Laos. Malaysia - West Malaysia. Mongolia. Myanmar (Burma). Russian Federation. Thailand.',0.0,84.0,96.0,102.0,0); +INSERT INTO "area" VALUES('EPSG','2093','World - S hemisphere - 96°E to 102°E - by country','Between 96°E and 102°E, southern hemisphere between 80°S and equator, onshore and offshore. Indonesia.',-80.0,0.0,96.0,102.0,0); +INSERT INTO "area" VALUES('EPSG','2094','World - N hemisphere - 102°E to 108°E - by country','Between 102°E and 108°E, northern hemisphere between equator and 84°N, onshore and offshore. Cambodia. China. Indonesia. Laos. Malaysia - West Malaysia. Mongolia. Russian Federation. Singapore. Thailand. Vietnam.',0.0,84.0,102.0,108.0,0); +INSERT INTO "area" VALUES('EPSG','2095','World - S hemisphere - 102°E to 108°E - by country','Between 102°E and 108°E, southern hemisphere between 80°S and equator, onshore and offshore. Indonesia.',-80.0,0.0,102.0,108.0,0); +INSERT INTO "area" VALUES('EPSG','2096','World - N hemisphere - 108°E to 114°E - by country','Between 108°E and 114°E, northern hemisphere between equator and 84°N, onshore and offshore. China. Hong Kong. Indonesia. Macao. Malaysia - East Malaysia - Sarawak. Mongolia. Russian Federation. Vietnam.',0.0,84.0,108.0,114.0,0); +INSERT INTO "area" VALUES('EPSG','2097','World - S hemisphere - 108°E to 114°E - by country','Between 108°E and 114°E, southern hemisphere between 80°S and equator, onshore and offshore. Australia. Indonesia.',-80.0,0.0,108.0,114.0,0); +INSERT INTO "area" VALUES('EPSG','2098','World - N hemisphere - 114°E to 120°E - by country','Between 114°E and 120°E, northern hemisphere between equator and 84°N, onshore and offshore. Brunei. China. Hong Kong. Indonesia. Malaysia - East Malaysia - Sarawak. Mongolia. Philippines. Russian Federation. Taiwan.',0.0,84.0,114.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','2099','World - S hemisphere - 114°E to 120°E - by country','Between 114°E and 120°E, southern hemisphere between 80°S and equator, onshore and offshore. Australia. Indonesia.',-80.0,0.0,114.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','2100','World - N hemisphere - 120°E to 126°E - by country','Between 120°E and 126°E, northern hemisphere between equator and 84°N, onshore and offshore. China. Indonesia. Japan. North Korea. Philippines. Russian Federation. South Korea. Taiwan.',0.0,84.0,120.0,126.0,0); +INSERT INTO "area" VALUES('EPSG','2101','World - S hemisphere - 120°E to 126°E - by country','Between 120°E and 126°E, southern hemisphere between 80°S and equator, onshore and offshore. Australia. East Timor. Indonesia.',-80.0,0.0,120.0,126.0,0); +INSERT INTO "area" VALUES('EPSG','2102','World - N hemisphere - 126°E to 132°E - by country','Between 126°E and 132°E, northern hemisphere between equator and 84°N, onshore and offshore. China. Indonesia. Japan. North Korea. Russian Federation. South Korea.',0.0,84.0,126.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','2103','World - S hemisphere - 126°E to 132°E - by country','Between 126°E and 132°E, southern hemisphere between 80°S and equator, onshore and offshore. Australia. East Timor. Indonesia.',-80.0,0.0,126.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','2104','World - N hemisphere - 132°E to 138°E - by country','Between 132°E and 138°E, northern hemisphere between equator and 84°N, onshore and offshore. China. Japan. Russian Federation.',0.0,84.0,132.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','2105','World - S hemisphere - 132°E to 138°E - by country','Between 132°E and 138°E, southern hemisphere between 80°S and equator, onshore and offshore. Australia. Indonesia.',-80.0,0.0,132.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','2106','World - N hemisphere - 138°E to 144°E - by country','Between 138°E and 144°E, northern hemisphere between equator and 84°N, onshore and offshore. Japan. Russian Federation.',0.0,84.0,138.0,144.0,0); +INSERT INTO "area" VALUES('EPSG','2107','World - S hemisphere - 138°E to 144°E - by country','Between 138°E and 144°E, southern hemisphere between 80°S and equator, onshore and offshore. Australia. Indonesia. Papua New Guinea.',-80.0,0.0,138.0,144.0,0); +INSERT INTO "area" VALUES('EPSG','2108','World - N hemisphere - 144°E to 150°E - by country','Between 144°E and 150°E, northern hemisphere between equator and 84°N, onshore and offshore. Japan. Russian Federation.',0.0,84.0,144.0,150.0,0); +INSERT INTO "area" VALUES('EPSG','2109','World - S hemisphere - 144°E to 150°E - by country','Between 144°E and 150°E, southern hemisphere between 80°S and equator, onshore and offshore. Australia. Papua New Guinea.',-80.0,0.0,144.0,150.0,0); +INSERT INTO "area" VALUES('EPSG','2110','World - N hemisphere - 150°E to 156°E - by country','Between 150°E and 156°E, northern hemisphere between equator and 84°N, onshore and offshore. Russian Federation.',0.0,84.0,150.0,156.0,0); +INSERT INTO "area" VALUES('EPSG','2111','World - S hemisphere - 150°E to 156°E - by country','Between 150°E and 156°E, southern hemisphere between 80°S and equator, onshore and offshore. Australia. Papua New Guinea.',-80.0,0.0,150.0,156.0,0); +INSERT INTO "area" VALUES('EPSG','2112','World - N hemisphere - 156°E to 162°E - by country','Between 156°E and 162°E, northern hemisphere between equator and 84°N, onshore and offshore. Russian Federation.',0.0,84.0,156.0,162.0,0); +INSERT INTO "area" VALUES('EPSG','2113','World - S hemisphere - 156°E to 162°E - by country','Between 156°E and 162°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,156.0,162.0,0); +INSERT INTO "area" VALUES('EPSG','2114','World - N hemisphere - 162°E to 168°E - by country','Between 162°E and 168°E, northern hemisphere between equator and 84°N, onshore and offshore. Russian Federation.',0.0,84.0,162.0,168.0,0); +INSERT INTO "area" VALUES('EPSG','2115','World - S hemisphere - 162°E to 168°E - by country','Between 162°E and 168°E, southern hemisphere between 80°S and equator, onshore and offshore.',-80.0,0.0,162.0,168.0,0); +INSERT INTO "area" VALUES('EPSG','2116','World - N hemisphere - 168°E to 174°E - by country','Between 168°E and 174°E, northern hemisphere between equator and 84°N, onshore and offshore. Russian Federation; United States (USA) - Alaska.',0.0,84.0,168.0,174.0,0); +INSERT INTO "area" VALUES('EPSG','2117','World - S hemisphere - 168°E to 174°E - by country','Between 168°E and 174°E, southern hemisphere between 80°S and equator, onshore and offshore. New Zealand.',-80.0,0.0,168.0,174.0,0); +INSERT INTO "area" VALUES('EPSG','2118','World - N hemisphere - 174°E to 180°E - by country','Between 174°E and 180°E, northern hemisphere between equator and 84°N, onshore and offshore. Russian Federation; United States (USA) - Alaska (AK).',0.0,84.0,174.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','2119','World - S hemisphere - 174°E to 180°E - by country','Between 174°E and 180°E, southern hemisphere between 80°S and equator, onshore and offshore. New Zealand.',-80.0,0.0,174.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','2120','Guatemala - north of 15°51''30"N','Guatemala - north of 15°51''30"N.',15.85,17.83,-91.86,-88.34,0); +INSERT INTO "area" VALUES('EPSG','2121','Guatemala - south of 15°51''30"N','Guatemala - south of 15°51''30"N.',13.69,15.86,-92.29,-88.19,0); +INSERT INTO "area" VALUES('EPSG','2122','Europe - 18°W to 12°W and ETRS89 by country','Europe between 18°W and 12°W: Faroe Islands - offshore; Ireland - offshore; Jan Mayen - offshore; Portugal - offshore mainland; Spain - offshore mainland; United Kingdom (UKCS) - offshore.',34.93,72.44,-16.1,-11.99,0); +INSERT INTO "area" VALUES('EPSG','2123','Europe - 12°W to 6°W and ETRS89 by country','Europe between 12°W and 6°W: Faroe Islands - onshore and offshore; Ireland - offshore; Jan Mayen - onshore and offshore; Portugal - onshore and offshore; Spain - onshore and offshore; United Kingdom - UKCS offshore.',34.91,74.13,-12.0,-6.0,0); +INSERT INTO "area" VALUES('EPSG','2124','Europe - 6°W to 0°W and ETRS89 by country','Europe between 6°W and 0°W: Faroe Islands offshore; Ireland - offshore; Jan Mayen - offshore; Norway including Svalbard - offshore; Spain - onshore and offshore.',35.26,80.53,-6.0,0.0,0); +INSERT INTO "area" VALUES('EPSG','2125','Europe - 0°E to 6°E and ETRS89 by country','Europe between 0°E and 6°E: Andorra; Belgium - onshore and offshore; Denmark - offshore; Germany - offshore; Jan Mayen - offshore; Norway including Svalbard - onshore and offshore; Spain - onshore and offshore.',37.0,82.41,0.0,6.01,0); +INSERT INTO "area" VALUES('EPSG','2126','Europe - 6°E to 12°E and ETRS89 by country','Europe between 6°E and 12°E: Austria; Belgium; Denmark - onshore and offshore; Germany - onshore and offshore; Norway including - onshore and offshore; Spain - offshore.',38.76,83.92,6.0,12.0,0); +INSERT INTO "area" VALUES('EPSG','2127','Europe - 12°E to 18°E and ETRS89 by country','Europe between 12°E and 18°E: Austria; Denmark - offshore and offshore; Germany - onshore and offshore; Norway including Svalbard - onshore and offshore.',46.4,84.01,12.0,18.01,0); +INSERT INTO "area" VALUES('EPSG','2128','Europe - 18°E to 24°E and ETRS89 by country','Europe between 18°E and 24°E: Finland - onshore and offshore; Norway including Svalbard - onshore and offshore.',58.84,84.0,18.0,24.0,0); +INSERT INTO "area" VALUES('EPSG','2129','Europe - 24°E to 30°E and ETRS89 by country','Europe between 24°E and 30°E: Finland - onshore and offshore; Norway including Svalbard - onshore and offshore.',59.64,84.01,24.0,30.0,0); +INSERT INTO "area" VALUES('EPSG','2130','Europe - 30°E to 36°E and ETRS89 by country','Europe between 30°E and 36°E: Finland - onshore and offshore; Norway including Svalbard - onshore and offshore.',61.73,83.89,30.0,36.01,0); +INSERT INTO "area" VALUES('EPSG','2131','Europe - 36°E to 42°E and ETRS89 by country','Europe between 36°E and 42°E: Norway including Svalbard - offshore.',71.27,79.09,36.0,39.65,0); +INSERT INTO "area" VALUES('EPSG','2132','Europe - 42°E to 48°E and ETRS89 by country','Europe - between 42°E and 48°E.',37.0,41.65,42.0,48.0,1); +INSERT INTO "area" VALUES('EPSG','2133','USA - 168°W to 162°W - AK, OCS','United States (USA) - between 168°W and 162°W - Alaska and offshore continental shelf (OCS).',49.52,74.29,-168.0,-161.99,0); +INSERT INTO "area" VALUES('EPSG','2134','USA - 162°W to 156°W - AK, OCS','United States (USA) - between 162°W and 156°W - Alaska and offshore continental shelf (OCS).',50.98,74.71,-162.0,-155.99,0); +INSERT INTO "area" VALUES('EPSG','2135','USA - 156°W to 150°W - AK, OCS','United States (USA) - between 156°W and 150°W - Alaska and offshore continental shelf (OCS).',52.15,74.71,-156.0,-149.99,0); +INSERT INTO "area" VALUES('EPSG','2136','USA - 150°W to 144°W - AK, OCS','United States (USA) - between 150°W and 144°W - Alaska and offshore continental shelf (OCS).',54.05,74.13,-150.0,-143.99,0); +INSERT INTO "area" VALUES('EPSG','2137','North America - 144°W to 138°W and NAD27 by country','North America - between 144°W and 138°W. Canada - British Columbia; Yukon. United States (USA) - Alaska. Onshore for western Canada & but onshore and offshore for Alaska.',53.47,73.59,-144.0,-138.0,0); +INSERT INTO "area" VALUES('EPSG','2138','North America - 138°W to 132°W and NAD27 by country - onshore','North America - between 138°W and 132°W - onshore. Canada - British Columbia; Northwest Territiories; Yukon. United States (USA) - Alaska. Onshore for Canadian British Columbia & Arctic and for US Pacific coast including Alaska panhandle.',52.58,73.04,-138.0,-132.0,0); +INSERT INTO "area" VALUES('EPSG','2139','North America - 132°W to 126°W and NAD27 by country - onshore','North America - between 132°W and 126°W - onshore. Canada - British Columbia; Northwest Territories; Yukon. United States (USA) - Alaska. Onshore for Canadian British Colombia & Arctic coasts and for the US Pacific coast including Alaska panhandle.',49.18,72.03,-132.0,-126.0,0); +INSERT INTO "area" VALUES('EPSG','2140','North America - 126°W to 120°W and NAD27 by country - onshore','North America - between 126°W and 120°W - onshore. Canada - British Columbia; Northwest Territories; Nunavut; Yukon. United States (USA) - California; Oregon; Washington.',34.4,77.13,-126.0,-120.0,0); +INSERT INTO "area" VALUES('EPSG','2141','North America - 120°W to 114°W and NAD27 by country - onshore','North America - between 120°W and 114°W - onshore. Canada - Alberta; British Columbia; Northwest Territories; Nunavut. Mexico. United States (USA) - California; Idaho; Nevada; Oregon; Washington.',26.93,78.13,-120.0,-114.0,0); +INSERT INTO "area" VALUES('EPSG','2142','North America - 114°W to 108°W and NAD27 by country','North America - between 114°W and 108°W. Canada - Alberta; Northwest Territories; Nunavut; Saskatchewan. Mexico. United States (USA) - Arizona; Colorado; Idaho; Montana; New Mexico; Utah; Wyoming. Onshore for Mexican Pacific and Canadian Arctic coasts.',18.66,78.81,-114.0,-108.0,0); +INSERT INTO "area" VALUES('EPSG','2143','North America - 108°W to 102°W and NAD27 by country','North America - between 108°W and 102°W. Canada - Northwest Territories; Nunavut; Saskatchewan. Mexico. United States (USA) - Colorado; Montana; Nebraska; New Mexico; North Dakota; Oklahoma; South Dakota; Texas; Wyoming. Onshore for Mexican Pacific and Canadian Arctic coasts.',17.86,79.42,-108.0,-102.0,0); +INSERT INTO "area" VALUES('EPSG','2144','North America - 102°W to 96°W and NAD27 by country','North America - between 102°W and 96°W. Canada - Manitoba; Nunavut; Saskatchewan. Mexico. United States (USA) - Iowa; Kansas; Minnesota; Nebraska; North Dakota; Oklahoma; South Dakota; Texas. Onshore for Mexican Pacific coast and Canadian Arctic but onshore and offshore for US & Mexico Gulf of Mexico and Caribbean coasts.',15.59,80.74,-102.0,-96.0,0); +INSERT INTO "area" VALUES('EPSG','2145','North America - 96°W to 90°W and NAD27 by country','North America - between 96°W and 90°W. Canada - Manitoba; Nunavut; Ontario. Guatemala. Mexico. United States (USA) - Arkansas; Illinois; Iowa; Kansas; Louisiana; Michigan; Minnesota; Mississippi; Missouri; Nebraska; Oklahoma; Tennessee; Texas; Wisconsin. Onshore for Canadian Arctic and Central America, onshore and offshore for Gulf of Mexico (both US and Mexican sectors).',13.63,81.96,-96.0,-90.0,0); +INSERT INTO "area" VALUES('EPSG','2146','North America - 90°W to 84°W and NAD27 by country','North America - between 90°W and 84°W. Belize. Canada - Manitoba; Nunavut; Ontario. Costa Rica. Cuba. El Salvador. Guatemala. Honduras. Mexico. Nicaragua. United States (USA) - Alabama; Arkansas; Florida; Georgia; Indiana; Illinois; Kentucky; Louisiana; Michigan; Minnesota; Mississippi; Missouri; North Carolina; Ohio; Tennessee; Wisconsin. Onshore for Canadian Arctic and Central America, onshore and offshore for Cuba and Gulf of Mexico (both US and Mexican sectors).',9.27,82.54,-90.01,-84.0,0); +INSERT INTO "area" VALUES('EPSG','2147','North America - 84°W to 78°W and NAD27 by country','North America - between 84°W and 78°W. Bahamas. Canada - Nunavut; Ontario; Quebec. Costa Rica. Cuba. Honduras. Nicaragua. United States (USA) - Florida; Georgia; Kentucky; Maryland; Michigan; New York; North Carolina; Ohio; Pennsylvania; South Carolina; Tennessee; Virginia; West Virginia. Onshore for Canadian Arctic. onshore and offshore for US east coast and Cuba, with usage in Bahamas onshore plus offshore over internal continental shelf only.',7.98,83.03,-84.0,-78.0,0); +INSERT INTO "area" VALUES('EPSG','2148','North America - 78°W to 72°W and NAD27 by country','North America - between 78°W and 72°W. Bahamas. Canada - Nunavut; Ontario; Quebec. Cuba. United States (USA) - Connecticut; Delaware; Maryland; Massachusetts; New Hampshire; New Jersey; New York; North Carolina; Pennsylvania; Virginia; Vermont. Onshore for Canadian arctic. onshore and offshore for US east coast and Cuba, with usage in Bahamas onshore plus offshore over internal continental shelf only.',18.83,83.16,-78.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','2149','North America - 72°W to 66°W and NAD27 by country','North America - between 72°W and 66°W. Canada - New Brunswick; Labrador; Nunavut; Nova Scotia; Quebec. United States (USA) - Connecticut; Maine; Massachusetts; New Hampshire; New York (Long Island); Rhode Island; Vermont. Onshore and offshore for US and Canadian east coasts.',33.61,83.17,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','2150','North America - 66°W to 60°W and NAD27 by country','North America - between 66°W and 60°W - onshore and offshore. Canada - New Brunswick; Labrador; Nova Scotia; Nunavut; Prince Edward Island; Quebec. United States (USA) offshore Atlantic.',39.85,82.97,-66.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','2151','Canada - 60°W to 54°W','Canada between 60°W and 54°W - Newfoundland and Labrador; Nunavut; Quebec.',40.57,84.0,-60.0,-54.0,0); +INSERT INTO "area" VALUES('EPSG','2152','Canada - 54°W to 48°W','Canada between 54°W and 48°W onshore and offshore - Newfoundland and Labrador.',43.27,57.65,-54.0,-48.0,0); +INSERT INTO "area" VALUES('EPSG','2153','Canada - 48°W to 42°W','Canada offshore Atlantic - east of 48°W.',46.46,49.18,-48.0,-47.74,0); +INSERT INTO "area" VALUES('EPSG','2154','USA - Alabama - SPCS - E','United States (USA) - Alabama east of approximately 86°37''W - counties Barbour; Bullock; Calhoun; Chambers; Cherokee; Clay; Cleburne; Coffee; Coosa; Covington; Crenshaw; Dale; De Kalb; Elmore; Etowah; Geneva; Henry; Houston; Jackson; Lee; Macon; Madison; Marshall; Montgomery; Pike; Randolph; Russell; StClair; Talladega; Tallapoosa.',30.99,35.0,-86.79,-84.89,0); +INSERT INTO "area" VALUES('EPSG','2155','USA - Alabama - SPCS - W','United States (USA) - Alabama west of approximately 86°37''W - counties Autauga; Baldwin; Bibb; Blount; Butler; Chilton; Choctaw; Clarke; Colbert; Conecuh; Cullman; Dallas; Escambia; Fayette; Franklin; Greene; Hale; Jefferson; Lamar; Lauderdale; Lawrence; Limestone; Lowndes; Marengo; Marion; Mobile; Monroe; Morgan; Perry; Pickens; Shelby; Sumter; Tuscaloosa; Walker; Washington; Wilcox; Winston.',30.14,35.02,-88.48,-86.3,0); +INSERT INTO "area" VALUES('EPSG','2156','USA - Alaska - Panhandle','United States (USA) - Alaska - east of 141°W; i.e. Panhandle.',54.61,60.35,-141.0,-129.99,0); +INSERT INTO "area" VALUES('EPSG','2157','USA - Alaska - Aleutian Islands','United States (USA) - Alaska - Aleutian Islands onshore.',51.3,54.34,172.42,-164.84,0); +INSERT INTO "area" VALUES('EPSG','2158','USA - Alaska - 144°W to 141°W','United States (USA) - Alaska - between 144°W and 141°W, onshore.',59.72,70.16,-144.01,-140.98,0); +INSERT INTO "area" VALUES('EPSG','2159','USA - Alaska - 148°W to 144°W','United States (USA) - Alaska - between 148°W and 144°W.',59.72,70.38,-148.0,-144.0,0); +INSERT INTO "area" VALUES('EPSG','2160','USA - Alaska - 152°W to 148°W','United States (USA) - Alaska - between 152°W and 148°W, onshore.',59.11,70.63,-152.01,-147.99,0); +INSERT INTO "area" VALUES('EPSG','2161','USA - Alaska - 156°W to 152°W','United States (USA) - Alaska - between 156°W and 152°W.',55.72,71.28,-156.0,-151.86,0); +INSERT INTO "area" VALUES('EPSG','2162','USA - Alaska - 160°W to 156°W','United States (USA) - Alaska - between 160°W and 156°W, onshore.',54.89,71.4,-160.0,-155.99,0); +INSERT INTO "area" VALUES('EPSG','2163','USA - Alaska - 164°W to 160°W','United States (USA) - Alaska - between 164°W and 160°W, onshore.',54.32,70.74,-164.01,-160.0,0); +INSERT INTO "area" VALUES('EPSG','2164','USA - Alaska - north of 54.5°N; 168°W to 164°W','United States (USA) - Alaska onshore north of 54°30''N and between 168°W and 164°W.',54.34,69.05,-168.26,-164.0,0); +INSERT INTO "area" VALUES('EPSG','2165','USA - Alaska - north of 54.5°N; west of 168°W','United States (USA) - Alaska onshore north of 54°30''N and west of 168°W.',56.49,65.82,-173.16,-168.0,0); +INSERT INTO "area" VALUES('EPSG','2166','USA - Arizona - SPCS - C','United States (USA) - Arizona - counties Coconino; Maricopa; Pima; Pinal; Santa Cruz; Yavapai.',31.33,37.01,-113.35,-110.44,0); +INSERT INTO "area" VALUES('EPSG','2167','USA - Arizona - SPCS - E','United States (USA) - Arizona - counties Apache; Cochise; Gila; Graham; Greenlee; Navajo.',31.33,37.01,-111.71,-109.04,0); +INSERT INTO "area" VALUES('EPSG','2168','USA - Arizona - SPCS - W','United States (USA) - Arizona - counties of La Paz; Mohave; Yuma.',32.05,37.0,-114.81,-112.52,0); +INSERT INTO "area" VALUES('EPSG','2169','USA - Arkansas - SPCS - N','United States (USA) - Arkansas - counties of Baxter; Benton; Boone; Carroll; Clay; Cleburne; Conway; Craighead; Crawford; Crittenden; Cross; Faulkner; Franklin; Fulton; Greene; Independence; Izard; Jackson; Johnson; Lawrence; Logan; Madison; Marion; Mississippi; Newton; Perry; Poinsett; Pope; Randolph; Scott; Searcy; Sebastian; Sharp; St Francis; Stone; Van Buren; Washington; White; Woodruff; Yell.',34.67,36.5,-94.62,-89.64,0); +INSERT INTO "area" VALUES('EPSG','2170','USA - Arkansas - SPCS - S','United States (USA) - Arkansas - counties Arkansas; Ashley; Bradley; Calhoun; Chicot; Clark; Cleveland; Columbia; Dallas; Desha; Drew; Garland; Grant; Hempstead; Hot Spring; Howard; Jefferson; Lafayette; Lee; Lincoln; Little River; Lonoke; Miller; Monroe; Montgomery; Nevada; Ouachita; Phillips; Pike; Polk; Prairie; Pulaski; Saline; Sevier; Union.',33.01,35.1,-94.48,-90.4,0); +INSERT INTO "area" VALUES('EPSG','2171','USA - GoM OCS - west of 96°W','United States (USA) - Gulf of Mexico outer continental shelf (GoM OCS) west of approximately 96°W - protraction areas Corpus Christi; Port Isabel.',25.97,28.43,-97.22,-95.87,0); +INSERT INTO "area" VALUES('EPSG','2172','USA - GoM OCS - 96°W to 90°W','United States (USA) - Gulf of Mexico outer continental shelf (GoM OCS) between approximately 96°W and 90°W - protraction areas East Breaks; Alaminos Canyon; Garden Banks; Keathley Canyon; Sigsbee Escarpment; Ewing Bank; Green Canyon; Walker Ridge; Amery Terrace.',25.61,29.73,-96.0,-89.86,0); +INSERT INTO "area" VALUES('EPSG','2173','USA - GoM OCS - 90°W to 84°W','United States (USA) - Gulf of Mexico outer continental shelf (GoM OCS) between approximately 90°W and 84°W - protraction areas Mobile; Viosca Knoll; Mississippi Canyon; Atwater Valley; Lund; Lund South; Pensacola; Destin Dome; De Soto Canyon; Lloyd Ridge; Henderson; Florida Plain; Campeche Escarpment; Apalachicola; Florida Middle Ground; The Elbow; Vernon Basin; Howell Hook; Rankin.',23.95,30.25,-90.01,-83.91,0); +INSERT INTO "area" VALUES('EPSG','2174','USA - GoM OCS - east of 84°W','United States (USA) - Gulf of Mexico outer continental shelf (GoM OCS) east of approximately 84°W - protraction areas Gainesville; Tarpon Springs; St Petersburg; Charlotte Harbor; Pulley Ridge; Dry Tortugas; Tortugas Valley; Miami; Key West.',23.82,29.94,-84.09,-81.17,0); +INSERT INTO "area" VALUES('EPSG','2175','USA - California - SPCS - 1','United States (USA) - California - counties Del Norte; Humboldt; Lassen; Modoc; Plumas; Shasta; Siskiyou; Tehama; Trinity.',39.59,42.01,-124.45,-119.99,0); +INSERT INTO "area" VALUES('EPSG','2176','USA - California - SPCS - 2','United States (USA) - California - counties of Alpine; Amador; Butte; Colusa; El Dorado; Glenn; Lake; Mendocino; Napa; Nevada; Placer; Sacramento; Sierra; Solano; Sonoma; Sutter; Yolo; Yuba.',38.02,40.16,-124.06,-119.54,0); +INSERT INTO "area" VALUES('EPSG','2177','USA - California - SPCS - 3','United States (USA) - California - counties Alameda; Calaveras; Contra Costa; Madera; Marin; Mariposa; Merced; Mono; San Francisco; San Joaquin; San Mateo; Santa Clara; Santa Cruz; Stanislaus; Tuolumne.',36.73,38.71,-123.02,-117.83,0); +INSERT INTO "area" VALUES('EPSG','2178','USA - California - SPCS - 4','United States (USA) - California - counties Fresno; Inyo; Kings; Monterey; San Benito; Tulare.',35.78,37.58,-122.01,-115.62,0); +INSERT INTO "area" VALUES('EPSG','2179','USA - California - SPCS27 - 5','United States (USA) - California - counties of Kern; San Bernardino; San Luis Obispo; Santa Barbara; Ventura.',32.76,35.81,-121.43,-114.12,0); +INSERT INTO "area" VALUES('EPSG','2180','USA - California - SPCS - 6','United States (USA) - California - counties Imperial; Orange; Riverside; San Diego.',32.53,34.08,-118.15,-114.42,0); +INSERT INTO "area" VALUES('EPSG','2181','USA - California - SPCS27 - 7','United States (USA) - California - Los Angeles county.',33.66,34.83,-118.96,-117.63,0); +INSERT INTO "area" VALUES('EPSG','2182','USA - California - SPCS83 - 5','United States (USA) - California - counties Kern; Los Angeles; San Bernardino; San Luis Obispo; Santa Barbara; Ventura.',32.76,35.81,-121.42,-114.12,0); +INSERT INTO "area" VALUES('EPSG','2183','USA - Colorado - SPCS - C','United States (USA) - Colorado - counties Arapahoe; Chaffee; Cheyenne; Clear Creek; Delta; Denver; Douglas; Eagle; El Paso; Elbert; Fremont; Garfield; Gunnison; Jefferson; Kit Carson; Lake; Lincoln; Mesa; Park; Pitkin; Summit; Teller.',38.14,40.09,-109.06,-102.04,0); +INSERT INTO "area" VALUES('EPSG','2184','USA - Colorado - SPCS - N','United States (USA) - Colorado - counties Adams; Boulder; Gilpin; Grand; Jackson; Larimer; Logan; Moffat; Morgan; Phillips; Rio Blanco; Routt; Sedgwick; Washington; Weld; Yuma.',39.56,41.01,-109.06,-102.04,0); +INSERT INTO "area" VALUES('EPSG','2185','USA - Colorado - SPCS - S','United States (USA) - Colorado - counties Alamosa; Archuleta; Baca; Bent; Conejos; Costilla; Crowley; Custer; Dolores; Hinsdale; Huerfano; Kiowa; La Plata; Las Animas; Mineral; Montezuma; Montrose; Otero; Ouray; Prowers; Pueblo; Rio Grande; Saguache; San Juan; San Miguel.',36.98,38.68,-109.06,-102.04,0); +INSERT INTO "area" VALUES('EPSG','2186','USA - Florida - SPCS - E','United States (USA) - Florida - counties of Brevard; Broward; Clay; Collier; Dade; Duval; Flagler; Glades; Hendry; Highlands; Indian River; Lake; Martin; Monroe; Nassau; Okeechobee; Orange; Osceola; Palm Beach; Putnam; Seminole; St Johns; St Lucie; Volusia.',24.41,30.83,-82.33,-79.97,0); +INSERT INTO "area" VALUES('EPSG','2187','USA - Florida - SPCS - N','United States (USA) - Florida - counties of Alachua; Baker; Bay; Bradford; Calhoun; Columbia; Dixie; Escambia; Franklin; Gadsden; Gilchrist; Gulf; Hamilton; Holmes; Jackson; Jefferson; Lafayette; Leon; Liberty; Madison; Okaloosa; Santa Rosa; Suwannee; Taylor; Union; Wakulla; Walton; Washington.',29.21,31.01,-87.63,-82.04,0); +INSERT INTO "area" VALUES('EPSG','2188','USA - Florida - SPCS - W','United States (USA) - Florida - counties of Charlotte; Citrus; De Soto; Hardee; Hernando; Hillsborough; Lee; Levy; Manatee; Marion; Pasco; Pinellas; Polk; Sarasota; Sumter.',26.27,29.6,-83.34,-81.13,0); +INSERT INTO "area" VALUES('EPSG','2189','USA - Georgia - SPCS - E','United States (USA) - Georgia - counties of Appling; Atkinson; Bacon; Baldwin; Brantley; Bryan; Bulloch; Burke; Camden; Candler; Charlton; Chatham; Clinch; Coffee; Columbia; Dodge; Echols; Effingham; Elbert; Emanuel; Evans; Franklin; Glascock; Glynn; Greene; Hancock; Hart; Jeff Davis; Jefferson; Jenkins; Johnson; Lanier; Laurens; Liberty; Lincoln; Long; Madison; McDuffie; McIntosh; Montgomery; Oglethorpe; Pierce; Richmond; Screven; Stephens; Taliaferro; Tattnall; Telfair; Toombs; Treutlen; Ware; Warren; Washington; Wayne; Wheeler; Wilkes; Wilkinson.',30.36,34.68,-83.47,-80.77,0); +INSERT INTO "area" VALUES('EPSG','2190','USA - Georgia - SPCS - W','United States (USA) - Georgia - counties of Baker; Banks; Barrow; Bartow; Ben Hill; Berrien; Bibb; Bleckley; Brooks; Butts; Calhoun; Carroll; Catoosa; Chattahoochee; Chattooga; Cherokee; Clarke; Clay; Clayton; Cobb; Colquitt; Cook; Coweta; Crawford; Crisp; Dade; Dawson; De Kalb; Decatur; Dooly; Dougherty; Douglas; Early; Fannin; Fayette; Floyd; Forsyth; Fulton; Gilmer; Gordon; Grady; Gwinnett; Habersham; Hall; Haralson; Harris; Heard; Henry; Houston; Irwin; Jackson; Jasper; Jones; Lamar; Lee; Lowndes; Lumpkin; Macon; Marion; Meriwether; Miller; Mitchell; Monroe; Morgan; Murray; Muscogee; Newton; Oconee; Paulding; Peach; Pickens; Pike; Polk; Pulaski; Putnam; Quitman; Rabun; Randolph; Rockdale; Schley; Seminole; Spalding; Stewart; Sumter; Talbot; Taylor; Terrell; Thomas; Tift; Towns; Troup; Turner; Twiggs; Union; Upson; Walker; Walton; Webster; White; Whitfield; Wilcox; Worth.',30.62,35.01,-85.61,-82.99,0); +INSERT INTO "area" VALUES('EPSG','2191','USA - Idaho - SPCS - C','United States (USA) - Idaho - counties of Blaine; Butte; Camas; Cassia; Custer; Gooding; Jerome; Lemhi; Lincoln; Minidoka; Twin Falls.',41.99,45.7,-115.3,-112.68,0); +INSERT INTO "area" VALUES('EPSG','2192','USA - Idaho - SPCS - E','United States (USA) - Idaho - counties of Bannock; Bear Lake; Bingham; Bonneville; Caribou; Clark; Franklin; Fremont; Jefferson; Madison; Oneida; Power; Teton.',41.99,44.75,-113.24,-111.04,0); +INSERT INTO "area" VALUES('EPSG','2193','USA - Idaho - SPCS - W','United States (USA) - Idaho - counties of Ada; Adams; Benewah; Boise; Bonner; Boundary; Canyon; Clearwater; Elmore; Gem; Idaho; Kootenai; Latah; Lewis; Nez Perce; Owyhee; Payette; Shoshone; Valley; Washington.',41.99,49.01,-117.24,-114.32,0); +INSERT INTO "area" VALUES('EPSG','2194','USA - Illinois - SPCS - E','United States (USA) - Illinois - counties of Boone; Champaign; Clark; Clay; Coles; Cook; Crawford; Cumberland; De Kalb; De Witt; Douglas; Du Page; Edgar; Edwards; Effingham; Fayette; Ford; Franklin; Gallatin; Grundy; Hamilton; Hardin; Iroquois; Jasper; Jefferson; Johnson; Kane; Kankakee; Kendall; La Salle; Lake; Lawrence; Livingston; Macon; Marion; Massac; McHenry; McLean; Moultrie; Piatt; Pope; Richland; Saline; Shelby; Vermilion; Wabash; Wayne; White; Will; Williamson.',37.06,42.5,-89.28,-87.02,0); +INSERT INTO "area" VALUES('EPSG','2195','USA - Illinois - SPCS - W','United States (USA) - Illinois - counties of Adams; Alexander; Bond; Brown; Bureau; Calhoun; Carroll; Cass; Christian; Clinton; Fulton; Greene; Hancock; Henderson; Henry; Jackson; Jersey; Jo Daviess; Knox; Lee; Logan; Macoupin; Madison; Marshall; Mason; McDonough; Menard; Mercer; Monroe; Montgomery; Morgan; Ogle; Peoria; Perry; Pike; Pulaski; Putnam; Randolph; Rock Island; Sangamon; Schuyler; Scott; St Clair; Stark; Stephenson; Tazewell; Union; Warren; Washington; Whiteside; Winnebago; Woodford.',36.98,42.51,-91.52,-88.93,0); +INSERT INTO "area" VALUES('EPSG','2196','USA - Indiana - SPCS - E','United States (USA) - Indiana - counties of Adams; Allen; Bartholomew; Blackford; Brown; Cass; Clark; De Kalb; Dearborn; Decatur; Delaware; Elkhart; Fayette; Floyd; Franklin; Fulton; Grant; Hamilton; Hancock; Harrison; Henry; Howard; Huntington; Jackson; Jay; Jefferson; Jennings; Johnson; Kosciusko; Lagrange; Madison; Marion; Marshall; Miami; Noble; Ohio; Randolph; Ripley; Rush; Scott; Shelby; St Joseph; Steuben; Switzerland; Tipton; Union; Wabash; Washington; Wayne; Wells; Whitley.',37.95,41.77,-86.59,-84.78,0); +INSERT INTO "area" VALUES('EPSG','2197','USA - Indiana - SPCS - W','United States (USA) - Indiana - counties of Benton; Boone; Carroll; Clay; Clinton; Crawford; Daviess; Dubois; Fountain; Gibson; Greene; Hendricks; Jasper; Knox; La Porte; Lake; Lawrence; Martin; Monroe; Montgomery; Morgan; Newton; Orange; Owen; Parke; Perry; Pike; Porter; Posey; Pulaski; Putnam; Spencer; Starke; Sullivan; Tippecanoe; Vanderburgh; Vermillion; Vigo; Warren; Warrick; White.',37.77,41.77,-88.06,-86.24,0); +INSERT INTO "area" VALUES('EPSG','2198','USA - Iowa - SPCS - N','United States (USA) - Iowa - counties of Allamakee; Benton; Black Hawk; Boone; Bremer; Buchanan; Buena Vista; Butler; Calhoun; Carroll; Cerro Gordo; Cherokee; Chickasaw; Clay; Clayton; Crawford; Delaware; Dickinson; Dubuque; Emmet; Fayette; Floyd; Franklin; Greene; Grundy; Hamilton; Hancock; Hardin; Howard; Humboldt; Ida; Jackson; Jones; Kossuth; Linn; Lyon; Marshall; Mitchell; Monona; O''Brien; Osceola; Palo Alto; Plymouth; Pocahontas; Sac; Sioux; Story; Tama; Webster; Winnebago; Winneshiek; Woodbury; Worth; Wright.',41.85,43.51,-96.65,-90.15,0); +INSERT INTO "area" VALUES('EPSG','2199','USA - Iowa - SPCS - S','United States (USA) - Iowa - counties of Adair; Adams; Appanoose; Audubon; Cass; Cedar; Clarke; Clinton; Dallas; Davis; Decatur; Des Moines; Fremont; Guthrie; Harrison; Henry; Iowa; Jasper; Jefferson; Johnson; Keokuk; Lee; Louisa; Lucas; Madison; Mahaska; Marion; Mills; Monroe; Montgomery; Muscatine; Page; Polk; Pottawattamie; Poweshiek; Ringgold; Scott; Shelby; Taylor; Union; Van Buren; Wapello; Warren; Washington; Wayne.',40.37,42.04,-96.14,-90.14,0); +INSERT INTO "area" VALUES('EPSG','2200','USA - Kansas - SPCS - N','United States (USA) - Kansas - counties of Atchison; Brown; Cheyenne; Clay; Cloud; Decatur; Dickinson; Doniphan; Douglas; Ellis; Ellsworth; Geary; Gove; Graham; Jackson; Jefferson; Jewell; Johnson; Leavenworth; Lincoln; Logan; Marshall; Mitchell; Morris; Nemaha; Norton; Osborne; Ottawa; Phillips; Pottawatomie; Rawlins; Republic; Riley; Rooks; Russell; Saline; Shawnee; Sheridan; Sherman; Smith; Thomas; Trego; Wabaunsee; Wallace; Washington; Wyandotte.',38.52,40.01,-102.06,-94.58,0); +INSERT INTO "area" VALUES('EPSG','2201','USA - Kansas - SPCS - S','United States (USA) - Kansas - counties of Allen; Anderson; Barber; Barton; Bourbon; Butler; Chase; Chautauqua; Cherokee; Clark; Coffey; Comanche; Cowley; Crawford; Edwards; Elk; Finney; Ford; Franklin; Grant; Gray; Greeley; Greenwood; Hamilton; Harper; Harvey; Haskell; Hodgeman; Kearny; Kingman; Kiowa; Labette; Lane; Linn; Lyon; Marion; McPherson; Meade; Miami; Montgomery; Morton; Neosho; Ness; Osage; Pawnee; Pratt; Reno; Rice; Rush; Scott; Sedgwick; Seward; Stafford; Stanton; Stevens; Sumner; Wichita; Wilson; Woodson.',36.99,38.88,-102.05,-94.6,0); +INSERT INTO "area" VALUES('EPSG','2202','USA - Kentucky - SPCS - N','United States (USA) - Kentucky - counties of Anderson; Bath; Boone; Bourbon; Boyd; Bracken; Bullitt; Campbell; Carroll; Carter; Clark; Elliott; Fayette; Fleming; Franklin; Gallatin; Grant; Greenup; Harrison; Henry; Jefferson; Jessamine; Kenton; Lawrence; Lewis; Mason; Menifee; Montgomery; Morgan; Nicholas; Oldham; Owen; Pendleton; Robertson; Rowan; Scott; Shelby; Spencer; Trimble; Woodford.',37.71,39.15,-85.96,-82.47,0); +INSERT INTO "area" VALUES('EPSG','2203','USA - Kentucky - SPCS - S','United States (USA) - Kentucky - counties of Adair; Allen; Ballard; Barren; Bell; Boyle; Breathitt; Breckinridge; Butler; Caldwell; Calloway; Carlisle; Casey; Christian; Clay; Clinton; Crittenden; Cumberland; Daviess; Edmonson; Estill; Floyd; Fulton; Garrard; Graves; Grayson; Green; Hancock; Hardin; Harlan; Hart; Henderson; Hickman; Hopkins; Jackson; Johnson; Knott; Knox; Larue; Laurel; Lee; Leslie; Letcher; Lincoln; Livingston; Logan; Lyon; Madison; Magoffin; Marion; Marshall; Martin; McCracken; McCreary; McLean; Meade; Mercer; Metcalfe; Monroe; Muhlenberg; Nelson; Ohio; Owsley; Perry; Pike; Powell; Pulaski; Rockcastle; Russell; Simpson; Taylor; Todd; Trigg; Union; Warren; Washington; Wayne; Webster; Whitley; Wolfe.',36.49,38.17,-89.57,-81.95,0); +INSERT INTO "area" VALUES('EPSG','2204','USA - Louisiana - SPCS - N','United States (USA) - Louisiana - counties of Avoyelles; Bienville; Bossier; Caddo; Caldwell; Catahoula; Claiborne; Concordia; De Soto; East Carroll; Franklin; Grant; Jackson; La Salle; Lincoln; Madison; Morehouse; Natchitoches; Ouachita; Rapides; Red River; Richland; Sabine; Tensas; Union; Vernon; Webster; West Carroll; Winn.',30.85,33.03,-94.05,-90.86,0); +INSERT INTO "area" VALUES('EPSG','2205','USA - Louisiana - SPCS27 - S','United States (USA) - Louisiana - counties of Acadia; Allen; Ascension; Assumption; Beauregard; Calcasieu; Cameron; East Baton Rouge; East Feliciana; Evangeline; Iberia; Iberville; Jefferson; Jefferson Davis; Lafayette; LaFourche; Livingston; Orleans; Plaquemines; Pointe Coupee; St Bernard; St Charles; St Helena; St James; St John the Baptist; St Landry; St Martin; St Mary; St Tammany; Tangipahoa; Terrebonne; Vermilion; Washington; West Baton Rouge; West Feliciana. Also Gulf of Mexico outer continental shelf (GoM OCS) protraction areas Sabine Pass (LA); West Cameron; East Cameron; Vermilion; South Marsh Island; Eugene Island; Ship Shoal; South Pelto; Bay Marchand; South Timbalier; Grand Isle; West Delta; South Pass; Main Pass; Breton Sound; Chandeleur.',27.82,31.07,-93.94,-87.76,0); +INSERT INTO "area" VALUES('EPSG','2206','USA - Maine - SPCS - E','United States (USA) - Maine - counties of Aroostook; Hancock; Knox; Penobscot; Piscataquis; Waldo; Washington.',43.88,47.47,-70.03,-66.91,0); +INSERT INTO "area" VALUES('EPSG','2207','USA - Maine - SPCS - W','United States (USA) - Maine - counties of Androscoggin; Cumberland; Franklin; Kennebec; Lincoln; Oxford; Sagadahoc; Somerset; York.',43.04,46.58,-71.09,-69.26,0); +INSERT INTO "area" VALUES('EPSG','2208','USA - Massachusetts - SPCS - islands','United States (USA) - Massachusetts offshore - counties of Dukes; Nantucket.',41.19,41.51,-70.91,-69.89,0); +INSERT INTO "area" VALUES('EPSG','2209','USA - Massachusetts - SPCS - mainland','United States (USA) - Massachusetts onshore - counties of Barnstable; Berkshire; Bristol; Essex; Franklin; Hampden; Hampshire; Middlesex; Norfolk; Plymouth; Suffolk; Worcester.',41.46,42.89,-73.5,-69.86,0); +INSERT INTO "area" VALUES('EPSG','2210','USA - Montana - SPCS27 - C','United States (USA) - Montana - counties of Cascade; Dawson; Fergus; Garfield; Judith Basin; Lake; Lewis and Clark; McCone; Meagher; Mineral; Missoula; Petroleum; Powell; Prairie; Richland; Sanders; Wibaux.',46.17,48.26,-116.06,-104.04,0); +INSERT INTO "area" VALUES('EPSG','2211','USA - Montana - SPCS27 - N','United States (USA) - Montana north of approximately 47°50''N - counties of Blaine; Chouteau; Daniels; Flathead; Glacier; Hill; Liberty; Lincoln; Phillips; Pondera; Roosevelt; Sheridan; Teton; Toole; Valley.',47.41,49.01,-116.07,-104.04,0); +INSERT INTO "area" VALUES('EPSG','2212','USA - Montana - SPCS27 - S','United States (USA) - Montana - counties of Beaverhead; Big Horn; Broadwater; Carbon; Carter; Custer; Deer Lodge; Fallon; Gallatin; Golden Valley; Granite; Jefferson; Madison; Musselshell; Park; Powder River; Ravalli; Rosebud; Silver Bow; Stillwater; Sweet Grass; Treasure; Wheatland; Yellowstone.',44.35,46.87,-114.57,-104.04,0); +INSERT INTO "area" VALUES('EPSG','2213','USA - Minnesota - SPCS - C','United States (USA) - Minnesota - counties of Aitkin; Becker; Benton; Carlton; Cass; Chisago; Clay; Crow Wing; Douglas; Grant; Hubbard; Isanti; Kanabec; Mille Lacs; Morrison; Otter Tail; Pine; Pope; Stearns; Stevens; Todd; Traverse; Wadena; Wilkin.',45.28,47.48,-96.86,-92.29,0); +INSERT INTO "area" VALUES('EPSG','2214','USA - Minnesota - SPCS - N','United States (USA) - Minnesota - counties of Beltrami; Clearwater; Cook; Itasca; Kittson; Koochiching; Lake; Lake of the Woods; Mahnomen; Marshall; Norman; Pennington; Polk; Red Lake; Roseau; St Louis.',46.64,49.38,-97.22,-89.49,0); +INSERT INTO "area" VALUES('EPSG','2215','USA - Minnesota - SPCS - S','United States (USA) - Minnesota - counties of Anoka; Big Stone; Blue Earth; Brown; Carver; Chippewa; Cottonwood; Dakota; Dodge; Faribault; Fillmore; Freeborn; Goodhue; Hennepin; Houston; Jackson; Kandiyohi; Lac Qui Parle; Le Sueur; Lincoln; Lyon; Martin; McLeod; Meeker; Mower; Murray; Nicollet; Nobles; Olmsted; Pipestone; Ramsey; Redwood; Renville; Rice; Rock; Scott; Sherburne; Sibley; Steele; Swift; Wabasha; Waseca; Washington; Watonwan; Winona; Wright; Yellow Medicine.',43.49,45.59,-96.85,-91.21,0); +INSERT INTO "area" VALUES('EPSG','2216','USA - Mississippi - SPCS - E','United States (USA) - Mississippi - counties of Alcorn; Attala; Benton; Calhoun; Chickasaw; Choctaw; Clarke; Clay; Covington; Forrest; George; Greene; Hancock; Harrison; Itawamba; Jackson; Jasper; Jones; Kemper; Lafayette; Lamar; Lauderdale; Leake; Lee; Lowndes; Marshall; Monroe; Neshoba; Newton; Noxubee; Oktibbeha; Pearl River; Perry; Pontotoc; Prentiss; Scott; Smith; Stone; Tippah; Tishomingo; Union; Wayne; Webster; Winston.',30.01,35.01,-89.97,-88.09,0); +INSERT INTO "area" VALUES('EPSG','2217','USA - Mississippi - SPCS - W','United States (USA) - Mississippi - counties of Adams; Amite; Bolivar; Carroll; Claiborne; Coahoma; Copiah; De Soto; Franklin; Grenada; Hinds; Holmes; Humphreys; Issaquena; Jefferson; Jefferson Davis; Lawrence; Leflore; Lincoln; Madison; Marion; Montgomery; Panola; Pike; Quitman; Rankin; Sharkey; Simpson; Sunflower; Tallahatchie; Tate; Tunica; Walthall; Warren; Washington; Wilkinson; Yalobusha; Yazoo.',31.0,35.01,-91.65,-89.37,0); +INSERT INTO "area" VALUES('EPSG','2218','USA - Missouri - SPCS - C','United States (USA) - Missouri - counties of Adair; Audrain; Benton; Boone; Callaway; Camden; Carroll; Chariton; Christian; Cole; Cooper; Dallas; Douglas; Greene; Grundy; Hickory; Howard; Howell; Knox; Laclede; Linn; Livingston; Macon; Maries; Mercer; Miller; Moniteau; Monroe; Morgan; Osage; Ozark; Pettis; Phelps; Polk; Pulaski; Putnam; Randolph; Saline; Schuyler; Scotland; Shelby; Stone; Sullivan; Taney; Texas; Webster; Wright.',36.48,40.61,-93.79,-91.41,0); +INSERT INTO "area" VALUES('EPSG','2219','USA - Missouri - SPCS - E','United States (USA) - Missouri - counties of Bollinger; Butler; Cape Girardeau; Carter; Clark; Crawford; Dent; Dunklin; Franklin; Gasconade; Iron; Jefferson; Lewis; Lincoln; Madison; Marion; Mississippi; Montgomery; New Madrid; Oregon; Pemiscot; Perry; Pike; Ralls; Reynolds; Ripley; Scott; Shannon; St Charles; St Francois; St Louis; Ste. Genevieve; Stoddard; Warren; Washington; Wayne.',35.98,40.61,-91.97,-89.1,0); +INSERT INTO "area" VALUES('EPSG','2220','USA - Missouri - SPCS - W','United States (USA) - Missouri - counties of Andrew; Atchison; Barry; Barton; Bates; Buchanan; Caldwell; Cass; Cedar; Clay; Clinton; Dade; Daviess; De Kalb; Gentry; Harrison; Henry; Holt; Jackson; Jasper; Johnson; Lafayette; Lawrence; McDonald; Newton; Nodaway; Platte; Ray; St Clair; Vernon; Worth.',36.48,40.59,-95.77,-93.48,0); +INSERT INTO "area" VALUES('EPSG','2221','USA - Nebraska - SPCS27 - N','United States (USA) - Nebraska - counties of Antelope; Blaine; Box Butte; Boyd; Brown; Burt; Cedar; Cherry; Cuming; Dakota; Dawes; Dixon; Garfield; Grant; Holt; Hooker; Keya Paha; Knox; Loup; Madison; Pierce; Rock; Sheridan; Sioux; Stanton; Thomas; Thurston; Wayne; Wheeler.',41.68,43.01,-104.06,-96.07,0); +INSERT INTO "area" VALUES('EPSG','2222','USA - Nebraska - SPCS27 - S','United States (USA) - Nebraska - counties of Adams; Arthur; Banner; Boone; Buffalo; Butler; Cass; Chase; Cheyenne; Clay; Colfax; Custer; Dawson; Deuel; Dodge; Douglas; Dundy; Fillmore; Franklin; Frontier; Furnas; Gage; Garden; Gosper; Greeley; Hall; Hamilton; Harlan; Hayes; Hitchcock; Howard; Jefferson; Johnson; Kearney; Keith; Kimball; Lancaster; Lincoln; Logan; McPherson; Merrick; Morrill; Nance; Nemaha; Nuckolls; Otoe; Pawnee; Perkins; Phelps; Platte; Polk; Red Willow; Richardson; Saline; Sarpy; Saunders; Scotts Bluff; Seward; Sherman; Thayer; Valley; Washington; Webster; York.',39.99,42.01,-104.06,-95.3,0); +INSERT INTO "area" VALUES('EPSG','2223','USA - Nevada - SPCS - C','United States (USA) - Nevada - counties of Lander; Nye.',36.0,41.0,-118.19,-114.99,0); +INSERT INTO "area" VALUES('EPSG','2224','USA - Nevada - SPCS - E','United States (USA) - Nevada - counties of Clark; Elko; Eureka; Lincoln; White Pine.',34.99,42.0,-117.01,-114.03,0); +INSERT INTO "area" VALUES('EPSG','2225','USA - Nevada - SPCS - W','United States (USA) - Nevada - counties of Churchill; Douglas; Esmeralda; Humboldt; Lyon; Mineral; Pershing; Storey; Washoe.',36.95,42.0,-120.0,-116.99,0); +INSERT INTO "area" VALUES('EPSG','2226','Canada - Newfoundland - east of 54.5°W','Canada - Newfoundland - onshore east of 54°30''W.',46.56,49.71,-54.5,-52.54,0); +INSERT INTO "area" VALUES('EPSG','2227','Canada - Newfoundland and Labrador - 57.5°W to 54.5°W','Canada - Newfoundland and Labrador between 57°30''W and 54°30''W.',46.81,54.71,-57.5,-54.49,0); +INSERT INTO "area" VALUES('EPSG','2228','USA - New Mexico - SPCS - E','United States (USA) - New Mexico - counties of Chaves; Colfax; Curry; De Baca; Eddy; Guadalupe; Harding; Lea; Mora; Quay; Roosevelt; San Miguel; Union.',32.0,37.0,-105.72,-102.99,0); +INSERT INTO "area" VALUES('EPSG','2229','USA - New Mexico - SPCS27 - C','United States (USA) - New Mexico - counties of Bernalillo; Dona Ana; Lincoln; Los Alamos; Otero; Rio Arriba; Sandoval; Santa Fe; Socorro; Taos; Torrance.',31.78,37.0,-107.73,-104.83,0); +INSERT INTO "area" VALUES('EPSG','2230','USA - New Mexico - SPCS27 - W','United States (USA) - New Mexico - counties of Catron; Cibola; Grant; Hidalgo; Luna; McKinley; San Juan; Sierra; Valencia.',31.33,37.0,-109.06,-106.32,0); +INSERT INTO "area" VALUES('EPSG','2231','USA - New Mexico - SPCS83 - C','United States (USA) - New Mexico - counties of Bernalillo; Dona Ana; Lincoln; Los Alamos; Otero; Rio Arriba; Sandoval; Santa Fe; Socorro; Taos; Torrance; Valencia.',31.78,37.0,-107.73,-104.84,0); +INSERT INTO "area" VALUES('EPSG','2232','USA - New Mexico - SPCS83 - W','United States (USA) - New Mexico - counties of Catron; Cibola; Grant; Hidalgo; Luna; McKinley; San Juan; Sierra.',31.33,37.0,-109.06,-106.32,0); +INSERT INTO "area" VALUES('EPSG','2233','USA - New York - SPCS - C','United States (USA) - New York - counties of Broome; Cayuga; Chemung; Chenango; Cortland; Jefferson; Lewis; Madison; Oneida; Onondaga; Ontario; Oswego; Schuyler; Seneca; Steuben; Tioga; Tompkins; Wayne; Yates.',41.99,44.41,-77.75,-75.04,0); +INSERT INTO "area" VALUES('EPSG','2234','USA - New York - SPCS - E','United States (USA) - New York mainland - counties of Albany; Clinton; Columbia; Delaware; Dutchess; Essex; Franklin; Fulton; Greene; Hamilton; Herkimer; Montgomery; Orange; Otsego; Putnam; Rensselaer; Rockland; Saratoga; Schenectady; Schoharie; St Lawrence; Sullivan; Ulster; Warren; Washington; Westchester.',40.88,45.02,-75.87,-73.23,0); +INSERT INTO "area" VALUES('EPSG','2235','USA - New York - SPCS - Long Island','United States (USA) - New York - counties of Bronx; Kings; Nassau; New York; Queens; Richmond; Suffolk.',40.47,41.3,-74.26,-71.8,0); +INSERT INTO "area" VALUES('EPSG','2236','USA - New York - SPCS - W','United States (USA) - New York - counties of Allegany; Cattaraugus; Chautauqua; Erie; Genesee; Livingston; Monroe; Niagara; Orleans; Wyoming.',41.99,43.64,-79.77,-77.36,0); +INSERT INTO "area" VALUES('EPSG','2237','USA - North Dakota - SPCS - N','United States (USA) - North Dakota - counties of Benson; Bottineau; Burke; Cavalier; Divide; Eddy; Foster; Grand Forks; Griggs; McHenry; McKenzie; McLean; Mountrial; Nelson; Pembina; Pierce; Ramsey; Renville; Rolette; Sheridan; Steele; Towner; Traill; Walsh; Ward; Wells; Williams.',47.15,49.01,-104.07,-96.83,0); +INSERT INTO "area" VALUES('EPSG','2238','USA - North Dakota - SPCS - S','United States (USA) - North Dakota - counties of Adams; Barnes; Billings; Bowman; Burleigh; Cass; Dickey; Dunn; Emmons; Golden Valley; Grant; Hettinger; Kidder; La Moure; Logan; McIntosh; Mercer; Morton; Oliver; Ransom; Richland; Sargent; Sioux; Slope; Stark; Stutsman.',45.93,47.83,-104.05,-96.55,0); +INSERT INTO "area" VALUES('EPSG','2239','USA - Ohio - SPCS - N','United States (USA) - Ohio - counties of Allen;Ashland; Ashtabula; Auglaize; Carroll; Columbiana; Coshocton; Crawford; Cuyahoga; Defiance; Delaware; Erie; Fulton; Geauga; Hancock; Hardin; Harrison; Henry; Holmes; Huron; Jefferson; Knox; Lake; Logan; Lorain; Lucas; Mahoning; Marion; Medina; Mercer; Morrow; Ottawa; Paulding; Portage; Putnam; Richland; Sandusky; Seneca; Shelby; Stark; Summit; Trumbull; Tuscarawas; Union; Van Wert; Wayne; Williams; Wood; Wyandot.',40.1,42.33,-84.81,-80.51,0); +INSERT INTO "area" VALUES('EPSG','2240','USA - Ohio - SPCS - S','United States (USA) - Ohio - counties of Adams; Athens; Belmont; Brown; Butler; Champaign; Clark; Clermont; Clinton; Darke; Fairfield; Fayette; Franklin; Gallia; Greene; Guernsey; Hamilton; Highland; Hocking; Jackson; Lawrence; Licking; Madison; Meigs; Miami; Monroe; Montgomery; Morgan; Muskingum; Noble; Perry; Pickaway; Pike; Preble; Ross; Scioto; Vinton; Warren; Washington.',38.4,40.36,-84.83,-80.7,0); +INSERT INTO "area" VALUES('EPSG','2241','USA - Oklahoma - SPCS - N','United States (USA) - Oklahoma - counties of Adair; Alfalfa; Beaver; Blaine; Canadian; Cherokee; Cimarron; Craig; Creek; Custer; Delaware; Dewey; Ellis; Garfield; Grant; Harper; Kay; Kingfisher; Lincoln; Logan; Major; Mayes; Muskogee; Noble; Nowata; Okfuskee; Oklahoma; Okmulgee; Osage; Ottawa; Pawnee; Payne; Roger Mills; Rogers; Sequoyah; Texas; Tulsa; Wagoner; Washington; Woods; Woodward.',35.27,37.01,-103.0,-94.42,0); +INSERT INTO "area" VALUES('EPSG','2242','USA - Oklahoma - SPCS - S','United States (USA) - Oklahoma - counties of Atoka; Beckham; Bryan; Caddo; Carter; Choctaw; Cleveland; Coal; Comanche; Cotton; Garvin; Grady; Greer; Harmon; Haskell; Hughes; Jackson; Jefferson; Johnston; Kiowa; Latimer; Le Flore; Love; Marshall; McClain; McCurtain; McIntosh; Murray; Pittsburg; Pontotoc; Pottawatomie; Pushmataha; Seminole; Stephens; Tillman; Washita.',33.62,35.57,-100.0,-94.42,0); +INSERT INTO "area" VALUES('EPSG','2243','USA - Oregon - SPCS - N','United States (USA) - Oregon - counties of Baker; Benton; Clackamas; Clatsop; Columbia; Gilliam; Grant; Hood River; Jefferson; Lincoln; Linn; Marion; Morrow; Multnomah; Polk; Sherman; Tillamook; Umatilla; Union; Wallowa; Wasco; Washington; Wheeler; Yamhill.',43.95,46.26,-124.17,-116.47,0); +INSERT INTO "area" VALUES('EPSG','2244','USA - Oregon - SPCS - S','United States (USA) - Oregon - counties of Coos; Crook; Curry; Deschutes; Douglas; Harney; Jackson; Josephine; Klamath; Lake; Lane; Malheur.',41.98,44.56,-124.6,-116.9,0); +INSERT INTO "area" VALUES('EPSG','2245','USA - Pennsylvania - SPCS - N','United States (USA) - Pennsylvania - counties of Bradford; Cameron; Carbon; Centre; Clarion; Clearfield; Clinton; Columbia; Crawford; Elk; Erie; Forest; Jefferson; Lackawanna; Luzerne; Lycoming; McKean; Mercer; Monroe; Montour; Northumberland; Pike; Potter; Sullivan; Susquehanna; Tioga; Union; Venango; Warren; Wayne; Wyoming.',40.6,42.53,-80.53,-74.7,0); +INSERT INTO "area" VALUES('EPSG','2246','USA - Pennsylvania - SPCS - S','United States (USA) - Pennsylvania - counties of Adams; Allegheny; Armstrong; Beaver; Bedford; Berks; Blair; Bucks; Butler; Cambria; Chester; Cumberland; Dauphin; Delaware; Fayette; Franklin; Fulton; Greene; Huntingdon; Indiana; Juniata; Lancaster; Lawrence; Lebanon; Lehigh; Mifflin; Montgomery; Northampton; Perry; Philadelphia; Schuylkill; Snyder; Somerset; Washington; Westmoreland; York.',39.71,41.18,-80.53,-74.72,0); +INSERT INTO "area" VALUES('EPSG','2247','USA - South Carolina - SPCS27 - N','United States (USA) - South Carolina - counties of Abbeville; Anderson; Calhoun; Cherokee; Chester; Chesterfield; Darlington; Dillon; Edgefield; Fairfield; Florence; Greenville; Greenwood; Horry; Kershaw; Lancaster; Laurens; Lee; Lexington; Marion; Marlboro; McCormick; Newberry; Oconee; Pickens; Richland; Saluda; Spartanburg; Sumter; Union; York.',33.46,35.21,-83.36,-78.52,0); +INSERT INTO "area" VALUES('EPSG','2248','USA - South Carolina - SPCS27 - S','United States (USA) - South Carolina - counties of Aiken; Allendale; Bamberg; Barnwell; Beaufort; Berkeley; Charleston; Clarendon; Colleton; Dorchester; Georgetown; Hampton; Jasper; Orangeburg; Williamsburg.',32.05,33.95,-82.03,-78.95,0); +INSERT INTO "area" VALUES('EPSG','2249','USA - South Dakota - SPCS - N','United States (USA) - South Dakota - counties of Beadle; Brookings; Brown; Butte; Campbell; Clark; Codington; Corson; Day; Deuel; Dewey; Edmunds; Faulk; Grant; Hamlin; Hand; Harding; Hyde; Kingsbury; Lawrence; Marshall; McPherson; Meade; Perkins; Potter; Roberts; Spink; Sully; Walworth; Ziebach.',44.14,45.95,-104.07,-96.45,0); +INSERT INTO "area" VALUES('EPSG','2250','USA - South Dakota - SPCS - S','United States (USA) - South Dakota - counties of Aurora; Bennett; Bon Homme; Brule; Buffalo; Charles Mix; Clay; Custer; Davison; Douglas; Fall River; Gregory; Haakon; Hanson; Hughes; Hutchinson; Jackson; Jerauld; Jones; Lake; Lincoln; Lyman; McCook; Mellette; Miner; Minnehaha; Moody; Pennington; Sanborn; Shannon; Stanley; Todd; Tripp; Turner; Union; Yankton.',42.48,44.79,-104.06,-96.43,0); +INSERT INTO "area" VALUES('EPSG','2251','Caribbean - Puerto Rico and US Virgin Islands','Puerto Rico and US Virgin Islands - onshore and offshore.',14.92,21.86,-68.49,-63.88,0); +INSERT INTO "area" VALUES('EPSG','2252','USA - Texas - SPCS - C','United States (USA) - Texas - counties of Anderson; Angelina; Bastrop; Bell; Blanco; Bosque; Brazos; Brown; Burleson; Burnet; Cherokee; Coke; Coleman; Comanche; Concho; Coryell; Crane; Crockett; Culberson; Ector; El Paso; Falls; Freestone; Gillespie; Glasscock; Grimes; Hamilton; Hardin; Houston; Hudspeth; Irion; Jasper; Jeff Davis; Kimble; Lampasas; Lee; Leon; Liberty; Limestone; Llano; Loving; Madison; Mason; McCulloch; McLennan; Menard; Midland; Milam; Mills; Montgomery; Nacogdoches; Newton; Orange; Pecos; Polk; Reagan; Reeves; Robertson; Runnels; Sabine; San Augustine; San Jacinto; San Saba; Schleicher; Shelby; Sterling; Sutton; Tom Green; Travis; Trinity; Tyler; Upton; Walker; Ward; Washington; Williamson; Winkler.',29.78,32.27,-106.66,-93.5,0); +INSERT INTO "area" VALUES('EPSG','2253','USA - Texas - SPCS - N','United States (USA) - Texas - counties of: Armstrong; Briscoe; Carson; Castro; Childress; Collingsworth; Dallam; Deaf Smith; Donley; Gray; Hall; Hansford; Hartley; Hemphill; Hutchinson; Lipscomb; Moore; Ochiltree; Oldham; Parmer; Potter; Randall; Roberts; Sherman; Swisher; Wheeler.',34.3,36.5,-103.03,-99.99,0); +INSERT INTO "area" VALUES('EPSG','2254','USA - Texas - SPCS - NC','United States (USA) - Texas - counties of: Andrews; Archer; Bailey; Baylor; Borden; Bowie; Callahan; Camp; Cass; Clay; Cochran; Collin; Cooke; Cottle; Crosby; Dallas; Dawson; Delta; Denton; Dickens; Eastland; Ellis; Erath; Fannin; Fisher; Floyd; Foard; Franklin; Gaines; Garza; Grayson; Gregg; Hale; Hardeman; Harrison; Haskell; Henderson; Hill; Hockley; Hood; Hopkins; Howard; Hunt; Jack; Johnson; Jones; Kaufman; Kent; King; Knox; Lamar; Lamb; Lubbock; Lynn; Marion; Martin; Mitchell; Montague; Morris; Motley; Navarro; Nolan; Palo Pinto; Panola; Parker; Rains; Red River; Rockwall; Rusk; Scurry; Shackelford; Smith; Somervell; Stephens; Stonewall; Tarrant; Taylor; Terry; Throckmorton; Titus; Upshur; Van Zandt; Wichita; Wilbarger; Wise; Wood; Yoakum; Young.',31.72,34.58,-103.07,-94.0,0); +INSERT INTO "area" VALUES('EPSG','2255','USA - Texas - SPCS27 - S','United States (USA) - Texas - counties of Brooks; Cameron; Duval; Hidalgo; Jim Hogg; Jim Wells; Kenedy; Kleberg; Nueces; San Patricio; Starr; Webb; Willacy; Zapata. Gulf of Mexico outer continental shelf (GoM OCS) protraction areas: South Padre Island; North Padre Island; Mustang Island.',25.83,28.21,-100.2,-95.37,0); +INSERT INTO "area" VALUES('EPSG','2256','USA - Texas - SPCS27 - SC','United States (USA) - Texas - counties of Aransas; Atascosa; Austin; Bandera; Bee; Bexar; Brazoria; Brewster; Caldwell; Calhoun; Chambers; Colorado; Comal; De Witt; Dimmit; Edwards; Fayette; Fort Bend; Frio; Galveston; Goliad; Gonzales; Guadalupe; Harris; Hays; Jackson; Jefferson; Karnes; Kendall; Kerr; Kinney; La Salle; Lavaca; Live Oak; Matagorda; Maverick; McMullen; Medina; Presidio; Real; Refugio; Terrell; Uvalde; Val Verde; Victoria; Waller; Wharton; Wilson; Zavala. Gulf of Mexico outer continental shelf (GoM OCS) protraction areas: Matagorda Island; Brazos; Galveston; High Island, Sabine Pass (TX).',27.78,30.67,-105.0,-93.41,0); +INSERT INTO "area" VALUES('EPSG','2257','USA - Utah - SPCS - C','United States (USA) - Utah - counties of Carbon; Duchesne; Emery; Grand; Juab; Millard; Salt Lake; Sanpete; Sevier; Tooele; Uintah; Utah; Wasatch.',38.49,41.08,-114.05,-109.04,0); +INSERT INTO "area" VALUES('EPSG','2258','USA - Utah - SPCS - N','United States (USA) - Utah - counties of Box Elder; Cache; Daggett; Davis; Morgan; Rich; Summit; Weber.',40.55,42.01,-114.04,-109.04,0); +INSERT INTO "area" VALUES('EPSG','2259','USA - Utah - SPCS - S','United States (USA) - Utah - counties of Beaver; Garfield; Iron; Kane; Piute; San Juan; Washington; Wayne.',36.99,38.58,-114.05,-109.04,0); +INSERT INTO "area" VALUES('EPSG','2260','USA - Virginia - SPCS - N','United States (USA) - Virginia - counties of Arlington; Augusta; Bath; Caroline; Clarke; Culpeper; Fairfax; Fauquier; Frederick; Greene; Highland; King George; Loudoun; Madison; Orange; Page; Prince William; Rappahannock; Rockingham; Shenandoah; Spotsylvania; Stafford; Warren; Westmoreland.',37.77,39.46,-80.06,-76.51,0); +INSERT INTO "area" VALUES('EPSG','2261','USA - Virginia - SPCS - S','United States (USA) - Virginia - counties of Accomack; Albemarle; Alleghany; Amelia; Amherst; Appomattox; Bedford; Bland; Botetourt; Bristol; Brunswick; Buchanan; Buckingham; Campbell; Carroll; Charles City; Charlotte; Chesapeake; Chesterfield; Colonial Heights; Craig; Cumberland; Dickenson; Dinwiddie; Essex; Floyd; Fluvanna; Franklin; Giles; Gloucester; Goochland; Grayson; Greensville; Halifax; Hampton; Hanover; Henrico; Henry; Isle of Wight; James City; King and Queen; King William; Lancaster; Lee; Louisa; Lunenburg; Lynchburg; Mathews; Mecklenburg; Middlesex; Montgomery; Nelson; New Kent; Newport News; Norfolk; Northampton; Northumberland; Norton; Nottoway; Patrick; Petersburg; Pittsylvania; Portsmouth; Powhatan; Prince Edward; Prince George; Pulaski; Richmond; Roanoke; Rockbridge; Russell; Scott; Smyth; Southampton; Suffolk; Surry; Sussex; Tazewell; Washington; Wise; Wythe; York.',36.54,38.28,-83.68,-75.31,0); +INSERT INTO "area" VALUES('EPSG','2262','USA - Washington - SPCS27 - N','United States (USA) - Washington - counties of Chelan; Clallam; Douglas; Ferry; Island; Jefferson; King; Kitsap; Lincoln; Okanogan; Pend Oreille; San Juan; Skagit; Snohomish; Spokane; Stevens; Whatcom.',47.08,49.05,-124.79,-117.02,0); +INSERT INTO "area" VALUES('EPSG','2263','USA - Washington - SPCS27 - S','United States (USA) - Washington - counties of Adams; Asotin; Benton; Clark; Columbia; Cowlitz; Franklin; Garfield; Grant; Grays Harbor; Kittitas; Klickitat; Lewis; Mason; Pacific; Pierce; Skamania; Thurston; Wahkiakum; Walla Walla; Whitman; Yakima.',45.54,47.96,-124.4,-116.91,0); +INSERT INTO "area" VALUES('EPSG','2264','USA - West Virginia - SPCS - N','United States (USA) - West Virginia - counties of Barbour; Berkeley; Brooke; Doddridge; Grant; Hampshire; Hancock; Hardy; Harrison; Jefferson; Marion; Marshall; Mineral; Monongalia; Morgan; Ohio; Pleasants; Preston; Ritchie; Taylor; Tucker; Tyler; Wetzel; Wirt; Wood.',38.76,40.64,-81.76,-77.72,0); +INSERT INTO "area" VALUES('EPSG','2265','USA - West Virginia - SPCS - S','United States (USA) - West Virginia - counties of Boone; Braxton; Cabell; Calhoun; Clay; Fayette; Gilmer; Greenbrier; Jackson; Kanawha; Lewis; Lincoln; Logan; Mason; McDowell; Mercer; Mingo; Monroe; Nicholas; Pendleton; Pocahontas; Putnam; Raleigh; Randolph; Roane; Summers; Upshur; Wayne; Webster; Wyoming.',37.2,39.17,-82.65,-79.05,0); +INSERT INTO "area" VALUES('EPSG','2266','USA - Wisconsin - SPCS - C','United States (USA) - Wisconsin - counties of Barron; Brown; Buffalo; Chippewa; Clark; Door; Dunn; Eau Claire; Jackson; Kewaunee; Langlade; Lincoln; Marathon; Marinette; Menominee; Oconto; Outagamie; Pepin; Pierce; Polk; Portage; Rusk; Shawano; St Croix; Taylor; Trempealeau; Waupaca; Wood.',43.98,45.8,-92.89,-86.25,0); +INSERT INTO "area" VALUES('EPSG','2267','USA - Wisconsin - SPCS - N','United States (USA) - Wisconsin - counties of Ashland; Bayfield; Burnett; Douglas; Florence; Forest; Iron; Oneida; Price; Sawyer; Vilas; Washburn.',45.37,47.31,-92.89,-88.05,0); +INSERT INTO "area" VALUES('EPSG','2268','USA - Wisconsin - SPCS - S','United States (USA) - Wisconsin - counties of Adams; Calumet; Columbia; Crawford; Dane; Dodge; Fond Du Lac; Grant; Green; Green Lake; Iowa; Jefferson; Juneau; Kenosha; La Crosse; Lafayette; Manitowoc; Marquette; Milwaukee; Monroe; Ozaukee; Racine; Richland; Rock; Sauk; Sheboygan; Vernon; Walworth; Washington; Waukesha; Waushara; Winnebago.',42.48,44.33,-91.43,-86.95,0); +INSERT INTO "area" VALUES('EPSG','2269','USA - Wyoming - SPCS - E','United States (USA) - Wyoming - counties of Albany; Campbell; Converse; Crook; Goshen; Laramie; Niobrara; Platte; Weston.',40.99,45.01,-106.33,-104.05,0); +INSERT INTO "area" VALUES('EPSG','2270','USA - Wyoming - SPCS - EC','United States (USA) - Wyoming - counties of Big Horn; Carbon; Johnson; Natrona; Sheridan; Washakie.',40.99,45.01,-108.63,-106.0,0); +INSERT INTO "area" VALUES('EPSG','2271','USA - Wyoming - SPCS - W','United States (USA) - Wyoming - counties of Lincoln; Sublette; Teton; Uinta.',40.99,44.67,-111.06,-109.04,0); +INSERT INTO "area" VALUES('EPSG','2272','USA - Wyoming - SPCS - WC','United States (USA) - Wyoming - counties of Fremont; Hot Springs; Park; Sweetwater.',40.99,45.01,-111.06,-107.5,0); +INSERT INTO "area" VALUES('EPSG','2273','USA - Washington - SPCS83 - N','United States (USA) - Washington - counties of Chelan; Clallam; Douglas; Ferry; Grant north of approximately 47°30''N; Island; Jefferson; King; Kitsap; Lincoln; Okanogan; Pend Oreille; San Juan; Skagit; Snohomish; Spokane; Stevens; Whatcom.',47.08,49.05,-124.79,-117.02,0); +INSERT INTO "area" VALUES('EPSG','2274','USA - Washington - SPCS83 - S','United States (USA) - Washington - counties of Adams; Asotin; Benton; Clark; Columbia; Cowlitz; Franklin; Garfield; Grant south of approximately 47°30''N; Grays Harbor; Kittitas; Klickitat; Lewis; Mason; Pacific; Pierce; Skamania; Thurston; Wahkiakum; Walla Walla; Whitman; Yakima.',45.54,47.61,-124.4,-116.91,0); +INSERT INTO "area" VALUES('EPSG','2275','Canada - Newfoundland and Labrador - 60°W to 57.5°W','Canada - Newfoundland west of 57°30''W.',47.5,50.54,-59.48,-57.5,0); +INSERT INTO "area" VALUES('EPSG','2276','Canada - Quebec and Labrador - 63°W to 60°W','Canada - Quebec and Labrador between 63°W and 60°W.',47.16,58.92,-63.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','2277','Canada - Quebec and Labrador - 66°W to 63°W','Canada - Quebec and Labrador between 66°W and 63°W.',47.95,60.52,-66.0,-63.0,0); +INSERT INTO "area" VALUES('EPSG','2278','Canada - Quebec and Labrador - 69°W to 66°W','Canada - Quebec and Labrador between 69°W and 66°W.',47.31,59.0,-69.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','2279','Canada - Quebec and Ontario - 75°W to 72°W','Canada - Quebec between 75°W and 72°W.; Canada - Ontario - east of 75°W.',44.98,62.53,-75.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','2280','Canada - Quebec and Ontario - 78°W to 75°W','Canada - Quebec and Ontario - between 78°W and 75°W.',43.63,62.65,-78.0,-75.0,0); +INSERT INTO "area" VALUES('EPSG','2281','Canada - Quebec and Ontario - MTM zone 10','Canada - Quebec west of 78°W; Canada - Ontario - between 79°30''W and 78°W in area to north of 47°N; between 80°15''W and 78°W in area between 46°N and 47°N; between 81°W and 78°W in area south of 46°N.',42.26,62.45,-81.0,-78.0,0); +INSERT INTO "area" VALUES('EPSG','2282','Cote d''Ivoire (Ivory Coast) - Abidjan area','Côte d''Ivoire (Ivory Coast) - Abidjan area.',5.15,5.54,-4.22,-3.85,0); +INSERT INTO "area" VALUES('EPSG','2283','Australia - Australian Capital Territory','Australia - Australian Capital Territory.',-35.93,-35.12,148.76,149.4,0); +INSERT INTO "area" VALUES('EPSG','2284','Australia - Northern Territory','Australia - Northern Territory.',-26.01,-10.86,128.99,138.0,0); +INSERT INTO "area" VALUES('EPSG','2285','Australia - Victoria','Australia - Victoria.',-39.2,-33.98,140.96,150.04,0); +INSERT INTO "area" VALUES('EPSG','2286','Australia - New South Wales and Victoria','Australia - New South Wales and Victoria.',-39.2,-28.15,140.96,153.69,0); +INSERT INTO "area" VALUES('EPSG','2287','Australia - SE Australia (ACT NSW Vic)','Australia - Australian Capital Territory, New South Wales, Victoria.',-39.2,-28.15,140.96,153.69,0); +INSERT INTO "area" VALUES('EPSG','2288','American Samoa - Tutuila island','American Samoa - Tutuila island.',-14.43,-14.2,-170.88,-170.51,0); +INSERT INTO "area" VALUES('EPSG','2289','American Samoa - Ofu, Olesega and Ta''u islands','American Samoa - Ofu, Olesega and Ta''u islands.',-14.31,-14.11,-169.73,-169.38,0); +INSERT INTO "area" VALUES('EPSG','2290','Canada - Quebec, Newfoundland and Labrador - MTM zone 3','Canada - Newfoundland and Labrador between 60°W and 57°30''W; Canada - Quebec east of 60°W.',47.5,55.38,-60.0,-57.1,0); +INSERT INTO "area" VALUES('EPSG','2291','Australasia - Australia and PNG - 150°E to 156°E','Australia - onshore and offshore between 150°E and 156°E. Papua New Guinea onshore east of 150°E.',-46.44,-2.32,150.0,156.0,0); +INSERT INTO "area" VALUES('EPSG','2292','Asia - Bangladesh; Myanmar - onshore 15°N to 21°N','Bangladesh - onshore south of 21°N; Myanmar (Burma) - onshore between 15°N and 21°N.',15.0,21.01,92.1,100.65,0); +INSERT INTO "area" VALUES('EPSG','2293','Myanmar (Burma) - onshore south of 15°N','Myanmar (Burma) - onshore south of 15°N.',9.78,15.0,97.74,99.66,0); +INSERT INTO "area" VALUES('EPSG','2294','Asia - Middle East - Iraq zone','Iran - onshore south of 36°N. Iraq - onshore. Kuwait - onshore.',25.02,37.39,38.79,63.34,0); +INSERT INTO "area" VALUES('EPSG','2295','Caribbean - Windward and Leeward Islands','Windward Islands - Dominica; Grenada; St Lucia; St Vincent; Leeward Islands - Anguilla; Antigua (excluding Barbuda); Montserrat; St Kitts and Nevis; Barbados.',11.94,18.33,-63.22,-59.37,0); +INSERT INTO "area" VALUES('EPSG','2296','Cote d''Ivoire (Ivory Coast) - offshore','Côte d''Ivoire (Ivory Coast) - offshore.',1.02,5.19,-7.55,-3.11,0); +INSERT INTO "area" VALUES('EPSG','2297','USA - California - north of 36.5°N','United States (USA) - California north of 36.5°N.',36.5,42.01,-124.44,-116.54,0); +INSERT INTO "area" VALUES('EPSG','2298','USA - California - south of 36.5°N','United States (USA) - California south of 36.5°N',32.53,36.5,-121.98,-114.12,0); +INSERT INTO "area" VALUES('EPSG','2299','World - N hemisphere - 3-degree CM 003°E','Between 1°30''E and 4°30''E, northern hemisphere.',0.0,84.0,1.5,4.5,0); +INSERT INTO "area" VALUES('EPSG','2300','World - N hemisphere - 3-degree CM 006°E','Between 4°30''E and 7°30''E, northern hemisphere.',0.0,84.0,4.5,7.5,0); +INSERT INTO "area" VALUES('EPSG','2301','World - N hemisphere - 3-degree CM 009°E','Between 7°30''E and 10°30''E, northern hemisphere.',0.0,84.0,7.5,10.5,0); +INSERT INTO "area" VALUES('EPSG','2302','World - N hemisphere - 3-degree CM 012°E','Between 10°30''E and 13°30''E, northern hemisphere.',0.0,84.0,10.5,13.5,0); +INSERT INTO "area" VALUES('EPSG','2303','World - N hemisphere - 3-degree CM 015°E','Between 13°30''E and 16°30''E, northern hemisphere.',0.0,84.0,13.5,16.5,0); +INSERT INTO "area" VALUES('EPSG','2304','World - N hemisphere - 3-degree CM 018°E','Between 16°30''E and 19°30''E, northern hemisphere.',0.0,84.0,16.5,19.5,0); +INSERT INTO "area" VALUES('EPSG','2305','World - N hemisphere - 3-degree CM 021°E','Between 19°30''E and 22°30''E, northern hemisphere.',0.0,84.0,19.5,22.5,0); +INSERT INTO "area" VALUES('EPSG','2306','World - N hemisphere - 3-degree CM 024°E','Between 22°30''E and 25°30''E, northern hemisphere.',0.0,84.0,22.5,25.5,0); +INSERT INTO "area" VALUES('EPSG','2307','Brazil - Campos; Espirito Santo and Santos basins','Brazil - offshore - Campos; Espirito Santo and Santos basins.',-28.41,-17.59,-48.8,-35.18,0); +INSERT INTO "area" VALUES('EPSG','2308','Brazil - Tucano basin north','Brazil - Tucano basin north.',-9.8,-8.39,-39.04,-37.09,0); +INSERT INTO "area" VALUES('EPSG','2309','Brazil - Tucano basin central','Brazil - Tucano basin central.',-10.61,-9.79,-39.14,-37.99,0); +INSERT INTO "area" VALUES('EPSG','2310','Brazil - Tucano basin south','Brazil - Tucano basin south.',-12.27,-10.6,-39.07,-37.98,0); +INSERT INTO "area" VALUES('EPSG','2311','Africa - Kenya and Tanzania','Kenya; Tanzania.',-11.75,4.63,29.34,41.91,0); +INSERT INTO "area" VALUES('EPSG','2312','Africa - Botswana, Lesotho, Malawi, Swaziland, Zambia, Zimbabwe','Botswana; Lesotho; Malawi; Swaziland; Zambia; Zimbabwe.',-30.66,-8.19,19.99,35.93,0); +INSERT INTO "area" VALUES('EPSG','2313','Canada - Nova Scotia','Canada - Nova Scotia onshore.',43.41,47.08,-66.28,-59.73,0); +INSERT INTO "area" VALUES('EPSG','2314','Asia - FSU - Caspian states','Azerbaijan; Kazakhstan; Russian Federation; Turkmenistan - Caspian Sea.',35.15,81.85,26.0,90.0,1); +INSERT INTO "area" VALUES('EPSG','2315','Colombia - Cusiana','Colombia - Casanare province BP Cusiana/Cupiagua field areas. Also used by Total in Rivera and Gatanas blocks.',4.75,5.68,-73.0,-72.25,0); +INSERT INTO "area" VALUES('EPSG','2316','Angola - offshore block 5','Angola - offshore block 5.',-8.59,-7.75,12.58,13.4,0); +INSERT INTO "area" VALUES('EPSG','2317','Angola - offshore block 2','Angola - offshore block 2.',-7.01,-6.01,12.08,12.84,0); +INSERT INTO "area" VALUES('EPSG','2318','Angola - offshore block 3','Angola - offshore block 3.',-7.34,-6.66,11.74,12.5,0); +INSERT INTO "area" VALUES('EPSG','2319','Angola - offshore block 7','Angola - offshore block 7.',-10.09,-9.41,12.66,13.39,0); +INSERT INTO "area" VALUES('EPSG','2320','Angola - offshore blocks 7 8 24 + WGC spec','Angola - offshore blocks 7 and 8. Also used rounded to integer metre in offshore block 24 and for GSI/HGS/Western Geophysical speculative seismic data throughout offshore Angola.',-17.26,-6.01,8.2,13.86,0); +INSERT INTO "area" VALUES('EPSG','2321','Angola - offshore blocks 1 and 16','Angola - offshore blocks 1 and 16.',-7.26,-6.03,11.08,12.09,0); +INSERT INTO "area" VALUES('EPSG','2322','Angola - offshore blocks 3 7 15 and 17','Angola - offshore blocks 3, 7,15 and 17.',-10.09,-6.03,10.83,13.39,0); +INSERT INTO "area" VALUES('EPSG','2323','Angola - offshore blocks 1 16 and 18','Angola - offshore blocks 1, 16 and 18.',-8.34,-6.03,11.08,12.75,0); +INSERT INTO "area" VALUES('EPSG','2324','Angola - offshore blocks 2 3 17-18 and 31-33','Angola - offshore blocks 2, 3, 17, 18, 31, 32 and 33.',-8.59,-6.01,10.41,12.84,0); +INSERT INTO "area" VALUES('EPSG','2325','Argentina - Neuquen province Chos Malal area','Argentina - Neuquen province - Chos Malal area.',-37.5,-36.14,-70.5,-70.03,0); +INSERT INTO "area" VALUES('EPSG','2326','Germany - West Germany all states','Germany - states of former West Germany onshore - Baden-Wurtemberg, Bayern, Bremen, Hamburg, Hessen, Niedersachsen, Nordrhein-Westfalen, Rheinland-Pfalz, Saarland, Schleswig-Holstein.',47.27,55.09,5.87,13.84,0); +INSERT INTO "area" VALUES('EPSG','2327','Syria - Al Whaleed area','Syria - Al Whaleed area',35.33,35.9,39.15,40.41,0); +INSERT INTO "area" VALUES('EPSG','2328','Syria - Shaddadeh area','Syria - Shaddadeh area (36°N, 41°E)',35.79,36.5,40.5,41.39,0); +INSERT INTO "area" VALUES('EPSG','2329','Syria - Deir area','Syria - Deir area (35°22''N, 40°06''E)',34.49,35.9,39.3,40.81,0); +INSERT INTO "area" VALUES('EPSG','2330','Europe - North Sea','Denmark - North Sea; Germany - North Sea; Netherlands - offshore; Norway - North Sea south of 62°N; United Kingdom (UKCS) - North Sea south of 62°N.',51.03,62.01,-5.05,11.14,0); +INSERT INTO "area" VALUES('EPSG','2331','Norway - offshore north of 65°N','Norway - offshore north of 65°N.',65.0,72.0,-0.5,32.02,1); +INSERT INTO "area" VALUES('EPSG','2332','Norway - offshore north of 65°N; Svalbard','Norway - offshore north of 65°N. Also Svalbard.',65.0,84.17,-3.7,39.65,0); +INSERT INTO "area" VALUES('EPSG','2333','Norway - offshore 62°N to 65°N and west of 5°E','Norway - offshore between 62°N and 65°N and west of 5°E.',62.0,65.0,-0.49,5.0,0); +INSERT INTO "area" VALUES('EPSG','2334','Norway - North Sea - offshore south of 62°N','Norway - offshore south of 62°N - North Sea.',56.08,62.0,1.37,11.14,0); +INSERT INTO "area" VALUES('EPSG','2335','Spain - Balearic Islands','Spain - Balearic Islands.',38.59,40.11,1.14,4.39,0); +INSERT INTO "area" VALUES('EPSG','2336','Spain - mainland except northwest','Spain - onshore mainland except northwest (north of 41°30''N and west of 4°30''W).',35.26,43.56,-7.54,3.39,0); +INSERT INTO "area" VALUES('EPSG','2337','Spain - mainland northwest','Spain - onshore mainland north of 41°30''N and west of 4°30'' W.',41.5,43.82,-9.37,-4.5,0); +INSERT INTO "area" VALUES('EPSG','2338','Europe - Portugal and Spain','Portugal; Spain - mainland.',35.26,43.82,-9.56,3.39,0); +INSERT INTO "area" VALUES('EPSG','2339','Italy - Sardinia onshore','Italy - Sardinia onshore.',38.82,41.31,8.08,9.89,0); +INSERT INTO "area" VALUES('EPSG','2340','Italy - Sicily onshore','Italy - Sicily onshore.',36.59,38.35,12.36,15.71,0); +INSERT INTO "area" VALUES('EPSG','2341','Egypt - Gulf of Suez','Egypt - Gulf of Suez.',27.19,30.01,32.34,34.27,0); +INSERT INTO "area" VALUES('EPSG','2342','Europe - common offshore','Denmark - offshore North Sea; Ireland - offshore; Netherlands - offshore; United Kingdom - UKCS offshore.',47.42,63.89,-16.1,10.86,0); +INSERT INTO "area" VALUES('EPSG','2343','Europe - British Isles and Channel Islands onshore','Channel islands - onshore. Ireland - onshore. Isle of Man - onshore. United Kingdom (UK) - onshore - England; Scotland; Wales; Northern Ireland.',49.11,60.9,-10.56,1.84,0); +INSERT INTO "area" VALUES('EPSG','2344','Europe - Finland and Norway - onshore','Finland and Norway - onshore.',57.93,71.21,4.68,31.59,0); +INSERT INTO "area" VALUES('EPSG','2345','Asia - Middle East - Iraq; Israel; Jordan; Lebanon; Kuwait; Saudi Arabia; Syria','Iraq, Israel, Jordan, Lebanon, Kuwait, Saudi Arabia and Syria - onshore.',15.61,37.39,34.17,55.67,0); +INSERT INTO "area" VALUES('EPSG','2346','World - WGS72 BE to WGS 84 - by country','World. Vietnam - offshore.',-90.0,90.0,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','2347','Algeria - north of 31.5°N','Algeria - onshore north of 35 grads North (31°30''N).',31.5,37.14,-3.85,9.22,0); +INSERT INTO "area" VALUES('EPSG','2348','Brunei - offshore','Brunei Darussalam - offshore.',4.58,6.37,112.5,115.24,1); +INSERT INTO "area" VALUES('EPSG','2349','Brunei - onshore','Brunei Darussalam - onshore.',4.01,5.11,114.09,115.37,0); +INSERT INTO "area" VALUES('EPSG','2350','Mozambique - A','Mozambique - Maputo province and southern part of Gaza province; i.e. south of approximately 24°S.',-26.87,-23.91,31.91,34.5,0); +INSERT INTO "area" VALUES('EPSG','2351','Mozambique - B','Mozambique - provinces of Gaza; Inhambane and southern parts of Sofala and Manhica; i.e. between approximately 24°S and 20°S.',-24.91,-19.74,31.29,35.65,0); +INSERT INTO "area" VALUES('EPSG','2352','Mozambique - C','Mozambique - provinces of Sofala north of Beira corridor; Manhica; Tete and Zambezia; i.e. between approximately 20°S and 16°S.',-19.91,-14.01,30.21,39.18,0); +INSERT INTO "area" VALUES('EPSG','2353','Mozambique - D','Mozambique - provinces of Nampula; Niassa; Cabo Delgado; i.e. north of approximately 16°S.',-16.94,-10.42,34.36,40.9,0); +INSERT INTO "area" VALUES('EPSG','2354','Indonesia - Kalimantan','Indonesia - Kalimantan.',-4.24,4.37,108.79,119.06,0); +INSERT INTO "area" VALUES('EPSG','2355','Falkland Islands - East Falkland Island','Falkland Islands (Malvinas) - East Falkland Island.',-52.51,-51.16,-59.98,-57.61,0); +INSERT INTO "area" VALUES('EPSG','2356','Ecuador - Galapagos onshore','Ecuador - Baltra; Galapagos - onshore.',-1.41,0.18,-91.72,-89.19,0); +INSERT INTO "area" VALUES('EPSG','2357','Argentina - Tierra del Fuego onshore','Argentina - Tierra del Fuego onshore.',-55.11,-52.59,-68.64,-63.73,0); +INSERT INTO "area" VALUES('EPSG','2358','Thailand - Bongkot field','Thailand - Bongkot field.',6.74,8.16,102.16,103.05,0); +INSERT INTO "area" VALUES('EPSG','2359','Vietnam - 14°N to 18°N onshore','Vietnam - onshore between 14°N and 18°N.',14.0,18.0,105.61,109.32,0); +INSERT INTO "area" VALUES('EPSG','2360','Vietnam - Con Son Island','Vietnam - Con Son Island.',8.58,8.83,106.49,106.79,0); +INSERT INTO "area" VALUES('EPSG','2361','Myanmar (Burma) - Moattama area','Myanmar (Burma) - Moattama area.',9.48,17.87,93.94,99.66,0); +INSERT INTO "area" VALUES('EPSG','2362','Iran - Kangan district','Iran - Kangan district.',27.3,28.2,51.8,53.01,0); +INSERT INTO "area" VALUES('EPSG','2363','Venezuela - east','Venezuela - east - Delta Amacuro; Anzoategui; Bolivar; Monagas; Sucre states.',3.56,10.8,-67.49,-59.8,0); +INSERT INTO "area" VALUES('EPSG','2364','Philippines - onshore excluding Mindanao','Philippines - onshore excluding Mindanao.',7.75,19.45,116.89,125.88,0); +INSERT INTO "area" VALUES('EPSG','2365','Philippines - Mindanao onshore','Philippines - Mindanao onshore.',4.99,10.52,119.76,126.65,0); +INSERT INTO "area" VALUES('EPSG','2366','Spain - mainland onshore','Spain - mainland onshore.',35.95,43.82,-9.37,3.39,0); +INSERT INTO "area" VALUES('EPSG','2367','Spain - mainland northeast','Spain - onshore mainland north of the parallel of approximately 41°58''N from approximately 6°35''W to the meridian of 4°W of Greenwich and then a line from 41°58''N, 4°W through 40°N, 0°E of Greenwich.',39.96,43.82,-9.37,3.39,0); +INSERT INTO "area" VALUES('EPSG','2368','Spain - mainland southwest','Spain - onshore mainland south of the parallel of approximately 41°58''N from approximately 6°35''W to the meridian of 4°W of Greenwich and then a line from 41°58''N, 4°W through 40°N, 0°E of Greenwich.',35.95,41.98,-7.54,0.28,0); +INSERT INTO "area" VALUES('EPSG','2369','Seychelles - Mahe Island','Seychelles - Mahe Island.',-4.86,-4.5,55.3,55.59,0); +INSERT INTO "area" VALUES('EPSG','2370','Europe - former Yugoslavia onshore','Boznia and Herzegovina; Croatia - onshore; FYR Macedonia; Montenegro - onshore; Serbia; Slovenia - onshore.',40.85,46.88,13.38,23.04,0); +INSERT INTO "area" VALUES('EPSG','2371','Nigeria - south','Nigeria - onshore south.',4.22,6.95,4.35,9.45,0); +INSERT INTO "area" VALUES('EPSG','2372','Italy - mainland','Italy - mainland including San Marino and Vatican City State.',37.86,47.1,6.62,18.58,0); +INSERT INTO "area" VALUES('EPSG','2373','USA - Alaska including EEZ','United States (USA) - Alaska including EEZ.',47.88,74.71,167.65,-129.99,0); +INSERT INTO "area" VALUES('EPSG','2374','USA - CONUS including EEZ','United States (USA) - CONUS including EEZ -onshore and offshore - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming. US Gulf of Mexico (GoM) OCS.',23.81,49.38,-129.17,-65.69,0); +INSERT INTO "area" VALUES('EPSG','2375','Canada - Saskatchewan','Canada - Saskatchewan.',49.0,60.01,-110.0,-101.34,0); +INSERT INTO "area" VALUES('EPSG','2376','Canada - Alberta','Canada - Alberta.',48.99,60.0,-120.0,-109.98,0); +INSERT INTO "area" VALUES('EPSG','2377','USA - Delaware and Maryland','United States (USA) - Delaware and Maryland.',37.97,39.85,-79.49,-74.97,0); +INSERT INTO "area" VALUES('EPSG','2378','USA - New England - south (CT, MA, NH, RI, VT)','United States (USA) - Connecticut; Massachusetts; New Hampshire; Rhode Island; Vermont.',40.98,45.31,-73.73,-69.86,0); +INSERT INTO "area" VALUES('EPSG','2379','USA - Texas east of 100°W','United States (USA) - Texas east of 100°W.',25.83,34.58,-100.0,-93.5,0); +INSERT INTO "area" VALUES('EPSG','2380','USA - Texas west of 100°W','United States (USA) - Texas west of 100°W.',28.04,36.5,-106.66,-100.0,0); +INSERT INTO "area" VALUES('EPSG','2381','USA - Oregon and Washington','United States (USA) - Oregon and Washington.',41.98,49.05,-124.79,-116.47,0); +INSERT INTO "area" VALUES('EPSG','2382','USA - Idaho and Montana - east of 113°W','United States (USA) - Idaho and Montana - east of 113°W.',41.99,49.01,-113.0,-104.04,0); +INSERT INTO "area" VALUES('EPSG','2383','USA - Idaho and Montana - west of 113°W','United States (USA) - Idaho and Montana - west of 113°W.',41.99,49.01,-117.24,-113.0,0); +INSERT INTO "area" VALUES('EPSG','2384','Canada - Alberta and British Columbia','Canada - Alberta; British Columbia.',48.25,60.01,-139.04,-109.98,0); +INSERT INTO "area" VALUES('EPSG','2385','Panama - Canal Zone','Panama - Canal Zone.',8.82,9.45,-80.07,-79.46,0); +INSERT INTO "area" VALUES('EPSG','2386','Greenland - Hayes Peninsula','Greenland - Hayes Peninsula.',75.86,79.2,-73.29,-60.98,0); +INSERT INTO "area" VALUES('EPSG','2387','USA - Alaska - Aleutian Islands east of 180°E','United States (USA) - Alaska - Aleutian Islands onshore east of 180°E.',51.54,54.34,-178.3,-164.84,0); +INSERT INTO "area" VALUES('EPSG','2388','USA - Alaska - Aleutian Islands west of 180°W','United States (USA) - Alaska - Aleutian Islands onshore west of 180°W.',51.3,53.07,172.42,179.86,0); +INSERT INTO "area" VALUES('EPSG','2389','USA - CONUS east of Mississippi River - onshore','United States (USA) - CONUS east of Mississippi River - onshore - including entire states of Louisiana; Missouri; Minnesota as well as Alabama; Connecticut; Delaware; Florida; Georgia; Illinois; Indiana; Kentucky; Maine; Maryland; Massachusetts; Michigan; Mississippi; New Hampshire; New Jersey; New York; North Carolina; Ohio; Pennsylvania; Rhode Island; South Carolina; Tennessee; Vermont; Virginia; West Virginia; Wisconsin.',24.41,49.38,-97.22,-66.91,0); +INSERT INTO "area" VALUES('EPSG','2390','USA - CONUS west of Mississippi River - onshore','United States (USA) - CONUS west of Mississippi River - onshore - excludes those states covered under Area 2389 - Includes Arizona; Arkansas; California; Colorado; Idaho; Iowa; Kansas; Montana; Nebraska; Nevada; New Mexico; North Dakota; Oklahoma; Oregon; South Dakota; Texas; Utah; Washington; Wyoming.',25.83,49.05,-124.79,-89.64,0); +INSERT INTO "area" VALUES('EPSG','2391','Oman - Masirah Island','Oman - Masirah Island.',20.12,20.74,58.58,59.01,0); +INSERT INTO "area" VALUES('EPSG','2392','UAE - Abu al Bu Khoosh','United Arab Emirates (UAE) - Abu Dhabi offshore - Abu al Bu Khoosh.',25.33,25.54,53.03,53.4,0); +INSERT INTO "area" VALUES('EPSG','2393','Algeria - Hassi Messaoud','Algeria - Hassi Messaoud.',31.48,32.09,5.59,6.5,0); +INSERT INTO "area" VALUES('EPSG','2394','UK - Great Britain and UKCS','United Kingdom (UKCS) - Great Britain (GB) - England; Scotland; Wales; UKCS including North Sea.',49.15,63.83,-6.0,3.4,1); +INSERT INTO "area" VALUES('EPSG','2395','UK - England','United Kingdom (UK) - England onshore.',49.81,55.85,-6.5,1.84,0); +INSERT INTO "area" VALUES('EPSG','2396','UK - England and Wales, Isle of Man','United Kingdom (UK) - England and Wales; Isle of Man - onshore.',49.81,55.85,-6.5,1.84,0); +INSERT INTO "area" VALUES('EPSG','2397','UK - Scotland','United Kingdom (UK) - Scotland (including Orkney and Shetland Islands), onshore and nearshore.',54.57,60.9,-8.74,-0.65,0); +INSERT INTO "area" VALUES('EPSG','2398','UK - Wales','United Kingdom (UK) - Wales onshore.',51.28,53.48,-5.34,-2.65,0); +INSERT INTO "area" VALUES('EPSG','2399','South America - Bolivia; Chile; Ecuador; Guyana; Peru; Venezuela','Bolivia; Chile - onshore north of 43°30''S; Ecuador - mainland onshore; Guyana - onshore; Peru - onshore; Venezuela - onshore.',-43.5,12.25,-81.41,-56.47,0); +INSERT INTO "area" VALUES('EPSG','2400','Bolivia - Madidi','Bolivia - Madidi.',-14.43,-13.56,-68.96,-67.79,0); +INSERT INTO "area" VALUES('EPSG','2401','Bolivia - Block 20','Bolivia - Block 20.',-21.71,-21.09,-63.44,-62.95,0); +INSERT INTO "area" VALUES('EPSG','2402','Chile - onshore north of 21°30''S','Chile - onshore north of 21°30''S.',-21.51,-17.5,-70.49,-68.18,0); +INSERT INTO "area" VALUES('EPSG','2403','Chile - onshore 39°S to 43°30''S','Chile - onshore between 39°S and 43°30''S.',-43.5,-38.99,-74.48,-71.38,0); +INSERT INTO "area" VALUES('EPSG','2404','Oman - block 4','Oman - block 4.',19.58,21.17,56.5,59.02,0); +INSERT INTO "area" VALUES('EPSG','2405','Kazakhstan - Caspian Sea','Kazakhstan - Caspian Sea.',41.15,46.97,48.9,53.15,0); +INSERT INTO "area" VALUES('EPSG','2406','Qatar - offshore','Qatar - offshore.',24.64,27.05,50.55,53.04,0); +INSERT INTO "area" VALUES('EPSG','2407','Greenland - south of 72°N','Greenland - south of 72°N.',59.75,72.0,-55.0,-40.0,1); +INSERT INTO "area" VALUES('EPSG','2408','Japan - Okinawa','Japan - onshore Okinawa.',23.98,26.91,122.83,131.38,0); +INSERT INTO "area" VALUES('EPSG','2409','Asia - Japan and South Korea','Japan - onshore; South Korea - onshore.',20.37,45.54,122.83,145.87,0); +INSERT INTO "area" VALUES('EPSG','2410','Canada - NWT; Nunavut; Saskatchewan','Canada - Northwest Territories; Nunavut; Saskatchewan.',49.0,83.17,-136.46,-60.72,0); +INSERT INTO "area" VALUES('EPSG','2411','Asia - India mainland and Nepal','India - mainland onshore; Nepal.',8.02,35.51,68.13,97.42,0); +INSERT INTO "area" VALUES('EPSG','2412','USA - Alaska mainland','United States (USA) - Alaska mainland.',54.34,71.4,-168.26,-129.99,0); +INSERT INTO "area" VALUES('EPSG','2413','Bahamas - main islands onshore','Bahamas - onshore southwest of a line from 27°30''N, 77°30''W through 23°15''N, 74°30''W to 22°30''N, 72°30''W.',20.86,27.29,-79.04,-72.68,0); +INSERT INTO "area" VALUES('EPSG','2414','Bahamas (San Salvador Island) - onshore','Bahamas (San Salvador Island) - onshore.',23.9,24.19,-74.6,-74.37,0); +INSERT INTO "area" VALUES('EPSG','2415','Canada - Manitoba and Ontario','Canada - Manitoba; Ontario.',41.67,60.01,-102.0,-74.35,0); +INSERT INTO "area" VALUES('EPSG','2416','Canada - eastern provinces','Canada - onshore - New Brunswick; Newfoundland and Labrador; Nova Scotia; Prince Edward Island; Quebec.',43.41,62.62,-79.85,-52.54,0); +INSERT INTO "area" VALUES('EPSG','2417','Canada - Yukon','Canada - Yukon.',59.99,69.7,-141.01,-123.91,0); +INSERT INTO "area" VALUES('EPSG','2418','Caribbean - central (DMA tfm)','Antigua; Barbados; Barbuda; Cuba; Dominican Republic; Grand Cayman; Jamaica; Turks and Caicos Islands. Note: does not include other islands within this geographic area.',13.0,23.25,-85.01,-59.37,0); +INSERT INTO "area" VALUES('EPSG','2419','Central America - Belize to Costa Rica','Onshore Belize, Costa Rica, El Salvador, Guatemala, Honduras and Nicaragua.',7.98,18.49,-92.29,-82.53,0); +INSERT INTO "area" VALUES('EPSG','2420','Europe - west (DMA ED50 mean)','Austria; Belgium; Denmark; Finland; Faroe islands; France; Germany (west); Gibraltar; Greece; Italy; Luxembourg; Netherlands; Norway; Portugal; Spain; Sweden; Switzerland.',34.88,71.21,-9.56,31.59,0); +INSERT INTO "area" VALUES('EPSG','2421','Europe - west central (by country)','Austria; Denmark; France; Germany (west); Netherlands; Switzerland.',42.33,57.8,-4.87,17.17,0); +INSERT INTO "area" VALUES('EPSG','2422','Slovenia - Gorenjska - central','Slovenia - central Gorenjska (Upper Carniola) with part of the Kamnik or Savinja Alps.',46.14,46.45,14.01,14.61,0); +INSERT INTO "area" VALUES('EPSG','2423','Europe - FSU onshore','Armenia; Azerbaijan; Belarus; Estonia - onshore; Georgia - onshore; Kazakhstan; Kyrgyzstan; Latvia - onshore; Lithuania - onshore; Moldova; Russian Federation - onshore; Tajikistan; Turkmenistan; Ukraine - onshore; Uzbekistan.',35.14,81.91,19.57,-168.97,0); +INSERT INTO "area" VALUES('EPSG','2424','USA - HARN','American Samoa; Puerto Rico and the Virgin Islands; United States (USA) - Alabama; Alaska; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Hawaii; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming.',NULL,NULL,NULL,NULL,1); +INSERT INTO "area" VALUES('EPSG','2425','Japan - 45°20''N to 46°N; 141°E to 142°E','Japan - onshore mainland 45°20''N to 46°N; 141°E to 142°E.',45.33,45.54,141.56,142.0,0); +INSERT INTO "area" VALUES('EPSG','2426','Japan - 45°20''N to 46°N; 142°E to 143°E','Japan - onshore 45°20''N to 46°N; 142°E to 143°E.',45.33,45.54,142.0,142.27,0); +INSERT INTO "area" VALUES('EPSG','2427','Japan - 44°40''N to 45°20''N; 141°E to 142°E','Japan - onshore mainland 44°40''N to 45°20''N; 141°E to 142°E.',44.66,45.34,141.5,142.0,0); +INSERT INTO "area" VALUES('EPSG','2428','Japan - 44°40''N to 45°20''N; 142°E to 143°E','Japan - onshore 44°40''N to 45°20''N; 142°E to 143°E.',44.66,45.34,142.0,142.97,0); +INSERT INTO "area" VALUES('EPSG','2429','Japan - 44°N to 44°40''N; 141°E to 142°E','Japan - onshore mainland 44°N to 44°40''N; 141°E to 142°E.',43.99,44.67,141.58,142.0,0); +INSERT INTO "area" VALUES('EPSG','2430','Japan - 44°N to 44°40''N; 142°E to 143°E','Japan - 44°N to 44°40''N; 142°E to 143°E.',43.99,44.67,142.0,143.0,0); +INSERT INTO "area" VALUES('EPSG','2431','Japan - 44°N to 44°40''N; 143°E to 144°E','Japan - onshore 44°N to 44°40''N; 143°E to 144°E.',43.99,44.65,143.0,144.0,0); +INSERT INTO "area" VALUES('EPSG','2432','Japan - 44°N to 44°40''N; 144°E to 145°E','Japan - onshore 44°N to 44°40''N; 144°E to 145°E.',43.99,44.19,144.0,145.0,0); +INSERT INTO "area" VALUES('EPSG','2433','Japan - 43°20''N to 44°N; 141°E to 142°E','Japan - onshore 43°20''N to 44°N; 141°E to 142°E.',43.33,44.0,141.26,142.0,0); +INSERT INTO "area" VALUES('EPSG','2434','Japan - 43°20''N to 44°N; 142°E to 143°E','Japan - 43°20''N to 44°N; 142°E to 143°E.',43.33,44.0,142.0,143.0,0); +INSERT INTO "area" VALUES('EPSG','2435','Japan - 43°20''N to 44°N; 143°E to 144°E','Japan - 43°20''N to 44°N; 143°E to 144°E.',43.33,44.0,143.0,144.0,0); +INSERT INTO "area" VALUES('EPSG','2436','Japan - 43°20''N to 44°N; 144°E to 145°E','Japan - 43°20''N to 44°N; 144°E to 145°E.',43.33,44.0,144.0,145.0,0); +INSERT INTO "area" VALUES('EPSG','2437','Japan - north of 43°20''N; 145°E to 146°E','Japan - onshore north of 43°20''N and west of 145°E.',43.33,44.4,145.0,145.87,0); +INSERT INTO "area" VALUES('EPSG','2438','Japan - 42°40''N to 43°25''N; 140°E to 141°E','Japan - onshore 42°40''N to 43°25''N; 140°E to 141°E.',42.66,43.42,140.0,141.0,0); +INSERT INTO "area" VALUES('EPSG','2439','Japan - 42°40''N to 43°20''N; 141°E to 142°E','Japan - 42°40''N to 43°20''N; 141°E to 142°E.',42.66,43.34,141.0,142.0,0); +INSERT INTO "area" VALUES('EPSG','2440','Japan - 42°40''N to 43°20''N; 142°E to 143°E','Japan - 42°40''N to 43°20''N; 142°E to 143°E.',42.66,43.34,142.0,143.0,0); +INSERT INTO "area" VALUES('EPSG','2441','Japan - 42°40''N to 43°20''N; 143°E to 144°E','Japan - 42°40''N to 43°20''N; 143°E to 144°E.',42.66,43.34,143.0,144.0,0); +INSERT INTO "area" VALUES('EPSG','2442','Japan - 42°40''N to 43°20''N; 144°E to 145°E','Japan - onshore 42°40''N to 43°20''N; 144°E to 145°E.',42.84,43.34,144.0,145.0,0); +INSERT INTO "area" VALUES('EPSG','2443','Japan - 42°40''N to 43°20''N; 145°E to 146°E','Japan - onshore 42°40''N to 43°20''N; 145°E to 146°E.',42.93,43.34,145.0,145.87,0); +INSERT INTO "area" VALUES('EPSG','2444','Japan - north of 42°N; west of 140°E','Japan - onshore mainland north of 42°N and west of 140°E.',42.05,42.73,139.7,140.0,0); +INSERT INTO "area" VALUES('EPSG','2445','Japan - 42°N to 42°40''N; 140°E to 141°E','Japan - 42°N to 42°40''N; 140°E to 141°E.',41.99,42.67,140.0,141.0,0); +INSERT INTO "area" VALUES('EPSG','2446','Japan - 42°N to 42°40''N; 141°E to 142°E','Japan - onshore 42°N to 42°40''N; 141°E to 142°E.',42.24,42.67,141.0,142.0,0); +INSERT INTO "area" VALUES('EPSG','2447','Japan - 42°N to 42°40''N; 142°E to 143°E','Japan - onshore 42°N to 42°40''N; 142°E to 143°E.',42.02,42.67,142.0,143.0,0); +INSERT INTO "area" VALUES('EPSG','2448','Japan - south of 42°40''N; 143°E to 144°E','Japan - onshore south of 42°40''N; east of 143°E.',41.87,42.67,143.0,143.76,0); +INSERT INTO "area" VALUES('EPSG','2449','Japan - 41°20''N to 42°N; west of 141°E','Japan - onshore mainland 41°20''N to 42°N; west of 141°E.',41.33,42.0,139.91,141.0,0); +INSERT INTO "area" VALUES('EPSG','2450','Japan - 41°20''N to 42°N; 141°E to 142°E','Japan - onshore 41°20''N to 42°N; 141°E to 142°E.',41.33,41.96,141.0,141.53,0); +INSERT INTO "area" VALUES('EPSG','2451','Japan - 40°40''N to 41°20''N; 140°E to 141°E','Japan - 40°40''N to 41°20''N; 140°E to 141°E.',40.66,41.34,140.0,141.0,0); +INSERT INTO "area" VALUES('EPSG','2452','Japan - 40°40''N to 41°20''N; 141°E to 142°E','Japan - onshore 40°40''N to 41°20''N; 141°E to 142°E.',40.66,41.34,141.0,141.53,0); +INSERT INTO "area" VALUES('EPSG','2453','Japan - 40°N to 40°48''N; 139°E to 140°E','Japan - onshore 40°N to 40°48''N; 139°E to 140°E.',39.99,40.8,139.63,140.0,0); +INSERT INTO "area" VALUES('EPSG','2454','Japan - 40°N to 40°40''N; 140°E to 141°E','Japan - 40°N to 40°40''N; 140°E to 141°E.',39.99,40.67,140.0,141.0,0); +INSERT INTO "area" VALUES('EPSG','2455','Japan - 40°N to 40°40''N; 141°E to 142°E','Japan - 40°N to 40°40''N; 141°E to 142°E.',39.99,40.67,141.0,142.0,0); +INSERT INTO "area" VALUES('EPSG','2456','Japan - 39°20''N to 40°N; 139°E to 140°E','Japan - onshore 39°20''N to 40°N; 139°E to 140°E.',39.33,40.0,139.63,140.0,0); +INSERT INTO "area" VALUES('EPSG','2457','Japan - 39°20''N to 40°N; 140°E to 141°E','Japan - 39°20''N to 40°N; 140°E to 141°E.',39.33,40.0,140.0,141.0,0); +INSERT INTO "area" VALUES('EPSG','2458','Japan - 39°20''N to 40°N; east of 141°E','Japan - onshore 39°20''N to 40°N; east of 141°E.',39.33,40.0,141.0,142.14,0); +INSERT INTO "area" VALUES('EPSG','2459','Japan - 38°40''N to 39°20''N; 139°E to 140°E','Japan - onshore 38°40''N to 39°20''N; 139°E to 140°E.',38.66,39.34,139.55,140.0,0); +INSERT INTO "area" VALUES('EPSG','2460','Japan - 38°40''N to 39°20''N; 140°E to 141°E','Japan - 38°40''N to 39°20''N; 140°E to 141°E.',38.66,39.34,140.0,141.0,0); +INSERT INTO "area" VALUES('EPSG','2461','Japan - 38°40''N to 39°20''N; 141°E to 142°E','Japan - onshore 38°40''N to 39°20''N; 141°E to 142°E.',38.66,39.34,141.0,141.99,0); +INSERT INTO "area" VALUES('EPSG','2462','Japan - 38°N to 38°40''N; 139°E to 140°E','Japan - onshore 38°N to 38°40''N; 139°E to 140°E.',37.99,38.67,139.11,140.0,0); +INSERT INTO "area" VALUES('EPSG','2463','Japan - 38°N to 38°40''N; 140°E to 141°E','Japan - 38°N to 38°40''N; 140°E to 141°E.',37.99,38.67,140.0,141.0,0); +INSERT INTO "area" VALUES('EPSG','2464','Japan - 38°N to 38°40''N; 141°E to 142°E','Japan - onshore 38°N to 38°40''N; 141°E to 142°E.',38.08,38.67,141.0,141.62,0); +INSERT INTO "area" VALUES('EPSG','2465','Japan - 37°20''N to 38°N; 136°E to 137°E','Japan - onshore 37°20''N to 38°N; 136°E to 137°E.',37.33,37.47,136.67,137.0,0); +INSERT INTO "area" VALUES('EPSG','2466','Japan - 37°20''N to 38°N; 137°E to 138°E','Japan - onshore 37°20''N to 38°N; 137°E to 138°E.',37.33,37.58,137.0,137.43,0); +INSERT INTO "area" VALUES('EPSG','2467','Japan - 37°20''N to 38°N; 138°E to 139°E','Japan - onshore mainland 37°20''N to 38°N; 138°E to 139°E.',37.33,37.97,138.39,139.0,0); +INSERT INTO "area" VALUES('EPSG','2468','Japan - 37°20''N to 38°N; 139°E to 140°E','Japan - 37°20''N to 38°N; 139°E to 140°E.',37.33,38.0,139.0,140.0,0); +INSERT INTO "area" VALUES('EPSG','2469','Japan - 37°20''N to 38°N; 140°E to 141°E','Japan - 37°20''N to 38°N; 140°E to 141°E.',37.33,38.0,140.0,141.0,0); +INSERT INTO "area" VALUES('EPSG','2470','Japan - 37°20''N to 38°N; 141°E to 142°E','Japan - onshore 37°20''N to 38°N; 141°E to 142°E.',37.33,37.87,141.0,141.11,0); +INSERT INTO "area" VALUES('EPSG','2471','Japan - 36°40''N to 37°20''N; 136°E to 137°E','Japan - onshore 36°40''N to 37°20''N; 136°E to 137°E.',36.66,37.34,136.58,137.0,0); +INSERT INTO "area" VALUES('EPSG','2472','Japan - 36°40''N to 37°20''N; 137°E to 138°E','Japan - 36°40''N to 37°20''N; 137°E to 138°E.',36.66,37.34,137.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','2473','Japan - 36°40''N to 37°20''N; 138°E to 139°E','Japan - 36°40''N to 37°20''N; 138°E to 139°E.',36.66,37.34,138.0,139.0,0); +INSERT INTO "area" VALUES('EPSG','2474','Japan - 36°40''N to 37°20''N; 139°E to 140°E','Japan - 36°40''N to 37°20''N; 139°E to 140°E.',36.66,37.34,139.0,140.0,0); +INSERT INTO "area" VALUES('EPSG','2475','Japan - 36°40''N to 37°20''N; east of 140°E','Japan - onshore between 36°40''N and 37°20''N; east of 140°E.',36.66,37.34,140.0,141.1,0); +INSERT INTO "area" VALUES('EPSG','2476','Japan - 36°N to 36°40''N; west of137°E','Japan - onshore between 36°N and 36°40''N; west of 137°E.',35.99,36.67,135.9,137.0,0); +INSERT INTO "area" VALUES('EPSG','2477','Japan - 36°N to 36°40''N; 137°E to 138°E','Japan - 36°N to 36°40''N; 137°E to 138°E.',35.99,36.67,137.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','2478','Japan - 36°N to 36°40''N; 138°E to 139°E','Japan - 36°N to 36°40''N; 138°E to 139°E.',35.99,36.67,138.0,139.0,0); +INSERT INTO "area" VALUES('EPSG','2479','Japan - 36°N to 36°40''N; 139°E to 140°E','Japan - 36°N to 36°40''N; 139°E to 140°E.',35.99,36.67,139.0,140.0,0); +INSERT INTO "area" VALUES('EPSG','2480','Japan - 36°N to 36°40''N; 140°E to 141°E','Japan - onshore 36°N to 36°40''N; 140°E to 141°E.',35.99,36.67,140.0,140.77,0); +INSERT INTO "area" VALUES('EPSG','2481','Japan - 35°20''N to 36°N; 132°E to 133°E','Japan - onshore mainland 35°20''N to 36°N; 132°E to 133°E.',35.33,35.58,132.56,133.0,0); +INSERT INTO "area" VALUES('EPSG','2482','Japan - 35°20''N to 36°N; 133°E to 134°E','Japan - onshore mainland 35°20''N to 36°N; 133°E to 134°E.',35.33,35.64,133.0,134.0,0); +INSERT INTO "area" VALUES('EPSG','2483','Japan - 35°20''N to 36°N; 134°E to 135°E','Japan - onshore 35°20''N to 36°N; 134°E to 135°E.',35.33,35.73,134.0,135.0,0); +INSERT INTO "area" VALUES('EPSG','2484','Japan - 35°20''N to 36°N; 135°E to 136°E','Japan - 35°20''N to 36°N; 135°E to 136°E.',35.33,36.0,135.0,136.0,0); +INSERT INTO "area" VALUES('EPSG','2485','Japan - 35°20''N to 36°N; 136°E to 137°E','Japan - 35°20''N to 36°N; 136°E to 137°E.',35.33,36.0,136.0,137.0,0); +INSERT INTO "area" VALUES('EPSG','2486','Japan - 35°20''N to 36°N; 137°E to 138°E','Japan - 35°20''N to 36°N; 137°E to 138°E.',35.33,36.0,137.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','2487','Japan - 35°20''N to 36°N; 138°E to 139°E','Japan - 35°20''N to 36°N; 138°E to 139°E.',35.33,36.0,138.0,139.0,0); +INSERT INTO "area" VALUES('EPSG','2488','Japan - 35°20''N to 36°N; 139°E to 140°E','Japan - 35°20''N to 36°N; 139°E to 140°E.',35.33,36.0,139.0,140.0,0); +INSERT INTO "area" VALUES('EPSG','2489','Japan - 35°20''N to 36°N; 140°E to 141°E','Japan - onshore 35°20''N to 36°N; 140°E to 141°E.',35.33,36.0,140.0,140.9,0); +INSERT INTO "area" VALUES('EPSG','2490','Japan - 34°40''N to 35°20''N; 132°E to 133°E','Japan - 34°40''N to 35°20''N; 132°E to 133°E.',34.66,35.34,132.0,133.0,0); +INSERT INTO "area" VALUES('EPSG','2491','Japan - 34°40''N to 35°20''N; 133°E to 134°E','Japan - 34°40''N to 35°20''N; 133°E to 134°E.',34.66,35.34,133.0,134.0,0); +INSERT INTO "area" VALUES('EPSG','2492','Japan - 34°40''N to 35°20''N; 134°E to 135°E','Japan - 34°40''N to 35°20''N; 134°E to 135°E.',34.66,35.34,134.0,135.0,0); +INSERT INTO "area" VALUES('EPSG','2493','Japan - 34°40N'' to 35°20''N; 135°E to 136°E','Japan - 34°40N'' to 35°20''N; 135°E to 136°E.',34.66,35.34,135.0,136.0,0); +INSERT INTO "area" VALUES('EPSG','2494','Japan - 34°40''N to 35°20''N; 136°E to 137°E','Japan - 34°40''N to 35°20''N; 136°E to 137°E.',34.66,35.34,136.0,137.0,0); +INSERT INTO "area" VALUES('EPSG','2495','Japan - 34°40''N to 35°20''N; 137°E to 138°E','Japan - 34°40''N to 35°20''N; 137°E to 138°E.',34.66,35.34,137.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','2496','Japan - 34°40''N to 35°20''N; 138°E to 139°E','Japan - 34°40''N to 35°20''N; 138°E to 139°E.',34.66,35.34,138.0,139.0,0); +INSERT INTO "area" VALUES('EPSG','2497','Japan - 34°40''N to 35°20''N; 139°E to 140°E','Japan - onshore mainland 34°40''N to 35°20''N; 139°E to 140°E.',34.66,35.34,139.0,140.0,0); +INSERT INTO "area" VALUES('EPSG','2498','Japan - 34°40''N to 35°20''N; 140°E to 141°E','Japan - onshore 34°40''N to 35°20''N; 140°E to 141°E.',34.87,35.34,140.0,140.48,0); +INSERT INTO "area" VALUES('EPSG','2499','Japan - 34°N to 34°40''N; 130°E to 131°E','Japan - onshore 34°N to 34°40''N; 130°E to 131°E.',33.99,34.48,130.81,131.0,0); +INSERT INTO "area" VALUES('EPSG','2500','Japan - north of 34°N; 131°E to 132°E','Japan - onshore north of 34°N; between 131°E and 132°E.',33.99,34.9,131.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','2501','Japan - 34°N to 34°40''N; 132°E to 133°E','Japan - 34°N to 34°40''N; 132°E to 133°E.',33.99,34.67,132.0,133.0,0); +INSERT INTO "area" VALUES('EPSG','2502','Japan - 34°N to 34°40''N; 133°E to 134°E','Japan - 34°N to 34°40''N; 133°E to 134°E.',33.99,34.67,133.0,134.0,0); +INSERT INTO "area" VALUES('EPSG','2503','Japan - 34°N to 34°40''N; 134°E to 135°E','Japan - 34°N to 34°40''N; 134°E to 135°E.',33.99,34.67,134.0,135.0,0); +INSERT INTO "area" VALUES('EPSG','2504','Japan - 34°N to 34°40''N; 135°E to 136°E','Japan - 34°N to 34°40''N; 135°E to 136°E.',33.99,34.67,135.0,136.0,0); +INSERT INTO "area" VALUES('EPSG','2505','Japan - 34°N to 34°40''N; 136°E to 137°E','Japan - 34°N to 34°40''N; 136°E to 137°E.',33.99,34.67,136.0,137.0,0); +INSERT INTO "area" VALUES('EPSG','2506','Japan - 34°N to 34°40''N; 137°E to 138°E','Japan - onshore 34°N to 34°40''N; 137°E to 138°E.',34.51,34.67,137.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','2507','Japan - 34°N to 34°40''N; 138°E to 139°E','Japan - onshore 34°N to 34°40''N; 138°E to 139°E.',34.54,34.67,138.0,139.0,0); +INSERT INTO "area" VALUES('EPSG','2508','Japan - 33°20''N to 34°N; 129°E to 130°E','Japan - onshore mainland 33°20''N to 34°N; 129°E to 130°E.',33.33,33.59,129.38,130.0,0); +INSERT INTO "area" VALUES('EPSG','2509','Japan - 33°20''N to 34°N; 130°E to 131°E','Japan - onshore mainland 33°20''N to 34°N; 130°E to 131°E.',33.33,34.0,130.0,131.0,0); +INSERT INTO "area" VALUES('EPSG','2510','Japan - 33°20''N to 34°N; 131°E to 132°E','Japan - 33°20''N to 34°N; 131°E to 132°E.',33.33,34.0,131.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','2511','Japan - 33°20''N to 34°N; 132°E to 133°E','Japan - 33°20''N to 34°N; 132°E to 133°E.',33.33,34.0,132.0,133.0,0); +INSERT INTO "area" VALUES('EPSG','2512','Japan - 33°20''N to 34°N; 133°E to 134°E','Japan - 33°20''N to 34°N; 133°E to 134°E.',33.33,34.0,133.0,134.0,0); +INSERT INTO "area" VALUES('EPSG','2513','Japan - 33°20''N to 34°N; 134°E to 135°E','Japan - onshore 33°20''N to 34°N; 134°E to 135°E.',33.33,34.0,134.0,134.81,0); +INSERT INTO "area" VALUES('EPSG','2514','Japan - 33°20''N to 34°N; 135°E to 136°E','Japan - onshore 33°20''N to 34°N; 135°E to 136°E.',33.4,34.0,135.0,136.0,0); +INSERT INTO "area" VALUES('EPSG','2515','Japan - 33°20''N to 34°N; 136°E to 137°E','Japan - onshore 33°20''N to 34°N; 136°E to 137°E.',33.54,34.0,136.0,136.34,0); +INSERT INTO "area" VALUES('EPSG','2516','Japan - 32°40''N to 33°20''N; 129°E to 130°E','Japan - onshore mainland 32°40''N to 33°20''N; 129°E to 130°E.',32.51,33.34,129.3,130.0,0); +INSERT INTO "area" VALUES('EPSG','2517','Japan - 32°40''N to 33°20''N; 130°E to 131°E','Japan - 32°40''N to 33°20''N; 130°E to 131°E.',32.66,33.34,130.0,131.0,0); +INSERT INTO "area" VALUES('EPSG','2518','Japan - 32°40''N to 33°20''N; 131°E to 132°E','Japan - 32°40''N to 33°20''N; 131°E to 132°E.',32.66,33.34,131.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','2519','Japan - 32°40''N to 33°20''N; 132°E to 133°E','Japan - onshore mainland 32°40''N to 33°20''N; 132°E to 133°E.',32.69,33.34,132.0,133.0,0); +INSERT INTO "area" VALUES('EPSG','2520','Japan - 32°40''N to 33°20''N; 133°E to 134°E','Japan - onshore 32°40''N to 33°20''N; 133°E to 134°E.',32.7,33.34,133.0,134.0,0); +INSERT INTO "area" VALUES('EPSG','2521','Japan - 32°40''N to 33°20''N; 134°E to 135°E','Japan - onshore 32°40''N to 33°20''N; 134°E to 135°E.',33.19,33.34,134.0,134.27,0); +INSERT INTO "area" VALUES('EPSG','2522','Japan - 32°N to 32°40''N; 129°54''E to 131°E','Japan - onshore 32°N to 32°40''N; 129°54''E to 131°E.',31.99,32.67,129.89,131.0,0); +INSERT INTO "area" VALUES('EPSG','2523','Japan - 32°N to 32°40''N; 131°E to 132°E','Japan - onshore 32°N to 32°40''N; 131°E to 132°E.',31.99,32.67,131.0,131.91,0); +INSERT INTO "area" VALUES('EPSG','2524','Japan - 31°20''N to 32°N; 130°E to 131°E','Japan - onshore mainland 31°20''N to 32°N; 130°E to 131°E.',31.33,32.0,130.1,131.0,0); +INSERT INTO "area" VALUES('EPSG','2525','Japan - 31°20''N to 32°N; 131°E to 132°E','Japan - onshore 31°20''N to 32°N; 131°E to 132°E.',31.33,32.0,131.0,131.55,0); +INSERT INTO "area" VALUES('EPSG','2526','Japan - onshore mainland south of 31°20''N','Japan - onshore mainland south of 31°20''N.',30.94,31.34,130.14,131.19,0); +INSERT INTO "area" VALUES('EPSG','2527','USA - Texas - SPCS83 - SC','United States (USA) - Texas - counties of Aransas; Atascosa; Austin; Bandera; Bee; Bexar; Brazoria; Brewster; Caldwell; Calhoun; Chambers; Colorado; Comal; De Witt; Dimmit; Edwards; Fayette; Fort Bend; Frio; Galveston; Goliad; Gonzales; Guadalupe; Harris; Hays; Jackson; Jefferson; Karnes; Kendall; Kerr; Kinney; La Salle; Lavaca; Live Oak; Matagorda; Maverick; McMullen; Medina; Presidio; Real; Refugio; Terrell; Uvalde; Val Verde; Victoria; Waller; Wharton; Wilson; Zavala.',27.78,30.67,-105.0,-93.76,0); +INSERT INTO "area" VALUES('EPSG','2528','USA - Texas - SPCS83 - S','United States (USA) - Texas - counties of Brooks; Cameron; Duval; Hidalgo; Jim Hogg; Jim Wells; Kenedy; Kleberg; Nueces; San Patricio; Starr; Webb; Willacy; Zapata.',25.83,28.21,-100.2,-96.85,0); +INSERT INTO "area" VALUES('EPSG','2529','USA - Louisiana - SPCS83 - S','United States (USA) - Louisiana - counties of Acadia; Allen; Ascension; Assumption; Beauregard; Calcasieu; Cameron; East Baton Rouge; East Feliciana; Evangeline; Iberia; Iberville; Jefferson; Jefferson Davis; Lafayette; LaFourche; Livingston; Orleans; Plaquemines; Pointe Coupee; St Bernard; St Charles; St Helena; St James; St John the Baptist; St Landry; St Martin; St Mary; St Tammany; Tangipahoa; Terrebonne; Vermilion; Washington; West Baton Rouge; West Feliciana.',28.85,31.07,-93.94,-88.75,0); +INSERT INTO "area" VALUES('EPSG','2530','UK - Northern Ireland - onshore','United Kingdom (UK) - Northern Ireland (Ulster) - onshore.',53.96,55.36,-8.18,-5.34,0); +INSERT INTO "area" VALUES('EPSG','2531','Denmark - onshore Jutland and Funen','Denmark - Jutland and Funen - onshore.',54.67,57.8,8.0,11.29,0); +INSERT INTO "area" VALUES('EPSG','2532','Denmark - onshore Zealand and Lolland','Denmark - Zealand and Lolland (onshore).',54.51,56.18,10.79,12.69,0); +INSERT INTO "area" VALUES('EPSG','2533','Denmark - onshore Bornholm','Denmark - Bornholm onshore.',54.94,55.36,14.59,15.24,0); +INSERT INTO "area" VALUES('EPSG','2534','World - N hemisphere - 3-degree CM 027°E','Between 25°30''E and 28°30''E, northern hemisphere.',0.0,84.0,25.5,28.5,0); +INSERT INTO "area" VALUES('EPSG','2535','World - N hemisphere - 3-degree CM 030°E','Between 28°30''E and 31°30''E, northern hemisphere.',0.0,84.0,28.5,31.5,0); +INSERT INTO "area" VALUES('EPSG','2536','World - N hemisphere - 3-degree CM 033°E','Between 31°30''E and 34°30''E, northern hemisphere.',0.0,84.0,31.5,34.5,0); +INSERT INTO "area" VALUES('EPSG','2537','World - N hemisphere - 3-degree CM 036°E','Between 34°30''E and 37°30''E, northern hemisphere.',0.0,84.0,34.5,37.5,0); +INSERT INTO "area" VALUES('EPSG','2538','World - N hemisphere - 3-degree CM 039°E','Between 37°30''E and 40°30''E, northern hemisphere.',0.0,84.0,37.5,40.5,0); +INSERT INTO "area" VALUES('EPSG','2539','World - N hemisphere - 3-degree CM 042°E','Between 40°30''E and 43°30''E, northern hemisphere.',0.0,84.0,40.5,43.5,0); +INSERT INTO "area" VALUES('EPSG','2540','World - N hemisphere - 3-degree CM 045°E','Between 43°30''E and 46°30''E, northern hemisphere.',0.0,84.0,43.5,46.5,0); +INSERT INTO "area" VALUES('EPSG','2541','Germany - West Germany N','Germany - states of former West Germany - onshore north of 52°20''N.',52.33,55.09,6.58,11.59,0); +INSERT INTO "area" VALUES('EPSG','2542','Germany - West Germany C','Germany - states of former West Germany - between 50°20''N and 52°20''N.',50.33,52.34,5.86,12.03,0); +INSERT INTO "area" VALUES('EPSG','2543','Germany - West Germany S','Germany - states of former West Germany - south of 50°20''N.',47.27,50.34,6.11,13.84,0); +INSERT INTO "area" VALUES('EPSG','2544','Germany - Thuringen','Germany - Thuringen.',50.2,51.64,9.92,12.56,0); +INSERT INTO "area" VALUES('EPSG','2545','Germany - Saxony','Germany - Sachsen.',50.2,51.66,11.89,15.04,0); +INSERT INTO "area" VALUES('EPSG','2546','Romania - offshore','Romania - offshore.',43.44,45.2,28.64,31.41,0); +INSERT INTO "area" VALUES('EPSG','2547','Serbia and Montenegro - Montenegro','Serbia and Montenegro - Montenegro.',41.82,43.53,18.44,20.37,1); +INSERT INTO "area" VALUES('EPSG','2548','Africa - AOF west of 10°W','French West Africa onshore west of 10°W - Guinea, Mali, Mauritania, Senegal.',8.29,26.01,-17.59,-10.0,0); +INSERT INTO "area" VALUES('EPSG','2549','Africa - AOF 10°W to 3.5°W','French West Africa between 10°W and 3°30''W - Burkina Faso, Côte d''Ivoire (Ivory Coast), Guinea, Mali, Mauritania.',4.29,27.3,-10.0,-3.49,0); +INSERT INTO "area" VALUES('EPSG','2550','Africa - AOF 3.5°W to 4°E','French West Africa onshore between 3°30''W and 4°E - Benin, Burkina Faso, Côte d''Ivoire (Ivory Coast), Mali, Niger, Togo.',5.03,24.18,-3.5,4.0,0); +INSERT INTO "area" VALUES('EPSG','2551','Africa - AOF 4°E to 9°E','French West Africa between 4°E and 9°E - Mali, Niger.',12.82,21.79,4.0,9.0,0); +INSERT INTO "area" VALUES('EPSG','2552','Africa - AEF 9°E to 14°E','French Equatorial Africa onshore west of 14°E - Cameroon, Chad, Congo, Gabon, Niger - between 9°E and 14°E.',-5.06,23.53,8.45,14.0,0); +INSERT INTO "area" VALUES('EPSG','2553','Africa - AEF 14°E to 21°E','French Equatorial Africa between 14°E and 21°E - Cameroon, Central African Republic, Chad, Congo, Gabon, Niger.',-4.91,23.46,14.0,21.0,0); +INSERT INTO "area" VALUES('EPSG','2554','Africa - AEF east of 21°E','French Equatorial Africa east of 21°E - Central African Republic, Chad.',4.12,21.06,21.0,27.46,0); +INSERT INTO "area" VALUES('EPSG','2555','Cameroon - coastal area','Cameroon - coastal area.',2.16,4.99,8.45,10.4,0); +INSERT INTO "area" VALUES('EPSG','2556','Greenland - north of 81°N','Greenland - onshore north of 81°N.',81.0,83.67,-65.06,-11.81,0); +INSERT INTO "area" VALUES('EPSG','2557','Greenland - east - 78°N to 81°N','Greenland - east of 44°W and between 78°N and 81°N, onshore.',78.0,81.0,-44.0,-14.33,0); +INSERT INTO "area" VALUES('EPSG','2558','Greenland - east - 75°N to 78°N','Greenland - east of 44°W and between 75°N and 78°N, onshore.',75.0,78.0,-44.0,-17.12,0); +INSERT INTO "area" VALUES('EPSG','2559','Greenland - east - 72°N to 75°N','Greenland - east of 38°W and between 72°N and 75°N, onshore.',72.0,75.0,-38.0,-17.21,0); +INSERT INTO "area" VALUES('EPSG','2560','Greenland - east - 69°N to 72°N','Greenland - east of 38°W and between 69°N and 72°N, onshore.',69.0,72.0,-38.0,-21.32,0); +INSERT INTO "area" VALUES('EPSG','2561','Greenland - east - 66°N to 69°N','Greenland - east of 42°W and between 66°N and 69°N, onshore.',66.0,69.0,-42.0,-25.14,0); +INSERT INTO "area" VALUES('EPSG','2562','Greenland - east - 63°N to 66°N','Greenland - east of 46°W and between 63°N and 66°N, onshore.',63.0,66.0,-46.0,-36.0,0); +INSERT INTO "area" VALUES('EPSG','2563','Greenland - west - 78°N to 81°N','Greenland - west of 44°W and between 78°N and 81°N, onshore.',78.0,81.0,-73.29,-44.0,0); +INSERT INTO "area" VALUES('EPSG','2564','Greenland - west - 75°N to 78°N','Greenland - west of 44°W and between 75°N and 78°N, onshore.',75.0,78.0,-72.79,-44.0,0); +INSERT INTO "area" VALUES('EPSG','2565','Greenland - west - 72°N to 75°N','Greenland - west of 38°W and between 72°N and 75°N, onshore.',72.0,75.0,-58.21,-38.0,0); +INSERT INTO "area" VALUES('EPSG','2566','Greenland - west - 69°N to 72°N','Greenland - west of 38°W and between 69°N and 72°N, onshore.',69.0,72.0,-56.06,-38.0,0); +INSERT INTO "area" VALUES('EPSG','2567','Greenland - west - 66°N to 69°N','Greenland - west of 42°W and between 66°N and 69°N, onshore.',66.0,69.0,-54.09,-42.0,0); +INSERT INTO "area" VALUES('EPSG','2568','Greenland - west - 63°N to 66°N','Greenland - west of 46°W and between 63°N and 66°N, onshore.',63.0,66.0,-53.7,-46.0,0); +INSERT INTO "area" VALUES('EPSG','2569','Greenland - south of 63°N','Greenland - onshore south of 63°N.',59.74,63.0,-50.72,-41.33,0); +INSERT INTO "area" VALUES('EPSG','2570','Greenland - Scoresbysund area','Greenland - Scoresbysund area onshore.',68.66,74.58,-29.69,-19.89,0); +INSERT INTO "area" VALUES('EPSG','2571','Greenland - Ammassalik area','Greenland - Ammassalik area onshore.',65.52,65.91,-38.86,-36.81,0); +INSERT INTO "area" VALUES('EPSG','2572','Greenland - southwest coast east of 48°W','Greenland - southwest coast east of 48°W.',59.74,62.05,-48.0,-42.52,0); +INSERT INTO "area" VALUES('EPSG','2573','Greenland - southwest coast 54°W to 48°W','Greenland - southwest coast between 54°W and 48°W.',60.63,73.05,-54.0,-48.0,0); +INSERT INTO "area" VALUES('EPSG','2574','Congo - coastal area and offshore','Congo - coastal area and offshore.',-6.91,-3.55,8.84,12.34,0); +INSERT INTO "area" VALUES('EPSG','2575','Australia - onshore','Australia - Australian Capital Territory; New South Wales; Northern Territory; Queensland; South Australia; Tasmania; Western Australia; Victoria.',-43.7,-9.86,112.85,153.69,0); +INSERT INTO "area" VALUES('EPSG','2576','Australia - AGD84','Australia - Queensland, South Australia, Western Australia, federal areas offshore west of 129°E.',-38.53,-9.37,109.23,153.61,0); +INSERT INTO "area" VALUES('EPSG','2577','Indonesia - Java Sea - offshore northwest Java','Indonesia - southern Java Sea offshore northwest Java.',-6.89,-4.07,105.77,110.01,0); +INSERT INTO "area" VALUES('EPSG','2578','Slovenia - upper Soca Valley','Slovenia - upper Soca Valley and Julian Alps.',46.16,46.49,13.38,13.87,0); +INSERT INTO "area" VALUES('EPSG','2579','Slovenia - Gorica','Slovenia - Gorica region including the Trnovo Forest, Nanos and Idrija Mountains.',45.77,46.18,13.47,14.11,0); +INSERT INTO "area" VALUES('EPSG','2580','Slovenia - upper Savinja','Slovenia - upper Savinja region with part of Koroska (Slovene Carinthia).',46.21,46.56,14.55,15.0,0); +INSERT INTO "area" VALUES('EPSG','2581','Slovenia - Suha Krajina','Slovenia - Suha Krajina with the Ribnica and Zuzemberk area.',45.66,45.89,14.57,15.08,0); +INSERT INTO "area" VALUES('EPSG','2582','Slovenia - Karst','Slovenia - The Karst with part of the Gorica area.',45.64,45.9,13.57,14.12,0); +INSERT INTO "area" VALUES('EPSG','2583','Slovenia - Littoral onshore','Slovenia - the Slovene Littoral with parts of the Karst and the Brkini Hills - onshore.',45.44,45.73,13.5,14.24,0); +INSERT INTO "area" VALUES('EPSG','2584','Slovenia - Bela Krajina','Slovenia - Bela Krajina including the broad region of Crnomelj and Metlika.',45.42,45.74,15.06,15.36,0); +INSERT INTO "area" VALUES('EPSG','2585','Slovenia - Pohorje','Slovenia - Pohorje with the Paski Kozjak and Konjiska Gora (Mountain).',46.28,46.58,15.15,15.54,0); +INSERT INTO "area" VALUES('EPSG','2586','Slovenia - lower Posavje','Slovenia - lower Posavje (the Sava Basin) with part of the Kozjansko region.',45.81,46.17,15.2,15.73,0); +INSERT INTO "area" VALUES('EPSG','2587','Slovenia - Maribor and Ptuj','Slovenia - Maribor and Ptuj with parts of the Kozjak range and the Slovenske Gorice (the Slovene Humpback).',46.33,46.74,15.44,16.0,0); +INSERT INTO "area" VALUES('EPSG','2588','Indonesia - Bali Sea west','Indonesia - offshore Madura Strait and western Bali Sea.',-8.46,-6.8,112.8,117.01,0); +INSERT INTO "area" VALUES('EPSG','2589','Indonesia - West Papua - Tangguh','Indonesia - West Papua (formerly Irian Jaya) - Tangguh.',-2.94,-1.97,131.89,133.82,0); +INSERT INTO "area" VALUES('EPSG','2590','Cameroon - Garoua area','Cameroon - Garoua area.',8.92,9.87,12.9,14.19,0); +INSERT INTO "area" VALUES('EPSG','2591','Cameroon - N''Djamena area','Cameroon - N''Djamena area.',11.7,12.77,14.17,15.09,0); +INSERT INTO "area" VALUES('EPSG','2592','Azerbaijan - offshore and Sangachal','Azerbaijan - Caspian offshore and onshore Sangachal terminal.',37.89,42.59,48.66,51.73,0); +INSERT INTO "area" VALUES('EPSG','2593','Asia - FSU - Azerbaijan and Georgia','Azerbaijan (including Caspian) and Georgia onshore.',37.89,43.59,39.99,51.73,0); +INSERT INTO "area" VALUES('EPSG','2594','Azerbaijan - coastal area Baku to Astara','Azerbaijan - coastal area Baku to Astara.',38.31,40.33,48.93,50.4,0); +INSERT INTO "area" VALUES('EPSG','2595','Egypt - Western Desert','Egypt - Western Desert.',25.71,31.68,24.7,30.0,0); +INSERT INTO "area" VALUES('EPSG','2596','Argentina - Tierra del Fuego offshore west of 66°W','Argentina - Tierra del Fuego offshore Atlantic west of 66°W.',-54.61,-51.65,-68.62,-66.0,0); +INSERT INTO "area" VALUES('EPSG','2597','Argentina - Tierra del Fuego offshore east of 66°W','Argentina - Tierra del Fuego offshore Atlantic east of 66°W.',-54.93,-51.36,-66.0,-61.49,0); +INSERT INTO "area" VALUES('EPSG','2598','Algeria - District 3','Algeria - District 3 (In Salah).',25.0,32.0,1.0,3.3,0); +INSERT INTO "area" VALUES('EPSG','2599','Algeria - In Amenas','Algeria - In Amenas block.',27.5,28.3,8.83,9.92,0); +INSERT INTO "area" VALUES('EPSG','2600','Algeria - Hassi Bir Reikaz','Algeria - Hassi Bir Reikaz.',31.75,32.42,7.16,8.0,0); +INSERT INTO "area" VALUES('EPSG','2601','Norway - offshore north of 62°N; Svalbard','Norway - offshore north of 62°N. Also Svalbard.',62.0,84.17,-3.7,39.65,0); +INSERT INTO "area" VALUES('EPSG','2602','Palestine Territory','Palestine Territory.',31.21,32.55,34.17,35.58,0); +INSERT INTO "area" VALUES('EPSG','2603','Asia - Middle East - Israel and Palestine Territory onshore','Israel - onshore; Palestine Territory - onshore.',29.45,33.28,34.17,35.69,0); +INSERT INTO "area" VALUES('EPSG','2604','World - N hemisphere - 3-degree CM 048°E','Between 46°30''E and 49°30''E, northern hemisphere.',0.0,84.0,46.5,49.5,0); +INSERT INTO "area" VALUES('EPSG','2605','World - N hemisphere - 3-degree CM 051°E','Between 49°30''E and 52°30''E, northern hemisphere.',0.0,84.0,49.5,52.5,0); +INSERT INTO "area" VALUES('EPSG','2606','World - N hemisphere - 3-degree CM 054°E','Between 52°30''E and 55°30''E, northern hemisphere.',0.0,84.0,52.5,55.5,0); +INSERT INTO "area" VALUES('EPSG','2607','World - N hemisphere - 3-degree CM 057°E','Between 55°30''E and 58°30''E, northern hemisphere.',0.0,84.0,55.5,58.5,0); +INSERT INTO "area" VALUES('EPSG','2608','World - N hemisphere - 3-degree CM 060°E','Between 58°30''E and 61°30''E, northern hemisphere.',0.0,84.0,58.5,61.5,0); +INSERT INTO "area" VALUES('EPSG','2609','World - N hemisphere - 3-degree CM 063°E','Between 61°30''E and 64°30''E, northern hemisphere.',0.0,84.0,61.5,64.5,0); +INSERT INTO "area" VALUES('EPSG','2610','World - N hemisphere - 3-degree CM 066°E','Between 64°30''E and 67°30''E, northern hemisphere.',0.0,84.0,64.5,67.5,0); +INSERT INTO "area" VALUES('EPSG','2611','World - N hemisphere - 3-degree CM 069°E','Between 67°30''E and 70°30''E, northern hemisphere.',0.0,84.0,67.5,70.5,0); +INSERT INTO "area" VALUES('EPSG','2612','World - N hemisphere - 3-degree CM 072°E','Between 70°30''E and 73°30''E, northern hemisphere.',0.0,84.0,70.5,73.5,0); +INSERT INTO "area" VALUES('EPSG','2613','World - N hemisphere - 3-degree CM 075°E','Between 73°30''E and 76°30''E, northern hemisphere.',0.0,84.0,73.5,76.5,0); +INSERT INTO "area" VALUES('EPSG','2614','World - N hemisphere - 3-degree CM 078°E','Between 76°30''E and 79°30''E, northern hemisphere.',0.0,84.0,76.5,79.5,0); +INSERT INTO "area" VALUES('EPSG','2615','World - N hemisphere - 3-degree CM 081°E','Between 79°30''E and 82°30''E, northern hemisphere.',0.0,84.0,79.5,82.5,0); +INSERT INTO "area" VALUES('EPSG','2616','World - N hemisphere - 3-degree CM 084°E','Between 82°30''E and 85°30''E, northern hemisphere.',0.0,84.0,82.5,85.5,0); +INSERT INTO "area" VALUES('EPSG','2617','World - N hemisphere - 3-degree CM 087°E','Between 85°30''E and 88°30''E, northern hemisphere.',0.0,84.0,85.5,88.5,0); +INSERT INTO "area" VALUES('EPSG','2618','World - N hemisphere - 3-degree CM 090°E','Between 88°30''E and 91°30''E, northern hemisphere.',0.0,84.0,88.5,91.5,0); +INSERT INTO "area" VALUES('EPSG','2619','World - N hemisphere - 3-degree CM 093°E','Between 91°30''E and 94°30''E, northern hemisphere.',0.0,84.0,91.5,94.5,0); +INSERT INTO "area" VALUES('EPSG','2620','World - N hemisphere - 3-degree CM 096°E','Between 94°30''E and 97°30''E, northern hemisphere.',0.0,84.0,94.5,97.5,0); +INSERT INTO "area" VALUES('EPSG','2621','World - N hemisphere - 3-degree CM 099°E','Between 97°30''E and 100°30''E, northern hemisphere.',0.0,84.0,97.5,100.5,0); +INSERT INTO "area" VALUES('EPSG','2622','World - N hemisphere - 3-degree CM 102°E','Between 100°30''E and 103°30''E, northern hemisphere.',0.0,84.0,100.5,103.5,0); +INSERT INTO "area" VALUES('EPSG','2623','World - N hemisphere - 3-degree CM 105°E','Between 103°30''E and 106°30''E, northern hemisphere.',0.0,84.0,103.5,106.5,0); +INSERT INTO "area" VALUES('EPSG','2624','World - N hemisphere - 3-degree CM 108°E','Between 106°30''E and 109°30''E, northern hemisphere.',0.0,84.0,106.5,109.5,0); +INSERT INTO "area" VALUES('EPSG','2625','World - N hemisphere - 3-degree CM 111°E','Between 109°30''Eand 112°30''E, northern hemisphere.',0.0,84.0,109.5,112.5,0); +INSERT INTO "area" VALUES('EPSG','2626','World - N hemisphere - 3-degree CM 114°E','Between 112°30''E and 115°30''E, northern hemisphere.',0.0,84.0,112.5,115.5,0); +INSERT INTO "area" VALUES('EPSG','2627','World - N hemisphere - 3-degree CM 117°E','Between 115°30''E and 118°30''E, northern hemisphere.',0.0,84.0,115.5,118.5,0); +INSERT INTO "area" VALUES('EPSG','2628','World - N hemisphere - 3-degree CM 120°E','Between 118°30''E and 121°30''E, northern hemisphere.',0.0,84.0,118.5,121.5,0); +INSERT INTO "area" VALUES('EPSG','2629','World - N hemisphere - 3-degree CM 123°E','Between 121°30''E and 124°30''E, northern hemisphere.',0.0,84.0,121.5,124.5,0); +INSERT INTO "area" VALUES('EPSG','2630','World - N hemisphere - 3-degree CM 126°E','Between 124°30''E and 127°30''E, northern hemisphere.',0.0,84.0,124.5,127.5,0); +INSERT INTO "area" VALUES('EPSG','2631','World - N hemisphere - 3-degree CM 129°E','Between 127°30''E and 130°30''E, northern hemisphere.',0.0,84.0,127.5,130.5,0); +INSERT INTO "area" VALUES('EPSG','2632','World - N hemisphere - 3-degree CM 132°E','Between 130°30''E and 133°30''E, northern hemisphere.',0.0,84.0,130.5,133.5,0); +INSERT INTO "area" VALUES('EPSG','2633','World - N hemisphere - 3-degree CM 135°E','Between 133°30''E and 136°30''E, northern hemisphere.',0.0,84.0,133.5,136.5,0); +INSERT INTO "area" VALUES('EPSG','2634','World - N hemisphere - 3-degree CM 138°E','Between 136°30''E and 139°30''E, northern hemisphere.',0.0,84.0,136.5,139.5,0); +INSERT INTO "area" VALUES('EPSG','2635','World - N hemisphere - 3-degree CM 141°E','Between 139°30''E and 142°30''E, northern hemisphere.',0.0,84.0,139.5,142.5,0); +INSERT INTO "area" VALUES('EPSG','2636','World - N hemisphere - 3-degree CM 144°E','Between 142°30''E and 145°30''E, northern hemisphere.',0.0,84.0,142.5,145.5,0); +INSERT INTO "area" VALUES('EPSG','2637','World - N hemisphere - 3-degree CM 147°E','Between 145°30''E and 148°30''E, northern hemisphere.',0.0,84.0,145.5,148.5,0); +INSERT INTO "area" VALUES('EPSG','2638','World - N hemisphere - 3-degree CM 150°E','Between 148°30''E and 151°30''E, northern hemisphere.',0.0,84.0,148.5,151.5,0); +INSERT INTO "area" VALUES('EPSG','2639','World - N hemisphere - 3-degree CM 153°E','Between 151°30''E and 154°30''E, northern hemisphere.',0.0,84.0,151.5,154.5,0); +INSERT INTO "area" VALUES('EPSG','2640','World - N hemisphere - 3-degree CM 156°E','Between 154°30''E and 157°30''E, northern hemisphere.',0.0,84.0,154.5,157.5,0); +INSERT INTO "area" VALUES('EPSG','2641','World - N hemisphere - 3-degree CM 159°E','Between 157°30''E and 160°30''E, northern hemisphere.',0.0,84.0,157.5,160.5,0); +INSERT INTO "area" VALUES('EPSG','2642','World - N hemisphere - 3-degree CM 162°E','Between 160°30''E and 163°30''E, northern hemisphere.',0.0,84.0,160.5,163.5,0); +INSERT INTO "area" VALUES('EPSG','2643','World - N hemisphere - 3-degree CM 165°E','Between 163°30''E and 166°30''E, northern hemisphere.',0.0,84.0,163.5,166.5,0); +INSERT INTO "area" VALUES('EPSG','2644','World - N hemisphere - 3-degree CM 168°E','Between 166°30''E and 169°30''E, northern hemisphere.',0.0,84.0,166.5,169.5,0); +INSERT INTO "area" VALUES('EPSG','2645','World - N hemisphere - 3-degree CM 171°E','Between 169°30''E and 172°30''E, northern hemisphere.',0.0,84.0,169.5,172.5,0); +INSERT INTO "area" VALUES('EPSG','2646','World - N hemisphere - 3-degree CM 174°E','Between 172°30''E and 175°30''E, northern hemisphere.',0.0,84.0,172.5,175.5,0); +INSERT INTO "area" VALUES('EPSG','2647','World - N hemisphere - 3-degree CM 177°E','Between 175°30''E and 178°30''E, northern hemisphere.',0.0,84.0,175.5,178.5,0); +INSERT INTO "area" VALUES('EPSG','2648','World - N hemisphere - 3-degree CM 180°E','Between 178°30''E and 178°30''W, northern hemisphere.',0.0,84.0,178.5,-178.5,0); +INSERT INTO "area" VALUES('EPSG','2649','World - N hemisphere - 3-degree CM 177°W','Between 178°30''W and 175°30''W, northern hemisphere.',0.0,84.0,-178.5,-175.5,0); +INSERT INTO "area" VALUES('EPSG','2650','World - N hemisphere - 3-degree CM 174°W','Between 175°30''W and 172°30''W, northern hemisphere.',0.0,84.0,-175.5,-172.5,0); +INSERT INTO "area" VALUES('EPSG','2651','World - N hemisphere - 3-degree CM 171°W','Between 172°30''W and 169°30''W, northern hemisphere.',0.0,84.0,-172.5,-169.5,0); +INSERT INTO "area" VALUES('EPSG','2652','World - N hemisphere - 3-degree CM 168°W','Between 169°30''W and 166°30''W, northern hemisphere.',0.0,84.0,-169.5,-166.5,0); +INSERT INTO "area" VALUES('EPSG','2653','Europe - FSU - 19.5°E to 22.5°E onshore','Estonia, Latvia, Lithuania, Russian Federation (Kaliningrad) and Ukraine - onshore between 19°30''E and 22°30''E.',48.24,59.1,19.57,22.5,0); +INSERT INTO "area" VALUES('EPSG','2654','Europe - FSU - 22.5°E to 25.5°E onshore','Belarus, Estonia, Latvia, Lithuania, Russian Federation (Kaliningrad) and Ukraine - onshore between 22°30''E and 25°30''E.',47.71,59.75,22.5,25.5,0); +INSERT INTO "area" VALUES('EPSG','2655','Europe - FSU - 25.5°E to 28.5°E onshore','Belarus, Estonia, Latvia, Lithuania, Moldova, Russian Federation and Ukraine - onshore between 25°30''E and 28°30''E.',45.26,68.93,25.49,28.51,0); +INSERT INTO "area" VALUES('EPSG','2656','Europe - FSU - 28.5°E to 31.5°E onshore','Belarus, Moldova, Russian Federation and Ukraine - onshore between 28°30''E and 31°30''E.',45.18,69.85,28.5,31.5,0); +INSERT INTO "area" VALUES('EPSG','2657','Europe - FSU - 31.5°E to 34.5°E onshore','Belarus, Russian Federation and Ukraine - onshore between 31°30''E and 34°30''E.',44.32,70.02,31.5,34.5,0); +INSERT INTO "area" VALUES('EPSG','2658','Europe - FSU - 34.5°E to 37.5°E onshore','Russian Federation and Ukraine - onshore between 34°30''E and 37°30''E.',44.61,69.39,34.5,37.5,0); +INSERT INTO "area" VALUES('EPSG','2659','Europe - FSU - 37.5°E to 40.5°E onshore','Georgia, Russian Federation and Ukraine - onshore between 37°30''E and 40°30''E.',43.07,68.8,37.5,40.5,0); +INSERT INTO "area" VALUES('EPSG','2660','Europe - FSU - 40.5°E to 43.5°E onshore','Georgia, Russian Federation - onshore between 40°30''E and 43°30''E.',41.01,68.74,40.5,43.51,0); +INSERT INTO "area" VALUES('EPSG','2661','Europe - FSU - 43.5°E to 46.5°E onshore','Armenia, Azerbaijan, Georgia and Russian Federation onshore - between 43°30''E and 46°30''E.',38.84,80.8,43.5,46.5,0); +INSERT INTO "area" VALUES('EPSG','2662','Europe - FSU - 46.5°E to 49.5°E onshore','Azerbaijan, Georgia, Kazakhstan and Russian Federation onshore - between 46°30''E and 49°30''E.',38.31,80.91,46.5,49.5,0); +INSERT INTO "area" VALUES('EPSG','2663','Asia - FSU - 49.5°E to 52.5°E onshore','Azerbaijan, Kazakhstan and Russian Federation onshore - between 49°30''E and 52°30''E.',37.66,81.22,49.5,52.5,0); +INSERT INTO "area" VALUES('EPSG','2664','Asia - FSU - 52.5°E to 55.5°E onshore','Kazakhstan, Russian Federation onshore and Turkmenistan - between 52°30''E and 55°30''E.',37.33,81.41,52.5,55.5,0); +INSERT INTO "area" VALUES('EPSG','2665','Asia - FSU - 55.5°E to 58.5°E onshore','Kazakhstan, Russian Federation onshore, Turkmenistan and Uzbekistan - between 55°30''E and 58°30''E.',37.64,81.89,55.5,58.5,0); +INSERT INTO "area" VALUES('EPSG','2666','Asia - FSU - 58.5°E to 61.5°E onshore','Kazakhstan, Russian Federation onshore, Turkmenistan and Uzbekistan - between 58°30''E and 61°30''E.',35.51,81.91,58.5,61.5,0); +INSERT INTO "area" VALUES('EPSG','2667','Asia - FSU - 61.5°E to 64.5°E onshore','Kazakhstan, Russian Federation onshore, Turkmenistan and Uzbekistan - between 61°30''E and 64°30''E.',35.14,81.77,61.5,64.5,0); +INSERT INTO "area" VALUES('EPSG','2668','Asia - FSU - 64.5°E to 67.5°E onshore','Kazakhstan, Russian Federation onshore, Tajikistan, Turkmenistan and Uzbekistan - between 64°30''E and 67°30''E.',36.27,81.25,64.5,67.5,0); +INSERT INTO "area" VALUES('EPSG','2669','Asia - FSU - 67.5°E to 70.5°E onshore','Kazakhstan, Kyrgyzstan, Russian Federation onshore, Tajikistan and Uzbekistan - between 67°30''E and 70°30''E.',36.93,77.07,67.5,70.5,0); +INSERT INTO "area" VALUES('EPSG','2670','Asia - FSU - 70.5°E to 73.5°E onshore','Kazakhstan, Kyrgyzstan, Russian Federation onshore, Tajikistan and Uzbekistan - between 70°30''E and 73°30''E.',36.67,73.57,70.5,73.5,0); +INSERT INTO "area" VALUES('EPSG','2671','Asia - FSU - 73.5°E to 76.5°E onshore','Kazakhstan, Kyrgyzstan, Russian Federation onshore and Tajikistan - between 73°30''E and 76°30''E.',37.22,79.71,73.5,76.5,0); +INSERT INTO "area" VALUES('EPSG','2672','Asia - FSU - 76.5°E to 79.5°E onshore','Kazakhstan, Kyrgyzstan and Russian Federation onshore - between 76°30''E and 79°30''E.',40.44,81.03,76.5,79.5,0); +INSERT INTO "area" VALUES('EPSG','2673','Asia - FSU - 79.5°E to 82.5°E onshore','Kazakhstan, Kyrgyzstan and Russian Federation onshore - between 79°30''E and 82°30''E.',41.82,81.03,79.5,82.5,0); +INSERT INTO "area" VALUES('EPSG','2674','Asia - FSU - 82.5°E to 85.5°E onshore','Kazakhstan and Russian Federation onshore - between 82°30''E and 85°30''E.',45.11,77.56,82.5,85.5,0); +INSERT INTO "area" VALUES('EPSG','2675','Asia - FSU - 85.5°E to 88.5°E onshore','Kazakhstan and Russian Federation onshore - between 85°30''E and 88°30''E.',47.05,77.16,85.5,88.5,0); +INSERT INTO "area" VALUES('EPSG','2676','Russia - 88.5°E to 91.5°E onshore','Russian Federation - onshore between 88°30''E and 91°30''E.',49.44,81.28,88.5,91.5,0); +INSERT INTO "area" VALUES('EPSG','2677','Russia - 91.5°E to 94.5°E onshore','Russian Federation - onshore between 91°30''E and 94°30''E.',50.16,81.26,91.5,94.5,0); +INSERT INTO "area" VALUES('EPSG','2678','Russia - 94.5°E to 97.5°E onshore','Russian Federation - onshore between 94°30''E and 97°30''E.',49.73,81.35,94.5,97.5,0); +INSERT INTO "area" VALUES('EPSG','2679','Russia - 97.5°E to 100.5°E onshore','Russian Federation - onshore between 97°30''E and 100°30''E.',49.79,80.9,97.5,100.5,0); +INSERT INTO "area" VALUES('EPSG','2680','Russia - 100.5°E to 103.5°E onshore','Russian Federation - onshore between 100°30''E and 103°30''E.',50.17,79.71,100.5,103.5,0); +INSERT INTO "area" VALUES('EPSG','2681','Russia - 103.5°E to 106.5°E onshore','Russian Federation - onshore between 103°30''E and 106°30''E.',50.13,79.21,103.5,106.5,0); +INSERT INTO "area" VALUES('EPSG','2682','Russia - 106.5°E to 109.5°E onshore','Russian Federation - onshore between 106°30''E and 109°30''E.',49.25,78.4,106.5,109.5,0); +INSERT INTO "area" VALUES('EPSG','2683','Russia - 109.5°E to 112.5°E onshore','Russian Federation - onshore between 109°30''E and 112°30''E.',49.14,76.81,109.5,112.5,0); +INSERT INTO "area" VALUES('EPSG','2684','Russia - 112.5°E to 115.5°E onshore','Russian Federation - onshore between 112°30''E and 115°30''E.',49.49,76.7,112.5,115.5,0); +INSERT INTO "area" VALUES('EPSG','2685','Russia - 115.5°E to 118.5°E onshore','Russian Federation - onshore between 115°30''E and 118°30''E.',49.51,74.43,115.5,118.5,0); +INSERT INTO "area" VALUES('EPSG','2686','Russia - 118.5°E to 121.5°E onshore','Russian Federation - onshore between 118°30''E and 121°30''E.',49.87,73.63,118.5,121.5,0); +INSERT INTO "area" VALUES('EPSG','2687','Russia - 121.5°E to 124.5°E onshore','Russian Federation - onshore between 121°30''E and 124°30''E.',53.18,74.0,121.5,124.5,0); +INSERT INTO "area" VALUES('EPSG','2688','Russia - 124.5°E to 127.5°E onshore','Russian Federation - onshore between 124°30''E and 127°30''E.',49.88,74.0,124.5,127.5,0); +INSERT INTO "area" VALUES('EPSG','2689','Russia - 127.5°E to 130.5°E onshore','Russian Federation - onshore between 127°30''E and 130°30''E.',42.67,73.59,127.5,130.5,0); +INSERT INTO "area" VALUES('EPSG','2690','Russia - 130.5°E to 133.5°E onshore','Russian Federation - onshore between 130°30''E and 133°30''E.',42.25,71.99,130.5,133.5,0); +INSERT INTO "area" VALUES('EPSG','2691','Russia - 133.5°E to 136.5°E onshore','Russian Federation - onshore between 133°30''E and 136°30''E.',42.74,75.9,133.5,136.5,0); +INSERT INTO "area" VALUES('EPSG','2692','Russia - 136.5°E to 139.5°E onshore','Russian Federation - onshore between 136°30''E and 139°30''E.',44.76,76.27,136.5,139.5,0); +INSERT INTO "area" VALUES('EPSG','2693','Russia - 139.5°E to 142.5°E onshore','Russian Federation - onshore between 139°30''E and 142°30''E.',45.84,76.23,139.5,142.5,0); +INSERT INTO "area" VALUES('EPSG','2694','Russia - 142.5°E to 145.5°E onshore','Russian Federation - onshore between 142°30''E and 145°30''E.',43.61,75.98,142.5,145.5,0); +INSERT INTO "area" VALUES('EPSG','2695','Russia - 145.5°E to 148.5°E onshore','Russian Federation - onshore between 145°30''E and 148°30''E.',43.6,76.76,145.5,148.5,0); +INSERT INTO "area" VALUES('EPSG','2696','Russia - 148.5°E to 151.5°E onshore','Russian Federation - onshore between 148°30''E and 151°30''E.',45.21,76.82,148.5,151.5,0); +INSERT INTO "area" VALUES('EPSG','2697','Russia - 151.5°E to 154.5°E onshore','Russian Federation - onshore between 151°30''E and 154°30''E.',46.72,76.26,151.5,154.5,0); +INSERT INTO "area" VALUES('EPSG','2698','Russia - 154.5°E to 157.5°E onshore','Russian Federation - onshore between 154°30''E and 157°30''E.',49.02,77.2,154.5,157.5,0); +INSERT INTO "area" VALUES('EPSG','2699','Russia - 157.5°E to 160.5°E onshore','Russian Federation - onshore between 157°30''E and 160°30''E.',51.36,71.12,157.5,160.5,0); +INSERT INTO "area" VALUES('EPSG','2700','Russia - 160.5°E to 163.5°E onshore','Russian Federation - onshore between 160°30''E and 163°30''E.',54.34,70.98,160.5,163.5,0); +INSERT INTO "area" VALUES('EPSG','2701','Russia - 163.5°E to 166.5°E onshore','Russian Federation - onshore between 163°30''E and 166°30''E.',54.69,69.82,163.5,166.5,0); +INSERT INTO "area" VALUES('EPSG','2702','Russia - 166.5°E to 169.5°E onshore','Russian Federation - onshore between 166°30''E and 169°30''E.',54.45,70.07,166.5,169.5,0); +INSERT INTO "area" VALUES('EPSG','2703','Russia - 169.5°E to 172.5°E onshore','Russian Federation - onshore between 169°30''E and 172°30''E.',59.86,70.19,169.5,172.5,0); +INSERT INTO "area" VALUES('EPSG','2704','Russia - 172.5°E to 175.5°E onshore','Russian Federation - onshore between 172°30''E and 175°30''E.',60.99,70.02,172.5,175.5,0); +INSERT INTO "area" VALUES('EPSG','2705','Russia - 175.5°E to 178.5°E onshore','Russian Federation - onshore between 175°30''E and 178°30''E.',62.09,71.1,175.5,178.5,0); +INSERT INTO "area" VALUES('EPSG','2706','Russia - 178.5°E to 178.5°W onshore','Russian Federation - onshore between 178°30''E and 178°30''W.',62.24,71.65,178.5,-178.5,0); +INSERT INTO "area" VALUES('EPSG','2707','Russia - 178.5°W to 175.5°W onshore','Russian Federation - onshore between 178°30''W and 175°30''W.',64.74,71.61,-178.5,-175.5,0); +INSERT INTO "area" VALUES('EPSG','2708','Russia - 175.5°W to 172.5°W onshore','Russian Federation - onshore between 175°30''W and 172°30''W.',64.2,67.78,-175.5,-172.5,0); +INSERT INTO "area" VALUES('EPSG','2709','Russia - 172.5°W to 169.5°W onshore','Russian Federation - onshore between 172°30''W and 169°30''W.',64.35,67.06,-172.5,-169.57,0); +INSERT INTO "area" VALUES('EPSG','2710','Russia - east of 169.5°W onshore','Russian Federation - onshore between 169°30''W and 166°30''W.',65.7,65.86,-169.22,-168.97,0); +INSERT INTO "area" VALUES('EPSG','2711','China - west of 76.5°E','China - west of 76°30''E.',35.81,40.65,73.62,76.5,0); +INSERT INTO "area" VALUES('EPSG','2712','China - 76.5°E to 79.5°E','China - between 76°30''E and 79°30''E.',31.03,41.83,76.5,79.5,0); +INSERT INTO "area" VALUES('EPSG','2713','China - 79.5°E to 82.5°E','China - between 79°30''E and 82°30''E.',29.95,45.88,79.5,82.51,0); +INSERT INTO "area" VALUES('EPSG','2714','China - 82.5°E to 85.5°E','China - between 82°30''E and 85°30''E.',28.26,47.23,82.5,85.5,0); +INSERT INTO "area" VALUES('EPSG','2715','China - 85.5°E to 88.5°E','China - between 85°30''E and 88°30''E.',27.8,49.18,85.5,88.5,0); +INSERT INTO "area" VALUES('EPSG','2716','China - 88.5°E to 91.5°E','China - between 88°30''E and 91°30''E.',27.32,48.42,88.49,91.51,0); +INSERT INTO "area" VALUES('EPSG','2717','China - 91.5°E to 94.5°E','China - between 91°30''E and 94°30''E.',27.71,45.13,91.5,94.5,0); +INSERT INTO "area" VALUES('EPSG','2718','China - 94.5°E to 97.5°E','China - between 94°30''E and 97°30''E.',28.23,44.5,94.5,97.51,0); +INSERT INTO "area" VALUES('EPSG','2719','China - 97.5°E to 100.5°E','China - between 97°30''E and 100°30''E.',21.43,42.76,97.5,100.5,0); +INSERT INTO "area" VALUES('EPSG','2720','China - 100.5°E to 103.5°E','China - between 100°30''E and 103°30''E.',21.13,42.69,100.5,103.5,0); +INSERT INTO "area" VALUES('EPSG','2721','China - 103.5°E to 106.5°E','China - between 103°30''E and 106°30''E.',22.5,42.21,103.5,106.5,0); +INSERT INTO "area" VALUES('EPSG','2722','China - 106.5°E to 109.5°E onshore','China - onshore between 106°30''E and 109°30''E.',18.19,42.47,106.5,109.5,0); +INSERT INTO "area" VALUES('EPSG','2723','China - 109.5°E to 112.5°E onshore','China - onshore between 109°30''E and 112°30''E.',18.11,45.11,109.5,112.5,0); +INSERT INTO "area" VALUES('EPSG','2724','China - 112.5°E to 115.5°E onshore','China - onshore between 112°30''E and 115°30''E.',21.52,45.45,112.5,115.5,0); +INSERT INTO "area" VALUES('EPSG','2725','China - 115.5°E to 118.5°E onshore','China - onshore between 115°30''E and 118°30''E.',22.6,49.88,115.5,118.5,0); +INSERT INTO "area" VALUES('EPSG','2726','China - 118.5°E to 121.5°E onshore','China - onshore between 118°30''E and 121°30''E.',24.43,53.33,118.5,121.5,0); +INSERT INTO "area" VALUES('EPSG','2727','China - 121.5°E to 124.5°E onshore','China - onshore between 121°30''E and 124°30''E.',28.22,53.56,121.5,124.5,0); +INSERT INTO "area" VALUES('EPSG','2728','China - 124.5°E to 127.5°E onshore','China - onshore between 124°30''E and 127°30''E.',40.19,53.2,124.5,127.5,0); +INSERT INTO "area" VALUES('EPSG','2729','China - 127.5°E to 130.5°E','China - between 127°30''E and 130°30''E.',41.37,50.25,127.5,130.5,0); +INSERT INTO "area" VALUES('EPSG','2730','China - 130.5°E to 133.5°E','China - between 130°30''E and 133°30''E.',42.42,48.88,130.5,133.5,0); +INSERT INTO "area" VALUES('EPSG','2731','China - east of 133.5°E','China - east of 133°30''E.',45.85,48.4,133.5,134.77,0); +INSERT INTO "area" VALUES('EPSG','2732','World - 6-degree CM 081°W','Between 84°W and 78°W.',-80.0,84.0,-84.0,-78.0,0); +INSERT INTO "area" VALUES('EPSG','2733','World - 6-degree CM 075°W','Between 78°W and 72°W.',-80.0,84.0,-78.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','2734','World - 6-degree CM 069°W','Between 72°W and 66°W.',-80.0,84.0,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','2735','World - 6-degree CM 063°W','Between 66°W and 60°W.',-80.0,84.0,-66.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','2736','World - 6-degree CM 057°W','Between 60°W and 54°W.',-80.0,84.0,-60.0,-54.0,0); +INSERT INTO "area" VALUES('EPSG','2737','World - 6-degree CM 051°W','Between 54°W and 48°W.',-80.0,84.0,-54.0,-48.0,0); +INSERT INTO "area" VALUES('EPSG','2738','World - 6-degree CM 045°W','Between 48°W and 42°W.',-80.0,84.0,-48.0,-42.0,0); +INSERT INTO "area" VALUES('EPSG','2739','World - 6-degree CM 039°W','Between 42°W and 36°W.',-80.0,84.0,-42.0,-36.0,0); +INSERT INTO "area" VALUES('EPSG','2740','World - 6-degree CM 033°W','Between 36°W and 30°W.',-80.0,84.0,-36.0,-30.0,0); +INSERT INTO "area" VALUES('EPSG','2741','World - 6-degree CM 009°E','Between 6°E and 12°E.',-80.0,84.0,6.0,12.0,0); +INSERT INTO "area" VALUES('EPSG','2742','World - 6-degree CM 015°E','Between 12°E and 18°E.',-80.0,84.0,12.0,18.0,0); +INSERT INTO "area" VALUES('EPSG','2743','World - 6-degree CM 021°E','Between 18°E and 24°E.',-80.0,84.0,18.0,24.0,0); +INSERT INTO "area" VALUES('EPSG','2744','World - 6-degree CM 027°E','Between 24°E and 30°E.',-80.0,84.0,24.0,30.0,0); +INSERT INTO "area" VALUES('EPSG','2745','World - 6-degree CM 033°E','Between 30°E and 36°E.',-80.0,84.0,30.0,36.0,0); +INSERT INTO "area" VALUES('EPSG','2746','World - 6-degree CM 039°E','Between 36°E and 42°E.',-80.0,84.0,36.0,42.0,0); +INSERT INTO "area" VALUES('EPSG','2747','Russia - 19.5°E to 22.5°E onshore','Russian Federation - Kaliningrad - onshore between 19°30''E and 22°30''E.',54.32,55.32,19.57,22.5,0); +INSERT INTO "area" VALUES('EPSG','2748','Russia - 22.5°E to 25.5°E onshore','Russian Federation - onshore between 22°30''E and 25°30''E - Kaliningrad.',54.34,55.07,22.5,22.87,0); +INSERT INTO "area" VALUES('EPSG','2749','Russia - 25.5°E to 28.5°E onshore','Russian Federation - onshore between 25°30''E and 28°30''E.',56.05,68.93,26.61,28.51,0); +INSERT INTO "area" VALUES('EPSG','2750','Russia - 28.5°E to 31.5°E onshore','Russian Federation - onshore between 28°30''E and 31°30''E.',52.85,69.85,28.5,31.5,0); +INSERT INTO "area" VALUES('EPSG','2751','Russia - 31.5°E to 34.5°E onshore','Russian Federation - onshore between 31°30''E and 34°30''E.',51.24,70.02,31.5,34.5,0); +INSERT INTO "area" VALUES('EPSG','2752','Russia - 34.5°E to 37.5°E onshore','Russian Federation - onshore between 34°30''E and 37°30''E.',44.61,69.39,34.5,37.51,0); +INSERT INTO "area" VALUES('EPSG','2753','Russia - 37.5°E to 40.5°E onshore','Russian Federation - onshore between 37°30''E and 40°30''E.',43.33,68.8,37.5,40.5,0); +INSERT INTO "area" VALUES('EPSG','2754','Russia - 40.5°E to 43.5°E onshore','Russian Federation - onshore between 40°30''E and 43°30''E.',42.87,68.74,40.5,43.5,0); +INSERT INTO "area" VALUES('EPSG','2755','Russia - 43.5°E to 46.5°E onshore','Russian Federation - onshore between 43°30''E and 46°30''E.',41.89,80.8,43.5,46.5,0); +INSERT INTO "area" VALUES('EPSG','2756','Russia - 46.5°E to 49.5°E onshore','Russian Federation - onshore between 46°30''E and 49°30''E.',41.19,80.91,46.5,49.5,0); +INSERT INTO "area" VALUES('EPSG','2757','Russia - 49.5°E to 52.5°E onshore','Russian Federation - onshore between 49°30''E and 52°30''E.',42.36,81.22,49.5,52.5,0); +INSERT INTO "area" VALUES('EPSG','2758','Russia - 52.5°E to 55.5°E onshore','Russian Federation - onshore between 52°30''E and 55°30''E.',50.52,81.41,52.5,55.5,0); +INSERT INTO "area" VALUES('EPSG','2759','Russia - 55.5°E to 58.5°E onshore','Russian Federation - onshore between 55°30''E and 58°30''E.',50.53,81.89,55.5,58.5,0); +INSERT INTO "area" VALUES('EPSG','2760','Russia - 58.5°E to 61.5°E onshore','Russian Federation - onshore between 58°30''E and 61°30''E.',50.47,81.91,58.5,61.5,0); +INSERT INTO "area" VALUES('EPSG','2761','Russia - 61.5°E to 64.5°E onshore','Russian Federation - onshore between 61°30''E and 64°30''E.',51.03,81.77,61.5,64.5,0); +INSERT INTO "area" VALUES('EPSG','2762','Russia - 64.5°E to 67.5°E onshore','Russian Federation - onshore between 64°30''E and 67°30''E.',54.31,81.25,64.5,67.5,0); +INSERT INTO "area" VALUES('EPSG','2763','Russia - 67.5°E to 70.5°E onshore','Russian Federation - onshore between 67°30''E and 70°30''E.',54.85,77.07,67.5,70.5,0); +INSERT INTO "area" VALUES('EPSG','2764','Russia - 70.5°E to 73.5°E onshore','Russian Federation - onshore between 70°30''E and 73°30''E.',53.43,73.57,70.5,73.5,0); +INSERT INTO "area" VALUES('EPSG','2765','Russia - 73.5°E to 76.5°E onshore','Russian Federation - onshore between 73°30''E and 76°30''E.',53.47,79.71,73.5,76.5,0); +INSERT INTO "area" VALUES('EPSG','2766','Russia - 76.5°E to 79.5°E onshore','Russian Federation - onshore between 76°30''E and 79°30''E.',51.49,81.03,76.5,79.5,0); +INSERT INTO "area" VALUES('EPSG','2767','Russia - 79.5°E to 82.5°E onshore','Russian Federation - onshore between 79°30''E and 82°30''E.',50.7,81.03,79.5,82.5,0); +INSERT INTO "area" VALUES('EPSG','2768','Russia - 82.5°E to 85.5°E onshore','Russian Federation - onshore between 82°30''E and 85°30''E.',49.58,77.56,82.5,85.5,0); +INSERT INTO "area" VALUES('EPSG','2769','Russia - 85.5°E to 88.5°E onshore','Russian Federation - onshore between 85°30''E and 88°30''E.',49.07,77.16,85.5,88.5,0); +INSERT INTO "area" VALUES('EPSG','2770','Indonesia - northeast Kalimantan','Indonesia - northeast Kalimantan.',-0.07,4.29,116.96,119.06,0); +INSERT INTO "area" VALUES('EPSG','2771','Niger - southeast','Niger - southeast',12.8,16.7,7.81,14.9,0); +INSERT INTO "area" VALUES('EPSG','2772','Asia - FSU - CS63 zone A1','Armenia and Georgia onshore west of 43°02''E.',41.37,43.59,39.99,43.04,0); +INSERT INTO "area" VALUES('EPSG','2773','Asia - FSU - CS63 zone A2','Armenia and Georgia between 43°02''E and 46°02''E; Azerbaijan west of 46°02''E.',38.87,43.05,43.03,46.04,0); +INSERT INTO "area" VALUES('EPSG','2774','Asia - FSU - CS63 zone A3','Armenia and Georgia east of 46°02''E; Azerbaijan between 46°02'' and 49°02''E.',38.38,42.1,46.03,49.04,0); +INSERT INTO "area" VALUES('EPSG','2775','Asia - FSU - CS63 zone A4','Azerbaijan east of 49°02''E.',37.89,42.59,49.03,51.73,0); +INSERT INTO "area" VALUES('EPSG','2776','Asia - FSU - CS63 zone K2','Kazakhstan between 49°16''E and 52°16''E.',41.15,51.77,49.26,52.27,0); +INSERT INTO "area" VALUES('EPSG','2777','Asia - FSU - CS63 zone K3','Kazakhstan between 52°16''E and 55°16''E.',41.46,51.79,52.26,55.27,0); +INSERT INTO "area" VALUES('EPSG','2778','Asia - FSU - CS63 zone K4','Kazakhstan between 55°16''E and 58°16''E.',41.26,51.14,55.26,58.27,0); +INSERT INTO "area" VALUES('EPSG','2779','Portugal - Selvagens onshore','Portugal - Selvagens islands (Madeira province) - onshore.',29.98,30.21,-16.11,-15.79,0); +INSERT INTO "area" VALUES('EPSG','2780','Malaysia - East Malaysia - offshore SCS','Malaysia - East Malaysia (Sabah; Sarawak) - offshore South China Sea.',1.56,7.67,109.31,117.31,0); +INSERT INTO "area" VALUES('EPSG','2781','Iran - Kharg Island','Iran - Kharg Island.',29.16,29.39,50.22,50.42,0); +INSERT INTO "area" VALUES('EPSG','2782','Iran - Lavan Island and Balal field','Iran - Lavan Island and Balal field.',26.21,26.87,52.49,53.43,0); +INSERT INTO "area" VALUES('EPSG','2783','Iran - South Pars blocks 2 and 3','Iran - South Pars field phases 2 and 3.',26.58,26.71,52.07,52.28,0); +INSERT INTO "area" VALUES('EPSG','2784','Canada - south of 60°N','Canada south of 60°N - Alberta, British Columbia (BC), Manitoba, New Brunswick (NB), Newfoundland and Labrador, Nova Scotia (NS), Ontario, Prince Edward Island (PEI), Quebec and Saskatchewan.',41.68,60.0,-139.05,-52.62,1); +INSERT INTO "area" VALUES('EPSG','2785','Libya - Murzuq and En Naga','Libya - Murzuq and En Naga fields.',27.32,27.67,18.37,18.72,0); +INSERT INTO "area" VALUES('EPSG','2786','Libya - Mabruk','Libya - Mabruk field.',29.61,30.07,17.13,17.51,0); +INSERT INTO "area" VALUES('EPSG','2787','Morocco - south of 31.5°N','Morocco onshore south of 35 grads North (31°30''N).',27.66,31.51,-13.24,-3.59,0); +INSERT INTO "area" VALUES('EPSG','2788','Western Sahara - north of 24.3°N','Western Sahara - onshore north of 27grads North (24°18''N).',24.29,27.67,-15.42,-8.66,0); +INSERT INTO "area" VALUES('EPSG','2789','Western Sahara - south of 24.3°N','Western Sahara - onshore south of 27grads North (24°18''N).',20.71,24.31,-17.16,-12.0,0); +INSERT INTO "area" VALUES('EPSG','2790','Africa - 12th parallel N','Senegal - central, Mali - southwest, Burkina Faso - central, Niger - southwest, Nigeria - north, Chad - central. All in proximity to the parallel of latitude of 12°N.',10.26,15.7,-17.19,30.42,0); +INSERT INTO "area" VALUES('EPSG','2791','Africa - Burkina Faso and SW Niger','Burkina Faso - central; Niger - southwest, in proximity to the parallel of latitude of 12°N.',11.83,14.23,-4.64,4.0,0); +INSERT INTO "area" VALUES('EPSG','2792','UK - Great Britain mainland onshore','United Kingdom (UK) - Great Britain onshore - England and Wales - mainland; Scotland - mainland and Inner Hebrides.',49.93,58.71,-7.06,1.8,0); +INSERT INTO "area" VALUES('EPSG','2793','UK - Orkney Islands onshore','United Kingdom (UK) - Great Britain - Scotland - Orkney Islands onshore.',58.72,59.41,-3.48,-2.34,0); +INSERT INTO "area" VALUES('EPSG','2794','UK - Fair Isle onshore','United Kingdom (UK) - Great Britain - Scotland - Fair Isle onshore.',59.45,59.6,-1.76,-1.5,0); +INSERT INTO "area" VALUES('EPSG','2795','UK - Shetland Islands onshore','United Kingdom (UK) - Great Britain - Scotland - Shetland Islands onshore.',59.83,60.87,-1.78,-0.67,0); +INSERT INTO "area" VALUES('EPSG','2796','UK - Foula onshore','United Kingdom (UK) - Great Britain - Scotland - Foula onshore.',60.06,60.2,-2.21,-1.95,0); +INSERT INTO "area" VALUES('EPSG','2797','UK - Sule Skerry onshore','United Kingdom (UK) - Great Britain - Scotland - Sule Skerry onshore.',59.05,59.13,-4.5,-4.3,0); +INSERT INTO "area" VALUES('EPSG','2798','UK - North Rona onshore','United Kingdom (UK) - Great Britain - Scotland - North Rona onshore.',59.07,59.19,-5.92,-5.73,0); +INSERT INTO "area" VALUES('EPSG','2799','UK - Outer Hebrides onshore','United Kingdom (UK) - Great Britain - Scotland - Outer Hebrides onshore.',56.76,58.54,-7.72,-6.1,0); +INSERT INTO "area" VALUES('EPSG','2800','UK - St. Kilda onshore','United Kingdom (UK) - Great Britain - Scotland - St Kilda onshore.',57.74,57.93,-8.74,-8.41,0); +INSERT INTO "area" VALUES('EPSG','2801','UK - Flannan Isles onshore','United Kingdom (UK) - Great Britain - Scotland - Flannan Isles onshore.',58.21,58.35,-7.75,-7.46,0); +INSERT INTO "area" VALUES('EPSG','2802','UK - Scilly Isles onshore','United Kingdom (UK) - Great Britain - England - Isles of Scilly onshore.',49.86,49.99,-6.41,-6.23,0); +INSERT INTO "area" VALUES('EPSG','2803','Isle of Man - onshore','Isle of Man - onshore.',54.02,54.44,-4.87,-4.27,0); +INSERT INTO "area" VALUES('EPSG','2804','Europe - Austria and FR Yugoslavia','Austria; Boznia and Herzegovina; Croatia; Czech Republic; FYR Macedonia; Montenegro; Serbia; Slovakia; Slovenia.',40.86,51.05,9.53,23.03,1); +INSERT INTO "area" VALUES('EPSG','2805','Chile - Tierra del Fuego','Chile - Tierra del Fuego onshore.',-55.96,-51.99,-74.83,-66.33,0); +INSERT INTO "area" VALUES('EPSG','2806','Iran - northern Gulf coast','Iran - northern Gulf coast area.',29.0,31.67,47.75,50.83,1); +INSERT INTO "area" VALUES('EPSG','2807','Comoros - Njazidja (Grande Comore)','Comoros - Njazidja (Grande Comore).',-11.99,-11.31,43.16,43.55,0); +INSERT INTO "area" VALUES('EPSG','2808','Comoros - Nzwani','Comoros - Nzwani.',-12.43,-12.02,44.16,44.59,0); +INSERT INTO "area" VALUES('EPSG','2809','Comoros - Mwali','Comoros - Mwali.',-12.44,-12.19,43.57,43.92,0); +INSERT INTO "area" VALUES('EPSG','2810','French Polynesia - Marquesas Islands - Nuku Hiva','French Polynesia - Marquesas Islands - Nuku Hiva.',-9.01,-8.72,-140.31,-139.96,0); +INSERT INTO "area" VALUES('EPSG','2811','French Polynesia - Society Islands - Moorea and Tahiti','French Polynesia - Society Islands - Moorea and Tahiti.',-17.93,-17.41,-150.0,-149.11,0); +INSERT INTO "area" VALUES('EPSG','2812','French Polynesia - Society Islands - Bora Bora, Huahine, Raiatea, Tahaa','French Polynesia - Society Islands - Bora Bora, Huahine, Raiatea and Tahaa.',-16.96,-16.17,-151.91,-150.89,0); +INSERT INTO "area" VALUES('EPSG','2813','New Caledonia - Ouvea','New Caledonia - Loyalty Islands - Ouvea.',-20.77,-20.34,166.44,166.71,0); +INSERT INTO "area" VALUES('EPSG','2814','New Caledonia - Lifou','New Caledonia - Loyalty Islands - Lifou.',-21.24,-20.62,166.98,167.52,0); +INSERT INTO "area" VALUES('EPSG','2815','Wallis and Futuna - Wallis','Wallis and Futuna - Wallis.',-13.41,-13.16,-176.25,-176.07,0); +INSERT INTO "area" VALUES('EPSG','2816','French Southern Territories - Kerguelen onshore','French Southern Territories - Kerguelen onshore.',-49.78,-48.6,68.69,70.62,0); +INSERT INTO "area" VALUES('EPSG','2817','Antarctica - Adelie Land - Petrels island','Antarctica - Adelie Land - Petrels island.',-66.78,-66.1,139.44,141.5,0); +INSERT INTO "area" VALUES('EPSG','2818','Antarctica - Adelie Land coastal area','Antarctica - Adelie Land - coastal area between 136°E and 142°E.',-67.13,-65.61,136.0,142.0,0); +INSERT INTO "area" VALUES('EPSG','2819','New Caledonia - Mare','New Caledonia - Loyalty Islands - Mare.',-21.71,-21.32,167.75,168.19,0); +INSERT INTO "area" VALUES('EPSG','2820','New Caledonia - Ile des Pins','New Caledonia - Ile des Pins.',-22.73,-22.49,167.36,167.61,0); +INSERT INTO "area" VALUES('EPSG','2821','New Caledonia - Belep','New Caledonia - Belep.',-19.85,-19.5,163.54,163.75,0); +INSERT INTO "area" VALUES('EPSG','2822','New Caledonia - Grande Terre','New Caledonia - Grande Terre.',-22.45,-20.03,163.92,167.09,0); +INSERT INTO "area" VALUES('EPSG','2823','New Caledonia - Grande Terre - Noumea','New Caledonia - Grande Terre - Noumea district.',-22.37,-22.19,166.35,166.54,0); +INSERT INTO "area" VALUES('EPSG','2824','Caribbean - French Antilles','French Antilles onshore and offshore - Guadeloupe (including Grande Terre, Basse Terre, Marie Galante, Les Saintes, Iles de la Petite Terre, La Desirade, St Barthélemy, and northern St Martin) and Martinique.',14.08,18.54,-63.66,-57.52,0); +INSERT INTO "area" VALUES('EPSG','2825','Africa - Ethiopia and Sudan - 30°E to 36°E','Ethiopia - west of 36°E. South Sudan - east of 30°E. Sudan - between 30°E and 36°E.',3.49,22.24,29.99,36.0,0); +INSERT INTO "area" VALUES('EPSG','2826','Africa - South Sudan and Sudan - west of 24°E','South Sudan and Sudan - west of 24°E.',8.7,15.76,21.82,24.01,0); +INSERT INTO "area" VALUES('EPSG','2827','Africa - South Sudan and Sudan - 24°E to 30°E','South Sudan and Sudan - between 24°E and 30°E.',4.21,22.01,23.99,30.0,0); +INSERT INTO "area" VALUES('EPSG','2828','Guadeloupe - St Martin and St Barthelemy - onshore','Guadeloupe - onshore - St Martin and St Barthélemy islands.',17.82,18.17,-63.21,-62.73,0); +INSERT INTO "area" VALUES('EPSG','2829','Guadeloupe - Grande-Terre and surrounding islands - onshore','Guadeloupe - onshore - Basse-Terre, Grande-Terre, La Desirade, Marie-Galante, Les Saintes.',15.8,16.55,-61.85,-60.97,0); +INSERT INTO "area" VALUES('EPSG','2830','World (by country)','World: Afghanistan, Albania, Algeria, American Samoa, Andorra, Angola, Anguilla, Antarctica, Antigua and Barbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belgium, Belgium, Belize, Benin, Bermuda, Bhutan, Bolivia, Bonaire, Saint Eustasius and Saba, Bosnia and Herzegovina, Botswana, Bouvet Island, Brazil, British Indian Ocean Territory, British Virgin Islands, Brunei Darussalam, Bulgaria, Burkina Faso, Burundi, Cambodia, Cameroon, Canada, Cape Verde, Cayman Islands, Central African Republic, Chad, Chile, China, Christmas Island, Cocos (Keeling) Islands, Comoros, Congo, Cook Islands, Costa Rica, Côte d''Ivoire (Ivory Coast), Croatia, Cuba, Curacao, Cyprus, Czech Republic, Denmark, Djibouti, Dominica, Dominican Republic, East Timor, Ecuador, Egypt, El Salvador, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Falkland Islands (Malvinas), Faroe Islands, Fiji, Finland, France, French Guiana, French Polynesia, French Southern Territories, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Greenland, Grenada, Guadeloupe, Guam, Guatemala, Guinea, Guinea-Bissau, Guyana, Haiti, Heard Island and McDonald Islands, Holy See (Vatican City State), Honduras, China - Hong Kong, Hungary, Iceland, India, Indonesia, Islamic Republic of Iran, Iraq, Ireland, Israel, Italy, Jamaica, Japan, Jordan, Kazakhstan, Kenya, Kiribati, Democratic People''s Republic of Korea (North Korea), Republic of Korea (South Korea), Kuwait, Kyrgyzstan, Lao People''s Democratic Republic (Laos), Latvia, Lebanon, Lesotho, Liberia, Libyan Arab Jamahiriya, Liechtenstein, Lithuania, Luxembourg, China - Macao, The Former Yugoslav Republic of Macedonia, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, Marshall Islands, Martinique, Mauritania, Mauritius, Mayotte, Mexico, Federated States of Micronesia, Monaco, Mongolia, Montenegro, Montserrat, Morocco, Mozambique, Myanmar (Burma), Namibia, Nauru, Nepal, Netherlands, New Caledonia, New Zealand, Nicaragua, Niger, Nigeria, Niue, Norfolk Island, Northern Mariana Islands, Norway, Oman, Pakistan, Palau, Panama, Papua New Guinea (PNG), Paraguay, Peru, Philippines, Pitcairn, Poland, Portugal, Puerto Rico, Qatar, Reunion, Romania, Russian Federation, Rwanda, Saint Kitts and Nevis, Saint Helena, Ascension and Tristan da Cunha, Saint Lucia, Saint Pierre and Miquelon, Saint Vincent and the Grenadines, Samoa, San Marino, Sao Tome and Principe, Saudi Arabia, Senegal, Serbia, Seychelles, Sierra Leone, Singapore, Slovakia (Slovak Republic), Slovenia, Sint Maarten, Solomon Islands, Somalia, South Africa, South Georgia and the South Sandwich Islands, South Sudan, Spain, Sri Lanka, Sudan, Suriname, Svalbard and Jan Mayen, Swaziland, Sweden, Switzerland, Syrian Arab Republic, Taiwan, Tajikistan, United Republic of Tanzania, Thailand, The Democratic Republic of the Congo (Zaire), Togo, Tokelau, Tonga, Trinidad and Tobago, Tunisia, Turkey, Turkmenistan, Turks and Caicos Islands, Tuvalu, Uganda, Ukraine, United Arab Emirates (UAE), United Kingdom (UK), United States (USA), United States Minor Outlying Islands, Uruguay, Uzbekistan, Vanuatu, Venezuela, Vietnam, US Virgin Islands, Wallis and Futuna, Western Sahara, Yemen, Zambia, Zimbabwe.',-90.0,90.0,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','2831','Canada - Atlantic offshore','Canada - offshore Newfoundland and Labrador, New Brunswick and Nova Scotia.',40.04,64.21,-67.75,-47.74,0); +INSERT INTO "area" VALUES('EPSG','2832','Canada - British Columbia','Canada - British Columbia.',48.25,60.01,-139.04,-114.08,0); +INSERT INTO "area" VALUES('EPSG','2833','Sweden - 12 00','Sweden - communes west of approximately 12°45''E and south of approximately 60°N. See information source for map.',56.74,60.13,10.93,13.11,0); +INSERT INTO "area" VALUES('EPSG','2834','Sweden - 13 30','Sweden - communes between approximately 12°45''E and 14°15''E and south of approximately 62°10''N. See information source for map.',55.28,62.28,12.12,14.79,0); +INSERT INTO "area" VALUES('EPSG','2835','Sweden - 15 00','Sweden - communes between approximately 14°15''E and 15°45''E and south of approximately 61°30''N. See information source for map.',55.95,61.62,13.54,16.15,0); +INSERT INTO "area" VALUES('EPSG','2836','Sweden - 16 30','Sweden - communes between approximately 15°45''E and 17°15''E and south of approximately 62°20''N. See information source for map.',56.15,62.26,15.41,17.63,0); +INSERT INTO "area" VALUES('EPSG','2837','Sweden - 18 00','Sweden - communes east of approximately 17°15''E between approximately 60°40''N and 58°50''N. See information source for map.',58.66,60.7,17.08,19.61,0); +INSERT INTO "area" VALUES('EPSG','2838','Sweden - 14 15','Sweden - communes west of approximately 15°E and between approximately 61°35''N and 64°25''N. See information source for map.',61.55,64.39,11.93,15.55,0); +INSERT INTO "area" VALUES('EPSG','2839','Sweden - 15 45','Sweden - communes between approximately 15°E and 16°30''E and between approximately 60°30''N and 65°N. See information source for map.',60.44,65.13,13.66,17.01,0); +INSERT INTO "area" VALUES('EPSG','2840','Sweden - 17 15','Sweden - communes between approximately 14°20''E and 18°50''E and between approximately 67°10''N and 62°05''N. See information source for map.',62.12,67.19,14.31,19.04,0); +INSERT INTO "area" VALUES('EPSG','2841','Sweden - 18 45','Sweden - mainland communes between approximately 18°E and 19°30''E and between approximately 62°50''N and 66°N. Also Gotland. See information source for map.',56.86,66.17,17.18,20.22,0); +INSERT INTO "area" VALUES('EPSG','2842','Sweden - 20 15','Sweden - communes in Vaasterbotten east of approximately 19°30''E and (i) north of 63°30''N and (ii) south of approximately 65°05''N. Also Norbotten west of approximately 23°20''E. See information source for map.',63.45,69.07,16.08,23.28,0); +INSERT INTO "area" VALUES('EPSG','2843','Sweden - 21 45','Sweden - communes in Norbotten east of approximately 19°30''E and south of approximately 65°50''N. See information source for map.',65.01,66.43,19.63,22.91,0); +INSERT INTO "area" VALUES('EPSG','2844','Sweden - 23 15','Sweden - communes east of approximately 21°50''E. See information source for map.',65.49,68.14,21.85,24.17,0); +INSERT INTO "area" VALUES('EPSG','2845','Sweden - 7.5 gon W','Sweden - communes west of approximately 12°26''E. See information source for map.',57.29,59.73,10.93,12.91,0); +INSERT INTO "area" VALUES('EPSG','2846','Sweden - 5 gon W','Sweden - communes between approximately 12°26''E and 14°40''E. See information source for map.',55.28,64.39,11.81,15.44,0); +INSERT INTO "area" VALUES('EPSG','2847','Sweden - 2.5 gon W','Sweden. For medium and small scale applications:- all country. For large scale applications:- communes between approximately 14°40''E and 16°55''E. See information source for map.',55.95,67.18,13.66,17.73,0); +INSERT INTO "area" VALUES('EPSG','2848','Sweden - 0 gon','Sweden - communes between approximately 16°55''E and 19°10''E; Gotland. See information source for map.',56.86,68.54,16.08,20.22,0); +INSERT INTO "area" VALUES('EPSG','2849','Sweden - 2.5 gon E','Sweden - communes between approximately 19°10''E and 21°25''E. See information source for map.',63.37,69.07,18.4,22.2,0); +INSERT INTO "area" VALUES('EPSG','2850','Sweden - 5 gon E','Sweden - east of approximately 21°26''E. See information source for map.',65.24,68.58,21.34,24.17,0); +INSERT INTO "area" VALUES('EPSG','2851','Iceland - onshore west of 24°W','Iceland - onshore west of 24°W.',64.71,65.86,-24.66,-24.0,0); +INSERT INTO "area" VALUES('EPSG','2852','Iceland - onshore 24°W to 18°W','Iceland - onshore between 24°W and 18°W.',63.34,66.52,-24.0,-18.0,0); +INSERT INTO "area" VALUES('EPSG','2853','Iceland - onshore east of 18°W','Iceland - onshore east of 18°W.',63.45,66.59,-18.0,-13.38,0); +INSERT INTO "area" VALUES('EPSG','2854','Europe - 36°W to 30°W','Europe - between 36°W and 30°W.',39.3,39.85,-36.0,-30.0,1); +INSERT INTO "area" VALUES('EPSG','2855','Europe - 30°W to 24°W','Europe - between 30°W and 24°W.',25.1,65.8,-30.0,-24.0,1); +INSERT INTO "area" VALUES('EPSG','2856','Europe - 24°W to 18°W','Europe - between 24°W and 18°W.',27.6,66.5,-24.0,-18.0,1); +INSERT INTO "area" VALUES('EPSG','2857','Europe - 18°W to 12°W','Europe - between 18°W and 12°W.',27.6,66.55,-18.0,-12.0,1); +INSERT INTO "area" VALUES('EPSG','2858','Europe - 12°W to 6°W','Europe - between 12°W and 6°W.',36.0,62.33,-12.0,-6.0,1); +INSERT INTO "area" VALUES('EPSG','2859','Europe - 6°W to 0°W','Europe - between 6°W and 0°W.',34.75,62.33,-6.0,0.0,1); +INSERT INTO "area" VALUES('EPSG','2860','Germany - west of 6°E','Europe between 0°E and 6°E: Germany - onshore and offshore west of 6°E.',50.97,55.92,3.34,6.0,0); +INSERT INTO "area" VALUES('EPSG','2861','Germany - 6°E to 12°E','Europe between 0°E and 6°E: Germany - onshore and offshore between 6°E and 12°E, including Mecklenburg-Vorpommern west of 12°E and Schleswig-Holstein.',47.27,55.47,6.0,12.0,0); +INSERT INTO "area" VALUES('EPSG','2862','Germany - east of 12°E','Europe between 0°E and 6°E: Germany - onshore and offshore east of 12°E, including Brandenburg (all state, including that part west of 12°E) and Mecklenburg-Vorpommern east of 12°E.',47.46,55.03,11.57,15.04,0); +INSERT INTO "area" VALUES('EPSG','2863','Europe - 18°E to 24°E','Europe - between 18°E and 24°E.',34.8,75.0,18.0,24.0,1); +INSERT INTO "area" VALUES('EPSG','2864','Europe - 24°E to 30°E','Europe - between 24°E and 30°E.',34.8,75.0,24.0,30.0,1); +INSERT INTO "area" VALUES('EPSG','2865','Europe - 30°E to 36°E','Europe - between 30°E and 36°E.',34.5,75.0,30.0,36.0,1); +INSERT INTO "area" VALUES('EPSG','2866','Europe - 36°E to 42°E','Europe - between 36°E and 42°E.',35.75,75.0,36.0,42.0,1); +INSERT INTO "area" VALUES('EPSG','2867','Europe - 42°E to 48°E','Europe - between 42°E and 48°E.',36.95,75.0,42.0,48.0,1); +INSERT INTO "area" VALUES('EPSG','2868','Europe - 48°E to 54°E','Europe - between 48°E and 54°E.',36.0,75.0,48.0,54.0,1); +INSERT INTO "area" VALUES('EPSG','2869','Jan Mayen - onshore','Jan Mayen - onshore.',70.75,71.24,-9.17,-7.87,0); +INSERT INTO "area" VALUES('EPSG','2870','Portugal - Madeira and Porto Santo islands onshore','Portugal - Madeira and Porto Santo islands onshore.',32.58,33.15,-17.31,-16.23,0); +INSERT INTO "area" VALUES('EPSG','2871','Portugal - Azores E - S Miguel onshore','Portugal - eastern Azores - Sao Miguel island onshore.',37.65,37.96,-25.92,-25.08,0); +INSERT INTO "area" VALUES('EPSG','2872','Portugal - Azores C - Terceira onshore','Portugal - central Azores - Terceira island onshore.',38.57,38.86,-27.44,-26.97,0); +INSERT INTO "area" VALUES('EPSG','2873','Portugal - Azores C - Faial onshore','Portugal - central Azores - Faial island onshore.',38.46,38.7,-28.9,-28.54,0); +INSERT INTO "area" VALUES('EPSG','2874','Portugal - Azores C - Pico onshore','Portugal - central Azores - Pico island onshore.',38.32,38.61,-28.61,-27.98,0); +INSERT INTO "area" VALUES('EPSG','2875','Portugal - Azores C - S Jorge onshore','Portugal - central Azores - Sao Jorge island onshore.',38.48,38.8,-28.37,-27.71,0); +INSERT INTO "area" VALUES('EPSG','2876','Asia - Middle East - Iraq-Kuwait boundary','Iraq - Kuwait boundary.',29.06,30.32,46.36,48.61,0); +INSERT INTO "area" VALUES('EPSG','2877','Slovenia - Slovenska Bistrica','Slovenia - Slovenska Bistrica with the Dravinja River Basin, area of Boc and parts of the Haloze and the Kozjansko region.',46.14,46.46,15.31,16.0,0); +INSERT INTO "area" VALUES('EPSG','2878','Slovenia - Slovenske Gorice','Slovenia - Slovenske Gorice (the Slovene Humpback) with the broad region of Ormoz.',46.29,46.76,15.9,16.3,0); +INSERT INTO "area" VALUES('EPSG','2879','Germany - offshore North Sea','Germany - offshore North Sea.',53.6,55.92,3.34,8.88,0); +INSERT INTO "area" VALUES('EPSG','2880','Antarctica - Australian sector north of 80°S','Antarctica - north of 80°S and between 45°E and 136°E and between 142°E and 160°E - Australian sector north of 80°S.',-80.0,-60.0,45.0,160.0,0); +INSERT INTO "area" VALUES('EPSG','2881','Europe - LCC & LAEA','Europe - European Union (EU) countries and candidates. Europe - onshore and offshore: Albania; Andorra; Austria; Belgium; Bosnia and Herzegovina; Bulgaria; Croatia; Cyprus; Czech Republic; Denmark; Estonia; Faroe Islands; Finland; France; Germany; Gibraltar; Greece; Hungary; Iceland; Ireland; Italy; Latvia; Liechtenstein; Lithuania; Luxembourg; Macedonia; Malta; Monaco; Montenegro; Netherlands; Norway including Svalbard and Jan Mayen; Poland; Portugal including Madeira and Azores; Romania; San Marino; Serbia; Slovakia; Slovenia; Spain including Canary Islands; Sweden; Switzerland; Turkey; United Kingdom (UK) including Channel Islands and Isle of Man; Vatican City State.',24.6,84.17,-35.58,44.83,0); +INSERT INTO "area" VALUES('EPSG','2882','Italy - Adriatic - North Ancona','Italy - offshore - Adriatic Sea - North Ancona.',43.62,45.73,12.22,13.96,0); +INSERT INTO "area" VALUES('EPSG','2883','Italy - Adriatic - South Ancona / North Gargano','Italy - offshore - Adriatic Sea - South Ancona and North Gargano.',41.95,44.04,13.61,16.14,0); +INSERT INTO "area" VALUES('EPSG','2884','Italy - Adriatic - South Gargano','Italy - offshore - Adriatic Sea - South Gargano.',40.72,42.28,15.95,18.63,0); +INSERT INTO "area" VALUES('EPSG','2885','Italy - Otranto channel','Italy - offshore - Otranto channel.',39.77,41.03,17.95,18.99,0); +INSERT INTO "area" VALUES('EPSG','2886','Italy - north Ionian Sea','Italy - offshore - north Ionian Sea.',37.67,40.47,16.55,18.93,0); +INSERT INTO "area" VALUES('EPSG','2887','Italy - Sicily Strait east of 13°E','Italy - offshore - Strait of Sicily - east of 13°E (of Greenwich).',35.22,37.48,13.0,15.16,0); +INSERT INTO "area" VALUES('EPSG','2888','Italy - Sicily Strait west of 13°E','Italy - offshore - Strait of Sicily - west of 13°E (of Greenwich).',35.28,38.45,10.68,13.01,0); +INSERT INTO "area" VALUES('EPSG','2889','New Zealand - Chatham Islands group','New Zealand - Chatham Islands group - onshore.',-44.64,-43.3,-177.25,-175.54,0); +INSERT INTO "area" VALUES('EPSG','2890','Guadeloupe - St Martin - onshore','Guadeloupe - onshore - St Martin island.',18.01,18.17,-63.21,-62.96,0); +INSERT INTO "area" VALUES('EPSG','2891','Guadeloupe - St Barthelemy - onshore','Guadeloupe - onshore - St Barthelemy island.',17.82,17.98,-62.92,-62.73,0); +INSERT INTO "area" VALUES('EPSG','2892','Guadeloupe - Grande-Terre and Basse-Terre - onshore','Guadeloupe - onshore - Basse-Terre and Grande-Terre.',15.88,16.55,-61.85,-61.15,0); +INSERT INTO "area" VALUES('EPSG','2893','Guadeloupe - La Desirade - onshore','Guadeloupe - onshore - La Desirade.',16.26,16.38,-61.13,-60.97,0); +INSERT INTO "area" VALUES('EPSG','2894','Guadeloupe - Marie-Galante - onshore','Guadeloupe - onshore - Marie-Galante.',15.8,16.05,-61.39,-61.13,0); +INSERT INTO "area" VALUES('EPSG','2895','Guadeloupe - Les Saintes - onshore','Guadeloupe - onshore - Les Saintes.',15.8,15.94,-61.68,-61.52,0); +INSERT INTO "area" VALUES('EPSG','2896','Asia - Middle East - Israel, Palestine Territory, Turkey - offshore','Israel and Palestine Territory - offshore Mediterranean Sea; Turkey - offshore Black Sea.',31.35,43.45,28.03,41.47,0); +INSERT INTO "area" VALUES('EPSG','2897','Asia - Middle East - Israel and Palestine Territory offshore','Israel and Palestine Territory - offshore Mediterranean Sea.',31.33,33.1,33.5,35.1,1); +INSERT INTO "area" VALUES('EPSG','2898','Germany - Berlin','Germany - Berlin.',52.33,52.65,13.09,13.76,0); +INSERT INTO "area" VALUES('EPSG','2899','Australia - 126°E to 132°E, 8°S to 12°S (SC52) onshore','Australia - onshore mainland between 8°S and 12°S and 126°E and 132°E.',-12.0,-11.07,131.02,132.0,0); +INSERT INTO "area" VALUES('EPSG','2900','Australia - 132°E to 138°E, 8°S to 12°S (SC53) onshore','Australia - onshore mainland between 8°S and 12°S and 132°E and 138°E.',-12.0,-10.92,132.0,136.83,0); +INSERT INTO "area" VALUES('EPSG','2901','Australia - 138°E to 144°E, 8°S to 12°S (SC54) onshore','Australia - onshore mainland between 8°S and 12°S and 138°E and 144°E.',-12.0,-10.65,141.77,143.31,0); +INSERT INTO "area" VALUES('EPSG','2902','Australia - 120°E to 126°E, 12°S to 16°S (SD51) onshore','Australia - onshore mainland between 12°S and 16°S and 120°E and 126°E.',-16.0,-13.87,124.17,126.0,0); +INSERT INTO "area" VALUES('EPSG','2903','Australia - 126°E to 132°E, 12°S to 16°S (SD52) onshore','Australia - onshore mainland between 12°S and 16°S and 126°E and 132°E.',-16.0,-12.0,126.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','2904','Australia - 132°E to 138°E, 12°S to 16°S (SD53) onshore','Australia - onshore mainland between 12°S and 16°S and 132°E and 138°E.',-16.0,-12.0,132.0,137.28,0); +INSERT INTO "area" VALUES('EPSG','2905','Australia - 138°E to 144°E, 12°S to 16°S (SD54) onshore','Australia - onshore mainland between 12°S and 16°S and 138°E and 144°E.',-16.0,-12.0,141.34,144.01,0); +INSERT INTO "area" VALUES('EPSG','2906','Australia - 144°E to 150°E, 12°S to 16°S (SD55) onshore','Australia - onshore mainland between 12°S and 16°S and 144°E and 150°E.',-16.0,-14.01,144.0,145.49,0); +INSERT INTO "area" VALUES('EPSG','2907','Australia - 114°E to 120°E, 16°S to 20°S (SE50) onshore','Australia - onshore mainland between 16°S and 20°S and 114°E and 120°E.',-20.0,-19.88,118.94,120.0,0); +INSERT INTO "area" VALUES('EPSG','2908','Australia - 120°E to 126°E, 16°S to 20°S (SE51) onshore','Australia - onshore mainland between 16°S and 20°S and 120°E and 126°E.',-20.0,-16.0,120.0,126.0,0); +INSERT INTO "area" VALUES('EPSG','2909','Australia - 126°E to 132°E, 16°S to 20°S (SE52)','Australia - between 16°S and 20°S and 126°E and 132°E.',-20.0,-16.0,126.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','2910','Australia - 132°E to 138°E, 16°S to 20°S (SE53) onshore','Australia - onshore between 16°S and 20°S and 132°E and 138°E.',-20.0,-16.0,132.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','2911','Australia - 138°E to 144°E, 16°S to 20°S (SE54) onshore','Australia - onshore mainland between 16°S and 20°S and 138°E and 144°E.',-20.0,-16.0,138.0,144.0,0); +INSERT INTO "area" VALUES('EPSG','2912','Australia - 144°E to 150°E, 16°S to 20°S (SE55) onshore','Australia - onshore mainland between 16°S and 20°S and 144°E and 150°E.',-20.0,-16.0,144.0,148.97,0); +INSERT INTO "area" VALUES('EPSG','2913','Australia - 108°E to 114°E, 20°S to 24°S (SF49) onshore','Australia - onshore mainland between 20°S and 24°S and 108°E and 114°E.',-24.0,-21.8,113.39,114.0,0); +INSERT INTO "area" VALUES('EPSG','2914','Australia - 114°E to 120°E, 20°S to 24°S (SF50) onshore','Australia - onshore mainland between 20°S and 24°S and 114°E and 120°E.',-24.0,-20.0,114.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','2915','Australia - 120°E to 126°E, 20°S to 24°S (SF51)','Australia - between 20°S and 24°S and 120°E and 126°E.',-24.0,-20.0,120.0,126.0,0); +INSERT INTO "area" VALUES('EPSG','2916','Australia - 126°E to 132°E, 20°S to 24°S (SF52)','Australia - between 20°S and 24°S and 126°E and 132°E.',-24.0,-20.0,126.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','2917','Australia - 132°E to 138°E, 20°S to 24°S (SF53)','Australia - between 20°S and 24°S and 132°E and 138°E.',-24.0,-20.0,132.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','2918','Australia - 138°E to 144°E, 20°S to 24°S (SF54)','Australia - between 20°S and 24°S and 138°E and 144°E.',-24.0,-20.0,138.0,144.0,0); +INSERT INTO "area" VALUES('EPSG','2919','Australia - 144°E to 150°E, 20°S to 24°S (SF55) onshore','Australia - onshore mainland between 20°S and 24°S and 144°E and 150°E.',-24.0,-20.0,144.0,150.0,0); +INSERT INTO "area" VALUES('EPSG','2920','Australia - 150°E to 156°E, 20°S to 24°S (SF56) onshore','Australia - onshore mainland between 20°S and 24°S and 150°E and 156°E.',-24.0,-22.0,150.0,151.82,0); +INSERT INTO "area" VALUES('EPSG','2921','Australia - 108°E to 114°E, 24°S to 28°S (SG49) onshore','Australia - onshore mainland between 24°S and 28°S and 108°E and 114°E.',-27.44,-24.0,112.85,114.0,0); +INSERT INTO "area" VALUES('EPSG','2922','Australia - 114°E to 120°E, 24°S to 28°S (SG50) onshore','Australia - onshore mainland between 24°S and 28°S and 114°E and 120°E.',-28.0,-24.0,114.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','2923','Australia - 120°E to 126°E, 24°S to 28°S (SG51)','Australia - between 24°S and 28°S and 120°E and 126°E.',-28.0,-24.0,120.0,126.0,0); +INSERT INTO "area" VALUES('EPSG','2924','Australia - 126°E to 132°E, 24°S to 28°S (SG52)','Australia - between 24°S and 28°S and 126°E and 132°E.',-28.0,-24.0,126.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','2925','Australia - 132°E to 138°E, 24°S to 28°S (SG53)','Australia - between 24°S and 28°S and 132°E and 138°E.',-28.0,-24.0,132.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','2926','Australia - 138°E to 144°E, 24°S to 28°S (SG54)','Australia - between 24°S and 28°S and 138°E and 144°E.',-28.0,-24.0,138.0,144.0,0); +INSERT INTO "area" VALUES('EPSG','2927','Australia - 144°E to 150°E, 24°S to 28°S (SG55)','Australia - between 24°S and 28°S and 144°E and 150°E.',-28.0,-24.0,144.0,150.0,0); +INSERT INTO "area" VALUES('EPSG','2928','Australia - 150°E to 156°E, 24°S to 28°S (SG56) onshore','Australia - onshore mainland between 24°S and 28°S and 150°E and 156°E.',-28.0,-24.0,150.0,153.6,0); +INSERT INTO "area" VALUES('EPSG','2929','Australia - 108°E to 114°E, 28°S to 32°S (SH49)','Australia - between 28°S and 32°S and 108°E and 114°E.',-32.0,-28.0,108.0,114.0,1); +INSERT INTO "area" VALUES('EPSG','2930','Australia - 114°E to 120°E, 28°S to 32°S (SH50) onshore','Australia - onshore mainland between 28°S and 32°S and 114°E and 120°E.',-32.0,-28.0,114.07,120.0,0); +INSERT INTO "area" VALUES('EPSG','2931','Australia - 120°E to 126°E, 28°S to 32°S (SH51)','Australia - between 28°S and 32°S and 120°E and 126°E.',-32.0,-28.0,120.0,126.0,0); +INSERT INTO "area" VALUES('EPSG','2932','Australia - 126°E to 132°E, south of 28°S (SH52) onshore','Australia - onshore mainland south of 28°S and between 126°E and 132°E.',-32.37,-28.0,126.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','2933','Australia - 132°E to 138°E, 28°S to 32°S (SH53) onshore','Australia - onshore between 28°S and 32°S and 132°E and 138°E.',-32.0,-28.0,132.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','2934','Australia - 138°E to 144°E, 28°S to 32°S (SH54)','Australia - between 28°S and 32°S and 138°E and 144°E.',-32.0,-28.0,138.0,144.0,0); +INSERT INTO "area" VALUES('EPSG','2935','Australia - 144°E to 150°E, 28°S to 32°S (SH55)','Australia - between 28°S and 32°S and 144°E and 150°E.',-32.0,-28.0,144.0,150.0,0); +INSERT INTO "area" VALUES('EPSG','2936','Australia - 150°E to 156°E, 28°S to 32°S (SH56) onshore','Australia - onshore mainland between 28°S and 32°S and 150°E and 156°E.',-32.0,-28.0,150.0,153.69,0); +INSERT INTO "area" VALUES('EPSG','2937','Australia - 114°E to 120°E, 32°S to 36°S (SI50) onshore','Australia - onshore mainland between 32°S and 36°S and 114°E and 120°E.',-35.19,-32.0,114.89,120.0,0); +INSERT INTO "area" VALUES('EPSG','2938','Australia - 120°E to 126°E, 32°S to 36°S (SI51) onshore','Australia - onshore mainland between 32°S and 36°S and 120°E and 126°E.',-34.16,-32.0,120.0,126.0,0); +INSERT INTO "area" VALUES('EPSG','2939','Australia - 132°E to 138°E, 32°S to 36°S (SI53) onshore','Australia - onshore mainland and Kangaroo Island between 32°S and 36°S and 132°E and 138°E.',-36.0,-32.0,132.08,138.0,0); +INSERT INTO "area" VALUES('EPSG','2940','Australia - 138°E to 144°E, 32°S to 36°S (SI54) onshore','Australia - onshore between 32°S and 36°S and 138°E and 144°E.',-36.0,-32.0,138.0,144.0,0); +INSERT INTO "area" VALUES('EPSG','2941','Australia - 144°E to 150°E, 32°S to 36°S (SI55)','Australia - between 32°S and 36°S and 144°E and 150°E.',-36.0,-32.0,144.0,150.0,0); +INSERT INTO "area" VALUES('EPSG','2942','Australia - 150°E to 156°E, 32°S to 36°S (SI56) onshore','Australia - onshore mainland between 32°S and 36°S and 150°E and 156°E.',-36.0,-32.0,150.0,152.66,0); +INSERT INTO "area" VALUES('EPSG','2943','Australia - 132°E to 138°E, 36°S to 40°S (SJ53) onshore','Australia - onshore Kangaroo Island between 36°S and 40°S and 132°E and 138°E.',-36.14,-36.0,136.57,137.68,0); +INSERT INTO "area" VALUES('EPSG','2944','Australia - 138°E to 144°E, 36°S to 40°S (SJ54) onshore','Australia - onshore mainland between 36°S and 40°S and 138°E and 144°E.',-38.91,-36.0,139.38,144.0,0); +INSERT INTO "area" VALUES('EPSG','2945','Australia - 144°E to 150°E, 36°S to 40°S (SJ55) onshore','Australia - onshore mainland between 36°S and 40°S and 144°E and 150°E.',-39.2,-36.0,144.0,150.0,0); +INSERT INTO "area" VALUES('EPSG','2946','Australia - 150°E to 156°E, 36°S to 40°S (SJ56) onshore','Australia - onshore mainland between 36°S and 40°S and 150°E and 156°E.',-37.57,-36.0,150.0,150.22,0); +INSERT INTO "area" VALUES('EPSG','2947','Australia - Tasmania mainland onshore','Australia - Tasmania mainland - onshore.',-43.7,-40.24,144.55,148.44,0); +INSERT INTO "area" VALUES('EPSG','2948','USA - CONUS east of 89°W - onshore','United States (USA) - CONUS east of 89°W - onshore - Alabama; Connecticut; Delaware; Florida; Georgia; llinois; Indiana; Kentucky; Maine; Maryland; Massachusetts; Michigan; Mississippi; New Hampshire; New Jersey; New York; North Carolina; Ohio; Pennsylvania; Rhode Island; South Carolina; Tennessee; Vermont; Virginia; West Virginia; Wisconsin.',24.41,48.32,-89.0,-66.91,0); +INSERT INTO "area" VALUES('EPSG','2949','USA - CONUS 89°W-107°W - onshore','United States (USA) - CONUS between 89°W and 107°W - onshore - Arkansas; Colorado; Illinois; Iowa; Kansas; Louisiana; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; New Mexico; North Dakota; Oklahoma; South Dakota; Tennessee; Texas; Wisconsin; Wyoming.',25.83,49.38,-107.0,-89.0,0); +INSERT INTO "area" VALUES('EPSG','2950','USA - CONUS west of 107°W - onshore','United States (USA) - CONUS west of 107°W - onshore - Arizona; California; Colorado; Idaho; Montana; Nevada; New Mexico; Oregon; Utah; Washington; Wyoming.',31.33,49.05,-124.79,-107.0,0); +INSERT INTO "area" VALUES('EPSG','2951','Japan - 120°E to 126°E onshore','Japan - onshore west of 126°E.',23.98,24.94,123.62,125.51,0); +INSERT INTO "area" VALUES('EPSG','2952','Japan - 126°E to 132°E onshore','Japan - onshore between 126°E and 132°E.',24.4,34.9,126.63,132.0,0); +INSERT INTO "area" VALUES('EPSG','2953','Japan - 132°E to 138°E onshore','Japan - onshore between 132°E and 138°E.',20.37,37.58,132.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','2954','Japan - 138°E to 144°E onshore','Japan - onshore between 138°E and 144°E.',24.67,45.54,138.0,144.0,0); +INSERT INTO "area" VALUES('EPSG','2955','Japan - 144°E to 150°E onshore','Japan - onshore east of 144°E.',42.84,44.4,144.0,145.87,0); +INSERT INTO "area" VALUES('EPSG','2956','Kuwait - north of 29.25°N','Kuwait - onshore north of a line between Al Jahra'' and the Kuwait/Iraq/Saudi Arabia border tripoint.',29.1,30.09,46.54,48.42,0); +INSERT INTO "area" VALUES('EPSG','2957','Kuwait - south of 29.25°N','Kuwait - onshore south of a line between Al Jahra'' and the Kuwait/Iraq/Saudi Arabia border tripoint.',28.53,29.45,46.54,48.48,0); +INSERT INTO "area" VALUES('EPSG','2958','USA - Maine - CS2000 - W','United States (USA) - Maine west of approximately 69°40''W. The area is bounded by the following: Beginning at the point determined by the intersection of the Maine State line and the County Line between Aroostook and Somerset Counties, thence following the Somerset County line Easterly to the Northwest corner of the Somerset and Piscataquis county line, thence Southerly along this county line to the northeast corner of the Athens town line, thence westerly along the town line between Brighton Plantation and Athens to the westerly corner of Athens, and continuing southerly to the southwest corner of the town of Athens where it meets the Cornville town line, thence westerly along the Cornville - Solon town line to the intersection of the Cornville - Madison town line, thence southerly and westerly following the Madison town line to the intersection of the Norridgewock - Skowhegan town line, thence southerly along the Skowhegan town line to the Fairfield town line, thence easterly along the Fairfield town line to the Clinton town line (being determined by the Kennebec River), thence southerly along the Kennebec River to the Augusta city line, thence easterly along the city line to the Windsor town line, thence southerly along the Augusta - Windsor town line to the northwest corner of the Lincoln County line, thence southerly along the westerly Lincoln county line to the boundary of the State of Maine as determined by Maritime law, thence following the State boundary on the westerly side of the state to the point of beginning.',43.07,46.58,-71.09,-69.61,0); +INSERT INTO "area" VALUES('EPSG','2959','USA - Maine - CS2000 - C','United States (USA) - Maine between approximately 69°40''W and 68°25''W. The area is bounded by the following: Beginning at the point determined by the intersection of the Maine State line and the County Line between Aroostook and Somerset Counties, thence northeasterly along the state line to the intersection of the Fort Kent - Frenchville town line, thence southerly along this town line to the intersection with the New Canada Plantation - T17 R5 WELS town line, thence continuing southerly along town lines to the northeast corner of Penobscot County, thence continuing southerly along the Penobscot County line to the intersection of the Woodville - Mattawamkeag town line (being determined by the Penobscot River), thence along the Penobscot River to the Enfield - Lincoln town line, thence southeasterly along the Enfield - Lincoln town line and the Enfield - Lowell town line to the Passadumkeag - Edinburg town line, thence south-southeasterly along town lines to the intersection of the Hancock County line, thence southerly along the county line to the intersection of the Otis - Mariaville town line, thence southerly along the Otis - Mariaville town line to the Ellsworth city line, thence southerly along the Ellsworth city line to the intersection of the Surry - Trenton town line, thence southerly along the easterly town lines of Surry, Blue Hill, Brooklin, Deer Isle, and Stonington to the Knox County line, thence following the Knox County line to the boundary of the State of Maine as determined by Maritime law, thence following the State boundary westerly to the intersection of the Sagadahoc - Lincoln county line, thence northerly along the easterly boundary of the Maine 2000 West Zone, as defined, to the point of beginning.',43.75,47.47,-70.03,-68.33,0); +INSERT INTO "area" VALUES('EPSG','2960','USA - Maine - CS2000 - E','United States (USA) - Maine east of approximately 68°25''W. The area is bounded by the following: Beginning at the point determined by the intersection of the Maine State line and the Fort Kent - Frenchville town line, thence continuing easterly and then southerly along the state line to the boundary of the State of Maine as determined by Maritime law, thence following the State boundary westerly to the intersection of the Knox and Hancock County line, thence northerly along the easterly boundary of the Maine 2000 Central Zone, as defined, to the point of beginning.',44.18,47.37,-68.58,-66.91,0); +INSERT INTO "area" VALUES('EPSG','2961','Ireland - Corrib and Errigal','Ireland - offshore - Corrib and Errigal fields.',53.75,55.76,-12.5,-9.49,0); +INSERT INTO "area" VALUES('EPSG','2962','Brazil - Santos','Brazil - offshore - Santos basin.',-28.41,-22.66,-48.8,-40.2,0); +INSERT INTO "area" VALUES('EPSG','2963','Brazil - Campos','Brazil - offshore - Campos basin.',-25.91,-20.45,-42.04,-37.11,0); +INSERT INTO "area" VALUES('EPSG','2964','Brazil - Espirito Santo and Mucuri','Brazil - offshore - Espirito Santo and Mucuri basins.',-22.04,-17.59,-40.37,-35.18,0); +INSERT INTO "area" VALUES('EPSG','2965','Brazil - Pelotas','Brazil - offshore - Pelotas basin.',-35.71,-28.11,-53.38,-44.71,0); +INSERT INTO "area" VALUES('EPSG','2966','Brazil - offshore 18°S to 34°S','Brazil - offshore between 18°S and 34°S.',-34.0,-18.0,-53.38,-35.19,0); +INSERT INTO "area" VALUES('EPSG','2967','Mauritania - north coast','Mauritania - coastal area north of Cape Timiris.',19.37,21.34,-17.08,-15.88,0); +INSERT INTO "area" VALUES('EPSG','2968','Mauritania - central coast','Mauritania - coastal area south of Cape Timiris.',16.81,19.41,-16.57,-15.59,0); +INSERT INTO "area" VALUES('EPSG','2969','Mauritania - east of 6°W','Mauritania - east of 6°W.',15.49,25.74,-6.0,-4.8,0); +INSERT INTO "area" VALUES('EPSG','2970','Mauritania - 12°W to 6°W','Mauritania - between 12°W and 6°W.',14.75,27.3,-12.0,-6.0,0); +INSERT INTO "area" VALUES('EPSG','2971','Mauritania - west of 12°W onshore','Mauritania - onshore west of 12°W.',14.72,23.46,-17.08,-12.0,0); +INSERT INTO "area" VALUES('EPSG','2972','Mauritania - Nouakchutt','Mauritania - Nouakchutt.',17.89,18.25,-16.11,-15.83,0); +INSERT INTO "area" VALUES('EPSG','2973','USA - CONUS south of 41°N, west of 112°W - onshore','United States (USA) - CONUS south of 41°N and west of 112°W - onshore - Arizona; California; Nevada; Utah.',31.64,41.0,-124.45,-112.0,0); +INSERT INTO "area" VALUES('EPSG','2974','USA - CONUS south of 41°N, 112°W to 95°W - onshore','United States (USA) - CONUS south of 41°N and between 112°W and 95°W - onshore - Arizona; Colorado; Iowa; Kansas; Missouri; Nebraska; New Mexico; Oklahoma; Texas; Utah.',25.83,41.01,-112.0,-94.99,0); +INSERT INTO "area" VALUES('EPSG','2975','USA - CONUS south of 41°N, 95°W to 78°W - onshore','United States (USA) - CONUS south of 41°N and between 95°W and 78°W - onshore - Alabama; Arkansas; Florida; Georgia; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maryland; Mississippi; Missouri; North Carolina; Ohio; Oklahoma; Pennsylvania; South Carolina; Tennessee; Texas; Virginia; West Virginia.',24.41,41.01,-95.0,-77.99,0); +INSERT INTO "area" VALUES('EPSG','2976','USA - CONUS south of 41°N, east of 78°W - onshore','United States (USA) - CONUS south of 41°N and east of 78°W - onshore - Delaware; Maryland; New Jersey; New York; North Carolina; Pennsylvania; Virginia; West Virginia.',33.84,41.01,-78.0,-71.9,0); +INSERT INTO "area" VALUES('EPSG','2977','USA - CONUS north of 41°N, west of 112°W - onshore','United States (USA) - CONUS north of 41°N and west of 112°W - onshore - California; Idaho; Montana; Nevada; Oregon; Utah; Washington.',41.0,49.05,-124.79,-112.0,0); +INSERT INTO "area" VALUES('EPSG','2978','USA - CONUS north of 41°N, 112°W to 95°W','United States (USA) - CONUS north of 41°N and between 112°W and 95°W. Idaho; Iowa; Minnesota; Montana; Nebraska; North Dakota; South Dakota; Utah; Wyoming.',41.0,49.38,-112.0,-95.0,0); +INSERT INTO "area" VALUES('EPSG','2979','USA - CONUS north of 41°N, 95°W to 78°W','United States (USA) - CONUS north of 41°N and between 95°W and 78°W. Illinois; Indiana; Iowa; Michigan; Minnesota; New York; Ohio; Pennsylvania; Wisconsin.',41.0,49.37,-95.0,-77.99,0); +INSERT INTO "area" VALUES('EPSG','2980','USA - CONUS north of 41°N, east of 78°W - onshore','United States (USA) - CONUS north of 41°N and east of 78°W - onshore - Connecticut; Maine; Massachusetts; New Hampshire; New Jersey; New York; Pennsylvania; Rhode Island; Vermont.',41.0,47.47,-78.0,-66.91,0); +INSERT INTO "area" VALUES('EPSG','2981','Nigeria - offshore','Nigeria - offshore.',1.92,6.38,2.66,8.49,0); +INSERT INTO "area" VALUES('EPSG','2982','Pakistan - Karachi','Pakistan - Karachi licence area.',24.69,25.76,66.83,68.0,0); +INSERT INTO "area" VALUES('EPSG','2983','Pakistan - East Sind','Pakistan - East Sind.',24.16,28.61,68.27,71.14,0); +INSERT INTO "area" VALUES('EPSG','2984','Pakistan - Badin and Mehran','Pakistan - Badin and Mehran blocks.',24.0,25.64,67.74,69.87,0); +INSERT INTO "area" VALUES('EPSG','2985','Pakistan - offshore Indus','Pakistan - offshore Indus fan.',21.05,25.39,64.0,68.24,0); +INSERT INTO "area" VALUES('EPSG','2986','Australia - SA','Australia - South Australia.',-38.13,-25.99,128.99,141.01,0); +INSERT INTO "area" VALUES('EPSG','2987','Libya - Amal','Libya - Amal field.',29.1,29.8,20.8,21.4,0); +INSERT INTO "area" VALUES('EPSG','2988','Channel Islands - Jersey, Les Ecrehos and Les Minquiers','Channel Islands - Jersey, Les Ecrehos and Les Minquiers - onshore and offshore.',48.77,49.44,-2.72,-1.81,0); +INSERT INTO "area" VALUES('EPSG','2989','Channel Islands - Guernsey, Alderney, Sark','Channel Islands - Guernsey, Alderney, Sark, Herm, Brecqhou, Jethou, Lihou - onshore and offshore.',49.11,50.16,-3.73,-2.02,0); +INSERT INTO "area" VALUES('EPSG','2990','Australia - Brisbane','Australia - Brisbane area. Local authorities in south-east Queensland: Gold Coast, Logan, Beaudesert, Redcliffe, Redlands, Pine Rivers, Caboolture, Caloundra, Maroochy, Noosa, Maryborough; local authorities in north-east New South Wales: Tweed, Byron, Lismore, Ballina and Richmond Valley.',-29.88,-24.64,151.19,153.69,0); +INSERT INTO "area" VALUES('EPSG','2991','Antarctica - 60°S to 64°S, 72°W to 60°W (SP19-20)','Antarctica - 60°S to 64°S and 72°W to 60°W.',-64.0,-60.0,-72.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','2992','Antarctica - 60°S to 64°S, 60°W to 48°W (SP21-22)','Antarctica - 60°S to 64°S and 60°W to 48°W.',-64.0,-60.0,-60.0,-48.0,0); +INSERT INTO "area" VALUES('EPSG','2993','Antarctica - 60°S to 64°S, 48°W to 36°W (SP23-24)','Antarctica - 60°S to 64°S and 48°W to 36°W.',-64.0,-60.0,-48.0,-36.0,0); +INSERT INTO "area" VALUES('EPSG','2994','Antarctica - 64°S to 68°S, 180°W to 168°W (SQ01-02)','Antarctica - 64°S to 68°S and 180°W to 168°W.',-68.0,-64.0,-180.0,-168.0,0); +INSERT INTO "area" VALUES('EPSG','2995','Antarctica - 64°S to 68°S, 72°W to 60°W (SQ19-20)','Antarctica - 64°S to 68°S and 72°W to 60°W.',-68.0,-64.0,-72.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','2996','Antarctica - 64°S to 68°S, 60°W to 48°W (SQ21-22)','Antarctica - 64°S to 68°S and 60°W to 48°W.',-68.0,-64.0,-60.0,-48.0,0); +INSERT INTO "area" VALUES('EPSG','2997','Antarctica - 64°S to 68°S, 36°E to 48°E (SQ37-38)','Antarctica - 64°S to 68°S and 36°E to 48°E.',-68.0,-64.0,36.0,48.0,0); +INSERT INTO "area" VALUES('EPSG','2998','Antarctica - 64°S to 68°S, 48°E to 60°E (SQ39-40)','Antarctica - 64°S to 68°S and 48°E to 60°E.',-68.0,-64.0,48.0,60.0,0); +INSERT INTO "area" VALUES('EPSG','2999','Antarctica - 64°S to 68°S, 60°E to 72°E (SQ41-42)','Antarctica - 64°S to 68°S and 60°E to 72°E.',-68.0,-64.0,60.0,72.0,0); +INSERT INTO "area" VALUES('EPSG','3000','Antarctica - 64°S to 68°S, 72°E to 84°E (SQ43-44)','Antarctica - 64°S to 68°S and 72°E to 84°E.',-68.0,-64.0,72.0,84.0,0); +INSERT INTO "area" VALUES('EPSG','3001','Antarctica - 64°S to 68°S, 84°E to 96°E (SQ45-46)','Antarctica - 64°S to 68°S and 84°E to 96°E.',-68.0,-64.0,84.0,96.0,0); +INSERT INTO "area" VALUES('EPSG','3002','Antarctica - 64°S to 68°S, 96°E to 108°E (SQ47-48)','Antarctica - 64°S to 68°S and 96°E to 108°E.',-68.0,-64.0,96.0,108.0,0); +INSERT INTO "area" VALUES('EPSG','3003','Antarctica - 64°S to 68°S, 108°E to 120°E (SQ49-50)','Antarctica - 64°S to 68°S and 108°E to 120°E.',-68.0,-64.0,108.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','3004','Antarctica - 64°S to 68°S, 120°E to 132°E (SQ51-52)','Antarctica - 64°S to 68°S and 120°E to 132°E.',-68.0,-64.0,120.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','3005','Antarctica - 64°S to 68°S, 132°E to 144°E (SQ53-54)','Antarctica - 64°S to 68°S and 132°E to 144°E.',-68.0,-64.0,132.0,144.0,0); +INSERT INTO "area" VALUES('EPSG','3006','Antarctica - 64°S to 68°S, 144°E to 156°E (SQ55-56)','Antarctica - 64°S to 68°S and 144°E to 156°E.',-68.0,-64.0,144.0,156.0,0); +INSERT INTO "area" VALUES('EPSG','3007','Antarctica - 64°S to 68°S, 156°E to 168°E (SQ57-58)','Antarctica - 64°S to 68°S and 156°E to 168°E.',-68.0,-64.0,156.0,168.0,0); +INSERT INTO "area" VALUES('EPSG','3008','Antarctica - 68°S to 72°S, 108°W to 96°W (SR13-14)','Antarctica - 68°S to 72°S and 108°W to 96°W.',-72.0,-68.0,-108.0,-96.0,0); +INSERT INTO "area" VALUES('EPSG','3009','Antarctica - 68°S to 72°S, 96°W to 84°W (SR15-16)','Antarctica - 68°S to 72°S and 96°W to 84°W.',-72.0,-68.0,-96.0,-84.0,0); +INSERT INTO "area" VALUES('EPSG','3010','Antarctica - 68°S to 72°S, 84°W to 72°W (SR17-18)','Antarctica - 68°S to 72°S and 84°W to 72°W.',-72.0,-68.0,-84.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','3011','Antarctica - 68°S to 72°S, 72°W to 60°W (SR19-20)','Antarctica - 68°S to 72°S and 72°W to 60°W.',-72.0,-68.0,-72.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','3012','Antarctica - 68°S to 72°S, 24°W to 12°W (SR27-28)','Antarctica - 68°S to 72°S and 24°W to 12°W.',-72.0,-68.0,-24.0,-12.0,0); +INSERT INTO "area" VALUES('EPSG','3013','Antarctica - 68°S to 72°S, 12°W to 0°W (SR29-30)','Antarctica - 68°S to 72°S and 12°W to 0°W.',-72.0,-68.0,-12.0,0.0,0); +INSERT INTO "area" VALUES('EPSG','3014','Antarctica - 68°S to 72°S, 0°E to 12°E (SR31-32)','Antarctica - 68°S to 72°S and 0°E to 12°E.',-72.0,-68.0,0.0,12.0,0); +INSERT INTO "area" VALUES('EPSG','3015','Antarctica - 68°S to 72°S, 12°E to 24°E (SR33-34)','Antarctica - 68°S to 72°S and 12°E to 24°E.',-72.0,-68.0,12.0,24.0,0); +INSERT INTO "area" VALUES('EPSG','3016','Antarctica - 68°S to 72°S, 24°E to 36°E (SR35-36)','Antarctica - 68°S to 72°S and 24°E to 36°E.',-72.0,-68.0,24.0,36.0,0); +INSERT INTO "area" VALUES('EPSG','3017','Antarctica - 68°S to 72°S, 36°E to 48°E (SR37-38)','Antarctica - 68°S to 72°S and 36°E to 48°E.',-72.0,-68.0,36.0,48.0,0); +INSERT INTO "area" VALUES('EPSG','3018','Antarctica - 68°S to 72°S, 48°E to 60°E (SR39-40)','Antarctica - 68°S to 72°S and 48°E to 60°E.',-72.0,-68.0,48.0,60.0,0); +INSERT INTO "area" VALUES('EPSG','3019','Antarctica - 68°S to 72°S, 60°E to 72°E (SR41-42)','Antarctica - 68°S to 72°S and 60°E to 72°E.',-72.0,-68.0,60.0,72.0,0); +INSERT INTO "area" VALUES('EPSG','3020','Antarctica - 68°S to 72°S, 72°E to 84°E (SR43-44)','Antarctica - 68°S to 72°S and 72°E to 84°E.',-72.0,-68.0,72.0,84.0,0); +INSERT INTO "area" VALUES('EPSG','3021','Antarctica - 68°S to 72°S, 84°E to 96°E (SR45-46)','Antarctica - 68°S to 72°S and 84°E to 96°E.',-72.0,-68.0,84.0,96.0,0); +INSERT INTO "area" VALUES('EPSG','3022','Antarctica - 68°S to 72°S, 96°E to 108°E (SR47-48)','Antarctica - 68°S to 72°S and 96°E to 108°E.',-72.0,-68.0,96.0,108.0,0); +INSERT INTO "area" VALUES('EPSG','3023','Antarctica - 68°S to 72°S, 108°E to 120°E (SR49-50)','Antarctica - 68°S to 72°S and 108°E to 120°E.',-72.0,-68.0,108.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','3024','Antarctica - 68°S to 72°S, 120°E to 132°E (SR51-52)','Antarctica - 68°S to 72°S and 120°E to 132°E.',-72.0,-68.0,120.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','3025','Antarctica - 68°S to 72°S, 132°E to 144°E (SR53-54)','Antarctica - 68°S to 72°S and 132°E to 144°E.',-72.0,-68.0,132.0,144.0,0); +INSERT INTO "area" VALUES('EPSG','3026','Antarctica - 68°S to 72°S, 144°E to 156°E (SR55-56)','Antarctica - 68°S to 72°S and 144°E to 156°E.',-72.0,-68.0,144.0,156.0,0); +INSERT INTO "area" VALUES('EPSG','3027','Antarctica - 68°S to 72°S, 156°E to 168°E (SR57-58)','Antarctica - 68°S to 72°S and 156°E to 168°E.',-72.0,-68.0,156.0,168.0,0); +INSERT INTO "area" VALUES('EPSG','3028','Antarctica - 68°S to 72°S, 168°E to 180°E (SR59-60)','Antarctica - 68°S to 72°S and 168°E to 180°E.',-72.0,-68.0,168.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','3029','Antarctica - 72°S to 76°S, 162°W to 144°W (SS04-06)','Antarctica - 72°S to 76°S and 162°W to 144°W.',-76.0,-72.0,-162.0,-144.0,0); +INSERT INTO "area" VALUES('EPSG','3030','Antarctica - 72°S to 76°S, 144°W to 126°W (SS07-09)','Antarctica - 72°S to 76°S and 144°W to 126°W.',-76.0,-72.0,-144.0,-126.0,0); +INSERT INTO "area" VALUES('EPSG','3031','Antarctica - 72°S to 76°S, 126°W to 108°W (SS10-12)','Antarctica - 72°S to 76°S and 126°W to 108°W.',-76.0,-72.0,-126.0,-108.0,0); +INSERT INTO "area" VALUES('EPSG','3032','Antarctica - 72°S to 76°S, 108°W to 90°W (SS13-15)','Antarctica - 72°S to 76°S and 108°W to 90°W.',-76.0,-72.0,-108.0,-90.0,0); +INSERT INTO "area" VALUES('EPSG','3033','Antarctica - 72°S to 76°S, 90°W to 72°W (SS16-18)','Antarctica - 72°S to 76°S and 90°W to 72°W.',-76.0,-72.0,-90.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','3034','Antarctica - 72°S to 76°S, 72°W to 54°W (SS19-21)','Antarctica - 72°S to 76°S and 72°W to 54°W.',-76.0,-72.0,-72.0,-54.0,0); +INSERT INTO "area" VALUES('EPSG','3035','Antarctica - 72°S to 76°S, 36°W to 18°W (SS25-27)','Antarctica - 72°S to 76°S and 36°W to 18°W.',-76.0,-72.0,-36.0,-18.0,0); +INSERT INTO "area" VALUES('EPSG','3036','Antarctica - 72°S to 76°S, 18°W to 0°W (SS28-30)','Antarctica - 72°S to 76°S and 18°W to 0°W.',-76.0,-72.0,-18.0,0.0,0); +INSERT INTO "area" VALUES('EPSG','3037','Antarctica - 72°S to 76°S, 0°E to 18°E (SS31-33)','Antarctica - 72°S to 76°S and 0°E to 18°E.',-76.0,-72.0,0.0,18.0,0); +INSERT INTO "area" VALUES('EPSG','3038','Antarctica - 72°S to 76°S, 18°E to 36°E (SS34-36)','Antarctica - 72°S to 76°S and 18°E to 36°E.',-76.0,-72.0,18.0,36.0,0); +INSERT INTO "area" VALUES('EPSG','3039','Antarctica - 72°S to 76°S, 36°E to 54°E (SS37-39)','Antarctica - 72°S to 76°S and 36°E to 54°E.',-76.0,-72.0,36.0,54.0,0); +INSERT INTO "area" VALUES('EPSG','3040','Antarctica - 72°S to 76°S, 54°E to 72°E (SS40-42)','Antarctica - 72°S to 76°S and 54°E to 72°E.',-76.0,-72.0,54.0,72.0,0); +INSERT INTO "area" VALUES('EPSG','3041','Antarctica - 72°S to 76°S, 72°E to 90°E (SS43-45)','Antarctica - 72°S to 76°S and 72°E to 90°E.',-76.0,-72.0,72.0,90.0,0); +INSERT INTO "area" VALUES('EPSG','3042','Antarctica - 72°S to 76°S, 90°E to 108°E (SS46-48)','Antarctica - 72°S to 76°S and 90°E to 108°E.',-76.0,-72.0,90.0,108.0,0); +INSERT INTO "area" VALUES('EPSG','3043','Antarctica - 72°S to 76°S, 108°E to 126°E (SS49-51)','Antarctica - 72°S to 76°S and 108°E to 126°E.',-76.0,-72.0,108.0,126.0,0); +INSERT INTO "area" VALUES('EPSG','3044','Antarctica - 72°S to 76°S, 126°E to 144°E (SS52-54)','Antarctica - 72°S to 76°S and 126°E to 144°E.',-76.0,-72.0,126.0,144.0,0); +INSERT INTO "area" VALUES('EPSG','3045','Antarctica - 72°S to 76°S, 144°E to 162°E (SS55-57)','Antarctica - 72°S to 76°S and 144°E to 162°E.',-76.0,-72.0,144.0,162.0,0); +INSERT INTO "area" VALUES('EPSG','3046','Antarctica - 72°S to 76°S, 162°E to 180°E (SS58-60)','Antarctica - 72°S to 76°S and 162°E to 180°E.',-76.0,-72.0,162.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','3047','Antarctica - 76°S to 80°S, 180°W to 156°W (ST01-04)','Antarctica - 76°S to 80°S and 180°W to 156°W.',-80.0,-76.0,-180.0,-156.0,0); +INSERT INTO "area" VALUES('EPSG','3048','Antarctica - 76°S to 80°S, 156°W to 132°W (ST05-08)','Antarctica - 76°S to 80°S and 156°W to 132°W.',-80.0,-76.0,-156.0,-132.0,0); +INSERT INTO "area" VALUES('EPSG','3049','Antarctica - 76°S to 80°S, 132°W to 108°W (ST09-12)','Antarctica - 76°S to 80°S and 132°W to 108°W.',-80.0,-76.0,-132.0,-108.0,0); +INSERT INTO "area" VALUES('EPSG','3050','Antarctica - 76°S to 80°S, 108°W to 84°W (ST13-16)','Antarctica - 76°S to 80°S and 108°W to 84°W.',-80.0,-76.0,-108.0,-84.0,0); +INSERT INTO "area" VALUES('EPSG','3051','Antarctica - 76°S to 80°S, 84°W to 60°W (ST17-20)','Antarctica - 76°S to 80°S and 84°W to 60°W.',-80.0,-76.0,-84.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','3052','Antarctica - 76°S to 80°S, 60°W to 36°W (ST21-24)','Antarctica - 76°S to 80°S and 60°W to 36°W.',-80.0,-76.0,-60.0,-36.0,0); +INSERT INTO "area" VALUES('EPSG','3053','Antarctica - 76°S to 80°S, 36°W to 12°W (ST25-28)','Antarctica - 76°S to 80°S and 36°W to 12°W.',-80.0,-76.0,-36.0,-12.0,0); +INSERT INTO "area" VALUES('EPSG','3054','Antarctica - 76°S to 80°S, 12°W to 12°E (ST29-32)','Antarctica - 76°S to 80°S and 12°W to 12°E.',-80.0,-76.0,-12.0,12.0,0); +INSERT INTO "area" VALUES('EPSG','3055','Antarctica - 76°S to 80°S, 12°E to 36°E (ST33-36)','Antarctica - 76°S to 80°S and 12°E to 36°E.',-80.0,-76.0,12.0,36.0,0); +INSERT INTO "area" VALUES('EPSG','3056','Antarctica - 76°S to 80°S, 36°E to 60°E (ST37-40)','Antarctica - 76°S to 80°S and 36°E to 60°E.',-80.0,-76.0,36.0,60.0,0); +INSERT INTO "area" VALUES('EPSG','3057','Antarctica - 76°S to 80°S, 60°E to 84°E (ST41-44)','Antarctica - 76°S to 80°S and 60°E to 84°E.',-80.0,-76.0,60.0,84.0,0); +INSERT INTO "area" VALUES('EPSG','3058','Antarctica - 76°S to 80°S, 84°E to 108°E (ST45-48)','Antarctica - 76°S to 80°S and 84°E to 108°E.',-80.0,-76.0,84.0,108.0,0); +INSERT INTO "area" VALUES('EPSG','3059','Antarctica - 76°S to 80°S, 108°E to 132°E (ST49-52)','Antarctica - 76°S to 80°S and 108°E to 132°E.',-80.0,-76.0,108.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','3060','Antarctica - 76°S to 80°S, 132°E to 156°E (ST53-56)','Antarctica - 76°S to 80°S and 132°E to 156°E.',-80.0,-76.0,132.0,156.0,0); +INSERT INTO "area" VALUES('EPSG','3061','Antarctica - 76°S to 80°S, 156°E to 180°E (ST57-60)','Antarctica - 76°S to 80°S and 156°E to 180°E.',-80.0,-76.0,156.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','3062','Antarctica - 80°S to 84°S, 180°W to 150°W (SU01-05)','Antarctica - 80°S to 84°S and 180°W to 150°W.',-84.0,-80.0,-180.0,-150.0,0); +INSERT INTO "area" VALUES('EPSG','3063','Antarctica - 80°S to 84°S, 150°W to 120°W (SU06-10)','Antarctica - 80°S to 84°S and 150°W to 120°W.',-84.0,-80.0,-150.0,-120.0,0); +INSERT INTO "area" VALUES('EPSG','3064','Antarctica - 80°S to 84°S, 120°W to 90°W (SU11-15)','Antarctica - 80°S to 84°S and 120°W to 90°W.',-84.0,-80.0,-120.0,-90.0,0); +INSERT INTO "area" VALUES('EPSG','3065','Antarctica - 80°S to 84°S, 90°W to 60°W (SU16-20)','Antarctica - 80°S to 84°S and 90°W to 60°W.',-84.0,-80.0,-90.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','3066','Antarctica - 80°S to 84°S, 60°W to 30°W (SU21-25)','Antarctica - 80°S to 84°S and 60°W to 30°W.',-84.0,-80.0,-60.0,-30.0,0); +INSERT INTO "area" VALUES('EPSG','3067','Antarctica - 80°S to 84°S, 30°W to 0°W (SU26-30)','Antarctica - 80°S to 84°S and 30°W to 0°W.',-84.0,-80.0,-30.0,0.0,0); +INSERT INTO "area" VALUES('EPSG','3068','Antarctica - 80°S to 84°S, 0°E to 30°E (SU31-35)','Antarctica - 80°S to 84°S and 0°E to 30°E.',-84.0,-80.0,0.0,30.0,0); +INSERT INTO "area" VALUES('EPSG','3069','Antarctica - 80°S to 84°S, 30°E to 60°E (SU36-40)','Antarctica - 80°S to 84°S and 30°E to 60°E.',-84.0,-80.0,30.0,60.0,0); +INSERT INTO "area" VALUES('EPSG','3070','Antarctica - 80°S to 84°S, 60°E to 90°E (SU41-45)','Antarctica - 80°S to 84°S and 60°E to 90°E.',-84.0,-80.0,60.0,90.0,0); +INSERT INTO "area" VALUES('EPSG','3071','Antarctica - 80°S to 84°S, 90°E to 120°E (SU46-50)','Antarctica - 80°S to 84°S and 90°E to 120°E.',-84.0,-80.0,90.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','3072','Antarctica - 80°S to 84°S, 120°E to 150°E (SU51-55)','Antarctica - 80°S to 84°S and 120°E to 150°E.',-84.0,-80.0,120.0,150.0,0); +INSERT INTO "area" VALUES('EPSG','3073','Antarctica - 80°S to 84°S, 150°E to 180° (SU56-60)','Antarctica - 80°S to 84°S and 150°E to 180°E.',-84.0,-80.0,150.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','3074','Antarctica - 84°S to 88°S, 180°W to 120°W (SV01-10)','Antarctica - 84°S to 88°S and 180°W to 120°W.',-88.0,-84.0,-180.0,-120.0,0); +INSERT INTO "area" VALUES('EPSG','3075','Antarctica - 84°S to 88°S, 120°W to 60°W (SV11-20)','Antarctica - 84°S to 88°S and 120°W to 60°W.',-88.0,-84.0,-120.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','3076','Antarctica - 84°S to 88°S, 60°W to 0°W (SV21-30)','Antarctica - 84°S to 88°S and 60°W to 0°W.',-88.0,-84.0,-60.0,0.0,0); +INSERT INTO "area" VALUES('EPSG','3077','Antarctica - 84°S to 88°S, 0°E to 60°E (SV31-40)','Antarctica - 84°S to 88°S and 0°E to 60°E.',-88.0,-84.0,0.0,60.0,0); +INSERT INTO "area" VALUES('EPSG','3078','Antarctica - 84°S to 88°S, 60°E to 120°E (SV41-50)','Antarctica - 84°S to 88°S and 60°E to 120°E.',-88.0,-84.0,60.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','3079','Antarctica - 84°S to 88°S, 120°E to 180°E (SV51-60)','Antarctica - 84°S to 88°S and 120°E to 180°E.',-88.0,-84.0,120.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','3080','Antarctica - 88°S to 90°S, 180°W to 180°E (SW01-60)','Antarctica - 88°S to 90°S and 180°W to 180°E.',-90.0,-88.0,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','3081','Antarctica - Transantarctic mountains north of 80°S','Antarctica - Transantarctic mountains north of 80°S.',-80.0,-68.6,149.83,174.01,0); +INSERT INTO "area" VALUES('EPSG','3082','Colombia region 1','Colombia - region I (north east). Onshore north of 9°48''N and east of 73°W.',9.8,12.52,-73.0,-71.06,0); +INSERT INTO "area" VALUES('EPSG','3083','Colombia region 2','Colombia - region II (north west). Onshore north of 9°24''N and west of 73°W.',9.39,11.59,-76.08,-73.0,0); +INSERT INTO "area" VALUES('EPSG','3084','Colombia region 3','Colombia - region III - onshore between 8°N and 9°24''N and west of 74°24''W.',8.0,9.4,-77.48,-74.39,0); +INSERT INTO "area" VALUES('EPSG','3085','Colombia region 4','Colombia - region IV - between 5°N and 9°24''N and between 74°24''W and 72°W.',5.0,9.4,-74.4,-71.99,0); +INSERT INTO "area" VALUES('EPSG','3086','Colombia region 5','Colombia - region V - onshore between 5°N and 8°N and west of 74°24''W.',5.0,8.01,-77.92,-74.39,0); +INSERT INTO "area" VALUES('EPSG','3087','Colombia region 6','Colombia - region VI - onshore between 3°N and 5°N and west of 74°24''W.',3.0,5.01,-77.68,-74.39,0); +INSERT INTO "area" VALUES('EPSG','3088','Colombia region 7','Colombia - region VII (south west). Onshore south of 3°N and west of 74°W.',-1.13,3.01,-79.1,-74.0,0); +INSERT INTO "area" VALUES('EPSG','3089','Colombia region 8','Colombia - region VIII (south east). South and east of a line from the intersection of the meridian of 74°W with the southern border, northwards to 3°N, 74°W, westwards to 3°''N, 74°24''W, northwards to 5°N, 74°24''W, eastwards to 5°N, 72°W, and then northwards to the intersection of the meridian of 72°W with the international border.',-4.23,7.1,-74.4,-66.87,0); +INSERT INTO "area" VALUES('EPSG','3090','Colombia - 78°35''W to 75°35''W','Colombia - onshore between 78°35''W and 75°35''W of Greenwich (4°30'' W and 1°30'' W of Bogota).',0.03,10.21,-78.59,-75.58,0); +INSERT INTO "area" VALUES('EPSG','3091','Colombia - west of 78°35''W','Colombia - mainland onshore west of 78°35''W of Greenwich (4°30'' W of Bogota).',1.23,2.48,-79.1,-78.58,0); +INSERT INTO "area" VALUES('EPSG','3092','Finland - west of 19.5°E onshore','Finland - onshore west of 19°30''E.',60.08,60.34,19.24,19.5,0); +INSERT INTO "area" VALUES('EPSG','3093','Finland - 19.5°E to 20.5°E onshore','Finland - onshore between 19°30''E and 20°30''E.',59.92,60.48,19.5,20.5,0); +INSERT INTO "area" VALUES('EPSG','3094','Finland - 20.5°E to 21.5°E onshore','Finland - onshore between 20°30''E and 21°30''E.',59.84,69.33,20.5,21.5,0); +INSERT INTO "area" VALUES('EPSG','3095','Finland - 21.5°E to 22.5°E onshore','Finland - onshore between 21°30''E and 22°30''E.',59.76,69.31,21.5,22.5,0); +INSERT INTO "area" VALUES('EPSG','3096','Finland - 22.5°E to 23.5°E onshore','Finland - onshore between 22°30''E and 23°30''E.',59.75,68.74,22.5,23.5,0); +INSERT INTO "area" VALUES('EPSG','3097','Finland - 23.5°E to 24.5°E onshore','Finland - onshore between 23°30''E and 24°30''E.',59.86,68.84,23.5,24.5,0); +INSERT INTO "area" VALUES('EPSG','3098','Finland - 24.5°E to 25.5°E onshore','Finland - onshore between 24°30''E and 25°30''E.',59.94,68.9,24.5,25.5,0); +INSERT INTO "area" VALUES('EPSG','3099','Finland - 25.5°E to 26.5°E onshore','Finland - onshore between 25°30''E and 26°30''E.',60.18,69.94,25.5,26.5,0); +INSERT INTO "area" VALUES('EPSG','3100','Finland - 26.5°E to 27.5°E onshore','Finland - onshore between 26°30''E and 27°30''E.',60.36,70.05,26.5,27.5,0); +INSERT INTO "area" VALUES('EPSG','3101','Finland - 27.5°E to 28.5°E onshore','Finland - onshore between 27°30''E and 28°30''E.',60.42,70.09,27.5,28.5,0); +INSERT INTO "area" VALUES('EPSG','3102','Finland - 28.5°E to 29.5°E','Finland - between 28°30''E and 29°30''E.',60.94,69.81,28.5,29.5,0); +INSERT INTO "area" VALUES('EPSG','3103','Finland - 29.5°E to 30.5°E','Finland - between 29°30''E and 30°30''E.',61.43,67.98,29.5,30.5,0); +INSERT INTO "area" VALUES('EPSG','3104','Finland - east of 30.5°E','Finland - east of 30°30''E.',62.08,64.27,30.5,31.59,0); +INSERT INTO "area" VALUES('EPSG','3105','French Guiana - coastal area','French Guiana - coastal area.',3.43,5.81,-54.45,-51.61,0); +INSERT INTO "area" VALUES('EPSG','3106','Saudi Arabia - east of 54°E','Saudi Arabia - east of 54°E.',19.66,22.77,54.0,55.67,0); +INSERT INTO "area" VALUES('EPSG','3107','Saudi Arabia - onshore west of 36°E','Saudi Arabia - onshore west of 36°E.',26.82,29.38,34.51,36.0,0); +INSERT INTO "area" VALUES('EPSG','3108','Micronesia - Yap Islands','Federated States of Micronesia - Yap Islands.',9.39,9.69,137.99,138.27,0); +INSERT INTO "area" VALUES('EPSG','3109','American Samoa - 2 main island groups','American Samoa - Tutuila, Aunu''u, Ofu, Olesega and Ta''u islands.',-14.43,-14.11,-170.88,-169.38,0); +INSERT INTO "area" VALUES('EPSG','3110','American Samoa - 2 main island groups and Rose Island','American Samoa - Tutuila, Aunu''u, Ofu, Olesega, Ta''u and Rose islands.',-14.59,-14.11,-170.88,-168.09,0); +INSERT INTO "area" VALUES('EPSG','3111','Europe - ED79 tfm','Austria; Finland; Netherlands; Norway; Spain; Sweden, Switzerland.',36.0,71.05,-8.95,31.6,1); +INSERT INTO "area" VALUES('EPSG','3112','South America - 84°W to 78°W, N hemisphere and PSAD56 by country','South America (Ecuador) between 84°W and 78°W, northern hemisphere, onshore.',0.0,1.45,-80.18,-78.0,0); +INSERT INTO "area" VALUES('EPSG','3113','Nigeria - OML 58','Nigeria - block OML 58.',5.05,5.36,6.53,6.84,0); +INSERT INTO "area" VALUES('EPSG','3114','North America - 96°W to 90°W and NAD83 by country','North America - between 96°W and 90°W - onshore and offshore. Canada - Manitoba; Nunavut; Ontario. United States (USA) - Arkansas; Illinois; Iowa; Kansas; Louisiana; Michigan; Minnesota; Mississippi; Missouri; Nebraska; Oklahoma; Tennessee; Texas; Wisconsin.',25.61,84.0,-96.0,-90.0,0); +INSERT INTO "area" VALUES('EPSG','3115','North America - 90°W to 84°W and NAD83 by country','North America - between 90°W and 84°W - onshore and offshore. Canada - Manitoba; Nunavut; Ontario. United States (USA) - Alabama; Arkansas; Florida; Georgia; Indiana; Illinois; Kentucky; Louisiana; Michigan; Minnesota; Mississippi; Missouri; North Carolina; Ohio; Tennessee; Wisconsin.',23.97,84.0,-90.0,-84.0,0); +INSERT INTO "area" VALUES('EPSG','3116','North America - 84°W to 78°W and NAD83 by country','North America - between 84°W and 78°W - onshore and offshore. Canada - Nunavut; Ontario; Quebec. United States (USA) - Florida; Georgia; Kentucky; Maryland; Michigan; New York; North Carolina; Ohio; Pennsylvania; South Carolina; Tennessee; Virginia; West Virginia.',23.81,84.0,-84.0,-78.0,0); +INSERT INTO "area" VALUES('EPSG','3117','North America - 78°W to 72°W and NAD83 by country','North America - between 78°W and 72°W - onshore and offshore. Canada - Nunavut; Ontario; Quebec. United States (USA) - Connecticut; Delaware; Maryland; Massachusetts; New Hampshire; New Jersey; New York; North Carolina; Pennsylvania; Virginia; Vermont.',28.28,84.0,-78.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','3118','Grenada - main island - onshore','Grenada - main island - onshore.',11.94,12.29,-61.84,-61.54,0); +INSERT INTO "area" VALUES('EPSG','3119','Greenland - onshore','Greenland - onshore.',59.74,83.67,-73.29,-11.81,0); +INSERT INTO "area" VALUES('EPSG','3120','French Polynesia - west of 150°W','French Polynesia - west of 150°W onshore and offshore.',-26.7,-12.5,-158.13,-150.0,0); +INSERT INTO "area" VALUES('EPSG','3121','French Polynesia - 150°W to 144°W','French Polynesia - between 150°W and 144°W onshore and offshore.',-31.2,-7.29,-150.0,-144.0,0); +INSERT INTO "area" VALUES('EPSG','3122','French Polynesia - 144°W to 138°W','French Polynesia - between 144°W and 138°W onshore and offshore.',-31.24,-4.52,-144.0,-138.0,0); +INSERT INTO "area" VALUES('EPSG','3123','French Polynesia - east of 138°W','French Polynesia - east of 138°W.',-26.58,-5.52,-138.0,-131.97,0); +INSERT INTO "area" VALUES('EPSG','3124','French Polynesia - Society Islands - Tahiti','French Polynesia - Society Islands - Tahiti.',-17.93,-17.44,-149.7,-149.09,0); +INSERT INTO "area" VALUES('EPSG','3125','French Polynesia - Society Islands - Moorea','French Polynesia - Society Islands - Moorea.',-17.63,-17.41,-150.0,-149.73,0); +INSERT INTO "area" VALUES('EPSG','3126','French Polynesia - Society Islands - Maupiti','French Polynesia - Society Islands - Maupiti.',-16.57,-16.34,-152.39,-152.14,0); +INSERT INTO "area" VALUES('EPSG','3127','French Polynesia - Marquesas Islands - Ua Huka','French Polynesia - Marquesas Islands - Ua Huka.',-9.0,-8.81,-139.66,-139.44,0); +INSERT INTO "area" VALUES('EPSG','3128','French Polynesia - Marquesas Islands - Ua Pou','French Polynesia - Marquesas Islands - Ua Pou.',-9.57,-9.27,-140.21,-139.95,0); +INSERT INTO "area" VALUES('EPSG','3129','French Polynesia - Marquesas Islands - Nuku Hiva, Ua Huka and Ua Pou','French Polynesia - Marquesas Islands - Nuku Hiva, Ua Huka and Ua Pou.',-9.57,-8.72,-140.31,-139.44,0); +INSERT INTO "area" VALUES('EPSG','3130','French Polynesia - Marquesas Islands - Hiva Oa and Tahuata','French Polynesia - Marquesas Islands - Hiva Oa and Tahuata.',-10.08,-9.64,-139.23,-138.75,0); +INSERT INTO "area" VALUES('EPSG','3131','French Polynesia - Marquesas Islands - Hiva Oa','French Polynesia - Marquesas Islands - Hiva Oa.',-9.89,-9.64,-139.23,-138.75,0); +INSERT INTO "area" VALUES('EPSG','3132','French Polynesia - Marquesas Islands - Tahuata','French Polynesia - Marquesas Islands - Tahuata.',-10.08,-9.86,-139.19,-138.98,0); +INSERT INTO "area" VALUES('EPSG','3133','French Polynesia - Marquesas Islands - Fatu Hiva','French Polynesia - Marquesas Islands - Fatu Hiva.',-10.6,-10.36,-138.75,-138.54,0); +INSERT INTO "area" VALUES('EPSG','3134','French Polynesia - Society Islands - main islands','French Polynesia - Society Islands - Bora Bora, Huahine, Maupiti, Moorea, Raiatea, Tahaa and Tahiti.',-17.93,-16.17,-152.39,-149.09,0); +INSERT INTO "area" VALUES('EPSG','3135','French Polynesia - Society Islands - Huahine','French Polynesia - Society Islands - Huahine.',-16.87,-16.63,-151.11,-150.89,0); +INSERT INTO "area" VALUES('EPSG','3136','French Polynesia - Society Islands - Raiatea','French Polynesia - Society Islands - Raiatea.',-16.96,-16.68,-151.55,-151.3,0); +INSERT INTO "area" VALUES('EPSG','3137','French Polynesia - Society Islands - Bora Bora','French Polynesia - Society Islands - Bora Bora.',-16.62,-16.39,-151.86,-151.61,0); +INSERT INTO "area" VALUES('EPSG','3138','French Polynesia - Society Islands - Tahaa','French Polynesia - Society Islands - Tahaa.',-16.72,-16.5,-151.63,-151.36,0); +INSERT INTO "area" VALUES('EPSG','3139','Australia - New South Wales','Australia - New South Wales.',-37.53,-28.15,140.99,153.69,0); +INSERT INTO "area" VALUES('EPSG','3140','Iran - South Pars block 11','Iran - South Pars field phase 11.',26.46,26.64,52.22,52.41,0); +INSERT INTO "area" VALUES('EPSG','3141','Iran - Tombak LNG plant','Iran - Tombak LNG plant.',27.63,27.81,52.09,52.26,0); +INSERT INTO "area" VALUES('EPSG','3142','Libya - Sirte NC192','Libya - Sirte Basin licence NC192.',27.5,28.07,21.25,21.59,0); +INSERT INTO "area" VALUES('EPSG','3143','Trinidad and Tobago - Trinidad - onshore','Trinidad and Tobago - Trinidad - onshore.',9.99,10.9,-61.98,-60.85,0); +INSERT INTO "area" VALUES('EPSG','3144','French Guiana - east of 54°W','French Guiana - east of 54°W, onshore and offshore.',2.17,8.88,-54.0,-49.45,0); +INSERT INTO "area" VALUES('EPSG','3145','French Guiana - west of 54°W','French Guiana - west of 54°W.',2.11,5.69,-54.61,-54.0,0); +INSERT INTO "area" VALUES('EPSG','3146','French Guiana - onshore','French Guiana - onshore.',2.11,5.81,-54.61,-51.61,0); +INSERT INTO "area" VALUES('EPSG','3147','Congo DR (Zaire) - Katanga','The Democratic Republic of the Congo (Zaire) - Katanga.',-13.46,-4.99,21.74,30.78,0); +INSERT INTO "area" VALUES('EPSG','3148','Congo DR (Zaire) - Kasai - SE','The Democratic Republic of the Congo (Zaire) - Kasai - south of 5°S and east of 21°30''E.',-7.31,-5.01,21.5,26.26,0); +INSERT INTO "area" VALUES('EPSG','3149','Congo DR (Zaire) - 6th parallel south','The Democratic Republic of the Congo (Zaire) - adjacent to 6th parallel south traverse.',-7.36,-3.29,12.17,29.64,0); +INSERT INTO "area" VALUES('EPSG','3150','Congo DR (Zaire) - 11°E to 13°E onshore','The Democratic Republic of the Congo (Zaire) - onshore west of 13°E.',-6.04,-4.67,12.17,13.01,0); +INSERT INTO "area" VALUES('EPSG','3151','Congo DR (Zaire) - 13°E to 15°E','The Democratic Republic of the Congo (Zaire) - between 13°E to 15°E.',-5.91,-4.28,13.0,15.01,0); +INSERT INTO "area" VALUES('EPSG','3152','Congo DR (Zaire) - 15°E to 17°E','The Democratic Republic of the Congo (Zaire) - between 15°E to 17°E.',-7.31,-1.13,14.99,17.01,0); +INSERT INTO "area" VALUES('EPSG','3153','Congo DR (Zaire) - 17°E to 19°E','The Democratic Republic of the Congo (Zaire) - between 17°E to 19°E.',-8.11,4.77,17.0,19.01,0); +INSERT INTO "area" VALUES('EPSG','3154','Congo DR (Zaire) - 19°E to 21°E','The Democratic Republic of the Congo (Zaire) - between 19°E to 21°E.',-8.0,5.16,18.99,21.01,0); +INSERT INTO "area" VALUES('EPSG','3155','Congo DR (Zaire) - 21°E to 23°E','The Democratic Republic of the Congo (Zaire) - between 21°E to 23°E.',-11.24,4.84,20.99,23.01,0); +INSERT INTO "area" VALUES('EPSG','3156','Congo DR (Zaire) - 23°E to 25°E','The Democratic Republic of the Congo (Zaire) - between 23°E to 25°E.',-11.47,5.12,22.99,25.01,0); +INSERT INTO "area" VALUES('EPSG','3157','Congo DR (Zaire) - 25°E to 27°E','The Democratic Republic of the Congo (Zaire) - between 25°E to 27°E.',-11.99,5.39,24.99,27.0,0); +INSERT INTO "area" VALUES('EPSG','3158','Congo DR (Zaire) - 27°E to 29°E','The Democratic Republic of the Congo (Zaire) - between 27°E to 29°E.',-13.39,5.21,26.99,29.01,0); +INSERT INTO "area" VALUES('EPSG','3159','Congo DR (Zaire) - east of 29°E','The Democratic Republic of the Congo (Zaire) - east of 29°E.',-13.46,4.69,29.0,31.31,0); +INSERT INTO "area" VALUES('EPSG','3160','Congo DR (Zaire) - 6th parallel south 15°E to 17°E','The Democratic Republic of the Congo (Zaire) - adjacent to 6th parallel south traverse between 15°E and 17°E.',-5.87,-3.29,15.0,17.0,0); +INSERT INTO "area" VALUES('EPSG','3161','Congo DR (Zaire) - 6th parallel south 17°E to 19°E','The Democratic Republic of the Congo (Zaire) - adjacent to 6th parallel traverse between 17°E and 19°E.',-5.38,-3.4,17.0,19.0,0); +INSERT INTO "area" VALUES('EPSG','3162','Congo DR (Zaire) - 6th parallel south 19°E to 21°E','The Democratic Republic of the Congo (Zaire) - adjacent to 6th parallel south traverse between 19°E and 21°E.',-7.29,-4.01,19.0,21.0,0); +INSERT INTO "area" VALUES('EPSG','3163','Congo DR (Zaire) - 6th parallel south 21°E to 23°E','The Democratic Republic of the Congo (Zaire) - adjacent to 6th parallel south traverse between 21°E and 23°E.',-7.31,-5.31,21.0,23.0,0); +INSERT INTO "area" VALUES('EPSG','3164','Congo DR (Zaire) - 6th parallel south 23°E to 25°E','The Democratic Republic of the Congo (Zaire) - adjacent to 6th parallel south traverse between 23°E and 25°E.',-6.99,-5.01,23.0,25.0,0); +INSERT INTO "area" VALUES('EPSG','3165','Congo DR (Zaire) - 6th parallel south 25°E to 27°E','The Democratic Republic of the Congo (Zaire) - adjacent to 6th parallel south traverse between 25°E and 27°E.',-7.26,-4.23,25.0,27.0,0); +INSERT INTO "area" VALUES('EPSG','3166','Congo DR (Zaire) - 6th parallel south 27°E to 29°E','The Democratic Republic of the Congo (Zaire) - adjacent to 6th parallel south traverse between 27°E and 29°E.',-7.36,-4.24,27.0,29.0,0); +INSERT INTO "area" VALUES('EPSG','3167','Congo DR (Zaire) - 6th parallel south 29°E to 31°E','The Democratic Republic of the Congo (Zaire) - adjacent to 6th parallel south traverse and east of 29°E.',-6.04,-4.34,29.0,29.64,0); +INSERT INTO "area" VALUES('EPSG','3168','Poland - west of 18°E','Poland - west of 18°E.',49.98,54.85,14.14,18.0,1); +INSERT INTO "area" VALUES('EPSG','3169','Poland - 18°E to 24°E','Poland - between 18°E and 24°E.',49.03,55.95,18.0,24.0,1); +INSERT INTO "area" VALUES('EPSG','3170','Poland - east of 24°E','Poland - east of 24°E.',50.4,50.9,24.0,24.16,1); +INSERT INTO "area" VALUES('EPSG','3171','Congo DR (Zaire) - Bas Congo','The Democratic Republic of the Congo (Zaire) - Lower Congo (Bas Congo)',-6.04,-4.28,12.17,16.28,0); +INSERT INTO "area" VALUES('EPSG','3172','Pacific Ocean','Pacific Ocean - American Samoa, Antarctica, Australia, Brunei Darussalam, Cambodia, Canada, Chile, China, China - Hong Kong, China - Macao, Cook Islands, Ecuador, Fiji, French Polynesia, Guam, Indonesia, Japan, Kiribati, Democratic People''s Republic of Korea (North Korea), Republic of Korea (South Korea), Malaysia, Marshall Islands, Federated States of Micronesia, Nauru, New Caledonia, New Zealand, Niue, Norfolk Island, Northern Mariana Islands, Palau, Panama, Papua New Guinea (PNG), Peru, Philippines, Pitcairn, Russian Federation, Samoa, Singapore, Solomon Islands, Taiwan, Thailand, Tokelau, Tonga, Tuvalu, United States (USA), United States Minor Outlying Islands, Vanuatu, Venezuela, Vietnam, Wallis and Futuna.',-60.0,66.67,98.69,-68.0,0); +INSERT INTO "area" VALUES('EPSG','3173','Europe - FSU - CS63 zone C0','Estonia, Latvia and Lithuania - onshore west of 23°27''E. Russia - Kaliningrad onshore.',54.17,59.27,19.57,23.45,0); +INSERT INTO "area" VALUES('EPSG','3174','Europe - FSU - CS63 zone C1','Estonia, Latvia and Lithuania - onshore between 23°27''E and 26°27''E.',53.89,59.72,23.45,26.45,0); +INSERT INTO "area" VALUES('EPSG','3175','Europe - FSU - CS63 zone C2','Estonia, Latvia and Lithuania - onshore east of 26°27''E.',55.15,59.61,26.45,28.24,0); +INSERT INTO "area" VALUES('EPSG','3176','Brazil - 54°W to 48°W and south of 15°S','Brazil - onshore between 54°W and 48°W and south of 15°S.',-33.78,-15.0,-54.0,-48.0,0); +INSERT INTO "area" VALUES('EPSG','3177','Brazil - 48°W to 42°W and south of 15°S','Brazil - onshore between 48°W and 42°W and south of 15°S.',-25.29,-15.0,-48.0,-42.0,0); +INSERT INTO "area" VALUES('EPSG','3178','Brazil - east of 36°W onshore','Brazil - onshore east of 36°W .',-10.1,-4.99,-36.0,-34.74,0); +INSERT INTO "area" VALUES('EPSG','3179','Africa - Angola (Cabinda) and DR Congo (Zaire) - coastal','Angola (Cabinda) - onshore and offshore; The Democratic Republic of the Congo (Zaire) - onshore coastal area and offshore.',-6.04,-4.38,10.53,13.1,0); +INSERT INTO "area" VALUES('EPSG','3180','Africa - Angola (Cabinda) and DR Congo (Zaire) - offshore','Angola (Cabinda) - offshore; The Democratic Republic of the Congo (Zaire) - offshore.',-6.04,-5.05,10.53,12.37,0); +INSERT INTO "area" VALUES('EPSG','3181','USA - Hawaii - Tern Island and Sorel Atoll','United States (USA) - Hawaii - Tern Island and Sorel Atoll.',23.69,23.93,-166.36,-166.03,0); +INSERT INTO "area" VALUES('EPSG','3182','St Helena - Ascension Island','St Helena, Ascension and Tristan da Cunha - Ascension Island - onshore.',-8.03,-7.83,-14.46,-14.24,0); +INSERT INTO "area" VALUES('EPSG','3183','St Helena - St Helena Island','St Helena, Ascension and Tristan da Cunha - St Helena Island - onshore.',-16.08,-15.85,-5.85,-5.58,0); +INSERT INTO "area" VALUES('EPSG','3184','St Helena - Tristan da Cunha','St Helena, Ascension and Tristan da Cunha - Tristan da Cunha island group including Tristan, Inaccessible, Nightingale, Middle and Stoltenhoff Islands.',-40.42,-37.0,-12.76,-9.8,0); +INSERT INTO "area" VALUES('EPSG','3185','Cayman Islands - Grand Cayman','Cayman Islands - Grand Cayman.',19.21,19.41,-81.46,-81.04,0); +INSERT INTO "area" VALUES('EPSG','3186','Cayman Islands - Little Cayman and Cayman Brac','Cayman Islands - Little Cayman and Cayman Brac.',19.63,19.78,-80.14,-79.69,0); +INSERT INTO "area" VALUES('EPSG','3187','South Georgia and the South Sandwich Islands - onshore','South Georgia and the South Sandwich Islands - onshore.',-59.53,-53.49,-42.14,-26.19,0); +INSERT INTO "area" VALUES('EPSG','3188','Chile - Easter Island onshore','Chile - Easter Island onshore.',-27.25,-27.01,-109.51,-109.16,0); +INSERT INTO "area" VALUES('EPSG','3189','British Indian Ocean Territory - Diego Garcia','British Indian Ocean Territory - Chagos Archipelago - Diego Garcia.',-7.49,-7.18,72.3,72.55,0); +INSERT INTO "area" VALUES('EPSG','3190','Wake - onshore','Wake atoll - onshore.',19.22,19.38,166.55,166.72,0); +INSERT INTO "area" VALUES('EPSG','3191','Pacific - Marshall Islands, Wake - onshore','Marshall Islands - onshore. Wake atoll onshore.',8.66,19.38,162.27,167.82,0); +INSERT INTO "area" VALUES('EPSG','3192','Micronesia - Kosrae (Kusaie)','Federated States of Micronesia - Kosrae (Kusaie).',5.21,5.43,162.85,163.1,0); +INSERT INTO "area" VALUES('EPSG','3193','Vanuatu - southern islands','Vanuatu - southern islands - Aneityum, Efate, Erromango and Tanna.',-20.31,-17.37,168.09,169.95,0); +INSERT INTO "area" VALUES('EPSG','3194','Vanuatu - northern islands','Vanuatu - northern islands - Aese, Ambrym, Aoba, Epi, Espiritu Santo, Maewo, Malo, Malkula, Paama, Pentecost, Shepherd and Tutuba.',-17.32,-14.57,166.47,168.71,0); +INSERT INTO "area" VALUES('EPSG','3195','Fiji - Viti Levu','Fiji - Viti Levu island.',-18.32,-17.25,177.19,178.75,0); +INSERT INTO "area" VALUES('EPSG','3196','Kiribati - Phoenix Islands','Kiribati - Phoenix Islands: Kanton, Orona, McKean Atoll, Birnie Atoll, Phoenix Seamounts.',-4.76,-2.68,-174.6,-170.66,0); +INSERT INTO "area" VALUES('EPSG','3197','Solomon Islands - Guadalcanal Island','Solomon Islands - Guadalcanal Island.',-9.98,-9.2,159.55,160.88,0); +INSERT INTO "area" VALUES('EPSG','3198','Solomon Islands - New Georgia - Ghizo (Gizo)','Solomon Islands - Western Islands - New Georgia, Ghizo (Gizo).',-8.86,-7.52,156.44,158.2,0); +INSERT INTO "area" VALUES('EPSG','3199','Spain - Canary Islands','Spain - Canary Islands onshore and offshore.',24.6,32.76,-21.93,-11.75,0); +INSERT INTO "area" VALUES('EPSG','3200','Japan - Iwo Jima','Japan - Iwo Jima island.',24.67,24.89,141.2,141.42,0); +INSERT INTO "area" VALUES('EPSG','3201','Johnston Island','United States Minor Outlying Islands - Johnston Island.',16.67,16.79,-169.59,-169.47,0); +INSERT INTO "area" VALUES('EPSG','3202','Midway Islands - Sand and Eastern Islands','United States Minor Outlying Islands - Midway Islands - Sand Island and Eastern Island.',28.13,28.28,-177.45,-177.31,0); +INSERT INTO "area" VALUES('EPSG','3203','Japan - Minamitori-shima (Marcus Island)','Japan - Minamitori-shima (Marcus Island).',24.26,24.32,153.95,154.01,1); +INSERT INTO "area" VALUES('EPSG','3204','Antarctica - Deception Island','Antarctica - South Shetland Islands - Deception Island.',-63.08,-62.82,-60.89,-60.35,0); +INSERT INTO "area" VALUES('EPSG','3205','Antarctica - Camp McMurdo area','Antarctica - McMurdo Sound, Camp McMurdo area.',-77.94,-77.17,165.73,167.43,0); +INSERT INTO "area" VALUES('EPSG','3206','North America - Bahamas and USA - Florida - onshore','North America - onshore - Bahamas and USA - Florida (east).',20.86,30.83,-82.33,-72.68,0); +INSERT INTO "area" VALUES('EPSG','3207','Cayman Islands - Cayman Brac','Cayman Islands - Cayman Brac.',19.66,19.78,-79.92,-79.69,0); +INSERT INTO "area" VALUES('EPSG','3208','Pitcairn - Pitcairn Island','Pitcairn - Pitcairn Island.',-25.14,-25.0,-130.16,-130.01,0); +INSERT INTO "area" VALUES('EPSG','3209','Mauritius - mainland','Mauritius - mainland onshore.',-20.57,-19.94,57.25,57.85,0); +INSERT INTO "area" VALUES('EPSG','3210','Serbia and Montenegro','Serbia and Montenegro - onshore and offshore.',41.82,46.23,18.44,23.05,1); +INSERT INTO "area" VALUES('EPSG','3211','Aaland Islands','Åland Islands - onshore and offshore.',59.84,60.48,19.24,21.19,0); +INSERT INTO "area" VALUES('EPSG','3212','Albania - onshore','Albania - onshore.',39.64,42.67,19.22,21.06,0); +INSERT INTO "area" VALUES('EPSG','3213','Algeria - onshore','Algeria - onshore.',18.97,37.14,-8.67,11.99,0); +INSERT INTO "area" VALUES('EPSG','3214','Anguilla - onshore','Anguilla - onshore.',18.11,18.33,-63.22,-62.92,0); +INSERT INTO "area" VALUES('EPSG','3215','Argentina - mainland onshore','Argentina - mainland onshore.',-52.43,-21.78,-73.59,-53.65,0); +INSERT INTO "area" VALUES('EPSG','3216','Aruba - onshore','Aruba - onshore.',12.36,12.68,-70.11,-69.82,0); +INSERT INTO "area" VALUES('EPSG','3217','Bangladesh - onshore','Bangladesh - onshore.',20.52,26.64,88.01,92.67,0); +INSERT INTO "area" VALUES('EPSG','3218','Barbados - onshore','Barbados - onshore.',13.0,13.39,-59.71,-59.37,0); +INSERT INTO "area" VALUES('EPSG','3219','Belize - onshore','Belize - onshore.',15.88,18.49,-89.22,-87.72,0); +INSERT INTO "area" VALUES('EPSG','3220','Benin - onshore','Benin - onshore.',6.17,12.4,0.77,3.86,0); +INSERT INTO "area" VALUES('EPSG','3221','Bermuda - onshore','Bermuda - onshore.',32.21,32.43,-64.89,-64.61,0); +INSERT INTO "area" VALUES('EPSG','3222','Bouvet Island - onshore','Bouvet Island - onshore.',-54.52,-54.33,3.29,3.54,0); +INSERT INTO "area" VALUES('EPSG','3223','Brazil - onshore','Brazil - onshore.',-33.78,5.28,-74.01,-34.74,0); +INSERT INTO "area" VALUES('EPSG','3224','Bulgaria - onshore','Bulgaria - onshore.',41.24,44.23,22.36,28.68,0); +INSERT INTO "area" VALUES('EPSG','3225','Cambodia - onshore','Cambodia - onshore.',10.39,14.71,102.34,107.64,0); +INSERT INTO "area" VALUES('EPSG','3226','Cameroon - onshore','Cameroon - onshore.',1.65,13.09,8.45,16.21,0); +INSERT INTO "area" VALUES('EPSG','3227','Chile - onshore north of 45°S','Chile - onshore north of 45°S.',-45.0,-17.5,-75.22,-67.0,0); +INSERT INTO "area" VALUES('EPSG','3228','China - onshore','China - onshore.',18.11,53.56,73.62,134.77,0); +INSERT INTO "area" VALUES('EPSG','3229','Colombia - mainland','Colombia - mainland onshore.',-4.23,12.52,-79.1,-66.87,0); +INSERT INTO "area" VALUES('EPSG','3230','Congo - onshore','Congo - onshore.',-5.06,3.72,11.11,18.65,0); +INSERT INTO "area" VALUES('EPSG','3231','Congo DR (Zaire) - onshore','The Democratic Republic of the Congo (Zaire) - onshore.',-13.46,5.39,12.17,31.31,0); +INSERT INTO "area" VALUES('EPSG','3232','Costa Rica - onshore','Costa Rica - onshore.',7.98,11.22,-85.97,-82.53,0); +INSERT INTO "area" VALUES('EPSG','3233','Cote d''Ivoire (Ivory Coast) - onshore','Côte d''Ivoire (Ivory Coast) - onshore.',4.29,10.74,-8.61,-2.48,0); +INSERT INTO "area" VALUES('EPSG','3234','Croatia - onshore','Croatia - onshore.',42.34,46.54,13.43,19.43,0); +INSERT INTO "area" VALUES('EPSG','3235','Cuba - onshore','Cuba - onshore.',19.77,23.25,-85.01,-74.07,0); +INSERT INTO "area" VALUES('EPSG','3236','Cyprus - onshore','Cyprus - onshore.',34.59,35.74,32.2,34.65,0); +INSERT INTO "area" VALUES('EPSG','3237','Denmark - onshore','Denmark - onshore.',54.51,57.8,8.0,15.24,0); +INSERT INTO "area" VALUES('EPSG','3238','Djibouti - onshore','Djibouti - onshore.',10.94,12.72,41.75,43.48,0); +INSERT INTO "area" VALUES('EPSG','3239','Dominica - onshore','Dominica - onshore.',15.14,15.69,-61.55,-61.2,0); +INSERT INTO "area" VALUES('EPSG','3240','Dominican Republic - onshore','Dominican Republic - onshore.',17.55,19.99,-72.01,-68.27,0); +INSERT INTO "area" VALUES('EPSG','3241','Ecuador - mainland onshore','Ecuador - mainland - onshore.',-5.01,1.45,-81.03,-75.21,0); +INSERT INTO "area" VALUES('EPSG','3242','Egypt - onshore','Egypt - onshore.',21.97,31.68,24.7,36.95,0); +INSERT INTO "area" VALUES('EPSG','3243','El Salvador - onshore','El Salvador - onshore.',13.1,14.44,-90.11,-87.69,0); +INSERT INTO "area" VALUES('EPSG','3244','Equatorial Guinea - onshore','Equatorial Guinea - onshore.',0.93,3.82,8.37,11.36,0); +INSERT INTO "area" VALUES('EPSG','3245','Eritrea - onshore','Eritrea - onshore.',12.36,18.01,36.44,43.18,0); +INSERT INTO "area" VALUES('EPSG','3246','Estonia - onshore','Estonia - onshore.',57.52,59.75,21.74,28.2,0); +INSERT INTO "area" VALUES('EPSG','3247','Falkland Islands - onshore','Falkland Islands (Malvinas) - onshore.',-52.51,-50.96,-61.54,-57.61,0); +INSERT INTO "area" VALUES('EPSG','3248','Faroe Islands - onshore','Faroe Islands - onshore.',61.33,62.41,-7.49,-6.33,0); +INSERT INTO "area" VALUES('EPSG','3249','Gabon - onshore','Gabon - onshore.',-3.98,2.32,8.65,14.52,0); +INSERT INTO "area" VALUES('EPSG','3250','Gambia - onshore','Gambia - onshore.',13.05,13.83,-16.88,-13.79,0); +INSERT INTO "area" VALUES('EPSG','3251','Georgia - onshore','Georgia - onshore.',41.04,43.59,39.99,46.72,0); +INSERT INTO "area" VALUES('EPSG','3252','Ghana - onshore','Ghana - onshore.',4.67,11.16,-3.25,1.23,0); +INSERT INTO "area" VALUES('EPSG','3253','Gibraltar - onshore','Gibraltar - onshore.',36.07,36.16,-5.42,-5.27,0); +INSERT INTO "area" VALUES('EPSG','3254','Greece - onshore','Greece - onshore.',34.88,41.75,19.57,28.3,0); +INSERT INTO "area" VALUES('EPSG','3255','Guam - onshore','Guam - onshore.',13.18,13.7,144.58,145.01,0); +INSERT INTO "area" VALUES('EPSG','3256','Guatemala - onshore','Guatemala - onshore.',13.69,17.83,-92.29,-88.19,0); +INSERT INTO "area" VALUES('EPSG','3257','Guinea - onshore','Guinea - onshore.',7.19,12.68,-15.13,-7.65,0); +INSERT INTO "area" VALUES('EPSG','3258','Guinea-Bissau - onshore','Guinea-Bissau - onshore.',10.87,12.69,-16.77,-13.64,0); +INSERT INTO "area" VALUES('EPSG','3259','Guyana - onshore','Guyana - onshore.',1.18,8.58,-61.39,-56.47,0); +INSERT INTO "area" VALUES('EPSG','3260','Haiti - onshore','Haiti - onshore.',17.97,20.15,-74.52,-71.62,0); +INSERT INTO "area" VALUES('EPSG','3261','Honduras - onshore','Honduras - onshore.',12.98,16.49,-89.36,-83.08,0); +INSERT INTO "area" VALUES('EPSG','3262','Iceland - onshore','Iceland - onshore.',63.34,66.59,-24.66,-13.38,0); +INSERT INTO "area" VALUES('EPSG','3263','Japan - onshore mainland','Japan - onshore mainland - Hokkaido, Honshu, Shikoku, Kyushu.',30.94,45.54,129.3,145.87,0); +INSERT INTO "area" VALUES('EPSG','3264','Kenya - onshore','Kenya - onshore.',-4.72,4.63,33.9,41.91,0); +INSERT INTO "area" VALUES('EPSG','3265','Korea, Democratic People''s Republic of (North Korea) - onshore','Democratic People''s Republic of Korea (North Korea) - onshore.',37.62,43.01,124.27,130.75,0); +INSERT INTO "area" VALUES('EPSG','3266','Korea, Republic of (South Korea) - onshore','Republic of Korea (South Korea) - onshore.',33.14,38.64,124.53,131.01,0); +INSERT INTO "area" VALUES('EPSG','3267','Kuwait - onshore','Kuwait - onshore.',28.53,30.09,46.54,48.48,0); +INSERT INTO "area" VALUES('EPSG','3268','Latvia - onshore','Latvia - onshore.',55.67,58.09,20.87,28.24,0); +INSERT INTO "area" VALUES('EPSG','3269','Lebanon - onshore','Lebanon - onshore.',33.06,34.65,35.04,36.63,0); +INSERT INTO "area" VALUES('EPSG','3270','Liberia - onshore','Liberia - onshore.',4.29,8.52,-11.52,-7.36,0); +INSERT INTO "area" VALUES('EPSG','3271','Libya - onshore','Libya - onshore.',19.49,33.23,9.31,25.21,0); +INSERT INTO "area" VALUES('EPSG','3272','Lithuania - onshore','Lithuania - onshore.',53.89,56.45,20.86,26.82,0); +INSERT INTO "area" VALUES('EPSG','3273','Madagascar - onshore','Madagascar - onshore.',-25.64,-11.89,43.18,50.56,0); +INSERT INTO "area" VALUES('EPSG','3274','Maldives - onshore','Maldives - onshore.',-0.69,7.08,72.81,73.69,0); +INSERT INTO "area" VALUES('EPSG','3275','Malta - onshore','Malta - onshore.',35.74,36.05,14.27,14.63,0); +INSERT INTO "area" VALUES('EPSG','3276','Martinique - onshore','Martinique - onshore.',14.35,14.93,-61.29,-60.76,0); +INSERT INTO "area" VALUES('EPSG','3277','Mauritania - onshore','Mauritania - onshore.',14.72,27.3,-17.08,-4.8,0); +INSERT INTO "area" VALUES('EPSG','3278','Mexico - onshore','Mexico - onshore.',14.51,32.72,-118.47,-86.68,0); +INSERT INTO "area" VALUES('EPSG','3279','Montserrat - onshore','Montserrat - onshore.',16.62,16.87,-62.29,-62.08,0); +INSERT INTO "area" VALUES('EPSG','3280','Morocco - onshore','Morocco - onshore.',27.66,35.97,-13.24,-1.01,0); +INSERT INTO "area" VALUES('EPSG','3281','Mozambique - onshore','Mozambique - onshore.',-26.87,-10.42,30.21,40.9,0); +INSERT INTO "area" VALUES('EPSG','3282','Myanmar (Burma) - onshore','Myanmar (Burma) - onshore.',9.78,28.55,92.2,101.17,0); +INSERT INTO "area" VALUES('EPSG','3283','Namibia - onshore','Namibia - onshore.',-28.97,-16.95,11.66,25.27,0); +INSERT INTO "area" VALUES('EPSG','3284','Netherlands - onshore','Netherlands - onshore.',50.78,53.6,3.33,7.3,1); +INSERT INTO "area" VALUES('EPSG','3285','New Zealand - onshore and nearshore','New Zealand - North Island, South Island, Stewart Island - onshore and nearshore.',-47.65,-33.89,165.87,179.27,0); +INSERT INTO "area" VALUES('EPSG','3286','Nicaragua - onshore','Nicaragua - onshore.',10.7,15.03,-87.74,-83.08,0); +INSERT INTO "area" VALUES('EPSG','3287','Nigeria - onshore','Nigeria - onshore.',4.22,13.9,2.69,14.65,0); +INSERT INTO "area" VALUES('EPSG','3288','Oman - onshore','Oman - onshore. Includes Musandam and the Kuria Muria (Al Hallaniyah) islands.',16.59,26.58,51.99,59.91,0); +INSERT INTO "area" VALUES('EPSG','3289','Pakistan - onshore','Pakistan - onshore.',23.64,37.07,60.86,77.83,0); +INSERT INTO "area" VALUES('EPSG','3290','Panama - onshore','Panama - onshore.',7.15,9.68,-83.04,-77.19,0); +INSERT INTO "area" VALUES('EPSG','3291','Papua New Guinea - onshore','Papua New Guinea - onshore.',-11.7,-1.3,140.85,156.02,0); +INSERT INTO "area" VALUES('EPSG','3292','Peru - onshore','Peru - onshore.',-18.35,-0.03,-81.41,-68.67,0); +INSERT INTO "area" VALUES('EPSG','3293','Poland - onshore','Poland - onshore.',49.0,54.89,14.14,24.15,0); +INSERT INTO "area" VALUES('EPSG','3294','Puerto Rico - onshore','Puerto Rico - onshore.',17.87,18.57,-67.97,-65.19,0); +INSERT INTO "area" VALUES('EPSG','3295','Romania - onshore','Romania - onshore.',43.62,48.27,20.26,29.74,0); +INSERT INTO "area" VALUES('EPSG','3296','Russia - onshore','Russian Federation - onshore.',41.19,81.91,19.58,-168.97,0); +INSERT INTO "area" VALUES('EPSG','3297','St Kitts and Nevis - onshore','St Kitts and Nevis - onshore.',17.06,17.46,-62.92,-62.5,0); +INSERT INTO "area" VALUES('EPSG','3298','St Lucia - onshore','St Lucia - onshore.',13.66,14.16,-61.13,-60.82,0); +INSERT INTO "area" VALUES('EPSG','3299','St Pierre and Miquelon - onshore','St Pierre and Miquelon - onshore.',46.69,47.19,-56.48,-56.07,0); +INSERT INTO "area" VALUES('EPSG','3300','St Vincent and the Grenadines - onshore','St Vincent and the northern Grenadine Islands - onshore.',12.54,13.44,-61.52,-61.07,0); +INSERT INTO "area" VALUES('EPSG','3301','Samoa - onshore','Samoa - onshore.',-14.11,-13.41,-172.84,-171.37,0); +INSERT INTO "area" VALUES('EPSG','3302','Sao Tome and Principe - onshore','Sao Tome and Principe - onshore.',-0.04,1.76,6.41,7.52,0); +INSERT INTO "area" VALUES('EPSG','3303','Saudi Arabia - onshore','Saudi Arabia - onshore.',15.61,32.16,34.51,55.67,0); +INSERT INTO "area" VALUES('EPSG','3304','Senegal - onshore','Senegal - onshore.',12.29,16.7,-17.59,-11.36,0); +INSERT INTO "area" VALUES('EPSG','3305','Serbia and Montenegro - onshore','Serbia and Montenegro - onshore.',41.82,46.23,18.44,23.05,1); +INSERT INTO "area" VALUES('EPSG','3306','Sierra Leone - onshore','Sierra Leone - onshore.',6.88,10.0,-13.35,-10.26,0); +INSERT INTO "area" VALUES('EPSG','3307','Slovenia - onshore','Slovenia - onshore.',45.42,46.88,13.38,16.61,0); +INSERT INTO "area" VALUES('EPSG','3308','Somalia - onshore','Somalia - onshore.',-1.71,12.03,40.99,51.47,0); +INSERT INTO "area" VALUES('EPSG','3309','South Africa - onshore','South Africa - mainland onshore.',-34.88,-22.13,16.45,32.95,0); +INSERT INTO "area" VALUES('EPSG','3310','Sri Lanka - onshore','Sri Lanka - onshore.',5.86,9.88,79.64,81.95,0); +INSERT INTO "area" VALUES('EPSG','3311','Africa - South Sudan and Sudan onshore','South Sudan. Sudan - onshore.',3.49,22.24,21.82,38.66,0); +INSERT INTO "area" VALUES('EPSG','3312','Suriname - onshore','Suriname - onshore.',1.83,6.06,-58.08,-53.95,0); +INSERT INTO "area" VALUES('EPSG','3313','Sweden - onshore','Sweden - onshore.',55.28,69.07,10.93,24.17,0); +INSERT INTO "area" VALUES('EPSG','3314','Syria - onshore','Syria - onshore.',32.31,37.3,35.61,42.38,0); +INSERT INTO "area" VALUES('EPSG','3315','Taiwan - onshore','Taiwan, Republic of China - onshore - Taiwan Island, Penghu (Pescadores) Islands.',21.87,25.34,119.25,122.06,0); +INSERT INTO "area" VALUES('EPSG','3316','Tanzania - onshore','Tanzania - onshore.',-11.75,-0.99,29.34,40.48,0); +INSERT INTO "area" VALUES('EPSG','3317','Thailand - onshore','Thailand - onshore.',5.63,20.46,97.34,105.64,0); +INSERT INTO "area" VALUES('EPSG','3318','East Timor - onshore','Timor-Leste (East Timor) - onshore.',-9.5,-8.08,124.03,127.36,0); +INSERT INTO "area" VALUES('EPSG','3319','Togo - onshore','Togo - onshore.',6.05,11.14,-0.15,1.8,0); +INSERT INTO "area" VALUES('EPSG','3320','Tokelau - onshore','Tokelau - onshore.',-9.27,-9.12,-171.92,-171.79,0); +INSERT INTO "area" VALUES('EPSG','3321','Tonga - onshore','Tonga - onshore.',-21.32,-18.51,-175.42,-173.85,0); +INSERT INTO "area" VALUES('EPSG','3322','Turkey - onshore','Turkey - onshore.',35.81,42.15,25.62,44.83,0); +INSERT INTO "area" VALUES('EPSG','3323','Turks and Caicos Islands - onshore','Turks and Caicos Islands - onshore.',21.38,22.01,-72.09,-71.07,0); +INSERT INTO "area" VALUES('EPSG','3324','Ukraine - onshore','Ukraine - onshore.',44.32,52.38,22.15,40.18,0); +INSERT INTO "area" VALUES('EPSG','3325','UAE - onshore','United Arab Emirates (UAE) - onshore. Abu Dhabi, Dubai, Sharjah, Umm al Qaywayn, Al Fujairah, Ras al Khaymah.',22.63,26.1,51.56,56.44,0); +INSERT INTO "area" VALUES('EPSG','3326','Uruguay - onshore','Uruguay - onshore.',-35.0,-30.09,-58.49,-53.09,0); +INSERT INTO "area" VALUES('EPSG','3327','Venezuela - onshore','Venezuela - onshore.',0.64,12.25,-73.38,-59.8,0); +INSERT INTO "area" VALUES('EPSG','3328','Vietnam - onshore','Vietnam - onshore.',8.5,23.33,102.14,109.52,0); +INSERT INTO "area" VALUES('EPSG','3329','Virgin Islands, British - onshore','British Virgin Islands - onshore - Anegada, Jost Van Dyke, Tortola, and Virgin Gorda.',18.28,18.78,-64.88,-64.25,0); +INSERT INTO "area" VALUES('EPSG','3330','Virgin Islands, US - onshore','US Virgin Islands - onshore - St Croix, St John, and St Thomas.',17.62,18.44,-65.09,-64.51,0); +INSERT INTO "area" VALUES('EPSG','3331','Western Sahara - onshore','Western Sahara - onshore.',20.71,27.67,-17.16,-8.66,0); +INSERT INTO "area" VALUES('EPSG','3332','Yemen - onshore','Yemen - onshore.',12.09,19.0,41.8,54.53,0); +INSERT INTO "area" VALUES('EPSG','3333','Finland - onshore','Finland - onshore.',59.75,70.09,19.24,31.59,0); +INSERT INTO "area" VALUES('EPSG','3334','China - Hong Kong - onshore','China - Hong Kong - onshore.',22.19,22.56,113.82,114.39,0); +INSERT INTO "area" VALUES('EPSG','3335','China - Hong Kong - offshore','China - Hong Kong - offshore.',22.13,22.58,113.76,114.51,0); +INSERT INTO "area" VALUES('EPSG','3336','Iran - onshore','Iran - onshore.',25.02,39.78,44.03,63.34,0); +INSERT INTO "area" VALUES('EPSG','3337','Reunion - onshore','Reunion - onshore.',-21.42,-20.81,55.16,55.91,0); +INSERT INTO "area" VALUES('EPSG','3338','New Zealand - Stewart Island','New Zealand - Stewart Island.',-47.33,-46.63,167.29,168.34,0); +INSERT INTO "area" VALUES('EPSG','3339','Germany - onshore','Germany - onshore - states of Baden-Wurtemberg, Bayern, Berlin, Brandenburg, Bremen, Hamburg, Hessen, Mecklenburg-Vorpommern, Niedersachsen, Nordrhein-Westfalen, Rheinland-Pfalz, Saarland, Sachsen, Sachsen-Anhalt, Schleswig-Holstein, Thuringen.',47.27,55.09,5.86,15.04,0); +INSERT INTO "area" VALUES('EPSG','3340','Mayotte - onshore','Mayotte - onshore.',-13.05,-12.61,44.98,45.35,0); +INSERT INTO "area" VALUES('EPSG','3341','India - mainland','India - mainland onshore.',8.02,35.51,68.13,97.42,0); +INSERT INTO "area" VALUES('EPSG','3342','Jamaica - onshore','Jamaica - onshore.',17.64,18.58,-78.43,-76.17,0); +INSERT INTO "area" VALUES('EPSG','3343','Italy - including San Marino and Vatican','Italy - onshore and offshore; San Marino, Vatican City State.',34.76,47.1,5.93,18.99,0); +INSERT INTO "area" VALUES('EPSG','3344','New Zealand - South and Stewart Islands','New Zealand - South Island, Stewart Island.',-47.33,-40.44,166.37,174.46,0); +INSERT INTO "area" VALUES('EPSG','3345','Slovenia - Ljubljana east','Slovenia - eastern part of the Ljubljana region with the Kamnik-Domzale area.',45.85,46.32,14.45,15.01,0); +INSERT INTO "area" VALUES('EPSG','3346','Slovenia - Prekmurje','Slovenia - Prekmurje (the Transmuraland).',46.47,46.88,15.98,16.61,0); +INSERT INTO "area" VALUES('EPSG','3347','Slovenia - Novo Mesto','Slovenia - Novo Mesto with the Gorjanci.',45.66,45.87,15.06,15.47,0); +INSERT INTO "area" VALUES('EPSG','3348','Slovenia - Gorenjska - upper','Slovenia - upper Gorenjska (Upper Carniola) with the Baca Valley and part of the Cerkno Mountains.',46.09,46.53,13.7,14.18,0); +INSERT INTO "area" VALUES('EPSG','3349','Slovenia - Ljubliana west','Slovenia - western part of the Ljubljana region with part of Skofja Loka Hills and the Idrija-Cerklje region.',45.86,46.21,13.95,14.52,0); +INSERT INTO "area" VALUES('EPSG','3350','Slovenia - Notranjska','Slovenia - Notranjska (Inner Carniola) with parts of the Karst and the Brkini Hills.',45.47,45.88,14.08,14.59,0); +INSERT INTO "area" VALUES('EPSG','3351','Slovenia - Kocevje','Slovenia - Kocevje with the Kocevski Forest and Gotenica Mountain.',45.46,45.76,14.6,15.12,0); +INSERT INTO "area" VALUES('EPSG','3352','Slovenia - Koroska','Slovenia - Koroska Region (Slovene Carinthia).',46.46,46.66,14.83,15.51,0); +INSERT INTO "area" VALUES('EPSG','3353','Slovenia - Velenje','Slovenia - Velenje with part of Koroska Region (Slovene Carinthia).',46.28,46.51,14.9,15.26,0); +INSERT INTO "area" VALUES('EPSG','3354','Slovenia - Zasavje','Slovenia - Zasavje (the Sava Valley) with the broad region of Celje.',46.0,46.32,14.84,15.35,0); +INSERT INTO "area" VALUES('EPSG','3355','Brazil - south of 18°S and west of 54°W','Brazil - onshore south of 18°S and west of 54°W.',-31.91,-17.99,-58.16,-54.0,0); +INSERT INTO "area" VALUES('EPSG','3356','South America - Brazil - south of 18°S and west of 54°W + DF; N Paraguay','Brazil - south of 18°S and west of 54°W, plus Distrito Federal. Paraguay - north.',-31.91,-15.37,-62.57,-47.1,0); +INSERT INTO "area" VALUES('EPSG','3357','USA - GoM OCS','United States (USA) - offshore Gulf of Mexico outer continental shelf (GoM OCS) - protraction areas South Padre Island; North Padre Island; Mustang Island; Matagorda Island; Brazos; Galveston; High Island; Sabine Pass; West Cameron; East Cameron; Vermilion; South Marsh Island; Eugene Island; Ship Shoal; South Pelto; Bay Marchand; South Timbalier; Grand Isle; West Delta; South Pass; Main Pass; Breton Sound; Chandeleur; Corpus Christi; Port Isabel; East Breaks; Alaminos Canyon; Garden Banks; Keathley Canyon; Sigsbee Escarpment; Ewing Bank; Green Canyon; Walker Ridge; Amery Terrace; Mobile; Viosca Knoll; Mississippi Canyon; Atwater Valley; Lund; Lund South; Pensacola; Destin Dome; De Soto Canyon; Lloyd Ridge; Henderson; Florida Plain; Campeche Escarpment; Apalachicola; Florida Middle Ground; The Elbow; Vernon Basin; Howell Hook; Rankin; Gainesville; Tarpon Springs; St Petersburg; Charlotte Harbor; Pulley Ridge; Dry Tortugas; Tortugas Valley; Miami; Key West.',23.82,30.25,-97.22,-81.17,0); +INSERT INTO "area" VALUES('EPSG','3358','USA - GoM - east of 87.25°W','United States (USA) - offshore Gulf of Mexico (GoM) east of approximately 87°15''W - protraction areas Gainesville, Tarpon Springs, St Petersburg, Charlotte Harbor, Pulley Ridge, Dry Tortugas, Tortugas Valley, Miami, Key West, Apalachicola, Florida Middle Ground, The Elbow, Vernon Basin, Howell Hook, Rankin and Campeche Escarpment. Also for protraction areas Pensacola, Destin Dome, Desoto Canyon, Lloyd Ridge, Henderson and Florida Plain - east of 87°15''W.',23.82,30.25,-87.25,-81.17,0); +INSERT INTO "area" VALUES('EPSG','3359','USA - GoM - 95°W to 87.25°W','United States (USA) - offshore Gulf of Mexico (GoM) between approximately 95°W and 87°15''W - protraction areas High Island (including all additions and extensions), Sabine Pass, West Cameron (including west and south additions), East Cameron (including south addition), Vermillion (including south addition), South Marsh Island (including north and south additions), Eugene Island (including south addition), Ship Shoal (including south addition), South Timbalier (including south addition), Grand Isle (including south addition), West Delta (including south addition), South Pass (including south and east additions), Main Pass (including south and east addition), Breton Sound, Chandeleur (including east addition), Mobile, Viosca Knoll, Mississippi Canyon, Atwater Valley, Lund, Lund South, Ewing Bank, Green Canyon, Walker Ridge, Amery Terrace, Garden Banks, Keathley Canyon and Sigsbee Escarpment. Also for protraction areas Galveston (including south addition), East Breaks and Aliminos Canyon - east of 95°W; for protraction areas Pensacola, Destin Dome, Desoto Canyon, Lloyd Ridge, Henderson and Florida Plain - west of 87°15''W.',25.61,30.23,-95.0,-87.25,0); +INSERT INTO "area" VALUES('EPSG','3360','USA - GoM - west of 95°W','United States (USA) - offshore Gulf of Mexico (GoM) west of approximately 95°W - protraction areas Brazos (including south addition), Matagorda Island, Mustang Island (including east addition); North Padre Island (including east addition), South Padre Island (including east addition), Corpus Christi and Port Isabel. Also protraction areas Galveston (including south addition), East Breaks and Aliminos Canyon - west of 95°W.',25.97,28.97,-97.22,-95.0,0); +INSERT INTO "area" VALUES('EPSG','3361','Mexico - offshore GoM - Tampico area','Mexico - offshore Gulf of Mexico (GoM) - Tampico area.',21.51,22.75,-98.1,-96.89,0); +INSERT INTO "area" VALUES('EPSG','3362','Greenland - west coast','Greenland - west coast onshore.',59.74,79.0,-73.29,-42.52,0); +INSERT INTO "area" VALUES('EPSG','3363','Greenland - west coast - 63°N to 66°N','Greenland - west coast onshore - between 63°N and 66°N.',63.0,66.0,-53.7,-49.17,0); +INSERT INTO "area" VALUES('EPSG','3364','Greenland - west coast - 66°N to 69°N','Greenland - west coast onshore - between 66°N and 69°N.',66.0,69.0,-54.09,-49.4,0); +INSERT INTO "area" VALUES('EPSG','3365','Greenland - west coast - 69°N to 72°N','Greenland - west coast onshore - between 69°N and 72°N.',69.0,72.0,-56.06,-49.11,0); +INSERT INTO "area" VALUES('EPSG','3366','Greenland - west coast - 72°N to 75°N','Greenland - west coast onshore - between 72°N and 75°N.',72.0,75.0,-58.21,-52.02,0); +INSERT INTO "area" VALUES('EPSG','3367','Greenland - west coast - 75°N to 78°N','Greenland - west coast - between 75°N and 78°N.',75.0,78.0,-72.79,-56.31,0); +INSERT INTO "area" VALUES('EPSG','3368','Greenland - west coast - 78°N to 79°N','Greenland - west coast onshore - between 78°N and 79°N.',78.0,79.0,-73.29,-65.24,0); +INSERT INTO "area" VALUES('EPSG','3369','Greenland - east coast - 68°N to 69°N','Greenland - east coast onshore - between 68°N and 69°N.',68.66,69.0,-26.99,-25.14,0); +INSERT INTO "area" VALUES('EPSG','3370','Greenland - east coast - 69°N to 72°N','Greenland - east coast onshore - between 69°N and 72°N.',69.0,72.0,-29.69,-21.32,0); +INSERT INTO "area" VALUES('EPSG','3371','Greenland - east coast - 72°N to 75°N','Greenland - east coast onshore - between 72°N and 75°N.',72.0,74.58,-29.15,-19.89,0); +INSERT INTO "area" VALUES('EPSG','3372','USA - west of 174°E - AK, OCS','United States (USA) - west of 174°E. Alaska and offshore continental shelf (OCS).',49.01,56.28,167.65,174.01,0); +INSERT INTO "area" VALUES('EPSG','3373','USA - 174°E to 180°E - AK, OCS','United States (USA) - between 174°E and 180°E - Alaska and offshore continental shelf (OCS).',47.92,56.67,174.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','3374','USA - 180°W to 174°W - AK, OCS','United States (USA) - between 180°W and 174°W - Alaska and offshore continental shelf (OCS).',47.88,63.21,-180.0,-173.99,0); +INSERT INTO "area" VALUES('EPSG','3375','USA - 174°W to 168°W - AK, OCS','United States (USA) - between 174°W and 168°W - Alaska and offshore continental shelf (OCS).',48.66,73.05,-174.0,-167.99,0); +INSERT INTO "area" VALUES('EPSG','3376','Malaysia - West Malaysia - Johor','Malaysia - West Malaysia - Johor.',1.21,2.95,102.44,104.6,0); +INSERT INTO "area" VALUES('EPSG','3377','Malaysia - West Malaysia - Sembilan and Melaka','Malaysia - West Malaysia - Negeri Sembilan and Melaka.',2.03,3.28,101.7,102.71,0); +INSERT INTO "area" VALUES('EPSG','3378','Malaysia - West Malaysia - Pahang','Malaysia - West Malaysia - Pahang.',2.45,4.78,101.33,103.67,0); +INSERT INTO "area" VALUES('EPSG','3379','Malaysia - West Malaysia - Selangor','Malaysia - West Malaysia - Selangor.',2.54,3.87,100.76,101.97,0); +INSERT INTO "area" VALUES('EPSG','3380','Malaysia - West Malaysia - Terengganu','Malaysia - West Malaysia - Terengganu.',3.89,5.9,102.38,103.72,0); +INSERT INTO "area" VALUES('EPSG','3381','Malaysia - West Malaysia - Pulau Pinang','Malaysia - West Malaysia - Pulau Pinang - Pinang (Penang) Island and Seberang Perai (Province Wellesley).',5.12,5.59,100.12,100.56,0); +INSERT INTO "area" VALUES('EPSG','3382','Malaysia - West Malaysia - Kedah and Perlis','Malaysia - West Malaysia - Kedah and Perlis.',5.08,6.72,99.59,101.12,0); +INSERT INTO "area" VALUES('EPSG','3383','Malaysia - West Malaysia - Perak','Malaysia - West Malaysia - Perak.',3.66,5.92,100.07,102.0,0); +INSERT INTO "area" VALUES('EPSG','3384','Malaysia - West Malaysia - Kelantan','Malaysia - West Malaysia - Kelantan.',4.54,6.29,101.33,102.67,0); +INSERT INTO "area" VALUES('EPSG','3385','Finland - east of 31.5°E','Finland - east of 31°30''E.',62.83,63.0,31.5,31.59,0); +INSERT INTO "area" VALUES('EPSG','3386','Asia - Middle East - Iraq and Kuwait 42°E to 48°E','Iraq - between 42°E and 48°E. Kuwait - west of 48°E.',28.53,37.39,42.0,48.0,1); +INSERT INTO "area" VALUES('EPSG','3387','Iraq - west of 42°E','Iraq - west of 42°E.',31.14,36.75,38.79,42.0,0); +INSERT INTO "area" VALUES('EPSG','3388','Iraq - 42°E to 48°E','Iraq - between 42°E and 48°E.',29.06,37.39,42.0,48.0,0); +INSERT INTO "area" VALUES('EPSG','3389','Iraq - east of 48°E onshore','Iraq - onshore east of 48°E.',29.87,31.0,48.0,48.61,0); +INSERT INTO "area" VALUES('EPSG','3390','Asia - Middle East -SE Iraq and SW Iran','Iraq - onshore southeast; Iran - onshore northern Gulf coast and west bordering southeast Iraq.',29.06,33.5,44.3,51.06,0); +INSERT INTO "area" VALUES('EPSG','3391','World - between 80°S and 84°N','World between 80°S and 84°N.',-80.0,84.0,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','3392','Germany - Thuringen - west of 10.5°E','Germany - Thuringen - west of 10°30''E.',50.35,51.56,9.92,10.5,0); +INSERT INTO "area" VALUES('EPSG','3393','Germany - Thuringen - east of 10.5°E','Germany - Thuringen - east of 10°30''E.',50.2,51.64,10.5,12.56,0); +INSERT INTO "area" VALUES('EPSG','3394','Germany - Saxony - east of 13.5°E','Germany - Sachsen - east of 13°30''E.',50.62,51.58,13.5,15.04,0); +INSERT INTO "area" VALUES('EPSG','3395','Germany - Saxony - west of 13.5°E','Germany - Sachsen - west of 13°30''E.',50.2,51.66,11.89,13.51,0); +INSERT INTO "area" VALUES('EPSG','3396','Germany - Mecklenburg-Vorpommern and Sachsen-Anhalt','Germany - Mecklenburg-Vorpommern and Sachsen-Anhalt.',50.94,53.05,10.54,14.43,1); +INSERT INTO "area" VALUES('EPSG','3397','Iraq - Basra area','Iraq - Basra area.',29.87,31.09,46.46,48.61,0); +INSERT INTO "area" VALUES('EPSG','3398','Fiji - main islands','Fiji - onshore - Vanua Levu, Taveuni, Viti Levu and and immediately adjacent smaller islands of Yasawa and Kandavu groups.',-19.22,-16.1,176.81,-179.77,0); +INSERT INTO "area" VALUES('EPSG','3399','Fiji - main islands - west of 180°','Fiji - onshore west of 180° - Vanua Levu, Taveuni, Viti Levu and and immediately adjacent smaller islands of Yasawa and Kandavu groups.',-19.22,-16.1,176.81,180.0,0); +INSERT INTO "area" VALUES('EPSG','3400','Fiji - main islands - east of 180°','Fiji - onshore east of 180° - Vanua Levu, Taveuni.',-17.04,-16.1,-180.0,-179.77,0); +INSERT INTO "area" VALUES('EPSG','3401','Fiji - Vanua Levu and Taveuni','Fiji - Vanua Levu and Taveuni.',-17.07,-16.1,178.42,-179.77,0); +INSERT INTO "area" VALUES('EPSG','3402','Algeria - Hassi Mouina licence area','Algeria - Hassi Mouina licence area.',29.25,31.0,0.0,1.25,0); +INSERT INTO "area" VALUES('EPSG','3403','Russia - west of 19.5°E','Russian Federation - Kaliningrad - west of 19°30''E.',54.32,55.3,19.2,19.5,1); +INSERT INTO "area" VALUES('EPSG','3404','North America - 120°W to 114°W and NAD83 by country','North America - between 120°W and 114°W - onshore and offshore. Canada - Alberta; British Columbia; Northwest Territories; Nunavut. United States (USA) - California; Idaho; Nevada, Oregon; Washington.',30.88,83.5,-120.0,-114.0,0); +INSERT INTO "area" VALUES('EPSG','3405','North America - 114°W to 108°W and NAD83 by country','North America - between 114°W and 108°W - onshore and offshore. Canada - Alberta; Northwest Territories; Nunavut; Saskatchewan. United States (USA) - Arizona; Colorado; Idaho; Montana; New Mexico; Utah; Wyoming.',31.33,84.0,-114.0,-108.0,0); +INSERT INTO "area" VALUES('EPSG','3406','North America - 108°W to 102°W and NAD83 by country','North America - between 108°W and 102°W - onshore and offshore. Canada - Northwest Territories; Nunavut; Saskatchewan. United States (USA) - Colorado; Montana; Nebraska; New Mexico; North Dakota; Oklahoma; South Dakota; Texas; Wyoming.',28.98,84.0,-108.0,-102.0,0); +INSERT INTO "area" VALUES('EPSG','3407','North America - 102°W to 96°W and NAD83 by country','North America - between 102°W and 96°W - onshore and offshore. Canada - Manitoba; Nunavut; Saskatchewan. United States (USA) - Iowa; Kansas; Minnesota; Nebraska; North Dakota; Oklahoma; South Dakota; Texas.',25.83,84.0,-102.0,-96.0,0); +INSERT INTO "area" VALUES('EPSG','3408','Sweden - Stockholm','Sweden - Stockholm commune.',59.22,59.43,17.75,18.2,0); +INSERT INTO "area" VALUES('EPSG','3409','Canada - 144°W to 138°W','Canada west of 138°W, onshore and offshore south of 84°N - British Columbia, Yukon.',52.05,72.53,-141.01,-138.0,0); +INSERT INTO "area" VALUES('EPSG','3410','Canada - 138°W to 132°W','Canada between 138°W and 132°W, onshore and offshore south of 84°N - British Columbia, Northwest Territories, Yukon.',48.06,79.42,-138.0,-132.0,0); +INSERT INTO "area" VALUES('EPSG','3411','Canada - 132°W to 126°W','Canada - between 132°W and 126°W, onshore and offshore south of 84°N - British Columbia, Northwest Territories, Yukon.',46.52,80.93,-132.0,-126.0,0); +INSERT INTO "area" VALUES('EPSG','3412','Canada - 126°W to 120°W','Canada between 126°W and 120°W, onshore and offshore south of 84°N - British Columbia, Northwest Territories, Yukon.',48.13,81.8,-126.0,-120.0,0); +INSERT INTO "area" VALUES('EPSG','3413','Canada - 102°W to 96°W','Canada between 102°W and 96°W, onshore and offshore south of 84°N - Manitoba, Nunavut, Saskatchewan.',48.99,84.0,-102.0,-96.0,0); +INSERT INTO "area" VALUES('EPSG','3414','Canada - 96°W to 90°W','Canada between 96°W and 90°W, onshore and offshore south of 84°N - Manitoba, Nunavut, Ontario.',48.03,84.0,-96.0,-90.0,0); +INSERT INTO "area" VALUES('EPSG','3415','Canada - 90°W to 84°W','Canada between 90°W and 84°W, onshore and offshore south of 84°N - Manitoba, Nunavut, Ontario.',46.11,84.0,-90.0,-84.0,0); +INSERT INTO "area" VALUES('EPSG','3416','Canada - 84°W to 78°W','Canada between 84°W and 78°W, onshore and offshore south of 84°N - Nunavut, Ontario and Quebec.',41.67,84.0,-84.0,-78.0,0); +INSERT INTO "area" VALUES('EPSG','3417','Canada - 78°W to 72°W','Canada between 78°W and 72°W, onshore and offshore south of 84°N - Nunavut, Ontario and Quebec.',43.63,84.0,-78.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','3418','Latin America - SIRGAS 2000 by country','Central America and South America, onshore and offshore. Brazil - onshore and offshore.',-59.87,32.72,-122.19,-25.28,0); +INSERT INTO "area" VALUES('EPSG','3419','North America - 72°W to 66°W and NAD83 by country','North America - between 72°W and 66°W - onshore and offshore. Canada - Labrador; New Brunswick; Nova Scotia; Nunavut; Quebec. Puerto Rico. United States (USA) - Connecticut; Maine; Massachusetts; New Hampshire; New York (Long Island); Rhode Island; Vermont.',14.92,84.0,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','3420','North America - 66°W to 60°W and NAD83 by country','North America - between 66°W and 60°W - onshore and offshore. British Virgin Islands. Canada - New Brunswick; Labrador; Nunavut; Prince Edward Island; Quebec. Puerto Rico. US Virgin Islands. United States (USA) offshore Atlantic.',15.63,84.0,-66.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','3421','Latin America - 84°W to 78°West; N hemisphere and SIRGAS by country','Central America and South America, between 84°W and 78°W, northern hemisphere, onshore and offshore.',0.0,19.54,-84.0,-78.0,0); +INSERT INTO "area" VALUES('EPSG','3422','Latin America - 78°W to 72°West; N hemisphere and SIRGAS by country','Central America and South America, between 78°W and 72°W, northern hemisphere, onshore and offshore.',0.0,15.04,-78.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','3423','Mexico - west of 114°W','Mexico west of 114°W, onshore and offshore.',15.01,32.72,-122.19,-114.0,0); +INSERT INTO "area" VALUES('EPSG','3424','Mexico - 114°W to 108°W','Mexico between 114°W and 108°W, onshore and offshore.',15.09,32.27,-114.0,-108.0,0); +INSERT INTO "area" VALUES('EPSG','3425','Mexico - 108°W to 102°W','Mexico between 108°W and 102°W, onshore and offshore.',14.05,31.79,-108.0,-102.0,0); +INSERT INTO "area" VALUES('EPSG','3426','Mexico - 102°W to 96°W','Mexico between 102°W and 96°W, onshore and offshore.',12.3,29.81,-102.0,-96.0,0); +INSERT INTO "area" VALUES('EPSG','3427','Latin America - 96°W to 90°W; N hemisphere and SIRGAS 2000 by country','Central America and South America, between 96°W and 90°W, northern hemisphere, onshore and offshore.',0.0,26.0,-96.0,-90.0,0); +INSERT INTO "area" VALUES('EPSG','3428','Latin America - 90°W to 84°W; N hemisphere and SIRGAS 2000 by country','Central America and South America, between 90°W and 84°W, northern hemisphere, onshore and offshore.',0.0,25.77,-90.0,-83.99,0); +INSERT INTO "area" VALUES('EPSG','3429','Spain - mainland and Balearic Islands onshore','Spain - mainland, Balearic Islands, Ceuta and Melila - onshore.',35.26,43.82,-9.37,4.39,0); +INSERT INTO "area" VALUES('EPSG','3430','New Caledonia - Belep, Grande Terre, Ile des Pins, Loyalty Islands','New Caledonia - Belep, Grande Terre, Ile des Pins, Loyalty Islands (Lifou, Mare, Ouvea).',-22.73,-19.5,163.54,168.19,0); +INSERT INTO "area" VALUES('EPSG','3431','New Caledonia - west of 162°E','New Caledonia - west of 162°E onshore and offshore.',-26.03,-15.34,156.25,162.01,0); +INSERT INTO "area" VALUES('EPSG','3432','New Caledonia - 162°E to 168°E','New Caledonia - between 162°E and 168°E onshore and offshore.',-26.45,-14.83,162.0,168.0,0); +INSERT INTO "area" VALUES('EPSG','3433','New Caledonia - east of 168°E','New Caledonia - east of 168°E onshore and offshore.',-25.95,-19.75,168.0,174.28,0); +INSERT INTO "area" VALUES('EPSG','3434','New Caledonia - Mare - west of 168°E','New Caledonia - Loyalty Islands - Mare - west of 168°E.',-21.71,-21.32,167.75,168.0,0); +INSERT INTO "area" VALUES('EPSG','3435','New Caledonia - Mare - east of 168°E','New Caledonia - Loyalty Islands - Mare - east of 168°E.',-21.71,-21.35,168.0,168.19,0); +INSERT INTO "area" VALUES('EPSG','3436','South America - 72°W to 66°W, N hemisphere and SIRGAS 2000 by country','South America between 72°W and 66°W and north of approximately 2°N, onshore and offshore.',0.0,15.64,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','3437','South America - 66°W to 60°W, N hemisphere and SIRGAS 2000 by country','South America between 66°W and 60°W, north of approximately 4°N, onshore and offshore.',0.64,16.75,-66.0,-59.99,0); +INSERT INTO "area" VALUES('EPSG','3438','South America - 60°W to 54°W, N hemisphere and SIRGAS 2000 by country','South America between 60°W and 54°W, north of approximately 2°N, onshore and offshore.',1.18,12.19,-60.0,-54.0,0); +INSERT INTO "area" VALUES('EPSG','3439','South America - 54°W to 48°W, N hemisphere and SIRGAS 2000 by country','South America between 54°W and 48°W, northern hemisphere, onshore and offshore except Brazil where offshore only.',0.0,9.24,-54.0,-47.99,0); +INSERT INTO "area" VALUES('EPSG','3440','South America - 78°W to 72°W, S hemisphere and SIRGAS 2000 by country','Brazil west of 72°W. In remainder of South America, between 78°W and 72°W, southern hemisphere, onshore and offshore.',-59.36,0.0,-78.0,-71.99,0); +INSERT INTO "area" VALUES('EPSG','3441','South America - 72°W to 66°W, S hemisphere and SIRGAS 2000 by country','Brazil - between 72°W and 66°W, northern and southern hemispheres. In remainder of South America - between 72°W and 66°W, southern hemisphere, onshore and offshore.',-59.87,2.15,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','3442','South America - 66°W to 60°W, S hemisphere and SIRGAS 2000 by country','Brazil - between 66°W and 60°W, northern and southern hemispheres. In remainder of South America - between 66°W and 60°W, southern hemisphere, onshore and offshore.',-58.39,5.28,-66.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','3443','South America - 60°W to 54°W, S hemisphere and SIRGAS 2000 by country','Brazil - between 60°W and 54°W, northern and southern hemispheres. In remainder of South America - between 60°W and 54°W, southern hemisphere, onshore and offshore.',-44.82,4.51,-60.0,-54.0,0); +INSERT INTO "area" VALUES('EPSG','3444','South America - 54°W to 48°W, S hemisphere and SIRGAS 2000 by country','Brazil - between 54°W and 48°W, northern and southern hemispheres, onshore and offshore. In remainder of South America - between 54°W and 48°W, southern hemisphere, onshore and offshore.',-54.18,7.04,-54.0,-47.99,0); +INSERT INTO "area" VALUES('EPSG','3445','Brazil - 48°W to 42°W','Brazil - between 48°W and 42°W, northern and southern hemispheres, onshore and offshore.',-33.5,5.13,-48.0,-42.0,0); +INSERT INTO "area" VALUES('EPSG','3446','Brazil - 42°W to 36°W','Brazil - between 42°W and 36°W, northern and southern hemispheres, onshore and offshore.',-26.35,0.74,-42.0,-36.0,0); +INSERT INTO "area" VALUES('EPSG','3447','Brazil - 36°W to 30°W','Brazil - between 36°W and 30°W, northern and southern hemispheres, onshore and offshore.',-23.8,4.19,-36.0,-29.99,0); +INSERT INTO "area" VALUES('EPSG','3448','South America - SIRGAS 1995 by country','South America - onshore and offshore. Ecuador (mainland and Galapagos) - onshore and offshore.',-59.87,16.75,-113.21,-26.0,0); +INSERT INTO "area" VALUES('EPSG','3449','Greenland - west of 72°W','Greenland - west of 72°W, onshore and offshore.',74.52,79.04,-75.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','3450','Greenland - 72°W to 66°W','Greenland - between 72°W and 66°W, onshore and offshore.',73.24,80.9,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','3451','Greenland - 66°W to 60°W','Greenland - between 66°W and 60°W, onshore and offshore.',68.92,82.22,-66.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','3452','Greenland - 60°W to 54°W','Greenland - between 60°W and 54°W, onshore and offshore south of 84°N.',58.91,84.0,-60.0,-54.0,0); +INSERT INTO "area" VALUES('EPSG','3453','Greenland - 54°W to 48°W','Greenland - between 54°W and 48°W, onshore and offshore south of 84°N.',56.9,84.0,-54.0,-48.0,0); +INSERT INTO "area" VALUES('EPSG','3454','Greenland - 48°W to 42°W','Greenland - between 48°W and 42°W, onshore and offshore south of 84°N.',56.38,84.0,-48.0,-42.0,0); +INSERT INTO "area" VALUES('EPSG','3455','Greenland - 42°W to 36°W','Greenland - between 42°W and 36°W, onshore and offshore south of 84°N.',56.56,84.0,-42.0,-36.0,0); +INSERT INTO "area" VALUES('EPSG','3456','Greenland - 36°W to 30°W','Greenland - between 36°W and 30°W, onshore and offshore south of 84°N.',60.16,84.0,-36.0,-30.0,0); +INSERT INTO "area" VALUES('EPSG','3457','Greenland - 30°W to 24°W','Greenland - between 30°W and 24°W, onshore and offshore south of 84°N.',64.96,84.0,-30.0,-24.0,0); +INSERT INTO "area" VALUES('EPSG','3458','Greenland - 24°W to 18°W','Greenland - between 24°W and 18°W, onshore and offshore south of 84°N.',67.7,84.0,-24.0,-18.0,0); +INSERT INTO "area" VALUES('EPSG','3459','Greenland - 18°W to 12°W','Greenland - between 18°W and 12°W, onshore and offshore south of 84°N.',68.67,84.0,-18.0,-12.0,0); +INSERT INTO "area" VALUES('EPSG','3460','Greenland - 12°W to 6°W','Greenland - 12°W to 6°W, onshore and offshore south of 84°N.',72.43,84.0,-12.0,-6.0,0); +INSERT INTO "area" VALUES('EPSG','3461','Mexico - offshore GoM - Campeche area N','Mexico - offshore Gulf of Mexico (GoM) - Bay of Campeche northeast.',20.87,23.01,-94.33,-88.67,0); +INSERT INTO "area" VALUES('EPSG','3462','Mexico - offshore GoM - Campeche area S','Mexico - offshore Gulf of Mexico (GoM) - Bay of Campeche southeast.',17.85,20.89,-94.79,-89.75,0); +INSERT INTO "area" VALUES('EPSG','3463','World - 86°S to 86°N','World between 86°S and 86°N.',-86.0,86.0,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','3464','World - N hemisphere - 12°E to 18°E - by country and WGS 72BE','Between 12°E and 18°E, northern hemisphere between equator and 84°N, onshore and offshore. Chad - west of 18°E.',0.0,84.0,12.0,18.0,0); +INSERT INTO "area" VALUES('EPSG','3465','World - N hemisphere - 18°E to 24°E - by country and WGS 72BE','Between 12°E and 18°E, northern hemisphere between equator and 84°N, onshore and offshore. Chad - east of 18°E.',0.0,84.0,18.0,24.0,0); +INSERT INTO "area" VALUES('EPSG','3466','China - Ordos - 108°E to 108.5°E and 37.75°N to 38.25°N','China - Ordos basin.',35.0,39.0,107.0,110.01,0); +INSERT INTO "area" VALUES('EPSG','3467','North America - Great Lakes basin','Canada and United States (USA) - Great Lakes basin.',40.99,50.74,-93.17,-74.47,0); +INSERT INTO "area" VALUES('EPSG','3468','North America - Great Lakes basin and St Lawrence Seaway','Canada and United States (USA) - Great Lakes basin and St Lawrence Seaway.',40.99,52.22,-93.17,-54.75,0); +INSERT INTO "area" VALUES('EPSG','3469','China - offshore - Yellow Sea','China - offshore - Huang Hai (Yellow Sea).',31.23,37.4,119.23,125.06,0); +INSERT INTO "area" VALUES('EPSG','3470','China - offshore - Pearl River basin','China - offshore South China Sea - Pearl River basin.',18.31,22.89,110.13,116.76,0); +INSERT INTO "area" VALUES('EPSG','3471','Denmark - onshore west of 12°E','Denmark - onshore west of 12°E - Zealand, Jutland, Fuen and Lolland.',54.51,57.8,8.0,12.0,0); +INSERT INTO "area" VALUES('EPSG','3472','Denmark - onshore east of 12°E','Denmark - onshore east of 12°E - Zealand and Falster, Bornholm.',54.51,56.18,12.0,15.24,0); +INSERT INTO "area" VALUES('EPSG','3473','World - south of 40°S','Southern hemisphere - south of 40°S including Antarctica.',-90.0,-40.0,-180.0,180.0,1); +INSERT INTO "area" VALUES('EPSG','3474','World - south of 0°N','Southern hemisphere.',-90.0,0.0,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','3475','World - north of 0°N','Northern hemisphere.',0.0,90.0,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','3476','World - north of 30°N','Northern hemisphere - north of 30°N, including Arctic.',30.0,90.0,-180.0,180.0,1); +INSERT INTO "area" VALUES('EPSG','3477','Libya - Cyrenaica','Libya - Cyrenaica area 42, blocks 2 and 4.',32.0,32.8,22.49,23.0,0); +INSERT INTO "area" VALUES('EPSG','3478','Jamaica - west of 78°W','Jamaica - west of 78°W onshore and offshore.',14.16,19.36,-80.6,-77.99,0); +INSERT INTO "area" VALUES('EPSG','3479','Jamaica - east of 78°W','Jamaica - east of 78°W onshore and offshore.',14.08,19.2,-78.0,-74.51,0); +INSERT INTO "area" VALUES('EPSG','3480','World - north of 45°N','Northern hemisphere - north of 45°N, including Arctic.',45.0,90.0,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','3481','Canada - NWT','Canada - Northwest Territories onshore.',59.98,78.81,-136.46,-102.0,0); +INSERT INTO "area" VALUES('EPSG','3482','USA - west of 174°E - AK','United States (USA) - west of 174°E - Alaska (AK).',49.0,56.3,168.0,174.0,1); +INSERT INTO "area" VALUES('EPSG','3483','USA - 174°E to 180°E - AK','United States (USA) - between 174°E and 180°E - Alaska (AK).',48.0,59.8,174.0,180.0,1); +INSERT INTO "area" VALUES('EPSG','3484','USA - 180°W to 174°W - AK','United States (USA) - between 180°W and 174°W - Alaska (AK).',48.0,63.3,-180.0,-174.0,1); +INSERT INTO "area" VALUES('EPSG','3485','USA - 174°W to 168°W - AK','United States (USA) - between 174°W and 168°W - Alaska (AK).',48.7,73.0,-174.0,-168.0,1); +INSERT INTO "area" VALUES('EPSG','3486','USA - 168°W to 162°W - AK','United States (USA) - between 168°W and 162°W - Alaska (AK).',49.6,74.3,-168.0,-162.0,1); +INSERT INTO "area" VALUES('EPSG','3487','USA - 162°W to 156°W - AK','United States (USA) - between 162°W and 156°W - Alaska (AK).',51.1,74.7,-162.0,-156.0,1); +INSERT INTO "area" VALUES('EPSG','3488','USA - 162°W to 156°W onshore - HI','United States (USA) - between 162°W and 156°W onshore - Hawaii.',19.51,22.29,-160.3,-155.99,0); +INSERT INTO "area" VALUES('EPSG','3489','USA - 162°W to 156°W - AK, HI','United States (USA) - between 162°W and 156°W onshore and offshore - Alaska, Hawaii.',15.57,74.71,-162.0,-155.99,0); +INSERT INTO "area" VALUES('EPSG','3490','USA - 156°W to 150°W - AK','United States (USA) - between 156°W and 150°W - Alaska (AK).',52.1,74.7,-156.0,-150.0,1); +INSERT INTO "area" VALUES('EPSG','3491','USA - 156°W to 150°W onshore - HI','United States (USA) - between 156°W and 150°W onshore - Hawaii.',18.87,20.86,-156.0,-154.74,0); +INSERT INTO "area" VALUES('EPSG','3492','USA - 156°W to 150°W - AK, HI','United States (USA) - between 156°W and 150°W onshore and offshore - Alaska, Hawaii.',15.56,74.71,-156.0,-149.99,0); +INSERT INTO "area" VALUES('EPSG','3493','USA - 150°W to 144°W - AK','United States (USA) - between 150°W and 144°W - Alaska (AK).',54.0,74.2,-150.0,-144.0,1); +INSERT INTO "area" VALUES('EPSG','3494','USA - 144°W to 138°W','United States (USA) - between 144°W and 138°W onshore and offshore - Alaska.',53.47,73.59,-144.0,-137.99,0); +INSERT INTO "area" VALUES('EPSG','3495','USA - 138°W to 132°W','United States (USA) - between 138°W and 132°W onshore and offshore - Alaska.',53.6,73.04,-138.0,-131.99,0); +INSERT INTO "area" VALUES('EPSG','3496','USA - 132°W to 126°W','United States (USA) - between 132°W and 126°W onshore and offshore - Alaska.',35.38,56.84,-132.0,-126.0,0); +INSERT INTO "area" VALUES('EPSG','3497','USA - 126°W to 120°W','United States (USA) - between 126°W and 120°W onshore and offshore - California; Oregon; Washington.',30.54,49.09,-126.0,-119.99,0); +INSERT INTO "area" VALUES('EPSG','3498','USA - 120°W to 114°W','United States (USA) - between 120°W and 114°W onshore and offshore - California, Idaho, Nevada, Oregon, Washington.',30.88,49.01,-120.0,-114.0,0); +INSERT INTO "area" VALUES('EPSG','3499','USA - 114°W to 108°W','United States (USA) - between 114°W and 108°W - Arizona; Colorado; Idaho; Montana; New Mexico; Utah; Wyoming.',31.33,49.01,-114.0,-108.0,0); +INSERT INTO "area" VALUES('EPSG','3500','USA - 108°W to 102°W','United States (USA) - between 108°W and 102°W - Colorado; Montana; Nebraska; New Mexico; North Dakota; Oklahoma; South Dakota; Texas; Wyoming.',28.98,49.01,-108.0,-102.0,0); +INSERT INTO "area" VALUES('EPSG','3501','USA - 102°W to 96°W','United States (USA) - between 102°W and 96°W onshore and offshore - Iowa; Kansas; Minnesota; Nebraska; North Dakota; Oklahoma; South Dakota; Texas.',25.83,49.01,-102.0,-96.0,0); +INSERT INTO "area" VALUES('EPSG','3502','USA - 96°W to 90°W','United States (USA) - between 96°W and 90°W onshore and offshore - Arkansas; Illinois; Iowa; Kansas; Louisiana; Michigan; Minnesota; Mississippi; Missouri; Nebraska; Oklahoma; Tennessee; Texas; Wisconsin.',25.61,49.38,-96.01,-90.0,0); +INSERT INTO "area" VALUES('EPSG','3503','USA - 90°W to 84°W','United States (USA) - between 90°W and 84°W onshore and offshore - Alabama; Arkansas; Florida; Georgia; Indiana; Illinois; Kentucky; Louisiana; Michigan; Minnesota; Mississippi; Missouri; North Carolina; Ohio; Tennessee; Wisconsin.',23.97,48.32,-90.0,-84.0,0); +INSERT INTO "area" VALUES('EPSG','3504','USA - 84°W to 78°W','United States (USA) - between 84°W and 78°W onshore and offshore - Florida; Georgia; Kentucky; Maryland; Michigan; New York; North Carolina; Ohio; Pennsylvania; South Carolina; Tennessee; Virginia; West Virginia.',23.81,46.13,-84.0,-78.0,0); +INSERT INTO "area" VALUES('EPSG','3505','USA - 78°W to 72°W','United States (USA) - between 78°W and 72°W onshore and offshore - Connecticut; Delaware; Maryland; Massachusetts; New Hampshire; New Jersey; New York; North Carolina; Pennsylvania; Virginia; Vermont.',28.28,45.03,-78.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','3506','USA - 72°W to 66°W','United States (USA) - between 72°W and 66°W onshore and offshore - Connecticut; Maine; Massachusetts; New Hampshire; New York (Long Island); Rhode Island; Vermont.',33.61,47.47,-72.0,-65.99,0); +INSERT INTO "area" VALUES('EPSG','3507','China - Tarim - 77.5°E to 88°E and 37°N to 42°N','China - south and west Tarim basin.',37.0,41.99,77.45,88.0,0); +INSERT INTO "area" VALUES('EPSG','3508','New Zealand - offshore Pacific Ocean, Southern Ocean','Southwestern Pacific Ocean and Southern Ocean areas surrounding New Zealand.',-60.0,-25.0,155.0,-170.0,0); +INSERT INTO "area" VALUES('EPSG','3509','UAE - Abu Dhabi - offshore','United Arab Emirates (UAE) - Abu Dhabi offshore.',24.0,25.64,51.5,54.85,0); +INSERT INTO "area" VALUES('EPSG','3510','Indonesia - 96°E to 99°E onshore','Indonesia - onshore between 96°E and 99°E.',-1.81,5.42,96.0,99.0,0); +INSERT INTO "area" VALUES('EPSG','3511','Indonesia - 99°E to 102°E onshore','Indonesia - onshore between 99°E and 102°E.',-3.57,3.71,99.0,102.0,0); +INSERT INTO "area" VALUES('EPSG','3512','Indonesia - 102°E to 105°E onshore','Indonesia - onshore between 102°E and 105°E.',-5.99,1.68,102.0,105.0,0); +INSERT INTO "area" VALUES('EPSG','3513','Indonesia - 105°E to 108°E onshore','Indonesia - onshore between 105°E and 108°E.',-7.79,4.11,105.0,108.0,0); +INSERT INTO "area" VALUES('EPSG','3514','Indonesia - 108°E to 111°E onshore','Indonesia - onshore between 108°E and 111°E.',-8.31,4.25,108.0,111.0,0); +INSERT INTO "area" VALUES('EPSG','3515','Indonesia - 111°E to 114°E onshore','Indonesia - onshore between 111°E and 114°E.',-8.67,1.59,111.0,114.0,0); +INSERT INTO "area" VALUES('EPSG','3516','Indonesia - 114°E to 117°E onshore','Indonesia - onshore between 114°E and 117°E.',-9.15,4.37,114.0,117.01,0); +INSERT INTO "area" VALUES('EPSG','3517','Indonesia - 117°E to 120°E onshore','Indonesia - onshore between 117°E and 120°E.',-10.15,4.36,117.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','3518','Indonesia - 120°E to 123°E onshore','Indonesia - onshore between 120°E and 123°E.',-10.98,1.4,120.0,123.0,0); +INSERT INTO "area" VALUES('EPSG','3519','Indonesia - 123°E to 126°E onshore','Indonesia - onshore between 123°E and 126°E.',-10.92,3.84,123.0,126.0,0); +INSERT INTO "area" VALUES('EPSG','3520','Indonesia - 126°E to 129°E onshore','Indonesia - onshore between 126°E and 129°E.',-8.32,4.59,126.0,129.0,0); +INSERT INTO "area" VALUES('EPSG','3521','Indonesia - 129°E to 132°E onshore','Indonesia - onshore between 129°E and 132°E.',-8.41,0.1,129.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','3522','Indonesia - 132°E to 135°E onshore','Indonesia - onshore between 132°E and 135°E.',-7.3,-0.29,132.0,135.0,0); +INSERT INTO "area" VALUES('EPSG','3523','Indonesia - 135°E to 138°E onshore','Indonesia - onshore between 135°E and 138°E.',-8.49,-0.58,135.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','3524','Canada - 72°W to 66°W','Canada between 72°W and 66°W onshore and offshore - New Brunswick, Labrador, Nova Scotia, Nunavut, Quebec.',40.8,84.0,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','3525','Canada - 66°W to 60°W','Canada between 66°W and 60°W onshore and offshore - New Brunswick, Labrador, Nova Scotia, Nunavut, Prince Edward Island, Quebec.',40.04,84.0,-66.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','3526','Canada - 108°W to 102°W','Canada between 108°W and 102°W onshore and offshore - Northwest Territories, Nunavut, Saskatchewan.',48.99,84.0,-108.0,-102.0,0); +INSERT INTO "area" VALUES('EPSG','3527','Canada - 114°W to 108°W','Canada between 114°W and 108°W onshore and offshore - Alberta, Northwest Territories, Nunavut, Saskatchewan.',48.99,84.0,-114.0,-108.0,0); +INSERT INTO "area" VALUES('EPSG','3528','Canada - 120°W to 114°W','Canada between 120°W and 114°W onshore and offshore - Alberta, British Columbia, Northwest Territories, Nunavut.',48.99,83.5,-120.0,-114.0,0); +INSERT INTO "area" VALUES('EPSG','3529','South Georgia - onshore','South Georgia and the South Sandwich Islands - South Georgia onshore.',-54.95,-53.93,-38.08,-35.74,0); +INSERT INTO "area" VALUES('EPSG','3530','UAE - Dubai - offshore','United Arab Emirates (UAE) - Dubai offshore - Falah, Fateh and Rashid oilfields.',24.94,25.8,54.06,55.3,0); +INSERT INTO "area" VALUES('EPSG','3531','UAE - Dubai municipality','United Arab Emirates (UAE) - Dubai municipality.',24.85,25.34,54.84,55.55,0); +INSERT INTO "area" VALUES('EPSG','3532','Channel Islands - Jersey','Channel Islands - Jersey.',48.93,49.34,-2.3,-1.98,1); +INSERT INTO "area" VALUES('EPSG','3533','Channel Islands - Guernsey','Channel Islands - Guernsey.',49.4,49.75,-2.75,-2.13,1); +INSERT INTO "area" VALUES('EPSG','3534','Serbia','Serbia.',41.85,46.19,18.81,23.01,0); +INSERT INTO "area" VALUES('EPSG','3535','Montenegro','Montenegro - onshore and offshore.',41.27,43.56,18.02,20.38,0); +INSERT INTO "area" VALUES('EPSG','3536','Montenegro - onshore','Montenegro - onshore.',41.79,43.56,18.45,20.38,0); +INSERT INTO "area" VALUES('EPSG','3537','Portugal - mainland - offshore','Portugal - mainland - offshore.',34.91,41.88,-13.87,-7.24,0); +INSERT INTO "area" VALUES('EPSG','3538','Croatia - east of 18°E','Croatia - east of 18°E, onshore and offshore.',41.62,45.92,18.0,19.43,0); +INSERT INTO "area" VALUES('EPSG','3539','Croatia - west of 18°E','Croatia - west of 18°E, onshore and offshore.',41.63,46.54,13.0,18.0,0); +INSERT INTO "area" VALUES('EPSG','3540','Canada - Alberta - west of 118.5°W','Canada - Alberta - west of 118°30'' W.',52.88,60.0,-120.0,-118.5,0); +INSERT INTO "area" VALUES('EPSG','3541','Canada - Alberta - 118.5°W to 115.5°W','Canada - Alberta - between 118°30''W and 115°30'' W.',50.77,60.0,-118.5,-115.5,0); +INSERT INTO "area" VALUES('EPSG','3542','Canada - Alberta - 115.5°W to 112.5°W','Canada - Alberta - between 115°30''W and 112°30''W.',48.99,60.0,-115.5,-112.5,0); +INSERT INTO "area" VALUES('EPSG','3543','Canada - Alberta - east of 112.5°W','Canada - Alberta - east of 112°30''W.',48.99,60.0,-112.5,-109.98,0); +INSERT INTO "area" VALUES('EPSG','3544','World - 85°S to 85°N','World between 85.06°S and 85.06°N.',-85.06,85.06,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','3545','France - mainland south of 43°N and Corsica','France onshore - mainland south of 43°N and Corsica.',41.31,43.07,-1.06,9.63,0); +INSERT INTO "area" VALUES('EPSG','3546','France - mainland south of 44°N','France - mainland onshore south of 44°N.',42.33,44.0,-1.79,7.65,0); +INSERT INTO "area" VALUES('EPSG','3547','France - mainland - 43°N to 45°N','France - mainland onshore between 43°N and 45°N.',43.0,45.0,-1.79,7.71,0); +INSERT INTO "area" VALUES('EPSG','3548','France - mainland - 44°N to 46°N','France - mainland onshore between 44°N and 46°N.',44.0,46.0,-1.46,7.71,0); +INSERT INTO "area" VALUES('EPSG','3549','France - mainland - 45°N to 47°N','France - mainland onshore between 45°N and 47°N.',45.0,47.0,-2.21,7.16,0); +INSERT INTO "area" VALUES('EPSG','3550','France - mainland - 46°N to 48°N','France - mainland onshore between 46°N and 48°N.',46.0,48.0,-4.77,7.63,0); +INSERT INTO "area" VALUES('EPSG','3551','France - mainland - 47°N to 49°N','France - mainland onshore between 47°N and 49°N.',47.0,49.0,-4.87,8.23,0); +INSERT INTO "area" VALUES('EPSG','3552','France - mainland - 48°N to 50°N','France - mainland onshore between 48°N and 50°N.',48.0,50.0,-4.87,8.23,0); +INSERT INTO "area" VALUES('EPSG','3553','France - mainland north of 49°N','France - mainland onshore north of 49°N.',49.0,51.14,-2.03,8.08,0); +INSERT INTO "area" VALUES('EPSG','3554','New Zealand - Snares and Auckland Islands','New Zealand - Snares Island, Auckland Island - onshore.',-51.13,-47.8,165.55,166.93,0); +INSERT INTO "area" VALUES('EPSG','3555','New Zealand - Campbell Island','New Zealand - Campbell Island.',-52.83,-52.26,168.65,169.6,0); +INSERT INTO "area" VALUES('EPSG','3556','New Zealand - Antipodes and Bounty Islands','New Zealand - Antipodes Island, Bounty Islands.',-49.92,-47.54,178.4,179.37,0); +INSERT INTO "area" VALUES('EPSG','3557','New Zealand - Raoul and Kermadec Islands','New Zealand - Raoul Island, Kermadec Islands.',-31.56,-29.03,-179.07,-177.62,0); +INSERT INTO "area" VALUES('EPSG','3558','Antarctica - Ross Sea Region','Antarctica - Ross Sea Region - nominally between 160°E and 150°W but includes buffer on eastern hemisphere margin to include Transantarctic Mountains',-90.0,-59.99,144.99,-144.99,0); +INSERT INTO "area" VALUES('EPSG','3559','Australia - offshore','Australia - offshore including EEZ.',-47.2,-8.88,109.23,163.2,0); +INSERT INTO "area" VALUES('EPSG','3560','Slovenia - Dolenjska - central','Slovenia - central Dolenjska (Lower Carniola).',45.81,46.01,14.97,15.43,0); +INSERT INTO "area" VALUES('EPSG','3561','China - offshore - Bei Bu','China - offshore - Bei Bu Wan (Gulf of Tonkin).',17.81,21.69,107.15,110.17,0); +INSERT INTO "area" VALUES('EPSG','3562','Taiwan - 120°E to 122°E','Taiwan, Republic of China - between 120°E and 122°E, onshore and offshore - Taiwan Island.',20.41,26.72,119.99,122.06,0); +INSERT INTO "area" VALUES('EPSG','3563','Taiwan - 118°E to 120°E','Taiwan, Republic of China - between 118°E and 120°E, onshore and offshore - Penghu (Pescadores) Islands.',18.63,24.65,118.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','3564','Slovenia - west of 14°30''E onshore','Slovenia - onshore west of 14°30''E.',45.44,46.53,13.38,14.58,0); +INSERT INTO "area" VALUES('EPSG','3565','Slovenia - NE','Slovenia - east of 14°30''E and north of 46°03''N.',46.14,46.88,14.54,16.61,0); +INSERT INTO "area" VALUES('EPSG','3566','Slovenia - SE','Slovenia - east of 14°30''E and south of 46°09''N.',45.42,46.22,14.55,15.73,0); +INSERT INTO "area" VALUES('EPSG','3567','Slovenia - southeastern','Slovenia - southeastern.',45.42,45.77,14.53,15.36,0); +INSERT INTO "area" VALUES('EPSG','3568','Slovenia - Dolenjska','Slovenia - Dolenjska (Lower Carniola).',45.7,46.12,14.47,15.73,0); +INSERT INTO "area" VALUES('EPSG','3569','Slovenia - Stajerska','Slovenia - Stajerska (Slovene Styria).',46.1,46.76,14.74,16.27,0); +INSERT INTO "area" VALUES('EPSG','3570','Slovenia - Pomurje','Slovenia - Pomurje (the Mura Region).',46.47,46.88,15.96,16.61,0); +INSERT INTO "area" VALUES('EPSG','3571','Slovenia - Gorenjska and N Primorsko','Slovenia - Gorenjska (Upper Carniola) and northern Primorska.',46.05,46.53,13.38,14.82,0); +INSERT INTO "area" VALUES('EPSG','3572','Slovenia - Primorska and Notranjska onshore','Slovenia - onshore Primorska and Notranjska (Inner Carniola).',45.44,46.08,13.47,14.58,0); +INSERT INTO "area" VALUES('EPSG','3573','Slovenia - central','Slovenia - central.',45.91,46.31,14.21,15.28,0); +INSERT INTO "area" VALUES('EPSG','3574','Europe - onshore - eastern - S-42(58)','Onshore: Bulgaria, Czech Republic, Germany (former DDR), Hungary, Poland and Slovakia. Onshore and offshore: Albania and Romania.',39.63,54.89,9.92,31.41,0); +INSERT INTO "area" VALUES('EPSG','3575','Germany - East Germany - west of 12°E','Germany - states of former East Germany - west of 12°E.',50.2,54.23,9.92,12.0,0); +INSERT INTO "area" VALUES('EPSG','3576','Europe - 12°E to 18°E onshore and S-42(83) by country','Germany (former DDR) - onshore east of 12°E. Czech Republic, Hungary and Slovakia - west of 18°E.',45.78,54.74,12.0,18.01,0); +INSERT INTO "area" VALUES('EPSG','3577','Europe - 18°E to 24°E onshore and S-42(58) by country','Albania - onshore east of 18°E. Czech Republic, Hungary and Slovakia - east of 18°E. Poland - onshore between 18°E and 24°E. Bulgaria and Romania - onshore west of 24°E.',39.64,54.89,18.0,24.0,0); +INSERT INTO "area" VALUES('EPSG','3578','Europe - 18°E to 24°E onshore and S-42(83) by country','Czech Republic, Hungary and Slovakia - east of 18°E.',45.74,50.06,18.0,22.9,0); +INSERT INTO "area" VALUES('EPSG','3579','Europe - 24°E to 30°E onshore and S-42(58) by country','Bulgaria, Poland and Romania - onshore east of 24°E.',41.24,50.93,24.0,29.74,0); +INSERT INTO "area" VALUES('EPSG','3580','Europe - 13.5°E to 16.5°E onshore and S-42(58) by country','Czech Republic - between 13°30''E and 16°30''E. Germany - states of former East Germany onshore - east of 13°30''E - Brandenburg; Mecklenburg-Vorpommern; Sachsen. Hungary and Poland - onshore west of 16°30''E.',46.54,54.72,13.5,16.5,0); +INSERT INTO "area" VALUES('EPSG','3581','Europe - 16.5°E to 19.5°E onshore and S-42(58) by country','Albania - onshore west of 19°30''E. Czech Republic - east of 16°30''E. Hungary and Poland - onshore between 16°30''E and 19°30''E. Slovakia - west of 19°30''E.',40.14,54.89,16.5,19.5,0); +INSERT INTO "area" VALUES('EPSG','3582','Europe - 16.5°E to 19.5°E onshore and S-42(83) by country','Czech Republic - east of 16°30''E. Hungary - between 16°30''E and 19°30''E. Slovakia - west of 19°30''E.',45.74,50.45,16.5,19.5,0); +INSERT INTO "area" VALUES('EPSG','3583','Europe - 19.5°E to 22.5°E onshore and S-42(58) by country','Albania - east of 19°30''E. Bulgaria and Romania - west of 22°30''E. Hungary, Poland and Slovakia - between 19°30''E and 22°30''E.',39.64,54.51,19.5,22.5,0); +INSERT INTO "area" VALUES('EPSG','3584','Europe - 19.5°E to 22.5°E onshore and S-42(83) by country','Hungary and Slovakia - between 19°30''E and 22°30''E.',46.1,49.59,19.5,22.5,0); +INSERT INTO "area" VALUES('EPSG','3585','Europe - 22.5°E to 25.5°E onshore and S-42(58) by country','Bulgaria and Romania - between 22°30''E and 25°30''E. Hungary, Poland and Slovakia - east of 22°30''E.',41.24,54.41,22.5,25.5,0); +INSERT INTO "area" VALUES('EPSG','3586','Europe - 22.5°E to 25.5°E onshore and S-42(83) by country','Hungary and Slovakia - east of 22°30''E.',47.76,49.1,22.5,22.9,0); +INSERT INTO "area" VALUES('EPSG','3587','Europe - 25.5°E to 28.5°E onshore and S-42(58) by country','Bulgaria and Romania - onshore between 25°30''E and 28°30''E.',41.28,48.27,25.5,28.5,0); +INSERT INTO "area" VALUES('EPSG','3588','Europe - 28.5°E to 31.5°E onshore and S-42(58) by country','Bulgaria and Romania - onshore east of 28°30''E.',43.34,45.44,28.5,29.74,0); +INSERT INTO "area" VALUES('EPSG','3589','Pakistan - Gambat','Pakistan - Gambat.',25.88,27.67,68.24,69.3,0); +INSERT INTO "area" VALUES('EPSG','3590','Nigeria - 4°N to 5°N, 6°E to 8°E','Nigeria - 4°N to 5°N and 6°E to 8°E.',3.99,5.01,5.99,8.01,0); +INSERT INTO "area" VALUES('EPSG','3591','Taiwan - 118°E to 120°E onshore','Taiwan, Republic of China - onshore between 118°E and 120°E - Penghu (Pescadores) Islands.',23.12,23.82,119.25,119.78,0); +INSERT INTO "area" VALUES('EPSG','3592','Antarctica - Darwin Glacier region','Antarctica - Darwin Glacier region.',-81.0,-76.0,145.0,169.0,0); +INSERT INTO "area" VALUES('EPSG','3593','New Zealand - offshore','New Zealand - offshore.',-55.95,-25.88,160.6,-171.2,0); +INSERT INTO "area" VALUES('EPSG','3594','Europe - EVRF2007','Europe - onshore - Andorra; Austria; Belgium; Bosnia and Herzegovina; Bulgaria; Croatia; Czech Republic; Denmark; Estonia; Finland; France - mainland; Germany; Gibraltar, Hungary; Italy - mainland and Sicily; Latvia; Liechtenstein; Lithuania; Luxembourg; Netherlands; Norway; Poland; Portugal; Romania; San Marino; Slovakia; Slovenia; Spain - mainland; Sweden; Switzerland; United Kingdom (UK) - Great Britain mainland; Vatican City State.',35.95,71.21,-9.56,31.59,0); +INSERT INTO "area" VALUES('EPSG','3595','Finland - west of 19.5°E onshore nominal','Finland - nominally onshore west of 19°30''E but may be used in adjacent areas to east if a municipality chooses to use one zone over its whole extent.',60.08,60.34,19.24,19.5,0); +INSERT INTO "area" VALUES('EPSG','3596','Finland - 19.5°E to 20.5°E onshore nominal','Finland - nominally onshore between 19°30''E and 20°30''E but may be used in adjacent areas if a municipality chooses to use one zone over its whole extent.',59.92,60.48,19.5,20.5,0); +INSERT INTO "area" VALUES('EPSG','3597','Finland - 20.5°E to 21.5°E onshore nominal','Finland - nominally onshore between 20°30''E and 21°30''E but may be used in adjacent areas if a municipality chooses to use one zone over its whole extent.',59.84,69.33,20.5,21.5,0); +INSERT INTO "area" VALUES('EPSG','3598','Finland - 21.5°E to 22.5°E onshore nominal','Finland - nominally onshore between 21°30''E and 22°30''E but may be used in adjacent areas if a municipality chooses to use one zone over its whole extent.',59.76,69.31,21.5,22.5,0); +INSERT INTO "area" VALUES('EPSG','3599','Finland - 22.5°E to 23.5°E onshore nominal','Finland - nominally onshore between 22°30''E and 23°30''E but may be used in adjacent areas if a municipality chooses to use one zone over its whole extent.',59.75,68.74,22.5,23.5,0); +INSERT INTO "area" VALUES('EPSG','3600','Finland - 23.5°E to 24.5°E onshore nominal','Finland - nominally onshore between 23°30''E and 24°30''E but may be used in adjacent areas if a municipality chooses to use one zone over its whole extent.',59.86,68.84,23.5,24.5,0); +INSERT INTO "area" VALUES('EPSG','3601','Finland - 24.5°E to 25.5°E onshore nominal','Finland - nominally onshore between 24°30''E and 25°30''E but may be used in adjacent areas if a municipality chooses to use one zone over its whole extent.',59.94,68.9,24.5,25.5,0); +INSERT INTO "area" VALUES('EPSG','3602','Finland - 25.5°E to 26.5°E onshore nominal','Finland - nominally onshore between 25°30''E and 26°30''E but may be used in adjacent areas if a municipality chooses to use one zone over its whole extent.',60.18,69.94,25.5,26.5,0); +INSERT INTO "area" VALUES('EPSG','3603','Finland - 26.5°E to 27.5°E onshore nominal','Finland - nominally onshore between 26°30''E and 27°30''E but may be used in adjacent areas if a municipality chooses to use one zone over its whole extent.',60.36,70.05,26.5,27.5,0); +INSERT INTO "area" VALUES('EPSG','3604','Finland - 27.5°E to 28.5°E onshore nominal','Finland - nominally onshore between 27°30''E and 28°30''E but may be used in adjacent areas if a municipality chooses to use one zone over its whole extent.',60.42,70.09,27.5,28.5,0); +INSERT INTO "area" VALUES('EPSG','3605','Finland - 28.5°E to 29.5°E nominal','Finland - nominally between 28°30''E and 29°30''E but may be used in adjacent areas if a municipality chooses to use one zone over its whole extent.',60.94,69.81,28.5,29.5,0); +INSERT INTO "area" VALUES('EPSG','3606','Finland - 29.5°E to 30.5°E nominal','Finland - nominally between 29°30''E and 30°30''E but may be used in adjacent areas if a municipality chooses to use one zone over its whole extent.',61.43,67.98,29.5,30.5,0); +INSERT INTO "area" VALUES('EPSG','3607','Finland - east of 30.5°E nominal','Finland - nominally east of 30°30''E but may be used in adjacent areas to west if a municipality chooses to use one zone over its whole extent.',62.08,64.27,30.5,31.59,0); +INSERT INTO "area" VALUES('EPSG','3608','Sweden - Stockholm county','Sweden - Stockholm county. Municipalities of Botkyrka, Danderyd, Ekerö, Haninge, Huddinge, Järfälla, Lidingö, Nacka, Nynäshamn, Salem, Sigtuna, Sollentuna, Solna, Stockholm and Sundbyberg.',58.69,60.27,17.25,19.61,0); +INSERT INTO "area" VALUES('EPSG','3609','Congo DR (Zaire) - Katanga west of 25.5°E','The Democratic Republic of the Congo (Zaire) - Katanga west of 25°30''E.',-11.72,-6.32,21.74,25.5,0); +INSERT INTO "area" VALUES('EPSG','3610','Congo DR (Zaire) - Katanga 24.5°E to 27.5°E','The Democratic Republic of the Congo (Zaire) - Katanga between 24°30''E and 27°30''E.',-12.08,-4.99,24.5,27.5,0); +INSERT INTO "area" VALUES('EPSG','3611','Congo DR (Zaire) - Katanga 26.5°E to 29.5°E','The Democratic Republic of the Congo (Zaire) - Katanga between 26°30''E and 29°30''E.',-13.44,-4.99,26.5,29.5,0); +INSERT INTO "area" VALUES('EPSG','3612','Congo DR (Zaire) - Katanga east of 28.5°E','The Democratic Republic of the Congo (Zaire) - Katanga east of 28°30''E.',-13.46,-4.99,28.5,30.78,0); +INSERT INTO "area" VALUES('EPSG','3613','Congo DR (Zaire) - south','The Democratic Republic of the Congo (Zaire) - south of a line through Bandundu, Seke and Pweto - onshore and offshore.',-13.46,-3.41,11.79,29.81,0); +INSERT INTO "area" VALUES('EPSG','3614','Congo DR (Zaire) - Katanga - Lubumbashi area','The Democratic Republic of the Congo (Zaire) - Katanga - Likasi-Lubumbashi area.',-12.01,-11.13,26.38,27.75,0); +INSERT INTO "area" VALUES('EPSG','3615','Moldova - west of 30°E','Moldova - west of 30°E.',45.44,48.47,26.63,30.0,0); +INSERT INTO "area" VALUES('EPSG','3616','Moldova - east of 30°E','Moldova - east of 30°E.',46.37,46.47,30.0,30.13,0); +INSERT INTO "area" VALUES('EPSG','3617','Congo DR (Zaire) - south and 15°E to 17°E','The Democratic Republic of the Congo (Zaire) - south of a line through Bandundu, Seke and Pweto and between 15°E and 17°E.',-7.31,-3.41,15.0,17.0,0); +INSERT INTO "area" VALUES('EPSG','3618','Congo DR (Zaire) - south and 17°E and 19°E','The Democratic Republic of the Congo (Zaire) - south of a line through Bandundu, Seke and Pweto and between 17°E and 19°E.',-8.11,-3.43,17.0,19.0,0); +INSERT INTO "area" VALUES('EPSG','3619','Brazil - Distrito Federal','Brazil - Distrito Federal.',-15.94,-15.37,-48.1,-47.1,0); +INSERT INTO "area" VALUES('EPSG','3620','Congo DR (Zaire) - south and 19°E to 21°E','The Democratic Republic of the Congo (Zaire) - south of a line through Bandundu, Seke and Pweto and between 19°E and 21°E.',-8.0,-3.77,19.0,21.0,0); +INSERT INTO "area" VALUES('EPSG','3621','Congo DR (Zaire) - south and 21°E to 23°E','The Democratic Republic of the Congo (Zaire) - south of a line through Bandundu, Seke and Pweto and between 21°E and 23°E.',-11.24,-4.18,21.0,23.01,0); +INSERT INTO "area" VALUES('EPSG','3622','Congo DR (Zaire) - south and 23°E to 25°E','The Democratic Republic of the Congo (Zaire) - south of a line through Bandundu, Seke and Pweto and between 23°E and 25°E.',-11.47,-4.58,23.0,25.0,0); +INSERT INTO "area" VALUES('EPSG','3623','Congo DR (Zaire) - south and 25°E to 27°E','The Democratic Republic of the Congo (Zaire) - south of a line through Bandundu, Seke and Pweto and between 25°E and 27°E.',-11.99,-4.99,25.0,27.0,0); +INSERT INTO "area" VALUES('EPSG','3624','Congo DR (Zaire) - south and 27°E to 29°E','The Democratic Republic of the Congo (Zaire) - south of a line through Bandundu, Seke and Pweto and between 27°E and 29°E.',-13.39,-6.43,27.0,29.0,0); +INSERT INTO "area" VALUES('EPSG','3625','Iraq - onshore','Iraq - onshore.',29.06,37.39,38.79,48.61,0); +INSERT INTO "area" VALUES('EPSG','3626','Congo DR (Zaire) - south and 12°E to 18°E','The Democratic Republic of the Congo (Zaire) - onshore and offshore south of a line through Bandundu, Seke and Pweto and between 12°E and 18°E.',-8.11,-3.41,12.0,18.01,0); +INSERT INTO "area" VALUES('EPSG','3627','Congo DR (Zaire) - south and 18°E to 24°E','The Democratic Republic of the Congo (Zaire) - south of a line through Bandundu, Seke and Pweto and between 18°E and 24°E.',-11.24,-3.57,18.0,24.0,0); +INSERT INTO "area" VALUES('EPSG','3628','Congo DR (Zaire) - south and 24°E to 30°E','The Democratic Republic of the Congo (Zaire) - south of a line through Bandundu, Seke and Pweto and east of 24°E.',-13.46,-4.79,24.0,29.81,0); +INSERT INTO "area" VALUES('EPSG','3629','Spain - Canary Islands - west of 18°W','Spain - Canary Islands - west of 18°W, onshore and offshore.',24.6,31.19,-21.93,-18.0,0); +INSERT INTO "area" VALUES('EPSG','3630','Spain - Canary Islands - east of 18°W','Spain - Canary Islands - east of 18°W, onshore and offshore.',25.25,32.76,-18.0,-11.75,0); +INSERT INTO "area" VALUES('EPSG','3631','Denmark - onshore Jutland west of 10°E','Denmark - Jutland onshore west of 10°E.',54.8,57.64,8.0,10.0,0); +INSERT INTO "area" VALUES('EPSG','3632','Denmark - onshore Jutland east of 9°E and Funen','Denmark - onshore - Jutland east of 9°E and Funen.',54.67,57.8,9.0,11.29,0); +INSERT INTO "area" VALUES('EPSG','3633','Mexico - 96°W to 90°W','Mexico between 96°W and 90°W, onshore and offshore.',12.1,26.0,-96.0,-90.0,0); +INSERT INTO "area" VALUES('EPSG','3634','Caribbean - Puerto Rico and US Virgin Islands - onshore','Puerto Rico and US Virgin Islands - onshore.',17.62,18.57,-67.97,-64.51,0); +INSERT INTO "area" VALUES('EPSG','3635','Mexico - east of 90°W','Mexico east of 90°W, onshore and offshore.',17.81,25.77,-90.0,-84.64,0); +INSERT INTO "area" VALUES('EPSG','3636','Norway - onshore - west of 6ºE','Norway - onshore - west of 6ºE.',58.32,62.49,4.68,6.0,0); +INSERT INTO "area" VALUES('EPSG','3637','USA - 102°W to 96°W and GoM OCS','United States (USA) - between 102°W and 96°W. Iowa; Kansas; Minnesota; Nebraska; North Dakota; Oklahoma; South Dakota; Texas; Gulf of Mexico outer continental shelf (GoM OCS) west of approximately 96°W - protraction areas Corpus Christi; Port Isabel.',25.83,49.01,-102.0,-95.87,0); +INSERT INTO "area" VALUES('EPSG','3638','South America - 84°W to 78°W, S hemisphere and SIRGAS95 by country','Ecuador (mainland whole country including areas in northern hemisphere and east of 78°W), onshore and offshore. In remainder of South America, between 84°W and 78°W, southern hemisphere, onshore and offshore.',-56.45,1.45,-84.0,-75.21,0); +INSERT INTO "area" VALUES('EPSG','3639','Norway - onshore - 6ºE to 7ºE','Norway - onshore - between 6ºE and 7ºE.',57.93,63.02,6.0,7.0,0); +INSERT INTO "area" VALUES('EPSG','3640','USA - 96°W to 90°W and GoM OCS','United States (USA) - between 96°W and 90°W - Arkansas; Illinois; Iowa; Kansas; Louisiana; Michigan; Minnesota; Mississippi; Missouri; Nebraska; Oklahoma; Tennessee; Texas; Wisconsin; Gulf of Mexico outer continental shelf (GoM OCS) between approximately 96°W and 90°W - protraction areas East Breaks; Alaminos Canyon; Garden Banks; Keathley Canyon; Sigsbee Escarpment; Ewing Bank; Green Canyon; Walker Ridge; Amery Terrace.',25.61,49.38,-96.01,-89.86,0); +INSERT INTO "area" VALUES('EPSG','3641','USA - 90°W to 84°W and GoM OCS','United States (USA) - between 90°W and 84°W onshore and offshore - Alabama; Arkansas; Florida; Georgia; Indiana; Illinois; Kentucky; Louisiana; Michigan; Minnesota; Mississippi; Missouri; North Carolina; Ohio; Tennessee; Wisconsin; Gulf of Mexico outer continental shelf (GoM OCS) between approximately 90°W and 84°W - protraction areas Mobile; Viosca Knoll; Mississippi Canyon; Atwater Valley; Lund; Lund South; Pensacola; Destin Dome; De Soto Canyon; Lloyd Ridge; Henderson; Florida Plain; Campeche Escarpment; Apalachicola; Florida Middle Ground; The Elbow; Vernon Basin; Howell Hook; Rankin.',23.95,48.32,-90.01,-83.91,0); +INSERT INTO "area" VALUES('EPSG','3642','USA - 84°W to 78°W and GoM OCS','United States (USA) - between 84°W and 78°W onshore and offshore - Florida; Georgia; Maryland; Michigan; New York; North Carolina; Ohio; Pennsylvania; South Carolina; Tennessee; Virginia; West Virginia; Gulf of Mexico outer continental shelf (GoM OCS) east of approximately 84°W - protraction areas Gainesville; Tarpon Springs; St Petersburg; Charlotte Harbor; Pulley Ridge; Dry Tortugas; Tortugas Valley; Miami; Key West.',23.81,46.13,-84.09,-77.99,0); +INSERT INTO "area" VALUES('EPSG','3643','Germany - Schleswig-Holstein','Germany - Schleswig-Holstein',53.35,55.06,7.8,11.35,1); +INSERT INTO "area" VALUES('EPSG','3644','Germany - Schleswig-Holstein - east of 10.5°E','Germany - Schleswig-Holstein - east of 10°30''E.',53.36,54.59,10.49,11.4,0); +INSERT INTO "area" VALUES('EPSG','3645','Sao Tome and Principe - onshore - Sao Tome','Sao Tome and Principe - onshore - Sao Tome.',-0.04,0.46,6.41,6.82,0); +INSERT INTO "area" VALUES('EPSG','3646','Sao Tome and Principe - onshore - Principe','Sao Tome and Principe - onshore - Principe.',1.48,1.76,7.27,7.52,0); +INSERT INTO "area" VALUES('EPSG','3647','Norway - onshore - 7ºE to 8ºE','Norway - onshore - between 7ºE and 8ºE.',57.93,63.52,7.0,8.0,0); +INSERT INTO "area" VALUES('EPSG','3648','Norway - onshore - 8ºE to 9ºE','Norway - onshore - between 8ºE and 9ºE.',58.03,63.87,8.0,9.0,0); +INSERT INTO "area" VALUES('EPSG','3649','Norway - onshore - 9ºE to 10ºE','Norway - onshore - between 9ºE and 10ºE.',58.52,64.16,9.0,10.0,0); +INSERT INTO "area" VALUES('EPSG','3650','Norway - onshore - 10ºE to 11ºE','Norway - onshore - between 10ºE and 11ºE.',58.9,65.04,10.0,11.0,0); +INSERT INTO "area" VALUES('EPSG','3651','Norway - onshore - 11ºE to 12ºE','Norway - onshore - between 11ºE and 12ºE.',58.88,65.76,11.0,12.0,0); +INSERT INTO "area" VALUES('EPSG','3652','USA - Michigan - SPCS - W','United States (USA) - Michigan - counties of Baraga; Dickinson; Gogebic; Houghton; Iron; Keweenaw; Marquette; Menominee; Ontonagon.',45.09,48.32,-90.42,-83.44,0); +INSERT INTO "area" VALUES('EPSG','3653','Norway - onshore - 12ºE to 13ºE','Norway - onshore - between 12ºE and 13ºE.',59.88,68.15,12.0,13.0,0); +INSERT INTO "area" VALUES('EPSG','3654','Norway - onshore - 13ºE to 14ºE','Norway - onshore - between 13ºE and 14ºE.',64.01,68.37,13.0,14.0,0); +INSERT INTO "area" VALUES('EPSG','3655','Norway - onshore - 14ºE to 15ºE','Norway - onshore - between 14ºE and 15ºE.',64.03,69.05,14.0,15.0,0); +INSERT INTO "area" VALUES('EPSG','3656','Norway - onshore - 15ºE to 16ºE','Norway - onshore - between 15ºE and 16ºE.',66.14,69.35,15.0,16.0,0); +INSERT INTO "area" VALUES('EPSG','3657','Norway - onshore - 16ºE to 17ºE','Norway - onshore - between 16ºE and 17ºE.',66.88,69.45,16.0,17.0,0); +INSERT INTO "area" VALUES('EPSG','3658','Norway - onshore - 17ºE to 18ºE','Norway - onshore - between 17ºE and 18ºE.',67.94,69.68,17.0,18.0,0); +INSERT INTO "area" VALUES('EPSG','3659','Germany - Schleswig-Holstein - west of 10.5°E','Germany - Schleswig-Holstein - west of 10°30''E including Heligoland.',53.37,55.09,7.8,10.5,0); +INSERT INTO "area" VALUES('EPSG','3660','Norway - onshore - 18ºE to 19ºE','Norway - onshore - between 18ºE and 19ºE.',68.04,70.27,18.0,19.0,0); +INSERT INTO "area" VALUES('EPSG','3661','Norway - onshore - 19ºE to 20ºE','Norway - onshore - between 19ºE and 20ºE.',68.33,70.34,19.0,20.0,0); +INSERT INTO "area" VALUES('EPSG','3662','Norway - onshore - 20ºE to 21ºE','Norway - onshore - between 20ºE and 21ºE.',68.37,70.29,20.0,21.0,0); +INSERT INTO "area" VALUES('EPSG','3663','Norway - onshore - 21ºE to 22ºE','Norway - onshore - between 21ºE and 22ºE.',69.03,70.71,21.0,22.0,0); +INSERT INTO "area" VALUES('EPSG','3664','USA - CONUS and Alaska - onshore','United States (USA) - CONUS and Alaska - onshore - Alabama; Alaska mainland; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming.',24.41,71.4,-168.26,-66.91,0); +INSERT INTO "area" VALUES('EPSG','3665','Norway - onshore - 22ºE to 23ºE','Norway - onshore - between 22ºE and 23ºE.',68.69,70.81,22.0,23.0,0); +INSERT INTO "area" VALUES('EPSG','3666','Indonesia - Java and Java Sea','Indonesia - Java and Bali onshore, offshore southern Java Sea, Madura Strait and western Bali Sea.',-8.91,-4.07,105.06,117.01,0); +INSERT INTO "area" VALUES('EPSG','3667','Norway - onshore - 23ºE to 24ºE','Norway - onshore - between 23ºE and 24ºE.',68.62,71.08,23.0,24.0,0); +INSERT INTO "area" VALUES('EPSG','3668','Norway - onshore - 24ºE to 25ºE','Norway - onshore - between 24ºE and 25ºE.',68.58,71.16,24.0,25.0,0); +INSERT INTO "area" VALUES('EPSG','3669','Norway - onshore - 25ºE to 26ºE','Norway - onshore - between 25ºE and 26ºE.',68.59,71.21,25.0,26.0,0); +INSERT INTO "area" VALUES('EPSG','3670','Portugal - Azores and Madeira','Portugal - Azores and Madeira island groups and surrounding EEZ - Flores, Corvo; Graciosa, Terceira, Sao Jorge, Pico, Faial; Sao Miguel, Santa Maria; Madeira, Porto Santo, Desertas; Selvagens.',29.24,43.07,-35.58,-12.48,0); +INSERT INTO "area" VALUES('EPSG','3671','Norway - onshore - 26ºE to 27ºE','Norway - onshore - between 26ºE and 27ºE.',69.71,71.17,26.0,27.0,0); +INSERT INTO "area" VALUES('EPSG','3672','Norway - onshore - 27ºE to 28ºE','Norway - onshore - between 27ºE and 28ºE.',69.9,71.17,27.0,28.0,0); +INSERT INTO "area" VALUES('EPSG','3673','Norway - onshore - 28ºE to 29ºE','Norway - onshore - between 28ºE and 29ºE.',69.03,71.13,28.0,29.0,0); +INSERT INTO "area" VALUES('EPSG','3674','Norway - onshore - 29ºE to 30ºE','Norway - onshore - between 29ºE and 30ºE.',69.02,70.93,29.0,30.0,0); +INSERT INTO "area" VALUES('EPSG','3675','Paraguay - north of 22°S','Paraguay - north of 22°S.',-22.0,-19.29,-62.57,-57.81,0); +INSERT INTO "area" VALUES('EPSG','3676','Norway - onshore - east of 30ºE','Norway - onshore - east of 30ºE.',69.46,70.77,30.0,31.22,0); +INSERT INTO "area" VALUES('EPSG','3677','Portugal - Azores 30°W to 24°W','Portugal - between 30°W and 24°W - central and eastern Azores - Graciosa, Terceira, Sao Jorge, Pico, Faial; Sao Miguel and Santa Maria islands and surrounding EEZ.',33.52,42.96,-30.0,-24.0,0); +INSERT INTO "area" VALUES('EPSG','3678','Portugal - Madeira and EEZ E of 18°W','Portugal - Madeira, Porto Santo, Desertas and Selvagens islands and surrounding EEZ east of 18°W.',29.24,36.46,-18.0,-12.48,0); +INSERT INTO "area" VALUES('EPSG','3679','Portugal - Madeira island onshore','Portugal - Madeira island onshore.',32.58,32.93,-17.31,-16.66,0); +INSERT INTO "area" VALUES('EPSG','3680','Portugal - Porto Santo island onshore','Portugal - Porto Santo island (Madeira archipelago) onshore.',32.96,33.15,-16.44,-16.23,0); +INSERT INTO "area" VALUES('EPSG','3681','Portugal - Azores C - Graciosa onshore','Portugal - central Azores - Graciosa island onshore.',38.97,39.14,-28.13,-27.88,0); +INSERT INTO "area" VALUES('EPSG','3682','Portugal - Azores - west of 30°W','Portugal - west of 30°W - western Azores - Flores and Corvo islands and surrounding EEZ.',35.25,43.07,-35.58,-30.0,0); +INSERT INTO "area" VALUES('EPSG','3683','Portugal - Azores E - Santa Maria onshore','Portugal - eastern Azores - Santa Maria island onshore.',36.87,37.08,-25.26,-24.96,0); +INSERT INTO "area" VALUES('EPSG','3684','Portugal - Azores W - Flores onshore','Portugal - western Azores - Flores island onshore.',39.3,39.58,-31.34,-31.07,0); +INSERT INTO "area" VALUES('EPSG','3685','Portugal - Azores W - Corvo onshore','Portugal - western Azores - Corvo island onshore.',39.63,39.77,-31.18,-31.02,0); +INSERT INTO "area" VALUES('EPSG','3686','Colombia - mainland and offshore Caribbean','Colombia - mainland and offshore Caribbean.',-4.23,13.68,-79.1,-66.87,0); +INSERT INTO "area" VALUES('EPSG','3687','Australia - SA and WA 126°E to 132°E','Australia - South Australia west of 132°E, Western Australia east of 126°E, offshore federal waters between 126°E and 129°E.',-37.05,-9.37,125.99,132.01,0); +INSERT INTO "area" VALUES('EPSG','3688','Australia - SA 132°E to 138°E','Australia - South Australia between 132°E and 138°E.',-36.14,-25.99,132.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','3689','Australia - SA and Qld 138°E to 144°E','Australia - South Australia east of 138°E, Queensland west of 144°E.',-38.13,-9.86,138.0,144.01,0); +INSERT INTO "area" VALUES('EPSG','3690','Australia - Qld 144°E to 150°E','Australia - Queensland between 144°E and 150°E.',-29.01,-14.01,144.0,150.0,0); +INSERT INTO "area" VALUES('EPSG','3691','Australia - Qld east of 150°E','Australia - Queensland east of 150°E.',-29.19,-22.0,150.0,153.61,0); +INSERT INTO "area" VALUES('EPSG','3692','Brazil - Reconcavo and Jacuipe','Brazil - offshore - Reconcavo and Jacuipe basins.',-13.57,-11.18,-39.09,-35.31,0); +INSERT INTO "area" VALUES('EPSG','3693','Brazil - Tucano and Jatoba','Brazil - Tucano North, Tucano Central, Tucano South and Jatoba basins.',-12.27,-8.39,-39.14,-37.09,0); +INSERT INTO "area" VALUES('EPSG','3694','France - onshore - mainland and Corsica','France - onshore - mainland and Corsica.',41.31,51.14,-4.87,9.63,0); +INSERT INTO "area" VALUES('EPSG','3695','Iraq - 31.4°N to 33°N, 43.9°E to 46.1°E (map 16)','Iraq - between UTM 3470000mN and 3650000mN (approximately 31°21''N and 32°58''N) and between UTM 400000mE and 600000mE (approximately 43°56''E and 46°04''E).',31.36,32.99,43.92,46.08,0); +INSERT INTO "area" VALUES('EPSG','3696','Brazil - Sergipe and Alagoas','Brazil - offshore - Sergipe and Alagoas basins.',-13.58,-8.73,-37.34,-32.01,0); +INSERT INTO "area" VALUES('EPSG','3697','Brazil - Paraiba-Pernambuco','Brazil - offshore - Paraiba-Pernambuco basin.',-10.17,-4.6,-35.1,-29.13,0); +INSERT INTO "area" VALUES('EPSG','3698','Brazil - Potiguar, Ceara and Barreirinhas','Brazil - offshore - Potiguar, Ceara and Barreirinhas basins.',-6.5,4.26,-44.79,-26.0,0); +INSERT INTO "area" VALUES('EPSG','3699','Brazil - Cumuruxatiba, Jequitinhonha and Camamu-Almada','Brazil - offshore - Cumuruxatiba, Jequitinhonha and Camamu-Almada basins.',-17.7,-13.01,-39.22,-34.6,0); +INSERT INTO "area" VALUES('EPSG','3700','Brazil - Santos and Pelotas','Brazil - offshore - Santos and Pelotas basins.',-35.71,-22.66,-53.38,-40.2,0); +INSERT INTO "area" VALUES('EPSG','3701','Iraq - 34.6°N to 36.2°N, west of 42.8°E (map 5)','Iraq - between UTM 3830000mN and 4010000mN (approximately 34°35''N and 36°13''N) and west of UTM 300000mE (approximately 42°48''E).',34.55,36.22,41.09,42.82,0); +INSERT INTO "area" VALUES('EPSG','3702','Iraq - SE','Iraq - onshore southeast.',29.06,32.51,43.98,48.61,0); +INSERT INTO "area" VALUES('EPSG','3703','Germany - Lower Saxony west of 7.5°E','Germany - Niedersachsen onshore west of 7°30''E.',52.23,53.81,6.58,7.5,0); +INSERT INTO "area" VALUES('EPSG','3704','Iraq - 31.4°N to 33°N, east of 46.1°E (map 17)','Iraq - between UTM 3470000mN and 3650000mN (approximately 31°21''N and 32°58''N) and east of UTM 600000mE (approximately 46°04''E).',31.33,32.99,46.05,47.87,0); +INSERT INTO "area" VALUES('EPSG','3705','Germany - Lower Saxony east of 10.5°E','Germany - Niedersachsen east of 10°30''E.',51.55,53.38,10.5,11.59,0); +INSERT INTO "area" VALUES('EPSG','3706','Iraq - 29.7 to 31.4°N, 42°E to 43.9°E (map 19)','Iraq - between UTM 3290000mN and 3470000mN (approximately 29°47''N and 31°21''N) and between 42°E and UTM 400000mE (approximately 43°56''E).',29.75,31.37,42.0,43.97,0); +INSERT INTO "area" VALUES('EPSG','3707','Germany - Lower Saxony 7.5°E to 10.5°E','Germany - Niedersachsen between 7°30''E and 10°30''E.',51.28,53.95,7.5,10.51,0); +INSERT INTO "area" VALUES('EPSG','3708','Iraq - 29.7°N to 31.4°N, 43.9°E to 46.1°E (map 20)','Iraq - between UTM 3290000mN and 3470000mN (approximately 29°47''N and 31°21''N) and between UTM 400000mE and 600000mE (approximately 43°56''E and 46°04''E).',29.73,31.37,43.94,46.06,0); +INSERT INTO "area" VALUES('EPSG','3709','Iraq - 31.4°N to 33°N, 42°E to 43.9°E (map 15)','Iraq - between UTM 3470000mN and 3650000mN (approximately 31°21''N and 32°58''N) and between 42°E and UTM 400000mE (approximately 43°56''E).',31.32,32.99,42.0,43.95,0); +INSERT INTO "area" VALUES('EPSG','3710','Iraq - 29.7°N to 31.4°N, 46.1°E to 48°E (map 21)','Iraq - between UTM 3290000mN and 3470000mN (approximately 29°47''N and 31°21''N) and between UTM 600000mE (approximately 46°04''E) and 48°E.',29.72,31.37,46.03,48.0,0); +INSERT INTO "area" VALUES('EPSG','3711','Iraq - south of 29.7°N, west of 46.1°E (map 24)','Iraq - south of UTM 3290000mN (approximately 29°47''N) and west of UTM 600000mE (approximately 46°04''E).',29.09,29.75,43.99,46.04,0); +INSERT INTO "area" VALUES('EPSG','3712','Iraq - south of 29.7°N, east of 46.1°E (map 25)','Iraq - south of UTM 3290000mN (approximately 29°47''N) and east of UTM 600000mE (approximately 46°04''E).',29.06,29.74,46.02,47.02,0); +INSERT INTO "area" VALUES('EPSG','3713','Asia - Korea N and S - west of 126°E','Democratic People''s Republic of Korea (North Korea) and Republic of Korea (South Korea) - onshore west of 126°E.',33.99,40.9,124.27,126.0,0); +INSERT INTO "area" VALUES('EPSG','3714','Iraq - north of 36.2°N, west of 42°E (map 1)','Iraq - north of UTM 4010000mN (approximately 36°13''N and west of 42°E.',36.19,36.75,41.27,42.0,0); +INSERT INTO "area" VALUES('EPSG','3715','Iraq - 34.6°N to 36.2°N, 42.8°E to 45°E (map 6)','Iraq - between UTM 3830000mN and 4010000mN (approximately 34°35''N and 36°13''N) and between UTM 300000mE (approximately 42°48''E) and 45°E.',34.59,36.24,42.77,45.0,0); +INSERT INTO "area" VALUES('EPSG','3716','Asia - Korea N and S - 126°E to 128°E','Democratic People''s Republic of Korea (North Korea) and Republic of Korea (South Korea) - onshore between 126°E and 128°E.',33.14,41.8,126.0,128.0,0); +INSERT INTO "area" VALUES('EPSG','3717','Iraq - north of 36.2°N, 42°E to 43.9°E (map 2)','Iraq - north of UTM 4010000mN (approximately 36°13''N) and between 42°E and UTM 400000mE (approximately 43°56''E).',36.19,37.39,42.0,43.89,0); +INSERT INTO "area" VALUES('EPSG','3718','Iraq - 34.6°N to 36.2°N, east of 45°E (map 7)','Iraq - between UTM 3830000mN and 4010000mN (approximately 34°35''N and 36°13''N) and east of 45°E.',34.6,36.24,45.0,46.35,0); +INSERT INTO "area" VALUES('EPSG','3719','Iraq - north of 36.2°N, east of 43.9°E (map 3)','Iraq - north of UTM 4010000mN (approximately 36°13''N) and east of UTM 400000mE (approximatrely 43°56''E).',36.22,37.33,43.87,45.33,0); +INSERT INTO "area" VALUES('EPSG','3720','Korea, Republic of (South Korea) - 130°E to 132°E onshore','Republic of Korea (South Korea) - onshore between 130°E and 132°E.',37.39,37.62,130.71,131.01,0); +INSERT INTO "area" VALUES('EPSG','3721','Korea, Republic of (South Korea) - 126°E to 128°E Jeju','Republic of Korea (South Korea) - between 126°E and 128°E - Jeju island onshore.',33.14,33.61,126.09,127.01,0); +INSERT INTO "area" VALUES('EPSG','3722','Iraq - 33°N to 34.6°N, west of 40.1°E (map 8)','Iraq - north of UTM 3650000mN (approximately 32°58''N) and west of UTM zone 37 600000mE (approximately 40°04''E).',32.98,33.99,38.79,40.09,0); +INSERT INTO "area" VALUES('EPSG','3723','Iraq - 33°N to 34.6°N, 40.1°E to 42°E (map 9)','Iraq - between UTM 3650000mN and 3830000mN (approximately 32°58''N and 34°35''N) and between UTM zone 37 600000mE (approximately 40°04''E) and 42°E.',32.95,34.6,40.07,42.0,0); +INSERT INTO "area" VALUES('EPSG','3724','Iraq - 33°N to 34.6°N, 42°E to 43.9°E (map 10)','Iraq - between UTM 3650000mN and 3830000mN (approximately 32°58''N and 34°35''N) and between 42°E and UTM 400000mE (approximately 43°56''E).',32.95,34.61,42.0,43.93,0); +INSERT INTO "area" VALUES('EPSG','3725','Iraq - 33°N to 34.6°N, 43.9°E to 46.1°E (map 11)','Iraq - between UTM 3650000mN and 3830000mN (approximately 32°58''N and 34°35''N) and between UTM 400000mE and 600000mE (approximately 43°56''E and 46°04''E).',32.98,34.62,43.9,46.2,0); +INSERT INTO "area" VALUES('EPSG','3726','Asia - Korea N and S - 128°E to 130°E','Democratic People''s Republic of Korea (North Korea) and Republic of Korea (South Korea) - onshore between 128°E and 130°E.',34.49,43.01,128.0,130.0,0); +INSERT INTO "area" VALUES('EPSG','3727','Asia - Korea N and S - east of 130°E','Democratic People''s Republic of Korea (North Korea) and Republic of Korea (South Korea) - onshore east of 130°E.',37.39,42.98,130.0,131.01,0); +INSERT INTO "area" VALUES('EPSG','3728','Iraq - 31.4°N to 33°N, 40.1°E to 42°E (map 14)','Iraq - between UTM 3470000mN and 3650000mN (approximately 31°21''N and 32°58''N) and between UTM zone 37 600000mE (approximately 40°04''E) and 42°E.',31.32,32.99,40.05,42.0,0); +INSERT INTO "area" VALUES('EPSG','3729','Iraq - 31.4°N to 33°N, west of 40.1°E (map 13)','Iraq - sorth of UTM 3650000mN (approximately 32°58''N) and west of UTM zone 37 600000mE (approximately 40°04''E).',32.0,32.99,38.92,40.08,0); +INSERT INTO "area" VALUES('EPSG','3730','Korea, Republic of (South Korea) - 126°E to 128°E mainland','Republic of Korea (South Korea) - between 126°E and 128°E - mainland and nearshore.',33.96,38.33,126.0,128.0,0); +INSERT INTO "area" VALUES('EPSG','3731','Georgia - offshore','Georgia - offshore.',41.54,43.33,38.97,41.71,0); +INSERT INTO "area" VALUES('EPSG','3732','Spain - Catalonia onshore','Spain - Catalonia onshore.',40.49,42.86,0.16,3.39,0); +INSERT INTO "area" VALUES('EPSG','3733','Bolivia - east of 60°W','Bolivia - east of 60°W.',-20.17,-16.27,-60.0,-57.52,0); +INSERT INTO "area" VALUES('EPSG','3734','Bhutan - Bumthang district','Bhutan - Bumthang district.',27.33,28.09,90.46,91.02,0); +INSERT INTO "area" VALUES('EPSG','3735','Thailand - onshore east of 102°E','Thailand - onshore east of 102°E.',6.02,18.44,102.0,105.64,0); +INSERT INTO "area" VALUES('EPSG','3736','Italy - mainland and Sicily','Italy - mainland (including San Marino and Vatican City State) and Sicily.',36.59,47.1,6.62,18.58,0); +INSERT INTO "area" VALUES('EPSG','3737','Bhutan - Chhukha district','Bhutan - Chhukha district.',26.71,27.32,89.26,89.83,0); +INSERT INTO "area" VALUES('EPSG','3738','Bhutan - Dagana district','Bhutan - Dagana district.',26.7,27.29,89.63,90.08,0); +INSERT INTO "area" VALUES('EPSG','3739','Korea, Republic of (South Korea) - mainland','Republic of Korea (South Korea) - mainland onshore.',33.96,38.64,125.75,129.65,0); +INSERT INTO "area" VALUES('EPSG','3740','Bhutan - Gasa district','Bhutan - Gasa district.',27.72,28.33,89.44,90.47,0); +INSERT INTO "area" VALUES('EPSG','3741','Thailand - onshore and Gulf of Thailand','Thailand - onshore plus offshore Gulf of Thailand.',5.63,20.46,97.34,105.64,0); +INSERT INTO "area" VALUES('EPSG','3742','Bhutan - Ha district','Bhutan - Ha district.',27.02,27.62,88.9,89.39,0); +INSERT INTO "area" VALUES('EPSG','3743','Bhutan - Lhuentse district','Bhutan - Lhuentse district.',27.39,28.09,90.77,91.49,0); +INSERT INTO "area" VALUES('EPSG','3744','Europe - Ireland (Republic and Ulster) - on- and offshore','Ireland - onshore. United Kingdom (UK) - Northern Ireland (Ulster) - onshore and offshore.',51.33,55.4,-10.6,-5.33,1); +INSERT INTO "area" VALUES('EPSG','3745','Bhutan - Mongar district','Bhutan - Mongar district.',26.93,27.61,90.95,91.5,0); +INSERT INTO "area" VALUES('EPSG','3746','Bhutan - Paro district','Bhutan - Paro district.',27.18,27.79,89.12,89.56,0); +INSERT INTO "area" VALUES('EPSG','3747','Bhutan - Pemagatshel district','Bhutan - Pemagatshel district.',26.78,27.18,91.0,91.56,0); +INSERT INTO "area" VALUES('EPSG','3748','Latin America - 120°W to 114°W','Central America between 120°W and 114°W, northern hemisphere, onshore and offshore.',15.01,32.72,-120.0,-114.0,0); +INSERT INTO "area" VALUES('EPSG','3749','Bhutan - Punakha district','Bhutan - Punakha district.',27.46,27.87,89.63,90.08,0); +INSERT INTO "area" VALUES('EPSG','3750','Bhutan - Samdrup Jongkhar district','Bhutan - Samdrup Jongkhar district.',26.79,27.25,91.39,92.13,0); +INSERT INTO "area" VALUES('EPSG','3751','Bhutan - Samtse district','Bhutan - Samtse district.',26.8,27.28,88.74,89.38,0); +INSERT INTO "area" VALUES('EPSG','3752','Bhutan - Sarpang district','Bhutan - Sarpang district.',26.73,27.23,90.01,90.78,0); +INSERT INTO "area" VALUES('EPSG','3753','Bhutan - Thimphu district','Bhutan - Thimphu district.',27.14,28.01,89.22,89.77,0); +INSERT INTO "area" VALUES('EPSG','3754','Bhutan - Trashigang district','Bhutan - Trashigang district.',27.01,27.49,91.37,92.13,0); +INSERT INTO "area" VALUES('EPSG','3755','Bhutan - Trongsa district','Bhutan - Trongsa district.',27.13,27.79,90.26,90.76,0); +INSERT INTO "area" VALUES('EPSG','3756','Latin America - 114°W to 108°W','Central America between 114°W and 108°W, northern hemisphere, onshore and offshore.',15.09,32.27,-114.0,-108.0,0); +INSERT INTO "area" VALUES('EPSG','3757','Bhutan - Tsirang district','Bhutan - Tsirang district.',26.81,27.2,90.0,90.35,0); +INSERT INTO "area" VALUES('EPSG','3758','Bhutan - Wangdue Phodrang district','Bhutan - Wangdue Phodrang district.',27.11,28.08,89.71,90.54,0); +INSERT INTO "area" VALUES('EPSG','3759','Latin America - 108°W to 102°W','Central America between 108°W and 102°W, northern hemisphere, onshore and offshore.',14.05,31.79,-108.0,-102.0,0); +INSERT INTO "area" VALUES('EPSG','3760','Bhutan - Yangtse district','Bhutan - Yangtse district.',27.37,28.0,91.34,91.77,0); +INSERT INTO "area" VALUES('EPSG','3761','Bhutan - Zhemgang district','Bhutan - Zhemgang district.',26.77,27.39,90.53,91.19,0); +INSERT INTO "area" VALUES('EPSG','3762','New Zealand - North Island - One Tree vcrs','New Zealand - North Island - One Tree Point vertical CRS area.',-36.41,-34.36,172.61,174.83,0); +INSERT INTO "area" VALUES('EPSG','3763','Latin America - 102°W to 96°W','Central America between 102°W and 96°W, northern hemisphere, onshore and offshore.',12.3,29.81,-102.01,-96.0,0); +INSERT INTO "area" VALUES('EPSG','3764','New Zealand - North Island - Auckland vcrs','New Zealand - North Island - Auckland vertical CRS area.',-37.67,-36.12,174.0,176.17,0); +INSERT INTO "area" VALUES('EPSG','3765','French Guiana - coastal area west of 54°W','French Guiana - coastal area west of 54°W.',4.84,5.69,-54.45,-54.0,0); +INSERT INTO "area" VALUES('EPSG','3766','French Guiana - coastal area east of 54°W','French Guiana - coastal area east of 54°W.',3.43,5.81,-54.0,-51.61,0); +INSERT INTO "area" VALUES('EPSG','3767','Ireland - onshore','Ireland - onshore.',51.39,55.43,-10.56,-5.93,0); +INSERT INTO "area" VALUES('EPSG','3768','New Zealand - North Island - Moturiki vcrs','New Zealand - North Island - Moturiki vertical CRS area.',-40.59,-37.52,174.57,177.26,0); +INSERT INTO "area" VALUES('EPSG','3769','New Zealand - North Island - Taranaki vcrs','New Zealand - North Island - Taranaki vertical CRS area.',-39.92,-38.41,173.68,174.95,0); +INSERT INTO "area" VALUES('EPSG','3770','Vietnam - DBSCL 02 and 03','Vietnam - Mekong delta blocks DBSCL 02 and 03.',9.34,11.03,104.25,107.11,0); +INSERT INTO "area" VALUES('EPSG','3771','New Zealand - North Island - Gisborne vcrs','New Zealand - North Island - Gisborne vertical CRS area.',-39.04,-37.49,176.41,178.63,0); +INSERT INTO "area" VALUES('EPSG','3772','New Zealand - North Island - Hawkes Bay mc Napier vcrs','New Zealand - North Island - Hawkes Bay meridional circuit and Napier vertical crs area.',-40.57,-38.87,175.8,178.07,0); +INSERT INTO "area" VALUES('EPSG','3773','New Zealand - North Island - Wellington vcrs','New Zealand - North Island - Wellington vertical CRS area.',-41.67,-40.12,174.52,176.56,0); +INSERT INTO "area" VALUES('EPSG','3774','New Zealand - North Island - Wellington mc','New Zealand - North Island - Wellington meridional circuit area.',-41.5,-40.91,174.52,175.36,0); +INSERT INTO "area" VALUES('EPSG','3775','New Zealand - North Island - Wairarapa mc','New Zealand - North Island - Wairarapa meridional circuit area.',-41.67,-40.29,175.01,176.55,0); +INSERT INTO "area" VALUES('EPSG','3776','New Zealand - North Island - Wanganui mc','New Zealand - North Island - Wanganui meridional circuit area.',-40.97,-39.46,174.4,176.27,0); +INSERT INTO "area" VALUES('EPSG','3777','New Zealand - North Island - Taranaki mc','New Zealand - North Island - Taranaki meridional circuit area.',-39.78,-38.4,173.68,175.44,0); +INSERT INTO "area" VALUES('EPSG','3778','New Zealand - North Island - Tuhirangi mc','New Zealand - North Island - Tuhirangi meridional circuit area.',-39.55,-38.87,174.88,176.33,0); +INSERT INTO "area" VALUES('EPSG','3779','New Zealand - North Island - Bay of Plenty mc','New Zealand - North Island - Bay of Plenty meridional circuit area.',-39.13,-37.22,175.75,177.23,0); +INSERT INTO "area" VALUES('EPSG','3780','New Zealand - North Island - Poverty Bay mc','New Zealand - North Island - Poverty Bay meridional circuit area.',-39.04,-37.49,176.73,178.63,0); +INSERT INTO "area" VALUES('EPSG','3781','New Zealand - North Island - Mount Eden mc','New Zealand - North Island - Mount Eden meridional circuit area.',-39.01,-34.1,171.99,176.12,0); +INSERT INTO "area" VALUES('EPSG','3782','New Zealand - South Island - Collingwood mc','New Zealand - South Island - Collingwood meridional circuit area.',-41.22,-40.44,172.16,173.13,0); +INSERT INTO "area" VALUES('EPSG','3783','New Zealand - South Island - Karamea mc','New Zealand - South Island - Karamea meridional circuit area.',-41.49,-40.75,171.96,172.7,0); +INSERT INTO "area" VALUES('EPSG','3784','New Zealand - South Island - Nelson mc','New Zealand - South Island - Nelson meridional circuit area.',-42.18,-40.66,172.4,174.08,0); +INSERT INTO "area" VALUES('EPSG','3785','New Zealand - South Island - Marlborough mc','New Zealand - South Island - Marlborough meridional circuit area.',-42.65,-40.85,172.95,174.46,0); +INSERT INTO "area" VALUES('EPSG','3786','New Zealand - South Island - Buller mc','New Zealand - South Island - Buller meridional circuit area.',-42.19,-41.42,171.27,172.41,0); +INSERT INTO "area" VALUES('EPSG','3787','New Zealand - South Island - Grey mc','New Zealand - South Island - Grey meridional circuit area.',-42.74,-41.5,171.15,172.75,0); +INSERT INTO "area" VALUES('EPSG','3788','New Zealand - South Island - Amuri mc','New Zealand - South Island - Amuri meridional circuit area.',-42.95,-42.09,171.88,173.55,0); +INSERT INTO "area" VALUES('EPSG','3789','New Zealand - South Island - Hokitika mc','New Zealand - South Island - Hokitika meridional circuit area.',-43.23,-42.41,170.39,171.89,0); +INSERT INTO "area" VALUES('EPSG','3790','New Zealand - South Island - Mount Pleasant mc','New Zealand - South Island - Mount Pleasant meridional circuit area.',-43.96,-42.69,171.11,173.38,0); +INSERT INTO "area" VALUES('EPSG','3791','New Zealand - South Island - Okarito mc','New Zealand - South Island - Okarito meridional circuit area.',-43.85,-43.0,169.21,170.89,0); +INSERT INTO "area" VALUES('EPSG','3792','New Zealand - South Island - Gawler mc','New Zealand - South Island - Gawler meridional circuit area.',-44.25,-43.13,170.68,172.26,0); +INSERT INTO "area" VALUES('EPSG','3793','New Zealand - South Island - Timaru mc','New Zealand - South Island - Timaru meridional circuit area.',-44.98,-43.35,169.82,171.55,0); +INSERT INTO "area" VALUES('EPSG','3794','New Zealand - South Island - Jacksons Bay mc','New Zealand - South Island - Jacksons Bay meridional circuit area.',-44.4,-43.67,168.02,170.01,0); +INSERT INTO "area" VALUES('EPSG','3795','New Zealand - South Island - Lindis Peak mc','New Zealand - South Island - Lindis Peak meridional circuit area.',-45.4,-43.71,168.62,170.24,0); +INSERT INTO "area" VALUES('EPSG','3796','New Zealand - South Island - Observation Point mc','New Zealand - South Island - Observation Point meridional circuit area.',-45.82,-44.61,169.77,171.24,0); +INSERT INTO "area" VALUES('EPSG','3797','New Zealand - South Island - Mount Nicholas mc','New Zealand - South Island - Mount Nicholas meridional circuit area.',-45.58,-44.29,167.72,169.11,0); +INSERT INTO "area" VALUES('EPSG','3798','New Zealand - South Island - North Taieri mc','New Zealand - South Island - North Taieri meridional circuit area.',-46.73,-45.23,168.64,170.87,0); +INSERT INTO "area" VALUES('EPSG','3799','New Zealand - South Island - Mount York mc','New Zealand - South Island - Mount York meridional circuit area.',-46.33,-44.53,166.37,168.21,0); +INSERT INTO "area" VALUES('EPSG','3800','New Zealand - South and Stewart Islands - Bluff mc','New Zealand - Stewart Island; South Island - Bluff meridional circuit area.',-47.33,-45.33,167.29,168.97,0); +INSERT INTO "area" VALUES('EPSG','3801','New Zealand - South Island - Bluff vcrs','New Zealand - South Island - Bluff vertical CRS area.',-46.71,-46.26,168.01,168.86,0); +INSERT INTO "area" VALUES('EPSG','3802','New Zealand - South Island - Nelson vcrs','New Zealand - South Island - north of approximately 42°20''S - Nelson vertical CRS area.',-42.44,-40.44,171.82,174.46,0); +INSERT INTO "area" VALUES('EPSG','3803','New Zealand - South Island - Dunedin vcrs','New Zealand - South Island - between approximately 44°S and 46°S - Dunedin vertical CRS area.',-46.4,-43.82,167.73,171.28,0); +INSERT INTO "area" VALUES('EPSG','3804','New Zealand - South Island - Lyttleton vcrs','New Zealand - South Island - between approximately 41°20''S and 45°S - Lyttleton vertical CRS area.',-44.92,-41.6,168.95,173.77,0); +INSERT INTO "area" VALUES('EPSG','3805','Bonaire, St Eustatius and Saba','Bonaire, St Eustatius and Saba - onshore and offshore.',11.66,17.96,-69.09,-62.76,0); +INSERT INTO "area" VALUES('EPSG','3806','New Zealand - South Island - Dunedin-Bluff vcrs','New Zealand - South Island - Dunedin-Bluff vertical CRS area.',-46.73,-44.52,166.37,169.95,0); +INSERT INTO "area" VALUES('EPSG','3807','Curacao','Curaçao - onshore and offshore.',11.66,15.35,-69.55,-68.54,0); +INSERT INTO "area" VALUES('EPSG','3808','Brazil - 36°W to 30°W offshore','Brazil - offshore between 36°W and 30°W, southern hemisphere.',-20.11,0.0,-36.0,-30.0,0); +INSERT INTO "area" VALUES('EPSG','3809','St Maarten','Sint Maarten - onshore and offshore.',17.81,18.07,-63.3,-62.92,0); +INSERT INTO "area" VALUES('EPSG','3810','Caribbean - St Maarten, St Eustatius and Saba - onshore','Caribbean - St Maarten, St Eustatius and Saba - onshore.',17.41,18.07,-63.31,-62.88,0); +INSERT INTO "area" VALUES('EPSG','3811','Chile - 72°W to 66°W','Chile - 72°W to 66°W, onshore and offshore.',-59.87,-17.5,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','3812','Nigeria - offshore deep water - east of 6°E','Nigeria - offshore deep water - east of 6°E.',2.61,3.68,6.0,7.82,0); +INSERT INTO "area" VALUES('EPSG','3813','Nigeria - offshore blocks OPL 209, 219 and 220','Nigeria - offshore blocks OPL 209, 219 and 220.',3.25,5.54,4.01,6.96,0); +INSERT INTO "area" VALUES('EPSG','3814','Nigeria - offshore blocks OML 99-102 and OPL 222 and 223','Nigeria - offshore blocks OML 99-102 and OPL 222 and 223.',3.25,4.51,7.16,8.25,0); +INSERT INTO "area" VALUES('EPSG','3815','Nigeria - offshore blocks OPL 209-213 and 316','Nigeria - offshore blocks OPL 209-213 and 316.',4.22,6.31,3.83,5.17,0); +INSERT INTO "area" VALUES('EPSG','3816','Nigeria - offshore blocks OPL 217-223','Nigeria - offshore blocks OPL 217-223.',3.24,3.86,5.58,8.0,0); +INSERT INTO "area" VALUES('EPSG','3817','Nigeria - offshore blocks OPL 210, 213, 217 and 218','Nigeria - offshore blocks OPL 210, 213, 217 and 218.',3.24,5.54,4.41,6.29,0); +INSERT INTO "area" VALUES('EPSG','3818','New Zealand - North Island - Tararu vcrs','New Zealand - North Island - Tararu vertical CRS area.',-37.21,-36.78,175.44,175.99,0); +INSERT INTO "area" VALUES('EPSG','3819','Nigeria - offshore blocks OPL 215 and 221','Nigeria - offshore blocks OPL 215 and 221.',3.25,4.23,5.02,7.31,0); +INSERT INTO "area" VALUES('EPSG','3820','Bonaire - St Eustatius and Saba','Bonaire, St Eustatius and Saba - St Eustatius and Saba - onshore and offshore.',16.68,17.96,-64.02,-62.76,0); +INSERT INTO "area" VALUES('EPSG','3821','Bonaire','Bonaire, St Eustatius and Saba - Bonaire - onshore and offshore.',11.66,15.3,-69.09,-67.98,0); +INSERT INTO "area" VALUES('EPSG','3822','Bonaire - onshore','Bonaire, St Eustatius and Saba - Bonaire - onshore.',11.97,12.36,-68.47,-68.14,0); +INSERT INTO "area" VALUES('EPSG','3823','Curacao - onshore','Curaçao - onshore.',11.99,12.44,-69.22,-68.69,0); +INSERT INTO "area" VALUES('EPSG','3824','Nigeria - Gongola Basin','Nigeria - onshore - Gongola Basin',8.78,11.63,9.41,12.13,0); +INSERT INTO "area" VALUES('EPSG','3825','Caribbean - French Antilles west of 60°W','French Antilles onshore and offshore west of 60°W - Guadeloupe (including Grande Terre, Basse Terre, Marie Galante, Les Saintes, Iles de la Petite Terre, La Desirade, St Barthélemy, and northern St Martin) and Martinique.',14.08,18.32,-63.66,-60.0,0); +INSERT INTO "area" VALUES('EPSG','3826','Uruguay - west of 54°W','Uruguay - west of 54°W, onshore and offshore.',-36.63,-30.09,-58.49,-54.0,0); +INSERT INTO "area" VALUES('EPSG','3827','Bolivia - west of 66°W','Bolivia - west of 66°W.',-22.91,-9.77,-69.66,-66.0,0); +INSERT INTO "area" VALUES('EPSG','3828','Uruguay - east of 54°W','Uruguay - east of 54°W, onshore and offshore.',-37.77,-31.9,-54.0,-50.01,0); +INSERT INTO "area" VALUES('EPSG','3829','Chile - 78°W to 72°W','Chile - 78°W to 72°W, onshore and offshore.',-59.36,-18.35,-78.0,-71.99,0); +INSERT INTO "area" VALUES('EPSG','3830','South America - 84°W to 78°W, N hemisphere and SAD69 by country','South America between 84°W and 78°W, northern hemisphere, onshore.',0.0,2.7,-80.18,-78.0,0); +INSERT INTO "area" VALUES('EPSG','3831','South America - 84°W to 78°W, S hemisphere and SAD69 by country','South America between 84°W and 78°W, southern hemisphere, onshore.',-10.53,0.0,-81.41,-78.0,0); +INSERT INTO "area" VALUES('EPSG','3832','South America - 78°W to 72°W, N hemisphere and SAD69 by country','South America between 78°W and 72°W, northern hemisphere, onshore.',0.0,12.31,-78.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','3833','South America - 78°W to 72°W, S hemisphere and SAD69 by country','Brazil - west of 72°W. In rest of South America between 78°W and 72°W, southern hemisphere onshore north of 45°S.',-45.0,0.0,-78.0,-71.99,0); +INSERT INTO "area" VALUES('EPSG','3834','South America - 72°W to 66°W, N hemisphere onshore','South America between 72°W and 66°W, northern hemisphere, onshore, but excluding the area between approximately 0°N, 70°W to 2°N, 70°W to 2°N, 66°W.',0.0,12.52,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','3835','South America - 72°W to 66°W, S hemisphere onshore','Brazil - between 72°W and 66°W, northern and southern hemispheres. In rest of South America between 72°W and 66°W, southern hemisphere onshore north of 45°S.',-45.0,2.15,-72.0,-65.99,0); +INSERT INTO "area" VALUES('EPSG','3836','Peru - east of 72°W','Peru - east of 72°W, onshore and offshore.',-20.44,-2.14,-72.0,-68.67,0); +INSERT INTO "area" VALUES('EPSG','3837','Peru - 84°W to 78°W','Peru - between 84°W and 78°W, onshore and offshore.',-17.33,-3.11,-84.0,-78.0,0); +INSERT INTO "area" VALUES('EPSG','3838','Peru - 78°W to 72°W','Peru - between 78°W and 72°W, onshore and offshore.',-21.05,-0.03,-78.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','3839','South America - 66°W to 60°W, N hemisphere and SAD69 by country','South America between 66°W and 60°W, northern hemisphere, onshore, but excluding most of the area south of 4°N.',0.64,11.23,-66.0,-59.99,0); +INSERT INTO "area" VALUES('EPSG','3840','South America - 66°W to 60°W, S hemisphere and SAD69 by country','Brazil - between 66°W and 60°W, northern and southern hemispheres. In rest of South America between 66°W and 60°W, southern hemisphere onshore.',-45.0,5.28,-66.0,-59.99,0); +INSERT INTO "area" VALUES('EPSG','3841','South America - 60°W to 54°W, N hemisphere and SAD69 by country','South America between 60°W and 54°W, northern hemisphere onshore, but excluding most of the area south of approximately 2°N.',1.18,8.6,-60.0,-54.0,0); +INSERT INTO "area" VALUES('EPSG','3842','Brazil - east of 30°W','Brazil - east of 30°W, northern and southern hemispheres, onshore and offshore.',-23.86,4.26,-30.0,-25.28,0); +INSERT INTO "area" VALUES('EPSG','3843','Argentina - mainland onshore and offshore TdF','Argentina - mainland onshore and Atlantic offshore Tierra del Fuego.',-54.93,-21.78,-73.59,-53.65,0); +INSERT INTO "area" VALUES('EPSG','3844','Nicaragua - onshore north of 12°48''N','Nicaragua - onshore north of 12°48''N.',12.8,15.03,-87.74,-83.08,0); +INSERT INTO "area" VALUES('EPSG','3845','Brazil - SAD69','Brazil - onshore southeast of a line beginning at the intersection of the 54°W meridian with the northern national boundary then running southwards to 5°S, 54°W, southwestwards to 10°S, 60°W, and southwards to the national boundary. Offshore within 370km of the mainland.',-35.71,7.04,-60.57,-29.03,1); +INSERT INTO "area" VALUES('EPSG','3846','Greenland - southwest coast south of 63°N','Greenland - onshore southwest coastal area south of 63°N.',59.74,63.0,-50.72,-42.52,0); +INSERT INTO "area" VALUES('EPSG','3847','Nicaragua - onshore south of 12°48''N','Nicaragua - onshore south of 12°48''N.',10.7,12.8,-87.63,-83.42,0); +INSERT INTO "area" VALUES('EPSG','3848','Honduras - onshore north of 14°38''30"N','Honduras - onshore north of 14°38''30"N.',14.64,16.49,-89.23,-83.08,0); +INSERT INTO "area" VALUES('EPSG','3849','Costa Rica - onshore and offshore east of 86°30''W','Costa Rica - onshore and offshore east of 86°30''W.',2.21,11.77,-86.5,-81.43,0); +INSERT INTO "area" VALUES('EPSG','3850','Honduras - onshore south of 14°38''30"N','Honduras - onshore south of 14°38''30"N.',12.98,14.65,-89.36,-84.4,0); +INSERT INTO "area" VALUES('EPSG','3851','Brazil - 36°W to 30°W SAD69','Brazil - between 36°W and 30°W, northern and southern hemispheres, onshore and offshore within 370km of the mainland.',-20.1,-0.49,-36.0,-30.0,1); +INSERT INTO "area" VALUES('EPSG','3852','USA - 120°W to 114°W onshore','United States (USA) - between 120°W and 114°W - onshore - Arizona; California; Idaho; Montana; Nevada; Oregon; Utah; Washington.',32.26,49.01,-120.0,-114.0,0); +INSERT INTO "area" VALUES('EPSG','3853','Antarctica - McMurdo Sound region','Antarctica - McMurdo Sound region.',-81.0,-76.0,153.0,173.0,0); +INSERT INTO "area" VALUES('EPSG','3854','Antarctica - Borchgrevink Coast region','Antarctica - Borchgrevink Coast region.',-76.0,-73.0,157.0,173.0,0); +INSERT INTO "area" VALUES('EPSG','3855','Antarctica - Pennell Coast region','Antarctica - Pennell Coast region.',-73.0,-69.5,160.0,172.0,0); +INSERT INTO "area" VALUES('EPSG','3856','Antarctica - Ross Ice Shelf Region','Antarctica - Ross Ice Shelf Region.',-90.0,-76.0,150.0,-150.0,0); +INSERT INTO "area" VALUES('EPSG','3857','USA - 126°W to 120°W onshore','United States (USA) - between 126°W and 120°W - onshore - California; Oregon; Washington.',33.85,49.05,-124.79,-119.99,0); +INSERT INTO "area" VALUES('EPSG','3858','Venezuela - east of 66°W','Venezuela - east of 66°W, onshore and offshore.',0.64,16.75,-66.0,-58.95,0); +INSERT INTO "area" VALUES('EPSG','3859','Venezuela - 72°W and 66°W','Venezuela - between 72°W and 66°W, onshore and offshore.',0.73,15.64,-72.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','3860','USA - 102°W to 96°W onshore','United States (USA) - between 102°W and 96°W - onshore - Iowa; Kansas; Minnesota; Nebraska; North Dakota; Oklahoma; South Dakota; Texas.',25.83,49.01,-102.0,-95.99,0); +INSERT INTO "area" VALUES('EPSG','3861','USA - 96°W to 90°W onshore','United States (USA) - between 96°W and 90°W - onshore - Arkansas; Illinois; Iowa; Kansas; Louisiana; Michigan; Minnesota; Mississippi; Missouri; Nebraska; Oklahoma; Tennessee; Texas; Wisconsin.',28.42,49.38,-96.0,-89.99,0); +INSERT INTO "area" VALUES('EPSG','3862','USA - 90°W to 84°W onshore','United States (USA) - between 90°W and 84°W - onshore - Alabama; Arkansas; Florida; Georgia; Indiana; Illinois; Kentucky; Louisiana; Michigan; Minnesota; Mississippi; Missouri; North Carolina; Ohio; Tennessee; Wisconsin.',28.85,48.32,-90.0,-83.99,0); +INSERT INTO "area" VALUES('EPSG','3863','USA - 84°W to 78°W onshore','United States (USA) - between 84°W and 78°W - onshore - Florida; Georgia; Maryland; Michigan; New York; North Carolina; Ohio; Pennsylvania; South Carolina; Tennessee; Virginia; West Virginia.',24.41,46.13,-84.01,-78.0,0); +INSERT INTO "area" VALUES('EPSG','3864','North America - 126°W to 120°W and NAD83 by country','North America - between 126°W and 120°W - onshore and offshore. Canada - British Columbia; Northwest Territories; Yukon. United States (USA) - California; Oregon; Washington.',30.54,81.8,-126.0,-119.99,0); +INSERT INTO "area" VALUES('EPSG','3865','Canada - Labrador - 66°W to 63°W','Canada - Labrador - 66°W to 63°W.',51.58,60.52,-66.0,-63.0,0); +INSERT INTO "area" VALUES('EPSG','3866','North America - 132°W to 126°W and NAD83 by country','North America - between 132°W and 126°W - onshore and offshore. Canada - British Columbia; Northwest Territories; Yukon. United States (USA) - Alaska.',35.38,80.93,-132.0,-126.0,0); +INSERT INTO "area" VALUES('EPSG','3867','North America - 138°W to 132°W and NAD83 by country','North America - between 138°W and 132°W - onshore and offshore. Canada - British Columbia; Northwest Territiories; Yukon. United States (USA) - Alaska.',48.06,79.42,-138.0,-132.0,0); +INSERT INTO "area" VALUES('EPSG','3868','USA - 78°W to 72°W onshore','United States (USA) - between 78°W and 72°W - onshore - Connecticut; Delaware; Maryland; Massachusetts; New Hampshire; New Jersey; New York; North Carolina; Pennsylvania; Virginia; Vermont.',33.84,45.03,-78.0,-72.0,0); +INSERT INTO "area" VALUES('EPSG','3869','Costa Rica - onshore north of 9°32''N','Costa Rica - onshore north of 9°32''N.',9.53,11.22,-85.97,-82.53,0); +INSERT INTO "area" VALUES('EPSG','3870','Costa Rica - onshore south of 9°56''N','Costa Rica - onshore south of 9°56''N',7.98,9.94,-85.74,-82.53,0); +INSERT INTO "area" VALUES('EPSG','3871','USA - 72°W to 66°W onshore','United States (USA) - between 72°W and 66°W - onshore - Connecticut; Maine; Massachusetts; New Hampshire; New York (Long Island); Rhode Island; Vermont.',40.96,47.47,-72.0,-66.91,0); +INSERT INTO "area" VALUES('EPSG','3872','North America - 144°W to 138°W and NAD83 by country','North America - between 144°W and 138°W - onshore and offshore. Canada - British Columbia; Yukon. United States (USA) - Alaska.',52.05,73.59,-144.0,-137.99,0); +INSERT INTO "area" VALUES('EPSG','3873','Spain - Canary Islands onshore','Spain - Canary Islands onshore.',27.58,29.3,-18.22,-13.37,0); +INSERT INTO "area" VALUES('EPSG','3874','Brazil - Corrego Alegre 1961','Brazil - onshore - between 18°S and 27°30''S, also east of 54°W between 15°S and 18°S.',-27.5,-14.99,-58.16,-38.82,0); +INSERT INTO "area" VALUES('EPSG','3875','Canada - Labrador - 63°W to 60°W','Canada - Labrador between 63°W and 60°W.',52.0,58.92,-63.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','3876','Central America - Guatemala to Costa Rica','Costa Rica; El Salvador; Guatemala; Honduras; Nicaragua.',7.98,17.83,-92.29,-82.53,0); +INSERT INTO "area" VALUES('EPSG','3877','Brazil - 42°W to 36°W and south of 15°S onshore','Brazil - between 42°W and 36°W and south of 15°S, onshore.',-22.96,-14.99,-42.0,-38.82,0); +INSERT INTO "area" VALUES('EPSG','3878','Brazil - 54°W to 48°W and SAD69','Brazil - onshore and offshore northern and southern hemispheres between 54°W and 48°W.',-35.71,7.04,-54.01,-47.99,0); +INSERT INTO "area" VALUES('EPSG','3879','Germany - onshore east of 12°E','Germany - onshore east of 12°E.',47.46,54.74,12.0,15.04,0); +INSERT INTO "area" VALUES('EPSG','3880','Canada - Labrador - west of 66°W','Canada - Labrador - west of 66°W.',52.05,55.34,-67.81,-66.0,0); +INSERT INTO "area" VALUES('EPSG','3881','Brazil - 60°W to 54°W','Brazil - between 60°W and 54°W, northern and southern hemispheres.',-31.91,4.51,-60.0,-53.99,0); +INSERT INTO "area" VALUES('EPSG','3882','Papua New Guinea - west of 144°E','Papua New Guinea - west of 144°E, onshore and offshore.',-11.15,2.31,139.2,144.0,0); +INSERT INTO "area" VALUES('EPSG','3883','USA - Hawaii - main islands','United States (USA) - Hawaii - main islands onshore and offshore.',15.56,25.58,-163.74,-151.27,0); +INSERT INTO "area" VALUES('EPSG','3884','Brazil - SAD69 onshore south of 4°30''S','Brazil - onshore southeast of a line beginning at the intersection of the coast with the 4°30''S parallel, then westwards to 4°30''S, 54°W, then southwards to 5°S, 54°W, southwestwards to 10°S, 60°W, and southwards to the national boundary.',-33.78,-4.5,-60.57,-34.74,1); +INSERT INTO "area" VALUES('EPSG','3885','Papua New Guinea - 144°E to 150°E','Papua New Guinea - between 144°E and 150°E, onshore and offshore.',-13.88,2.58,144.0,150.01,0); +INSERT INTO "area" VALUES('EPSG','3886','Finland - onshore west of 19.5°E','Finland - onshore west of 19°30''E.',60.0,60.42,19.3,19.5,1); +INSERT INTO "area" VALUES('EPSG','3887','Brazil - onshore south of 14°S and east of 53°W','Brazil - onshore southeast of a line beginning at the intersection of the 53°W meridian with the northern national boundary then running southwards to 14°S, then westwards to the national boundary.',-33.78,4.43,-60.58,-34.74,0); +INSERT INTO "area" VALUES('EPSG','3888','Papua New Guinea - 150°E to 156°E','Papua New Guinea - between 150°E and 156°E, onshore and offshore.',-14.75,1.98,150.0,156.0,0); +INSERT INTO "area" VALUES('EPSG','3889','Europe - Fehmarnbelt outer','Fehmarnbelt area of Denmark and Germany.',54.33,54.83,10.66,12.01,0); +INSERT INTO "area" VALUES('EPSG','3890','Europe - Fehmarnbelt inner','Fehmarnbelt area of Denmark and Germany.',54.42,54.76,11.17,11.51,0); +INSERT INTO "area" VALUES('EPSG','3891','Canada - 60°W to 54°W and NAD27','Canada between 60°W and 54°W, onshore and offshore - Newfoundland and Labrador; Quebec.',40.57,68.93,-60.0,-54.0,0); +INSERT INTO "area" VALUES('EPSG','3892','Germany - offshore North Sea west of 4.5°E','Germany - offshore North Sea west of 4°30''E.',55.24,55.92,3.34,4.5,0); +INSERT INTO "area" VALUES('EPSG','3893','UK - Wytch Farm','United Kingdom (UK) - Wytch Farm area - onshore and offshore.',50.53,50.8,-2.2,-1.68,0); +INSERT INTO "area" VALUES('EPSG','3894','New Zealand - Chatham Island onshore','New Zealand - Chatham Island - onshore.',-44.18,-43.67,-176.92,-176.2,0); +INSERT INTO "area" VALUES('EPSG','3895','Ukraine - west of 24°E','Ukraine - west of 24°E.',47.95,51.66,22.15,24.0,0); +INSERT INTO "area" VALUES('EPSG','3896','Brazil - equatorial margin','Brazil - offshore - equatorial margin.',-5.74,7.04,-51.64,-32.43,0); +INSERT INTO "area" VALUES('EPSG','3897','France - offshore Mediterranean','France - offshore Mediterranean.',41.15,43.74,3.04,10.38,0); +INSERT INTO "area" VALUES('EPSG','3898','Ukraine - 24°E to 30°E','Ukraine - between 24°E and 30°E, onshore and offshore.',45.1,51.96,24.0,30.0,0); +INSERT INTO "area" VALUES('EPSG','3899','Europe - South Permian basin','Europe - South Permian basin.',50.5,56.0,-1.67,22.0,0); +INSERT INTO "area" VALUES('EPSG','3900','Europe - onshore - eastern - S-42(83)','Onshore Bulgaria, Czech Republic, Germany (former DDR), Hungary and Slovakia.',41.24,54.74,9.92,28.68,0); +INSERT INTO "area" VALUES('EPSG','3901','Germany - onshore west of 6°E','Germany - onshore west of 6°E.',50.97,51.83,5.87,6.0,0); +INSERT INTO "area" VALUES('EPSG','3902','Reunion','Reunion - onshore and offshore.',-24.72,-18.28,51.83,58.24,0); +INSERT INTO "area" VALUES('EPSG','3903','Ukraine - 30°E to 36°E','Ukraine - between 30°E and 36°E, onshore and offshore.',43.18,52.38,30.0,36.0,0); +INSERT INTO "area" VALUES('EPSG','3904','Germany - onshore between 6°E and 12°E','Germany - onshore between 6°E and 12°E.',47.27,55.09,6.0,12.0,0); +INSERT INTO "area" VALUES('EPSG','3905','Ukraine - east of 36°E','Ukraine - east of 36°E, onshore and offshore.',43.43,50.44,36.0,40.18,0); +INSERT INTO "area" VALUES('EPSG','3906','Ukraine - west of 22.5°E','Ukraine - west of 22°30''E.',48.24,48.98,22.15,22.5,0); +INSERT INTO "area" VALUES('EPSG','3907','Ukraine - 22.5°E to 25.5°E','Ukraine - between 22°30''E and 25°30''E.',47.71,51.96,22.5,25.5,0); +INSERT INTO "area" VALUES('EPSG','3908','Ukraine - 25.5°E to 28.5°E','Ukraine - between 25°30''E and 28°30''E.',45.26,51.94,25.5,28.5,0); +INSERT INTO "area" VALUES('EPSG','3909','Ukraine - 28.5°E to 31.5°E','Ukraine - between 28°30''E and 31°30''E, onshore and offshore.',43.42,52.12,28.5,31.5,0); +INSERT INTO "area" VALUES('EPSG','3910','Ukraine - 31.5°E to 34.5°E','Ukraine - between 31°30''E and 34°30''E, onshore and offshore.',43.18,52.38,31.5,34.5,0); +INSERT INTO "area" VALUES('EPSG','3911','Reunion - east of 54ºE','Reunion - onshore and offshore - east of 54ºE.',-24.72,-18.28,54.0,58.24,0); +INSERT INTO "area" VALUES('EPSG','3912','Ukraine - 34.5°E to 37.5°E','Ukraine - between 34°30''E and 37°30''E, onshore and offshore.',43.24,51.25,34.5,37.5,0); +INSERT INTO "area" VALUES('EPSG','3913','Ukraine - east of 37.5°E','Ukraine - east of 37°30''E.',46.77,50.39,37.5,40.18,0); +INSERT INTO "area" VALUES('EPSG','3914','World - N hemisphere - 3°E to 9°E - by country','France - offshore Mediterranean including area east of 9°E. Nigeria - offshore including area west of 3°E.',1.92,43.74,2.66,10.38,0); +INSERT INTO "area" VALUES('EPSG','3915','Reunion - west of 54ºE','Reunion - offshore - west of 54ºE.',-24.37,-18.52,51.83,54.0,0); +INSERT INTO "area" VALUES('EPSG','3916','French Southern Territories - Amsterdam onshore','French Southern Territories - Amsterdam Island onshore.',-37.93,-37.74,77.45,77.67,0); +INSERT INTO "area" VALUES('EPSG','3917','Algeria - Ahnet licence area','Algeria - Ahnet licence area.',26.06,27.51,1.26,2.92,0); +INSERT INTO "area" VALUES('EPSG','3918','French Southern Territories - Kerguelen','French Southern Territories - Kerguelen onshore and offshore.',-53.24,-45.11,62.96,75.66,0); +INSERT INTO "area" VALUES('EPSG','3919','French Southern Territories - Crozet','French Southern Territories - Crozet onshore and offshore.',-49.82,-42.61,45.37,57.16,0); +INSERT INTO "area" VALUES('EPSG','3920','French Southern Territories - Crozet onshore','French Southern Territories - Crozet onshore.',-46.53,-45.87,50.09,52.36,0); +INSERT INTO "area" VALUES('EPSG','3921','French Southern Territories - Amsterdam & St Paul','French Southern Territories - Amsterdam & St Paul islands onshore and offshore.',-42.08,-34.47,73.24,81.83,0); +INSERT INTO "area" VALUES('EPSG','3922','French Southern Territories - St Paul onshore','French Southern Territories - St Paul Island onshore.',-38.79,-38.63,77.44,77.63,0); +INSERT INTO "area" VALUES('EPSG','3923','French Southern Territories - Tromelin','French Southern Territories - Tromelin onshore and offshore.',-18.69,-12.59,52.45,57.18,0); +INSERT INTO "area" VALUES('EPSG','3924','French Southern Territories - Tromelin onshore','French Southern Territories - Tromelin onshore.',-15.96,-15.82,54.46,54.6,0); +INSERT INTO "area" VALUES('EPSG','3925','French Southern Territories - Glorieuses','French Southern Territories - Glorieuses onshore and offshore.',-12.8,-10.65,45.76,48.49,0); +INSERT INTO "area" VALUES('EPSG','3926','French Southern Territories - Glorieuses onshore','French Southern Territories - Glorieuses onshore.',-11.63,-11.5,47.22,47.36,0); +INSERT INTO "area" VALUES('EPSG','3927','French Southern Territories - Juan de Nova','French Southern Territories - Juan de Nova onshore and offshore.',-19.21,-15.35,40.94,43.46,0); +INSERT INTO "area" VALUES('EPSG','3928','Sudan - onshore','Sudan - onshore.',8.64,22.24,21.82,38.66,0); +INSERT INTO "area" VALUES('EPSG','3929','Mozambique - west of 36°E','Mozambique - west of 36°E, onshore and offshore.',-27.58,-11.41,30.21,36.0,0); +INSERT INTO "area" VALUES('EPSG','3930','French Southern Territories - Juan de Nova onshore','French Southern Territories - Juan de Nova onshore.',-17.13,-17.0,42.67,42.82,0); +INSERT INTO "area" VALUES('EPSG','3931','Mozambique - 36°E to 42°E','Mozambique - between 36°E and 42°E, onshore and offshore.',-27.71,-10.09,36.0,42.0,0); +INSERT INTO "area" VALUES('EPSG','3932','French Southern Territories - Bassas da India','French Southern Territories - Bassas da India onshore and offshore.',-23.21,-19.07,37.55,41.59,0); +INSERT INTO "area" VALUES('EPSG','3933','French Southern Territories - Bassas da India onshore','French Southern Territories - Bassas da India onshore.',-21.58,-21.37,39.57,39.82,0); +INSERT INTO "area" VALUES('EPSG','3934','French Southern Territories - Europa','French Southern Territories - Europa onshore and offshore.',-25.7,-20.91,37.98,41.82,0); +INSERT INTO "area" VALUES('EPSG','3935','Mozambique - east of 42°E','Mozambique - offshore east of 42°E.',-15.83,-10.09,42.0,43.03,0); +INSERT INTO "area" VALUES('EPSG','3936','French Southern Territories - Europa onshore','French Southern Territories - Europa onshore.',-22.46,-22.27,40.26,40.46,0); +INSERT INTO "area" VALUES('EPSG','3937','Congo DR (Zaire) - 11°E to 13°E','The Democratic Republic of the Congo (Zaire) - west of 13°E onshore and offshore.',-6.04,-4.67,11.79,13.0,0); +INSERT INTO "area" VALUES('EPSG','3938','Mauritania - 18°W to 12°W','Mauritania - 18°W to 12°W, onshore and offshore.',14.72,23.46,-18.0,-12.0,0); +INSERT INTO "area" VALUES('EPSG','3939','Mauritania - 12°W to 6°W','Mauritania - between 12°W and 6°W, onshore and offshore.',14.73,27.31,-12.0,-6.0,1); +INSERT INTO "area" VALUES('EPSG','3940','Mauritania - east of 6°W','Mauritania - east of 6°W, onshore and offshore.',14.73,27.31,-6.0,0.0,1); +INSERT INTO "area" VALUES('EPSG','3941','Libya - east of 24°E','Libya - east of 24°E, onshore and offshore.',19.99,33.6,24.0,26.21,0); +INSERT INTO "area" VALUES('EPSG','3942','South Sudan','South Sudan.',3.49,12.22,24.14,35.94,0); +INSERT INTO "area" VALUES('EPSG','3943','Bahrain - onshore','Bahrain - onshore.',25.53,26.34,50.39,50.85,0); +INSERT INTO "area" VALUES('EPSG','3944','China - 102°E to 108°E','China - onshore and offshore between 102°E and 108°E.',17.75,42.47,102.0,108.0,0); +INSERT INTO "area" VALUES('EPSG','3945','China - 108°E to 114°E','China - onshore and offshore between 108°E and 114°E.',16.7,45.11,108.0,114.0,0); +INSERT INTO "area" VALUES('EPSG','3946','China - 114°E to 120°E','China - onshore and offshore between 114°E and 120°E.',19.02,51.52,114.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','3947','China - 120°E to 126°E','China - onshore and offshore between 120°E and 126°E.',24.64,53.56,120.0,126.0,0); +INSERT INTO "area" VALUES('EPSG','3948','China - 126°E to 132°E','China - onshore and offshore between 126°E and 132°E.',29.7,52.79,126.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','3949','Libya - west of 12°E','Libya - west of 12°E, onshore and offshore.',23.51,33.92,9.31,12.0,0); +INSERT INTO "area" VALUES('EPSG','3950','Libya - 12°E to 18°E','Libya - between 12°E and 18°E, onshore and offshore.',22.51,35.23,12.0,18.0,0); +INSERT INTO "area" VALUES('EPSG','3951','Libya - 18°E to 24°E','Libya - between 18°E and 24°E, onshore and offshore.',19.5,35.03,18.0,24.01,0); +INSERT INTO "area" VALUES('EPSG','3952','Algeria - 6°W to 0°W','Algeria - between 6°W and 0°W (of Greenwich), onshore and offshore.',21.82,37.01,-6.0,0.0,0); +INSERT INTO "area" VALUES('EPSG','3953','Algeria - 0°E to 6°E','Algeria - between 0°E and 6°E (of Greenwich), onshore and offshore.',18.97,38.77,0.0,6.01,0); +INSERT INTO "area" VALUES('EPSG','3954','Algeria - east of 6°E','Algeria - east of 6°E (of Greenwich), onshore and offshore.',19.6,38.8,6.0,11.99,0); +INSERT INTO "area" VALUES('EPSG','3955','Malaysia - West Malaysia','Malaysia - West Malaysia onshore and offshore.',1.13,7.81,98.02,105.82,0); +INSERT INTO "area" VALUES('EPSG','3956','Iraq - east of 48°E','Iraq - east of 48°E, onshore and offshore.',29.6,31.0,48.0,48.75,0); +INSERT INTO "area" VALUES('EPSG','3957','Japan - onshore','Japan including outlying islands - onshore.',20.37,45.54,122.83,154.05,0); +INSERT INTO "area" VALUES('EPSG','3958','Philippines - zone I onshore','Philippines - onshore west of 118°E.',7.75,9.32,116.89,118.0,0); +INSERT INTO "area" VALUES('EPSG','3959','Japan - 120°E to 126°E','Japan - west of 126°E, onshore and offshore.',21.1,29.71,122.38,126.0,0); +INSERT INTO "area" VALUES('EPSG','3960','Japan - 126°E to 132°E','Japan - between 126°E and 132°E, onshore and offshore.',21.12,38.63,126.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','3961','Japan - 132°E to 138°E','Japan - between 132°E and 138°E, onshore and offshore.',17.09,43.55,132.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','3962','Japan - 138°E to 144°E','Japan - between 138°E and 144°E, onshore and offshore.',17.63,46.05,138.0,144.0,0); +INSERT INTO "area" VALUES('EPSG','3963','Japan - 144°E to 150°E','Japan - east of 144°E, onshore and offshore.',23.03,45.65,144.0,147.86,0); +INSERT INTO "area" VALUES('EPSG','3964','Philippines - zone II onshore','Philippines - onshore approximately between 118°E and 120°E - Palawan; Calamian Islands.',8.82,11.58,118.0,120.07,0); +INSERT INTO "area" VALUES('EPSG','3965','Philippines - zone III onshore','Philippines - onshore approximately between 120°E and 122°E. Luzon (west of 122°E); Mindoro.',4.99,19.45,119.7,122.21,0); +INSERT INTO "area" VALUES('EPSG','3966','Philippines - zone IV onshore','Philippines - onshore approximately between 122°E and 124°E - southeast Luzon (east of 122°E); Tablas; Masbate; Panay; Cebu; Negros; northwest Mindanao (west of 124°E).',6.35,18.58,121.74,124.29,0); +INSERT INTO "area" VALUES('EPSG','3967','Philippines - zone V onshore','Philippines - onshore approximately between 124°E and 126°E - east Mindanao (east of 124°E); Bohol; Samar.',5.5,14.15,123.73,126.65,0); +INSERT INTO "area" VALUES('EPSG','3968','Saudi Arabia - onshore Gulf coast','Saudi Arabia - onshore Arabian Gulf coastal area.',24.63,28.57,47.95,50.81,0); +INSERT INTO "area" VALUES('EPSG','3969','Philippines - onshore','Philippines - onshore.',4.99,19.45,116.89,126.65,0); +INSERT INTO "area" VALUES('EPSG','3970','New Zealand - nearshore west of 168°E','New Zealand - nearshore west of 168°E.',-47.65,-42.59,165.87,168.0,0); +INSERT INTO "area" VALUES('EPSG','3971','New Zealand - nearshore 168°E to 174°E','New Zealand - nearshore between 168°E and 174°E.',-47.64,-33.89,168.0,174.0,0); +INSERT INTO "area" VALUES('EPSG','3972','New Zealand - nearshore east of 174°E','New Zealand - nearshore east of 174°E.',-44.13,-34.24,174.0,179.27,0); +INSERT INTO "area" VALUES('EPSG','3973','New Zealand - onshore','New Zealand - North Island, South Island, Stewart Island - onshore.',-47.33,-34.1,166.37,178.63,0); +INSERT INTO "area" VALUES('EPSG','3974','Cocos (Keeling) Islands','Cocos (Keeling) Islands - onshore and offshore.',-15.56,-8.47,93.41,100.34,0); +INSERT INTO "area" VALUES('EPSG','3975','Indonesia - east of 138°E onshore','Indonesia - onshore east of 138°E.',-9.19,-1.49,138.0,141.01,0); +INSERT INTO "area" VALUES('EPSG','3976','Indonesia - west of 96°E onshore','Indonesia - onshore west of 96°E.',2.55,5.97,95.16,96.0,0); +INSERT INTO "area" VALUES('EPSG','3977','Malaysia - East Malaysia','Malaysia - East Malaysia (Sabah; Sarawak), onshore and offshore.',0.85,7.67,109.31,119.61,0); +INSERT INTO "area" VALUES('EPSG','3978','Indonesia - 96°E to 102°E, N hemisphere onshore','Indonesia - onshore north of equator and between 96°E and 102°E.',0.0,5.42,96.0,102.0,0); +INSERT INTO "area" VALUES('EPSG','3979','Indonesia - 102°E to 108°E, N hemisphere onshore','Indonesia - onshore north of equator and between 102°E and 108°E.',0.0,4.11,102.0,108.0,0); +INSERT INTO "area" VALUES('EPSG','3980','Indonesia - 108°E to 114°E, N hemisphere onshore','Indonesia - onshore north of equator and between 108°E and 114°E.',0.0,4.25,108.0,114.0,0); +INSERT INTO "area" VALUES('EPSG','3981','Indonesia - 114°E to 120°E, N hemisphere onshore','Indonesia - onshore north of equator and between 114°E and 120°E.',0.0,4.37,114.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','3982','Taiwan - 120°E to 122°E onshore','Taiwan, Republic of China - onshore between 120°E and 122°E - Taiwan Island.',21.87,25.34,119.99,122.06,0); +INSERT INTO "area" VALUES('EPSG','3983','Indonesia - 120°E to 126°E, N hemisphere onshore','Indonesia - onshore north of equator and between 120°E and 126°E.',0.0,3.84,120.0,125.71,0); +INSERT INTO "area" VALUES('EPSG','3984','Indonesia - 126°E to 132°E, N hemisphere onshore','Indonesia - onshore north of equator and between 126°E and 132°E.',0.0,4.59,126.55,131.0,0); +INSERT INTO "area" VALUES('EPSG','3985','Indonesia - 96°E to 102°E, S hemisphere onshore','Indonesia - onshore south of equator and between 96°E and 102°E.',-3.57,0.0,98.24,102.0,0); +INSERT INTO "area" VALUES('EPSG','3986','Indonesia - 102°E to 108°E, S hemisphere onshore','Indonesia - onshore south of equator and between 102°E and 108°E.',-7.79,0.0,102.0,108.0,0); +INSERT INTO "area" VALUES('EPSG','3987','Indonesia - 108°E to 114°E, S hemisphere onshore','Indonesia - onshore south of equator and between 108°E and 114°E.',-8.67,0.0,108.0,114.0,0); +INSERT INTO "area" VALUES('EPSG','3988','Indonesia - 114°E to 120°E, S hemisphere onshore','Indonesia - onshore south of equator and between 114°E and 120°E.',-10.15,0.0,114.0,120.0,0); +INSERT INTO "area" VALUES('EPSG','3989','Indonesia - 120°E to 126°E, S hemisphere onshore','Indonesia - onshore south of equator and between 120°E and 126°E.',-10.98,0.0,120.0,126.0,0); +INSERT INTO "area" VALUES('EPSG','3990','Indonesia - 126°E to 132°E, S hemisphere onshore','Indonesia - onshore south of equator and between 126°E and 132°E.',-8.41,0.0,126.0,132.0,0); +INSERT INTO "area" VALUES('EPSG','3991','Indonesia - 132°E to 138°E, S hemisphere onshore','Indonesia - onshore south of equator and between 132°E and 138°E.',-8.49,-0.29,132.0,138.0,0); +INSERT INTO "area" VALUES('EPSG','3992','New Zealand - offshore 180°W to 174°W','New Zealand - offshore between 180°W and 174°W.',-52.97,-25.88,-180.0,-174.0,0); +INSERT INTO "area" VALUES('EPSG','3993','Germany - onshore 7.5°E to 10.5°E','Germany - onshore between 7°30''E and 10°30''E.',47.27,55.09,7.5,10.51,0); +INSERT INTO "area" VALUES('EPSG','3994','Madagascar','Madagascar - onshore and offshore.',-28.92,-10.28,40.31,53.39,0); +INSERT INTO "area" VALUES('EPSG','3995','Japan - onshore mainland and adjacent islands','Japan - onshore mainland and adjacent islands.',30.18,45.54,128.31,145.87,0); +INSERT INTO "area" VALUES('EPSG','3996','Germany - onshore 10.5°E to 13.5°E','Germany - onshore between 10°30''E and 13°30''E.',47.39,54.74,10.5,13.51,0); +INSERT INTO "area" VALUES('EPSG','3997','Germany - East Germany - 10.5°E to 13.5°E onshore','Germany - states of former East Germany - onshore between 10°30''E and 13°30''E.',50.2,54.74,10.5,13.51,0); +INSERT INTO "area" VALUES('EPSG','3998','Germany - onshore east of 13.5°E','Germany - onshore east of 13°30''E.',48.51,54.72,13.5,15.04,0); +INSERT INTO "area" VALUES('EPSG','3999','Fiji','Fiji - onshore and offshore.',-25.09,-9.78,172.76,-176.27,0); +INSERT INTO "area" VALUES('EPSG','4000','Germany - onshore 10.5°E to 12°E','Germany - onshore between 10°30''E and 12°E.',47.39,54.59,10.5,12.0,0); +INSERT INTO "area" VALUES('EPSG','4001','Germany - onshore 12°E to 13.5°E','Germany - onshore between 12°E and 13°30''E.',47.46,54.74,12.0,13.51,0); +INSERT INTO "area" VALUES('EPSG','4002','Yemen - east of 54°E','Yemen - east of 54°E, onshore and offshore.',8.95,14.95,54.0,57.96,0); +INSERT INTO "area" VALUES('EPSG','4003','Germany - East Germany - east of 13.5°E onshore','Germany - states of former East Germany - onshore east of 13°30''E.',50.62,54.72,13.5,15.04,0); +INSERT INTO "area" VALUES('EPSG','4004','Australia - Northern Territory mainland','Australia - Northern Territory mainland onshore.',-26.01,-10.92,128.99,138.0,0); +INSERT INTO "area" VALUES('EPSG','4005','Indonesia - Kalimantan W - coastal','Indonesia - west Kalimantan - onshore coastal area.',0.06,2.13,108.79,109.78,0); +INSERT INTO "area" VALUES('EPSG','4006','Yemen - west of 42°E','Yemen - west of 42°E, onshore and offshore.',14.73,16.36,41.08,42.0,0); +INSERT INTO "area" VALUES('EPSG','4007','Asia - Cambodia and Vietnam - onshore & Cuu Long basin','Cambodia - onshore; Vietnam - onshore and offshore Cuu Long basin.',7.99,23.33,102.14,110.0,0); +INSERT INTO "area" VALUES('EPSG','4008','Oman - mainland east of 54°E','Oman - mainland onshore east of 54°E.',16.89,26.42,54.0,59.91,0); +INSERT INTO "area" VALUES('EPSG','4009','Oman - mainland','Oman - mainland onshore.',16.59,26.42,51.99,59.91,0); +INSERT INTO "area" VALUES('EPSG','4010','Solomon Islands','Solomon Islands - onshore and offshore.',-16.13,-4.14,154.58,173.58,0); +INSERT INTO "area" VALUES('EPSG','4011','Tuvalu - onshore','Tuvalu - onshore.',-8.62,-6.03,176.24,179.29,0); +INSERT INTO "area" VALUES('EPSG','4012','Congo DR (Zaire) - Bas Congo east of 15°E','The Democratic Republic of the Congo (Zaire) - Bas Congo east of 15°E.',-5.87,-4.42,14.99,16.28,0); +INSERT INTO "area" VALUES('EPSG','4013','Papua New Guinea - PFTB','Papua New Guinea - Papuan fold and thrust belt.',-8.28,-5.59,142.24,144.75,0); +INSERT INTO "area" VALUES('EPSG','4014','Australia - Western Australia mainland','Australia - Western Australia mainland.',-35.19,-13.67,112.85,129.01,0); +INSERT INTO "area" VALUES('EPSG','4015','Vietnam - mainland','Vietnam - mainland onshore.',8.5,23.33,102.14,109.52,0); +INSERT INTO "area" VALUES('EPSG','4016','South America - onshore north of 45°S','South America - onshore north of 45°S excluding Amazonia.',-45.0,12.52,-81.41,-34.74,0); +INSERT INTO "area" VALUES('EPSG','4017','Australia - SE Australia (ACT NSW)','Australia - Australian Capital Territory and New South Wales onshore.',-37.53,-28.15,140.99,153.69,0); +INSERT INTO "area" VALUES('EPSG','4018','Congo DR (Zaire) - south and 29°E to 31°E','The Democratic Republic of the Congo (Zaire) - south of a line through Bandundu, Seke and Pweto and east of 29°E.',-13.46,-12.15,29.0,29.81,0); +INSERT INTO "area" VALUES('EPSG','4019','Arctic - 87°N to 75°N, 156°W to 66°W','Arctic - 87°N to 75°N, approximately 156°W to approximately 66°W. May be extended westwards or eastwards within the latitude limits.',75.0,87.01,-156.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','4020','Indonesia - onshore','Indonesia - onshore.',-10.98,5.97,95.16,141.01,0); +INSERT INTO "area" VALUES('EPSG','4021','Australia - Queensland mainland','Australia - Queensland mainland onshore.',-29.19,-10.65,137.99,153.61,0); +INSERT INTO "area" VALUES('EPSG','4022','UAE - Abu Dhabi and Dubai - onshore east of 54°E','United Arab Emirates (UAE) - Abu Dhabi onshore east of 54°E; Dubai onshore.',22.63,25.34,53.99,56.03,0); +INSERT INTO "area" VALUES('EPSG','4023','Brazil - west of 72°W','Brazil - west of 72°W.',-10.01,-4.59,-74.01,-71.99,0); +INSERT INTO "area" VALUES('EPSG','4024','Brazil - 72°W to 66°W','Brazil - between 72°W and 66°W, northern and southern hemispheres.',-11.14,2.15,-72.0,-65.99,0); +INSERT INTO "area" VALUES('EPSG','4025','Angola - offshore north of 8°S','Angola - offshore north of 8°S - including blocks 0, 1, 2, 14, 15, 17, 18 north of 8°S and 32; onshore Soyo area.',-8.01,-5.05,10.41,12.84,0); +INSERT INTO "area" VALUES('EPSG','4026','Brazil - 66°W to 60°W','Brazil - between 66°W and 60°W, northern and southern hemispheres.',-16.28,5.28,-66.0,-59.99,0); +INSERT INTO "area" VALUES('EPSG','4027','Arctic - 87°N to 75°N, 84°W to 6°E','Arctic - 87°N to 75°N, approximately 84°W to approximately 6°E. May be extended westwards or eastwards within the latitude limits.',75.0,87.01,-84.0,6.01,0); +INSERT INTO "area" VALUES('EPSG','4028','Arctic - 87°N to 75°N, 12°W to 78°E','Arctic - 87°N to 75°N, approximately 12°W to approximately 78°E. May be extended westwards or eastwards within the latitude limits.',75.0,87.01,-12.0,78.01,0); +INSERT INTO "area" VALUES('EPSG','4029','Arctic - 87°N to 75°N, 60°E to 150°E','Arctic - 87°N to 75°N, approximately 60°E to approximately 150°E. May be extended westwards or eastwards within the latitude limits.',75.0,87.01,60.0,150.01,0); +INSERT INTO "area" VALUES('EPSG','4030','Arctic - 84°30''N to 79°30''N, 135°W to 95°W','Arctic - between 84°30''N and 79°30''N, approximately 135°W to approximately 95°W. May be extended eastwards within the latitude limits.',79.5,84.51,-135.0,-95.0,0); +INSERT INTO "area" VALUES('EPSG','4031','Arctic - 87°N to 75°N, 132°E to 138°W','Arctic - 87°N to 75°N, approximately 132°E to approximately 138°W. May be extended westwards or eastwards within the latitude limits.',75.0,87.01,132.0,-138.0,0); +INSERT INTO "area" VALUES('EPSG','4032','Arctic - 79°N to 67°N, 156°W to 66°W','Arctic - 79°N to 67°N, approximately 156°W to approximately 66°W. May be extended westwards or eastwards within the latitude limits.',67.0,79.01,-156.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','4033','Arctic - 79°N to 67°N, 84°W to 6°E','Arctic - 79°N to 67°N, approximately 84°W to approximately 6°E. May be extended westwards or eastwards within the latitude limits.',67.0,79.01,-84.0,6.01,0); +INSERT INTO "area" VALUES('EPSG','4034','Arctic - 79°N to 67°N, 12°W to 78°E','Arctic - 79°N to 67°N, approximately 12°W to approximately 78°E. May be extended westwards or eastwards within the latitude limits.',67.0,79.01,-12.0,78.01,0); +INSERT INTO "area" VALUES('EPSG','4035','Italy - Emilia-Romagna','Italy - Emilia-Romagna region.',43.73,45.14,9.19,12.76,0); +INSERT INTO "area" VALUES('EPSG','4036','Arctic - 84°30''N to 79°30''N, 95°W to 55°W','Arctic - between 84°30''N and 79°30''N, approximately 95°W to approximately 55°W. May be extended westwards within the latitude limits.',79.5,84.51,-95.0,-55.0,0); +INSERT INTO "area" VALUES('EPSG','4037','Arctic - 79°N to 67°N, 60°E to 150°E','Arctic - 79°N to 67°N, approximately 60°E to approximately 150°E. May be extended westwards or eastwards within the latitude limits.',67.0,79.01,60.0,150.01,0); +INSERT INTO "area" VALUES('EPSG','4038','Arctic - 79°N to 67°N, 132°E to 138°W','Arctic - 79°N to 67°N, approximately 132°E to approximately 138°W. May be extended westwards or eastwards within the latitude limits.',67.0,79.01,132.0,-138.0,0); +INSERT INTO "area" VALUES('EPSG','4039','Arctic - 84°30''N to 79°30''N, 72°W to 32°W','Arctic - between 84°30''N and 79°30''N, approximately 72°W to approximately 32°W. May be extended eastwards within the latitude limits.',79.5,84.51,-72.0,-32.0,0); +INSERT INTO "area" VALUES('EPSG','4040','Arctic - 71°N to 59°N, 156°W to 66°W','Arctic - 71°N to 59°N, approximately 156°W to approximately 66°W. May be extended westwards or eastwards within the latitude limits.',59.0,71.0,-156.0,-66.0,0); +INSERT INTO "area" VALUES('EPSG','4041','Arctic - 71°N to 59°N, 84°W to 6°E','Arctic - 71°N to 59°N, approximately 84°W to approximately 6°E. May be extended westwards or eastwards within the latitude limits.',59.0,71.0,-84.0,6.0,0); +INSERT INTO "area" VALUES('EPSG','4042','Arctic - 71°N to 59°N, 12°W to 78°E','Arctic - 71°N to 59°N, approximately 12°W to approximately 78°E. May be extended westwards or eastwards within the latitude limits.',59.0,71.0,-12.0,78.01,0); +INSERT INTO "area" VALUES('EPSG','4043','Arctic - 71°N to 59°N, 60°E to 150°E','Arctic - 71°N to 59°N, approximately 60°E to approximately 150°E. May be extended westwards or eastwards within the latitude limits.',59.0,71.0,60.0,150.01,0); +INSERT INTO "area" VALUES('EPSG','4044','Arctic - 87°50''N to 82°50''N, 180°W to 120°W','Arctic - between 87°50''N and 82°50''N, approximately 180°W to approximately 120°W. May be extended westwards or eastwards within the latitude limits.',82.83,87.84,-180.0,-120.0,0); +INSERT INTO "area" VALUES('EPSG','4045','Arctic - 71°N to 59°N, 132°E to 138°W','Arctic - 71°N to 59°N, approximately 132°E to approximately 138°W. May be extended westwards or eastwards within the latitude limits.',59.0,71.0,132.0,-138.0,0); +INSERT INTO "area" VALUES('EPSG','4046','Arctic - 84°30''N to 79°30''N, 32°W to 8°E','Arctic - between 84°30''N and 79°30''N, approximately 32°W to approximately 8°E. May be extended westwards within the latitude limits.',79.5,84.51,-32.0,8.01,0); +INSERT INTO "area" VALUES('EPSG','4047','Arctic - 87°50''N to 82°50''N, 120°W to 60°W','Arctic - between 87°50''N and 82°50''N, approximately 120°W to approximately 60°W. May be extended westwards or eastwards within the latitude limits.',82.83,87.84,-120.0,-60.0,0); +INSERT INTO "area" VALUES('EPSG','4048','Arctic - 87°50''N to 82°50''N, 60°W to 0°E','Arctic - between 87°50''N and 82°50''N, approximately 60°W to approximately 0°E. May be extended westwards or eastwards within the latitude limits.',82.83,87.84,-60.0,0.0,0); +INSERT INTO "area" VALUES('EPSG','4049','Arctic - 87°50''N to 82°50''N, 0°E to 60°E','Arctic - between 87°50''N and 82°50''N, approximately 0°E to approximately 60°E. May be extended westwards or eastwards within the latitude limits.',82.83,87.84,0.0,60.01,0); +INSERT INTO "area" VALUES('EPSG','4050','Arctic - 87°50''N to 82°50''N, 60°E to 120°E','Arctic - between 87°50''N and 82°50''N, approximately 60°E to approximately 120°E. May be extended westwards or eastwards within the latitude limits.',82.83,87.84,60.0,120.01,0); +INSERT INTO "area" VALUES('EPSG','4051','Arctic - 87°50''N to 82°50''N, 120°E to 180°E','Arctic - between 87°50''N and 82°50''N, approximately 120°E to approximately 180°E. May be extended westwards or eastwards within the latitude limits.',82.83,87.83,120.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','4052','Arctic - 84°30''N to 79°30''N, 174°W to 135°W','Arctic - between 84°30''N and 79°30''N, approximately 174°W to approximately 135°W. May be extended westwards or eastwards within the latitude limits.',79.5,84.51,-174.0,-134.99,0); +INSERT INTO "area" VALUES('EPSG','4053','Arctic - 84°30''N to 79°30''N, 4°W to 36°E','Arctic - between 84°30''N and 79°30''N, approximately 4°W to approximately 36°E.',79.5,84.51,-4.0,36.01,0); +INSERT INTO "area" VALUES('EPSG','4054','Arctic - 84°30''N to 79°30''N, 33°E to 73°E','Arctic - between 84°30''N and 79°30''N, approximately 33°E to approximately 73°E. May be extended westwards or eastwards within the latitude limits.',79.5,84.51,33.0,73.01,0); +INSERT INTO "area" VALUES('EPSG','4055','Arctic - 84°30''N to 79°30''N, 73°E to 113°E','Arctic - between 84°30''N and 79°30''N, approximately 73°E to approximately 113°E. May be extended westwards or eastwards within the latitude limits.',79.5,84.51,73.0,113.01,0); +INSERT INTO "area" VALUES('EPSG','4056','Arctic - 84°30''N to 79°30''N, 113°E to 153°E','Arctic - between 84°30''N and 79°30''N, approximately 113°E to approximately 153°E. May be extended westwards or eastwards within the latitude limits.',79.5,84.51,113.0,153.01,0); +INSERT INTO "area" VALUES('EPSG','4057','Arctic - 84°30''N to 79°30''N, 146°E to 174°W','Arctic - between 84°30''N and 79°30''N, approximately 146°E to approximately 174°W. May be extended westwards or eastwards within the latitude limits.',79.5,84.51,146.0,-173.99,0); +INSERT INTO "area" VALUES('EPSG','4058','Arctic - 81°10''N to 76°10''N, 4°W to 38°E','Arctic (Norway (Svalbard) onshore and offshore) - between 81°10''N and 76°10''N.',76.16,81.17,-3.7,38.45,0); +INSERT INTO "area" VALUES('EPSG','4059','Arctic - 81°10''N to 76°10''N, 35°E to 67°E','Arctic (Russia onshore and offshore) - between 81°10''N and 76°10''N, approximately 35°E to approximately 67°E. May be extended eastwards within the latitude limits.',76.16,81.17,34.71,67.01,0); +INSERT INTO "area" VALUES('EPSG','4060','Arctic - 81°10''N to 76°10''N, 67°E to 98°E','Arctic (Russia onshore and offshore) - between 81°10''N and 76°10''N, approximately 67°E to approximately 98°E. May be extended westwards or eastwards within the latitude limits.',76.16,81.17,67.0,98.01,0); +INSERT INTO "area" VALUES('EPSG','4061','Arctic - 81°10''N to 76°10''N, 98°E to 129°E','Arctic (Russia onshore and offshore) - between 81°10''N and 76°10''N, approximately 98°E to approximately 129°E. May be extended westwards or eastwards within the latitude limits.',76.16,81.17,98.0,129.01,0); +INSERT INTO "area" VALUES('EPSG','4062','Arctic - 81°10''N to 76°10''N, 129°E to 160°E','Arctic (Russia onshore and offshore) - between 81°10''N and 76°10''N, approximately 129°E to approximately 160°E. May be extended westwards or eastwards within the latitude limits.',76.16,81.17,129.0,160.01,0); +INSERT INTO "area" VALUES('EPSG','4063','Arctic - 81°10''N to 76°10''N, 160°E to 169°W','Arctic - between 81°10''N and 76°10''N, approximately 160°E to approximately 169°W. May be extended westwards or eastwards within the latitude limits.',76.16,81.17,160.0,-168.99,0); +INSERT INTO "area" VALUES('EPSG','4064','Arctic - 81°10''N to 76°10''N, 169°W to 138°W','Arctic - between 81°10''N and 76°10''N, approximately 169°W to approximately 138°W. May be extended westwards or eastwards within the latitude limits.',76.16,81.17,-169.0,-138.0,0); +INSERT INTO "area" VALUES('EPSG','4065','Arctic - 81°10''N to 76°10''N, 144°W to 114°W','Arctic - between 81°10''N and 76°10''N, approximately 144°W to approximately 114°W. May be extended eastwards within the latitude limits.',76.16,81.17,-144.0,-114.0,0); +INSERT INTO "area" VALUES('EPSG','4066','Norway - onshore - 6°E to 12°E','Norway - onshore - between 6°E and 12°E.',57.93,65.76,6.0,12.0,0); +INSERT INTO "area" VALUES('EPSG','4067','Norway - onshore - 12°E to 18°E','Norway - onshore - between 12°E and 18°E.',59.88,69.68,12.0,18.01,0); +INSERT INTO "area" VALUES('EPSG','4068','Norway - onshore - 18°E to 24°E','Norway - onshore - between 18°E and 24°E.',68.04,71.08,18.0,24.01,0); +INSERT INTO "area" VALUES('EPSG','4069','Norway - onshore - 24°E to 30°E','Norway - onshore - between 24°E and 30°E.',68.58,71.21,24.0,30.0,0); +INSERT INTO "area" VALUES('EPSG','4070','Arctic - 81°10''N to 76°10''N, 114°W to 84°W','Arctic - between 81°10''N and 76°10''N, approximately 114°W to approximately 84°W. May be extended westwards or eastwards within the latitude limits.',76.16,81.17,-114.0,-84.0,0); +INSERT INTO "area" VALUES('EPSG','4071','Arctic - 81°10''N to 76°10''N, 84°W to 54°W','Arctic - between 81°10''N and 76°10''N, approximately 84°W to approximately 54°W. May be extended westwards or eastwards within the latitude limits.',76.16,81.17,-84.0,-54.0,0); +INSERT INTO "area" VALUES('EPSG','4072','Arctic - 81°10''N to 76°10''N, Canada east of 84°W','Arctic - between 81°10''N and 76°10''N, Canada east of approximately 84°W. May be extended westwards within the latitude limits.',76.16,81.17,-84.0,-64.78,0); +INSERT INTO "area" VALUES('EPSG','4073','Arctic - 81°10''N to 76°10''N, Greenland west of 54°W','Arctic - between 81°10''N and 76°10''N, Greenland west of approximately 54°W. May be extended eastwards within the latitude limits.',76.16,81.17,-75.0,-54.0,0); +INSERT INTO "area" VALUES('EPSG','4074','Arctic - 81°10''N to 76°10''N, 54°W to 24°W','Arctic - between 81°10''N and 76°10''N, approximately 54°W to approximately 24°W. May be extended westwards or eastwards within the latitude limits.',76.16,81.17,-54.0,-24.0,0); +INSERT INTO "area" VALUES('EPSG','4075','Arctic - 81°10''N to 76°10''N, 24°W to 3°E','Arctic - between 81°10''N and 76°10''N, approximately 24°W to approximately 2°E. May be extended westwards within the latitude limits.',76.16,81.17,-24.0,1.9,0); +INSERT INTO "area" VALUES('EPSG','4076','Arctic - 77°50''N to 72°50''N, 169°W to 141°W','Arctic - between 77°50''N and 72°50''N, approximately 169°W to approximately 141°W. May be extended westwards or eastwards within the latitude limits.',72.83,77.84,-169.0,-141.0,0); +INSERT INTO "area" VALUES('EPSG','4077','Arctic - 77°50''N to 72°50''N, 141°W to 116°W','Arctic - between 77°50''N and 72°50''N, approximately 141°W to approximately 116°W. May be extended westwards or eastwards within the latitude limits.',72.83,77.84,-141.0,-116.0,0); +INSERT INTO "area" VALUES('EPSG','4078','Arctic - 77°50''N to 72°50''N, 116°W to 91°W','Arctic - between 77°50''N and 72°50''N, approximately 116°W to approximately 91°W. May be extended westwards or eastwards within the latitude limits.',72.83,77.84,-116.0,-91.0,0); +INSERT INTO "area" VALUES('EPSG','4079','Arctic - 77°50''N to 72°50''N, 91°W to 67°W','Arctic - between 77°50''N and 72°50''N, approximately 91°W to approximately 67°W. May be extended westwards within the latitude limits.',72.83,77.84,-91.0,-67.0,0); +INSERT INTO "area" VALUES('EPSG','4080','Arctic - 77°50''N to 72°50''N, 76°W to 51°W','Arctic - between 77°50''N and 72°50''N, approximately 76°W to approximately 51°W. May be extended eastwards within the latitude limits.',72.83,77.84,-76.0,-51.0,0); +INSERT INTO "area" VALUES('EPSG','4081','Arctic - 77°50''N to 72°50''N, 51°W to 26°W','Arctic - between 77°50''N and 72°50''N, approximately 51°W to approximately 26°W. May be extended westwards or eastwards within the latitude limits.',72.83,77.84,-51.0,-26.0,0); +INSERT INTO "area" VALUES('EPSG','4082','Arctic - 77°50''N to 72°50''N, 26°W to 2°W','Arctic - between 77°50''N and 72°50''N, approximately 26°W to approximately 2°W. May be extended westwards within the latitude limits.',72.83,77.84,-26.0,-2.0,0); +INSERT INTO "area" VALUES('EPSG','4083','Arctic - 77°50''N to 72°50''N, 2°W to 22°E','Arctic - between 77°50''N and 72°50''N, approximately 2°W to approximately 22°E. May be extended westwards or eastwards within the latitude limits.',72.83,77.84,-2.0,22.01,0); +INSERT INTO "area" VALUES('EPSG','4084','Arctic - 77°50''N to 72°50''N, 22°E to 46°E','Arctic - between 77°50''N and 72°50''N, approximately 22°E to approximately 46°E. May be extended westwards or eastwards within the latitude limits.',72.83,77.84,22.0,46.01,0); +INSERT INTO "area" VALUES('EPSG','4085','Arctic - 77°50''N to 72°50''N, 46°E to 70°E','Arctic - between 77°50''N and 72°50''N, approximately 46°E to approximately 70°E. May be extended westwards or eastwards within the latitude limits.',72.83,77.84,46.0,70.01,0); +INSERT INTO "area" VALUES('EPSG','4086','Arctic - 77°50''N to 72°50''N, 70°E to 94°E','Arctic - between 77°50''N and 72°50''N, approximately 70°E to approximately 94°E. May be extended westwards or eastwards within the latitude limits.',72.83,77.84,70.0,94.01,0); +INSERT INTO "area" VALUES('EPSG','4087','Arctic - 77°50''N to 72°50''N, 94°E to 118°E','Arctic - between 77°50''N and 72°50''N, approximately 94°E to approximately 118°E. May be extended westwards or eastwards within the latitude limits.',72.83,77.84,94.0,118.01,0); +INSERT INTO "area" VALUES('EPSG','4088','Arctic - 77°50''N to 72°50''N, 118°E to 142°E','Arctic - between 77°50''N and 72°50''N, approximately 118°E to approximately 142°E. May be extended westwards or eastwards within the latitude limits.',72.83,77.84,118.0,142.01,0); +INSERT INTO "area" VALUES('EPSG','4089','Arctic - 77°50''N to 72°50''N, 142°E to 166°E','Arctic - between 77°50''N and 72°50''N, approximately 142°E to approximately 166°E. May be extended westwards or eastwards within the latitude limits.',72.83,77.84,142.0,166.01,0); +INSERT INTO "area" VALUES('EPSG','4090','Arctic - 77°50''N to 72°50''N, 166°E to 169°W','Arctic - between 77°50''N and 72°50''N, approximately 166°E to approximately 169°W. May be extended westwards or eastwards within the latitude limits.',72.83,77.84,166.0,-168.99,0); +INSERT INTO "area" VALUES('EPSG','4091','Arctic - 74°30''N to 69°30''N, 4°E to 24°E','Arctic - between 74°30''N and 69°30''N, approximately 4°E to approximately 24°E. May be extended westwards or eastwards within the latitude limits.',69.5,74.51,4.0,24.01,0); +INSERT INTO "area" VALUES('EPSG','4092','Arctic - 74°30''N to 69°30''N, 24°E to 44°E','Arctic - between 74°30''N and 69°30''N, approximately 24°E to approximately 44°E. May be extended westwards or eastwards within the latitude limits.',69.5,74.51,24.0,44.01,0); +INSERT INTO "area" VALUES('EPSG','4093','Arctic - 74°30''N to 69°30''N, 44°E to 64°E','Arctic - between 74°30''N and 69°30''N, approximately 44°E to approximately 64°E. May be extended westwards or eastwards within the latitude limits.',69.5,74.51,44.0,64.01,0); +INSERT INTO "area" VALUES('EPSG','4094','Arctic - 74°30''N to 69°30''N, 64°E to 85°E','Arctic - between 74°30''N and 69°30''N, approximately 64°E to approximately 85°E. May be extended westwards or eastwards within the latitude limits.',69.5,74.51,64.0,85.01,0); +INSERT INTO "area" VALUES('EPSG','4095','Arctic - 74°30''N to 69°30''N, 85°E to 106°E','Arctic - between 74°30''N and 69°30''N, approximately 85°E to approximately 106°E. May be extended westwards or eastwards within the latitude limits.',69.5,74.51,85.0,106.01,0); +INSERT INTO "area" VALUES('EPSG','4096','Arctic - 74°30''N to 69°30''N, 106°E to 127°E','Arctic - between 74°30''N and 69°30''N, approximately 106°E to approximately 127°E. May be extended westwards or eastwards within the latitude limits.',69.5,74.51,106.0,127.01,0); +INSERT INTO "area" VALUES('EPSG','4097','Arctic - 74°30''N to 69°30''N, 127°E to 148°E','Arctic - between 74°30''N and 69°30''N, approximately 127°E to approximately 148°E. May be extended westwards or eastwards within the latitude limits.',69.5,74.51,127.0,148.0,0); +INSERT INTO "area" VALUES('EPSG','4098','Arctic - 74°30''N to 69°30''N, 148°E to 169°E','Arctic - between 74°30''N and 69°30''N, approximately 148°E to approximately 169°E. May be extended westwards or eastwards within the latitude limits.',69.5,74.51,148.0,169.01,0); +INSERT INTO "area" VALUES('EPSG','4099','Arctic - 74°30''N to 69°30''N, 169°E to 169°W','Arctic - between 74°30''N and 69°30''N, approximately 169°E to approximately 169°W. May be extended westwards or eastwards within the latitude limits.',69.5,74.51,169.0,-169.0,0); +INSERT INTO "area" VALUES('EPSG','4100','Arctic - 74°30''N to 69°30''N, 173°W to 153°W','Arctic - between 74°30''N and 69°30''N, approximately 173°W to approximately 153°W. May be extended eastwards within the latitude limits.',69.5,74.51,-173.0,-153.0,0); +INSERT INTO "area" VALUES('EPSG','4101','Arctic - 74°30''N to 69°30''N, 157°W to 137°W','Arctic - between 74°30''N and 69°30''N, approximately 157°W to approximately 137°W. May be extended westwards within the latitude limits.',69.5,74.51,-157.0,-137.0,0); +INSERT INTO "area" VALUES('EPSG','4102','Arctic - 74°30''N to 69°30''N, 141°W to 121°W','Arctic - between 74°30''N and 69°30''N, approximately 141°W to approximately 121°W. May be extended eastwards within the latitude limits.',69.5,74.51,-141.0,-121.0,0); +INSERT INTO "area" VALUES('EPSG','4103','Arctic - 74°30''N to 69°30''N, 121°W to 101°W','Arctic - between 74°30''N and 69°30''N, approximately 121°W to approximately 101°W. May be extended westwards or eastwards within the latitude limits.',69.5,74.51,-121.0,-101.0,0); +INSERT INTO "area" VALUES('EPSG','4104','Arctic - 74°30''N to 69°30''N, 101°W to 81°W','Arctic - between 74°30''N and 69°30''N, approximately 101°W to approximately 81°W. May be extended westwards or eastwards within the latitude limits.',69.5,74.51,-101.0,-81.0,0); +INSERT INTO "area" VALUES('EPSG','4105','Arctic - 74°30''N to 69°30''N, 81°W to 61°W','Arctic - between 74°30''N and 69°30''N, approximately 81°W to approximately 61°W. May be extended westwards within the latitude limits.',69.5,74.51,-81.0,-61.0,0); +INSERT INTO "area" VALUES('EPSG','4106','Arctic - 74°30''N to 69°30''N, 72°W to 52°W','Arctic - between 74°30''N and 69°30''N, approximately 72°W to approximately 52°W. May be extended eastwards within the latitude limits.',69.48,74.51,-71.89,-51.99,0); +INSERT INTO "area" VALUES('EPSG','4107','Arctic - 74°30''N to 69°30''N, 52°W to 32°W','Arctic - between 74°30''N and 69°30''N, approximately 52°W to approximately 32°W. May be extended westwards or eastwards within the latitude limits.',69.5,74.51,-52.0,-32.0,0); +INSERT INTO "area" VALUES('EPSG','4108','Arctic - 74°30''N to 69°30''N, 32°W to 12°W','Arctic - between 74°30''N and 69°30''N, approximately 32°W to approximately 12°W. May be extended westwards or eastwards within the latitude limits.',69.5,74.51,-32.0,-12.0,0); +INSERT INTO "area" VALUES('EPSG','4109','Arctic - 74°30''N to 69°30''N, 15°W to 5°E','Arctic - between 74°30''N and 69°30''N, approximately 15°W to approximately 5°E. May be extended westwards or eastwards within the latitude limits.',69.5,74.51,-15.0,5.01,0); +INSERT INTO "area" VALUES('EPSG','4110','Arctic - 71°10''N to 66°10''N, 174°W to 156°W','Arctic - between 71°10''N and 66°10''N, approximately 174°W to approximately 156°W. May be extended eastwards within the latitude limits.',66.16,71.17,-174.0,-156.0,0); +INSERT INTO "area" VALUES('EPSG','4111','Arctic - 71°10''N to 66°10''N, 156°W to 138°W','Arctic - between 71°10''N and 66°10''N, approximately 156°W to approximately 138°W. May be extended westwards within the latitude limits.',66.16,71.17,-156.0,-138.0,0); +INSERT INTO "area" VALUES('EPSG','4112','Arctic - 71°10''N to 66°10''N, 141°W to 122°W','Arctic - between 71°10''N and 66°10''N, approximately 141°W to approximately 122°W. May be extended eastwards within the latitude limits.',66.16,71.17,-141.0,-122.0,0); +INSERT INTO "area" VALUES('EPSG','4113','Arctic - 71°10''N to 66°10''N, 122°W to 103°W','Arctic - between 71°10''N and 66°10''N, approximately 122°W to approximately 103°W. May be extended westwards or eastwards within the latitude limits.',66.16,71.17,-122.0,-103.0,0); +INSERT INTO "area" VALUES('EPSG','4114','Arctic - 71°10''N to 66°10''N, 103°W to 84°W','Arctic - between 71°10''N and 66°10''N, approximately 103°W to approximately 84°W. May be extended westwards or eastwards within the latitude limits.',66.16,71.17,-103.0,-84.0,0); +INSERT INTO "area" VALUES('EPSG','4115','Arctic - 71°10''N to 66°10''N, 84°W to 65°W','Arctic - between 71°10''N and 66°10''N, approximately 84°W to approximately 65°W. May be extended westwards or eastwards within the latitude limits.',66.16,71.17,-84.0,-65.0,0); +INSERT INTO "area" VALUES('EPSG','4116','Arctic - 71°10''N to 66°10''N, 65°W to 47°W','Arctic - between 71°10''N and 66°10''N, approximately 65°W to approximately 47°W. May be extended westwards or eastwards within the latitude limits.',66.16,71.17,-65.0,-47.0,0); +INSERT INTO "area" VALUES('EPSG','4117','Arctic - 71°10''N to 66°10''N, 47°W to 29°W','Arctic - between 71°10''N and 66°10''N, approximately 47°W to approximately 29°W. May be extended westwards or eastwards within the latitude limits.',66.16,71.17,-47.0,-29.0,0); +INSERT INTO "area" VALUES('EPSG','4118','Arctic - 71°10''N to 66°10''N, 29°W to 11°W','Arctic - between 71°10''N and 66°10''N, approximately 29°W to approximately 11°W. May be extended westwards within the latitude limits.',66.16,71.17,-29.0,-11.0,0); +INSERT INTO "area" VALUES('EPSG','4119','Arctic - 67°50''N to 62°50''N, 59°W to 42°W','Arctic - between 67°50''N and 62°50''N, approximately 59°W to approximately 42°W. May be extended eastwards within the latitude limits.',62.83,67.84,-59.0,-42.0,0); +INSERT INTO "area" VALUES('EPSG','4120','Arctic - 67°50''N to 62°50''N, 42°W to 25°W','Arctic - between 67°50''N and 62°50''N, approximately 42°W to approximately 25°W. May be extended westwards within the latitude limits.',62.83,67.84,-42.0,-25.0,0); +INSERT INTO "area" VALUES('EPSG','4121','Cayman Islands - Little Cayman','Cayman Islands - Little Cayman.',19.63,19.74,-80.14,-79.93,0); +INSERT INTO "area" VALUES('EPSG','4122','Colombia - Arauca city','Colombia - Arauca city.',7.05,7.1,-70.78,-70.71,0); +INSERT INTO "area" VALUES('EPSG','4123','Arctic - 64°30''N to 59°30''N, 59°W to 44°W','Arctic - between 64°30''N and 59°30''N, approximately 59°W to approximately 44°W. May be extended eastwards within the latitude limits.',59.5,64.51,-59.0,-44.0,0); +INSERT INTO "area" VALUES('EPSG','4124','Arctic - 64°30''N to 59°30''N, 44°W to 29°W','Arctic - between 64°30''N and 59°30''N, approximately 44°W to approximately 29°W. May be extended westwards within the latitude limits.',59.5,64.51,-44.0,-29.0,0); +INSERT INTO "area" VALUES('EPSG','4125','Portugal - Madeira and Desertas islands onshore','Portugal - Madeira and Desertas islands - onshore.',32.35,32.93,-17.31,-16.4,0); +INSERT INTO "area" VALUES('EPSG','4126','Portugal - Azores E onshore - Santa Maria and Formigas','Portugal - eastern Azores onshore - Santa Maria, Formigas.',36.87,37.34,-25.26,-24.72,0); +INSERT INTO "area" VALUES('EPSG','4127','Nigeria - OML 124','Nigeria - onshore - block OML 124 (formerly OPL 118).',5.56,5.74,6.72,6.97,0); +INSERT INTO "area" VALUES('EPSG','4128','Colombia - Santa Marta city','Colombia - Santa Marta city.',11.16,11.3,-74.24,-74.13,0); +INSERT INTO "area" VALUES('EPSG','4129','Brazil - 48°W to 42°W and north of 0°N','Brazil - offshore between 48°W and 42°W, northern hemisphere.',0.0,5.13,-48.0,-41.99,0); +INSERT INTO "area" VALUES('EPSG','4130','Colombia - Sucre city','Colombia - Sucre city.',8.79,8.83,-74.74,-74.69,0); +INSERT INTO "area" VALUES('EPSG','4131','Colombia - Tunja city','Colombia - Tunja city.',5.5,5.61,-73.39,-73.3,0); +INSERT INTO "area" VALUES('EPSG','4132','Colombia - Armenia city','Colombia - Armenia city.',4.5,4.55,-75.73,-75.65,0); +INSERT INTO "area" VALUES('EPSG','4133','Brazil - 42°W to 36°W and north of 0°N','Brazil - offshore between 42°W and 36°W, northern hemisphere.',0.0,0.74,-42.0,-38.22,0); +INSERT INTO "area" VALUES('EPSG','4134','Colombia - Barranquilla city','Colombia - Barranquilla city.',10.85,11.06,-74.87,-74.75,0); +INSERT INTO "area" VALUES('EPSG','4135','Colombia - Bogota city','Colombia - Bogota DC city.',4.45,4.85,-74.27,-73.98,0); +INSERT INTO "area" VALUES('EPSG','4136','Colombia - Bucaramanga city','Colombia - Bucaramanga city.',7.03,7.17,-73.19,-73.06,0); +INSERT INTO "area" VALUES('EPSG','4137','Colombia - Cali city','Colombia - Cali city.',3.32,3.56,-76.61,-76.42,0); +INSERT INTO "area" VALUES('EPSG','4138','Colombia - Cartagena city','Colombia - Cartagena city.',10.27,10.47,-75.57,-75.42,0); +INSERT INTO "area" VALUES('EPSG','4139','Colombia - Cucuta city','Colombia - Cucuta city.',7.81,7.97,-72.56,-72.46,0); +INSERT INTO "area" VALUES('EPSG','4140','Colombia - Florencia city','Colombia - Florencia city.',1.57,1.65,-75.63,-75.59,0); +INSERT INTO "area" VALUES('EPSG','4141','Colombia - Ibague city','Colombia - Ibague city.',4.39,4.47,-75.27,-75.11,0); +INSERT INTO "area" VALUES('EPSG','4142','Colombia - Inirida city','Colombia - Inirida city.',3.8,3.9,-67.94,-67.88,0); +INSERT INTO "area" VALUES('EPSG','4143','Colombia - Leticia city','Colombia - Leticia city.',-4.23,-4.17,-69.98,-69.92,0); +INSERT INTO "area" VALUES('EPSG','4144','Colombia - Manizales city','Colombia - Manizales city.',5.02,5.11,-75.54,-75.44,0); +INSERT INTO "area" VALUES('EPSG','4145','Colombia - Medellin city','Colombia - Medellin city.',6.12,6.37,-75.66,-75.5,0); +INSERT INTO "area" VALUES('EPSG','4146','Colombia - Mitu city','Colombia - Mitu city.',1.23,1.29,-70.25,-70.21,0); +INSERT INTO "area" VALUES('EPSG','4147','Colombia - Mocoa city','Colombia - Mocoa city.',1.12,1.18,-76.66,-76.63,0); +INSERT INTO "area" VALUES('EPSG','4148','Colombia - Monteria city','Colombia - Monteria city.',8.7,8.81,-75.94,-75.82,0); +INSERT INTO "area" VALUES('EPSG','4149','Colombia - Neiva city','Colombia - Neiva city.',2.87,2.99,-75.32,-75.23,0); +INSERT INTO "area" VALUES('EPSG','4150','Colombia - Pasto city','Colombia - Pasto city.',1.16,1.26,-77.32,-77.23,0); +INSERT INTO "area" VALUES('EPSG','4151','Colombia - Pereira city','Colombia - Pereira city.',4.78,4.87,-75.77,-75.64,0); +INSERT INTO "area" VALUES('EPSG','4152','Colombia - Popayan city','Colombia - Popayan city.',2.41,2.49,-76.65,-76.55,0); +INSERT INTO "area" VALUES('EPSG','4153','Colombia - Puerto Carreno city','Colombia - Puerto Carreno city.',5.98,6.3,-67.7,-67.41,0); +INSERT INTO "area" VALUES('EPSG','4154','Colombia - Quibdo city','Colombia - Quibdo city.',5.66,5.72,-76.67,-76.63,0); +INSERT INTO "area" VALUES('EPSG','4155','Colombia - Riohacha city','Colombia - Riohacha city.',11.42,11.58,-72.96,-72.84,0); +INSERT INTO "area" VALUES('EPSG','4156','Colombia - San Andres city','Colombia - San Andres city.',12.43,12.65,-81.82,-81.6,0); +INSERT INTO "area" VALUES('EPSG','4157','Colombia - San Jose del Guaviare city','Colombia - San Jose del Guaviare city.',2.54,2.61,-72.66,-72.6,0); +INSERT INTO "area" VALUES('EPSG','4158','Colombia - Valledupar city','Colombia - Valledupar city.',10.39,10.51,-73.3,-73.19,0); +INSERT INTO "area" VALUES('EPSG','4159','Colombia - Villavicencio city','Colombia - Villavicencio city.',4.07,4.21,-73.69,-73.56,0); +INSERT INTO "area" VALUES('EPSG','4160','Colombia - Yopal city','Colombia - Yopal city.',5.3,5.37,-72.43,-72.35,0); +INSERT INTO "area" VALUES('EPSG','4161','North America - Mexico and USA - onshore','Mexico - onshore. United States (USA) - CONUS and Alaska - onshore - Alabama; Alaska; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming.',14.51,71.4,172.42,-66.91,0); +INSERT INTO "area" VALUES('EPSG','4162','Pacific - US interests Pacific plate','American Samoa, Marshall Islands, United States (USA) - Hawaii, United States minor outlying islands; onshore and offshore.',-17.56,31.8,157.47,-151.27,0); +INSERT INTO "area" VALUES('EPSG','4163','Japan excluding northern main province','Japan - onshore and offshore, excluding northern prefectures of ''main province'' (see remarks).',17.09,46.05,122.38,157.65,0); +INSERT INTO "area" VALUES('EPSG','4164','USA - Iowa - Spencer','United States (USA) - Iowa - counties of Clay; Dickinson; Emmet; Kossuth; Lyon; O''Brien; Osceola; Palo Alto; Sioux.',42.9,43.51,-96.6,-93.97,0); +INSERT INTO "area" VALUES('EPSG','4165','Japan - onshore mainland excluding eastern main province','Japan - onshore mainland - Hokkaido, Honshu (western part only, see remarks), Shikoku, Kyushu.',30.94,45.54,129.3,145.87,0); +INSERT INTO "area" VALUES('EPSG','4166','Japan - onshore - Honshu, Shikoku, Kyushu','Japan - onshore mainland - Honshu, Shikoku, Kyushu.',30.94,41.58,129.3,142.14,0); +INSERT INTO "area" VALUES('EPSG','4167','Pacific - US interests Mariana plate','Guam, Northern Mariana Islands and Palau; onshore and offshore.',1.64,23.9,129.48,149.55,0); +INSERT INTO "area" VALUES('EPSG','4168','Japan - onshore - Hokkaido','Japan - onshore mainland - Hokkaido.',41.34,45.54,139.7,145.87,0); +INSERT INTO "area" VALUES('EPSG','4169','Christmas Island - onshore','Christmas Island - onshore.',-10.63,-10.36,105.48,105.77,0); +INSERT INTO "area" VALUES('EPSG','4170','Japan - northern Honshu','Japan - northern Honshu prefectures affected by 2011 Tohoku earthquake: Aomori, Iwate, Miyagi, Akita, Yamaguta, Fukushima, Ibaraki, Tochigi, Gumma, Saitama, Chiba, Tokyo, Kanagawa, Niigata, Toyama, Ishikawa, Fukui, Yamanashi, Nagano, Gifu.',34.84,41.58,135.42,142.14,0); +INSERT INTO "area" VALUES('EPSG','4171','Northern Mariana Islands - Rota, Saipan and Tinian','Northern Mariana Islands - onshore - Rota, Saipan and Tinian.',14.06,15.35,145.06,145.89,0); +INSERT INTO "area" VALUES('EPSG','4172','Falkland Islands - offshore 63°W to 57°W','Falkland Islands (Malvinas) - offshore - between 63°W and 57°W.',-56.25,-47.68,-63.01,-56.99,0); +INSERT INTO "area" VALUES('EPSG','4173','Heard Island and McDonald Islands - west of 66°E','Heard Island and McDonald Islands - offshore west of 66°E.',-57.5,-53.43,62.92,66.0,0); +INSERT INTO "area" VALUES('EPSG','4174','Australia','Australia - onshore and offshore. Includes Lord Howe Island, Macquarie Islands, Ashmore and Cartier Islands.',-60.56,-8.88,105.8,164.7,0); +INSERT INTO "area" VALUES('EPSG','4175','Australasia - Australia and Norfolk Island - 162°E to 168°E','Australia - offshore east of 162°E. Norfolk Island - onshore and offshore west of 168°E.',-59.39,-25.94,162.0,168.0,0); +INSERT INTO "area" VALUES('EPSG','4176','Australasia - Australia and Christmas Island - 108°E to 114°E','Australia - onshore and offshore west of 114°E. Christmas Island - offshore east of 108°E.',-37.84,-10.72,108.0,114.01,0); +INSERT INTO "area" VALUES('EPSG','4177','Australia - GDA','Australia including Lord Howe Island, Macquarie Islands, Ashmore and Cartier Islands, Christmas Island, Cocos (Keeling) Islands, Norfolk Island. All onshore and offshore.',-60.56,-8.47,93.41,173.35,0); +INSERT INTO "area" VALUES('EPSG','4178','Australia - 114°E to 120°E','Australia - onshore and offshore between 114°E and 120°E.',-38.53,-12.06,114.0,120.01,0); +INSERT INTO "area" VALUES('EPSG','4179','Norfolk Island - east of 168°E','Norfolk Island - offshore east of 168°E.',-32.48,-25.61,168.0,173.35,0); +INSERT INTO "area" VALUES('EPSG','4180','USA - Oregon - Baker City','United States (USA) - Oregon - Baker City area.',44.6,45.19,-118.15,-117.37,0); +INSERT INTO "area" VALUES('EPSG','4181','Heard Island and McDonald Islands - 66°E to 72°E','Heard Island and McDonald Islands - offshore 66°E to 72°E.',-58.96,-51.18,66.0,72.01,0); +INSERT INTO "area" VALUES('EPSG','4182','USA - Oregon - Bend-Burns','United States (USA) - Oregon - Bend-Burns area.',43.34,44.28,-120.95,-118.8,0); +INSERT INTO "area" VALUES('EPSG','4183','Seychelles - Seychelles Bank','Seychelles - Mahe, Silhouette, North, Aride Island, Praslin, La Digue and Frigate islands including adjacent smaller granitic islands on the Seychelles Bank, Bird Island and Denis Island.',-4.86,-3.66,55.15,56.01,0); +INSERT INTO "area" VALUES('EPSG','4184','Heard Island and McDonald Islands - 72°E to 78°E','Heard Island and McDonald Islands - onshore and offshore 72°E to 78°E.',-59.02,-49.5,72.0,78.01,0); +INSERT INTO "area" VALUES('EPSG','4185','Heard Island and McDonald Islands - east of 78°E','Heard Island and McDonald Islands - offshore east of 78°E.',-58.47,-50.65,78.0,83.57,0); +INSERT INTO "area" VALUES('EPSG','4186','Italy - 12°E to 18°E','Italy - onshore and offshore - between 12°E and 18°E including San Marino and Vatican City State.',34.79,47.1,12.0,18.0,0); +INSERT INTO "area" VALUES('EPSG','4187','Italy - east of 18°E','Italy - onshore and offshore - east of 18°E.',34.76,41.64,17.99,18.99,0); +INSERT INTO "area" VALUES('EPSG','4188','Spain and Gibraltar - onshore','Gibraltar - onshore; Spain - mainland onshore.',35.95,43.82,-9.37,3.39,0); +INSERT INTO "area" VALUES('EPSG','4189','Cocos (Keeling) Islands - west of 96°E','Cocos (Keeling) Islands - offshore west of 96°E.',-15.46,-8.57,93.41,96.01,0); +INSERT INTO "area" VALUES('EPSG','4190','Cocos (Keeling) Islands - east of 96°E','Cocos (Keeling) Islands - onshore and offshore east of 96°E.',-15.56,-8.47,96.0,100.34,0); +INSERT INTO "area" VALUES('EPSG','4191','Australasia - Australia and Christmas Island - west of 108°E','Australia - offshore west of 108°E. Christmas Island - onshore and offshore west of 108°E.',-34.68,-8.87,102.14,108.01,0); +INSERT INTO "area" VALUES('EPSG','4192','USA - Oregon - Bend-Klamath Falls','United States (USA) - Oregon - Bend-Klamath Falls area.',41.88,43.89,-122.45,-120.77,0); +INSERT INTO "area" VALUES('EPSG','4193','Vietnam - west of 103°30''E onshore','Vietnam - onshore west of 103°30''E.',9.23,22.8,102.14,103.51,0); +INSERT INTO "area" VALUES('EPSG','4194','Japan onshore excluding northern main province','Japan - onshore, excluding northern prefectures of ''main province'' (see remarks).',20.37,45.54,122.83,154.05,0); +INSERT INTO "area" VALUES('EPSG','4195','USA - Oregon - Bend-Redmond-Prineville','United States (USA) - Oregon - Bend-Redmond-Prineville area.',43.76,44.98,-121.88,-119.79,0); +INSERT INTO "area" VALUES('EPSG','4196','Australia and Macquarie - 156°E to 162°E','Australia including Lord Howe Island and Macquarie Islands - onshore and offshore between 156°E and 162°E.',-60.56,-14.08,156.0,162.01,0); +INSERT INTO "area" VALUES('EPSG','4197','USA - Oregon - Eugene','United States (USA) - Oregon - Eugene area.',43.74,44.71,-123.8,-122.18,0); +INSERT INTO "area" VALUES('EPSG','4198','USA - Oregon - Grants Pass-Ashland','United States (USA) - Oregon - Grants Pass-Ashland area.',41.88,42.85,-123.95,-122.37,0); +INSERT INTO "area" VALUES('EPSG','4199','USA - Oregon - Canyonville-Grants Pass','United States (USA) - Oregon - Canyonville-Grants Pass area.',42.49,43.24,-123.83,-122.43,0); +INSERT INTO "area" VALUES('EPSG','4200','USA - Oregon - Columbia River East','United States (USA) - Oregon - Columbia River area between approximately 122°03''W and 118°53''W.',45.49,46.08,-122.05,-118.89,0); +INSERT INTO "area" VALUES('EPSG','4201','USA - Oregon - Gresham-Warm Springs','United States (USA) - Oregon - Gresham-Warm Springs area.',45.02,45.55,-122.43,-121.68,0); +INSERT INTO "area" VALUES('EPSG','4202','USA - Oregon - Columbia River West','United States (USA) - Oregon - Columbia River area west of approximately 121°30''W.',45.17,46.56,-124.33,-121.47,0); +INSERT INTO "area" VALUES('EPSG','4203','USA - Oregon - Cottage Grove-Canyonville','United States (USA) - Oregon - Cottage Grove-Canyonville area.',42.82,43.88,-123.96,-122.4,0); +INSERT INTO "area" VALUES('EPSG','4204','USA - Oregon - Dufur-Madras','United States (USA) - Oregon - Dufur-Madras area.',44.63,45.55,-121.95,-120.46,0); +INSERT INTO "area" VALUES('EPSG','4205','[enter here applicable extent]','[enter here applicable extent]',89.99,90.0,179.99,180.0,0); +INSERT INTO "area" VALUES('EPSG','4206','USA - Oregon - La Grande','United States (USA) - Oregon - La Grande area.',45.13,45.8,-118.17,-117.14,0); +INSERT INTO "area" VALUES('EPSG','4207','USA - Oregon - Ontario','United States (USA) - Oregon - Ontario area.',43.41,44.65,-117.9,-116.7,0); +INSERT INTO "area" VALUES('EPSG','4208','USA - Oregon - Oregon Coast','United States (USA) - Oregon - coastal area.',41.89,46.4,-124.84,-123.35,0); +INSERT INTO "area" VALUES('EPSG','4209','USA - Oregon - Pendleton','United States (USA) - Oregon - Pendleton area.',45.46,46.02,-119.36,-118.17,0); +INSERT INTO "area" VALUES('EPSG','4210','USA - Oregon - Pendleton-La Grande','United States (USA) - Oregon - Pendleton-La Grande area.',45.13,45.64,-118.64,-118.09,0); +INSERT INTO "area" VALUES('EPSG','4211','USA - Oregon - Portland','United States (USA) - Oregon - Portland area.',45.23,46.01,-123.53,-122.11,0); +INSERT INTO "area" VALUES('EPSG','4212','USA - Oregon - Salem','United States (USA) - Oregon - Salem area.',44.32,45.3,-123.73,-121.89,0); +INSERT INTO "area" VALUES('EPSG','4213','USA - Oregon - Sweet Home-Sisters','United States (USA) - Oregon - Sweet Home-Santiam Pass-Sisters area.',44.1,44.66,-122.51,-121.69,0); +INSERT INTO "area" VALUES('EPSG','4214','Papua New Guinea - mainland onshore','Papua New Guinea - mainland onshore.',-10.76,-2.53,140.85,150.96,0); +INSERT INTO "area" VALUES('EPSG','4215','Vietnam - 103.5°E to 106.5°E onshore','Vietnam - between 103°30''E and 106°30''E, onshore.',8.5,23.33,103.5,106.51,0); +INSERT INTO "area" VALUES('EPSG','4216','Papua New Guinea - North Fly','Papua New Guinea - North Fly area (between 5°04''S and 6°36''S and west of 141°32''E).',-6.6,-5.05,140.89,141.54,0); +INSERT INTO "area" VALUES('EPSG','4217','Vietnam - east of 106.5°E onshore','Vietnam - onshore east of 106°30''E.',8.58,22.94,106.5,109.52,0); +INSERT INTO "area" VALUES('EPSG','4218','Vietnam - Da Nang','Vietnam - Da Nang municipality.',15.9,16.25,107.81,108.4,0); +INSERT INTO "area" VALUES('EPSG','4219','USA - Iowa - Mason City','United States (USA) - Iowa - counties of Cerro Gordo; Chickasaw; Floyd; Hancock; Howard; Mitchell; Winnebago; Winneshiek; Worth.',42.9,43.51,-93.98,-91.6,0); +INSERT INTO "area" VALUES('EPSG','4220','Equatorial Guinea - Bioko','Equatorial Guinea - Bioko onshore.',3.14,3.82,8.37,9.02,0); +INSERT INTO "area" VALUES('EPSG','4221','Chile - onshore 36°S to 43.5°S','Chile - onshore between 36°S and 43°30''S.',-43.5,-35.99,-74.48,-70.39,0); +INSERT INTO "area" VALUES('EPSG','4222','Chile - onshore 26°S to 36°S','Chile - onshore between 26°S and 36°S.',-36.0,-26.0,-72.87,-68.28,0); +INSERT INTO "area" VALUES('EPSG','4223','Asia - Malaysia (west including SCS) and Singapore','Malaysia - West Malaysia onshore and offshore east coast; Singapore - onshore and offshore.',1.13,7.81,99.59,105.82,0); +INSERT INTO "area" VALUES('EPSG','4224','Chile - onshore 32°S to 36°S','Chile - onshore between 32°S and 36°S.',-36.0,-31.99,-72.87,-69.77,0); +INSERT INTO "area" VALUES('EPSG','4225','UAE - Abu Dhabi - onshore','United Arab Emirates (UAE) - Abu Dhabi onshore.',22.63,24.95,51.56,56.03,0); +INSERT INTO "area" VALUES('EPSG','4226','UAE - Abu Dhabi','United Arab Emirates (UAE) - Abu Dhabi onshore and offshore.',22.63,25.64,51.5,56.03,0); +INSERT INTO "area" VALUES('EPSG','4227','UAE - Abu Dhabi - onshore east of 54°E','United Arab Emirates (UAE) - Abu Dhabi onshore east of 54°E.',22.63,24.95,53.99,56.03,0); +INSERT INTO "area" VALUES('EPSG','4228','USA - California - San Francisco Bay Area','United States (USA) - California - San Francisco bay area – counties of Alameda, Contra Costa, Marin, Napa, San Francisco, San Mateo, Santa Clara, Santa Cruz, Solano and Sonoma.',36.85,38.87,-123.56,-121.2,0); +INSERT INTO "area" VALUES('EPSG','4229','UAE - Abu Dhabi island','United Arab Emirates (UAE) - Abu Dhabi island.',24.24,24.64,54.2,54.71,0); +INSERT INTO "area" VALUES('EPSG','4230','USA - Iowa - Elkader','United States (USA) - Iowa - counties of Allamakee; Clayton; Delaware.',42.29,43.51,-91.62,-90.89,0); +INSERT INTO "area" VALUES('EPSG','4231','Chile - onshore north of 26°S','Chile - onshore north of 26°S.',-26.0,-17.5,-70.79,-67.0,0); +INSERT INTO "area" VALUES('EPSG','4232','Chile - onshore north of 32°S','Chile - onshore north of 32°S.',-32.0,-17.5,-71.77,-67.0,0); +INSERT INTO "area" VALUES('EPSG','4233','USA - Iowa - Sioux City-Iowa Falls','United States (USA) - Iowa - counties of Buena Vista; Calhoun; Cherokee; Franklin; Hamilton; Hardin; Humboldt; Ida; Plymouth; Pocahontas; Sac; Webster; Woodbury; Wright.',42.2,42.92,-96.65,-93.0,0); +INSERT INTO "area" VALUES('EPSG','4234','USA - Iowa - Waterloo','United States (USA) - Iowa - counties of Black Hawk; Bremer; Buchanan; Butler; Fayette; Grundy.',42.2,43.09,-93.03,-91.59,0); +INSERT INTO "area" VALUES('EPSG','4235','USA - Iowa - Council Bluffs','United States (USA) - Iowa - counties of Crawford; Fremont; Harrison; Mills; Monona; Pottawattamie; Shelby.',40.58,42.22,-96.37,-95.04,0); +INSERT INTO "area" VALUES('EPSG','4236','USA - Iowa - Carroll-Atlantic','United States (USA) - Iowa - counties of Adair; Audubon; Carroll; Cass; Greene; Guthrie.',41.15,42.22,-95.16,-94.16,0); +INSERT INTO "area" VALUES('EPSG','4237','USA - Iowa - Ames-Des Moines','United States (USA) - Iowa - counties of Boone; Dallas; Madison; Polk; Story; Warren.',41.15,42.22,-94.29,-93.23,0); +INSERT INTO "area" VALUES('EPSG','4238','Asia - Middle East - Iraq and SW Iran','Iraq - onshore; Iran - onshore northern Gulf coast and west bordering southeast Iraq.',29.06,37.39,38.79,51.06,0); +INSERT INTO "area" VALUES('EPSG','4239','USA - Iowa - Newton','United States (USA) - Iowa - counties of Jasper; Mahaska; Marion; Marshall; Poweshiek; Tama.',41.16,42.3,-93.35,-92.29,0); +INSERT INTO "area" VALUES('EPSG','4240','USA - Iowa - Cedar Rapids','United States (USA) - Iowa - counties of Benton; Cedar; Iowa; Johnson; Jones; Linn.',41.42,42.3,-92.31,-90.89,0); +INSERT INTO "area" VALUES('EPSG','4241','USA - Iowa - Dubuque-Davenport','United States (USA) - Iowa - counties of Clinton; Dubuque; Jackson; Scott.',41.44,42.68,-91.14,-90.14,0); +INSERT INTO "area" VALUES('EPSG','4242','USA - Iowa - Red Oak-Ottumwa','United States (USA) - Iowa - counties of Adams; Appanoose; Clarke; Davis; Decatur; Lucas; Monroe; Montgomery; Page; Ringgold; Taylor; Union; Wapello; Wayne.',40.57,41.17,-95.39,-92.17,0); +INSERT INTO "area" VALUES('EPSG','4243','USA - Iowa - Fairfield','United States (USA) - Iowa - counties of Jefferson; Keokuk; Van Buren; Washington.',40.59,41.52,-92.42,-91.48,0); +INSERT INTO "area" VALUES('EPSG','4244','USA - Iowa - Burlington','United States (USA) - Iowa - counties of Des Moines; Henry; Lee; Louisa; Muscatine.',40.37,41.6,-91.72,-90.78,0); +INSERT INTO "area" VALUES('EPSG','4245','French Southern Territories - Crozet west of 48°E','French Southern Territories - Crozet offshore west of 48°E.',-49.38,-43.12,45.37,48.01,0); +INSERT INTO "area" VALUES('EPSG','4246','French Southern and Antarctic Territories','French Southern Territories - onshore and offshore: Amsterdam and St Paul, Crozet, Europa and Kerguelen. Antarctica - Adelie Land coastal area.',-67.13,-20.91,37.98,142.0,0); +INSERT INTO "area" VALUES('EPSG','4247','French Southern Territories - Crozet 48°E to 54°E','French Southern Territories - Crozet onshore and offshore between 48°E to 54°E.',-49.82,-42.61,48.0,54.01,0); +INSERT INTO "area" VALUES('EPSG','4248','French Southern Territories - Crozet east of 54°E','French Southern Territories - Crozet offshore east of 54°E.',-49.61,-43.3,54.0,57.16,0); +INSERT INTO "area" VALUES('EPSG','4249','French Southern Territories - 60°E to 66°E','French Southern Territories - Kerguelen offshore west of 66°E.',-53.03,-45.73,62.96,66.0,0); +INSERT INTO "area" VALUES('EPSG','4250','French Southern Territories - 66°E to 72°E','French Southern Territories - Kerguelen onshore and offshore between 66°E and 72°E.',-53.24,-45.11,66.0,72.01,0); +INSERT INTO "area" VALUES('EPSG','4251','French Southern Territories - 72°E to 78°E','French Southern Territories - Kerguelen offshore east of 72°E and Amsterdam & St Paul onshore and offshore west of 78°E.',-51.19,-34.47,72.0,78.01,0); +INSERT INTO "area" VALUES('EPSG','4252','French Southern Territories - east of 78°E','French Southern Territories - Amsterdam & St Paul offshore east of 78°E.',-42.04,-34.5,78.0,81.83,0); +INSERT INTO "area" VALUES('EPSG','4253','USA - Indiana - Lake and Newton','United States (USA) - Indiana - counties of Lake and Newton.',40.73,41.77,-87.53,-87.21,0); +INSERT INTO "area" VALUES('EPSG','4254','USA - Indiana - Jasper and Porter','United States (USA) - Indiana - counties of Jasper and Porter.',40.73,41.77,-87.28,-86.92,0); +INSERT INTO "area" VALUES('EPSG','4255','USA - Indiana - LaPorte, Pulaski, Starke','United States (USA) - Indiana - counties of LaPorte, Pulaski and Starke.',40.9,41.77,-86.94,-86.46,0); +INSERT INTO "area" VALUES('EPSG','4256','USA - Indiana - Benton','United States (USA) - Indiana - Benton county.',40.47,40.74,-87.53,-87.09,0); +INSERT INTO "area" VALUES('EPSG','4257','USA - Indiana - Tippecanoe and White','United States (USA) - Indiana - counties of Tippecanoe and White.',40.21,40.92,-87.1,-86.58,0); +INSERT INTO "area" VALUES('EPSG','4258','USA - Indiana - Carroll','United States (USA) - Indiana - Carroll county.',40.43,40.74,-86.78,-86.37,0); +INSERT INTO "area" VALUES('EPSG','4259','USA - Indiana - Fountain and Warren','United States (USA) - Indiana - counties of Fountain and Warren.',39.95,40.48,-87.54,-87.09,0); +INSERT INTO "area" VALUES('EPSG','4260','USA - Indiana - Clinton','United States (USA) - Indiana - Clinton county.',40.17,40.44,-86.7,-86.24,0); +INSERT INTO "area" VALUES('EPSG','4261','USA - Indiana - Parke and Vermillion','United States (USA) - Indiana - counties of Parke and Vermillion.',39.6,40.15,-87.54,-87.0,0); +INSERT INTO "area" VALUES('EPSG','4262','USA - Indiana - Montgomery and Putnam','United States (USA) - Indiana - counties of Montgomery and Putnam.',39.47,40.22,-87.1,-86.64,0); +INSERT INTO "area" VALUES('EPSG','4263','USA - Indiana - Boone and Hendricks','United States (USA) - Indiana - counties of Boone and Hendricks.',39.6,40.19,-86.7,-86.24,0); +INSERT INTO "area" VALUES('EPSG','4264','USA - Indiana - Vigo','United States (USA) - Indiana - Vigo county.',39.25,39.61,-87.62,-87.19,0); +INSERT INTO "area" VALUES('EPSG','4265','USA - Indiana - Clay','United States (USA) - Indiana - Clay county.',39.16,39.61,-87.25,-86.93,0); +INSERT INTO "area" VALUES('EPSG','4266','USA - Indiana - Owen','United States (USA) - Indiana - Owen county.',39.16,39.48,-87.06,-86.63,0); +INSERT INTO "area" VALUES('EPSG','4267','USA - Indiana - Monroe and Morgan','United States (USA) - Indiana - counties of Monroe and Morgan.',38.99,39.64,-86.69,-86.24,0); +INSERT INTO "area" VALUES('EPSG','4268','USA - Indiana - Sullivan','United States (USA) - Indiana - Sullivan county.',38.9,39.26,-87.65,-87.24,0); +INSERT INTO "area" VALUES('EPSG','4269','USA - Indiana - Daviess and Greene','United States (USA) - Indiana - counties of Daviess and Greene.',38.49,39.18,-87.28,-86.68,0); +INSERT INTO "area" VALUES('EPSG','4270','USA - Indiana - Knox','United States (USA) - Indiana - Knox county.',38.41,38.91,-87.75,-87.09,0); +INSERT INTO "area" VALUES('EPSG','4271','USA - Indiana - Dubois and Martin','United States (USA) - Indiana - counties of Dubois and Martin.',38.2,38.91,-87.08,-86.67,0); +INSERT INTO "area" VALUES('EPSG','4272','USA - Indiana - Crawford, Lawrence, Orange','United States (USA) - Indiana - counties of Crawford, Lawrence and Orange.',38.1,39.0,-86.69,-86.24,0); +INSERT INTO "area" VALUES('EPSG','4273','USA - Indiana - Gibson','United States (USA) - Indiana - Gibson county.',38.16,38.54,-87.98,-87.31,0); +INSERT INTO "area" VALUES('EPSG','4274','USA - Indiana - Pike and Warrick','United States (USA) - Indiana - counties of Pike and Warrick.',37.87,38.56,-87.48,-87.01,0); +INSERT INTO "area" VALUES('EPSG','4275','USA - Indiana - Posey','United States (USA) - Indiana - Posey county.',37.77,38.24,-88.06,-87.68,0); +INSERT INTO "area" VALUES('EPSG','4276','USA - Indiana - Vanderburgh','United States (USA) - Indiana - Vanderburgh county.',37.82,38.17,-87.71,-87.44,0); +INSERT INTO "area" VALUES('EPSG','4277','USA - Indiana - Spencer','United States (USA) - Indiana - Spencer county.',37.78,38.21,-87.27,-86.76,0); +INSERT INTO "area" VALUES('EPSG','4278','USA - Indiana - Perry','United States (USA) - Indiana - Perry county.',37.84,38.27,-86.82,-86.43,0); +INSERT INTO "area" VALUES('EPSG','4279','USA - Indiana - Fulton, Marshall, St Joseph','United States (USA) - Indiana - counties of Fulton, Marshall and St Joseph.',40.9,41.77,-86.53,-85.94,0); +INSERT INTO "area" VALUES('EPSG','4280','USA - Indiana - Elkhart, Kosciusko, Wabash','United States (USA) - Indiana - counties of Elkhart, Kosciusko and Wabash.',40.65,41.77,-86.08,-85.63,0); +INSERT INTO "area" VALUES('EPSG','4281','USA - Indiana - LaGrange and Noble','United States (USA) - Indiana - counties of LaGrange and Noble.',41.26,41.77,-85.66,-85.19,0); +INSERT INTO "area" VALUES('EPSG','4282','USA - Indiana - Steuben','United States (USA) - Indiana - Steuben county.',41.52,41.77,-85.2,-84.8,0); +INSERT INTO "area" VALUES('EPSG','4283','USA - Indiana - DeKalb','United States (USA) - Indiana - DeKalb county.',41.26,41.54,-85.2,-84.8,0); +INSERT INTO "area" VALUES('EPSG','4284','USA - Indiana - Huntington and Whitley','United States (USA) - Indiana - counties of Huntington and Whitley.',40.65,41.3,-85.69,-85.3,0); +INSERT INTO "area" VALUES('EPSG','4285','USA - Indiana - Allen','United States (USA) - Indiana - Allen county.',40.91,41.28,-85.34,-84.8,0); +INSERT INTO "area" VALUES('EPSG','4286','USA - Indiana - Cass','United States (USA) - Indiana - Cass county.',40.56,40.92,-86.59,-86.16,0); +INSERT INTO "area" VALUES('EPSG','4287','USA - Indiana - Howard and Miami','United States (USA) - Indiana - counties of Howard and Miami.',40.37,41.0,-86.38,-85.86,0); +INSERT INTO "area" VALUES('EPSG','4288','USA - Indiana - Wells','United States (USA) - Indiana - Wells county.',40.56,40.92,-85.45,-85.06,0); +INSERT INTO "area" VALUES('EPSG','4289','USA - Indiana - Adams','United States (USA) - Indiana - Adams county.',40.56,40.93,-85.08,-84.8,0); +INSERT INTO "area" VALUES('EPSG','4290','USA - Indiana - Grant','United States (USA) - Indiana - Grant county.',40.37,40.66,-85.87,-85.44,0); +INSERT INTO "area" VALUES('EPSG','4291','USA - Indiana - Blackford and Delaware','United States (USA) - Indiana - counties of Blackford and Delaware.',40.07,40.57,-85.58,-85.2,0); +INSERT INTO "area" VALUES('EPSG','4292','USA - Indiana - Jay','United States (USA) - Indiana - Jay county.',40.3,40.58,-85.22,-84.8,0); +INSERT INTO "area" VALUES('EPSG','4293','USA - Indiana - Hamilton and Tipton','United States (USA) - Indiana - counties of Hamilton and Tipton.',39.92,40.41,-86.25,-85.86,0); +INSERT INTO "area" VALUES('EPSG','4294','USA - Indiana - Hancock and Madison','United States (USA) - Indiana - counties of Hancock and Madison.',39.69,40.38,-85.96,-85.57,0); +INSERT INTO "area" VALUES('EPSG','4295','USA - Indiana - Randolph and Wayne','United States (USA) - Indiana - counties of Randolph and Wayne.',39.71,40.32,-85.23,-84.8,0); +INSERT INTO "area" VALUES('EPSG','4296','USA - Indiana - Henry','United States (USA) - Indiana - Henry county.',39.78,40.08,-85.6,-85.2,0); +INSERT INTO "area" VALUES('EPSG','4297','USA - Indiana - Johnson and Marion','United States (USA) - Indiana - counties of Johnson and Marion.',39.34,39.93,-86.33,-85.93,0); +INSERT INTO "area" VALUES('EPSG','4298','USA - Indiana - Shelby','United States (USA) - Indiana - Shelby county.',39.34,39.7,-85.96,-85.62,0); +INSERT INTO "area" VALUES('EPSG','4299','USA - Indiana - Decatur and Rush','United States (USA) - Indiana - counties of Decatur and Rush.',39.13,39.79,-85.69,-85.29,0); +INSERT INTO "area" VALUES('EPSG','4300','USA - Indiana - Fayette, Franklin, Union','United States (USA) - Indiana - counties of Fayette, Franklin and Union.',39.26,39.79,-85.31,-84.81,0); +INSERT INTO "area" VALUES('EPSG','4301','USA - Indiana - Brown','United States (USA) - Indiana - Brown county.',39.04,39.35,-86.39,-86.07,0); +INSERT INTO "area" VALUES('EPSG','4302','USA - Indiana - Bartholomew','United States (USA) - Indiana - Bartholomew county.',39.03,39.36,-86.09,-85.68,0); +INSERT INTO "area" VALUES('EPSG','4303','USA - Indiana - Jackson','United States (USA) - Indiana - Jackson county.',38.72,39.08,-86.32,-85.79,0); +INSERT INTO "area" VALUES('EPSG','4304','USA - Indiana - Jennings','United States (USA) - Indiana - Jennings county.',38.8,39.2,-85.8,-85.43,0); +INSERT INTO "area" VALUES('EPSG','4305','USA - Indiana - Ripley','United States (USA) - Indiana - Ripley county.',38.91,39.32,-85.45,-85.06,0); +INSERT INTO "area" VALUES('EPSG','4306','USA - Indiana - Dearborn, Ohio, Switzerland','United States (USA) - Indiana - counties of Dearborn, Ohio and Switzerland.',38.68,39.31,-85.21,-84.78,0); +INSERT INTO "area" VALUES('EPSG','4307','USA - Indiana - Harrison and Washington','United States (USA) - Indiana - counties of Harrison and Washington.',37.95,38.79,-86.33,-85.84,0); +INSERT INTO "area" VALUES('EPSG','4308','USA - Indiana - Clark, Floyd, Scott','United States (USA) - Indiana - counties of Clark, Floyd and Scott.',38.17,38.84,-86.04,-85.41,0); +INSERT INTO "area" VALUES('EPSG','4309','USA - Indiana - Jefferson','United States (USA) - Indiana - Jefferson county.',38.58,38.92,-85.69,-85.2,0); +INSERT INTO "area" VALUES('EPSG','4310','USA - Montana - St Mary valley','United States (USA) - Montana - St Mary''s Valley area.',48.55,49.01,-113.97,-113.0,0); +INSERT INTO "area" VALUES('EPSG','4311','USA - Montana - Blackfeet reservation','United States (USA) - Montana - Blackfeet Indian Reservation.',48.0,49.01,-113.84,-112.0,0); +INSERT INTO "area" VALUES('EPSG','4312','USA - Montana - Milk River','United States (USA) - Montana - Milk River area.',47.78,49.01,-112.5,-108.74,0); +INSERT INTO "area" VALUES('EPSG','4313','USA - Montana - Fort Belknap','United States (USA) - Montana - Fort Belknap Indian Reservation area.',47.78,49.01,-110.84,-106.99,0); +INSERT INTO "area" VALUES('EPSG','4314','USA - Montana - Fort Peck higher areas','United States (USA) - Montana - Fort Peck Indian Reservation - higher areas, notably in west and north.',48.01,48.88,-107.57,-104.78,0); +INSERT INTO "area" VALUES('EPSG','4315','USA - Montana - Fort Peck lower areas','United States (USA) - Montana - Fort Peck Indian Reservation - lower areas, notably in south and east.',47.75,49.01,-107.76,-104.04,0); +INSERT INTO "area" VALUES('EPSG','4316','USA - Montana - Crow reservation','United States (USA) - Montana - Crow Indian Reservation.',44.99,46.09,-108.84,-106.66,0); +INSERT INTO "area" VALUES('EPSG','4317','USA - Montana - Three Forks','United States (USA) - Montana - Three Forks area.',45.36,46.59,-112.34,-110.75,0); +INSERT INTO "area" VALUES('EPSG','4318','USA - Montana - Billings','United States (USA) - Montana - Billings area.',44.99,47.41,-109.42,-107.99,0); +INSERT INTO "area" VALUES('EPSG','4319','USA - Wyoming - Wind River reservation','United States (USA) - Wyoming - Wind River Indian Reservation.',42.69,43.86,-109.5,-107.94,0); +INSERT INTO "area" VALUES('EPSG','4320','USA - Wisconsin - Ashland','United States (USA) - Wisconsin - Ashland county.',45.98,47.09,-90.93,-90.3,0); +INSERT INTO "area" VALUES('EPSG','4321','USA - Wisconsin - Bayfield','United States (USA) - Wisconsin - Bayfield county.',46.15,47.01,-91.56,-90.75,0); +INSERT INTO "area" VALUES('EPSG','4322','Oman - west of 54°E','Oman - onshore and offshore west of 54°E.',14.94,19.67,51.99,54.01,0); +INSERT INTO "area" VALUES('EPSG','4323','Oman - 54°E to 60°E','Oman - onshore and offshore between 54°E and 60°E.',14.33,26.74,54.0,60.01,0); +INSERT INTO "area" VALUES('EPSG','4324','Oman - east of 60°E','Oman - offshore east of 60°E.',16.37,24.09,60.0,63.38,0); +INSERT INTO "area" VALUES('EPSG','4325','USA - Wisconsin - Burnett','United States (USA) - Wisconsin - Burnett county.',45.63,46.16,-92.89,-92.03,0); +INSERT INTO "area" VALUES('EPSG','4326','USA - Wisconsin - Douglas','United States (USA) - Wisconsin - Douglas county.',46.15,46.76,-92.3,-91.55,0); +INSERT INTO "area" VALUES('EPSG','4327','USA - Wisconsin - Florence','United States (USA) - Wisconsin - Florence county.',45.71,46.03,-88.69,-88.05,0); +INSERT INTO "area" VALUES('EPSG','4328','USA - Wisconsin - Forest','United States (USA) - Wisconsin - Forest county.',45.37,46.08,-89.05,-88.42,0); +INSERT INTO "area" VALUES('EPSG','4329','USA - Wisconsin - Iron','United States (USA) - Wisconsin - Iron county.',45.98,46.6,-90.56,-89.92,0); +INSERT INTO "area" VALUES('EPSG','4330','USA - Wisconsin - Oneida','United States (USA) - Wisconsin - Oneida county.',45.46,45.91,-90.05,-89.04,0); +INSERT INTO "area" VALUES('EPSG','4331','USA - Wisconsin - Barron','United States (USA) - Wisconsin - Barron county.',45.2,45.65,-92.16,-91.53,0); +INSERT INTO "area" VALUES('EPSG','4332','USA - Wisconsin - Price','United States (USA) - Wisconsin - Price county.',45.37,45.99,-90.68,-90.04,0); +INSERT INTO "area" VALUES('EPSG','4333','USA - Wisconsin - Sawyer','United States (USA) - Wisconsin - Sawyer county.',45.63,46.16,-91.56,-90.67,0); +INSERT INTO "area" VALUES('EPSG','4334','USA - Wisconsin - Vilas','United States (USA) - Wisconsin - Vilas county.',45.85,46.3,-90.05,-88.93,0); +INSERT INTO "area" VALUES('EPSG','4335','USA - Wisconsin - Washburn','United States (USA) - Wisconsin - Washburn county.',45.63,46.16,-92.06,-91.54,0); +INSERT INTO "area" VALUES('EPSG','4336','USA - Wisconsin - Brown','United States (USA) - Wisconsin - Brown county.',44.24,44.68,-88.26,-87.76,0); +INSERT INTO "area" VALUES('EPSG','4337','USA - Wisconsin - Buffalo','United States (USA) - Wisconsin - Buffalo county.',44.02,44.6,-92.09,-91.52,0); +INSERT INTO "area" VALUES('EPSG','4338','USA - Wisconsin - Chippewa','United States (USA) - Wisconsin - Chippewa county.',44.85,45.3,-91.67,-90.92,0); +INSERT INTO "area" VALUES('EPSG','4339','USA - Wisconsin - Clark','United States (USA) - Wisconsin - Clark county.',44.42,45.04,-90.93,-90.31,0); +INSERT INTO "area" VALUES('EPSG','4340','USA - Wisconsin - Door','United States (USA) - Wisconsin - Door county.',44.67,45.43,-87.74,-86.8,0); +INSERT INTO "area" VALUES('EPSG','4341','USA - Wisconsin - Dunn','United States (USA) - Wisconsin - Dunn county.',44.68,45.21,-92.16,-91.64,0); +INSERT INTO "area" VALUES('EPSG','4342','USA - Wisconsin - Eau Claire','United States (USA) - Wisconsin - Eau Claire county.',44.59,44.86,-91.66,-90.92,0); +INSERT INTO "area" VALUES('EPSG','4343','USA - Wisconsin - Jackson','United States (USA) - Wisconsin - Jackson county.',44.07,44.6,-91.17,-90.31,0); +INSERT INTO "area" VALUES('EPSG','4344','USA - Wisconsin - Langlade','United States (USA) - Wisconsin - Langlade county.',45.02,45.48,-89.43,-88.63,0); +INSERT INTO "area" VALUES('EPSG','4345','USA - Wisconsin - Lincoln','United States (USA) - Wisconsin - Lincoln county.',45.11,45.56,-90.05,-89.42,0); +INSERT INTO "area" VALUES('EPSG','4346','USA - Wisconsin - Marathon','United States (USA) - Wisconsin - Marathon county.',44.68,45.13,-90.32,-89.22,0); +INSERT INTO "area" VALUES('EPSG','4347','USA - Wisconsin - Marinette','United States (USA) - Wisconsin - Marinette county.',44.96,45.8,-88.43,-87.48,0); +INSERT INTO "area" VALUES('EPSG','4348','USA - Wisconsin - Menominee','United States (USA) - Wisconsin - Menominee county.',44.85,45.12,-88.99,-88.48,0); +INSERT INTO "area" VALUES('EPSG','4349','USA - Wisconsin - Oconto','United States (USA) - Wisconsin - Oconto county.',44.67,45.38,-88.69,-87.76,0); +INSERT INTO "area" VALUES('EPSG','4350','USA - Wisconsin - Pepin and Pierce','United States (USA) - Wisconsin - counties of Pepin and Pierce.',44.4,44.87,-92.81,-91.65,0); +INSERT INTO "area" VALUES('EPSG','4351','USA - Wisconsin - Polk','United States (USA) - Wisconsin - Polk county.',45.2,45.73,-92.89,-92.15,0); +INSERT INTO "area" VALUES('EPSG','4352','USA - Wisconsin - Portage','United States (USA) - Wisconsin - Portage county.',44.24,44.69,-89.85,-89.22,0); +INSERT INTO "area" VALUES('EPSG','4353','USA - Wisconsin - Rusk','United States (USA) - Wisconsin - Rusk county.',45.29,45.64,-91.55,-90.67,0); +INSERT INTO "area" VALUES('EPSG','4354','USA - Wisconsin - Shawano','United States (USA) - Wisconsin - Shawano county.',44.58,45.03,-89.23,-88.24,0); +INSERT INTO "area" VALUES('EPSG','4355','USA - Wisconsin - St. Croix','United States (USA) - Wisconsin - St. Croix county.',44.85,45.22,-92.81,-92.13,0); +INSERT INTO "area" VALUES('EPSG','4356','USA - Wisconsin - Taylor','United States (USA) - Wisconsin - Taylor county.',45.03,45.39,-90.93,-90.04,0); +INSERT INTO "area" VALUES('EPSG','4357','USA - Wisconsin - Trempealeau','United States (USA) - Wisconsin - Trempealeau county.',43.98,44.6,-91.62,-91.15,0); +INSERT INTO "area" VALUES('EPSG','4358','USA - Wisconsin - Waupaca','United States (USA) - Wisconsin - Waupaca county.',44.24,44.69,-89.23,-88.6,0); +INSERT INTO "area" VALUES('EPSG','4359','USA - Wisconsin - Wood','United States (USA) - Wisconsin - Wood county.',44.24,44.69,-90.32,-89.72,0); +INSERT INTO "area" VALUES('EPSG','4360','USA - Wisconsin - Adams and Juneau','United States (USA) - Wisconsin - counties of Adams and Juneau.',43.64,44.25,-90.32,-89.59,0); +INSERT INTO "area" VALUES('EPSG','4361','USA - Wisconsin - Calumet, Fond du Lac, Outagamie and Winnebago','United States (USA) - Wisconsin - counties of Calumet, Fond du Lac, Outagamie and Winnebago.',43.54,44.6,-88.89,-88.04,0); +INSERT INTO "area" VALUES('EPSG','4362','USA - Wisconsin - Columbia','United States (USA) - Wisconsin - Columbia county.',43.28,43.65,-89.79,-89.0,0); +INSERT INTO "area" VALUES('EPSG','4363','USA - Wisconsin - Crawford','United States (USA) - Wisconsin - Crawford county.',42.98,43.43,-91.22,-90.66,0); +INSERT INTO "area" VALUES('EPSG','4364','USA - Wisconsin - Dane','United States (USA) - Wisconsin - Dane county.',42.84,43.3,-89.84,-89.0,0); +INSERT INTO "area" VALUES('EPSG','4365','USA - Wisconsin - Dodge and Jefferson','United States (USA) - Wisconsin - counties of Dodge and Jefferson.',42.84,43.64,-89.02,-88.4,0); +INSERT INTO "area" VALUES('EPSG','4366','USA - Wisconsin - Grant','United States (USA) - Wisconsin - Grant county.',42.5,43.22,-91.16,-90.42,0); +INSERT INTO "area" VALUES('EPSG','4367','USA - Wisconsin - Green and Lafayette','United States (USA) - Wisconsin - counties of Green and Lafayette.',42.5,42.86,-90.43,-89.36,0); +INSERT INTO "area" VALUES('EPSG','4368','USA - Wisconsin - Green Lake and Marquette','United States (USA) - Wisconsin - counties of Green Lake and Marquette.',43.63,43.99,-89.6,-88.88,0); +INSERT INTO "area" VALUES('EPSG','4369','USA - Wisconsin - Iowa','United States (USA) - Wisconsin - Iowa county.',42.81,43.21,-90.43,-89.83,0); +INSERT INTO "area" VALUES('EPSG','4370','USA - Wisconsin - Kenosha, Milwaukee, Ozaukee and Racine','United States (USA) - Wisconsin - counties of Kenosha, Milwaukee, Ozaukee and Racine.',42.49,43.55,-88.31,-87.75,0); +INSERT INTO "area" VALUES('EPSG','4371','USA - Wisconsin - Kewaunee, Manitowoc and Sheboygan','United States (USA) - Wisconsin - counties of Kewaunee, Manitowoc and Sheboygan.',43.54,44.68,-88.17,-87.37,0); +INSERT INTO "area" VALUES('EPSG','4372','USA - Wisconsin - La Crosse','United States (USA) - Wisconsin - La Crosse county.',43.72,44.1,-91.43,-90.91,0); +INSERT INTO "area" VALUES('EPSG','4373','USA - Wisconsin - Monroe','United States (USA) - Wisconsin - Monroe county.',43.72,44.17,-90.98,-90.31,0); +INSERT INTO "area" VALUES('EPSG','4374','USA - Wisconsin - Richland','United States (USA) - Wisconsin - Richland county.',43.16,43.56,-90.68,-90.19,0); +INSERT INTO "area" VALUES('EPSG','4375','USA - Wisconsin - Rock','United States (USA) - Wisconsin - Rock county.',42.49,42.85,-89.37,-88.77,0); +INSERT INTO "area" VALUES('EPSG','4376','USA - Wisconsin - Sauk','United States (USA) - Wisconsin - Sauk county.',43.14,43.65,-90.32,-89.59,0); +INSERT INTO "area" VALUES('EPSG','4377','USA - Wisconsin - Vernon','United States (USA) - Wisconsin - Vernon county.',43.42,43.74,-91.28,-90.31,0); +INSERT INTO "area" VALUES('EPSG','4378','USA - Wisconsin - Walworth','United States (USA) - Wisconsin - Walworth county.',42.49,42.85,-88.78,-88.3,0); +INSERT INTO "area" VALUES('EPSG','4379','USA - Wisconsin - Washington','United States (USA) - Wisconsin - Washington county.',43.19,43.55,-88.42,-88.03,0); +INSERT INTO "area" VALUES('EPSG','4380','USA - Wisconsin - Waukesha','United States (USA) - Wisconsin - Waukesha county.',42.84,43.2,-88.55,-88.06,0); +INSERT INTO "area" VALUES('EPSG','4381','USA - Wisconsin - Waushara','United States (USA) - Wisconsin - Waushara county.',43.98,44.25,-89.6,-88.88,0); +INSERT INTO "area" VALUES('EPSG','4382','Algeria - Ain Tsila','Algeria - Ain Tsila field.',27.4,28.1,7.66,8.27,0); +INSERT INTO "area" VALUES('EPSG','4383','Papua New Guinea - onshore south of 5°S and west of 144°E','Papua New Guinea - onshore south of 5°S and west of 144°E.',-9.35,-5.0,140.85,144.01,0); +INSERT INTO "area" VALUES('EPSG','4384','Papua New Guinea - 0°N to 12°S and 140°E to 158°E','Papua New Guinea - between 0°N and 12°S and 140°E and 158°E - onshore and offshore.',-12.0,0.01,140.0,158.01,0); +INSERT INTO "area" VALUES('EPSG','4385','Kyrgyzstan - west of 70°01''E','Kyrgyzstan - west of 70°01''E.',39.51,40.22,69.24,70.02,0); +INSERT INTO "area" VALUES('EPSG','4386','Kyrgyzstan - 70°01''E to 73°01''E','Kyrgyzstan - between 70°01''E and 73°01''E.',39.19,42.83,70.01,73.02,0); +INSERT INTO "area" VALUES('EPSG','4387','Kyrgyzstan - 73°01''E to 76°01''E','Kyrgyzstan - between 73°01''E and 76°01''E.',39.35,43.22,73.01,76.02,0); +INSERT INTO "area" VALUES('EPSG','4388','Kyrgyzstan - 76°01''E to 79°01''E','Kyrgyzstan - between 76°01''E and 79°01''E.',40.35,43.0,76.01,79.02,0); +INSERT INTO "area" VALUES('EPSG','4389','Kyrgyzstan - east of 79°01''E','Kyrgyzstan - east of 79°01''E.',41.66,42.8,79.01,80.29,0); +INSERT INTO "area" VALUES('EPSG','4390','UK - Britain and UKCS 49°46''N to 61°01''N, 7°33''W to 3°33''E','United Kingdom (UK) - offshore to boundary of UKCS within 49°46''N to 61°01''N and 7°33''W to 3°33''E; onshore Great Britain (England, Wales and Scotland). Isle of Man onshore.',49.75,61.14,-9.2,2.88,0); +INSERT INTO "area" VALUES('EPSG','4391','UK - offshore 49°46''N to 61°01''N, 7°33''W to 3°33''E','United Kingdom (UK) – offshore between 2km from shore and boundary of UKCS within 49°46''N to 61°01''N and 7°33''W to 3°33''E.',49.75,61.14,-9.2,2.88,0); +INSERT INTO "area" VALUES('EPSG','4392','India - northeast','India - Arunachal Pradesh, Assam, Manipur, Meghalaya, Mizoram, Nagaland and Tripura.',21.94,29.47,89.69,97.42,0); +INSERT INTO "area" VALUES('EPSG','4393','To be specified','Description of the extent of the CRS.',-90.0,90.0,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','4394','India - Andhra Pradesh and Telangana','India - Andhra Pradesh; Telangana; Yanam area of Pudacherry territory.',12.61,19.92,76.75,84.81,0); +INSERT INTO "area" VALUES('EPSG','4395','India - Arunachal Pradesh','India - Arunachal Pradesh.',26.65,29.47,91.55,97.42,0); +INSERT INTO "area" VALUES('EPSG','4396','India - Assam','India - Assam.',24.13,27.98,89.69,96.03,0); +INSERT INTO "area" VALUES('EPSG','4397','India - Bihar','India - Bihar.',24.28,27.86,83.31,88.3,0); +INSERT INTO "area" VALUES('EPSG','4398','India - Chhattisgarh','India - Chhattisgarh.',17.78,24.11,80.23,84.39,0); +INSERT INTO "area" VALUES('EPSG','4399','India - Goa','India - Goa.',14.86,15.8,73.61,74.35,0); +INSERT INTO "area" VALUES('EPSG','4400','India - Gujarat','India - Gujarat and union territories of Daman, Diu, Dadra and Nagar Haveli.',20.05,24.71,68.13,74.48,0); +INSERT INTO "area" VALUES('EPSG','4401','India - Haryana','India - Haryana including Chandigarh.',27.65,30.94,74.46,77.6,0); +INSERT INTO "area" VALUES('EPSG','4402','India - Himachal Pradesh','India - Himachal Pradesh.',30.38,33.26,75.57,79.0,0); +INSERT INTO "area" VALUES('EPSG','4403','India - Jammu and Kashmir','India - Jammu and Kashmir.',32.27,35.51,73.76,79.57,0); +INSERT INTO "area" VALUES('EPSG','4404','India - Jharkhand','India - Jharkhand.',21.96,25.35,83.32,87.98,0); +INSERT INTO "area" VALUES('EPSG','4405','India - Karnataka','India - Karnataka.',11.57,18.46,74.0,78.58,0); +INSERT INTO "area" VALUES('EPSG','4406','India - Kerala','India - Kerala; Mayyazhi (Mahe) area of Pudacherry territory.',8.25,12.8,74.81,77.4,0); +INSERT INTO "area" VALUES('EPSG','4407','India - Madhya Pradesh','India - Madhya Pradesh.',21.07,26.88,74.03,82.81,0); +INSERT INTO "area" VALUES('EPSG','4408','India - Maharashtra','India - Maharashtra.',15.6,22.04,72.6,80.9,0); +INSERT INTO "area" VALUES('EPSG','4409','India - Manipur','India - Manipur.',23.84,25.7,92.97,94.76,0); +INSERT INTO "area" VALUES('EPSG','4410','India - Meghalaya','India - Meghalaya.',25.03,26.12,89.82,92.81,0); +INSERT INTO "area" VALUES('EPSG','4411','India - Mizoram','India - Mizoram.',21.94,24.53,92.25,93.45,0); +INSERT INTO "area" VALUES('EPSG','4412','India - Nagaland','India - Nagaland.',25.2,27.05,93.33,95.25,0); +INSERT INTO "area" VALUES('EPSG','4413','India - Odisha','India - Odisha (Orissa).',17.8,22.57,81.38,87.5,0); +INSERT INTO "area" VALUES('EPSG','4414','India - Punjab','India - Punjab including Chandigarh.',29.54,32.58,73.87,76.94,0); +INSERT INTO "area" VALUES('EPSG','4415','India - Rajasthan','India - Rajasthan.',23.06,30.2,69.48,78.27,0); +INSERT INTO "area" VALUES('EPSG','4416','India - Sikkim','India - Sikkim.',27.08,28.14,88.01,88.92,0); +INSERT INTO "area" VALUES('EPSG','4417','India - Tamil Nadu','India - Tamil Nadu; Pudacherry and Karaikal areas of Pudacherry territory.',8.02,13.59,76.22,80.4,0); +INSERT INTO "area" VALUES('EPSG','4418','India - Tripura','India - Tripura.',22.94,24.54,91.15,92.34,0); +INSERT INTO "area" VALUES('EPSG','4419','India - Uttar Pradesh','India - Uttar Pradesh.',23.87,30.42,77.08,84.64,0); +INSERT INTO "area" VALUES('EPSG','4420','India - Uttarakhand','India - Uttarakhand (Uttaranchal).',28.71,31.48,77.56,81.02,0); +INSERT INTO "area" VALUES('EPSG','4421','India - West Bengal','India - West Bengal.',21.49,27.23,85.82,89.88,0); +INSERT INTO "area" VALUES('EPSG','4422','India - Delhi','India - Delhi national capital territory.',28.4,28.89,76.83,77.34,0); +INSERT INTO "area" VALUES('EPSG','4423','India - Andaman and Nicobar Islands','India - Andaman and Nicobar Islands.',6.7,13.73,92.15,94.33,0); +INSERT INTO "area" VALUES('EPSG','4424','India - Lakshadweep','India - Lakshadweep (Laccadive, Minicoy, and Aminidivi Islands).',8.21,11.76,72.04,73.76,0); +INSERT INTO "area" VALUES('EPSG','4425','Papua New Guinea - onshore - Central province and Gulf province east of 144°E','Papua New Guinea - onshore - Gulf province east of 144°24''E, Central province and National Capital District.',-10.42,-6.67,144.4,149.67,0); +INSERT INTO "area" VALUES('EPSG','4426','Bulgaria - east of 30°E','Bulgaria - offshore east of 30°E.',42.56,43.67,30.0,31.35,0); +INSERT INTO "area" VALUES('EPSG','4427','Bulgaria - 24°E to 30°E','Bulgaria - onshore east of 24°E, offshore west of 30°E.',41.24,44.15,24.0,30.01,0); +INSERT INTO "area" VALUES('EPSG','4428','Bulgaria - west of 24°E','Bulgaria - west of 24°E.',41.32,44.23,22.36,24.0,0); +INSERT INTO "area" VALUES('EPSG','4429','Ukraine - 25°E to 28°E','Ukraine - between 25°E and 28°E.',47.72,51.96,25.0,28.01,0); +INSERT INTO "area" VALUES('EPSG','4430','Ukraine - 28°E to 31°E onshore','Ukraine - between 28°E and 31°E, onshore.',45.18,52.09,28.0,31.01,0); +INSERT INTO "area" VALUES('EPSG','4431','Ukraine - 31°E to 34°E onshore','Ukraine - between 31°E and 34°E, onshore.',44.32,52.38,31.0,34.01,0); +INSERT INTO "area" VALUES('EPSG','4432','Ukraine - 34°E to 37°E onshore','Ukraine - between 34°E and 37°E, onshore.',44.33,52.25,34.0,37.01,0); +INSERT INTO "area" VALUES('EPSG','4433','Ukraine - 37°E to 40°E onshore','Ukraine - between 37°E and 40°E, onshore.',46.8,50.44,37.0,40.01,0); +INSERT INTO "area" VALUES('EPSG','4434','Ukraine - east of 40°E','Ukraine - east of 40°E.',48.8,49.62,40.0,40.18,0); +INSERT INTO "area" VALUES('EPSG','4435','Ukraine - west of 25°E','Ukraine - west of 25°E.',47.71,51.92,22.15,25.01,0); +INSERT INTO "area" VALUES('EPSG','4436','Australia - Western Australia - Kalgoorlie','Australia - Western Australia - Kalgoorlie area.',-32.25,-28.75,121.0,121.84,0); +INSERT INTO "area" VALUES('EPSG','4437','Australia - Western Australia - Busselton','Australia - Western Australia - Busselton area onshore below 250m AHD.',-33.75,-33.4,115.18,115.87,0); +INSERT INTO "area" VALUES('EPSG','4438','Australia - Western Australia - Barrow','Australia - Western Australia - Barrow Island and Onslow area onshore.',-22.2,-20.21,114.9,115.59,0); +INSERT INTO "area" VALUES('EPSG','4439','Australia - Western Australia - Albany','Australia - Western Australia - Albany area onshore below 190m AHD.',-35.21,-34.75,117.55,118.22,0); +INSERT INTO "area" VALUES('EPSG','4440','Australia - Western Australia - Jurien Bay','Australia - Western Australia - Jurien Bay area onshore below 200m AHD.',-30.74,-29.08,114.83,115.34,0); +INSERT INTO "area" VALUES('EPSG','4441','Australia - Western Australia - Broome','Australia - Western Australia - Broome area onshore below 130m AHD.',-18.09,-16.75,122.08,122.62,0); +INSERT INTO "area" VALUES('EPSG','4442','Australia - Western Australia - Carnarvon','Australia - Western Australia - Carnarvon area onshore.',-25.5,-23.0,113.33,114.0,0); +INSERT INTO "area" VALUES('EPSG','4443','Australia - Western Australia - Collie','Australia - Western Australia - Collie area between 50m and 310m AHD.',-34.67,-33.25,115.73,116.4,0); +INSERT INTO "area" VALUES('EPSG','4444','Australia - Western Australia - Kalbarri','Australia - Western Australia - Kalbarri area onshore.',-28.5,-27.16,113.9,114.75,0); +INSERT INTO "area" VALUES('EPSG','4445','Australia - Western Australia - Esperance','Australia - Western Australia - Esperance area onshore.',-34.5,-33.33,121.56,122.2,0); +INSERT INTO "area" VALUES('EPSG','4446','Albania - north of 41°18''N and east of 19°09''E','Albania - north of 41°18''N and east of 19°09''E, onshore and offshore.',41.3,42.67,19.14,20.63,0); +INSERT INTO "area" VALUES('EPSG','4447','DR Congo (Zaire) - offshore','The Democratic Republic of the Congo (Zaire) - offshore.',-6.04,-5.79,11.79,12.37,0); +INSERT INTO "area" VALUES('EPSG','4448','Australia - Western Australia - Exmouth','Australia - Western Australia - Exmouth area onshore below 160m AHD.',-22.42,-21.75,113.75,114.25,0); +INSERT INTO "area" VALUES('EPSG','4449','Australia - Western Australia - Geraldton','Australia - Western Australia - Geraldton area onshore below 195m AHD.',-29.1,-28.48,114.51,115.0,0); +INSERT INTO "area" VALUES('EPSG','4450','USA - Arizona - Pima county west','United States (USA) - Arizona - Pima county - west of the township line between ranges R2W and R3W, Gila and Salt River Meridian (west of approximately 112°31''W).',31.8,32.51,-113.33,-112.51,0); +INSERT INTO "area" VALUES('EPSG','4451','Australia - Western Australia - Karratha','Australia - Western Australia - Karratha area onshore.',-20.92,-20.25,116.58,117.25,0); +INSERT INTO "area" VALUES('EPSG','4452','Australia - Western Australia - Kununurra','Australia - Western Australia - Kununurra area onshore below 200m AHD.',-16.75,-14.75,128.5,129.0,0); +INSERT INTO "area" VALUES('EPSG','4453','Australia - Western Australia - Lancelin','Australia - Western Australia - Lancelin area onshore below 200m AHD.',-31.49,-30.71,115.15,115.62,0); +INSERT INTO "area" VALUES('EPSG','4454','Greenland - 58°N to 85°N','Greenland - onshore and offshore between 58°N and 85°N and west of 7°W.',58.0,85.01,-75.0,-6.99,0); +INSERT INTO "area" VALUES('EPSG','4455','Europe - Upper Austria, Salzburg and Bohemia','Austria - Upper Austria and Salzburg provinces. Czech Republic - Bohemia.',46.93,51.06,12.07,16.83,0); +INSERT INTO "area" VALUES('EPSG','4456','Europe - Lower Austria and Moravia','Austria - Lower Austria. Czech Republic - Moravia and Czech Silesia.',47.42,50.45,14.41,18.86,0); +INSERT INTO "area" VALUES('EPSG','4457','Australia - Western Australia - Margaret River','Australia - Western Australia - Margaret River area onshore below 200m AHD.',-34.42,-33.51,114.96,115.24,0); +INSERT INTO "area" VALUES('EPSG','4458','USA - Oregon - Riley-Lakeview','United States (USA) - Oregon - Riley-Lakeview area.',41.88,43.45,-120.97,-119.15,0); +INSERT INTO "area" VALUES('EPSG','4459','USA - Oregon - Burns-Harper','United States (USA) - Oregon - Burns-Harper area.',43.49,44.19,-118.61,-117.49,0); +INSERT INTO "area" VALUES('EPSG','4460','USA - Arizona - Pima county central','United States (USA) - Arizona - Pima county - between the township line between ranges R2W and R3W and the township line between ranges R7E and R8E, Gila and Salt River Meridian (between approximately 112°31''W and 111°34''W).',31.5,32.51,-112.52,-111.56,0); +INSERT INTO "area" VALUES('EPSG','4461','Greenland - 59°N to 84°N','Greenland - onshore and offshore between 59°N and 84°N and west of 10°W.',59.0,84.01,-75.0,-10.0,0); +INSERT INTO "area" VALUES('EPSG','4462','Australia - Western Australia - Perth','Australia - Western Australia - Perth area onshore below 165m AHD.',-33.42,-31.33,115.44,116.09,0); +INSERT INTO "area" VALUES('EPSG','4463','USA - Oregon - Siskiyou Pass','United States (USA) - Oregon - Siskiyou Pass area.',41.95,42.46,-122.71,-121.96,0); +INSERT INTO "area" VALUES('EPSG','4464','USA - onshore - AZ MI MT ND OR SC','United States (USA) - onshore - Arizona; Michigan; Montana; North Dakota; Oregon; South Carolina.',31.33,49.01,-124.6,-78.52,0); +INSERT INTO "area" VALUES('EPSG','4465','USA - Oregon - Canyon City-Burns','United States (USA) - Oregon - Canyon City-Burns area.',43.52,44.36,-119.22,-118.52,0); +INSERT INTO "area" VALUES('EPSG','4466','Australia - Western Australia - Port Hedland','Australia - Western Australia - Port Hedland area onshore.',-20.79,-20.1,118.25,118.97,0); +INSERT INTO "area" VALUES('EPSG','4467','Trinidad and Tobago - offshore west of 60°W','Trinidad and Tobago - offshore west of 60°W.',9.83,12.34,-62.09,-59.99,0); +INSERT INTO "area" VALUES('EPSG','4468','Trinidad and Tobago - offshore east of 60°W','Trinidad and Tobago - offshore east of 60°W.',9.95,12.19,-60.0,-57.28,0); +INSERT INTO "area" VALUES('EPSG','4469','Angola - onshore','Angola - onshore including Cabinda.',-18.02,-4.38,11.67,24.09,0); +INSERT INTO "area" VALUES('EPSG','4470','USA - Oregon - Ukiah-Fox','United States (USA) - Oregon - Ukiah-Fox area.',44.52,45.21,-119.35,-118.64,0); +INSERT INTO "area" VALUES('EPSG','4471','USA - Oregon - Coast Range North','United States (USA) - Oregon - Coast Range North area.',45.4,45.98,-123.81,-123.01,0); +INSERT INTO "area" VALUES('EPSG','4472','USA - Arizona - Pima county east','United States (USA) - Arizona - Pima county - east of the township line between ranges R7E and R8E, Gila and Salt River Meridian (east of approximately 111°34''W).',31.43,32.52,-111.57,-110.44,0); +INSERT INTO "area" VALUES('EPSG','4473','USA - Arizona - Pima county Mt. Lemmon','United States (USA) - Arizona - Pima county - Catalina Highway corridor between Mt. Lemmon and Willow Canyon.',32.33,32.49,-110.87,-110.61,0); +INSERT INTO "area" VALUES('EPSG','4474','USA - Oregon - Dayville-Prairie City','United States (USA) - Oregon - Dayville-Prairie City area.',44.24,44.94,-119.89,-118.61,0); +INSERT INTO "area" VALUES('EPSG','4475','USA - Oregon - Denio-Burns','United States (USA) - Oregon - Denio-Burns area.',41.88,43.54,-119.41,-117.67,0); +INSERT INTO "area" VALUES('EPSG','4476','USA - Oregon - Halfway','United States (USA) - Oregon - Halfway area.',44.61,45.28,-117.61,-116.63,0); +INSERT INTO "area" VALUES('EPSG','4477','USA - Oregon - Medford-Diamond Lake','United States (USA) - Oregon - Medford-Diamond Lake area.',42.53,42.53,-122.73,-121.71,0); +INSERT INTO "area" VALUES('EPSG','4478','USA - Oregon - Mitchell','United States (USA) - Oregon - Mitchell area.',44.38,44.78,-120.56,-119.82,0); +INSERT INTO "area" VALUES('EPSG','4479','USA - Oregon - North Central','United States (USA) - Oregon - North Central area.',44.89,45.95,-121.79,-119.03,0); +INSERT INTO "area" VALUES('EPSG','4480','USA - Oregon - Wallowa','United States (USA) - Oregon - Wallowa area.',45.27,46.05,-118.16,-116.42,0); +INSERT INTO "area" VALUES('EPSG','4481','USA - Oregon - Ochoco Summit','United States (USA) - Oregon - Ochoco Summit area.',44.21,44.61,-121.01,-120.31,0); +INSERT INTO "area" VALUES('EPSG','4482','USA - Oregon - Owyhee','United States (USA) - Oregon - Owyhee area.',41.88,43.54,-118.14,-116.85,0); +INSERT INTO "area" VALUES('EPSG','4483','USA - Oregon - Pilot Rock-Ukiah','United States (USA) - Oregon - Pilot Rock-Ukiah area.',44.99,46.04,-119.65,-118.11,0); +INSERT INTO "area" VALUES('EPSG','4484','USA - Oregon - Prairie City-Brogan','United States (USA) - Oregon - Prairie City-Brogan area.',44.16,45.02,-118.77,-117.48,0); +INSERT INTO "area" VALUES('EPSG','4485','USA - Nevada - Las Vegas','United States (USA) - Nevada - Las Vegas area below approximately 3000 feet.',35.89,36.42,-115.5,-114.72,0); +INSERT INTO "area" VALUES('EPSG','4486','USA - Oregon - Warner Highway','United States (USA) - Oregon - Warner Highway area.',41.95,42.43,-120.42,-119.3,0); +INSERT INTO "area" VALUES('EPSG','4487','USA - Nevada - Las Vegas high elevation','United States (USA) - Nevada - Las Vegas area above approximately 2850 feet.',35.89,36.42,-115.5,-114.72,0); +INSERT INTO "area" VALUES('EPSG','4488','USA - Oregon - Willamette Pass','United States (USA) - Oregon - Willamette Pass area.',42.99,44.18,-122.26,-121.48,0); +INSERT INTO "area" VALUES('EPSG','4489','Antarctica - Adelie Land coastal area west of 138°E','Antarctica - Adelie Land - coastal area between 136°E and 138°E.',-66.73,-65.61,136.0,138.01,0); +INSERT INTO "area" VALUES('EPSG','4490','Germany - Hamburg','Germany - Hamburg, including Neuwerk, Nigehörn, Scharhörn and surrounding maritime area.',53.36,53.99,8.33,10.41,0); +INSERT INTO "area" VALUES('EPSG','4491','Australia - Queensland - Weipa','Australia - Queensland - Weipa area between 141°30''E and 142°30''E.',-13.5,-11.49,141.5,142.51,0); +INSERT INTO "area" VALUES('EPSG','4492','Antarctica - Adelie Land coastal area east of 138°E','Antarctica - Adelie Land - coastal area between 138°E and 142°E.',-67.13,-66.1,138.0,142.0,0); +INSERT INTO "area" VALUES('EPSG','4493','Australia Christmas and Cocos - onshore','Australia - Australian Capital Territory, New South Wales, Northern Territory, Queensland, South Australia, Tasmania, Western Australia and Victoria - onshore. Christmas Island - onshore. Cocos and Keeling Islands - onshore.',-43.7,-9.86,96.76,153.69,0); +INSERT INTO "area" VALUES('EPSG','4494','USA - Kansas - Hays','United States (USA) - Kansas - counties of Ellis; Graham; Norton; Phillips; Rooks; Trego.',38.69,40.01,-100.19,-99.03,0); +INSERT INTO "area" VALUES('EPSG','4495','USA - Kansas - Goodland','United States (USA) - Kansas - counties of Cheyenne; Sherman; Wallace.',38.69,40.01,-102.06,-101.38,0); +INSERT INTO "area" VALUES('EPSG','4496','USA - Kansas - Colby','United States (USA) - Kansas - counties of Logan; Rawlins; Thomas.',38.69,40.01,-101.49,-100.71,0); +INSERT INTO "area" VALUES('EPSG','4497','USA - Kansas - Oberlin','United States (USA) - Kansas - counties of Decatur; Gove; Sheridan.',38.69,40.01,-100.82,-100.14,0); +INSERT INTO "area" VALUES('EPSG','4498','USA - Kansas - Great Bend','United States (USA) - Kansas - counties of Barton; Osborne; Russell; Smith.',38.26,40.01,-99.07,-98.47,0); +INSERT INTO "area" VALUES('EPSG','4499','USA - Kansas - Beloit','United States (USA) - Kansas - counties of Ellsworth; Jewell; Lincoln; Mitchell; Rice.',38.15,40.01,-98.51,-97.92,0); +INSERT INTO "area" VALUES('EPSG','4500','USA - Kansas - Salina','United States (USA) - Kansas - counties of Clay; Cloud; Dickinson; Marion; McPherson; Ottawa; Republic; Saline; Washington.',38.08,40.01,-97.94,-96.8,0); +INSERT INTO "area" VALUES('EPSG','4501','USA - Kansas - Manhattan','United States (USA) - Kansas - counties of Geary; Pottawatomie; Riley; Wabaunsee.',38.73,39.57,-96.97,-95.94,0); +INSERT INTO "area" VALUES('EPSG','4502','USA - Kansas - Emporia','United States (USA) - Kansas - counties of Chase; Lyon; Morris.',38.08,38.88,-96.94,-95.94,0); +INSERT INTO "area" VALUES('EPSG','4503','USA - Kansas - Atchison','United States (USA) - Kansas - counties of Atchison; Brown; Doniphan; Jackson; Marshall; Nemaha.',39.21,40.01,-96.81,-94.85,0); +INSERT INTO "area" VALUES('EPSG','4504','USA - Kansas - Kansas City','United States (USA) - Kansas - counties of Douglas; Jefferson; Johnson; Leavenworth; Shawnee; Wyandotte.',38.73,39.43,-96.04,-94.58,0); +INSERT INTO "area" VALUES('EPSG','4505','USA - Kansas - Ulysses','United States (USA) - Kansas - counties of Grant; Greeley; Hamilton; Kearny; Morton; Stanton; Stevens; Wichita.',36.99,38.71,-102.05,-101.06,0); +INSERT INTO "area" VALUES('EPSG','4506','USA - Kansas - Garden City','United States (USA) - Kansas - counties of Finney; Gray; Haskell; Lane; Meade; Scott; Seward.',36.99,38.71,-101.13,-100.08,0); +INSERT INTO "area" VALUES('EPSG','4507','USA - Kansas - Dodge City','United States (USA) - Kansas - counties of Clark; Ford; Hodgeman; Ness.',36.99,38.7,-100.25,-99.54,0); +INSERT INTO "area" VALUES('EPSG','4508','USA - Kansas - Larned','United States (USA) - Kansas - counties of Comanche; Edwards; Kiowa; Pawnee; Rush.',36.99,38.7,-99.59,-98.91,0); +INSERT INTO "area" VALUES('EPSG','4509','USA - Kansas - Pratt','United States (USA) - Kansas - counties of Barber; Pratt; Stafford.',36.99,38.27,-99.03,-98.34,0); +INSERT INTO "area" VALUES('EPSG','4510','USA - Kansas - Wichita','United States (USA) - Kansas - counties of Butler; Harvey; Kingman; Reno; Sedgwick.',37.38,38.18,-98.48,-96.52,0); +INSERT INTO "area" VALUES('EPSG','4511','USA - Kansas - Arkansas City','United States (USA) - Kansas - counties of Cowley; Harper; Sumner.',36.99,37.48,-98.35,-96.52,0); +INSERT INTO "area" VALUES('EPSG','4512','USA - Kansas - Coffeyville','United States (USA) - Kansas - counties of Chautauqua; Coffey; Elk; Greenwood; Montgomery; Osage; Wilson; Woodson.',36.99,38.88,-96.53,-95.5,0); +INSERT INTO "area" VALUES('EPSG','4513','USA - Kansas - Pittsburg','United States (USA) - Kansas - counties of Allen; Anderson; Bourbon; Cherokee; Crawford; Franklin; Labette; Linn; Miami; Neosho.',36.99,38.74,-95.53,-94.6,0); +INSERT INTO "area" VALUES('EPSG','4514','Pacific - Guam and NMI west of 144°E','Guam and Northern Mariana Islands; offshore west of 144°E.',10.95,23.9,141.19,144.01,0); +INSERT INTO "area" VALUES('EPSG','4515','USA - FBN','American Samoa - Tutuila, Aunu''u, Ofu, Olesega, Ta''u and Rose islands - onshore. Guam - onshore. Northern Mariana Islands - onshore. Puerto Rico - onshore. United States (USA) – CONUS - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming - onshore plus Gulf of Mexico offshore continental shelf (GoM OCS). US Virgin Islands - onshore.',-14.59,49.38,144.58,-64.51,0); +INSERT INTO "area" VALUES('EPSG','4516','USA - CONUS and GoM','United States (USA) – CONUS - Alabama; Arizona; Arkansas; California; Colorado; Connecticut; Delaware; Florida; Georgia; Idaho; Illinois; Indiana; Iowa; Kansas; Kentucky; Louisiana; Maine; Maryland; Massachusetts; Michigan; Minnesota; Mississippi; Missouri; Montana; Nebraska; Nevada; New Hampshire; New Jersey; New Mexico; New York; North Carolina; North Dakota; Ohio; Oklahoma; Oregon; Pennsylvania; Rhode Island; South Carolina; South Dakota; Tennessee; Texas; Utah; Vermont; Virginia; Washington; West Virginia; Wisconsin; Wyoming - onshore plus Gulf of Mexico offshore continental shelf (GoM OCS).',23.82,49.38,-124.79,-66.91,0); +INSERT INTO "area" VALUES('EPSG','4517','Canada - NAD27','Canada - onshore - Alberta; British Columbia; Manitoba; New Brunswick; Newfoundland and Labrador; Northwest Territories; Nova Scotia; Nunavut; Ontario; Prince Edward Island; Quebec; Saskatchewan; Yukon; offshore east coast.',40.04,83.17,-141.01,-47.74,0); +INSERT INTO "area" VALUES('EPSG','4518','Pacific - Guam and NMI east of 144°E','Guam and Northern Mariana Islands; onshore and offshore east of 144°E.',11.05,23.9,144.0,149.55,0); +INSERT INTO "area" VALUES('EPSG','4519','Algeria - 32°N to 34°39''N','Algeria - 35.6 grads to 38.5 grads North (32°N to 34°39''N).',31.99,34.66,-2.95,9.09,0); +INSERT INTO "area" VALUES('EPSG','4520','World centred on 90°W','World centred on the Americas.',-90.0,90.0,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','4521','Northern Mariana Islands - onshore','Northern Mariana Islands - onshore.',14.06,20.61,144.83,146.12,0); +INSERT INTO "area" VALUES('EPSG','4522','Finland - mainland south of 66°N','Finland - onshore mainland south of approximately 66°N.',59.75,66.73,20.95,31.59,0); +INSERT INTO "area" VALUES('EPSG','4523','World centred on 150°E','World centred on Asia-Pacific.',-90.0,90.0,-180.0,180.0,0); +INSERT INTO "area" VALUES('EPSG','4524','Saudi Arabia - west of 36°E','Saudi Arabia - onshore and offshore - west of 36°E.',24.92,29.38,34.44,36.01,0); +INSERT INTO "area" VALUES('EPSG','4525','Pacific - Guam and NMI - onshore','Guam - onshore. Northern Mariana Islands - onshore.',13.18,20.61,144.58,146.12,0); +INSERT INTO "area" VALUES('EPSG','4526','Saudi Arabia - 36°E to 42°E','Saudi Arabia - onshore and offshore - between 36°E and 42°E.',16.29,32.16,36.0,42.0,0); +INSERT INTO "area" VALUES('EPSG','4527','Saudi Arabia - 42°E to 48°E','Saudi Arabia - onshore and offshore - between of 42°E and 48°E.',15.61,31.15,41.99,48.0,0); +INSERT INTO "area" VALUES('EPSG','4528','Saudi Arabia - 48°E to 54°E','Saudi Arabia - onshore and offshore - between 48°E and 54°E.',17.43,28.94,48.0,54.01,0); diff --git a/data/sql/axis.sql b/data/sql/axis.sql new file mode 100644 index 00000000..76ce8dc0 --- /dev/null +++ b/data/sql/axis.sql @@ -0,0 +1,279 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +INSERT INTO "axis" VALUES('EPSG','1039','Easting','M','east','EPSG','1024',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1040','Northing','P','north','EPSG','1024',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1062','Easting','X','North along 130°W','EPSG','1025',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1063','Northing','Y','North along 140°E','EPSG','1025',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1065','Easting','E','South along 90°E','EPSG','1026',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1066','Northing','N','South along 180°E','EPSG','1026',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1056','Easting','E','North along 90°E','EPSG','1027',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1058','Northing','N','North along 0°E','EPSG','1027',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1073','Easting','E','east','EPSG','1028',1,'EPSG','9037'); +INSERT INTO "axis" VALUES('EPSG','1074','Northing','N','north','EPSG','1028',2,'EPSG','9037'); +INSERT INTO "axis" VALUES('EPSG','1078','Northing','N','north','EPSG','1029',1,'EPSG','9002'); +INSERT INTO "axis" VALUES('EPSG','1079','Easting','E','east','EPSG','1029',2,'EPSG','9002'); +INSERT INTO "axis" VALUES('EPSG','1082','Gravity-related height','H','up','EPSG','1030',1,'EPSG','9002'); +INSERT INTO "axis" VALUES('EPSG','1101','Northing','Y','north','EPSG','1031',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1102','Westing','X','west','EPSG','1031',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1110','Plant East','x','east','EPSG','1032',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1111','Plant North','y','north','EPSG','1032',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1112','Gravity-related height','z','up','EPSG','1032',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1428','Bin grid I','I','J-axis plus 90°','EPSG','1033',1,'EPSG','1024'); +INSERT INTO "axis" VALUES('EPSG','1429','Bin grid J','J','See associated operation','EPSG','1033',2,'EPSG','1024'); +INSERT INTO "axis" VALUES('EPSG','1431','Bin grid I','I','J-axis minus 90°','EPSG','1034',1,'EPSG','1024'); +INSERT INTO "axis" VALUES('EPSG','1432','Bin grid J','J','See associated operation','EPSG','1034',2,'EPSG','1024'); +INSERT INTO "axis" VALUES('EPSG','1466','Easting','X','South along 180°E','EPSG','1035',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1467','Northing','Y','South along 90°W','EPSG','1035',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1471','Easting','X','South along 57°E','EPSG','1036',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1472','Northing','Y','South along 147°E','EPSG','1036',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1476','Easting','X','South along 108°E','EPSG','1037',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1477','Northing','Y','South along 162°W','EPSG','1037',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1481','Easting','X','South along 165°W','EPSG','1038',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1482','Northing','Y','South along 75°W','EPSG','1038',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1486','Easting','E','east','EPSG','1039',1,'EPSG','9002'); +INSERT INTO "axis" VALUES('EPSG','1487','Northing','N','north','EPSG','1039',2,'EPSG','9002'); +INSERT INTO "axis" VALUES('EPSG','1024','Forward','x','Ahead','EPSG','1040',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1025','Starboard','y','Starboard','EPSG','1040',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1026','Platform Up','z','Upward','EPSG','1040',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1030','Forward','x','Ahead','EPSG','1041',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1031','Starboard','y','Starboard','EPSG','1041',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1032','Platform Down','z','Downward','EPSG','1041',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1036','Starboard','x','Starboard','EPSG','1042',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1037','Forward','y','Ahead','EPSG','1042',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1038','Platform Up','z','Upward','EPSG','1042',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1516','Depth','D','down','EPSG','1043',1,'EPSG','9003'); +INSERT INTO "axis" VALUES('EPSG','1525','Northing','N','North along 180°E','EPSG','1044',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1526','Easting','E','North along 90°W','EPSG','1044',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1044','Starboard','x','Starboard','EPSG','1045',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1045','Forward','y','Ahead','EPSG','1045',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1046','Platform Down','z','Downward','EPSG','1045',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','1','Easting','E','east','EPSG','4400',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','2','Northing','N','north','EPSG','4400',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','3','Easting','E','east','EPSG','4401',1,'EPSG','9062'); +INSERT INTO "axis" VALUES('EPSG','4','Northing','N','north','EPSG','4401',2,'EPSG','9062'); +INSERT INTO "axis" VALUES('EPSG','5','Easting','E','east','EPSG','4402',1,'EPSG','9042'); +INSERT INTO "axis" VALUES('EPSG','6','Northing','N','north','EPSG','4402',2,'EPSG','9042'); +INSERT INTO "axis" VALUES('EPSG','7','Easting','E','east','EPSG','4403',1,'EPSG','9005'); +INSERT INTO "axis" VALUES('EPSG','8','Northing','N','north','EPSG','4403',2,'EPSG','9005'); +INSERT INTO "axis" VALUES('EPSG','9','Easting','E','east','EPSG','4404',1,'EPSG','9094'); +INSERT INTO "axis" VALUES('EPSG','10','Northing','N','north','EPSG','4404',2,'EPSG','9094'); +INSERT INTO "axis" VALUES('EPSG','11','Easting','E','east','EPSG','4405',1,'EPSG','9041'); +INSERT INTO "axis" VALUES('EPSG','12','Northing','N','north','EPSG','4405',2,'EPSG','9041'); +INSERT INTO "axis" VALUES('EPSG','13','Easting','X','east','EPSG','4406',1,'EPSG','9036'); +INSERT INTO "axis" VALUES('EPSG','14','Northing','Y','north','EPSG','4406',2,'EPSG','9036'); +INSERT INTO "axis" VALUES('EPSG','15','Easting','E','east','EPSG','4407',1,'EPSG','9039'); +INSERT INTO "axis" VALUES('EPSG','16','Northing','N','north','EPSG','4407',2,'EPSG','9039'); +INSERT INTO "axis" VALUES('EPSG','17','Easting','E','east','EPSG','4408',1,'EPSG','9084'); +INSERT INTO "axis" VALUES('EPSG','18','Northing','N','north','EPSG','4408',2,'EPSG','9084'); +INSERT INTO "axis" VALUES('EPSG','19','Easting','E','east','EPSG','4409',1,'EPSG','9040'); +INSERT INTO "axis" VALUES('EPSG','20','Northing','N','north','EPSG','4409',2,'EPSG','9040'); +INSERT INTO "axis" VALUES('EPSG','181','Easting','E','east','EPSG','4410',1,'EPSG','9301'); +INSERT INTO "axis" VALUES('EPSG','182','Northing','N','north','EPSG','4410',2,'EPSG','9301'); +INSERT INTO "axis" VALUES('EPSG','236','Easting','E','South along 90°E.','EPSG','4460',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','237','Northing','N','South along 180°E','EPSG','4460',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','205','Topocentric East','U','east','EPSG','4461',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','206','Topocentric North','V','north','EPSG','4461',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','207','Topocentric height','W','up','EPSG','4461',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','193','Easting','X','South along 180°W','EPSG','4462',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','194','Northing','Y','South along 90°W','EPSG','4462',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','195','Easting','X','South along 100°E','EPSG','4463',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','196','Northing','Y','South along 170°W','EPSG','4463',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','197','Easting','X','South along 90°W','EPSG','4464',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','198','Northing','Y','South along 0°E','EPSG','4464',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','199','Easting','X','South along 50°E','EPSG','4465',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','200','Northing','Y','South along 140°E','EPSG','4465',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','201','Easting','X','South along 10°W','EPSG','4466',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','202','Northing','Y','South along 80°E','EPSG','4466',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','203','Easting','X','South along 60°W','EPSG','4467',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','204','Northing','Y','South along 30°E','EPSG','4467',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','191','Easting','X','South along 45°E','EPSG','4468',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','192','Northing','Y','South along 135°E','EPSG','4468',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','187','Easting','X','South along 90°E','EPSG','4469',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','188','Northing','Y','South along 180°E','EPSG','4469',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','185','Easting','X','North along 90°E','EPSG','4470',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','186','Northing','Y','North along 0°E','EPSG','4470',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','137','Easting','E','North along 75°W','EPSG','4471',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','138','Northing','N','North along 165°W','EPSG','4471',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','156','Easting','E','North along 60°W','EPSG','4472',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','139','Northing','N','North along 150°W','EPSG','4472',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','157','Easting','E','North along 45°W','EPSG','4473',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','140','Northing','N','North along 135°W','EPSG','4473',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','158','Easting','E','North along 15°W','EPSG','4474',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','141','Northing','N','North along 105°W','EPSG','4474',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','159','Easting','E','North along 0°E','EPSG','4475',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','142','Northing','N','North along 90°W','EPSG','4475',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','160','Easting','E','North along 15°E','EPSG','4476',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','143','Northing','N','North along 75°W','EPSG','4476',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','161','Easting','E','North along 45°E','EPSG','4477',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','144','Northing','N','North along 45°W','EPSG','4477',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','162','Easting','E','North along 60°E','EPSG','4478',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','145','Northing','N','North along 30°W','EPSG','4478',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','163','Easting','E','North along 75°E','EPSG','4479',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','146','Northing','N','North along 15°W','EPSG','4479',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','164','Easting','E','North along 105°E','EPSG','4480',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','147','Northing','N','North along 15°E','EPSG','4480',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','165','Easting','E','North along 120°E','EPSG','4481',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','148','Northing','N','North along 30°E','EPSG','4481',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','166','Easting','E','North along 135°E','EPSG','4482',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','149','Northing','N','North along 45°E','EPSG','4482',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','167','Easting','E','North along 165°E','EPSG','4483',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','150','Northing','N','North along 75°E','EPSG','4483',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','168','Easting','E','North along 180°E','EPSG','4484',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','151','Northing','N','North along 90°E','EPSG','4484',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','169','Easting','E','North along 165°W','EPSG','4485',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','152','Northing','N','North along 105°E','EPSG','4485',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','170','Easting','E','North along 135°W','EPSG','4486',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','153','Northing','N','North along 135°E','EPSG','4486',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','171','Easting','E','North along 120°W','EPSG','4487',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','154','Northing','N','North along 150°E','EPSG','4487',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','172','Easting','E','North along 105°W','EPSG','4488',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','155','Northing','N','North along 165°E','EPSG','4488',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','21','Easting','E','North along 160°E','EPSG','4489',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','22','Northing','N','North along 70°E','EPSG','4489',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','23','Easting','E','North along 90°E','EPSG','4490',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','24','Northing','N','North along 0°E','EPSG','4490',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','26','Westing','W','west','EPSG','4491',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','25','Northing','N','north','EPSG','4491',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','27','First local axis','X','North along 130°W','EPSG','4492',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','28','Second local axis','Y','North along 140°E','EPSG','4492',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','30','Northing','N','South along 180°E','EPSG','4493',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','29','Easting','E','South along 90°E','EPSG','4493',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','32','Northing','N','North along 0°E','EPSG','4494',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','31','Easting','E','North along 90°E','EPSG','4494',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','33','Easting','X','east','EPSG','4495',1,'EPSG','9002'); +INSERT INTO "axis" VALUES('EPSG','34','Northing','Y','north','EPSG','4495',2,'EPSG','9002'); +INSERT INTO "axis" VALUES('EPSG','35','Easting','E(X)','east','EPSG','4496',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','36','Northing','N(Y)','north','EPSG','4496',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','37','Easting','X','east','EPSG','4497',1,'EPSG','9003'); +INSERT INTO "axis" VALUES('EPSG','38','Northing','Y','north','EPSG','4497',2,'EPSG','9003'); +INSERT INTO "axis" VALUES('EPSG','39','Easting','Y','east','EPSG','4498',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','40','Northing','X','north','EPSG','4498',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','41','Easting','X','east','EPSG','4499',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','42','Northing','Y','north','EPSG','4499',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','44','Northing','N','north','EPSG','4500',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','43','Easting','E','east','EPSG','4500',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','45','Northing','N','north','EPSG','4501',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','46','Westing','E','west','EPSG','4501',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','189','Northing','N','north','EPSG','4502',1,'EPSG','9005'); +INSERT INTO "axis" VALUES('EPSG','190','Easting','E','east','EPSG','4502',2,'EPSG','9005'); +INSERT INTO "axis" VALUES('EPSG','48','Northing','X','north','EPSG','4530',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','47','Easting','Y','east','EPSG','4530',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','50','Northing','x','north','EPSG','4531',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','49','Easting','y','east','EPSG','4531',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','52','Northing','Y','north','EPSG','4532',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','51','Easting','X','east','EPSG','4532',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','180','Northing','X','north','EPSG','4533',1,'EPSG','9098'); +INSERT INTO "axis" VALUES('EPSG','179','Easting','Y','east','EPSG','4533',2,'EPSG','9098'); +INSERT INTO "axis" VALUES('EPSG','183','Northing','none','north','EPSG','4534',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','184','Easting','none','east','EPSG','4534',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','53','Geodetic latitude','Lat','north','EPSG','6401',1,'EPSG','9108'); +INSERT INTO "axis" VALUES('EPSG','54','Geodetic longitude','Long','east','EPSG','6401',2,'EPSG','9108'); +INSERT INTO "axis" VALUES('EPSG','55','Ellipsoidal height','h','up','EPSG','6401',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','56','Geodetic latitude','Lat','north','EPSG','6402',1,'EPSG','9108'); +INSERT INTO "axis" VALUES('EPSG','57','Geodetic longitude','Long','east','EPSG','6402',2,'EPSG','9108'); +INSERT INTO "axis" VALUES('EPSG','58','Geodetic latitude','Lat','north','EPSG','6403',1,'EPSG','9105'); +INSERT INTO "axis" VALUES('EPSG','59','Geodetic longitude','Lon','east','EPSG','6403',2,'EPSG','9105'); +INSERT INTO "axis" VALUES('EPSG','60','Spherical latitude','Lat','north','EPSG','6404',1,'EPSG','9122'); +INSERT INTO "axis" VALUES('EPSG','61','Spherical longitude','Long','east','EPSG','6404',2,'EPSG','9122'); +INSERT INTO "axis" VALUES('EPSG','62','Geocentric radius','R','up','EPSG','6404',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','63','Geodetic latitude','Lat','north','EPSG','6405',1,'EPSG','9102'); +INSERT INTO "axis" VALUES('EPSG','64','Geodetic longitude','Long','east','EPSG','6405',2,'EPSG','9102'); +INSERT INTO "axis" VALUES('EPSG','65','Geodetic latitude','Lat','north','EPSG','6406',1,'EPSG','9116'); +INSERT INTO "axis" VALUES('EPSG','66','Geodetic longitude','Long','east','EPSG','6406',2,'EPSG','9116'); +INSERT INTO "axis" VALUES('EPSG','67','Geodetic latitude','Lat','north','EPSG','6407',1,'EPSG','9117'); +INSERT INTO "axis" VALUES('EPSG','68','Geodetic longitude','Long','east','EPSG','6407',2,'EPSG','9117'); +INSERT INTO "axis" VALUES('EPSG','69','Geodetic latitude','Lat','north','EPSG','6408',1,'EPSG','9115'); +INSERT INTO "axis" VALUES('EPSG','70','Geodetic longitude','Long','east','EPSG','6408',2,'EPSG','9115'); +INSERT INTO "axis" VALUES('EPSG','71','Geodetic latitude','Lat','north','EPSG','6409',1,'EPSG','9118'); +INSERT INTO "axis" VALUES('EPSG','72','Geodetic longitude','Long','east','EPSG','6409',2,'EPSG','9118'); +INSERT INTO "axis" VALUES('EPSG','73','Geodetic latitude','Lat','north','EPSG','6410',1,'EPSG','9119'); +INSERT INTO "axis" VALUES('EPSG','74','Geodetic longitude','Long','east','EPSG','6410',2,'EPSG','9119'); +INSERT INTO "axis" VALUES('EPSG','75','Geodetic latitude','Lat','north','EPSG','6411',1,'EPSG','9107'); +INSERT INTO "axis" VALUES('EPSG','76','Geodetic longitude','Long','east','EPSG','6411',2,'EPSG','9107'); +INSERT INTO "axis" VALUES('EPSG','77','Geodetic latitude','Lat','north','EPSG','6412',1,'EPSG','9120'); +INSERT INTO "axis" VALUES('EPSG','78','Geodetic longitude','Long','east','EPSG','6412',2,'EPSG','9120'); +INSERT INTO "axis" VALUES('EPSG','79','Geodetic latitude','Lat','north','EPSG','6413',1,'EPSG','9102'); +INSERT INTO "axis" VALUES('EPSG','80','Geodetic longitude','Long','east','EPSG','6413',2,'EPSG','9102'); +INSERT INTO "axis" VALUES('EPSG','81','Ellipsoidal height','h','up','EPSG','6413',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','82','Geodetic latitude','Lat','north','EPSG','6414',1,'EPSG','9116'); +INSERT INTO "axis" VALUES('EPSG','83','Geodetic longitude','Long','east','EPSG','6414',2,'EPSG','9116'); +INSERT INTO "axis" VALUES('EPSG','84','Ellipsoidal height','h','up','EPSG','6414',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','85','Geodetic latitude','Lat','north','EPSG','6415',1,'EPSG','9117'); +INSERT INTO "axis" VALUES('EPSG','86','Geodetic longitude','Long','east','EPSG','6415',2,'EPSG','9117'); +INSERT INTO "axis" VALUES('EPSG','87','Ellipsoidal height','h','up','EPSG','6415',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','88','Geodetic latitude','Lat','north','EPSG','6416',1,'EPSG','9115'); +INSERT INTO "axis" VALUES('EPSG','89','Geodetic longitude','Long','east','EPSG','6416',2,'EPSG','9115'); +INSERT INTO "axis" VALUES('EPSG','90','Ellipsoidal height','h','up','EPSG','6416',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','91','Geodetic latitude','Lat','north','EPSG','6417',1,'EPSG','9118'); +INSERT INTO "axis" VALUES('EPSG','92','Geodetic longitude','Long','east','EPSG','6417',2,'EPSG','9118'); +INSERT INTO "axis" VALUES('EPSG','93','Ellipsoidal height','h','up','EPSG','6417',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','94','Geodetic latitude','Lat','north','EPSG','6418',1,'EPSG','9119'); +INSERT INTO "axis" VALUES('EPSG','95','Geodetic longitude','Long','east','EPSG','6418',2,'EPSG','9119'); +INSERT INTO "axis" VALUES('EPSG','96','Ellipsoidal height','h','up','EPSG','6418',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','97','Geodetic latitude','Lat','north','EPSG','6419',1,'EPSG','9107'); +INSERT INTO "axis" VALUES('EPSG','98','Geodetic longitude','Long','east','EPSG','6419',2,'EPSG','9107'); +INSERT INTO "axis" VALUES('EPSG','99','Ellipsoidal height','h','up','EPSG','6419',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','100','Geodetic latitude','Lat','north','EPSG','6420',1,'EPSG','9120'); +INSERT INTO "axis" VALUES('EPSG','101','Geodetic longitude','Long','east','EPSG','6420',2,'EPSG','9120'); +INSERT INTO "axis" VALUES('EPSG','102','Ellipsoidal height','h','up','EPSG','6420',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','103','Geodetic latitude','Lat','north','EPSG','6421',1,'EPSG','9105'); +INSERT INTO "axis" VALUES('EPSG','104','Geodetic longitude','Lon','east','EPSG','6421',2,'EPSG','9105'); +INSERT INTO "axis" VALUES('EPSG','105','Ellipsoidal height','h','up','EPSG','6421',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','106','Geodetic latitude','Lat','north','EPSG','6422',1,'EPSG','9122'); +INSERT INTO "axis" VALUES('EPSG','107','Geodetic longitude','Lon','east','EPSG','6422',2,'EPSG','9122'); +INSERT INTO "axis" VALUES('EPSG','108','Geodetic latitude','Lat','north','EPSG','6423',1,'EPSG','9122'); +INSERT INTO "axis" VALUES('EPSG','109','Geodetic longitude','Lon','east','EPSG','6423',2,'EPSG','9122'); +INSERT INTO "axis" VALUES('EPSG','110','Ellipsoidal height','h','up','EPSG','6423',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','220','Geodetic longitude','Lon','east','EPSG','6424',1,'EPSG','9122'); +INSERT INTO "axis" VALUES('EPSG','221','Geodetic latitude','Lat','north','EPSG','6424',2,'EPSG','9122'); +INSERT INTO "axis" VALUES('EPSG','215','Geodetic longitude','Lon','east','EPSG','6425',1,'EPSG','9105'); +INSERT INTO "axis" VALUES('EPSG','216','Geodetic latitude','Lat','north','EPSG','6425',2,'EPSG','9105'); +INSERT INTO "axis" VALUES('EPSG','222','Geodetic longitude','Lon','east','EPSG','6426',1,'EPSG','9122'); +INSERT INTO "axis" VALUES('EPSG','223','Geodetic latitude','Lat','north','EPSG','6426',2,'EPSG','9122'); +INSERT INTO "axis" VALUES('EPSG','224','Ellipsoidal height','h','up','EPSG','6426',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','217','Geodetic longitude','Lon','east','EPSG','6427',1,'EPSG','9105'); +INSERT INTO "axis" VALUES('EPSG','218','Geodetic latitude','Lat','north','EPSG','6427',2,'EPSG','9105'); +INSERT INTO "axis" VALUES('EPSG','219','Ellipsoidal height','h','up','EPSG','6427',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','225','Geodetic latitude','Lat','north','EPSG','6428',1,'EPSG','9101'); +INSERT INTO "axis" VALUES('EPSG','226','Geodetic longitude','Lon','east','EPSG','6428',2,'EPSG','9101'); +INSERT INTO "axis" VALUES('EPSG','227','Geodetic longitude','Lon','east','EPSG','6429',1,'EPSG','9101'); +INSERT INTO "axis" VALUES('EPSG','228','Geodetic latitude','Lat','north','EPSG','6429',2,'EPSG','9101'); +INSERT INTO "axis" VALUES('EPSG','230','Geodetic latitude','Lat','north','EPSG','6430',1,'EPSG','9101'); +INSERT INTO "axis" VALUES('EPSG','231','Geodetic longitude','Lon','east','EPSG','6430',2,'EPSG','9101'); +INSERT INTO "axis" VALUES('EPSG','232','Ellipsoidal height','h','up','EPSG','6430',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','233','Geodetic longitude','Lon','east','EPSG','6431',1,'EPSG','9101'); +INSERT INTO "axis" VALUES('EPSG','234','Geodetic latitude','Lat','north','EPSG','6431',2,'EPSG','9101'); +INSERT INTO "axis" VALUES('EPSG','235','Ellipsoidal height','h','up','EPSG','6431',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','214','Depth','D','down','EPSG','6495',1,'EPSG','9002'); +INSERT INTO "axis" VALUES('EPSG','111','Gravity-related height','H','up','EPSG','6496',1,'EPSG','9095'); +INSERT INTO "axis" VALUES('EPSG','112','Gravity-related height','H','up','EPSG','6497',1,'EPSG','9003'); +INSERT INTO "axis" VALUES('EPSG','113','Depth','D','down','EPSG','6498',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','114','Gravity-related height','H','up','EPSG','6499',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','115','Geocentric X','X','Geocentre > equator/0°E','EPSG','6500',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','116','Geocentric Y','Y','Geocentre > equator/90°E','EPSG','6500',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','117','Geocentric Z','Z','Geocentre > north pole','EPSG','6500',3,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','119','Southing','X','south','EPSG','6501',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','118','Westing','Y','west','EPSG','6501',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','120','Westing','Y','west','EPSG','6502',1,'EPSG','9031'); +INSERT INTO "axis" VALUES('EPSG','121','Southing','X','south','EPSG','6502',2,'EPSG','9031'); +INSERT INTO "axis" VALUES('EPSG','122','Westing','Y','west','EPSG','6503',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','123','Southing','X','south','EPSG','6503',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','125','Plant North','n','northwest','EPSG','6504',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','124','Plant East','e','northeast','EPSG','6504',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','126','First local axis','n','northwest','EPSG','6505',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','127','Second local axis','e','northeast','EPSG','6505',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','128','First local axis','I','east-south-east','EPSG','6506',1,'EPSG','9205'); +INSERT INTO "axis" VALUES('EPSG','129','Second local axis','J','north-north-east','EPSG','6506',2,'EPSG','9204'); +INSERT INTO "axis" VALUES('EPSG','130','First local axis','X','north','EPSG','6507',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','131','Second local axis','Y','west','EPSG','6507',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','133','Bin grid J','J','north north east','EPSG','6508',1,'EPSG','9209'); +INSERT INTO "axis" VALUES('EPSG','132','Bin grid I','I','east south east','EPSG','6508',2,'EPSG','9208'); +INSERT INTO "axis" VALUES('EPSG','135','Southing','P','south','EPSG','6509',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','134','Westing','M','west','EPSG','6509',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','173','Plant East','x','northeast','EPSG','6510',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','174','Plant North','y','northwest','EPSG','6510',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','177','Inline','I','Along receiver lines','EPSG','6511',1,'EPSG','9208'); +INSERT INTO "axis" VALUES('EPSG','178','Crossline','J','Across receiver lines','EPSG','6511',2,'EPSG','9209'); +INSERT INTO "axis" VALUES('EPSG','211','Plant East','x','east','EPSG','6512',1,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','212','Plant North','y','north','EPSG','6512',2,'EPSG','9001'); +INSERT INTO "axis" VALUES('EPSG','213','Local height','z','up','EPSG','6512',3,'EPSG','9001'); diff --git a/data/sql/begin.sql b/data/sql/begin.sql new file mode 100644 index 00000000..1775571f --- /dev/null +++ b/data/sql/begin.sql @@ -0,0 +1 @@ +BEGIN; diff --git a/data/sql/commit.sql b/data/sql/commit.sql new file mode 100644 index 00000000..346c5b76 --- /dev/null +++ b/data/sql/commit.sql @@ -0,0 +1,28 @@ +COMMIT; + +-- Do an explicit foreign_key_check as foreign key checking is a no-op within +-- a transaction. Unfortunately we can't ask for this to be an error, so this +-- is just for verbose output. In Makefile, we check this separately +PRAGMA foreign_key_check; + +-- Final consistency checks +CREATE TABLE dummy(foo); +CREATE TRIGGER final_checks +BEFORE INSERT ON dummy +FOR EACH ROW BEGIN + + -- check that view definitions have no error + SELECT RAISE(ABORT, 'corrupt definition of coordinate_operation_view') + WHERE (SELECT 1 FROM coordinate_operation_view LIMIT 1) = 0; + SELECT RAISE(ABORT, 'corrupt definition of crs_view') + WHERE (SELECT 1 FROM crs_view LIMIT 1) = 0; + SELECT RAISE(ABORT, 'corrupt definition of object_view') + WHERE (SELECT 1 FROM object_view LIMIT 1) = 0; + SELECT RAISE(ABORT, 'corrupt definition of authority_list') + WHERE (SELECT 1 FROM authority_list LIMIT 1) = 0; +END; +INSERT INTO dummy DEFAULT VALUES; +DROP TRIGGER final_checks; +DROP TABLE dummy; + +VACUUM;
\ No newline at end of file diff --git a/data/sql/compound_crs.sql b/data/sql/compound_crs.sql new file mode 100644 index 00000000..5afc6f22 --- /dev/null +++ b/data/sql/compound_crs.sql @@ -0,0 +1,278 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +INSERT INTO "compound_crs" VALUES('EPSG','3901','KKJ / Finland Uniform Coordinate System + N60 height',NULL,NULL,'EPSG','2393','EPSG','5717','EPSG','3333',0); +INSERT INTO "compound_crs" VALUES('EPSG','3902','ETRS89 / TM35FIN(N,E) + N60 height',NULL,NULL,'EPSG','5048','EPSG','5717','EPSG','3333',0); +INSERT INTO "compound_crs" VALUES('EPSG','3903','ETRS89 / TM35FIN(N,E) + N2000 height',NULL,NULL,'EPSG','5048','EPSG','3900','EPSG','3333',0); +INSERT INTO "compound_crs" VALUES('EPSG','4097','ETRS89 / DKTM1 + DVR90 height',NULL,NULL,'EPSG','4093','EPSG','5799','EPSG','3631',0); +INSERT INTO "compound_crs" VALUES('EPSG','4098','ETRS89 / DKTM2 + DVR90 height',NULL,NULL,'EPSG','4094','EPSG','5799','EPSG','3632',0); +INSERT INTO "compound_crs" VALUES('EPSG','4099','ETRS89 / DKTM3 + DVR90 height',NULL,NULL,'EPSG','4095','EPSG','5799','EPSG','2532',0); +INSERT INTO "compound_crs" VALUES('EPSG','4100','ETRS89 / DKTM4 + DVR90 height',NULL,NULL,'EPSG','4096','EPSG','5799','EPSG','2533',0); +INSERT INTO "compound_crs" VALUES('EPSG','5318','ETRS89 / Faroe TM + FVR09 height',NULL,NULL,'EPSG','5316','EPSG','5317','EPSG','3248',0); +INSERT INTO "compound_crs" VALUES('EPSG','5498','NAD83 + NAVD88 height',NULL,NULL,'EPSG','4269','EPSG','5703','EPSG','3664',0); +INSERT INTO "compound_crs" VALUES('EPSG','5499','NAD83(HARN) + NAVD88 height',NULL,NULL,'EPSG','4152','EPSG','5703','EPSG','1323',0); +INSERT INTO "compound_crs" VALUES('EPSG','5500','NAD83(NSRS2007) + NAVD88 height',NULL,NULL,'EPSG','4759','EPSG','5703','EPSG','1323',0); +INSERT INTO "compound_crs" VALUES('EPSG','5554','ETRS89 / UTM zone 31N + DHHN92 height',NULL,NULL,'EPSG','25831','EPSG','5783','EPSG','3901',0); +INSERT INTO "compound_crs" VALUES('EPSG','5555','ETRS89 / UTM zone 32N + DHHN92 height',NULL,NULL,'EPSG','25832','EPSG','5783','EPSG','3904',0); +INSERT INTO "compound_crs" VALUES('EPSG','5556','ETRS89 / UTM zone 33N + DHHN92 height',NULL,NULL,'EPSG','25833','EPSG','5783','EPSG','3879',0); +INSERT INTO "compound_crs" VALUES('EPSG','5598','FEH2010 / Fehmarnbelt TM + FCSVR10 height',NULL,NULL,'EPSG','5596','EPSG','5597','EPSG','3890',0); +INSERT INTO "compound_crs" VALUES('EPSG','5628','SWEREF99 + RH2000 height',NULL,NULL,'EPSG','4619','EPSG','5613','EPSG','3313',0); +INSERT INTO "compound_crs" VALUES('EPSG','5698','RGF93 / Lambert-93 + NGF-IGN69 height',NULL,NULL,'EPSG','2154','EPSG','5720','EPSG','1326',0); +INSERT INTO "compound_crs" VALUES('EPSG','5699','RGF93 / Lambert-93 + NGF-IGN78 height',NULL,NULL,'EPSG','2154','EPSG','5721','EPSG','1327',0); +INSERT INTO "compound_crs" VALUES('EPSG','5707','NTF (Paris) / Lambert zone I + NGF-IGN69 height',NULL,NULL,'EPSG','27571','EPSG','5720','EPSG','1731',0); +INSERT INTO "compound_crs" VALUES('EPSG','5708','NTF (Paris) / Lambert zone IV + NGF-IGN78 height',NULL,NULL,'EPSG','27574','EPSG','5721','EPSG','1327',0); +INSERT INTO "compound_crs" VALUES('EPSG','5832','DB_REF / 3-degree Gauss-Kruger zone 2 (E-N) + DHHN92 height',NULL,NULL,'EPSG','5682','EPSG','5783','EPSG','1624',0); +INSERT INTO "compound_crs" VALUES('EPSG','5833','DB_REF / 3-degree Gauss-Kruger zone 3 (E-N) + DHHN92 height',NULL,NULL,'EPSG','5683','EPSG','5783','EPSG','3993',0); +INSERT INTO "compound_crs" VALUES('EPSG','5834','DB_REF / 3-degree Gauss-Kruger zone 4 (E-N) + DHHN92 height',NULL,NULL,'EPSG','5684','EPSG','5783','EPSG','3996',0); +INSERT INTO "compound_crs" VALUES('EPSG','5835','DB_REF / 3-degree Gauss-Kruger zone 5 (E-N) + DHHN92 height',NULL,NULL,'EPSG','5685','EPSG','5783','EPSG','3998',0); +INSERT INTO "compound_crs" VALUES('EPSG','5845','SWEREF99 TM + RH2000 height',NULL,NULL,'EPSG','3006','EPSG','5613','EPSG','3313',0); +INSERT INTO "compound_crs" VALUES('EPSG','5846','SWEREF99 12 00 + RH2000 height',NULL,NULL,'EPSG','3007','EPSG','5613','EPSG','2833',0); +INSERT INTO "compound_crs" VALUES('EPSG','5847','SWEREF99 13 30 + RH2000 height',NULL,NULL,'EPSG','3008','EPSG','5613','EPSG','2834',0); +INSERT INTO "compound_crs" VALUES('EPSG','5848','SWEREF99 15 00 + RH2000 height',NULL,NULL,'EPSG','3009','EPSG','5613','EPSG','2835',0); +INSERT INTO "compound_crs" VALUES('EPSG','5849','SWEREF99 16 30 + RH2000 height',NULL,NULL,'EPSG','3010','EPSG','5613','EPSG','2836',0); +INSERT INTO "compound_crs" VALUES('EPSG','5850','SWEREF99 18 00 + RH2000 height',NULL,NULL,'EPSG','3011','EPSG','5613','EPSG','2837',0); +INSERT INTO "compound_crs" VALUES('EPSG','5851','SWEREF99 14 15 + RH2000 height',NULL,NULL,'EPSG','3012','EPSG','5613','EPSG','2838',0); +INSERT INTO "compound_crs" VALUES('EPSG','5852','SWEREF99 15 45 + RH2000 height',NULL,NULL,'EPSG','3013','EPSG','5613','EPSG','2839',0); +INSERT INTO "compound_crs" VALUES('EPSG','5853','SWEREF99 17 15 + RH2000 height',NULL,NULL,'EPSG','3014','EPSG','5613','EPSG','2840',0); +INSERT INTO "compound_crs" VALUES('EPSG','5854','SWEREF99 18 45 + RH2000 height',NULL,NULL,'EPSG','3015','EPSG','5613','EPSG','2841',0); +INSERT INTO "compound_crs" VALUES('EPSG','5855','SWEREF99 20 15 + RH2000 height',NULL,NULL,'EPSG','3016','EPSG','5613','EPSG','2842',0); +INSERT INTO "compound_crs" VALUES('EPSG','5856','SWEREF99 21 45 + RH2000 height',NULL,NULL,'EPSG','3017','EPSG','5613','EPSG','2843',0); +INSERT INTO "compound_crs" VALUES('EPSG','5857','SWEREF99 23 15 + RH2000 height',NULL,NULL,'EPSG','3018','EPSG','5613','EPSG','2844',0); +INSERT INTO "compound_crs" VALUES('EPSG','5942','ETRS89 + NN2000 height',NULL,NULL,'EPSG','4258','EPSG','5941','EPSG','1352',0); +INSERT INTO "compound_crs" VALUES('EPSG','5945','ETRS89 / NTM zone 5 + NN2000 height',NULL,NULL,'EPSG','5105','EPSG','5941','EPSG','3636',0); +INSERT INTO "compound_crs" VALUES('EPSG','5946','ETRS89 / NTM zone 6 + NN2000 height',NULL,NULL,'EPSG','5106','EPSG','5941','EPSG','3639',0); +INSERT INTO "compound_crs" VALUES('EPSG','5947','ETRS89 / NTM zone 7 + NN2000 height',NULL,NULL,'EPSG','5107','EPSG','5941','EPSG','3647',0); +INSERT INTO "compound_crs" VALUES('EPSG','5948','ETRS89 / NTM zone 8 + NN2000 height',NULL,NULL,'EPSG','5108','EPSG','5941','EPSG','3648',0); +INSERT INTO "compound_crs" VALUES('EPSG','5949','ETRS89 / NTM zone 9 + NN2000 height',NULL,NULL,'EPSG','5109','EPSG','5941','EPSG','3649',0); +INSERT INTO "compound_crs" VALUES('EPSG','5950','ETRS89 / NTM zone 10 + NN2000 height',NULL,NULL,'EPSG','5110','EPSG','5941','EPSG','3650',0); +INSERT INTO "compound_crs" VALUES('EPSG','5951','ETRS89 / NTM zone 11 + NN2000 height',NULL,NULL,'EPSG','5111','EPSG','5941','EPSG','3651',0); +INSERT INTO "compound_crs" VALUES('EPSG','5952','ETRS89 / NTM zone 12 + NN2000 height',NULL,NULL,'EPSG','5112','EPSG','5941','EPSG','3653',0); +INSERT INTO "compound_crs" VALUES('EPSG','5953','ETRS89 / NTM zone 13 + NN2000 height',NULL,NULL,'EPSG','5113','EPSG','5941','EPSG','3654',0); +INSERT INTO "compound_crs" VALUES('EPSG','5954','ETRS89 / NTM zone 14 + NN2000 height',NULL,NULL,'EPSG','5114','EPSG','5941','EPSG','3655',0); +INSERT INTO "compound_crs" VALUES('EPSG','5955','ETRS89 / NTM zone 15 + NN2000 height',NULL,NULL,'EPSG','5115','EPSG','5941','EPSG','3656',0); +INSERT INTO "compound_crs" VALUES('EPSG','5956','ETRS89 / NTM zone 16 + NN2000 height',NULL,NULL,'EPSG','5116','EPSG','5941','EPSG','3657',0); +INSERT INTO "compound_crs" VALUES('EPSG','5957','ETRS89 / NTM zone 17 + NN2000 height',NULL,NULL,'EPSG','5117','EPSG','5941','EPSG','3658',0); +INSERT INTO "compound_crs" VALUES('EPSG','5958','ETRS89 / NTM zone 18 + NN2000 height',NULL,NULL,'EPSG','5118','EPSG','5941','EPSG','3660',0); +INSERT INTO "compound_crs" VALUES('EPSG','5959','ETRS89 / NTM zone 19 + NN2000 height',NULL,NULL,'EPSG','5119','EPSG','5941','EPSG','3661',0); +INSERT INTO "compound_crs" VALUES('EPSG','5960','ETRS89 / NTM zone 20 + NN2000 height',NULL,NULL,'EPSG','5120','EPSG','5941','EPSG','3662',0); +INSERT INTO "compound_crs" VALUES('EPSG','5961','ETRS89 / NTM zone 21 + NN2000 height',NULL,NULL,'EPSG','5121','EPSG','5941','EPSG','3663',0); +INSERT INTO "compound_crs" VALUES('EPSG','5962','ETRS89 / NTM zone 22 + NN2000 height',NULL,NULL,'EPSG','5122','EPSG','5941','EPSG','3665',0); +INSERT INTO "compound_crs" VALUES('EPSG','5963','ETRS89 / NTM zone 23 + NN2000 height',NULL,NULL,'EPSG','5123','EPSG','5941','EPSG','3667',0); +INSERT INTO "compound_crs" VALUES('EPSG','5964','ETRS89 / NTM zone 24 + NN2000 height',NULL,NULL,'EPSG','5124','EPSG','5941','EPSG','3668',0); +INSERT INTO "compound_crs" VALUES('EPSG','5965','ETRS89 / NTM zone 25 + NN2000 height',NULL,NULL,'EPSG','5125','EPSG','5941','EPSG','3669',0); +INSERT INTO "compound_crs" VALUES('EPSG','5966','ETRS89 / NTM zone 26 + NN2000 height',NULL,NULL,'EPSG','5126','EPSG','5941','EPSG','3671',0); +INSERT INTO "compound_crs" VALUES('EPSG','5967','ETRS89 / NTM zone 27 + NN2000 height',NULL,NULL,'EPSG','5127','EPSG','5941','EPSG','3672',0); +INSERT INTO "compound_crs" VALUES('EPSG','5968','ETRS89 / NTM zone 28 + NN2000 height',NULL,NULL,'EPSG','5128','EPSG','5941','EPSG','3673',0); +INSERT INTO "compound_crs" VALUES('EPSG','5969','ETRS89 / NTM zone 29 + NN2000 height',NULL,NULL,'EPSG','5129','EPSG','5941','EPSG','3674',0); +INSERT INTO "compound_crs" VALUES('EPSG','5970','ETRS89 / NTM zone 30 + NN2000 height',NULL,NULL,'EPSG','5130','EPSG','5941','EPSG','3676',0); +INSERT INTO "compound_crs" VALUES('EPSG','5971','ETRS89 / UTM zone 31 + NN2000 height',NULL,NULL,'EPSG','25831','EPSG','5941','EPSG','3636',0); +INSERT INTO "compound_crs" VALUES('EPSG','5972','ETRS89 / UTM zone 32 + NN2000 height',NULL,NULL,'EPSG','25832','EPSG','5941','EPSG','4066',0); +INSERT INTO "compound_crs" VALUES('EPSG','5973','ETRS89 / UTM zone 33 + NN2000 height',NULL,NULL,'EPSG','25833','EPSG','5941','EPSG','4067',0); +INSERT INTO "compound_crs" VALUES('EPSG','5974','ETRS89 / UTM zone 34 + NN2000 height',NULL,NULL,'EPSG','25834','EPSG','5941','EPSG','4068',0); +INSERT INTO "compound_crs" VALUES('EPSG','5975','ETRS89 / UTM zone 35 + NN2000 height',NULL,NULL,'EPSG','25835','EPSG','5941','EPSG','4069',0); +INSERT INTO "compound_crs" VALUES('EPSG','5976','ETRS89 / UTM zone 36 + NN2000 height',NULL,NULL,'EPSG','25836','EPSG','5941','EPSG','3676',0); +INSERT INTO "compound_crs" VALUES('EPSG','6144','ETRS89 + NN54 height',NULL,NULL,'EPSG','4258','EPSG','5776','EPSG','1352',0); +INSERT INTO "compound_crs" VALUES('EPSG','6145','ETRS89 / NTM zone 5 + NN54 height',NULL,NULL,'EPSG','5105','EPSG','5776','EPSG','3636',0); +INSERT INTO "compound_crs" VALUES('EPSG','6146','ETRS89 / NTM zone 6 + NN54 height',NULL,NULL,'EPSG','5106','EPSG','5776','EPSG','3639',0); +INSERT INTO "compound_crs" VALUES('EPSG','6147','ETRS89 / NTM zone 7 + NN54 height',NULL,NULL,'EPSG','5107','EPSG','5776','EPSG','3647',0); +INSERT INTO "compound_crs" VALUES('EPSG','6148','ETRS89 / NTM zone 8 + NN54 height',NULL,NULL,'EPSG','5108','EPSG','5776','EPSG','3648',0); +INSERT INTO "compound_crs" VALUES('EPSG','6149','ETRS89 / NTM zone 9 + NN54 height',NULL,NULL,'EPSG','5109','EPSG','5776','EPSG','3649',0); +INSERT INTO "compound_crs" VALUES('EPSG','6150','ETRS89 / NTM zone 10 + NN54 height',NULL,NULL,'EPSG','5110','EPSG','5776','EPSG','3650',0); +INSERT INTO "compound_crs" VALUES('EPSG','6151','ETRS89 / NTM zone 11 + NN54 height',NULL,NULL,'EPSG','5111','EPSG','5776','EPSG','3651',0); +INSERT INTO "compound_crs" VALUES('EPSG','6152','ETRS89 / NTM zone 12 + NN54 height',NULL,NULL,'EPSG','5112','EPSG','5776','EPSG','3653',0); +INSERT INTO "compound_crs" VALUES('EPSG','6153','ETRS89 / NTM zone 13 + NN54 height',NULL,NULL,'EPSG','5113','EPSG','5776','EPSG','3654',0); +INSERT INTO "compound_crs" VALUES('EPSG','6154','ETRS89 / NTM zone 14 + NN54 height',NULL,NULL,'EPSG','5114','EPSG','5776','EPSG','3655',0); +INSERT INTO "compound_crs" VALUES('EPSG','6155','ETRS89 / NTM zone 15 + NN54 height',NULL,NULL,'EPSG','5115','EPSG','5776','EPSG','3656',0); +INSERT INTO "compound_crs" VALUES('EPSG','6156','ETRS89 / NTM zone 16 + NN54 height',NULL,NULL,'EPSG','5116','EPSG','5776','EPSG','3657',0); +INSERT INTO "compound_crs" VALUES('EPSG','6157','ETRS89 / NTM zone 17 + NN54 height',NULL,NULL,'EPSG','5117','EPSG','5776','EPSG','3658',0); +INSERT INTO "compound_crs" VALUES('EPSG','6158','ETRS89 / NTM zone 18 + NN54 height',NULL,NULL,'EPSG','5118','EPSG','5776','EPSG','3660',0); +INSERT INTO "compound_crs" VALUES('EPSG','6159','ETRS89 / NTM zone 19 + NN54 height',NULL,NULL,'EPSG','5119','EPSG','5776','EPSG','3661',0); +INSERT INTO "compound_crs" VALUES('EPSG','6160','ETRS89 / NTM zone 20 + NN54 height',NULL,NULL,'EPSG','5120','EPSG','5776','EPSG','3662',0); +INSERT INTO "compound_crs" VALUES('EPSG','6161','ETRS89 / NTM zone 21 + NN54 height',NULL,NULL,'EPSG','5121','EPSG','5776','EPSG','3663',0); +INSERT INTO "compound_crs" VALUES('EPSG','6162','ETRS89 / NTM zone 22 + NN54 height',NULL,NULL,'EPSG','5122','EPSG','5776','EPSG','3665',0); +INSERT INTO "compound_crs" VALUES('EPSG','6163','ETRS89 / NTM zone 23 + NN54 height',NULL,NULL,'EPSG','5123','EPSG','5776','EPSG','3667',0); +INSERT INTO "compound_crs" VALUES('EPSG','6164','ETRS89 / NTM zone 24 + NN54 height',NULL,NULL,'EPSG','5124','EPSG','5776','EPSG','3668',0); +INSERT INTO "compound_crs" VALUES('EPSG','6165','ETRS89 / NTM zone 25 + NN54 height',NULL,NULL,'EPSG','5125','EPSG','5776','EPSG','3669',0); +INSERT INTO "compound_crs" VALUES('EPSG','6166','ETRS89 / NTM zone 26 + NN54 height',NULL,NULL,'EPSG','5126','EPSG','5776','EPSG','3671',0); +INSERT INTO "compound_crs" VALUES('EPSG','6167','ETRS89 / NTM zone 27 + NN54 height',NULL,NULL,'EPSG','5127','EPSG','5776','EPSG','3672',0); +INSERT INTO "compound_crs" VALUES('EPSG','6168','ETRS89 / NTM zone 28 + NN54 height',NULL,NULL,'EPSG','5128','EPSG','5776','EPSG','3673',0); +INSERT INTO "compound_crs" VALUES('EPSG','6169','ETRS89 / NTM zone 29 + NN54 height',NULL,NULL,'EPSG','5129','EPSG','5776','EPSG','3674',0); +INSERT INTO "compound_crs" VALUES('EPSG','6170','ETRS89 / NTM zone 30 + NN54 height',NULL,NULL,'EPSG','5130','EPSG','5776','EPSG','3676',0); +INSERT INTO "compound_crs" VALUES('EPSG','6171','ETRS89 / UTM zone 31 + NN54 height',NULL,NULL,'EPSG','25831','EPSG','5776','EPSG','3636',0); +INSERT INTO "compound_crs" VALUES('EPSG','6172','ETRS89 / UTM zone 32 + NN54 height',NULL,NULL,'EPSG','25832','EPSG','5776','EPSG','4066',0); +INSERT INTO "compound_crs" VALUES('EPSG','6173','ETRS89 / UTM zone 33 + NN54 height',NULL,NULL,'EPSG','25833','EPSG','5776','EPSG','4067',0); +INSERT INTO "compound_crs" VALUES('EPSG','6174','ETRS89 / UTM zone 34 + NN54 height',NULL,NULL,'EPSG','25834','EPSG','5776','EPSG','4068',0); +INSERT INTO "compound_crs" VALUES('EPSG','6175','ETRS89 / UTM zone 35 + NN54 height',NULL,NULL,'EPSG','25835','EPSG','5776','EPSG','4069',0); +INSERT INTO "compound_crs" VALUES('EPSG','6176','ETRS89 / UTM zone 36 + NN54 height',NULL,NULL,'EPSG','25836','EPSG','5776','EPSG','3676',0); +INSERT INTO "compound_crs" VALUES('EPSG','6190','Belge 1972 / Belgian Lambert 72 + Ostend height',NULL,NULL,'EPSG','31370','EPSG','5710','EPSG','1347',0); +INSERT INTO "compound_crs" VALUES('EPSG','6349','NAD83(2011) + NAVD88 height',NULL,NULL,'EPSG','6318','EPSG','5703','EPSG','3664',0); +INSERT INTO "compound_crs" VALUES('EPSG','6649','NAD83(CSRS) + CGVD2013 height',NULL,NULL,'EPSG','4617','EPSG','6647','EPSG','1061',0); +INSERT INTO "compound_crs" VALUES('EPSG','6650','NAD83(CSRS) / UTM zone 7N + CGVD2013 height',NULL,NULL,'EPSG','3154','EPSG','6647','EPSG','3409',0); +INSERT INTO "compound_crs" VALUES('EPSG','6651','NAD83(CSRS) / UTM zone 8N + CGVD2013 height',NULL,NULL,'EPSG','3155','EPSG','6647','EPSG','3410',0); +INSERT INTO "compound_crs" VALUES('EPSG','6652','NAD83(CSRS) / UTM zone 9N + CGVD2013 height',NULL,NULL,'EPSG','3156','EPSG','6647','EPSG','3411',0); +INSERT INTO "compound_crs" VALUES('EPSG','6653','NAD83(CSRS) / UTM zone 10N + CGVD2013 height',NULL,NULL,'EPSG','3157','EPSG','6647','EPSG','3412',0); +INSERT INTO "compound_crs" VALUES('EPSG','6654','NAD83(CSRS) / UTM zone 11N + CGVD2013 height',NULL,NULL,'EPSG','2955','EPSG','6647','EPSG','3528',0); +INSERT INTO "compound_crs" VALUES('EPSG','6655','NAD83(CSRS) / UTM zone 12N + CGVD2013 height',NULL,NULL,'EPSG','2956','EPSG','6647','EPSG','3527',0); +INSERT INTO "compound_crs" VALUES('EPSG','6656','NAD83(CSRS) / UTM zone 13N + CGVD2013 height',NULL,NULL,'EPSG','2957','EPSG','6647','EPSG','3526',0); +INSERT INTO "compound_crs" VALUES('EPSG','6657','NAD83(CSRS) / UTM zone 14N + CGVD2013 height',NULL,NULL,'EPSG','3158','EPSG','6647','EPSG','3413',0); +INSERT INTO "compound_crs" VALUES('EPSG','6658','NAD83(CSRS) / UTM zone 15N + CGVD2013 height',NULL,NULL,'EPSG','3159','EPSG','6647','EPSG','3414',0); +INSERT INTO "compound_crs" VALUES('EPSG','6659','NAD83(CSRS) / UTM zone 16N + CGVD2013 height',NULL,NULL,'EPSG','3160','EPSG','6647','EPSG','3415',0); +INSERT INTO "compound_crs" VALUES('EPSG','6660','NAD83(CSRS) / UTM zone 17N + CGVD2013 height',NULL,NULL,'EPSG','2958','EPSG','6647','EPSG','3416',0); +INSERT INTO "compound_crs" VALUES('EPSG','6661','NAD83(CSRS) / UTM zone 18N + CGVD2013 height',NULL,NULL,'EPSG','2959','EPSG','6647','EPSG','3417',0); +INSERT INTO "compound_crs" VALUES('EPSG','6662','NAD83(CSRS) / UTM zone 19N + CGVD2013 height',NULL,NULL,'EPSG','2960','EPSG','6647','EPSG','3524',0); +INSERT INTO "compound_crs" VALUES('EPSG','6663','NAD83(CSRS) / UTM zone 20N + CGVD2013 height',NULL,NULL,'EPSG','2961','EPSG','6647','EPSG','3525',0); +INSERT INTO "compound_crs" VALUES('EPSG','6664','NAD83(CSRS) / UTM zone 21N + CGVD2013 height',NULL,NULL,'EPSG','2962','EPSG','6647','EPSG','2151',0); +INSERT INTO "compound_crs" VALUES('EPSG','6665','NAD83(CSRS) / UTM zone 22N + CGVD2013 height',NULL,NULL,'EPSG','3761','EPSG','6647','EPSG','2152',0); +INSERT INTO "compound_crs" VALUES('EPSG','6696','JGD2000 + JGD2000 (vertical) height',NULL,NULL,'EPSG','4612','EPSG','6694','EPSG','3263',0); +INSERT INTO "compound_crs" VALUES('EPSG','6697','JGD2011 + JGD2011 (vertical) height',NULL,NULL,'EPSG','6668','EPSG','6695','EPSG','3263',0); +INSERT INTO "compound_crs" VALUES('EPSG','6700','Tokyo + JSLD72 height',NULL,NULL,'EPSG','4301','EPSG','6693','EPSG','4168',0); +INSERT INTO "compound_crs" VALUES('EPSG','6871','WGS 84 / Pseudo-Mercator + EGM2008 geoid height',NULL,NULL,'EPSG','3857','EPSG','3855','EPSG','1262',1); +INSERT INTO "compound_crs" VALUES('EPSG','6893','WGS 84 / World Mercator + EGM2008 height',NULL,NULL,'EPSG','3395','EPSG','3855','EPSG','1262',0); +INSERT INTO "compound_crs" VALUES('EPSG','6917','SVY21 + SHD height',NULL,NULL,'EPSG','4757','EPSG','6916','EPSG','1210',0); +INSERT INTO "compound_crs" VALUES('EPSG','6927','SVY21 / Singapore TM + SHD height',NULL,NULL,'EPSG','3414','EPSG','6916','EPSG','1210',0); +INSERT INTO "compound_crs" VALUES('EPSG','7400','NTF (Paris) + NGF IGN69 height',NULL,NULL,'EPSG','4807','EPSG','5720','EPSG','1326',0); +INSERT INTO "compound_crs" VALUES('EPSG','7401','NTF (Paris) / France II + NGF Lallemand',NULL,NULL,'EPSG','27582','EPSG','5719','EPSG','1326',1); +INSERT INTO "compound_crs" VALUES('EPSG','7402','NTF (Paris) / France II + NGF IGN69',NULL,NULL,'EPSG','27582','EPSG','5720','EPSG','1326',1); +INSERT INTO "compound_crs" VALUES('EPSG','7403','NTF (Paris) / France III + NGF IGN69',NULL,NULL,'EPSG','27583','EPSG','5720','EPSG','1733',1); +INSERT INTO "compound_crs" VALUES('EPSG','7404','RT90 + RH70 height',NULL,NULL,'EPSG','4124','EPSG','5718','EPSG','3313',0); +INSERT INTO "compound_crs" VALUES('EPSG','7405','OSGB 1936 / British National Grid + ODN height',NULL,NULL,'EPSG','27700','EPSG','5701','EPSG','2792',0); +INSERT INTO "compound_crs" VALUES('EPSG','7406','NAD27 + NGVD29 height (ftUS)',NULL,NULL,'EPSG','4267','EPSG','5702','EPSG','1323',0); +INSERT INTO "compound_crs" VALUES('EPSG','7407','NAD27 / Texas North + NGVD29 height (ftUS)',NULL,NULL,'EPSG','32037','EPSG','5702','EPSG','2253',0); +INSERT INTO "compound_crs" VALUES('EPSG','7408','RD/NAP',NULL,NULL,'EPSG','4289','EPSG','5709','EPSG','1275',1); +INSERT INTO "compound_crs" VALUES('EPSG','7409','ETRS89 + EVRF2000 height',NULL,NULL,'EPSG','4258','EPSG','5730','EPSG','1299',0); +INSERT INTO "compound_crs" VALUES('EPSG','7410','PSHD93',NULL,NULL,'EPSG','4134','EPSG','5724','EPSG','3288',0); +INSERT INTO "compound_crs" VALUES('EPSG','7411','NTF (Paris) / Lambert zone II + NGF Lallemand height',NULL,NULL,'EPSG','27572','EPSG','5719','EPSG','1326',0); +INSERT INTO "compound_crs" VALUES('EPSG','7412','NTF (Paris) / Lambert zone II + NGF IGN69',NULL,NULL,'EPSG','27572','EPSG','5719','EPSG','1326',1); +INSERT INTO "compound_crs" VALUES('EPSG','7413','NTF (Paris) / Lambert zone III + NGF IGN69',NULL,NULL,'EPSG','27573','EPSG','5719','EPSG','1733',1); +INSERT INTO "compound_crs" VALUES('EPSG','7414','Tokyo + JSLD69 height',NULL,NULL,'EPSG','4301','EPSG','5723','EPSG','4166',0); +INSERT INTO "compound_crs" VALUES('EPSG','7415','Amersfoort / RD New + NAP height',NULL,NULL,'EPSG','28992','EPSG','5709','EPSG','1275',0); +INSERT INTO "compound_crs" VALUES('EPSG','7416','ETRS89 / UTM zone 32N + DVR90 height',NULL,NULL,'EPSG','25832','EPSG','5799','EPSG','3471',0); +INSERT INTO "compound_crs" VALUES('EPSG','7417','ETRS89 / UTM zone 33N + DVR90 height',NULL,NULL,'EPSG','25833','EPSG','5799','EPSG','3472',0); +INSERT INTO "compound_crs" VALUES('EPSG','7418','ETRS89 / Kp2000 Jutland + DVR90 height',NULL,NULL,'EPSG','2196','EPSG','5799','EPSG','2531',0); +INSERT INTO "compound_crs" VALUES('EPSG','7419','ETRS89 / Kp2000 Zealand + DVR90 height',NULL,NULL,'EPSG','2197','EPSG','5799','EPSG','2532',0); +INSERT INTO "compound_crs" VALUES('EPSG','7420','ETRS89 / Kp2000 Bornholm + DVR90 height',NULL,NULL,'EPSG','2198','EPSG','5799','EPSG','2533',0); +INSERT INTO "compound_crs" VALUES('EPSG','7421','NTF (Paris) / Lambert zone II + NGF-IGN69 height',NULL,NULL,'EPSG','27572','EPSG','5720','EPSG','1326',0); +INSERT INTO "compound_crs" VALUES('EPSG','7422','NTF (Paris) / Lambert zone III + NGF-IGN69 height',NULL,NULL,'EPSG','27573','EPSG','5720','EPSG','1733',0); +INSERT INTO "compound_crs" VALUES('EPSG','7423','ETRS89 + EVRF2007 height',NULL,NULL,'EPSG','4258','EPSG','5621','EPSG','3594',0); +INSERT INTO "compound_crs" VALUES('EPSG','7954','Astro DOS 71 / UTM zone 30S + Jamestown 1971 height',NULL,NULL,'EPSG','7878','EPSG','7888','EPSG','3183',0); +INSERT INTO "compound_crs" VALUES('EPSG','7955','St. Helena Tritan / UTM zone 30S + Tritan 2011 height',NULL,NULL,'EPSG','7883','EPSG','7889','EPSG','3183',0); +INSERT INTO "compound_crs" VALUES('EPSG','7956','SHMG2015 + SHVD2015 height',NULL,NULL,'EPSG','7887','EPSG','7890','EPSG','3183',0); +INSERT INTO "compound_crs" VALUES('EPSG','8349','GR96 + GVR2000 height',NULL,NULL,'EPSG','4747','EPSG','8266','EPSG','4461',0); +INSERT INTO "compound_crs" VALUES('EPSG','8350','GR96 + GVR2016 height',NULL,NULL,'EPSG','4747','EPSG','8267','EPSG','4454',0); +INSERT INTO "compound_crs" VALUES('EPSG','8360','ETRS89 + Baltic 1957 height',NULL,NULL,'EPSG','4258','EPSG','8357','EPSG','1306',0); +INSERT INTO "compound_crs" VALUES('EPSG','8370','ETRS89 / Belgian Lambert 2008 + Ostend height',NULL,NULL,'EPSG','3812','EPSG','5710','EPSG','1347',0); +INSERT INTO "compound_crs" VALUES('EPSG','8700','NAD83 / Arizona East (ft) + NAVD88 height (ft)',NULL,NULL,'EPSG','2222','EPSG','8228','EPSG','2167',0); +INSERT INTO "compound_crs" VALUES('EPSG','8701','NAD83 / Arizona Central (ft) + NAVD88 height (ft)',NULL,NULL,'EPSG','2223','EPSG','8228','EPSG','2166',0); +INSERT INTO "compound_crs" VALUES('EPSG','8702','NAD83 / Arizona West (ft) + NAVD88 height (ft)',NULL,NULL,'EPSG','2224','EPSG','8228','EPSG','2168',0); +INSERT INTO "compound_crs" VALUES('EPSG','8703','NAD83 / Michigan North (ft) + NAVD88 height (ft)',NULL,NULL,'EPSG','2251','EPSG','8228','EPSG','1723',0); +INSERT INTO "compound_crs" VALUES('EPSG','8704','NAD83 / Michigan Central (ft) + NAVD88 height (ft)',NULL,NULL,'EPSG','2252','EPSG','8228','EPSG','1724',0); +INSERT INTO "compound_crs" VALUES('EPSG','8705','NAD83 / Michigan South (ft) + NAVD88 height (ft)',NULL,NULL,'EPSG','2253','EPSG','8228','EPSG','1725',0); +INSERT INTO "compound_crs" VALUES('EPSG','8706','NAD83 / Montana (ft) + NAVD88 height (ft)',NULL,NULL,'EPSG','2256','EPSG','8228','EPSG','1395',0); +INSERT INTO "compound_crs" VALUES('EPSG','8707','NAD83 / North Dakota North (ft) + NAVD88 height (ft)',NULL,NULL,'EPSG','2265','EPSG','8228','EPSG','2237',0); +INSERT INTO "compound_crs" VALUES('EPSG','8708','NAD83 / North Dakota South (ft) + NAVD88 height (ft)',NULL,NULL,'EPSG','2266','EPSG','8228','EPSG','2238',0); +INSERT INTO "compound_crs" VALUES('EPSG','8709','NAD83 / Oregon North (ft) + NAVD88 height (ft)',NULL,NULL,'EPSG','2269','EPSG','8228','EPSG','2243',0); +INSERT INTO "compound_crs" VALUES('EPSG','8710','NAD83 / Oregon South (ft) + NAVD88 height (ft)',NULL,NULL,'EPSG','2270','EPSG','8228','EPSG','2244',0); +INSERT INTO "compound_crs" VALUES('EPSG','8711','NAD83 / South Carolina (ft) + NAVD88 height (ft)',NULL,NULL,'EPSG','2273','EPSG','8228','EPSG','1409',0); +INSERT INTO "compound_crs" VALUES('EPSG','8712','NAD83 / Arkansas North (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3433','EPSG','6360','EPSG','2169',0); +INSERT INTO "compound_crs" VALUES('EPSG','8713','NAD83 / Arkansas South (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3434','EPSG','6360','EPSG','2170',0); +INSERT INTO "compound_crs" VALUES('EPSG','8714','NAD83 / California zone 1 (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2225','EPSG','6360','EPSG','2175',0); +INSERT INTO "compound_crs" VALUES('EPSG','8715','NAD83 / California zone 2 (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2226','EPSG','6360','EPSG','2176',0); +INSERT INTO "compound_crs" VALUES('EPSG','8716','NAD83 / California zone 3 (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2227','EPSG','6360','EPSG','2177',0); +INSERT INTO "compound_crs" VALUES('EPSG','8717','NAD83 / California zone 4 (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2228','EPSG','6360','EPSG','2178',0); +INSERT INTO "compound_crs" VALUES('EPSG','8718','NAD83 / California zone 5 (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2229','EPSG','6360','EPSG','2182',0); +INSERT INTO "compound_crs" VALUES('EPSG','8719','NAD83 / California zone 6 (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2230','EPSG','6360','EPSG','2180',0); +INSERT INTO "compound_crs" VALUES('EPSG','8720','NAD83 / Colorado North (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2231','EPSG','6360','EPSG','2184',0); +INSERT INTO "compound_crs" VALUES('EPSG','8721','NAD83 / Colorado Central (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2232','EPSG','6360','EPSG','2183',0); +INSERT INTO "compound_crs" VALUES('EPSG','8722','NAD83 / Colorado South (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2233','EPSG','6360','EPSG','2185',0); +INSERT INTO "compound_crs" VALUES('EPSG','8723','NAD83 / Connecticut (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2234','EPSG','6360','EPSG','1377',0); +INSERT INTO "compound_crs" VALUES('EPSG','8724','NAD83 / Delaware (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2235','EPSG','6360','EPSG','1378',0); +INSERT INTO "compound_crs" VALUES('EPSG','8725','NAD83 / Florida North (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2238','EPSG','6360','EPSG','2187',0); +INSERT INTO "compound_crs" VALUES('EPSG','8726','NAD83 / Florida East (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2236','EPSG','6360','EPSG','2186',0); +INSERT INTO "compound_crs" VALUES('EPSG','8727','NAD83 / Florida West (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2237','EPSG','6360','EPSG','2188',0); +INSERT INTO "compound_crs" VALUES('EPSG','8728','NAD83 / Georgia East (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2239','EPSG','6360','EPSG','2189',0); +INSERT INTO "compound_crs" VALUES('EPSG','8729','NAD83 / Georgia West (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2240','EPSG','6360','EPSG','2190',0); +INSERT INTO "compound_crs" VALUES('EPSG','8730','NAD83 / Idaho East (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2241','EPSG','6360','EPSG','2192',0); +INSERT INTO "compound_crs" VALUES('EPSG','8731','NAD83 / Idaho Central (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2242','EPSG','6360','EPSG','2191',0); +INSERT INTO "compound_crs" VALUES('EPSG','8732','NAD83 / Idaho West (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2243','EPSG','6360','EPSG','2193',0); +INSERT INTO "compound_crs" VALUES('EPSG','8733','NAD83 / Illinois East (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3435','EPSG','6360','EPSG','2194',0); +INSERT INTO "compound_crs" VALUES('EPSG','8734','NAD83 / Illinois West (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3436','EPSG','6360','EPSG','2195',0); +INSERT INTO "compound_crs" VALUES('EPSG','8735','NAD83 / Indiana East (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2965','EPSG','6360','EPSG','2196',0); +INSERT INTO "compound_crs" VALUES('EPSG','8736','NAD83 / Indiana West (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2966','EPSG','6360','EPSG','2197',0); +INSERT INTO "compound_crs" VALUES('EPSG','8737','NAD83 / Iowa North (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3417','EPSG','6360','EPSG','2198',0); +INSERT INTO "compound_crs" VALUES('EPSG','8738','NAD83 / Iowa South (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3418','EPSG','6360','EPSG','2199',0); +INSERT INTO "compound_crs" VALUES('EPSG','8739','NAD83 / Kansas North (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3419','EPSG','6360','EPSG','2200',0); +INSERT INTO "compound_crs" VALUES('EPSG','8740','NAD83 / Kansas South (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3420','EPSG','6360','EPSG','2201',0); +INSERT INTO "compound_crs" VALUES('EPSG','8741','NAD83 / Kentucky North (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2246','EPSG','6360','EPSG','2202',0); +INSERT INTO "compound_crs" VALUES('EPSG','8742','NAD83 / Kentucky South (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2247','EPSG','6360','EPSG','2203',0); +INSERT INTO "compound_crs" VALUES('EPSG','8743','NAD83 / Louisiana North (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3451','EPSG','6360','EPSG','2204',0); +INSERT INTO "compound_crs" VALUES('EPSG','8744','NAD83 / Louisiana South (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3452','EPSG','6360','EPSG','2529',0); +INSERT INTO "compound_crs" VALUES('EPSG','8745','NAD83 / Maine East (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','26847','EPSG','6360','EPSG','2206',0); +INSERT INTO "compound_crs" VALUES('EPSG','8746','NAD83 / Maine West (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','26848','EPSG','6360','EPSG','2207',0); +INSERT INTO "compound_crs" VALUES('EPSG','8747','NAD83 / Maryland (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2248','EPSG','6360','EPSG','1389',0); +INSERT INTO "compound_crs" VALUES('EPSG','8748','NAD83 / Massachusetts Mainland (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2249','EPSG','6360','EPSG','2209',0); +INSERT INTO "compound_crs" VALUES('EPSG','8749','NAD83 / Massachusetts Island (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2250','EPSG','6360','EPSG','2208',0); +INSERT INTO "compound_crs" VALUES('EPSG','8750','NAD83 / Minnesota North (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','26849','EPSG','6360','EPSG','2214',0); +INSERT INTO "compound_crs" VALUES('EPSG','8751','NAD83 / Minnesota Central (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','26850','EPSG','6360','EPSG','2213',0); +INSERT INTO "compound_crs" VALUES('EPSG','8752','NAD83 / Minnesota South (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','26851','EPSG','6360','EPSG','2215',0); +INSERT INTO "compound_crs" VALUES('EPSG','8753','NAD83 / Mississippi East (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2254','EPSG','6360','EPSG','2216',0); +INSERT INTO "compound_crs" VALUES('EPSG','8754','NAD83 / Mississippi West (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2255','EPSG','6360','EPSG','2217',0); +INSERT INTO "compound_crs" VALUES('EPSG','8755','NAD83 / Nebraska (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','26852','EPSG','6360','EPSG','1396',0); +INSERT INTO "compound_crs" VALUES('EPSG','8756','NAD83 / Nevada East (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3421','EPSG','6360','EPSG','2224',0); +INSERT INTO "compound_crs" VALUES('EPSG','8757','NAD83 / Nevada Central (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3422','EPSG','6360','EPSG','2223',0); +INSERT INTO "compound_crs" VALUES('EPSG','8758','NAD83 / Nevada West (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3423','EPSG','6360','EPSG','2225',0); +INSERT INTO "compound_crs" VALUES('EPSG','8759','NAD83 / New Hampshire (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3437','EPSG','6360','EPSG','1398',0); +INSERT INTO "compound_crs" VALUES('EPSG','8760','NAD83 / New Jersey (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3424','EPSG','6360','EPSG','1399',0); +INSERT INTO "compound_crs" VALUES('EPSG','8761','NAD83 / New Mexico East (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2257','EPSG','6360','EPSG','2228',0); +INSERT INTO "compound_crs" VALUES('EPSG','8762','NAD83 / New Mexico Central (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2258','EPSG','6360','EPSG','2231',0); +INSERT INTO "compound_crs" VALUES('EPSG','8763','NAD83 / New Mexico West (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2259','EPSG','6360','EPSG','2232',0); +INSERT INTO "compound_crs" VALUES('EPSG','8764','NAD83 / New York East (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2260','EPSG','6360','EPSG','2234',0); +INSERT INTO "compound_crs" VALUES('EPSG','8765','NAD83 / New York Central (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2261','EPSG','6360','EPSG','2233',0); +INSERT INTO "compound_crs" VALUES('EPSG','8766','NAD83 / New York West (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2262','EPSG','6360','EPSG','2236',0); +INSERT INTO "compound_crs" VALUES('EPSG','8767','NAD83 / New York Long Island (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2263','EPSG','6360','EPSG','2235',0); +INSERT INTO "compound_crs" VALUES('EPSG','8768','NAD83 / North Carolina (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2264','EPSG','6360','EPSG','1402',0); +INSERT INTO "compound_crs" VALUES('EPSG','8769','NAD83 / Ohio North (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3734','EPSG','6360','EPSG','2239',0); +INSERT INTO "compound_crs" VALUES('EPSG','8770','NAD83 / Ohio South (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3735','EPSG','6360','EPSG','2240',0); +INSERT INTO "compound_crs" VALUES('EPSG','8771','NAD83 / Oklahoma North (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2267','EPSG','6360','EPSG','2241',0); +INSERT INTO "compound_crs" VALUES('EPSG','8772','NAD83 / Oklahoma South (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2268','EPSG','6360','EPSG','2242',0); +INSERT INTO "compound_crs" VALUES('EPSG','8773','NAD83 / Pennsylvania North (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2271','EPSG','6360','EPSG','2245',0); +INSERT INTO "compound_crs" VALUES('EPSG','8774','NAD83 / Pennsylvania South (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2272','EPSG','6360','EPSG','2246',0); +INSERT INTO "compound_crs" VALUES('EPSG','8775','NAD83 / Rhode Island (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3438','EPSG','6360','EPSG','1408',0); +INSERT INTO "compound_crs" VALUES('EPSG','8776','NAD83 / South Dakota North (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','4457','EPSG','6360','EPSG','2249',0); +INSERT INTO "compound_crs" VALUES('EPSG','8777','NAD83 / South Dakota South (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3455','EPSG','6360','EPSG','2250',0); +INSERT INTO "compound_crs" VALUES('EPSG','8778','NAD83 / Tennessee (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2274','EPSG','6360','EPSG','1411',0); +INSERT INTO "compound_crs" VALUES('EPSG','8779','NAD83 / Texas North (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2275','EPSG','6360','EPSG','2253',0); +INSERT INTO "compound_crs" VALUES('EPSG','8780','NAD83 / Texas North Central (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2276','EPSG','6360','EPSG','2254',0); +INSERT INTO "compound_crs" VALUES('EPSG','8781','NAD83 / Texas Central (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2277','EPSG','6360','EPSG','2252',0); +INSERT INTO "compound_crs" VALUES('EPSG','8782','NAD83 / Texas South Central (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2278','EPSG','6360','EPSG','2527',0); +INSERT INTO "compound_crs" VALUES('EPSG','8783','NAD83 / Texas South (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2279','EPSG','6360','EPSG','2528',0); +INSERT INTO "compound_crs" VALUES('EPSG','8784','NAD83 / Utah North (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3560','EPSG','6360','EPSG','2258',0); +INSERT INTO "compound_crs" VALUES('EPSG','8785','NAD83 / Utah Central (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3566','EPSG','6360','EPSG','2257',0); +INSERT INTO "compound_crs" VALUES('EPSG','8786','NAD83 / Utah South (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3567','EPSG','6360','EPSG','2259',0); +INSERT INTO "compound_crs" VALUES('EPSG','8787','NAD83 / Vermont (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','5646','EPSG','6360','EPSG','1414',0); +INSERT INTO "compound_crs" VALUES('EPSG','8788','NAD83 / Virginia North (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2283','EPSG','6360','EPSG','2260',0); +INSERT INTO "compound_crs" VALUES('EPSG','8789','NAD83 / Virginia South (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2284','EPSG','6360','EPSG','2261',0); +INSERT INTO "compound_crs" VALUES('EPSG','8790','NAD83 / Washington North (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2285','EPSG','6360','EPSG','2273',0); +INSERT INTO "compound_crs" VALUES('EPSG','8791','NAD83 / Washington South (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2286','EPSG','6360','EPSG','2274',0); +INSERT INTO "compound_crs" VALUES('EPSG','8792','NAD83 / West Virginia North (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','26853','EPSG','6360','EPSG','2264',0); +INSERT INTO "compound_crs" VALUES('EPSG','8793','NAD83 / West Virginia South (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','26854','EPSG','6360','EPSG','2265',0); +INSERT INTO "compound_crs" VALUES('EPSG','8794','NAD83 / Wisconsin North (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2287','EPSG','6360','EPSG','2267',0); +INSERT INTO "compound_crs" VALUES('EPSG','8795','NAD83 / Wisconsin Central (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2288','EPSG','6360','EPSG','2266',0); +INSERT INTO "compound_crs" VALUES('EPSG','8796','NAD83 / Wisconsin South (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','2289','EPSG','6360','EPSG','2268',0); +INSERT INTO "compound_crs" VALUES('EPSG','8797','NAD83 / Wyoming East (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3736','EPSG','6360','EPSG','2269',0); +INSERT INTO "compound_crs" VALUES('EPSG','8798','NAD83 / Wyoming East Central (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3737','EPSG','6360','EPSG','2270',0); +INSERT INTO "compound_crs" VALUES('EPSG','8799','NAD83 / Wyoming West Central (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3738','EPSG','6360','EPSG','2272',0); +INSERT INTO "compound_crs" VALUES('EPSG','8800','NAD83 / Wyoming West (ftUS) + NAVD88 height (ftUS)',NULL,NULL,'EPSG','3739','EPSG','6360','EPSG','2271',0); +INSERT INTO "compound_crs" VALUES('EPSG','8801','NAD83 / Alabama East + NAVD88 height',NULL,NULL,'EPSG','26929','EPSG','5703','EPSG','2154',0); +INSERT INTO "compound_crs" VALUES('EPSG','8802','NAD83 / Alabama West + NAVD88 height',NULL,NULL,'EPSG','26930','EPSG','5703','EPSG','2155',0); +INSERT INTO "compound_crs" VALUES('EPSG','8803','NAD83 / Alaska zone 1 + NAVD88 height',NULL,NULL,'EPSG','26931','EPSG','5703','EPSG','2156',0); +INSERT INTO "compound_crs" VALUES('EPSG','8804','NAD83 / Alaska zone 2 + NAVD88 height',NULL,NULL,'EPSG','26932','EPSG','5703','EPSG','2158',0); +INSERT INTO "compound_crs" VALUES('EPSG','8805','NAD83 / Alaska zone 3 + NAVD88 height',NULL,NULL,'EPSG','26933','EPSG','5703','EPSG','2159',0); +INSERT INTO "compound_crs" VALUES('EPSG','8806','NAD83 / Alaska zone 4 + NAVD88 height',NULL,NULL,'EPSG','26934','EPSG','5703','EPSG','2160',0); +INSERT INTO "compound_crs" VALUES('EPSG','8807','NAD83 / Alaska zone 5 + NAVD88 height',NULL,NULL,'EPSG','26935','EPSG','5703','EPSG','2161',0); +INSERT INTO "compound_crs" VALUES('EPSG','8808','NAD83 / Alaska zone 6 + NAVD88 height',NULL,NULL,'EPSG','26936','EPSG','5703','EPSG','2162',0); +INSERT INTO "compound_crs" VALUES('EPSG','8809','NAD83 / Alaska zone 7 + NAVD88 height',NULL,NULL,'EPSG','26937','EPSG','5703','EPSG','2163',0); +INSERT INTO "compound_crs" VALUES('EPSG','8810','NAD83 / Alaska zone 8 + NAVD88 height',NULL,NULL,'EPSG','26938','EPSG','5703','EPSG','2164',0); +INSERT INTO "compound_crs" VALUES('EPSG','8811','NAD83 / Alaska zone 9 + NAVD88 height',NULL,NULL,'EPSG','26939','EPSG','5703','EPSG','2165',0); +INSERT INTO "compound_crs" VALUES('EPSG','8812','NAD83 / Alaska zone 10 + NAVD88 height',NULL,NULL,'EPSG','26940','EPSG','5703','EPSG','2157',0); +INSERT INTO "compound_crs" VALUES('EPSG','8813','NAD83 / Missouri East + NAVD88 height',NULL,NULL,'EPSG','26996','EPSG','5703','EPSG','2219',0); +INSERT INTO "compound_crs" VALUES('EPSG','8814','NAD83 / Missouri Central + NAVD88 height',NULL,NULL,'EPSG','26997','EPSG','5703','EPSG','2218',0); +INSERT INTO "compound_crs" VALUES('EPSG','8815','NAD83 / Missouri West + NAVD88 height',NULL,NULL,'EPSG','26998','EPSG','5703','EPSG','2220',0); diff --git a/data/sql/concatenated_operation.sql b/data/sql/concatenated_operation.sql new file mode 100644 index 00000000..bc1362dd --- /dev/null +++ b/data/sql/concatenated_operation.sql @@ -0,0 +1,211 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +INSERT INTO "concatenated_operation" VALUES('EPSG','3896','MGI (Ferro) to WGS 84 (2)',NULL,NULL,'EPSG','4805','EPSG','4326','EPSG','1037',NULL,'EPSG','3895','EPSG','1618',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','3966','MGI (Ferro) to WGS 84 (1)',NULL,NULL,'EPSG','4805','EPSG','4326','EPSG','2370',NULL,'EPSG','3913','EPSG','3962',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','4435','Puerto Rico to NAD83(HARN) (1)',NULL,NULL,'EPSG','4139','EPSG','4152','EPSG','3634',NULL,'EPSG','1461','EPSG','1495',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','4837','Amersfoort to ED50 (1)',NULL,NULL,'EPSG','4289','EPSG','4230','EPSG','1275',NULL,'EPSG','1672','EPSG','1311',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','5190','Tokyo 1892 to Korea 2000 (1)',NULL,NULL,'EPSG','5132','EPSG','4737','EPSG','3266',NULL,'EPSG','5134','EPSG','5189',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','5192','Tokyo 1892 to WGS 84 (1)',NULL,NULL,'EPSG','5132','EPSG','4326','EPSG','3266',NULL,'EPSG','5134','EPSG','5191',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','5230','S-JTSK (Ferro) to WGS 84 (2)',NULL,NULL,'EPSG','4818','EPSG','4326','EPSG','1211',NULL,'EPSG','1884','EPSG','4836',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','5240','S-JTSK/05 (Ferro) to WGS 84 (1)',NULL,NULL,'EPSG','5229','EPSG','4326','EPSG','1079',NULL,'EPSG','5238','EPSG','5227',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','5242','S-JTSK (Ferro) to WGS 84 (3)',NULL,NULL,'EPSG','4818','EPSG','4326','EPSG','1079',NULL,'EPSG','1884','EPSG','5239',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','5838','Lisbon (Lisbon) to WGS 84 (2)',NULL,NULL,'EPSG','4803','EPSG','4326','EPSG','1294',NULL,'EPSG','1756','EPSG','1988',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','6714','Tokyo to JGD2011 (1)',NULL,NULL,'EPSG','4301','EPSG','6668','EPSG','4170',NULL,'EPSG','6712','EPSG','6713',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','6739','NAD27 to NAD83(HARN) (22)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1410',NULL,'EPSG','1241','EPSG','1496',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','6874','Tananarive (Paris) to WGS 84 (2)',NULL,NULL,'EPSG','4810','EPSG','4326','EPSG','3273',NULL,'EPSG','1265','EPSG','6873',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','7811','NTF (Paris) to RGF93 (2)',NULL,NULL,'EPSG','4807','EPSG','4171','EPSG','3694',NULL,'EPSG','1763','EPSG','15958',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','7965','Poolbeg height (ft(Br36)) to Malin Head height (1)',NULL,NULL,'EPSG','5754','EPSG','5731','EPSG','1305',NULL,'EPSG','7963','EPSG','7964',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','7967','Poolbeg height (ft(Br36)) to Belfast height (1)',NULL,NULL,'EPSG','5754','EPSG','5732','EPSG','1305',NULL,'EPSG','7963','EPSG','7966',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','7973','NGVD29 height (ftUS) to NAVD88 height (1)',NULL,NULL,'EPSG','5702','EPSG','5703','EPSG','2950',NULL,'EPSG','7972','EPSG','7969',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','7974','NGVD29 height (ftUS) to NAVD88 height (2)',NULL,NULL,'EPSG','5702','EPSG','5703','EPSG','2949',NULL,'EPSG','7972','EPSG','7970',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','7975','NGVD29 height (ftUS) to NAVD88 height (3)',NULL,NULL,'EPSG','5702','EPSG','5703','EPSG','2948',NULL,'EPSG','7972','EPSG','7971',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','7983','HKPD height to HKCD depth (1)',NULL,NULL,'EPSG','5738','EPSG','5739','EPSG','3335',NULL,'EPSG','7982','EPSG','7977',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','7986','KOC CD height to KOC WD depth (1)',NULL,NULL,'EPSG','5790','EPSG','5789','EPSG','3267',NULL,'EPSG','7980','EPSG','7984',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','7987','KOC CD height to KOC WD depth (ft) (1)',NULL,NULL,'EPSG','5790','EPSG','5614','EPSG','3267',NULL,'EPSG','7980','EPSG','7984','EPSG','7985',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8047','ED50 to WGS 84 (15)',NULL,NULL,'EPSG','4230','EPSG','4326','EPSG','2332',NULL,'EPSG','1147','EPSG','1146',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8094','NTF (Paris) to WGS 84 (1)',NULL,NULL,'EPSG','4807','EPSG','4326','EPSG','3694',NULL,'EPSG','1763','EPSG','1193',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8174','Bogota 1975 (Bogota) to WGS 84 (1)',NULL,NULL,'EPSG','4802','EPSG','4326','EPSG','3229',NULL,'EPSG','1755','EPSG','1125',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8175','Monte Mario (Rome) to WGS 84 (1)',NULL,NULL,'EPSG','4806','EPSG','4326','EPSG','2339',NULL,'EPSG','1262','EPSG','1169',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8176','Tananarive (Paris) to WGS 84 (1)',NULL,NULL,'EPSG','4810','EPSG','4326','EPSG','3273',NULL,'EPSG','1265','EPSG','1227',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8178','Batavia (Jakarta) to WGS 84 (1)',NULL,NULL,'EPSG','4813','EPSG','4326','EPSG','1355',NULL,'EPSG','1759','EPSG','1123',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8183','HD72 to WGS 84 (1)',NULL,NULL,'EPSG','4237','EPSG','4326','EPSG','1119',NULL,'EPSG','1273','EPSG','1149',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8186','NTF (Paris) to ED50 (1)',NULL,NULL,'EPSG','4807','EPSG','4230','EPSG','3694',NULL,'EPSG','1763','EPSG','1276',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8188','NTF (Paris) to WGS 72 (1)',NULL,NULL,'EPSG','4807','EPSG','4322','EPSG','3694',NULL,'EPSG','1763','EPSG','1277',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8190','AGD66 to WGS 84 (2)',NULL,NULL,'EPSG','4202','EPSG','4326','EPSG','2575',NULL,'EPSG','1278','EPSG','1150',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8192','AGD84 to WGS 84 (3)',NULL,NULL,'EPSG','4203','EPSG','4326','EPSG','2575',NULL,'EPSG','1279','EPSG','1150',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8194','AGD84 to WGS 84 (4)',NULL,NULL,'EPSG','4203','EPSG','4326','EPSG','2575',NULL,'EPSG','1280','EPSG','1150',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8195','RT90 to WGS 84 (1)',NULL,NULL,'EPSG','4124','EPSG','4326','EPSG','1225',NULL,'EPSG','1437','EPSG','1149',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8199','Pulkovo 1942 to WGS 84 (2)',NULL,NULL,'EPSG','4284','EPSG','4326','EPSG','1145',NULL,'EPSG','1274','EPSG','1283',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8211','Voirol 1875 (Paris) to WGS 84 (1)',NULL,NULL,'EPSG','4811','EPSG','4326','EPSG','1365',NULL,'EPSG','1266','EPSG','1294',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8215','Tete to WGS 84 (1)',NULL,NULL,'EPSG','4127','EPSG','4326','EPSG','1167',NULL,'EPSG','1297','EPSG','1302',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8217','Tete to WGS 84 (2)',NULL,NULL,'EPSG','4127','EPSG','4326','EPSG','2350',NULL,'EPSG','1298','EPSG','1302',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8219','Tete to WGS 84 (3)',NULL,NULL,'EPSG','4127','EPSG','4326','EPSG','2351',NULL,'EPSG','1299','EPSG','1302',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8221','Tete to WGS 84 (4)',NULL,NULL,'EPSG','4127','EPSG','4326','EPSG','2352',NULL,'EPSG','1300','EPSG','1302',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8223','Tete to WGS 84 (5)',NULL,NULL,'EPSG','4127','EPSG','4326','EPSG','2353',NULL,'EPSG','1301','EPSG','1302',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8234','DHDN to WGS 84 (1)',NULL,NULL,'EPSG','4314','EPSG','4326','EPSG','2326',NULL,'EPSG','1309','EPSG','1149',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8236','Pulkovo 1942 to WGS 84 (11)',NULL,NULL,'EPSG','4284','EPSG','4326','EPSG','1343',NULL,'EPSG','1310','EPSG','1149',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8243','NAD27 to WGS 84 (25)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1061',NULL,'EPSG','1312','EPSG','1188',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8245','NAD27 to WGS 84 (26)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1061',NULL,'EPSG','1313','EPSG','1188',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8263','MGI (Ferro) to WGS 84 (1)',NULL,NULL,'EPSG','4805','EPSG','4326','EPSG','2370',NULL,'EPSG','1757','EPSG','1306',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8363','ETRS89 + Baltic 1957 height to ETRS89 + EVRF2007 height (1)',NULL,NULL,'EPSG','8360','EPSG','7423','EPSG','1211',NULL,'EPSG','8361','EPSG','8362',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8386','Old Hawaiian to WGS 84 (1)',NULL,NULL,'EPSG','4135','EPSG','4326','EPSG','1334',NULL,'EPSG','1454','EPSG','1188',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8388','St. Lawrence Island to WGS 84 (1)',NULL,NULL,'EPSG','4136','EPSG','4326','EPSG','1332',NULL,'EPSG','1455','EPSG','1188',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8390','St. Paul Island to WGS 84 (1)',NULL,NULL,'EPSG','4137','EPSG','4326','EPSG','1333',NULL,'EPSG','1456','EPSG','1188',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8392','St. George Island to WGS 84 (1)',NULL,NULL,'EPSG','4138','EPSG','4326','EPSG','1331',NULL,'EPSG','1457','EPSG','1188',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8394','NAD27(CGQ77) to WGS 84 (1)',NULL,NULL,'EPSG','4609','EPSG','4326','EPSG','1368',NULL,'EPSG','1451','EPSG','1188',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8396','AGD66 to WGS 84 (3)',NULL,NULL,'EPSG','4202','EPSG','4326','EPSG','2283',NULL,'EPSG','1458','EPSG','1150',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8398','AGD66 to WGS 84 (4)',NULL,NULL,'EPSG','4202','EPSG','4326','EPSG','1282',NULL,'EPSG','1459','EPSG','1150',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8400','AGD66 to WGS 84 (5)',NULL,NULL,'EPSG','4202','EPSG','4326','EPSG','2286',NULL,'EPSG','1460','EPSG','1150',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8402','Puerto Rico to WGS 84 (1)',NULL,NULL,'EPSG','4139','EPSG','4326','EPSG','1335',NULL,'EPSG','1461','EPSG','1188',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8404','NAD27 to WGS 84 (27)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1368',NULL,'EPSG','1462','EPSG','1188',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8406','NAD27(76) to WGS 84 (1)',NULL,NULL,'EPSG','4608','EPSG','4326','EPSG','1367',NULL,'EPSG','1463','EPSG','1188',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8408','AGD66 to WGS 84 (6)',NULL,NULL,'EPSG','4202','EPSG','4326','EPSG','2285',NULL,'EPSG','1464','EPSG','1150',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8418','ATS77 to WGS 84 (1)',NULL,NULL,'EPSG','4122','EPSG','4326','EPSG','1447',NULL,'EPSG','1472','EPSG','1473',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8419','ATS77 to WGS 84 (2)',NULL,NULL,'EPSG','4122','EPSG','4326','EPSG','1533',NULL,'EPSG','1599','EPSG','1473',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8420','NAD27 to WGS 84 (32)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','2375',NULL,'EPSG','1600','EPSG','1473',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8421','NAD83 to WGS 84 (7)',NULL,NULL,'EPSG','4269','EPSG','4326','EPSG','2375',NULL,'EPSG','1601','EPSG','1473',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8422','NAD83 to WGS 84 (8)',NULL,NULL,'EPSG','4269','EPSG','4326','EPSG','2376',NULL,'EPSG','1602','EPSG','1473',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8442','ETRS89 to S-JTSK (5)',NULL,NULL,'EPSG','4258','EPSG','4156','EPSG','1211',NULL,'EPSG','8365','EPSG','8364',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8443','S-JTSK to ETRS89 (6)',NULL,NULL,'EPSG','4156','EPSG','4258','EPSG','1211',NULL,'EPSG','8364','EPSG','8367',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8453','AGD66 to WGS 84 (7)',NULL,NULL,'EPSG','4202','EPSG','4326','EPSG','1282',NULL,'EPSG','1506','EPSG','1150',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8454','AGD66 to WGS 84 (8)',NULL,NULL,'EPSG','4202','EPSG','4326','EPSG','2284',NULL,'EPSG','1507','EPSG','1150',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8457','CH1903+ to WGS 84 (1)',NULL,NULL,'EPSG','4150','EPSG','4326','EPSG','1286',NULL,'EPSG','1509','EPSG','1511',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8460','NAD27 to NAD83(HARN) (1)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1372',NULL,'EPSG','1241','EPSG','1474',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8461','NAD27 to NAD83(HARN) (2)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1373',NULL,'EPSG','1241','EPSG','1475',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8462','NAD27 to NAD83(HARN) (3)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','2297',NULL,'EPSG','1241','EPSG','1476',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8463','NAD27 to NAD83(HARN) (4)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','2298',NULL,'EPSG','1241','EPSG','1477',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8464','NAD27 to NAD83(HARN) (5)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1376',NULL,'EPSG','1241','EPSG','1478',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8465','NAD27 to NAD83(HARN) (6)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1380',NULL,'EPSG','1241','EPSG','1479',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8466','NAD27 to NAD83(HARN) (7)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1379',NULL,'EPSG','1241','EPSG','1480',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8467','NAD27 to NAD83(HARN) (8)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','2382',NULL,'EPSG','1241','EPSG','1481',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8468','NAD27 to NAD83(HARN) (9)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','2383',NULL,'EPSG','1241','EPSG','1482',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8469','NAD27 to NAD83(HARN) (10)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1386',NULL,'EPSG','1241','EPSG','1483',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8470','NAD27 to NAD83(HARN) (11)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1387',NULL,'EPSG','1241','EPSG','1484',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8471','NAD27 to NAD83(HARN) (12)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','2377',NULL,'EPSG','1241','EPSG','1485',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8472','NAD27 to NAD83(HARN) (13)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1388',NULL,'EPSG','1241','EPSG','1486',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8473','NAD27 to NAD83(HARN) (14)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1391',NULL,'EPSG','1241','EPSG','1487',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8474','NAD27 to NAD83(HARN) (15)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1393',NULL,'EPSG','1241','EPSG','1488',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8475','NAD27 to NAD83(HARN) (16)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1396',NULL,'EPSG','1241','EPSG','1489',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8476','NAD27 to NAD83(HARN) (17)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','2378',NULL,'EPSG','1241','EPSG','1490',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8477','NAD27 to NAD83(HARN) (18)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1400',NULL,'EPSG','1241','EPSG','1491',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8478','NAD27 to NAD83(HARN) (19)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1401',NULL,'EPSG','1241','EPSG','1492',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8479','NAD27 to NAD83(HARN) (20)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1403',NULL,'EPSG','1241','EPSG','1493',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8480','NAD27 to NAD83(HARN) (21)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1405',NULL,'EPSG','1241','EPSG','1494',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8481','Puerto Rico to NAD83(HARN) (1)',NULL,NULL,'EPSG','4139','EPSG','4152','EPSG','1335',NULL,'EPSG','1241','EPSG','1495',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8482','NAD27 to NAD83(HARN) (22)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1410',NULL,'EPSG','1747','EPSG','1496',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8483','NAD27 to NAD83(HARN) (23)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1411',NULL,'EPSG','1241','EPSG','1497',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8484','NAD27 to NAD83(HARN) (24)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','2379',NULL,'EPSG','1241','EPSG','1498',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8485','NAD27 to NAD83(HARN) (25)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','2380',NULL,'EPSG','1241','EPSG','1499',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8486','NAD27 to NAD83(HARN) (26)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1415',NULL,'EPSG','1241','EPSG','1500',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8487','NAD27 to NAD83(HARN) (27)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','2381',NULL,'EPSG','1241','EPSG','1501',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8488','NAD27 to NAD83(HARN) (28)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1418',NULL,'EPSG','1241','EPSG','1502',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8489','NAD27 to NAD83(HARN) (29)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1419',NULL,'EPSG','1241','EPSG','1503',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8496','NAD27 to WGS 84 (28)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','2374',NULL,'EPSG','1241','EPSG','1515',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8497','NAD27 to WGS 84 (29)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','2373',NULL,'EPSG','1243','EPSG','1515',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8508','Old Hawaiian to NAD83(HARN) (1)',NULL,NULL,'EPSG','4135','EPSG','4152','EPSG','1334',NULL,'EPSG','1454','EPSG','1520',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8509','NAD27 to NAD83(HARN) (30)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1383',NULL,'EPSG','1241','EPSG','1521',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8510','NAD27 to NAD83(HARN) (31)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1385',NULL,'EPSG','1241','EPSG','1522',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8511','NAD27 to NAD83(HARN) (32)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1397',NULL,'EPSG','1241','EPSG','1523',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8512','NAD27 to NAD83(HARN) (33)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1404',NULL,'EPSG','1241','EPSG','1524',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8513','NAD27 to NAD83(HARN) (34)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1413',NULL,'EPSG','1241','EPSG','1525',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8514','NAD27 to NAD83(HARN) (35)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1417',NULL,'EPSG','1241','EPSG','1526',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8517','Chos Malal 1914 to WGS 84 (1)',NULL,NULL,'EPSG','4160','EPSG','4326','EPSG','2325',NULL,'EPSG','1528','EPSG','1527',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8530','South Yemen to WGS 84 (1)',NULL,NULL,'EPSG','4164','EPSG','4326','EPSG','1340',NULL,'EPSG','1539','EPSG','1540',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8532','Indian 1960 to WGS 84 (1)',NULL,NULL,'EPSG','4131','EPSG','4326','EPSG','1495',NULL,'EPSG','1541','EPSG','1240',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8537','Egypt 1907 to WGS 84 (2)',NULL,NULL,'EPSG','4229','EPSG','4326','EPSG','1086',NULL,'EPSG','1545','EPSG','1237',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8553','NAD27 to NAD83(HARN) (36)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1382',NULL,'EPSG','1241','EPSG','1553',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8554','NAD27 to NAD83(HARN) (37)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1399',NULL,'EPSG','1241','EPSG','1554',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8560','AGD84 to WGS 84 (5)',NULL,NULL,'EPSG','4203','EPSG','4326','EPSG','1280',NULL,'EPSG','1559','EPSG','1150',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8562','Nord Sahara 1959 to WGS 84 (3)',NULL,NULL,'EPSG','4307','EPSG','4326','EPSG','2393',NULL,'EPSG','1560','EPSG','1240',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8563','NZGD49 to WGS 84 (3)',NULL,NULL,'EPSG','4272','EPSG','4326','EPSG','1175',NULL,'EPSG','1568','EPSG','1565',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8564','NAD27(CGQ77) to WGS 84 (2)',NULL,NULL,'EPSG','4609','EPSG','4326','EPSG','1368',NULL,'EPSG','1576','EPSG','1473',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8565','NAD27 to WGS 84 (31)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1368',NULL,'EPSG','1574','EPSG','1188',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8566','NAD83 to WGS 84 (6)',NULL,NULL,'EPSG','4269','EPSG','4326','EPSG','1368',NULL,'EPSG','1572','EPSG','1188',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8568','Deir ez Zor to WGS 84 (1)',NULL,NULL,'EPSG','4227','EPSG','4326','EPSG','2329',NULL,'EPSG','1584','EPSG','1240',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8569','ED50 to WGS 84 (21)',NULL,NULL,'EPSG','4230','EPSG','4326','EPSG','2332',NULL,'EPSG','1588','EPSG','1149',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8571','Accra to WGS 84 (2)',NULL,NULL,'EPSG','4168','EPSG','4326','EPSG','1505',NULL,'EPSG','1570','EPSG','1240',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8572','Amersfoort to WGS 84 (2)',NULL,NULL,'EPSG','4289','EPSG','4326','EPSG','1275',NULL,'EPSG','1571','EPSG','1149',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8573','RGF93 to WGS 84 (1)',NULL,NULL,'EPSG','4171','EPSG','4326','EPSG','1096',NULL,'EPSG','1591','EPSG','1149',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8574','American Samoa 1962 to WGS 84 (2)',NULL,NULL,'EPSG','4169','EPSG','4326','EPSG','2288',NULL,'EPSG','1578','EPSG','1580',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8575','American Samoa 1962 to WGS 84 (3)',NULL,NULL,'EPSG','4169','EPSG','4326','EPSG','2289',NULL,'EPSG','1579','EPSG','1580',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8576','AGD66 to WGS 84 (9)',NULL,NULL,'EPSG','4202','EPSG','4326','EPSG','1282',NULL,'EPSG','1594','EPSG','1150',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8577','AGD66 to WGS 84 (10)',NULL,NULL,'EPSG','4202','EPSG','4326','EPSG','2284',NULL,'EPSG','1595','EPSG','1150',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8578','AGD66 to WGS 84 (11)',NULL,NULL,'EPSG','4202','EPSG','4326','EPSG','2287',NULL,'EPSG','1596','EPSG','1150',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8579','AGD84 to WGS 84 (6)',NULL,NULL,'EPSG','4203','EPSG','4326','EPSG','1280',NULL,'EPSG','1593','EPSG','1150',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8580','IRENET95 to WGS 84 (1)',NULL,NULL,'EPSG','4173','EPSG','4326','EPSG','1305',NULL,'EPSG','1611','EPSG','1149',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8581','PSD93 to WGS 84 (2)',NULL,NULL,'EPSG','4134','EPSG','4326','EPSG','3288',NULL,'EPSG','1616','EPSG','1237',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8582','Old Hawaiian to WGS 84 (2)',NULL,NULL,'EPSG','4135','EPSG','4326','EPSG','1334',NULL,'EPSG','1454','EPSG','1741',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8583','Puerto Rico to WGS 84 (2)',NULL,NULL,'EPSG','4139','EPSG','4326','EPSG','3634',NULL,'EPSG','1461','EPSG','1731',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8584','NAD27 to NAD83(CSRS98) (3)',NULL,NULL,'EPSG','4267','EPSG','4140','EPSG','2376',NULL,'EPSG','1313','EPSG','1752',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8585','NAD27 to WGS 84 (36)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','2376',NULL,'EPSG','1313','EPSG','1702',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8586','NAD27 to NAD83(HARN) (38)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1374',NULL,'EPSG','1241','EPSG','1704',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8587','NAD27 to NAD83(HARN) (39)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1384',NULL,'EPSG','1241','EPSG','1705',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8588','NAD27 to NAD83(HARN) (40)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1392',NULL,'EPSG','1241','EPSG','1706',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8589','NAD27 to NAD83(HARN) (41)',NULL,NULL,'EPSG','4267','EPSG','4152','EPSG','1394',NULL,'EPSG','1241','EPSG','1707',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8590','NAD27 to WGS 84 (37)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1372',NULL,'EPSG','1241','EPSG','1717',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8591','NAD27 to WGS 84 (38)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1373',NULL,'EPSG','1241','EPSG','1728',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8592','NAD27 to WGS 84 (39)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1374',NULL,'EPSG','1241','EPSG','1708',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8593','NAD27 to WGS 84 (40)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','2297',NULL,'EPSG','1241','EPSG','1739',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8594','NAD27 to WGS 84 (41)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','2298',NULL,'EPSG','1241','EPSG','1750',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8595','NAD27 to WGS 84 (42)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1376',NULL,'EPSG','1241','EPSG','1712',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8596','NAD27 to WGS 84 (43)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1379',NULL,'EPSG','1241','EPSG','1714',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8597','NAD27 to WGS 84 (44)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1380',NULL,'EPSG','1241','EPSG','1713',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8598','NAD27 to WGS 84 (45)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1382',NULL,'EPSG','1241','EPSG','1748',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8599','NAD27 to WGS 84 (46)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1383',NULL,'EPSG','1241','EPSG','1742',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8600','NAD27 to WGS 84 (47)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1384',NULL,'EPSG','1241','EPSG','1709',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8601','NAD27 to WGS 84 (48)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1385',NULL,'EPSG','1241','EPSG','1743',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8602','NAD27 to WGS 84 (49)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1386',NULL,'EPSG','1241','EPSG','1718',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8603','NAD27 to WGS 84 (50)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1387',NULL,'EPSG','1241','EPSG','1719',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8604','NAD27 to WGS 84 (51)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1388',NULL,'EPSG','1241','EPSG','1721',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8605','NAD27 to WGS 84 (52)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','2377',NULL,'EPSG','1241','EPSG','1720',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8606','NAD27 to WGS 84 (53)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','2378',NULL,'EPSG','1241','EPSG','1725',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8607','NAD27 to WGS 84 (54)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1391',NULL,'EPSG','1241','EPSG','1722',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8608','NAD27 to WGS 84 (55)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1392',NULL,'EPSG','1241','EPSG','1710',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8609','NAD27 to WGS 84 (56)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1393',NULL,'EPSG','1241','EPSG','1723',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8610','NAD27 to WGS 84 (57)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1394',NULL,'EPSG','1241','EPSG','1711',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8611','NAD27 to WGS 84 (58)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','2382',NULL,'EPSG','1241','EPSG','1715',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8612','NAD27 to WGS 84 (59)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','2383',NULL,'EPSG','1241','EPSG','1716',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8613','NAD27 to WGS 84 (60)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1396',NULL,'EPSG','1241','EPSG','1724',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8614','NAD27 to WGS 84 (61)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1397',NULL,'EPSG','1241','EPSG','1744',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8615','NAD27 to WGS 84 (62)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1399',NULL,'EPSG','1241','EPSG','1749',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8616','NAD27 to WGS 84 (63)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1400',NULL,'EPSG','1241','EPSG','1726',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8617','NAD27 to WGS 84 (64)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1401',NULL,'EPSG','1241','EPSG','1727',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8618','NAD27 to WGS 84 (65)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1403',NULL,'EPSG','1241','EPSG','1729',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8619','NAD27 to WGS 84 (66)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1404',NULL,'EPSG','1241','EPSG','1745',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8620','NAD27 to WGS 84 (67)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1405',NULL,'EPSG','1241','EPSG','1730',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8621','NAD27 to WGS 84 (68)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','2381',NULL,'EPSG','1241','EPSG','1737',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8622','NAD27 to WGS 84 (69)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1410',NULL,'EPSG','1241','EPSG','1732',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8623','NAD27 to WGS 84 (70)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1411',NULL,'EPSG','1241','EPSG','1733',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8624','NAD27 to WGS 84 (71)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','2379',NULL,'EPSG','1241','EPSG','1734',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8625','NAD27 to WGS 84 (72)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','2380',NULL,'EPSG','1241','EPSG','1735',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8626','NAD27 to WGS 84 (73)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1413',NULL,'EPSG','1241','EPSG','1746',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8627','NAD27 to WGS 84 (74)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1415',NULL,'EPSG','1241','EPSG','1736',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8628','NAD27 to WGS 84 (75)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1417',NULL,'EPSG','1241','EPSG','1747',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8629','NAD27 to WGS 84 (76)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1418',NULL,'EPSG','1241','EPSG','1738',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8630','NAD27 to WGS 84 (77)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','1419',NULL,'EPSG','1241','EPSG','1740',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8631','Garoua to WGS 84 (1)',NULL,NULL,'EPSG','4197','EPSG','4326','EPSG','2590',NULL,'EPSG','1805','EPSG','1240',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8632','Kousseri to WGS 84 (1)',NULL,NULL,'EPSG','4198','EPSG','4326','EPSG','2591',NULL,'EPSG','1806','EPSG','1240',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8633','Yoff to WGS 84 (1)',NULL,NULL,'EPSG','4310','EPSG','4326','EPSG','1207',NULL,'EPSG','1828','EPSG','1238',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8634','Beduaram to WGS 84 (1)',NULL,NULL,'EPSG','4213','EPSG','4326','EPSG','2771',NULL,'EPSG','1839','EPSG','1240',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8635','NAD27 to NAD83(CSRS) (3)',NULL,NULL,'EPSG','4267','EPSG','4617','EPSG','2376',NULL,'EPSG','1313','EPSG','1849',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8636','Carthage (Paris) to WGS 84 (1)',NULL,NULL,'EPSG','4816','EPSG','4326','EPSG','1618',NULL,'EPSG','1881','EPSG','1130',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8637','Lisbon (Lisbon) to WGS 84 (1)',NULL,NULL,'EPSG','4803','EPSG','4326','EPSG','1294',NULL,'EPSG','1756','EPSG','1944',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8638','Makassar (Jakarta) to WGS 84 (1)',NULL,NULL,'EPSG','4804','EPSG','4326','EPSG','1316',NULL,'EPSG','1260','EPSG','1837',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8639','NGO 1948 (Oslo) to WGS 84 (1)',NULL,NULL,'EPSG','4817','EPSG','4326','EPSG','1352',NULL,'EPSG','1762','EPSG','1654',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8640','Nord Sahara 1959 (Paris) to WGS 84 (1)',NULL,NULL,'EPSG','4819','EPSG','4326','EPSG','1026',NULL,'EPSG','1882','EPSG','1253',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8641','Segara (Jakarta) to WGS 84 (1)',NULL,NULL,'EPSG','4820','EPSG','4326','EPSG','1360',NULL,'EPSG','1883','EPSG','1897',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8642','S-JTSK (Ferro) to WGS 84 (1)',NULL,NULL,'EPSG','4818','EPSG','4326','EPSG','1079',NULL,'EPSG','1884','EPSG','1623',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8643','Greek to WGS 84 (1)',NULL,NULL,'EPSG','4120','EPSG','4326','EPSG','3254',NULL,'EPSG','1891','EPSG','1272',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8644','Greek (Athens) to WGS 84 (1)',NULL,NULL,'EPSG','4815','EPSG','4326','EPSG','3254',NULL,'EPSG','1761','EPSG','1891','EPSG','1272',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8645','MGI (Ferro) to WGS 84 (2)',NULL,NULL,'EPSG','4805','EPSG','4326','EPSG','1037',NULL,'EPSG','1757','EPSG','1618',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8646','Manoca 1962 to WGS 84 (1)',NULL,NULL,'EPSG','4193','EPSG','4326','EPSG','2555',NULL,'EPSG','1902','EPSG','1240',NULL,NULL,1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8647','NAD27 to WGS 84 (78)',NULL,NULL,'EPSG','4267','EPSG','4326','EPSG','2831',NULL,'EPSG','1313','EPSG','1950','EPSG','1946',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8648','Lisbon 1890 (Lisbon) to WGS 84 (1)',NULL,NULL,'EPSG','4904','EPSG','4326','EPSG','1294',NULL,'EPSG','1991','EPSG','1986',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8649','Lisbon 1890 (Lisbon) to WGS 84 (2)',NULL,NULL,'EPSG','4904','EPSG','4326','EPSG','1294',NULL,'EPSG','1991','EPSG','1990',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8650','Palestine 1923 to WGS 84 (2)',NULL,NULL,'EPSG','4281','EPSG','4326','EPSG','2603',NULL,'EPSG','1071','EPSG','1073',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8651','Vientiane 1982 to WGS 84 (1)',NULL,NULL,'EPSG','4676','EPSG','4326','EPSG','1138',NULL,'EPSG','1063','EPSG','1065',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8652','Lao 1993 to WGS 84 (1)',NULL,NULL,'EPSG','4677','EPSG','4326','EPSG','1138',NULL,'EPSG','1064','EPSG','1065',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8655','Manoca 1962 to WGS 84 (2)',NULL,NULL,'EPSG','4193','EPSG','4326','EPSG','2555',NULL,'EPSG','1902','EPSG','1240',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8656','Mhast (offshore) to WGS 84 (1)',NULL,NULL,'EPSG','4705','EPSG','4326','EPSG','3180',NULL,'EPSG','15790','EPSG','1240',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8657','Egypt Gulf of Suez S-650 TL to WGS 84 (1)',NULL,NULL,'EPSG','4706','EPSG','4326','EPSG','2341',NULL,'EPSG','15792','EPSG','1240',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8659','Kertau (RSO) to WGS 84 (1)',NULL,NULL,'EPSG','4751','EPSG','4326','EPSG','1309',NULL,'EPSG','15896','EPSG','1158',NULL,NULL,0); diff --git a/data/sql/conversion.sql b/data/sql/conversion.sql new file mode 100644 index 00000000..9557d90f --- /dev/null +++ b/data/sql/conversion.sql @@ -0,0 +1,2422 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +INSERT INTO "conversion" VALUES('EPSG','3811','Belgian Lambert 2008',NULL,NULL,'EPSG','1347','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',50.4752134,'EPSG','9110','EPSG','8822','Longitude of false origin',4.2133177,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',49.5,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',51.1,'EPSG','9110','EPSG','8826','Easting at false origin',649328.0,'EPSG','9001','EPSG','8827','Northing at false origin',665262.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3813','Mississippi Transverse Mercator',NULL,NULL,'EPSG','1393','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',32.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9998335,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',1300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3818','Taiwan 2-degree TM zone 119',NULL,NULL,'EPSG','3563','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',119.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3820','Taiwan 2-degree TM zone 121',NULL,NULL,'EPSG','3562','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',121.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3831','Pacific Disaster Center Mercator',NULL,NULL,'EPSG','3172','EPSG','9804','Mercator (variant A)','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',150.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3853','County ST74',NULL,NULL,'EPSG','3608','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',18.0328332,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99999506,'EPSG','9201','EPSG','8806','False easting',100182.7406,'EPSG','9001','EPSG','8807','False northing',-6500620.1207,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3856','Popular Visualisation Pseudo-Mercator',NULL,NULL,'EPSG','1262','EPSG','1024','Popular Visualisation Pseudo Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3860','Finland Gauss-Kruger zone 19',NULL,NULL,'EPSG','3595','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',19.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',19500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3861','Finland Gauss-Kruger zone 20',NULL,NULL,'EPSG','3596','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',20.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',20500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3862','Finland Gauss-Kruger zone 21',NULL,NULL,'EPSG','3597','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',21500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3863','Finland Gauss-Kruger zone 22',NULL,NULL,'EPSG','3598','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',22.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',22500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3864','Finland Gauss-Kruger zone 23',NULL,NULL,'EPSG','3599','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',23.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',23500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3865','Finland Gauss-Kruger zone 24',NULL,NULL,'EPSG','3600','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',24.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',24500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3866','Finland Gauss-Kruger zone 25',NULL,NULL,'EPSG','3601','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',25.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',25500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3867','Finland Gauss-Kruger zone 26',NULL,NULL,'EPSG','3602','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',26.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',26500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3868','Finland Gauss-Kruger zone 27',NULL,NULL,'EPSG','3603','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',27.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',27500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3869','Finland Gauss-Kruger zone 28',NULL,NULL,'EPSG','3604','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',28.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',28500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3870','Finland Gauss-Kruger zone 29',NULL,NULL,'EPSG','3605','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',29.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',29500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3871','Finland Gauss-Kruger zone 30',NULL,NULL,'EPSG','3606','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',30.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',30500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3872','Finland Gauss-Kruger zone 31',NULL,NULL,'EPSG','3607','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',31.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',31500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3897','US NSIDC Equal Area north projection',NULL,NULL,'EPSG','3475','EPSG','1027','Lambert Azimuthal Equal Area (Spherical)','EPSG','8801','Latitude of natural origin',90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3898','US NSIDC Equal Area south projection',NULL,NULL,'EPSG','3474','EPSG','1027','Lambert Azimuthal Equal Area (Spherical)','EPSG','8801','Latitude of natural origin',-90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3899','US National Atlas Equal Area',NULL,NULL,'EPSG','1245','EPSG','1027','Lambert Azimuthal Equal Area (Spherical)','EPSG','8801','Latitude of natural origin',45.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-100.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3967','Virginia Lambert Conic Conformal',NULL,NULL,'EPSG','1415','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-79.5,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',37.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',39.5,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3977','Canada Atlas Lambert',NULL,NULL,'EPSG','1061','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',49.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-95.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',49.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3980','Katanga Lambert',NULL,NULL,'EPSG','3147','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',9.0,'EPSG','9102','EPSG','8822','Longitude of false origin',26.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-6.5,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',-11.5,'EPSG','9102','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','3981','Katanga Gauss zone A',NULL,NULL,'EPSG','3612','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-9.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',30.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3982','Katanga Gauss zone B',NULL,NULL,'EPSG','3611','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-9.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',28.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3983','Katanga Gauss zone C',NULL,NULL,'EPSG','3610','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-9.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',26.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3984','Katanga Gauss zone D',NULL,NULL,'EPSG','3609','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-9.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',24.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','3999','Moldova Transverse Mercator',NULL,NULL,'EPSG','1162','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',28.24,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99994,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',-5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4085','World Equidistant Cylindrical',NULL,NULL,'EPSG','1262','EPSG','1028','Equidistant Cylindrical','EPSG','8823','Latitude of 1st standard parallel',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4086','World Equidistant Cylindrical (Sphere)',NULL,NULL,'EPSG','1262','EPSG','1029','Equidistant Cylindrical (Spherical)','EPSG','8823','Latitude of 1st standard parallel',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4089','DKTM1',NULL,NULL,'EPSG','3631','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',9.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99998,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',-5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4090','DKTM2',NULL,NULL,'EPSG','3632','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',10.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99998,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',-5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4091','DKTM3',NULL,NULL,'EPSG','2532','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',11.75,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99998,'EPSG','9201','EPSG','8806','False easting',600000.0,'EPSG','9001','EPSG','8807','False northing',-5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4092','DKTM4',NULL,NULL,'EPSG','2533','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',800000.0,'EPSG','9001','EPSG','8807','False northing',-5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4101','BLM zone 1N (US survey feet)',NULL,NULL,'EPSG','3374','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-177.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4102','BLM zone 2N (US survey feet)',NULL,NULL,'EPSG','3375','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-171.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4103','BLM zone 3N (US survey feet)',NULL,NULL,'EPSG','2133','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-165.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4104','BLM zone 4N (US survey feet)',NULL,NULL,'EPSG','2134','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-159.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4105','BLM zone 5N (US survey feet)',NULL,NULL,'EPSG','2135','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-153.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4106','BLM zone 6N (US survey feet)',NULL,NULL,'EPSG','2136','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-147.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4107','BLM zone 7N (US survey feet)',NULL,NULL,'EPSG','3494','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-141.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4108','BLM zone 8N (US survey feet)',NULL,NULL,'EPSG','3495','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-135.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4109','BLM zone 9N (US survey feet)',NULL,NULL,'EPSG','3496','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-129.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4110','BLM zone 10N (US survey feet)',NULL,NULL,'EPSG','3497','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-123.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4111','BLM zone 11N (US survey feet)',NULL,NULL,'EPSG','3498','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-117.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4112','BLM zone 12N (US survey feet)',NULL,NULL,'EPSG','3499','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-111.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4113','BLM zone 13N (US survey feet)',NULL,NULL,'EPSG','3500','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-105.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4114','Johor Cassini Grid',NULL,NULL,'EPSG','3376','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',2.02333,'EPSG','9110','EPSG','8802','Longitude of natural origin',103.334593,'EPSG','9110','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4115','Sembilan and Melaka Cassini Grid',NULL,NULL,'EPSG','3377','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',2.424422,'EPSG','9110','EPSG','8802','Longitude of natural origin',101.56282,'EPSG','9110','EPSG','8806','False easting',-242.005,'EPSG','9001','EPSG','8807','False northing',-948.547,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4116','Pahang Cassini Grid',NULL,NULL,'EPSG','3378','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',3.42395,'EPSG','9110','EPSG','8802','Longitude of natural origin',102.261024,'EPSG','9110','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4117','Selangor Cassini Grid',NULL,NULL,'EPSG','3379','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',3.404924,'EPSG','9110','EPSG','8802','Longitude of natural origin',101.302968,'EPSG','9110','EPSG','8806','False easting',-21759.438,'EPSG','9001','EPSG','8807','False northing',55960.906,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4118','BLM zone 18N (US survey feet)',NULL,NULL,'EPSG','3505','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-75.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4119','BLM zone 19N (US survey feet)',NULL,NULL,'EPSG','3506','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-69.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4177','Terengganu Cassini Grid',NULL,NULL,'EPSG','3380','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',4.564611,'EPSG','9110','EPSG','8802','Longitude of natural origin',102.534275,'EPSG','9110','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4186','BLM zone 59N (US survey feet)',NULL,NULL,'EPSG','3372','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',171.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4187','BLM zone 60N (US survey feet)',NULL,NULL,'EPSG','3373','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',177.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4305','Pinang Cassini Grid',NULL,NULL,'EPSG','3381','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',5.251677,'EPSG','9110','EPSG','8802','Longitude of natural origin',100.204513,'EPSG','9110','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4320','Kedah and Perlis Cassini Grid',NULL,NULL,'EPSG','3382','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',5.575453,'EPSG','9110','EPSG','8802','Longitude of natural origin',100.381534,'EPSG','9110','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4321','Perak Revised Cassini Grid',NULL,NULL,'EPSG','3383','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',4.513377,'EPSG','9110','EPSG','8802','Longitude of natural origin',100.490036,'EPSG','9110','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',133453.669,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4323','Kelantan Cassini Grid',NULL,NULL,'EPSG','3384','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',5.533812,'EPSG','9110','EPSG','8802','Longitude of natural origin',102.103825,'EPSG','9110','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4325','Guam Map Grid',NULL,NULL,'EPSG','3255','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',13.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',144.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4416','Katanga Lambert',NULL,NULL,'EPSG','3147','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-9.0,'EPSG','9102','EPSG','8822','Longitude of false origin',26.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-6.5,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',-11.5,'EPSG','9102','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4436','Pennsylvania CS27 South zone',NULL,NULL,'EPSG','2246','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',39.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-77.45,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',40.58,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',39.56,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4454','New York CS27 Long Island zone',NULL,NULL,'EPSG','2235','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',40.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-74.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.02,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.4,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',100000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4460','Australian Centre for Remote Sensing Lambert Conformal Projection',NULL,NULL,'EPSG','2575','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-27.0,'EPSG','9102','EPSG','8822','Longitude of false origin',132.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-18.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',-36.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4648','UTM zone 32N with prefix',NULL,NULL,'EPSG','2861','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',9.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',32500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4825','Cape Verde National',NULL,NULL,'EPSG','1062','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',15.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-24.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',15.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',16.4,'EPSG','9110','EPSG','8826','Easting at false origin',161587.83,'EPSG','9001','EPSG','8827','Northing at false origin',128511.202,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4838','LCC Germany',NULL,NULL,'EPSG','3339','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',51.0,'EPSG','9102','EPSG','8822','Longitude of false origin',10.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',48.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',53.4,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','4841','Norway TM zone 15',NULL,NULL,'EPSG','3656','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',15.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','4842','Norway TM zone 16',NULL,NULL,'EPSG','3657','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',16.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','4843','Norway TM zone 17',NULL,NULL,'EPSG','3658','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',17.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','4844','Norway TM zone 18',NULL,NULL,'EPSG','3660','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',18.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','4845','Norway TM zone 5',NULL,NULL,'EPSG','3636','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',5.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','4846','Norway TM zone 6',NULL,NULL,'EPSG','3639','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',6.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','4847','Norway TM zone 7',NULL,NULL,'EPSG','3647','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',7.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','4848','Norway TM zone 8',NULL,NULL,'EPSG','3648','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',8.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','4849','Norway TM zone 9',NULL,NULL,'EPSG','3649','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',9.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','4850','Norway TM zone 10',NULL,NULL,'EPSG','3650','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',10.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','4851','Norway TM zone 11',NULL,NULL,'EPSG','3651','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',11.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','4852','Norway TM zone 12',NULL,NULL,'EPSG','3653','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',12.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','4853','Norway TM zone 13',NULL,NULL,'EPSG','3654','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',13.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','4854','Norway TM zone 14',NULL,NULL,'EPSG','3655','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',14.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','4881','Norway TM zone 19',NULL,NULL,'EPSG','3661','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',19.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','5000','Norway TM zone 20',NULL,NULL,'EPSG','3662','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',20.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','5001','Norway TM zone 21',NULL,NULL,'EPSG','3663','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',21.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','5002','Norway TM zone 22',NULL,NULL,'EPSG','3665','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',22.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','5003','Norway TM zone 23',NULL,NULL,'EPSG','3667','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',23.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','5004','Norway TM zone 24',NULL,NULL,'EPSG','3668','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',24.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','5005','Norway TM zone 25',NULL,NULL,'EPSG','3669','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',25.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','5006','Norway TM zone 26',NULL,NULL,'EPSG','3671','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',26.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','5007','Norway TM zone 27',NULL,NULL,'EPSG','3672','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',27.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','5008','Norway TM zone 28',NULL,NULL,'EPSG','3673','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',28.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','5009','Norway TM zone 29',NULL,NULL,'EPSG','3674','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',29.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','5010','Norway TM zone 30',NULL,NULL,'EPSG','3676','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',30.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','5019','Portugal Bonne New',NULL,NULL,'EPSG','1294','EPSG','9828','Bonne (South Orientated)','EPSG','8801','Latitude of natural origin',39.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-8.0754862,'EPSG','9110','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5020','Portuguese Grid New',NULL,NULL,'EPSG','1294','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-8.0754862,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5049','Korea East Sea Belt',NULL,NULL,'EPSG','3727','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',131.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5068','Conus Albers',NULL,NULL,'EPSG','1323','EPSG','9822','Albers Equal Area','EPSG','8821','Latitude of false origin',23.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-96.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',29.3,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',45.3,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5100','Korea Unified Belt',NULL,NULL,'EPSG','1135','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',127.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',2000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5101','Korea West Belt 2010',NULL,NULL,'EPSG','1498','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',125.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',600000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5102','Korea Central Belt 2010',NULL,NULL,'EPSG','1497','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',127.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',600000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5103','Korea East Belt 2010',NULL,NULL,'EPSG','1496','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',129.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',600000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5104','Korea East Sea Belt 2010',NULL,NULL,'EPSG','3720','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',131.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',600000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5131','Korea Central Belt Jeju',NULL,NULL,'EPSG','3721','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',127.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',550000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5135','Norway TM zone 5',NULL,NULL,'EPSG','3636','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',5.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5136','Norway TM zone 6',NULL,NULL,'EPSG','3639','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',6.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5137','Norway TM zone 7',NULL,NULL,'EPSG','3647','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',7.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5138','Norway TM zone 8',NULL,NULL,'EPSG','3648','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',8.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5139','Norway TM zone 9',NULL,NULL,'EPSG','3649','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',9.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5140','Norway TM zone 10',NULL,NULL,'EPSG','3650','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',10.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5141','Norway TM zone 11',NULL,NULL,'EPSG','3651','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',11.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5142','Norway TM zone 12',NULL,NULL,'EPSG','3653','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',12.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5143','Norway TM zone 13',NULL,NULL,'EPSG','3654','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',13.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5144','Norway TM zone 14',NULL,NULL,'EPSG','3655','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',14.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5145','Norway TM zone 15',NULL,NULL,'EPSG','3656','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',15.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5146','Norway TM zone 16',NULL,NULL,'EPSG','3657','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',16.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5147','Norway TM zone 17',NULL,NULL,'EPSG','3658','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',17.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5148','Norway TM zone 18',NULL,NULL,'EPSG','3660','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',18.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5149','Norway TM zone 19',NULL,NULL,'EPSG','3661','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',19.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5150','Norway TM zone 20',NULL,NULL,'EPSG','3662','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',20.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5151','Norway TM zone 21',NULL,NULL,'EPSG','3663','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',21.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5152','Norway TM zone 22',NULL,NULL,'EPSG','3665','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',22.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5153','Norway TM zone 23',NULL,NULL,'EPSG','3667','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',23.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5154','Norway TM zone 24',NULL,NULL,'EPSG','3668','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',24.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5155','Norway TM zone 25',NULL,NULL,'EPSG','3669','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',25.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5156','Norway TM zone 26',NULL,NULL,'EPSG','3671','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',26.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5157','Norway TM zone 27',NULL,NULL,'EPSG','3672','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',27.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5158','Norway TM zone 28',NULL,NULL,'EPSG','3673','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',28.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5159','Norway TM zone 29',NULL,NULL,'EPSG','3674','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',29.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5160','Norway TM zone 30',NULL,NULL,'EPSG','3676','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',30.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5161','Korea Modified West Belt',NULL,NULL,'EPSG','1498','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',125.0010405,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5162','Korea Modified Central Belt',NULL,NULL,'EPSG','1497','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',127.0010405,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5163','Korea Modified Central Belt Jeju',NULL,NULL,'EPSG','3721','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',127.0010405,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',550000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5164','Korea Modified East Belt',NULL,NULL,'EPSG','1496','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',129.0010405,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5165','Korea Modified East Sea Belt',NULL,NULL,'EPSG','3720','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',131.0010405,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5218','Krovak East North',NULL,NULL,'EPSG','1306','EPSG','1041','Krovak (North Orientated)','EPSG','8811','Latitude of projection centre',49.3,'EPSG','9110','EPSG','8833','Longitude of origin',42.3,'EPSG','9110','EPSG','1036','Co-latitude of cone axis',30.171730311,'EPSG','9110','EPSG','8818','Latitude of pseudo standard parallel',78.3,'EPSG','9110','EPSG','8819','Scale factor on pseudo standard parallel',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','5219','Modified Krovak',NULL,NULL,'EPSG','1079','EPSG','1042','Krovak Modified','EPSG','8811','Latitude of projection centre',49.3,'EPSG','9110','EPSG','8833','Longitude of origin',42.3,'EPSG','9110','EPSG','1036','Co-latitude of cone axis',30.1717303,'EPSG','9110','EPSG','8818','Latitude of pseudo standard parallel',78.3,'EPSG','9110','EPSG','8819','Scale factor on pseudo standard parallel',0.9999,'EPSG','9201','EPSG','8806','False easting',5000000.0,'EPSG','9001','EPSG','8807','False northing',5000000.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','5220','Modified Krovak East North',NULL,NULL,'EPSG','1079','EPSG','1043','Krovak Modified (North Orientated)','EPSG','8811','Latitude of projection centre',49.3,'EPSG','9110','EPSG','8833','Longitude of origin',42.3,'EPSG','9110','EPSG','1036','Co-latitude of cone axis',30.1717303,'EPSG','9110','EPSG','8818','Latitude of pseudo standard parallel',78.3,'EPSG','9110','EPSG','8819','Scale factor on pseudo standard parallel',0.9999,'EPSG','9201','EPSG','8806','False easting',5000000.0,'EPSG','9001','EPSG','8807','False northing',5000000.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','5222','Gabon Transverse Mercator',NULL,NULL,'EPSG','3249','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',12.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5231','Sri Lanka Grid',NULL,NULL,'EPSG','3310','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',7.0001729,'EPSG','9110','EPSG','8802','Longitude of natural origin',80.461816,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999238418,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5232','Sri Lanka Grid 1999',NULL,NULL,'EPSG','3310','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',7.00016975,'EPSG','9110','EPSG','8802','Longitude of natural origin',80.46181671,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999238418,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5265','Bhutan National Grid',NULL,NULL,'EPSG','1048','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',90.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5268','Bumthang TM',NULL,NULL,'EPSG','3734','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',90.44,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5276','Chhukha TM',NULL,NULL,'EPSG','3737','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',89.33,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5277','Dagana TM',NULL,NULL,'EPSG','3738','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',89.51,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5278','Gasa TM',NULL,NULL,'EPSG','3740','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',90.02,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5279','Ha TM',NULL,NULL,'EPSG','3742','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',90.09,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5280','Lhuentse TM',NULL,NULL,'EPSG','3743','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',91.08,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5281','Mongar TM',NULL,NULL,'EPSG','3745','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',91.14,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5282','Paro TM',NULL,NULL,'EPSG','3746','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',89.21,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5283','Pemagatshel TM',NULL,NULL,'EPSG','3747','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',91.21,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5284','Tsirang TM',NULL,NULL,'EPSG','3757','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',90.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5285','Samdrup Jongkhar TM',NULL,NULL,'EPSG','3750','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',91.34,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5286','Samtse TM',NULL,NULL,'EPSG','3751','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',89.04,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5287','Sarpang TM',NULL,NULL,'EPSG','3752','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',90.16,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5288','Wangdue Phodrang TM',NULL,NULL,'EPSG','3758','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',90.07,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5289','Trashigang TM',NULL,NULL,'EPSG','3754','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',91.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5290','Trongsa TM',NULL,NULL,'EPSG','3755','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',90.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5291','Zhemgang TM',NULL,NULL,'EPSG','3761','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',90.52,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5312','Thimphu TM',NULL,NULL,'EPSG','3753','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',89.33,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5313','Punakha TM',NULL,NULL,'EPSG','3749','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',89.51,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5314','Yangtse TM',NULL,NULL,'EPSG','3760','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',91.34,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',-2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5315','Faroe Transverse Mercator',NULL,NULL,'EPSG','1093','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-7.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.999997,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',-6000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5319','Teranet Ontario Lambert',NULL,NULL,'EPSG','1367','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',0.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-84.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',44.3,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',54.3,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5326','Iceland Lambert 2004',NULL,NULL,'EPSG','1120','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',65.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-19.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',64.15,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',65.45,'EPSG','9110','EPSG','8826','Easting at false origin',1700000.0,'EPSG','9001','EPSG','8827','Northing at false origin',300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5328','Netherlands East Indies Equatorial Zone (Jkt)',NULL,NULL,'EPSG','4020','EPSG','9804','Mercator (variant A)','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',3.113221,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.997,'EPSG','9201','EPSG','8806','False easting',3900000.0,'EPSG','9001','EPSG','8807','False northing',900000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5366','Costa Rica TM 2005',NULL,NULL,'EPSG','3849','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-84.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5390','Costa Rica Norte',NULL,NULL,'EPSG','3869','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',10.28,'EPSG','9110','EPSG','8802','Longitude of natural origin',-84.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99995696,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',271820.522,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5394','Costa Rica Sur',NULL,NULL,'EPSG','3870','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',9.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-83.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99995696,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',327987.436,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5397','Honduras Norte',NULL,NULL,'EPSG','3848','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',15.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99993273,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',296917.439,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5398','Honduras Sur',NULL,NULL,'EPSG','3850','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',13.47,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999514,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',296215.903,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5399','El Salvador Lambert',NULL,NULL,'EPSG','3243','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',13.47,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99996704,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',295809.184,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5439','Nicaragua Norte',NULL,NULL,'EPSG','3844','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',13.52,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99990314,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',359891.816,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5444','Nicaragua Sur',NULL,NULL,'EPSG','3847','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',11.44,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99992228,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',288876.327,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5465','Belize Colony Grid',NULL,NULL,'EPSG','3219','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',17.0340471,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.3754687,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',217259.26,'EPSG','9005','EPSG','8807','False northing',445474.83,'EPSG','9005',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5468','Panama Lambert',NULL,NULL,'EPSG','3290','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',8.25,'EPSG','9110','EPSG','8802','Longitude of natural origin',-80.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99989909,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',294865.303,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5471','Panama Polyconic',NULL,NULL,'EPSG','3290','EPSG','9818','American Polyconic','EPSG','8801','Latitude of natural origin',8.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-81.0,'EPSG','9110','EPSG','8806','False easting',1000000.0,'EPSG','9037','EPSG','8807','False northing',1092972.1,'EPSG','9037',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5475','McMurdo Sound Lambert Conformal 2000',NULL,NULL,'EPSG','3853','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-78.0,'EPSG','9110','EPSG','8822','Longitude of false origin',163.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',-76.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-79.2,'EPSG','9110','EPSG','8826','Easting at false origin',7000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5476','Borchgrevink Coast Lambert Conformal 2000',NULL,NULL,'EPSG','3854','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-74.3,'EPSG','9110','EPSG','8822','Longitude of false origin',165.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',-73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',5000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',3000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5477','Pennell Coast Lambert Conformal 2000',NULL,NULL,'EPSG','3855','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-71.3,'EPSG','9110','EPSG','8822','Longitude of false origin',166.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',-70.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-72.2,'EPSG','9110','EPSG','8826','Easting at false origin',3000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5478','Ross Sea Polar Stereographic 2000',NULL,NULL,'EPSG','3856','EPSG','9810','Polar Stereographic (variant A)','EPSG','8801','Latitude of natural origin',-90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',180.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.994,'EPSG','9201','EPSG','8806','False easting',5000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5509','Krovak (Greenwich)',NULL,NULL,'EPSG','1306','EPSG','9819','Krovak','EPSG','8811','Latitude of projection centre',49.3,'EPSG','9110','EPSG','8833','Longitude of origin',24.5,'EPSG','9110','EPSG','1036','Co-latitude of cone axis',30.171730311,'EPSG','9110','EPSG','8818','Latitude of pseudo standard parallel',78.3,'EPSG','9110','EPSG','8819','Scale factor on pseudo standard parallel',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','5510','Krovak East North (Greenwich)',NULL,NULL,'EPSG','1306','EPSG','1041','Krovak (North Orientated)','EPSG','8811','Latitude of projection centre',49.3,'EPSG','9110','EPSG','8833','Longitude of origin',24.5,'EPSG','9110','EPSG','1036','Co-latitude of cone axis',30.171730311,'EPSG','9110','EPSG','8818','Latitude of pseudo standard parallel',78.3,'EPSG','9110','EPSG','8819','Scale factor on pseudo standard parallel',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','5511','Modified Krovak (Greenwich)',NULL,NULL,'EPSG','1079','EPSG','1042','Krovak Modified','EPSG','8811','Latitude of projection centre',49.3,'EPSG','9110','EPSG','8833','Longitude of origin',24.5,'EPSG','9110','EPSG','1036','Co-latitude of cone axis',30.1717303,'EPSG','9110','EPSG','8818','Latitude of pseudo standard parallel',78.3,'EPSG','9110','EPSG','8819','Scale factor on pseudo standard parallel',0.9999,'EPSG','9201','EPSG','8806','False easting',5000000.0,'EPSG','9001','EPSG','8807','False northing',5000000.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','5512','Modified Krovak East North (Greenwich)',NULL,NULL,'EPSG','1079','EPSG','1043','Krovak Modified (North Orientated)','EPSG','8811','Latitude of projection centre',49.3,'EPSG','9110','EPSG','8833','Longitude of origin',24.5,'EPSG','9110','EPSG','1036','Co-latitude of cone axis',30.1717303,'EPSG','9110','EPSG','8818','Latitude of pseudo standard parallel',78.3,'EPSG','9110','EPSG','8819','Scale factor on pseudo standard parallel',0.9999,'EPSG','9201','EPSG','8806','False easting',5000000.0,'EPSG','9001','EPSG','8807','False northing',5000000.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','5517','Chatham Islands Map Grid',NULL,NULL,'EPSG','2889','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-44.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-176.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',350000.0,'EPSG','9001','EPSG','8807','False northing',650000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5522','Gabon Transverse Mercator 2011',NULL,NULL,'EPSG','1100','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',11.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1500000.0,'EPSG','9001','EPSG','8807','False northing',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5547','Papua New Guinea Map Grid 1994 zone 54',NULL,NULL,'EPSG','3882','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',141.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5548','Papua New Guinea Map Grid 1994 zone 55',NULL,NULL,'EPSG','3885','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',147.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5549','Papua New Guinea Map Grid 1994 zone 56',NULL,NULL,'EPSG','3885','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',153.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5587','New Brunswick Stereographic (NAD27)',NULL,NULL,'EPSG','1447','EPSG','9809','Oblique Stereographic','EPSG','8801','Latitude of natural origin',46.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-66.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999912,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9002','EPSG','8807','False northing',1000000.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5595','Fehmarnbelt TM',NULL,NULL,'EPSG','3889','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',11.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5640','Petrobras Mercator',NULL,NULL,'EPSG','3896','EPSG','9805','Mercator (variant B)','EPSG','8823','Latitude of 1st standard parallel',-2.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-43.0,'EPSG','9102','EPSG','8806','False easting',5000000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5642','Southern Permian Basin Atlas Lambert',NULL,NULL,'EPSG','3899','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',48.0,'EPSG','9102','EPSG','8822','Longitude of false origin',10.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',52.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',54.2,'EPSG','9110','EPSG','8826','Easting at false origin',815000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5645','SPCS83 Vermont zone (US Survey feet)',NULL,NULL,'EPSG','1414','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-72.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999964286,'EPSG','9201','EPSG','8806','False easting',1640416.6667,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5647','UTM zone 31N with prefix',NULL,NULL,'EPSG','2860','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',3.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',31500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5648','UTM zone 33N with prefix',NULL,NULL,'EPSG','2862','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',33500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5658','TM Emilia-Romagna',NULL,NULL,'EPSG','4035','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',9.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500053.0,'EPSG','9001','EPSG','8807','False northing',-3999820.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5824','ACT Standard Grid',NULL,NULL,'EPSG','2283','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-35.19038506,'EPSG','9110','EPSG','8802','Longitude of natural origin',149.003346139,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000086,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',600000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5883','Tonga Map Grid',NULL,NULL,'EPSG','1234','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-177.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1500000.0,'EPSG','9001','EPSG','8807','False northing',5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5889','JAXA Snow Depth Polar Stereographic North',NULL,NULL,'EPSG','1996','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',70.0,'EPSG','9102','EPSG','8833','Longitude of origin',90.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5892','Vietnam TM-3 zone 481',NULL,NULL,'EPSG','4193','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',102.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5893','Vietnam TM-3 zone 482',NULL,NULL,'EPSG','4215','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',105.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5894','Vietnam TM-3 zone 491',NULL,NULL,'EPSG','4217','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',108.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5895','Vietnam TM-3 Da Nang zone',NULL,NULL,'EPSG','4218','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',107.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5901','EPSG Alaska Polar Stereographic',NULL,NULL,'EPSG','1996','EPSG','9810','Polar Stereographic (variant A)','EPSG','8801','Latitude of natural origin',90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-150.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.994,'EPSG','9201','EPSG','8806','False easting',2000000.0,'EPSG','9001','EPSG','8807','False northing',2000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5902','EPSG Canada Polar Stereographic',NULL,NULL,'EPSG','1996','EPSG','9810','Polar Stereographic (variant A)','EPSG','8801','Latitude of natural origin',90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-100.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.994,'EPSG','9201','EPSG','8806','False easting',2000000.0,'EPSG','9001','EPSG','8807','False northing',2000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5903','EPSG Greenland Polar Stereographic',NULL,NULL,'EPSG','1996','EPSG','9810','Polar Stereographic (variant A)','EPSG','8801','Latitude of natural origin',90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-33.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.994,'EPSG','9201','EPSG','8806','False easting',2000000.0,'EPSG','9001','EPSG','8807','False northing',2000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5904','EPSG Norway Polar Stereographic',NULL,NULL,'EPSG','1996','EPSG','9810','Polar Stereographic (variant A)','EPSG','8801','Latitude of natural origin',90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',18.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.994,'EPSG','9201','EPSG','8806','False easting',2000000.0,'EPSG','9001','EPSG','8807','False northing',2000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5905','EPSG Russia Polar Stereographic',NULL,NULL,'EPSG','1996','EPSG','9810','Polar Stereographic (variant A)','EPSG','8801','Latitude of natural origin',90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',105.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.994,'EPSG','9201','EPSG','8806','False easting',2000000.0,'EPSG','9001','EPSG','8807','False northing',2000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5906','EPSG Arctic Regional LCC zone A1',NULL,NULL,'EPSG','4019','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',81.19020136,'EPSG','9110','EPSG','8822','Longitude of false origin',-111.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',85.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5907','EPSG Arctic Regional LCC zone A2',NULL,NULL,'EPSG','4027','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',81.19020136,'EPSG','9110','EPSG','8822','Longitude of false origin',-39.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',85.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5908','EPSG Arctic Regional LCC zone A3',NULL,NULL,'EPSG','4028','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',81.19020136,'EPSG','9110','EPSG','8822','Longitude of false origin',33.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',85.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5909','EPSG Arctic Regional LCC zone A4',NULL,NULL,'EPSG','4029','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',81.19020136,'EPSG','9110','EPSG','8822','Longitude of false origin',105.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',85.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5910','EPSG Arctic Regional LCC zone A5',NULL,NULL,'EPSG','4031','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',81.19020136,'EPSG','9110','EPSG','8822','Longitude of false origin',177.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',85.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5911','EPSG Arctic Regional LCC zone B1',NULL,NULL,'EPSG','4032','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',73.09206671,'EPSG','9110','EPSG','8822','Longitude of false origin',-111.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',69.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5912','EPSG Arctic Regional LCC zone B2',NULL,NULL,'EPSG','4033','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',73.09206671,'EPSG','9110','EPSG','8822','Longitude of false origin',-39.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',69.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5913','EPSG Arctic Regional LCC zone B3',NULL,NULL,'EPSG','4034','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',73.09206671,'EPSG','9110','EPSG','8822','Longitude of false origin',33.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',69.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5914','EPSG Arctic Regional LCC zone B4',NULL,NULL,'EPSG','4037','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',73.09206671,'EPSG','9110','EPSG','8822','Longitude of false origin',105.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',69.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5915','EPSG Arctic Regional LCC zone B5',NULL,NULL,'EPSG','4038','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',73.09206671,'EPSG','9110','EPSG','8822','Longitude of false origin',177.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',69.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5916','EPSG Arctic Regional LCC zone C1',NULL,NULL,'EPSG','4040','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',65.06045752,'EPSG','9110','EPSG','8822','Longitude of false origin',-111.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',69.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',61.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5917','EPSG Arctic Regional LCC zone C2',NULL,NULL,'EPSG','4041','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',65.06045752,'EPSG','9110','EPSG','8822','Longitude of false origin',-39.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',69.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',61.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5918','EPSG Arctic Regional LCC zone C3',NULL,NULL,'EPSG','4042','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',65.06045752,'EPSG','9110','EPSG','8822','Longitude of false origin',33.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',69.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',61.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5919','EPSG Arctic Regional LCC zone C4',NULL,NULL,'EPSG','4043','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',65.06045752,'EPSG','9110','EPSG','8822','Longitude of false origin',105.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',69.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',61.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5920','EPSG Arctic Regional LCC zone C5',NULL,NULL,'EPSG','4045','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',65.06045752,'EPSG','9110','EPSG','8822','Longitude of false origin',177.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',69.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',61.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5943','EPSG Arctic LCC zone 8-20',NULL,NULL,'EPSG','4123','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',62.00551048,'EPSG','9110','EPSG','8822','Longitude of false origin',-52.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',63.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',60.2,'EPSG','9110','EPSG','8826','Easting at false origin',20500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',8500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5944','EPSG Arctic LCC zone 8-22',NULL,NULL,'EPSG','4124','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',62.00551048,'EPSG','9110','EPSG','8822','Longitude of false origin',-37.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',63.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',60.2,'EPSG','9110','EPSG','8826','Easting at false origin',22500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',8500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5977','EPSG Arctic LCC zone 1-21',NULL,NULL,'EPSG','4044','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',85.2613626,'EPSG','9110','EPSG','8822','Longitude of false origin',-150.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',87.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',83.4,'EPSG','9110','EPSG','8826','Easting at false origin',21500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5978','EPSG Arctic LCC zone 1-23',NULL,NULL,'EPSG','4047','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',85.2613626,'EPSG','9110','EPSG','8822','Longitude of false origin',-90.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',87.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',83.4,'EPSG','9110','EPSG','8826','Easting at false origin',23500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5979','EPSG Arctic LCC zone 1-25',NULL,NULL,'EPSG','4048','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',85.2613626,'EPSG','9110','EPSG','8822','Longitude of false origin',-30.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',87.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',83.4,'EPSG','9110','EPSG','8826','Easting at false origin',25500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5980','EPSG Arctic LCC zone 1-27',NULL,NULL,'EPSG','4049','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',85.2613626,'EPSG','9110','EPSG','8822','Longitude of false origin',30.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',87.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',83.4,'EPSG','9110','EPSG','8826','Easting at false origin',27500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5981','EPSG Arctic LCC zone 1-29',NULL,NULL,'EPSG','4050','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',85.2613626,'EPSG','9110','EPSG','8822','Longitude of false origin',90.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',87.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',83.4,'EPSG','9110','EPSG','8826','Easting at false origin',29500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5982','EPSG Arctic LCC zone 1-31',NULL,NULL,'EPSG','4051','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',85.2613626,'EPSG','9110','EPSG','8822','Longitude of false origin',150.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',87.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',83.4,'EPSG','9110','EPSG','8826','Easting at false origin',31500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5983','EPSG Arctic LCC zone 2-10',NULL,NULL,'EPSG','4057','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',82.03303296,'EPSG','9110','EPSG','8822','Longitude of false origin',166.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',83.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',80.2,'EPSG','9110','EPSG','8826','Easting at false origin',10500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5984','EPSG Arctic LCC zone 2-12',NULL,NULL,'EPSG','4052','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',82.03303296,'EPSG','9110','EPSG','8822','Longitude of false origin',-154.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',83.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',80.2,'EPSG','9110','EPSG','8826','Easting at false origin',12500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5985','EPSG Arctic LCC zone 2-14',NULL,NULL,'EPSG','4030','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',82.03303296,'EPSG','9110','EPSG','8822','Longitude of false origin',-115.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',83.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',80.2,'EPSG','9110','EPSG','8826','Easting at false origin',14500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5986','EPSG Arctic LCC zone 2-16',NULL,NULL,'EPSG','4036','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',82.03303296,'EPSG','9110','EPSG','8822','Longitude of false origin',-75.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',83.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',80.2,'EPSG','9110','EPSG','8826','Easting at false origin',16500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5987','EPSG Arctic LCC zone 2-18',NULL,NULL,'EPSG','4039','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',82.03303296,'EPSG','9110','EPSG','8822','Longitude of false origin',-52.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',83.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',80.2,'EPSG','9110','EPSG','8826','Easting at false origin',18500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5988','EPSG Arctic LCC zone 2-20',NULL,NULL,'EPSG','4046','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',82.03303296,'EPSG','9110','EPSG','8822','Longitude of false origin',-12.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',83.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',80.2,'EPSG','9110','EPSG','8826','Easting at false origin',20500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5989','EPSG Arctic LCC zone 2-22',NULL,NULL,'EPSG','4053','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',82.03303296,'EPSG','9110','EPSG','8822','Longitude of false origin',16.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',83.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',80.2,'EPSG','9110','EPSG','8826','Easting at false origin',22500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5990','EPSG Arctic LCC zone 2-24',NULL,NULL,'EPSG','4054','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',82.03303296,'EPSG','9110','EPSG','8822','Longitude of false origin',53.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',83.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',80.2,'EPSG','9110','EPSG','8826','Easting at false origin',24500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5991','EPSG Arctic LCC zone 2-26',NULL,NULL,'EPSG','4055','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',82.03303296,'EPSG','9110','EPSG','8822','Longitude of false origin',93.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',83.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',80.2,'EPSG','9110','EPSG','8826','Easting at false origin',26500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5992','EPSG Arctic LCC zone 2-28',NULL,NULL,'EPSG','4056','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',82.03303296,'EPSG','9110','EPSG','8822','Longitude of false origin',133.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',83.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',80.2,'EPSG','9110','EPSG','8826','Easting at false origin',28500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5993','EPSG Arctic LCC zone 3-11',NULL,NULL,'EPSG','4058','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',78.42264151,'EPSG','9110','EPSG','8822','Longitude of false origin',21.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',80.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9110','EPSG','8826','Easting at false origin',11500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',3500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5994','EPSG Arctic LCC zone 3-13',NULL,NULL,'EPSG','4059','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',78.42264151,'EPSG','9110','EPSG','8822','Longitude of false origin',52.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',80.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9110','EPSG','8826','Easting at false origin',13500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',3500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5995','EPSG Arctic LCC zone 3-15',NULL,NULL,'EPSG','4060','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',78.42264151,'EPSG','9110','EPSG','8822','Longitude of false origin',83.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',80.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9110','EPSG','8826','Easting at false origin',15500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',3500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5996','EPSG Arctic LCC zone 3-17',NULL,NULL,'EPSG','4061','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',78.42264151,'EPSG','9110','EPSG','8822','Longitude of false origin',114.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',80.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9110','EPSG','8826','Easting at false origin',17500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',3500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5997','EPSG Arctic LCC zone 3-19',NULL,NULL,'EPSG','4062','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',78.42264151,'EPSG','9110','EPSG','8822','Longitude of false origin',145.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',80.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9110','EPSG','8826','Easting at false origin',19500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',3500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5998','EPSG Arctic LCC zone 3-21',NULL,NULL,'EPSG','4063','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',78.42264151,'EPSG','9110','EPSG','8822','Longitude of false origin',176.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',80.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9110','EPSG','8826','Easting at false origin',21500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',3500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','5999','EPSG Arctic LCC zone 3-23',NULL,NULL,'EPSG','4064','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',78.42264151,'EPSG','9110','EPSG','8822','Longitude of false origin',-153.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',80.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9110','EPSG','8826','Easting at false origin',23500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',3500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6000','EPSG Arctic LCC zone 3-25',NULL,NULL,'EPSG','4065','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',78.42264151,'EPSG','9110','EPSG','8822','Longitude of false origin',-129.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',80.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9110','EPSG','8826','Easting at false origin',25500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',3500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6001','EPSG Arctic LCC zone 3-27',NULL,NULL,'EPSG','4070','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',78.42264151,'EPSG','9110','EPSG','8822','Longitude of false origin',-99.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',80.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9110','EPSG','8826','Easting at false origin',27500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',3500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6002','EPSG Arctic LCC zone 3-29',NULL,NULL,'EPSG','4071','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',78.42264151,'EPSG','9110','EPSG','8822','Longitude of false origin',-69.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',80.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9110','EPSG','8826','Easting at false origin',29500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',3500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6003','EPSG Arctic LCC zone 3-31',NULL,NULL,'EPSG','4074','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',78.42264151,'EPSG','9110','EPSG','8822','Longitude of false origin',-39.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',80.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9110','EPSG','8826','Easting at false origin',31500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',3500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6004','EPSG Arctic LCC zone 3-33',NULL,NULL,'EPSG','4075','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',78.42264151,'EPSG','9110','EPSG','8822','Longitude of false origin',-10.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',80.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9110','EPSG','8826','Easting at false origin',33500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',3500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6005','EPSG Arctic LCC zone 4-12',NULL,NULL,'EPSG','4076','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',75.21518519,'EPSG','9110','EPSG','8822','Longitude of false origin',-155.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',73.4,'EPSG','9110','EPSG','8826','Easting at false origin',12500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6006','EPSG Arctic LCC zone 4-14',NULL,NULL,'EPSG','4077','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',75.21518519,'EPSG','9110','EPSG','8822','Longitude of false origin',-129.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',73.4,'EPSG','9110','EPSG','8826','Easting at false origin',14500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6007','EPSG Arctic LCC zone 4-16',NULL,NULL,'EPSG','4078','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',75.21518519,'EPSG','9110','EPSG','8822','Longitude of false origin',-104.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',73.4,'EPSG','9110','EPSG','8826','Easting at false origin',16500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6008','EPSG Arctic LCC zone 4-18',NULL,NULL,'EPSG','4079','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',75.21518519,'EPSG','9110','EPSG','8822','Longitude of false origin',-79.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',73.4,'EPSG','9110','EPSG','8826','Easting at false origin',18500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6009','EPSG Arctic LCC zone 4-20',NULL,NULL,'EPSG','4080','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',75.21518519,'EPSG','9110','EPSG','8822','Longitude of false origin',-64.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',73.4,'EPSG','9110','EPSG','8826','Easting at false origin',20500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6010','EPSG Arctic LCC zone 4-22',NULL,NULL,'EPSG','4081','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',75.21518519,'EPSG','9110','EPSG','8822','Longitude of false origin',-39.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',73.4,'EPSG','9110','EPSG','8826','Easting at false origin',22500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6011','EPSG Arctic LCC zone 4-24',NULL,NULL,'EPSG','4082','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',75.21518519,'EPSG','9110','EPSG','8822','Longitude of false origin',-14.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',73.4,'EPSG','9110','EPSG','8826','Easting at false origin',24500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6012','EPSG Arctic LCC zone 4-26',NULL,NULL,'EPSG','4083','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',75.21518519,'EPSG','9110','EPSG','8822','Longitude of false origin',10.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',73.4,'EPSG','9110','EPSG','8826','Easting at false origin',26500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6013','EPSG Arctic LCC zone 4-28',NULL,NULL,'EPSG','4084','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',75.21518519,'EPSG','9110','EPSG','8822','Longitude of false origin',34.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',73.4,'EPSG','9110','EPSG','8826','Easting at false origin',28500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6014','EPSG Arctic LCC zone 4-30',NULL,NULL,'EPSG','4085','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',75.21518519,'EPSG','9110','EPSG','8822','Longitude of false origin',58.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',73.4,'EPSG','9110','EPSG','8826','Easting at false origin',30500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6015','EPSG Arctic LCC zone 4-32',NULL,NULL,'EPSG','4086','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',75.21518519,'EPSG','9110','EPSG','8822','Longitude of false origin',82.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',73.4,'EPSG','9110','EPSG','8826','Easting at false origin',32500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6016','EPSG Arctic LCC zone 4-34',NULL,NULL,'EPSG','4087','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',75.21518519,'EPSG','9110','EPSG','8822','Longitude of false origin',106.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',73.4,'EPSG','9110','EPSG','8826','Easting at false origin',34500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6017','EPSG Arctic LCC zone 4-36',NULL,NULL,'EPSG','4088','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',75.21518519,'EPSG','9110','EPSG','8822','Longitude of false origin',130.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',73.4,'EPSG','9110','EPSG','8826','Easting at false origin',36500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6018','EPSG Arctic LCC zone 4-38',NULL,NULL,'EPSG','4089','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',75.21518519,'EPSG','9110','EPSG','8822','Longitude of false origin',154.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',73.4,'EPSG','9110','EPSG','8826','Easting at false origin',38500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6019','EPSG Arctic LCC zone 4-40',NULL,NULL,'EPSG','4090','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',75.21518519,'EPSG','9110','EPSG','8822','Longitude of false origin',179.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',77.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',73.4,'EPSG','9110','EPSG','8826','Easting at false origin',40500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6020','EPSG Arctic LCC zone 5-11',NULL,NULL,'EPSG','4091','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',14.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',11500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6021','EPSG Arctic LCC zone 5-13',NULL,NULL,'EPSG','4092','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',34.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',13500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6022','EPSG Arctic LCC zone 5-15',NULL,NULL,'EPSG','4093','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',54.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',15500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6023','EPSG Arctic LCC zone 5-17',NULL,NULL,'EPSG','4094','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',74.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',17500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6024','EPSG Arctic LCC zone 5-19',NULL,NULL,'EPSG','4095','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',95.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',19500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6025','EPSG Arctic LCC zone 5-21',NULL,NULL,'EPSG','4096','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',116.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',21500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6026','EPSG Arctic LCC zone 5-23',NULL,NULL,'EPSG','4097','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',137.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',23500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6027','EPSG Arctic LCC zone 5-25',NULL,NULL,'EPSG','4098','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',158.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',25500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6028','EPSG Arctic LCC zone 5-27',NULL,NULL,'EPSG','4099','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',179.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',27500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6029','EPSG Arctic LCC zone 5-29',NULL,NULL,'EPSG','4100','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',-163.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',29500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6030','EPSG Arctic LCC zone 5-31',NULL,NULL,'EPSG','4101','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',-147.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',31500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6031','EPSG Arctic LCC zone 5-33',NULL,NULL,'EPSG','4102','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',-131.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',33500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6032','EPSG Arctic LCC zone 5-35',NULL,NULL,'EPSG','4103','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',-111.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',35500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6033','EPSG Arctic LCC zone 5-37',NULL,NULL,'EPSG','4104','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',-91.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',37500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6034','EPSG Arctic LCC zone 5-39',NULL,NULL,'EPSG','4105','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',-71.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',39500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6035','EPSG Arctic LCC zone 5-41',NULL,NULL,'EPSG','4106','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',-62.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',41500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6036','EPSG Arctic LCC zone 5-43',NULL,NULL,'EPSG','4107','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',-42.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',43500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6037','EPSG Arctic LCC zone 5-45',NULL,NULL,'EPSG','4108','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',-22.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',45500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6038','EPSG Arctic LCC zone 5-47',NULL,NULL,'EPSG','4109','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',72.01300331,'EPSG','9110','EPSG','8822','Longitude of false origin',-5.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',73.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',70.2,'EPSG','9110','EPSG','8826','Easting at false origin',47500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6039','EPSG Arctic LCC zone 6-14',NULL,NULL,'EPSG','4110','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',68.4114912,'EPSG','9110','EPSG','8822','Longitude of false origin',-165.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',70.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',67.0,'EPSG','9110','EPSG','8826','Easting at false origin',14500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',6500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6040','EPSG Arctic LCC zone 6-16',NULL,NULL,'EPSG','4111','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',68.4114912,'EPSG','9110','EPSG','8822','Longitude of false origin',-147.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',70.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',67.0,'EPSG','9110','EPSG','8826','Easting at false origin',16500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',6500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6041','EPSG Arctic LCC zone 6-18',NULL,NULL,'EPSG','4112','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',68.4114912,'EPSG','9110','EPSG','8822','Longitude of false origin',-132.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',70.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',67.0,'EPSG','9110','EPSG','8826','Easting at false origin',18500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',6500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6042','EPSG Arctic LCC zone 6-20',NULL,NULL,'EPSG','4113','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',68.4114912,'EPSG','9110','EPSG','8822','Longitude of false origin',-113.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',70.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',67.0,'EPSG','9110','EPSG','8826','Easting at false origin',20500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',6500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6043','EPSG Arctic LCC zone 6-22',NULL,NULL,'EPSG','4114','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',68.4114912,'EPSG','9110','EPSG','8822','Longitude of false origin',-94.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',70.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',67.0,'EPSG','9110','EPSG','8826','Easting at false origin',22500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',6500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6044','EPSG Arctic LCC zone 6-24',NULL,NULL,'EPSG','4115','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',68.4114912,'EPSG','9110','EPSG','8822','Longitude of false origin',-75.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',70.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',67.0,'EPSG','9110','EPSG','8826','Easting at false origin',24500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',6500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6045','EPSG Arctic LCC zone 6-26',NULL,NULL,'EPSG','4116','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',68.4114912,'EPSG','9110','EPSG','8822','Longitude of false origin',-56.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',70.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',67.0,'EPSG','9110','EPSG','8826','Easting at false origin',26500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',6500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6046','EPSG Arctic LCC zone 6-28',NULL,NULL,'EPSG','4117','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',68.4114912,'EPSG','9110','EPSG','8822','Longitude of false origin',-38.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',70.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',67.0,'EPSG','9110','EPSG','8826','Easting at false origin',28500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',6500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6047','EPSG Arctic LCC zone 6-30',NULL,NULL,'EPSG','4118','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',68.4114912,'EPSG','9110','EPSG','8822','Longitude of false origin',-20.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',70.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',67.0,'EPSG','9110','EPSG','8826','Easting at false origin',30500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',6500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6048','EPSG Arctic LCC zone 7-11',NULL,NULL,'EPSG','4119','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',65.21037415,'EPSG','9110','EPSG','8822','Longitude of false origin',-51.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',67.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',63.4,'EPSG','9110','EPSG','8826','Easting at false origin',11500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',7500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6049','EPSG Arctic LCC zone 7-13',NULL,NULL,'EPSG','4120','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',65.21037415,'EPSG','9110','EPSG','8822','Longitude of false origin',-34.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',67.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',63.4,'EPSG','9110','EPSG','8826','Easting at false origin',13500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',7500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6126','Cayman Islands LCC (ft)',NULL,NULL,'EPSG','1063','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',19.2,'EPSG','9110','EPSG','8822','Longitude of false origin',80.34,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',19.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',19.42,'EPSG','9110','EPSG','8826','Easting at false origin',2950000.0,'EPSG','9002','EPSG','8827','Northing at false origin',1900000.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','6127','Cayman Islands TM (ft)',NULL,NULL,'EPSG','1063','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-81.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640419.9475,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6197','Michigan CS27 North zone',NULL,NULL,'EPSG','1723','EPSG','1051','Lambert Conic Conformal (2SP Michigan)','EPSG','8821','Latitude of false origin',44.87,'EPSG','9110','EPSG','8822','Longitude of false origin',-87.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',45.29,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',47.05,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003','EPSG','1038','Ellipsoid scaling factor',1.0000382,'EPSG','9201',1); +INSERT INTO "conversion" VALUES('EPSG','6198','Michigan CS27 Central zone',NULL,NULL,'EPSG','1724','EPSG','1051','Lambert Conic Conformal (2SP Michigan)','EPSG','8821','Latitude of false origin',43.19,'EPSG','9110','EPSG','8822','Longitude of false origin',-84.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',44.11,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',45.42,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003','EPSG','1038','Ellipsoid scaling factor',1.0000382,'EPSG','9201',0); +INSERT INTO "conversion" VALUES('EPSG','6199','Michigan CS27 South zone',NULL,NULL,'EPSG','1725','EPSG','1051','Lambert Conic Conformal (2SP Michigan)','EPSG','8821','Latitude of false origin',41.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-84.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',42.06,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',43.4,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003','EPSG','1038','Ellipsoid scaling factor',1.0000382,'EPSG','9201',0); +INSERT INTO "conversion" VALUES('EPSG','6203','Macedonia Gauss-Kruger',NULL,NULL,'EPSG','1148','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6212','Arauca urban grid',NULL,NULL,'EPSG','4122','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',7.051538301,'EPSG','9110','EPSG','8802','Longitude of natural origin',-70.452991476,'EPSG','9110','EPSG','8806','False easting',1035263.443,'EPSG','9001','EPSG','8807','False northing',1275526.621,'EPSG','9001','EPSG','1039','Projection plane origin height',100.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6213','Armenia urban grid',NULL,NULL,'EPSG','4132','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',4.315637,'EPSG','9110','EPSG','8802','Longitude of natural origin',-75.4024561,'EPSG','9110','EPSG','8806','False easting',1155824.666,'EPSG','9001','EPSG','8807','False northing',993087.465,'EPSG','9001','EPSG','1039','Projection plane origin height',1470.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6214','Barranquilla urban grid',NULL,NULL,'EPSG','4134','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',10.55234591,'EPSG','9110','EPSG','8802','Longitude of natural origin',-74.50035928,'EPSG','9110','EPSG','8806','False easting',917264.406,'EPSG','9001','EPSG','8807','False northing',1699839.935,'EPSG','9001','EPSG','1039','Projection plane origin height',100.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6215','Bogota urban grid',NULL,NULL,'EPSG','4135','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',4.404975,'EPSG','9110','EPSG','8802','Longitude of natural origin',-74.084773,'EPSG','9110','EPSG','8806','False easting',92334.879,'EPSG','9001','EPSG','8807','False northing',109320.965,'EPSG','9001','EPSG','1039','Projection plane origin height',2550.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6216','Bucaramanga urban grid',NULL,NULL,'EPSG','4136','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',7.044399371,'EPSG','9110','EPSG','8802','Longitude of natural origin',-73.11504356,'EPSG','9110','EPSG','8806','False easting',1097241.305,'EPSG','9001','EPSG','8807','False northing',1274642.278,'EPSG','9001','EPSG','1039','Projection plane origin height',931.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6217','Cali urban grid',NULL,NULL,'EPSG','4137','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',3.263078,'EPSG','9110','EPSG','8802','Longitude of natural origin',-76.3114025,'EPSG','9110','EPSG','8806','False easting',1061900.18,'EPSG','9001','EPSG','8807','False northing',872364.63,'EPSG','9001','EPSG','1039','Projection plane origin height',1000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6218','Cartagena urban grid',NULL,NULL,'EPSG','4138','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',10.2349371,'EPSG','9110','EPSG','8802','Longitude of natural origin',-75.3040345,'EPSG','9110','EPSG','8806','False easting',842981.41,'EPSG','9001','EPSG','8807','False northing',1641887.09,'EPSG','9001','EPSG','1039','Projection plane origin height',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6219','Cucuta urban grid',NULL,NULL,'EPSG','4139','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',7.532017225,'EPSG','9110','EPSG','8802','Longitude of natural origin',-72.301033542,'EPSG','9110','EPSG','8806','False easting',842805.406,'EPSG','9001','EPSG','8807','False northing',1364404.57,'EPSG','9001','EPSG','1039','Projection plane origin height',308.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6220','Florencia urban grid',NULL,NULL,'EPSG','4140','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',1.371564426,'EPSG','9110','EPSG','8802','Longitude of natural origin',-75.370882337,'EPSG','9110','EPSG','8806','False easting',1162300.348,'EPSG','9001','EPSG','8807','False northing',671068.716,'EPSG','9001','EPSG','1039','Projection plane origin height',300.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6221','Ibague urban grid',NULL,NULL,'EPSG','4141','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',4.250988618,'EPSG','9110','EPSG','8802','Longitude of natural origin',-75.104773336,'EPSG','9110','EPSG','8806','False easting',877634.33,'EPSG','9001','EPSG','8807','False northing',980541.348,'EPSG','9001','EPSG','1039','Projection plane origin height',1100.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6222','Inirida urban grid',NULL,NULL,'EPSG','4142','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',3.504357746,'EPSG','9110','EPSG','8802','Longitude of natural origin',-67.541883552,'EPSG','9110','EPSG','8806','False easting',1019177.687,'EPSG','9001','EPSG','8807','False northing',491791.326,'EPSG','9001','EPSG','1039','Projection plane origin height',96.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6223','Leticia urban grid',NULL,NULL,'EPSG','4143','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',-4.115166257,'EPSG','9110','EPSG','8802','Longitude of natural origin',-69.563411981,'EPSG','9110','EPSG','8806','False easting',25978.217,'EPSG','9001','EPSG','8807','False northing',27501.365,'EPSG','9001','EPSG','1039','Projection plane origin height',89.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6224','Manizales urban grid',NULL,NULL,'EPSG','4144','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',5.0405354,'EPSG','9110','EPSG','8802','Longitude of natural origin',-75.3039941,'EPSG','9110','EPSG','8806','False easting',1173727.04,'EPSG','9001','EPSG','8807','False northing',1052391.13,'EPSG','9001','EPSG','1039','Projection plane origin height',2100.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6225','Medellin urban grid',NULL,NULL,'EPSG','4145','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',6.1345152,'EPSG','9110','EPSG','8802','Longitude of natural origin',-75.3353593,'EPSG','9110','EPSG','8806','False easting',835378.647,'EPSG','9001','EPSG','8807','False northing',1180816.875,'EPSG','9001','EPSG','1039','Projection plane origin height',1510.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6226','Mitu urban grid',NULL,NULL,'EPSG','4146','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',1.145988972,'EPSG','9110','EPSG','8802','Longitude of natural origin',-70.140766196,'EPSG','9110','EPSG','8806','False easting',1093717.398,'EPSG','9001','EPSG','8807','False northing',629997.236,'EPSG','9001','EPSG','1039','Projection plane origin height',170.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6227','Mocoa urban grid',NULL,NULL,'EPSG','4147','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',1.082408409,'EPSG','9110','EPSG','8802','Longitude of natural origin',-76.390367639,'EPSG','9110','EPSG','8806','False easting',1047467.388,'EPSG','9001','EPSG','8807','False northing',617828.474,'EPSG','9001','EPSG','1039','Projection plane origin height',655.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6228','Monteria urban grid',NULL,NULL,'EPSG','4148','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',8.462310872,'EPSG','9110','EPSG','8802','Longitude of natural origin',-75.524639199,'EPSG','9110','EPSG','8806','False easting',1131814.934,'EPSG','9001','EPSG','8807','False northing',1462131.119,'EPSG','9001','EPSG','1039','Projection plane origin height',15.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6229','Neiva urban grid',NULL,NULL,'EPSG','4149','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',2.56326942,'EPSG','9110','EPSG','8802','Longitude of natural origin',-75.17471722,'EPSG','9110','EPSG','8806','False easting',864476.923,'EPSG','9001','EPSG','8807','False northing',817199.827,'EPSG','9001','EPSG','1039','Projection plane origin height',430.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6230','Pasto urban grid',NULL,NULL,'EPSG','4150','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',1.120356225,'EPSG','9110','EPSG','8802','Longitude of natural origin',-77.151125228,'EPSG','9110','EPSG','8806','False easting',980469.695,'EPSG','9001','EPSG','8807','False northing',624555.332,'EPSG','9001','EPSG','1039','Projection plane origin height',2530.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6231','Pereira urban grid',NULL,NULL,'EPSG','4151','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',4.4848937,'EPSG','9110','EPSG','8802','Longitude of natural origin',-75.4138225,'EPSG','9110','EPSG','8806','False easting',1153492.012,'EPSG','9001','EPSG','8807','False northing',1024195.255,'EPSG','9001','EPSG','1039','Projection plane origin height',1500.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6232','Popayan urban grid',NULL,NULL,'EPSG','4152','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',2.272217558,'EPSG','9110','EPSG','8802','Longitude of natural origin',-76.362192989,'EPSG','9110','EPSG','8806','False easting',1052430.525,'EPSG','9001','EPSG','8807','False northing',763366.548,'EPSG','9001','EPSG','1039','Projection plane origin height',1740.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6233','Puerto Carreno urban grid',NULL,NULL,'EPSG','4153','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',6.105059709,'EPSG','9110','EPSG','8802','Longitude of natural origin',-67.300270089,'EPSG','9110','EPSG','8806','False easting',1063834.703,'EPSG','9001','EPSG','8807','False northing',1175257.481,'EPSG','9001','EPSG','1039','Projection plane origin height',51.58,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6234','Quibdo urban grid',NULL,NULL,'EPSG','4154','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',5.413929158,'EPSG','9110','EPSG','8802','Longitude of natural origin',-76.390271389,'EPSG','9110','EPSG','8806','False easting',1047273.617,'EPSG','9001','EPSG','8807','False northing',1121443.09,'EPSG','9001','EPSG','1039','Projection plane origin height',44.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6235','Riohacha urban grid',NULL,NULL,'EPSG','4155','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',11.321288798,'EPSG','9110','EPSG','8802','Longitude of natural origin',-72.540996793,'EPSG','9110','EPSG','8806','False easting',1128154.73,'EPSG','9001','EPSG','8807','False northing',1767887.914,'EPSG','9001','EPSG','1039','Projection plane origin height',6.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6236','San Andres urban grid',NULL,NULL,'EPSG','4156','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',12.312565957,'EPSG','9110','EPSG','8802','Longitude of natural origin',-81.434575342,'EPSG','9110','EPSG','8806','False easting',820439.298,'EPSG','9001','EPSG','8807','False northing',1877357.828,'EPSG','9001','EPSG','1039','Projection plane origin height',6.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6237','San Jose del Guaviare urban grid',NULL,NULL,'EPSG','4157','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',2.335068419,'EPSG','9110','EPSG','8802','Longitude of natural origin',-72.382411997,'EPSG','9110','EPSG','8806','False easting',1159876.62,'EPSG','9001','EPSG','8807','False northing',775380.342,'EPSG','9001','EPSG','1039','Projection plane origin height',185.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6238','Santa Marta urban grid',NULL,NULL,'EPSG','4128','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',11.1310715,'EPSG','9110','EPSG','8802','Longitude of natural origin',-74.1330019,'EPSG','9110','EPSG','8806','False easting',983892.409,'EPSG','9001','EPSG','8807','False northing',1732533.518,'EPSG','9001','EPSG','1039','Projection plane origin height',29.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6239','Sucre urban grid',NULL,NULL,'EPSG','4130','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',8.483798132,'EPSG','9110','EPSG','8802','Longitude of natural origin',-74.432088057,'EPSG','9110','EPSG','8806','False easting',929043.607,'EPSG','9001','EPSG','8807','False northing',1466125.658,'EPSG','9001','EPSG','1039','Projection plane origin height',20.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6240','Tunja urban grid',NULL,NULL,'EPSG','4131','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',5.320310106,'EPSG','9110','EPSG','8802','Longitude of natural origin',-73.210698004,'EPSG','9110','EPSG','8806','False easting',1080514.91,'EPSG','9001','EPSG','8807','False northing',1103772.028,'EPSG','9001','EPSG','1039','Projection plane origin height',2800.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6241','Valledupar urban grid',NULL,NULL,'EPSG','4158','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',10.265014,'EPSG','9110','EPSG','8802','Longitude of natural origin',-73.1447657,'EPSG','9110','EPSG','8806','False easting',1090979.66,'EPSG','9001','EPSG','8807','False northing',1647208.93,'EPSG','9001','EPSG','1039','Projection plane origin height',200.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6242','Villavicencio urban grid',NULL,NULL,'EPSG','4159','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',4.091935036,'EPSG','9110','EPSG','8802','Longitude of natural origin',-73.372814955,'EPSG','9110','EPSG','8806','False easting',1050678.757,'EPSG','9001','EPSG','8807','False northing',950952.124,'EPSG','9001','EPSG','1039','Projection plane origin height',427.19,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6243','Yopal urban grid',NULL,NULL,'EPSG','4160','EPSG','1052','Colombia Urban','EPSG','8801','Latitude of natural origin',5.2114138,'EPSG','9110','EPSG','8802','Longitude of natural origin',-72.2512145,'EPSG','9110','EPSG','8806','False easting',851184.177,'EPSG','9001','EPSG','8807','False northing',1083954.137,'EPSG','9001','EPSG','1039','Projection plane origin height',300.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6308','Cyprus Transverse Mercator',NULL,NULL,'EPSG','3236','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',33.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',-3500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6361','Mexico LCC',NULL,NULL,'EPSG','1160','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',12.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-102.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',17.5,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',29.5,'EPSG','9102','EPSG','8826','Easting at false origin',2500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6374','Ukraine TM zone 7',NULL,NULL,'EPSG','3906','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6375','Ukraine TM zone 8',NULL,NULL,'EPSG','3907','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',24.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6376','Ukraine TM zone 9',NULL,NULL,'EPSG','3908','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',27.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6377','Ukraine TM zone 10',NULL,NULL,'EPSG','3909','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',30.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6378','Ukraine TM zone 11',NULL,NULL,'EPSG','3910','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',33.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6379','Ukraine TM zone 12',NULL,NULL,'EPSG','3912','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',36.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6380','Ukraine TM zone 13',NULL,NULL,'EPSG','3913','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',39.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6390','Cayman Islands LCC (ft)',NULL,NULL,'EPSG','1063','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',19.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-80.34,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',19.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',19.42,'EPSG','9110','EPSG','8826','Easting at false origin',2950000.0,'EPSG','9002','EPSG','8827','Northing at false origin',1900000.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6645','Quebec Albers Projection',NULL,NULL,'EPSG','1368','EPSG','9822','Albers Equal Area','EPSG','8821','Latitude of false origin',44.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-68.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',60.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',46.0,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6702','TM 60 SW',NULL,NULL,'EPSG','4172','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-60.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6716','Christmas Island Grid 1992',NULL,NULL,'EPSG','4169','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',105.373,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000024,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',1300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6717','Christmas Island Grid 1994',NULL,NULL,'EPSG','4169','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',105.373,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00002514,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',1300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6718','Cocos Island Grid 1992',NULL,NULL,'EPSG','1069','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',96.523,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',1400000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6719','Cocos Island Grid 1994',NULL,NULL,'EPSG','1069','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',96.523,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99999387,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6725','Map Grid of Australia zone 41',NULL,NULL,'EPSG','4173','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',63.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','6726','Map Grid of Australia zone 42',NULL,NULL,'EPSG','4181','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',69.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','6727','Map Grid of Australia zone 43',NULL,NULL,'EPSG','4184','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',75.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','6728','Map Grid of Australia zone 44',NULL,NULL,'EPSG','4185','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',81.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','6729','Map Grid of Australia zone 46',NULL,NULL,'EPSG','4189','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',93.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6730','Map Grid of Australia zone 47',NULL,NULL,'EPSG','4190','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',99.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6731','Map Grid of Australia zone 59',NULL,NULL,'EPSG','4179','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',171.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6741','Oregon Baker zone (meters)',NULL,NULL,'EPSG','4180','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-117.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00016,'EPSG','9201','EPSG','8806','False easting',40000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6742','Oregon Baker zone (International feet)',NULL,NULL,'EPSG','4180','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-117.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00016,'EPSG','9201','EPSG','8806','False easting',131233.5958,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6743','Oregon Bend-Klamath Falls zone (meters)',NULL,NULL,'EPSG','4192','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-121.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0002,'EPSG','9201','EPSG','8806','False easting',80000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6744','Oregon Bend-Klamath Falls zone (International feet)',NULL,NULL,'EPSG','4192','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-121.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0002,'EPSG','9201','EPSG','8806','False easting',262467.1916,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6745','Oregon Bend-Redmond-Prineville zone (meters)',NULL,NULL,'EPSG','4195','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-121.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00012,'EPSG','9201','EPSG','8806','False easting',80000.0,'EPSG','9001','EPSG','8807','False northing',130000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6746','Oregon Bend-Redmond-Prineville zone (International feet)',NULL,NULL,'EPSG','4195','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-121.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00012,'EPSG','9201','EPSG','8806','False easting',262467.1916,'EPSG','9002','EPSG','8807','False northing',426509.1864,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6747','Oregon Bend-Burns zone (meters)',NULL,NULL,'EPSG','4182','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',43.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-119.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0002,'EPSG','9201','EPSG','8806','False easting',120000.0,'EPSG','9001','EPSG','8807','False northing',60000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6748','Oregon Bend-Burns zone (International feet)',NULL,NULL,'EPSG','4182','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',43.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-119.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0002,'EPSG','9201','EPSG','8806','False easting',393700.7874,'EPSG','9002','EPSG','8807','False northing',196850.3937,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6749','Oregon Canyonville-Grants Pass zone (meters)',NULL,NULL,'EPSG','4199','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-123.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00007,'EPSG','9201','EPSG','8806','False easting',40000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6750','Oregon Canyonville-Grants Pass zone (International feet)',NULL,NULL,'EPSG','4199','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-123.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00007,'EPSG','9201','EPSG','8806','False easting',131233.5958,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6751','Oregon Columbia River East zone (meters)',NULL,NULL,'EPSG','4200','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-120.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000008,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',30000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6752','Oregon Columbia River East zone (International feet)',NULL,NULL,'EPSG','4200','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-120.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000008,'EPSG','9201','EPSG','8806','False easting',492125.9843,'EPSG','9002','EPSG','8807','False northing',98425.1969,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6753','Oregon Columbia River West zone (meters)',NULL,NULL,'EPSG','4202','EPSG','9812','Hotine Oblique Mercator (variant A)','EPSG','8811','Latitude of projection centre',45.55,'EPSG','9110','EPSG','8812','Longitude of projection centre',-123.0,'EPSG','9110','EPSG','8813','Azimuth of initial line',295.0,'EPSG','9102','EPSG','8814','Angle from Rectified to Skew Grid',295.0,'EPSG','9102','EPSG','8815','Scale factor on initial line',1.0,'EPSG','9201','EPSG','8806','False easting',7000000.0,'EPSG','9001','EPSG','8807','False northing',-3000000.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','6754','Oregon Columbia River West zone (International feet)',NULL,NULL,'EPSG','4202','EPSG','9812','Hotine Oblique Mercator (variant A)','EPSG','8811','Latitude of projection centre',45.55,'EPSG','9110','EPSG','8812','Longitude of projection centre',-123.0,'EPSG','9110','EPSG','8813','Azimuth of initial line',295.0,'EPSG','9102','EPSG','8814','Angle from Rectified to Skew Grid',295.0,'EPSG','9102','EPSG','8815','Scale factor on initial line',1.0,'EPSG','9201','EPSG','8806','False easting',22965879.2651,'EPSG','9002','EPSG','8807','False northing',-9842519.685,'EPSG','9002',0); +INSERT INTO "conversion" VALUES('EPSG','6755','Oregon Cottage Grove-Canyonville zone (meters)',NULL,NULL,'EPSG','4203','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-123.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000023,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6756','Oregon Cottage Grove-Canyonville zone (International feet)',NULL,NULL,'EPSG','4203','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-123.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000023,'EPSG','9201','EPSG','8806','False easting',164041.9948,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6757','Oregon Dufur-Madras zone (meters)',NULL,NULL,'EPSG','4204','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-121.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00011,'EPSG','9201','EPSG','8806','False easting',80000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6758','Oregon Dufur-Madras zone (International feet)',NULL,NULL,'EPSG','4204','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-121.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00011,'EPSG','9201','EPSG','8806','False easting',262467.1916,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6759','Oregon Eugene zone (meters)',NULL,NULL,'EPSG','4197','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-123.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000015,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6760','Oregon Eugene zone (International feet)',NULL,NULL,'EPSG','4197','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-123.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000015,'EPSG','9201','EPSG','8806','False easting',164041.9948,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6761','Oregon Grants Pass-Ashland zone (meters)',NULL,NULL,'EPSG','4198','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-123.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000043,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6762','Oregon Grants Pass-Ashland zone (International feet)',NULL,NULL,'EPSG','4198','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-123.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000043,'EPSG','9201','EPSG','8806','False easting',164041.9948,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6763','Oregon Gresham-Warm Springs zone (meters)',NULL,NULL,'EPSG','4201','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-122.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00005,'EPSG','9201','EPSG','8806','False easting',10000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6764','Oregon Gresham-Warm Springs zone (International feet)',NULL,NULL,'EPSG','4201','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-122.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00005,'EPSG','9201','EPSG','8806','False easting',32808.399,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6765','Oregon La Grande zone (meters)',NULL,NULL,'EPSG','4206','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-118.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.00013,'EPSG','9201','EPSG','8806','False easting',40000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6766','Oregon La Grande zone (International feet)',NULL,NULL,'EPSG','4206','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-118.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.00013,'EPSG','9201','EPSG','8806','False easting',131233.5958,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6767','Oregon Ontario zone (meters)',NULL,NULL,'EPSG','4207','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-117.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0001,'EPSG','9201','EPSG','8806','False easting',80000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6768','Oregon Ontario zone (International feet)',NULL,NULL,'EPSG','4207','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-117.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0001,'EPSG','9201','EPSG','8806','False easting',262467.1916,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6769','Oregon Coast zone (meters)',NULL,NULL,'EPSG','4208','EPSG','9812','Hotine Oblique Mercator (variant A)','EPSG','8811','Latitude of projection centre',44.45,'EPSG','9110','EPSG','8812','Longitude of projection centre',-124.03,'EPSG','9110','EPSG','8813','Azimuth of initial line',5.0,'EPSG','9102','EPSG','8814','Angle from Rectified to Skew Grid',5.0,'EPSG','9102','EPSG','8815','Scale factor on initial line',1.0,'EPSG','9201','EPSG','8806','False easting',-300000.0,'EPSG','9001','EPSG','8807','False northing',-4600000.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','6770','Oregon Coast zone (International feet)',NULL,NULL,'EPSG','4208','EPSG','9812','Hotine Oblique Mercator (variant A)','EPSG','8811','Latitude of projection centre',44.45,'EPSG','9110','EPSG','8812','Longitude of projection centre',-124.03,'EPSG','9110','EPSG','8813','Azimuth of initial line',5.0,'EPSG','9102','EPSG','8814','Angle from Rectified to Skew Grid',5.0,'EPSG','9102','EPSG','8815','Scale factor on initial line',1.0,'EPSG','9201','EPSG','8806','False easting',-984251.9685,'EPSG','9002','EPSG','8807','False northing',-15091863.5171,'EPSG','9002',0); +INSERT INTO "conversion" VALUES('EPSG','6771','Oregon Pendleton zone (meters)',NULL,NULL,'EPSG','4209','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-119.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000045,'EPSG','9201','EPSG','8806','False easting',60000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6772','Oregon Pendleton zone (International feet)',NULL,NULL,'EPSG','4209','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-119.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000045,'EPSG','9201','EPSG','8806','False easting',196850.3937,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6773','Oregon Pendleton-La Grande zone (meters)',NULL,NULL,'EPSG','4210','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.05,'EPSG','9110','EPSG','8802','Longitude of natural origin',-118.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000175,'EPSG','9201','EPSG','8806','False easting',30000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6774','Oregon Pendleton-La Grande zone (International feet)',NULL,NULL,'EPSG','4210','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.05,'EPSG','9110','EPSG','8802','Longitude of natural origin',-118.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000175,'EPSG','9201','EPSG','8806','False easting',98425.1969,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6775','Oregon Portland zone (meters)',NULL,NULL,'EPSG','4211','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-122.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000002,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',50000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6776','Oregon Portland zone (International feet)',NULL,NULL,'EPSG','4211','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-122.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000002,'EPSG','9201','EPSG','8806','False easting',328083.9895,'EPSG','9002','EPSG','8807','False northing',164041.9948,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6777','Oregon Salem zone (meters)',NULL,NULL,'EPSG','4212','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.2,'EPSG','9110','EPSG','8802','Longitude of natural origin',-123.05,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00001,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6778','Oregon Salem zone (International feet)',NULL,NULL,'EPSG','4212','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.2,'EPSG','9110','EPSG','8802','Longitude of natural origin',-123.05,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00001,'EPSG','9201','EPSG','8806','False easting',164041.9948,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6779','Oregon Santiam Pass zone (meters)',NULL,NULL,'EPSG','4213','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.05,'EPSG','9110','EPSG','8802','Longitude of natural origin',-122.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000155,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6780','Oregon Santiam Pass zone (International feet)',NULL,NULL,'EPSG','4213','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.05,'EPSG','9110','EPSG','8802','Longitude of natural origin',-122.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000155,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6869','Albania TM 2010',NULL,NULL,'EPSG','3212','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',20.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6877','Italy zone',NULL,NULL,'EPSG','1127','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',12.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9985,'EPSG','9201','EPSG','8806','False easting',7000000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6878','Italy zone 12',NULL,NULL,'EPSG','1127','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',12.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',3000000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6920','Kansas DOT Lambert (meters)',NULL,NULL,'EPSG','1385','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.15,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.3,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.3,'EPSG','9110','EPSG','8826','Easting at false origin',400000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6921','Kansas DOT Lambert (US Survey feet)',NULL,NULL,'EPSG','1385','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.15,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.3,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.3,'EPSG','9110','EPSG','8826','Easting at false origin',1312333.3333,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6928','US NSIDC EASE-Grid 2.0 Global',NULL,NULL,'EPSG','3463','EPSG','9835','Lambert Cylindrical Equal Area','EPSG','8823','Latitude of 1st standard parallel',30.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6929','US NSIDC EASE-Grid 2.0 North',NULL,NULL,'EPSG','3475','EPSG','9820','Lambert Azimuthal Equal Area','EPSG','8801','Latitude of natural origin',90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6930','US NSIDC EASE-Grid 2.0 South',NULL,NULL,'EPSG','3474','EPSG','9820','Lambert Azimuthal Equal Area','EPSG','8801','Latitude of natural origin',-90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6952','Vietnam TM-3 zone 481',NULL,NULL,'EPSG','4193','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',102.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','6953','Vietnam TM-3 zone 482',NULL,NULL,'EPSG','4215','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',105.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','6954','Vietnam TM-3 zone 491',NULL,NULL,'EPSG','4217','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',108.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','6955','Vietnam TM-3 Da Nang zone',NULL,NULL,'EPSG','4218','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',107.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','6961','Albania LCC 2010',NULL,NULL,'EPSG','1025','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.0,'EPSG','9102','EPSG','8822','Longitude of false origin',20.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',39.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',43.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','6965','Michigan CS27 North zone',NULL,NULL,'EPSG','1723','EPSG','1051','Lambert Conic Conformal (2SP Michigan)','EPSG','8821','Latitude of false origin',44.47,'EPSG','9110','EPSG','8822','Longitude of false origin',-87.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',45.29,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',47.05,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003','EPSG','1038','Ellipsoid scaling factor',1.0000382,'EPSG','9201',0); +INSERT INTO "conversion" VALUES('EPSG','6994','City and County of San Francisco CS13 (meters)',NULL,NULL,'EPSG','4228','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.75,'EPSG','9102','EPSG','8802','Longitude of natural origin',-122.45,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.000007,'EPSG','9202','EPSG','8806','False easting',48000.0,'EPSG','9001','EPSG','8807','False northing',24000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','6995','City and County of San Francisco CS13 (US Survey feet)',NULL,NULL,'EPSG','4228','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.75,'EPSG','9102','EPSG','8802','Longitude of natural origin',-122.45,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.000007,'EPSG','9202','EPSG','8806','False easting',157480.0,'EPSG','9003','EPSG','8807','False northing',78740.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','7043','Iowa regional zone 1 Spencer',NULL,NULL,'EPSG','4164','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',43.12,'EPSG','9110','EPSG','8802','Longitude of natural origin',-95.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000052,'EPSG','9201','EPSG','8806','False easting',11500000.0,'EPSG','9003','EPSG','8807','False northing',9600000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7044','Iowa regional zone 2 Mason City',NULL,NULL,'EPSG','4219','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',43.1,'EPSG','9110','EPSG','8802','Longitude of natural origin',-92.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000043,'EPSG','9201','EPSG','8806','False easting',12500000.0,'EPSG','9003','EPSG','8807','False northing',9800000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7045','Iowa regional zone 3 Elkader',NULL,NULL,'EPSG','4230','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.12,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000035,'EPSG','9201','EPSG','8806','False easting',13500000.0,'EPSG','9003','EPSG','8807','False northing',8300000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7046','Iowa regional zone 4 Sioux City-Iowa Falls',NULL,NULL,'EPSG','4233','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',42.32,'EPSG','9110','EPSG','8802','Longitude of natural origin',-94.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000045,'EPSG','9201','EPSG','8806','False easting',14500000.0,'EPSG','9003','EPSG','8807','False northing',8600000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7047','Iowa regional zone 5 Waterloo',NULL,NULL,'EPSG','4234','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',42.39,'EPSG','9110','EPSG','8802','Longitude of natural origin',-92.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000032,'EPSG','9201','EPSG','8806','False easting',15500000.0,'EPSG','9003','EPSG','8807','False northing',8900000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7048','Iowa regional zone 6 Council Bluffs',NULL,NULL,'EPSG','4235','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-95.44,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000039,'EPSG','9201','EPSG','8806','False easting',16500000.0,'EPSG','9003','EPSG','8807','False northing',6600000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7049','Iowa regional zone 7 Carroll-Atlantic',NULL,NULL,'EPSG','4236','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-94.38,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000045,'EPSG','9201','EPSG','8806','False easting',17500000.0,'EPSG','9003','EPSG','8807','False northing',6800000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7050','Iowa regional zone 8 Ames-Des Moines',NULL,NULL,'EPSG','4237','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-93.43,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000033,'EPSG','9201','EPSG','8806','False easting',18500000.0,'EPSG','9003','EPSG','8807','False northing',7000000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7051','Iowa regional zone 9 Newton',NULL,NULL,'EPSG','4239','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-92.49,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000027,'EPSG','9201','EPSG','8806','False easting',19500000.0,'EPSG','9003','EPSG','8807','False northing',7200000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7052','Iowa regional zone 10 Cedar Rapids',NULL,NULL,'EPSG','4240','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',41.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00002,'EPSG','9201','EPSG','8806','False easting',20500000.0,'EPSG','9003','EPSG','8807','False northing',8000000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7053','Iowa regional zone 11 Dubuque-Davenport',NULL,NULL,'EPSG','4241','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.32,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000027,'EPSG','9201','EPSG','8806','False easting',21500000.0,'EPSG','9003','EPSG','8807','False northing',7600000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7054','Iowa regional zone 12 Red Oak-Ottumwa',NULL,NULL,'EPSG','4242','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',40.55,'EPSG','9110','EPSG','8802','Longitude of natural origin',-93.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000037,'EPSG','9201','EPSG','8806','False easting',22500000.0,'EPSG','9003','EPSG','8807','False northing',6200000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7055','Iowa regional zone 13 Fairfield',NULL,NULL,'EPSG','4243','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.55,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00002,'EPSG','9201','EPSG','8806','False easting',23500000.0,'EPSG','9003','EPSG','8807','False northing',6400000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7056','Iowa regional zone 14 Burlington',NULL,NULL,'EPSG','4244','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000018,'EPSG','9201','EPSG','8806','False easting',24500000.0,'EPSG','9003','EPSG','8807','False northing',6200000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7089','Montana Blackfeet St Mary Valley (meters)',NULL,NULL,'EPSG','4310','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',48.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-112.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00016,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7090','Montana Blackfeet St Mary Valley (International feet)',NULL,NULL,'EPSG','4310','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',48.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-112.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00016,'EPSG','9201','EPSG','8806','False easting',492125.9843,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7091','Montana Blackfeet (meters)',NULL,NULL,'EPSG','4311','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',48.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-112.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00019,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7092','Montana Blackfeet (International feet)',NULL,NULL,'EPSG','4311','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',48.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-112.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00019,'EPSG','9201','EPSG','8806','False easting',328083.9895,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7093','Montana Milk River (meters)',NULL,NULL,'EPSG','4312','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',48.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-111.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000145,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7094','Montana Milk River (International feet)',NULL,NULL,'EPSG','4312','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',48.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-111.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000145,'EPSG','9201','EPSG','8806','False easting',492125.9843,'EPSG','9002','EPSG','8807','False northing',656167.979,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7095','Montana Fort Belknap (meters)',NULL,NULL,'EPSG','4313','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',48.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-108.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00012,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',150000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7096','Montana Fort Belknap (International feet)',NULL,NULL,'EPSG','4313','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',48.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-108.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00012,'EPSG','9201','EPSG','8806','False easting',656167.979,'EPSG','9002','EPSG','8807','False northing',492125.9843,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7097','Montana Fort Peck Assiniboine (meters)',NULL,NULL,'EPSG','4314','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',48.2,'EPSG','9110','EPSG','8802','Longitude of natural origin',-105.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00012,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',100000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7098','Montana Fort Peck Assiniboine (International feet)',NULL,NULL,'EPSG','4314','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',48.2,'EPSG','9110','EPSG','8802','Longitude of natural origin',-105.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00012,'EPSG','9201','EPSG','8806','False easting',656167.979,'EPSG','9002','EPSG','8807','False northing',328083.9895,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7099','Montana Fort Peck Sioux (meters)',NULL,NULL,'EPSG','4315','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',48.2,'EPSG','9110','EPSG','8802','Longitude of natural origin',-105.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00009,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',50000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7100','Montana Fort Peck Sioux (International feet)',NULL,NULL,'EPSG','4315','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',48.2,'EPSG','9110','EPSG','8802','Longitude of natural origin',-105.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00009,'EPSG','9201','EPSG','8806','False easting',328083.9895,'EPSG','9002','EPSG','8807','False northing',164041.9938,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7101','Montana Crow (meters)',NULL,NULL,'EPSG','4316','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-107.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000148,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7102','Montana Crow (International feet)',NULL,NULL,'EPSG','4316','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-107.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000148,'EPSG','9201','EPSG','8806','False easting',656167.979,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7103','Montana Bobcat (meters)',NULL,NULL,'EPSG','4317','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',46.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-111.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000185,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',100000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7104','Montana Bobcat (International feet)',NULL,NULL,'EPSG','4317','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',46.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-111.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000185,'EPSG','9201','EPSG','8806','False easting',328083.9895,'EPSG','9002','EPSG','8807','False northing',328083.9895,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7105','Montana Billings (meters)',NULL,NULL,'EPSG','4318','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.47,'EPSG','9110','EPSG','8802','Longitude of natural origin',-108.25,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0001515,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',50000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7106','Montana Billings (International feet)',NULL,NULL,'EPSG','4318','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.47,'EPSG','9110','EPSG','8802','Longitude of natural origin',-108.25,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0001515,'EPSG','9201','EPSG','8806','False easting',656167.979,'EPSG','9002','EPSG','8807','False northing',164041.9948,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7107','Wyoming Wind River (meters)',NULL,NULL,'EPSG','4319','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-108.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00024,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7108','Wyoming Wind River (US Survey feet)',NULL,NULL,'EPSG','4319','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-108.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00024,'EPSG','9201','EPSG','8806','False easting',328083.3333,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7129','City and County of San Francisco CS13 (meters)',NULL,NULL,'EPSG','4228','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.75,'EPSG','9102','EPSG','8802','Longitude of natural origin',-122.45,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.000007,'EPSG','9201','EPSG','8806','False easting',48000.0,'EPSG','9001','EPSG','8807','False northing',24000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7130','City and County of San Francisco CS13 (US Survey feet)',NULL,NULL,'EPSG','4228','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.75,'EPSG','9102','EPSG','8802','Longitude of natural origin',-122.45,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.000007,'EPSG','9201','EPSG','8806','False easting',157480.0,'EPSG','9003','EPSG','8807','False northing',78740.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7141','Palestine Grid modified',NULL,NULL,'EPSG','1356','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.4402749,'EPSG','9110','EPSG','8802','Longitude of natural origin',35.124349,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',170251.555,'EPSG','9001','EPSG','8807','False northing',126867.909,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7143','InGCS Adams (m)',NULL,NULL,'EPSG','4289','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.33,'EPSG','9110','EPSG','8802','Longitude of natural origin',-84.57,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000034,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7144','InGCS Adams (ftUS)',NULL,NULL,'EPSG','4289','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.33,'EPSG','9110','EPSG','8802','Longitude of natural origin',-84.57,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000034,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7145','InGCS Allen (m)',NULL,NULL,'EPSG','4285','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.54,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.03,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000031,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7146','InGCS Allen (ftUS)',NULL,NULL,'EPSG','4285','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.54,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.03,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000031,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7147','InGCS Bartholomew (m)',NULL,NULL,'EPSG','4302','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.51,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000026,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7148','InGCS Bartholomew (ftUS)',NULL,NULL,'EPSG','4302','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.51,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000026,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7149','InGCS Benton (m)',NULL,NULL,'EPSG','4256','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.27,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.18,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000029,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7150','InGCS Benton (ftUS)',NULL,NULL,'EPSG','4256','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.27,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.18,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000029,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7151','InGCS Blackford-Delaware (m)',NULL,NULL,'EPSG','4291','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.03,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.24,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000038,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7152','InGCS Blackford-Delaware (ftUS)',NULL,NULL,'EPSG','4291','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.03,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.24,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000038,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7153','InGCS Boone-Hendricks (m)',NULL,NULL,'EPSG','4263','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.36,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000036,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7154','InGCS Boone-Hendricks (ftUS)',NULL,NULL,'EPSG','4263','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.36,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000036,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7155','InGCS Brown (m)',NULL,NULL,'EPSG','4301','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.18,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00003,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7156','InGCS Brown (ftUS)',NULL,NULL,'EPSG','4301','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.18,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00003,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7157','InGCS Carroll (m)',NULL,NULL,'EPSG','4258','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.24,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.39,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000026,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7158','InGCS Carroll (ftUS)',NULL,NULL,'EPSG','4258','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.24,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.39,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000026,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7159','InGCS Cass (m)',NULL,NULL,'EPSG','4286','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.33,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.24,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000028,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7160','InGCS Cass (ftUS)',NULL,NULL,'EPSG','4286','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.33,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.24,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000028,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7161','InGCS Clark-Floyd-Scott (m)',NULL,NULL,'EPSG','4308','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.09,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.36,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000021,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7162','InGCS Clark-Floyd-Scott (ftUS)',NULL,NULL,'EPSG','4308','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.09,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.36,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000021,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7163','InGCS Clay (m)',NULL,NULL,'EPSG','4265','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.09,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.09,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000024,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7164','InGCS Clay (ftUS)',NULL,NULL,'EPSG','4265','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.09,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.09,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000024,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7165','InGCS Clinton (m)',NULL,NULL,'EPSG','4260','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.09,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.36,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000032,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7166','InGCS Clinton (ftUS)',NULL,NULL,'EPSG','4260','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.09,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.36,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000032,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7167','InGCS Crawford-Lawrence-Orange (m)',NULL,NULL,'EPSG','4272','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.06,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000025,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7168','InGCS Crawford-Lawrence-Orange (ftUS)',NULL,NULL,'EPSG','4272','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.06,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000025,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7169','InGCS Daviess-Greene (m)',NULL,NULL,'EPSG','4269','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.27,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.06,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000018,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7170','InGCS Daviess-Greene (ftUS)',NULL,NULL,'EPSG','4269','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.27,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.06,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000018,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7171','InGCS Dearborn-Ohio-Switzerland (m)',NULL,NULL,'EPSG','4306','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.39,'EPSG','9110','EPSG','8802','Longitude of natural origin',-84.54,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000029,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7172','InGCS Dearborn-Ohio-Switzerland (ftUS)',NULL,NULL,'EPSG','4306','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.39,'EPSG','9110','EPSG','8802','Longitude of natural origin',-84.54,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000029,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7173','InGCS Decatur-Rush (m)',NULL,NULL,'EPSG','4299','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.06,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.39,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000036,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7174','InGCS Decatur-Rush (ftUS)',NULL,NULL,'EPSG','4299','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.06,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.39,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000036,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7175','InGCS DeKalb (m)',NULL,NULL,'EPSG','4283','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-84.57,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000036,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7176','InGCS DeKalb (ftUS)',NULL,NULL,'EPSG','4283','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-84.57,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000036,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7177','InGCS Dubois-Martin (m)',NULL,NULL,'EPSG','4271','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.12,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.57,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00002,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7178','InGCS Dubois-Martin (ftUS)',NULL,NULL,'EPSG','4271','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.12,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.57,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00002,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7179','InGCS Elkhart-Kosciusko-Wabash (m)',NULL,NULL,'EPSG','4280','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.39,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.51,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000033,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7180','InGCS Elkhart-Kosciusko-Wabash (ftUS)',NULL,NULL,'EPSG','4280','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.39,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.51,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000033,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7181','InGCS Fayette-Franklin-Union (m)',NULL,NULL,'EPSG','4300','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.03,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000038,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7182','InGCS Fayette-Franklin-Union (ftUS)',NULL,NULL,'EPSG','4300','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.03,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000038,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7183','InGCS Fountain-Warren (m)',NULL,NULL,'EPSG','4259','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.57,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.18,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000025,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7184','InGCS Fountain-Warren (ftUS)',NULL,NULL,'EPSG','4259','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.57,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.18,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000025,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7185','InGCS Fulton-Marshall-St. Joseph (m)',NULL,NULL,'EPSG','4279','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.54,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.18,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000031,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7186','InGCS Fulton-Marshall-St. Joseph (ftUS)',NULL,NULL,'EPSG','4279','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.54,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.18,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000031,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7187','InGCS Gibson (m)',NULL,NULL,'EPSG','4273','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.09,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.39,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000013,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7188','InGCS Gibson (ftUS)',NULL,NULL,'EPSG','4273','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.09,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.39,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000013,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7189','InGCS Grant (m)',NULL,NULL,'EPSG','4290','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.21,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.42,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000034,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7190','InGCS Grant (ftUS)',NULL,NULL,'EPSG','4290','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.21,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.42,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000034,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7191','InGCS Hamilton-Tipton (m)',NULL,NULL,'EPSG','4293','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.54,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000034,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7192','InGCS Hamilton-Tipton (ftUS)',NULL,NULL,'EPSG','4293','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.54,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000034,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7193','InGCS Hancock-Madison (m)',NULL,NULL,'EPSG','4294','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.39,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.48,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000036,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7194','InGCS Hancock-Madison (ftUS)',NULL,NULL,'EPSG','4294','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.39,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.48,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000036,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7195','InGCS Harrison-Washington (m)',NULL,NULL,'EPSG','4307','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.57,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.09,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000027,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7196','InGCS Harrison-Washington (ftUS)',NULL,NULL,'EPSG','4307','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.57,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.09,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000027,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7197','InGCS Henry (m)',NULL,NULL,'EPSG','4296','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.27,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000043,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7198','InGCS Henry (ftUS)',NULL,NULL,'EPSG','4296','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.27,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000043,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7199','InGCS Howard-Miami (m)',NULL,NULL,'EPSG','4287','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.21,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.09,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000031,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7200','InGCS Howard-Miami (ftUS)',NULL,NULL,'EPSG','4287','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.21,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.09,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000031,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7201','InGCS Huntington-Whitley (m)',NULL,NULL,'EPSG','4284','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.39,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000034,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7202','InGCS Huntington-Whitley (ftUS)',NULL,NULL,'EPSG','4284','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.39,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000034,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7203','InGCS Jackson (m)',NULL,NULL,'EPSG','4303','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.42,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.57,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000022,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7204','InGCS Jackson (ftUS)',NULL,NULL,'EPSG','4303','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.42,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.57,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000022,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7205','InGCS Jasper-Porter (m)',NULL,NULL,'EPSG','4254','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.42,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.06,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000027,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7206','InGCS Jasper-Porter (ftUS)',NULL,NULL,'EPSG','4254','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.42,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.06,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000027,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7207','InGCS Jay (m)',NULL,NULL,'EPSG','4292','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.18,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000038,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7208','InGCS Jay (ftUS)',NULL,NULL,'EPSG','4292','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.18,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000038,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7209','InGCS Jefferson (m)',NULL,NULL,'EPSG','4309','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.33,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.21,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000028,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7210','InGCS Jefferson (ftUS)',NULL,NULL,'EPSG','4309','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.33,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.21,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000028,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7211','InGCS Jennings (m)',NULL,NULL,'EPSG','4304','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.48,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.48,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000025,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7212','InGCS Jennings (ftUS)',NULL,NULL,'EPSG','4304','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.48,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.48,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000025,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7213','InGCS Johnson-Marion (m)',NULL,NULL,'EPSG','4297','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.18,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.09,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000031,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7214','InGCS Johnson-Marion (ftUS)',NULL,NULL,'EPSG','4297','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.18,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.09,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000031,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7215','InGCS Knox (m)',NULL,NULL,'EPSG','4270','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.24,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.27,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000015,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7216','InGCS Knox (ftUS)',NULL,NULL,'EPSG','4270','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.24,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.27,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000015,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7217','InGCS LaGrange-Noble (m)',NULL,NULL,'EPSG','4281','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.27,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000037,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7218','InGCS LaGrange-Noble (ftUS)',NULL,NULL,'EPSG','4281','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.27,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000037,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7219','InGCS Lake-Newton (m)',NULL,NULL,'EPSG','4253','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.42,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.24,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000026,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7220','InGCS Lake-Newton (ftUS)',NULL,NULL,'EPSG','4253','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.42,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.24,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000026,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7221','InGCS LaPorte-Pulaski-Starke (m)',NULL,NULL,'EPSG','4255','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.54,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000027,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7222','InGCS LaPorte-Pulaski-Starke (ftUS)',NULL,NULL,'EPSG','4255','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.54,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000027,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7223','InGCS Monroe-Morgan (m)',NULL,NULL,'EPSG','4267','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.57,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000028,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7224','InGCS Monroe-Morgan (ftUS)',NULL,NULL,'EPSG','4267','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.57,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000028,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7225','InGCS Montgomery-Putnam (m)',NULL,NULL,'EPSG','4262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.27,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.57,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000031,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7226','InGCS Montgomery-Putnam (ftUS)',NULL,NULL,'EPSG','4262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.27,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.57,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000031,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7227','InGCS Owen (m)',NULL,NULL,'EPSG','4266','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.09,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.54,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000026,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7228','InGCS Owen (ftUS)',NULL,NULL,'EPSG','4266','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.09,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.54,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000026,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7229','InGCS Parke-Vermillion (m)',NULL,NULL,'EPSG','4261','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.36,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.21,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000022,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7230','InGCS Parke-Vermillion (ftUS)',NULL,NULL,'EPSG','4261','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.36,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.21,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000022,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7231','InGCS Perry (m)',NULL,NULL,'EPSG','4278','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.48,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.42,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00002,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7232','InGCS Perry (ftUS)',NULL,NULL,'EPSG','4278','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.48,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.42,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00002,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7233','InGCS Pike-Warrick (m)',NULL,NULL,'EPSG','4274','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.51,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.18,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000015,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7234','InGCS Pike-Warrick (ftUS)',NULL,NULL,'EPSG','4274','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.51,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.18,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000015,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7235','InGCS Posey (m)',NULL,NULL,'EPSG','4275','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.57,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000013,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7236','InGCS Posey (ftUS)',NULL,NULL,'EPSG','4275','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.57,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000013,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7237','InGCS Randolph-Wayne (m)',NULL,NULL,'EPSG','4295','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.42,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.03,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000044,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7238','InGCS Randolph-Wayne (ftUS)',NULL,NULL,'EPSG','4295','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.42,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.03,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000044,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7239','InGCS Ripley (m)',NULL,NULL,'EPSG','4305','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.54,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.18,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000038,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7240','InGCS Ripley (ftUS)',NULL,NULL,'EPSG','4305','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.54,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.18,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000038,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7241','InGCS Shelby (m)',NULL,NULL,'EPSG','4298','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.18,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.54,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00003,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7242','InGCS Shelby (ftUS)',NULL,NULL,'EPSG','4298','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.18,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.54,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00003,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7243','InGCS Spencer (m)',NULL,NULL,'EPSG','4277','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.03,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000014,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7244','InGCS Spencer (ftUS)',NULL,NULL,'EPSG','4277','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.03,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000014,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7245','InGCS Steuben (m)',NULL,NULL,'EPSG','4282','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000041,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7246','InGCS Steuben (ftUS)',NULL,NULL,'EPSG','4282','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000041,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7247','InGCS Sullivan (m)',NULL,NULL,'EPSG','4268','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.54,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000017,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7248','InGCS Sullivan (ftUS)',NULL,NULL,'EPSG','4268','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.54,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000017,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7249','InGCS Tippecanoe-White (m)',NULL,NULL,'EPSG','4257','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.12,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.54,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000026,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7250','InGCS Tippecanoe-White (ftUS)',NULL,NULL,'EPSG','4257','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.12,'EPSG','9110','EPSG','8802','Longitude of natural origin',-86.54,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000026,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7251','InGCS Vanderburgh (m)',NULL,NULL,'EPSG','4276','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.48,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.33,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000015,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7252','InGCS Vanderburgh (ftUS)',NULL,NULL,'EPSG','4276','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.48,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.33,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000015,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7253','InGCS Vigo (m)',NULL,NULL,'EPSG','4264','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.27,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00002,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7254','InGCS Vigo (ftUS)',NULL,NULL,'EPSG','4264','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.27,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00002,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7255','InGCS Wells (m)',NULL,NULL,'EPSG','4288','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.33,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000034,'EPSG','9201','EPSG','8806','False easting',240000.0,'EPSG','9001','EPSG','8807','False northing',36000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7256','InGCS Wells (ftUS)',NULL,NULL,'EPSG','4288','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.33,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000034,'EPSG','9201','EPSG','8806','False easting',787400.0,'EPSG','9003','EPSG','8807','False northing',118110.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7378','WISCRS Ashland County (m)',NULL,NULL,'EPSG','4320','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.4222,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.372,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000495683,'EPSG','9201','EPSG','8806','False easting',172821.9461,'EPSG','9001','EPSG','8807','False northing',0.0017,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7379','WISCRS Ashland County (ftUS)',NULL,NULL,'EPSG','4320','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.4222,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.372,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000495683,'EPSG','9201','EPSG','8806','False easting',567000.001,'EPSG','9003','EPSG','8807','False northing',0.006,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7380','WISCRS Bayfield County (m)',NULL,NULL,'EPSG','4321','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',46.4010734158,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.091,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000331195,'EPSG','9201','EPSG','8806','False easting',228600.4575,'EPSG','9001','EPSG','8807','False northing',148551.4837,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7381','WISCRS Bayfield County (ftUS)',NULL,NULL,'EPSG','4321','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',46.4010734158,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.091,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000331195,'EPSG','9201','EPSG','8806','False easting',750000.001,'EPSG','9003','EPSG','8807','False northing',487372.659,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7382','WISCRS Burnett County (m)',NULL,NULL,'EPSG','4325','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.5355373517,'EPSG','9110','EPSG','8802','Longitude of natural origin',-92.2728,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000383841,'EPSG','9201','EPSG','8806','False easting',64008.1276,'EPSG','9001','EPSG','8807','False northing',59445.9043,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7383','WISCRS Burnett County (ftUS)',NULL,NULL,'EPSG','4325','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.5355373517,'EPSG','9110','EPSG','8802','Longitude of natural origin',-92.2728,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000383841,'EPSG','9201','EPSG','8806','False easting',209999.999,'EPSG','9003','EPSG','8807','False northing',195032.104,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7384','WISCRS Douglas County (m)',NULL,NULL,'EPSG','4326','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.53,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.55,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000385418,'EPSG','9201','EPSG','8806','False easting',59131.3183,'EPSG','9001','EPSG','8807','False northing',0.0041,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7385','WISCRS Douglas County (ftUS)',NULL,NULL,'EPSG','4326','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.53,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.55,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000385418,'EPSG','9201','EPSG','8806','False easting',194000.0,'EPSG','9003','EPSG','8807','False northing',0.013,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7386','WISCRS Florence County (m)',NULL,NULL,'EPSG','4327','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.262,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.083,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000552095,'EPSG','9201','EPSG','8806','False easting',133502.6683,'EPSG','9001','EPSG','8807','False northing',0.0063,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7387','WISCRS Florence County (ftUS)',NULL,NULL,'EPSG','4327','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.262,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.083,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000552095,'EPSG','9201','EPSG','8806','False easting',438000.004,'EPSG','9003','EPSG','8807','False northing',0.021,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7388','WISCRS Forest County (m)',NULL,NULL,'EPSG','4328','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.002,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.38,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000673004,'EPSG','9201','EPSG','8806','False easting',275844.5533,'EPSG','9001','EPSG','8807','False northing',0.0157,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7389','WISCRS Forest County (ftUS)',NULL,NULL,'EPSG','4328','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.002,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.38,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000673004,'EPSG','9201','EPSG','8806','False easting',905000.005,'EPSG','9003','EPSG','8807','False northing',0.052,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7390','WISCRS Iron County (m)',NULL,NULL,'EPSG','4329','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.26,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.152,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000677153,'EPSG','9201','EPSG','8806','False easting',220980.4419,'EPSG','9001','EPSG','8807','False northing',0.0085,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7391','WISCRS Iron County (ftUS)',NULL,NULL,'EPSG','4329','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.26,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.152,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000677153,'EPSG','9201','EPSG','8806','False easting',725000.0,'EPSG','9003','EPSG','8807','False northing',0.028,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7392','WISCRS Oneida County (m)',NULL,NULL,'EPSG','4330','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.4215205573,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.324,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000686968,'EPSG','9201','EPSG','8806','False easting',70104.1401,'EPSG','9001','EPSG','8807','False northing',57588.0346,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7393','WISCRS Oneida County (ftUS)',NULL,NULL,'EPSG','4330','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.4215205573,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.324,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000686968,'EPSG','9201','EPSG','8806','False easting',230000.0,'EPSG','9003','EPSG','8807','False northing',188936.744,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7394','WISCRS Price County (m)',NULL,NULL,'EPSG','4332','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.332,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.292,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000649554,'EPSG','9201','EPSG','8806','False easting',227990.8546,'EPSG','9001','EPSG','8807','False northing',0.0109,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7395','WISCRS Price County (ftUS)',NULL,NULL,'EPSG','4332','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.332,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.292,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000649554,'EPSG','9201','EPSG','8806','False easting',747999.995,'EPSG','9003','EPSG','8807','False northing',0.036,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7396','WISCRS Sawyer County (m)',NULL,NULL,'EPSG','4333','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.5400356873,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.07,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000573461,'EPSG','9201','EPSG','8806','False easting',216713.2336,'EPSG','9001','EPSG','8807','False northing',120734.1631,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7397','WISCRS Sawyer County (ftUS)',NULL,NULL,'EPSG','4333','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.5400356873,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.07,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000573461,'EPSG','9201','EPSG','8806','False easting',711000.001,'EPSG','9003','EPSG','8807','False northing',396108.667,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7398','WISCRS Vilas County (m)',NULL,NULL,'EPSG','4334','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',46.0440238726,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.292,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000730142,'EPSG','9201','EPSG','8806','False easting',134417.0689,'EPSG','9001','EPSG','8807','False northing',50337.1092,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7399','WISCRS Vilas County (ftUS)',NULL,NULL,'EPSG','4334','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',46.0440238726,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.292,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000730142,'EPSG','9201','EPSG','8806','False easting',441000.0,'EPSG','9003','EPSG','8807','False northing',165147.666,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7424','WISCRS Washburn County (m)',NULL,NULL,'EPSG','4335','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.57403914,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.47,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000475376,'EPSG','9201','EPSG','8806','False easting',234086.8682,'EPSG','9001','EPSG','8807','False northing',188358.6058,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7425','WISCRS Washburn County (ftUS)',NULL,NULL,'EPSG','4335','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.57403914,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.47,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000475376,'EPSG','9201','EPSG','8806','False easting',768000.0,'EPSG','9003','EPSG','8807','False northing',617973.193,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7426','WISCRS Barron County (m)',NULL,NULL,'EPSG','4331','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.08,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.51,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000486665,'EPSG','9201','EPSG','8806','False easting',93150.0,'EPSG','9001','EPSG','8807','False northing',0.0029,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7427','WISCRS Barron County (ftUS)',NULL,NULL,'EPSG','4331','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.08,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.51,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000486665,'EPSG','9201','EPSG','8806','False easting',305609.625,'EPSG','9003','EPSG','8807','False northing',0.01,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7428','WISCRS Brown County (m)',NULL,NULL,'EPSG','4336','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-88.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.00002,'EPSG','9201','EPSG','8806','False easting',31600.0,'EPSG','9001','EPSG','8807','False northing',4600.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7429','WISCRS Brown County (ftUS)',NULL,NULL,'EPSG','4336','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00002,'EPSG','9201','EPSG','8806','False easting',103674.333,'EPSG','9003','EPSG','8807','False northing',15091.833,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7430','WISCRS Buffalo County (m)',NULL,NULL,'EPSG','4337','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.2853,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.475,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000382778,'EPSG','9201','EPSG','8806','False easting',175260.3502,'EPSG','9001','EPSG','8807','False northing',0.0048,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7431','WISCRS Buffalo County (ftUS)',NULL,NULL,'EPSG','4337','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.2853,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.475,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000382778,'EPSG','9201','EPSG','8806','False easting',574999.999,'EPSG','9003','EPSG','8807','False northing',0.016,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7432','WISCRS Chippewa County (m)',NULL,NULL,'EPSG','4338','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.5840284835,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.174,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000391127,'EPSG','9201','EPSG','8806','False easting',60045.72,'EPSG','9001','EPSG','8807','False northing',44091.4346,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7433','WISCRS Chippewa County (ftUS)',NULL,NULL,'EPSG','4338','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.5840284835,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.174,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000391127,'EPSG','9201','EPSG','8806','False easting',197000.0,'EPSG','9003','EPSG','8807','False northing',144656.648,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7434','WISCRS Clark County (m)',NULL,NULL,'EPSG','4339','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.36,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.423,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000463003,'EPSG','9201','EPSG','8806','False easting',199949.1989,'EPSG','9001','EPSG','8807','False northing',0.0086,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7435','WISCRS Clark County (ftUS)',NULL,NULL,'EPSG','4339','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.36,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.423,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000463003,'EPSG','9201','EPSG','8806','False easting',655999.997,'EPSG','9003','EPSG','8807','False northing',0.028,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7436','WISCRS Door County (m)',NULL,NULL,'EPSG','4340','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.24,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.162,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000187521,'EPSG','9201','EPSG','8806','False easting',158801.1176,'EPSG','9001','EPSG','8807','False northing',0.0023,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7437','WISCRS Door County (ftUS)',NULL,NULL,'EPSG','4340','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.24,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.162,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000187521,'EPSG','9201','EPSG','8806','False easting',521000.0,'EPSG','9003','EPSG','8807','False northing',0.008,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7438','WISCRS Dunn County (m)',NULL,NULL,'EPSG','4341','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.243,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.534,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000410324,'EPSG','9201','EPSG','8806','False easting',51816.104,'EPSG','9001','EPSG','8807','False northing',0.003,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7439','WISCRS Dunn County (ftUS)',NULL,NULL,'EPSG','4341','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.243,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.534,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000410324,'EPSG','9201','EPSG','8806','False easting',170000.001,'EPSG','9003','EPSG','8807','False northing',0.01,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7440','WISCRS Eau Claire County (m)',NULL,NULL,'EPSG','4342','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.5220212055,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.172,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000035079,'EPSG','9201','EPSG','8806','False easting',120091.4402,'EPSG','9001','EPSG','8807','False northing',91687.9239,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7441','WISCRS Eau Claire County (ftUS)',NULL,NULL,'EPSG','4342','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.5220212055,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.172,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000035079,'EPSG','9201','EPSG','8806','False easting',394000.0,'EPSG','9003','EPSG','8807','False northing',300812.797,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7450','WISCRS Jackson County (m)',NULL,NULL,'EPSG','4343','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.151200646,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.503946747,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000353,'EPSG','9201','EPSG','8806','False easting',27000.0,'EPSG','9001','EPSG','8807','False northing',25000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7451','WISCRS Jackson County (ftUS)',NULL,NULL,'EPSG','4343','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.151200646,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.503946747,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000353,'EPSG','9201','EPSG','8806','False easting',88582.5,'EPSG','9003','EPSG','8807','False northing',82020.833,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7452','WISCRS Langlade County (m)',NULL,NULL,'EPSG','4344','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.0915253579,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.02,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000627024,'EPSG','9201','EPSG','8806','False easting',198425.197,'EPSG','9001','EPSG','8807','False northing',105279.7829,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7453','WISCRS Langlade County (ftUS)',NULL,NULL,'EPSG','4344','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.0915253579,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.02,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000627024,'EPSG','9201','EPSG','8806','False easting',651000.0,'EPSG','9003','EPSG','8807','False northing',345405.421,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7454','WISCRS Lincoln County (m)',NULL,NULL,'EPSG','4345','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.504,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.44,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000599003,'EPSG','9201','EPSG','8806','False easting',116129.0323,'EPSG','9001','EPSG','8807','False northing',0.0058,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7455','WISCRS Lincoln County (ftUS)',NULL,NULL,'EPSG','4345','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.504,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.44,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000599003,'EPSG','9201','EPSG','8806','False easting',381000.0,'EPSG','9003','EPSG','8807','False northing',0.019,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7456','WISCRS Marathon County (m)',NULL,NULL,'EPSG','4346','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.5403255925,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.4612,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000053289,'EPSG','9201','EPSG','8806','False easting',74676.1493,'EPSG','9001','EPSG','8807','False northing',55049.2669,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7457','WISCRS Marathon County (ftUS)',NULL,NULL,'EPSG','4346','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.5403255925,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.4612,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000053289,'EPSG','9201','EPSG','8806','False easting',245000.0,'EPSG','9003','EPSG','8807','False northing',180607.47,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7458','WISCRS Marinette County (m)',NULL,NULL,'EPSG','4347','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.413,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.424,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000234982,'EPSG','9201','EPSG','8806','False easting',238658.8794,'EPSG','9001','EPSG','8807','False northing',0.0032,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7459','WISCRS Marinette County (ftUS)',NULL,NULL,'EPSG','4347','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.413,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.424,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000234982,'EPSG','9201','EPSG','8806','False easting',783000.007,'EPSG','9003','EPSG','8807','False northing',0.01,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7460','WISCRS Menominee County (m)',NULL,NULL,'EPSG','4348','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.43,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.25,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000362499,'EPSG','9201','EPSG','8806','False easting',105461.0121,'EPSG','9001','EPSG','8807','False northing',0.0029,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7461','WISCRS Menominee County (ftUS)',NULL,NULL,'EPSG','4348','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.43,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.25,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000362499,'EPSG','9201','EPSG','8806','False easting',346000.004,'EPSG','9003','EPSG','8807','False northing',0.01,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7462','WISCRS Oconto County (m)',NULL,NULL,'EPSG','4349','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.235,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.543,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000236869,'EPSG','9201','EPSG','8806','False easting',182880.3676,'EPSG','9001','EPSG','8807','False northing',0.0033,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7463','WISCRS Oconto County (ftUS)',NULL,NULL,'EPSG','4349','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.235,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.543,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000236869,'EPSG','9201','EPSG','8806','False easting',600000.006,'EPSG','9003','EPSG','8807','False northing',0.011,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7464','WISCRS Pepin and Pierce Counties (m)',NULL,NULL,'EPSG','4350','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.3810135939,'EPSG','9110','EPSG','8802','Longitude of natural origin',-92.134,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000362977,'EPSG','9201','EPSG','8806','False easting',167640.3354,'EPSG','9001','EPSG','8807','False northing',86033.0876,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7465','WISCRS Pepin and Pierce Counties (ftUS)',NULL,NULL,'EPSG','4350','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.3810135939,'EPSG','9110','EPSG','8802','Longitude of natural origin',-92.134,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000362977,'EPSG','9201','EPSG','8806','False easting',550000.0,'EPSG','9003','EPSG','8807','False northing',282260.222,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7466','WISCRS Polk County (m)',NULL,NULL,'EPSG','4351','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.394,'EPSG','9110','EPSG','8802','Longitude of natural origin',-92.38,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000433849,'EPSG','9201','EPSG','8806','False easting',141732.2823,'EPSG','9001','EPSG','8807','False northing',0.0059,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7467','WISCRS Polk County (ftUS)',NULL,NULL,'EPSG','4351','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.394,'EPSG','9110','EPSG','8802','Longitude of natural origin',-92.38,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000433849,'EPSG','9201','EPSG','8806','False easting',464999.996,'EPSG','9003','EPSG','8807','False northing',0.019,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7468','WISCRS Portage County (m)',NULL,NULL,'EPSG','4352','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.2500566311,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000039936,'EPSG','9201','EPSG','8806','False easting',56388.1128,'EPSG','9001','EPSG','8807','False northing',50022.1874,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7469','WISCRS Portage County (ftUS)',NULL,NULL,'EPSG','4352','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.2500566311,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000039936,'EPSG','9201','EPSG','8806','False easting',185000.0,'EPSG','9003','EPSG','8807','False northing',164114.46,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7470','WISCRS Rusk County (m)',NULL,NULL,'EPSG','4353','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.551,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.04,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000495976,'EPSG','9201','EPSG','8806','False easting',250546.1013,'EPSG','9001','EPSG','8807','False northing',0.0234,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7471','WISCRS Rusk County (ftUS)',NULL,NULL,'EPSG','4353','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.551,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.04,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000495976,'EPSG','9201','EPSG','8806','False easting',822000.001,'EPSG','9003','EPSG','8807','False northing',0.077,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7472','WISCRS Shawano County (m)',NULL,NULL,'EPSG','4354','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.021,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.362,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000032144,'EPSG','9201','EPSG','8806','False easting',262433.3253,'EPSG','9001','EPSG','8807','False northing',0.0096,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7473','WISCRS Shawano County (ftUS)',NULL,NULL,'EPSG','4354','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.021,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.362,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000032144,'EPSG','9201','EPSG','8806','False easting',861000.001,'EPSG','9003','EPSG','8807','False northing',0.031,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7474','WISCRS St. Croix County (m)',NULL,NULL,'EPSG','4355','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.021,'EPSG','9110','EPSG','8802','Longitude of natural origin',-92.38,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000381803,'EPSG','9201','EPSG','8806','False easting',165506.7302,'EPSG','9001','EPSG','8807','False northing',0.0103,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7475','WISCRS St. Croix County (ftUS)',NULL,NULL,'EPSG','4355','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.021,'EPSG','9110','EPSG','8802','Longitude of natural origin',-92.38,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000381803,'EPSG','9201','EPSG','8806','False easting',542999.997,'EPSG','9003','EPSG','8807','False northing',0.034,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7476','WISCRS Taylor County (m)',NULL,NULL,'EPSG','4356','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.1040159509,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.29,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000597566,'EPSG','9201','EPSG','8806','False easting',187147.5744,'EPSG','9001','EPSG','8807','False northing',107746.7522,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7477','WISCRS Taylor County (ftUS)',NULL,NULL,'EPSG','4356','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.1040159509,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.29,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000597566,'EPSG','9201','EPSG','8806','False easting',614000.0,'EPSG','9003','EPSG','8807','False northing',353499.136,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7478','WISCRS Trempealeau County (m)',NULL,NULL,'EPSG','4357','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.094,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.22,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000361538,'EPSG','9201','EPSG','8806','False easting',256946.9138,'EPSG','9001','EPSG','8807','False northing',0.0041,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7479','WISCRS Trempealeau County (ftUS)',NULL,NULL,'EPSG','4357','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.094,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.22,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000361538,'EPSG','9201','EPSG','8806','False easting',843000.0,'EPSG','9003','EPSG','8807','False northing',0.013,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7480','WISCRS Waupaca County (m)',NULL,NULL,'EPSG','4358','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.2513,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.49,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000333645,'EPSG','9201','EPSG','8806','False easting',185013.9709,'EPSG','9001','EPSG','8807','False northing',0.007,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7481','WISCRS Waupaca County (ftUS)',NULL,NULL,'EPSG','4358','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.2513,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.49,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000333645,'EPSG','9201','EPSG','8806','False easting',607000.003,'EPSG','9003','EPSG','8807','False northing',0.023,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7482','WISCRS Wood County (m)',NULL,NULL,'EPSG','4359','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.214534369,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000421209,'EPSG','9201','EPSG','8806','False easting',208483.6173,'EPSG','9001','EPSG','8807','False northing',134589.754,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7483','WISCRS Wood County (ftUS)',NULL,NULL,'EPSG','4359','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.214534369,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000421209,'EPSG','9201','EPSG','8806','False easting',684000.001,'EPSG','9003','EPSG','8807','False northing',441566.551,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7484','WISCRS Adams and Juneau Counties (m)',NULL,NULL,'EPSG','4360','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.22,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000365285,'EPSG','9201','EPSG','8806','False easting',147218.6942,'EPSG','9001','EPSG','8807','False northing',0.0037,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7485','WISCRS Adams and Juneau Counties (ftUS)',NULL,NULL,'EPSG','4360','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.22,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000365285,'EPSG','9201','EPSG','8806','False easting',482999.999,'EPSG','9003','EPSG','8807','False northing',0.012,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7486','WISCRS Calumet, Fond du Lac, Outagamie and Winnebago Counties (m)',NULL,NULL,'EPSG','4361','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.431,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000286569,'EPSG','9201','EPSG','8806','False easting',244754.8893,'EPSG','9001','EPSG','8807','False northing',0.0049,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7487','WISCRS Calumet, Fond du Lac, Outagamie and Winnebago Counties (ftUS)',NULL,NULL,'EPSG','4361','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.431,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000286569,'EPSG','9201','EPSG','8806','False easting',802999.999,'EPSG','9003','EPSG','8807','False northing',0.016,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7488','WISCRS Columbia County (m)',NULL,NULL,'EPSG','4362','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',43.2745167925,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.234,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00003498,'EPSG','9201','EPSG','8806','False easting',169164.3381,'EPSG','9001','EPSG','8807','False northing',111569.6134,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7489','WISCRS Columbia County (ftUS)',NULL,NULL,'EPSG','4362','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',43.2745167925,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.234,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00003498,'EPSG','9201','EPSG','8806','False easting',554999.999,'EPSG','9003','EPSG','8807','False northing',366041.307,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7490','WISCRS Crawford County (m)',NULL,NULL,'EPSG','4363','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',43.1200200178,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.562,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000349151,'EPSG','9201','EPSG','8806','False easting',113690.6274,'EPSG','9001','EPSG','8807','False northing',53703.1201,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7491','WISCRS Crawford County (ftUS)',NULL,NULL,'EPSG','4363','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',43.1200200178,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.562,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000349151,'EPSG','9201','EPSG','8806','False easting',373000.0,'EPSG','9003','EPSG','8807','False northing',176190.987,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7492','WISCRS Dane County (m)',NULL,NULL,'EPSG','4364','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',43.0410257735,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.252,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000384786,'EPSG','9201','EPSG','8806','False easting',247193.2944,'EPSG','9001','EPSG','8807','False northing',146591.9896,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7493','WISCRS Dane County (ftUS)',NULL,NULL,'EPSG','4364','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',43.0410257735,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.252,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000384786,'EPSG','9201','EPSG','8806','False easting',811000.0,'EPSG','9003','EPSG','8807','False northing',480943.886,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7494','WISCRS Dodge and Jefferson Counties (m)',NULL,NULL,'EPSG','4365','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.282,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.463,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000346418,'EPSG','9201','EPSG','8806','False easting',263347.7263,'EPSG','9001','EPSG','8807','False northing',0.0076,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7495','WISCRS Dodge and Jefferson Counties (ftUS)',NULL,NULL,'EPSG','4365','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.282,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.463,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000346418,'EPSG','9201','EPSG','8806','False easting',863999.999,'EPSG','9003','EPSG','8807','False northing',0.025,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7496','WISCRS Grant County (m)',NULL,NULL,'EPSG','4366','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.244,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.48,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000349452,'EPSG','9201','EPSG','8806','False easting',242316.4841,'EPSG','9001','EPSG','8807','False northing',0.01,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7497','WISCRS Grant County (ftUS)',NULL,NULL,'EPSG','4366','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.244,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.48,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000349452,'EPSG','9201','EPSG','8806','False easting',794999.998,'EPSG','9003','EPSG','8807','False northing',0.033,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7498','WISCRS Green and Lafayette Counties (m)',NULL,NULL,'EPSG','4367','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',42.3815224197,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.502,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000390487,'EPSG','9201','EPSG','8806','False easting',170078.7403,'EPSG','9001','EPSG','8807','False northing',45830.2947,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7499','WISCRS Green and Lafayette Counties (ftUS)',NULL,NULL,'EPSG','4367','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',42.3815224197,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.502,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000390487,'EPSG','9201','EPSG','8806','False easting',558000.0,'EPSG','9003','EPSG','8807','False northing',150361.559,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7500','WISCRS Green Lake and Marquette Counties (m)',NULL,NULL,'EPSG','4368','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',43.4825200424,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.143,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000344057,'EPSG','9201','EPSG','8806','False easting',150876.3018,'EPSG','9001','EPSG','8807','False northing',79170.7795,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7501','WISCRS Green Lake and Marquette Counties (ftUS)',NULL,NULL,'EPSG','4368','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',43.4825200424,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.143,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000344057,'EPSG','9201','EPSG','8806','False easting',495000.0,'EPSG','9003','EPSG','8807','False northing',259746.132,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7502','WISCRS Iowa County (m)',NULL,NULL,'EPSG','4369','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.322,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.094,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000394961,'EPSG','9201','EPSG','8806','False easting',113081.0261,'EPSG','9001','EPSG','8807','False northing',0.0045,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7503','WISCRS Iowa County (ftUS)',NULL,NULL,'EPSG','4369','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.322,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.094,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000394961,'EPSG','9201','EPSG','8806','False easting',371000.0,'EPSG','9003','EPSG','8807','False northing',0.015,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7504','WISCRS Kenosha, Milwaukee, Ozaukee and Racine Counties (m)',NULL,NULL,'EPSG','4370','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.13,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.534,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000260649,'EPSG','9201','EPSG','8806','False easting',185928.3728,'EPSG','9001','EPSG','8807','False northing',0.0009,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7505','WISCRS Kenosha, Milwaukee, Ozaukee and Racine Counties (ftUS)',NULL,NULL,'EPSG','4370','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.13,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.534,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000260649,'EPSG','9201','EPSG','8806','False easting',610000.003,'EPSG','9003','EPSG','8807','False northing',0.003,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7506','WISCRS Kewaunee, Manitowoc and Sheboygan Counties (m)',NULL,NULL,'EPSG','4371','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.16,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.33,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000233704,'EPSG','9201','EPSG','8806','False easting',79857.7614,'EPSG','9001','EPSG','8807','False northing',0.0012,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7507','WISCRS Kewaunee, Manitowoc and Sheboygan Counties (ftUS)',NULL,NULL,'EPSG','4371','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.16,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.33,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000233704,'EPSG','9201','EPSG','8806','False easting',262000.006,'EPSG','9003','EPSG','8807','False northing',0.004,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7508','WISCRS La Crosse County (m)',NULL,NULL,'EPSG','4372','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.2704,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.19,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000319985,'EPSG','9201','EPSG','8806','False easting',130454.6598,'EPSG','9001','EPSG','8807','False northing',0.0033,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7509','WISCRS La Crosse County (ftUS)',NULL,NULL,'EPSG','4372','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.2704,'EPSG','9110','EPSG','8802','Longitude of natural origin',-91.19,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000319985,'EPSG','9201','EPSG','8806','False easting',427999.996,'EPSG','9003','EPSG','8807','False northing',0.011,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7510','WISCRS Monroe County (m)',NULL,NULL,'EPSG','4373','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.0000266143,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.383,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000434122,'EPSG','9201','EPSG','8806','False easting',204521.209,'EPSG','9001','EPSG','8807','False northing',121923.9861,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7511','WISCRS Monroe County (ftUS)',NULL,NULL,'EPSG','4373','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.0000266143,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.383,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000434122,'EPSG','9201','EPSG','8806','False easting',671000.0,'EPSG','9003','EPSG','8807','False northing',400012.278,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7512','WISCRS Richland County (m)',NULL,NULL,'EPSG','4374','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',43.1920326539,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.255,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000375653,'EPSG','9201','EPSG','8806','False easting',202387.6048,'EPSG','9001','EPSG','8807','False northing',134255.4253,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7513','WISCRS Richland County (ftUS)',NULL,NULL,'EPSG','4374','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',43.1920326539,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.255,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000375653,'EPSG','9201','EPSG','8806','False easting',664000.0,'EPSG','9003','EPSG','8807','False northing',440469.675,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7514','WISCRS Rock County (m)',NULL,NULL,'EPSG','4375','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.564,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.042,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000337311,'EPSG','9201','EPSG','8806','False easting',146304.2926,'EPSG','9001','EPSG','8807','False northing',0.0068,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7515','WISCRS Rock County (ftUS)',NULL,NULL,'EPSG','4375','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.564,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.042,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000337311,'EPSG','9201','EPSG','8806','False easting',480000.0,'EPSG','9003','EPSG','8807','False northing',0.022,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7516','WISCRS Sauk County (m)',NULL,NULL,'EPSG','4376','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.491,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.54,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000373868,'EPSG','9201','EPSG','8806','False easting',185623.5716,'EPSG','9001','EPSG','8807','False northing',0.0051,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7517','WISCRS Sauk County (ftUS)',NULL,NULL,'EPSG','4376','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.491,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.54,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000373868,'EPSG','9201','EPSG','8806','False easting',609000.001,'EPSG','9003','EPSG','8807','False northing',0.017,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7518','WISCRS Vernon County (m)',NULL,NULL,'EPSG','4377','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',43.3430118583,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.47,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000408158,'EPSG','9201','EPSG','8806','False easting',222504.4451,'EPSG','9001','EPSG','8807','False northing',47532.0602,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7519','WISCRS Vernon County (ftUS)',NULL,NULL,'EPSG','4377','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',43.3430118583,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.47,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000408158,'EPSG','9201','EPSG','8806','False easting',730000.0,'EPSG','9003','EPSG','8807','False northing',155944.768,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7520','WISCRS Walworth County (m)',NULL,NULL,'EPSG','4378','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',42.4010063549,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.323,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000367192,'EPSG','9201','EPSG','8806','False easting',232562.8651,'EPSG','9001','EPSG','8807','False northing',111088.2224,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7521','WISCRS Walworth County (ftUS)',NULL,NULL,'EPSG','4378','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',42.4010063549,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.323,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000367192,'EPSG','9201','EPSG','8806','False easting',763000.0,'EPSG','9003','EPSG','8807','False northing',364461.943,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7522','WISCRS Washington County (m)',NULL,NULL,'EPSG','4379','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.5505,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.035,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00003738,'EPSG','9201','EPSG','8806','False easting',120091.4415,'EPSG','9001','EPSG','8807','False northing',0.003,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7523','WISCRS Washington County (ftUS)',NULL,NULL,'EPSG','4379','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.5505,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.035,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00003738,'EPSG','9201','EPSG','8806','False easting',394000.004,'EPSG','9003','EPSG','8807','False northing',0.01,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7524','WISCRS Waukesha County (m)',NULL,NULL,'EPSG','4380','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.341,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.133,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000346179,'EPSG','9201','EPSG','8806','False easting',208788.418,'EPSG','9001','EPSG','8807','False northing',0.0034,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7525','WISCRS Waukesha County (ftUS)',NULL,NULL,'EPSG','4380','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.341,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.133,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000346179,'EPSG','9201','EPSG','8806','False easting',685000.001,'EPSG','9003','EPSG','8807','False northing',0.011,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7526','WISCRS Waushara County (m)',NULL,NULL,'EPSG','4381','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.0650198565,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.143,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000392096,'EPSG','9201','EPSG','8806','False easting',120091.4402,'EPSG','9001','EPSG','8807','False northing',45069.7587,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7527','WISCRS Waushara County (ftUS)',NULL,NULL,'EPSG','4381','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.0650198565,'EPSG','9110','EPSG','8802','Longitude of natural origin',-89.143,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000392096,'EPSG','9201','EPSG','8806','False easting',394000.0,'EPSG','9003','EPSG','8807','False northing',147866.367,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7687','Kyrgyzstan zone 1',NULL,NULL,'EPSG','4385','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',68.31,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1300000.0,'EPSG','9001','EPSG','8807','False northing',14743.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7688','Kyrgyzstan zone 2',NULL,NULL,'EPSG','4386','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',71.31,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',2300000.0,'EPSG','9001','EPSG','8807','False northing',14743.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7689','Kyrgyzstan zone 3',NULL,NULL,'EPSG','4387','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',74.31,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',3300000.0,'EPSG','9001','EPSG','8807','False northing',14743.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7690','Kyrgyzstan zone 4',NULL,NULL,'EPSG','4388','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',77.31,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',4300000.0,'EPSG','9001','EPSG','8807','False northing',14743.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7691','Kyrgyzstan zone 5',NULL,NULL,'EPSG','4389','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',80.31,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',5300000.0,'EPSG','9001','EPSG','8807','False northing',14743.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7722','Survey of India Lambert',NULL,NULL,'EPSG','1121','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',24.0,'EPSG','9102','EPSG','8822','Longitude of false origin',80.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',12.2822638,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',35.1022096,'EPSG','9110','EPSG','8826','Easting at false origin',4000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7723','Andhra Pradesh NSF LCC',NULL,NULL,'EPSG','4394','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',16.25543298,'EPSG','9102','EPSG','8822','Longitude of false origin',80.875,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',13.75,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',18.75,'EPSG','9102','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7724','Arunachal Pradesh NSF LCC',NULL,NULL,'EPSG','4395','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',28.00157897,'EPSG','9102','EPSG','8822','Longitude of false origin',94.5,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',27.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',29.0,'EPSG','9102','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7725','Assam NSF LCC',NULL,NULL,'EPSG','4396','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',26.00257703,'EPSG','9102','EPSG','8822','Longitude of false origin',92.75,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',24.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',27.2,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7726','Bihar NSF LCC',NULL,NULL,'EPSG','4397','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',25.87725247,'EPSG','9102','EPSG','8822','Longitude of false origin',85.875,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',24.625,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',27.125,'EPSG','9102','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7727','Delhi NSF LCC',NULL,NULL,'EPSG','4422','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',28.62510126,'EPSG','9102','EPSG','8822','Longitude of false origin',77.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',28.223,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',28.523,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7728','Gujarat NSF LCC',NULL,NULL,'EPSG','4400','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',22.37807121,'EPSG','9102','EPSG','8822','Longitude of false origin',71.375,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',20.473,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',23.573,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7729','Haryana NSF LCC',NULL,NULL,'EPSG','4401','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',29.25226266,'EPSG','9102','EPSG','8822','Longitude of false origin',76.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',28.05,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',30.25,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7730','Himachal Pradesh NSF LCC',NULL,NULL,'EPSG','4402','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',31.75183497,'EPSG','9102','EPSG','8822','Longitude of false origin',77.375,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',30.75,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',32.75,'EPSG','9102','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7731','Jammu and Kashmir NSF LCC',NULL,NULL,'EPSG','4403','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',34.75570874,'EPSG','9102','EPSG','8822','Longitude of false origin',76.5,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',33.05,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',36.25,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7732','Jharkhand NSF LCC',NULL,NULL,'EPSG','4404','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',23.62652682,'EPSG','9102','EPSG','8822','Longitude of false origin',85.625,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',22.323,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',24.423,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7733','Madhya Pradesh NSF LCC',NULL,NULL,'EPSG','4407','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',24.00529821,'EPSG','9102','EPSG','8822','Longitude of false origin',78.375,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',22.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',26.0,'EPSG','9102','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7734','Maharashtra NSF LCC',NULL,NULL,'EPSG','4408','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',18.88015774,'EPSG','9102','EPSG','8822','Longitude of false origin',76.75,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',16.373,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',21.073,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7735','Manipur NSF LCC',NULL,NULL,'EPSG','4409','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',24.75060911,'EPSG','9102','EPSG','8822','Longitude of false origin',94.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',24.05,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',25.25,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7736','Meghalaya NSF LCC',NULL,NULL,'EPSG','4410','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',25.62524747,'EPSG','9102','EPSG','8822','Longitude of false origin',91.375,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',25.123,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',26.023,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7737','Nagaland NSF LCC',NULL,NULL,'EPSG','4412','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',26.12581974,'EPSG','9102','EPSG','8822','Longitude of false origin',94.375,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',25.223,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',26.523,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7738','Northeast India NSF LCC',NULL,NULL,'EPSG','4392','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',25.63452135,'EPSG','9102','EPSG','8822','Longitude of false origin',93.5,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',23.023,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',28.123,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7739','Orissa NSF LCC',NULL,NULL,'EPSG','4413','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',20.25305174,'EPSG','9102','EPSG','8822','Longitude of false origin',84.375,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',18.35,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',21.55,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7740','Punjab NSF LCC',NULL,NULL,'EPSG','4414','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',31.00178226,'EPSG','9102','EPSG','8822','Longitude of false origin',75.375,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',30.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',32.0,'EPSG','9102','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7741','Rajasthan NSF LCC',NULL,NULL,'EPSG','4415','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',26.88505546,'EPSG','9102','EPSG','8822','Longitude of false origin',73.875,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',24.173,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',29.273,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7742','Uttar Pradesh NSF LCC',NULL,NULL,'EPSG','4419','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',27.13270823,'EPSG','9102','EPSG','8822','Longitude of false origin',80.875,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',24.523,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',29.223,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7743','Uttaranchal NSF LCC',NULL,NULL,'EPSG','4420','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',30.0017132,'EPSG','9102','EPSG','8822','Longitude of false origin',79.375,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',29.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',31.0,'EPSG','9102','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7744','Andaman and Nicobar NSF TM',NULL,NULL,'EPSG','4423','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',10.25,'EPSG','9102','EPSG','8802','Longitude of natural origin',93.25,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999428,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7745','Chhattisgarh NSF TM',NULL,NULL,'EPSG','4398','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',21.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',82.25,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9998332,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7746','Goa NSF TM',NULL,NULL,'EPSG','4399','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',15.375,'EPSG','9102','EPSG','8802','Longitude of natural origin',74.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999913,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7747','Karnataka NSF TM',NULL,NULL,'EPSG','4405','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',15.125,'EPSG','9102','EPSG','8802','Longitude of natural origin',76.375,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9998012,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7748','Kerala NSF TM',NULL,NULL,'EPSG','4406','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',10.5,'EPSG','9102','EPSG','8802','Longitude of natural origin',76.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999177,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7749','Lakshadweep NSF TM',NULL,NULL,'EPSG','4424','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',10.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',73.125,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999536,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7750','Mizoram NSF TM',NULL,NULL,'EPSG','4411','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',23.125,'EPSG','9102','EPSG','8802','Longitude of natural origin',92.75,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999821,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7751','Sikkim NSF TM',NULL,NULL,'EPSG','4416','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',27.625,'EPSG','9102','EPSG','8802','Longitude of natural origin',88.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999926,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7752','Tamil Nadu NSF TM',NULL,NULL,'EPSG','4417','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',10.875,'EPSG','9102','EPSG','8802','Longitude of natural origin',78.375,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9997942,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7753','Tripura NSF TM',NULL,NULL,'EPSG','4418','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',23.75,'EPSG','9102','EPSG','8802','Longitude of natural origin',91.75,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999822,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7754','West Bengal NSF TM',NULL,NULL,'EPSG','4421','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',24.375,'EPSG','9102','EPSG','8802','Longitude of natural origin',87.875,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9998584,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7802','Cadastral Coordinate System 2005',NULL,NULL,'EPSG','3224','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',42.400435246,'EPSG','9110','EPSG','8822','Longitude of false origin',25.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',42.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',43.2,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4725824.3591,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7812','Height <> Depth Conversion',NULL,NULL,'EPSG','1262','EPSG','1068','Height Depth Reversal',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7813','Vertical Axis Unit Conversion',NULL,NULL,'EPSG','1262','EPSG','1069','Change of Vertical Unit','EPSG','1051','Unit conversion scalar',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7818','CS63 zone X1',NULL,NULL,'EPSG','4435','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.05,'EPSG','9110','EPSG','8802','Longitude of natural origin',23.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7819','CS63 zone X2',NULL,NULL,'EPSG','4429','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.05,'EPSG','9110','EPSG','8802','Longitude of natural origin',26.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',2300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7820','CS63 zone X3',NULL,NULL,'EPSG','4430','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.05,'EPSG','9110','EPSG','8802','Longitude of natural origin',29.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',3300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7821','CS63 zone X4',NULL,NULL,'EPSG','4431','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.05,'EPSG','9110','EPSG','8802','Longitude of natural origin',32.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',4300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7822','CS63 zone X5',NULL,NULL,'EPSG','4432','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.05,'EPSG','9110','EPSG','8802','Longitude of natural origin',35.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',5300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7823','CS63 zone X6',NULL,NULL,'EPSG','4433','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.05,'EPSG','9110','EPSG','8802','Longitude of natural origin',38.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',6300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7824','CS63 zone X7',NULL,NULL,'EPSG','4434','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.05,'EPSG','9110','EPSG','8802','Longitude of natural origin',41.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',7300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7875','St. Helena Local Grid 1971',NULL,NULL,'EPSG','3183','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-15.58,'EPSG','9110','EPSG','8802','Longitude of natural origin',-5.43,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',2000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7876','St. Helena Local Grid (Tritan)',NULL,NULL,'EPSG','3183','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-15.58,'EPSG','9110','EPSG','8802','Longitude of natural origin',-5.43,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',299483.737,'EPSG','9001','EPSG','8807','False northing',2000527.879,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7963','Poolbeg height (ft(Br36)) to Poolbeg height (m)',NULL,NULL,'EPSG','1305','EPSG','1069','Change of Vertical Unit','EPSG','1051','Unit conversion scalar',0.3048007491,'EPSG','9201',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7972','NGVD29 height (ftUS) to NGVD29 height (m)',NULL,NULL,'EPSG','1323','EPSG','1069','Change of Vertical Unit','EPSG','1051','Unit conversion scalar',0.304800609601219,'EPSG','9201',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7978','NGVD29 height (ftUS) to NGVD29 depth (ftUS)',NULL,NULL,'EPSG','1323','EPSG','1068','Height Depth Reversal',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7982','HKPD height to HKPD depth',NULL,NULL,'EPSG','3334','EPSG','1068','Height Depth Reversal',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7984','KOC WD height to KOC WD depth',NULL,NULL,'EPSG','3267','EPSG','1068','Height Depth Reversal',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7985','KOC WD depth to KOC WD depth (ft)',NULL,NULL,'EPSG','3267','EPSG','1069','Change of Vertical Unit','EPSG','1051','Unit conversion scalar',3.28083989501312,'EPSG','9201',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7988','NAVD88 height to NAVD88 height (ftUS)',NULL,NULL,'EPSG','3664','EPSG','1069','Change of Vertical Unit','EPSG','1051','Unit conversion scalar',3.28083333333333,'EPSG','9201',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7989','NAVD88 height to NAVD88 depth',NULL,NULL,'EPSG','4161','EPSG','1068','Height Depth Reversal',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7990','NAVD88 height (ftUS) to NAVD88 depth (ftUS)',NULL,NULL,'EPSG','3664','EPSG','1068','Height Depth Reversal',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7993','Albany Grid 2020',NULL,NULL,'EPSG','4439','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',117.53,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000044,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',4100000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7994','Barrow Island Grid 2020',NULL,NULL,'EPSG','4438','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',115.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000022,'EPSG','9201','EPSG','8806','False easting',60000.0,'EPSG','9001','EPSG','8807','False northing',2700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7995','Broome Grid 2020',NULL,NULL,'EPSG','4441','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',122.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00000298,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',2300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7996','Busselton Coastal Grid',NULL,NULL,'EPSG','4437','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',115.26,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99999592,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',4000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7997','Carnarvon Grid 2020',NULL,NULL,'EPSG','4442','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',113.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99999796,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',3050000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7998','Christmas Island Grid 2020',NULL,NULL,'EPSG','4169','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',105.373,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00002514,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',1400000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','7999','Cocos Island Grid 2020',NULL,NULL,'EPSG','1069','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',96.523,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99999387,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',1600000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8000','Collie Grid 2020',NULL,NULL,'EPSG','4443','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',115.56,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000019,'EPSG','9201','EPSG','8806','False easting',40000.0,'EPSG','9001','EPSG','8807','False northing',4100000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8001','Esperance Grid 2020',NULL,NULL,'EPSG','4445','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',121.53,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000055,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',4050000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8002','Exmouth Grid 2020',NULL,NULL,'EPSG','4448','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',114.04,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00000236,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',2750000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8003','Geraldton Coastal Grid',NULL,NULL,'EPSG','4449','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',114.35,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00000628,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',3450000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8004','Goldfields Grid 2020',NULL,NULL,'EPSG','4436','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',121.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00004949,'EPSG','9201','EPSG','8806','False easting',60000.0,'EPSG','9001','EPSG','8807','False northing',3800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8005','Jurien Coastal Grid',NULL,NULL,'EPSG','4440','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',114.59,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00000314,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',3650000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8006','Kalbarri Grid 2020',NULL,NULL,'EPSG','4444','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',114.1855,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000014,'EPSG','9201','EPSG','8806','False easting',55000.0,'EPSG','9001','EPSG','8807','False northing',3700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8007','Karratha Grid 2020',NULL,NULL,'EPSG','4451','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',116.56,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999989,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',2550000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8008','Kununurra Grid 2020',NULL,NULL,'EPSG','4452','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',128.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000165,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',2100000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8009','Lancelin Coastal Grid',NULL,NULL,'EPSG','4453','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',115.22,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00000157,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',3750000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8010','Margaret River Coastal Grid',NULL,NULL,'EPSG','4457','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',115.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000055,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',4050000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8011','Perth Coastal Grid',NULL,NULL,'EPSG','4462','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',115.49,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99999906,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',3900000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8012','Port Hedland Grid 2020',NULL,NULL,'EPSG','4466','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',118.36,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00000135,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8033','TM Zone 20N (US survey feet)',NULL,NULL,'EPSG','4467','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-63.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.667,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8034','TM Zone 21N (US survey feet)',NULL,NULL,'EPSG','4468','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-57.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.667,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8038','Instantaneous Water Level height to Instantaneous Water Level depth',NULL,NULL,'EPSG','1262','EPSG','1068','Height Depth Reversal',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8039','MSL height to MSL depth',NULL,NULL,'EPSG','1262','EPSG','1068','Height Depth Reversal',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8040','Gusterberg Grid',NULL,NULL,'EPSG','4455','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',48.021847,'EPSG','9110','EPSG','8802','Longitude of natural origin',31.481505,'EPSG','9110','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8041','St. Stephen Grid',NULL,NULL,'EPSG','4456','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',48.123154,'EPSG','9110','EPSG','8802','Longitude of natural origin',34.022732,'EPSG','9110','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8054','MSL height to MSL height (ft)',NULL,NULL,'EPSG','1262','EPSG','1069','Change of Vertical Unit','EPSG','1051','Unit conversion scalar',3.28083989501312,'EPSG','9201',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8055','MSL height to MSL height (ftUS)',NULL,NULL,'EPSG','1245','EPSG','1069','Change of Vertical Unit','EPSG','1051','Unit conversion scalar',3.28083333333333,'EPSG','9201',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8056','MSL depth to MSL depth (ft)',NULL,NULL,'EPSG','1262','EPSG','1069','Change of Vertical Unit','EPSG','1051','Unit conversion scalar',3.28083989501312,'EPSG','9201',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8057','MSL depth to MSL depth (ftUS)',NULL,NULL,'EPSG','1245','EPSG','1069','Change of Vertical Unit','EPSG','1051','Unit conversion scalar',3.28083333333333,'EPSG','9201',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8060','Baltic 1977 height to Baltic 1977 depth',NULL,NULL,'EPSG','2423','EPSG','1068','Height Depth Reversal',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8061','Pima County zone 1 East (ft)',NULL,NULL,'EPSG','4472','EPSG','9815','Hotine Oblique Mercator (variant B)','EPSG','8811','Latitude of projection centre',32.15,'EPSG','9110','EPSG','8812','Longitude of projection centre',-111.24,'EPSG','9110','EPSG','8813','Azimuth of initial line',45.0,'EPSG','9102','EPSG','8814','Angle from Rectified to Skew Grid',45.0,'EPSG','9102','EPSG','8815','Scale factor on initial line',1.00011,'EPSG','9201','EPSG','8816','Easting at projection centre',160000.0,'EPSG','9002','EPSG','8817','Northing at projection centre',800000.0,'EPSG','9002',0); +INSERT INTO "conversion" VALUES('EPSG','8062','Pima County zone 2 Central (ft)',NULL,NULL,'EPSG','4460','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-112.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00009,'EPSG','9201','EPSG','8806','False easting',1800000.0,'EPSG','9002','EPSG','8807','False northing',1000000.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8063','Pima County zone 3 West (ft)',NULL,NULL,'EPSG','4450','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-113.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000055,'EPSG','9201','EPSG','8806','False easting',600000.0,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8064','Pima County zone 4 Mt. Lemmon (ft)',NULL,NULL,'EPSG','4473','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',30.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-110.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9998,'EPSG','9201','EPSG','8806','False easting',30000.0,'EPSG','9002','EPSG','8807','False northing',-620000.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8080','MTM Nova Scotia zone 4 v2',NULL,NULL,'EPSG','1534','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-61.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',24500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8081','MTM Nova Scotia zone 5 v2',NULL,NULL,'EPSG','1535','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-64.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',25500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8087','Iceland Lambert 2016',NULL,NULL,'EPSG','1120','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',65.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-19.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',64.15,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',65.45,'EPSG','9110','EPSG','8826','Easting at false origin',2700000.0,'EPSG','9001','EPSG','8827','Northing at false origin',300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8229','NAVD88 height to NAVD88 height (ft)',NULL,NULL,'EPSG','4464','EPSG','1069','Change of Vertical Unit','EPSG','1051','Unit conversion scalar',3.28083989501312,'EPSG','9201',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8273','Oregon Burns-Harper zone (meters)',NULL,NULL,'EPSG','4459','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-117.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00014,'EPSG','9201','EPSG','8806','False easting',90000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8274','Oregon Burns-Harper zone (International feet)',NULL,NULL,'EPSG','4459','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-117.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00014,'EPSG','9201','EPSG','8806','False easting',295275.5906,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8275','Oregon Canyon City-Burns zone (meters)',NULL,NULL,'EPSG','4465','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-119.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00022,'EPSG','9201','EPSG','8806','False easting',20000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8276','Oregon Canyon City-Burns zone (International feet)',NULL,NULL,'EPSG','4465','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-119.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00022,'EPSG','9201','EPSG','8806','False easting',65616.7979,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8277','Oregon Coast Range North zone (meters)',NULL,NULL,'EPSG','4471','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.35,'EPSG','9110','EPSG','8802','Longitude of natural origin',-123.25,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000045,'EPSG','9201','EPSG','8806','False easting',30000.0,'EPSG','9001','EPSG','8807','False northing',20000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8278','Oregon Coast Range North zone (International feet)',NULL,NULL,'EPSG','4471','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.35,'EPSG','9110','EPSG','8802','Longitude of natural origin',-123.25,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000045,'EPSG','9201','EPSG','8806','False easting',98425.1969,'EPSG','9002','EPSG','8807','False northing',65616.7979,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8279','Oregon Dayville-Prairie City zone (meters)',NULL,NULL,'EPSG','4474','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-119.38,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00012,'EPSG','9201','EPSG','8806','False easting',20000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8280','Oregon Dayville-Prairie City zone (International feet)',NULL,NULL,'EPSG','4474','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-119.38,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00012,'EPSG','9201','EPSG','8806','False easting',65616.7979,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8281','Oregon Denio-Burns zone (meters)',NULL,NULL,'EPSG','4475','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-118.25,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00019,'EPSG','9201','EPSG','8806','False easting',80000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8282','Oregon Denio-Burns zone (International feet)',NULL,NULL,'EPSG','4475','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-118.25,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00019,'EPSG','9201','EPSG','8806','False easting',262467.1916,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8283','Oregon Halfway zone (meters)',NULL,NULL,'EPSG','4476','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-117.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000085,'EPSG','9201','EPSG','8806','False easting',40000.0,'EPSG','9001','EPSG','8807','False northing',70000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8284','Oregon Halfway zone (International feet)',NULL,NULL,'EPSG','4476','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-117.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000085,'EPSG','9201','EPSG','8806','False easting',131233.5958,'EPSG','9002','EPSG','8807','False northing',229658.7927,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8285','Oregon Medford-Diamond Lake zone (meters)',NULL,NULL,'EPSG','4477','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',42.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-122.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00004,'EPSG','9201','EPSG','8806','False easting',60000.0,'EPSG','9001','EPSG','8807','False northing',-60000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8286','Oregon Medford-Diamond Lake zone (International feet)',NULL,NULL,'EPSG','4477','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',42.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-122.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00004,'EPSG','9201','EPSG','8806','False easting',196850.3937,'EPSG','9002','EPSG','8807','False northing',-196850.3937,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8287','Oregon Mitchell zone (meters)',NULL,NULL,'EPSG','4478','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',47.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-120.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99927,'EPSG','9201','EPSG','8806','False easting',30000.0,'EPSG','9001','EPSG','8807','False northing',290000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8288','Oregon Mitchell zone (International feet)',NULL,NULL,'EPSG','4478','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',47.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-120.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99927,'EPSG','9201','EPSG','8806','False easting',98425.1969,'EPSG','9002','EPSG','8807','False northing',951443.5696,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8289','Oregon North Central zone (meters)',NULL,NULL,'EPSG','4479','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',46.1,'EPSG','9110','EPSG','8802','Longitude of natural origin',-120.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',140000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8290','Oregon North Central zone (International feet)',NULL,NULL,'EPSG','4479','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',46.1,'EPSG','9110','EPSG','8802','Longitude of natural origin',-120.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',328083.9895,'EPSG','9002','EPSG','8807','False northing',459317.5853,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8291','Oregon Ochoco Summit zone (meters)',NULL,NULL,'EPSG','4481','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',43.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-120.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00006,'EPSG','9201','EPSG','8806','False easting',40000.0,'EPSG','9001','EPSG','8807','False northing',-80000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8292','Oregon Ochoco Summit zone (International feet)',NULL,NULL,'EPSG','4481','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',43.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-120.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00006,'EPSG','9201','EPSG','8806','False easting',131233.5958,'EPSG','9002','EPSG','8807','False northing',-262467.1916,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8293','Oregon Owyhee zone (meters)',NULL,NULL,'EPSG','4482','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-117.35,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00018,'EPSG','9201','EPSG','8806','False easting',70000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8294','Oregon Owyhee zone (International feet)',NULL,NULL,'EPSG','4482','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-117.35,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00018,'EPSG','9201','EPSG','8806','False easting',229658.7927,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8295','Oregon Pilot Rock-Ukiah zone (meters)',NULL,NULL,'EPSG','4483','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',46.1,'EPSG','9110','EPSG','8802','Longitude of natural origin',-119.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000025,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',130000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8296','Oregon Pilot Rock-Ukiah zone (International feet)',NULL,NULL,'EPSG','4483','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',46.1,'EPSG','9110','EPSG','8802','Longitude of natural origin',-119.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000025,'EPSG','9201','EPSG','8806','False easting',164041.9948,'EPSG','9002','EPSG','8807','False northing',426509.1864,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8297','Oregon Prairie City-Brogan zone (meters)',NULL,NULL,'EPSG','4484','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-118.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00017,'EPSG','9201','EPSG','8806','False easting',60000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8298','Oregon Prairie City-Brogan zone (International feet)',NULL,NULL,'EPSG','4484','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-118.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00017,'EPSG','9201','EPSG','8806','False easting',196850.3937,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8299','Oregon Riley-Lakeview zone (meters)',NULL,NULL,'EPSG','4458','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-120.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000215,'EPSG','9201','EPSG','8806','False easting',70000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8300','Oregon Riley-Lakeview zone (International feet)',NULL,NULL,'EPSG','4458','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-120.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000215,'EPSG','9201','EPSG','8806','False easting',229658.7927,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8301','Oregon Siskiyou Pass zone (meters)',NULL,NULL,'EPSG','4463','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',42.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-122.35,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00015,'EPSG','9201','EPSG','8806','False easting',10000.0,'EPSG','9001','EPSG','8807','False northing',60000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8302','Oregon Siskiyou Pass zone (International feet)',NULL,NULL,'EPSG','4463','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',42.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-122.35,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00015,'EPSG','9201','EPSG','8806','False easting',32808.399,'EPSG','9002','EPSG','8807','False northing',196850.3937,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8303','Oregon Ukiah-Fox zone (meters)',NULL,NULL,'EPSG','4470','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-119.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00014,'EPSG','9201','EPSG','8806','False easting',30000.0,'EPSG','9001','EPSG','8807','False northing',90000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8304','Oregon Ukiah-Fox zone (International feet)',NULL,NULL,'EPSG','4470','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',45.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-119.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00014,'EPSG','9201','EPSG','8806','False easting',98425.1969,'EPSG','9002','EPSG','8807','False northing',295275.5906,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8305','Oregon Wallowa zone (meters)',NULL,NULL,'EPSG','4480','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-117.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000195,'EPSG','9201','EPSG','8806','False easting',60000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8306','Oregon Wallowa zone (International feet)',NULL,NULL,'EPSG','4480','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',45.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-117.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000195,'EPSG','9201','EPSG','8806','False easting',196850.3937,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8307','Oregon Warner Highway zone (meters)',NULL,NULL,'EPSG','4486','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',42.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-120.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000245,'EPSG','9201','EPSG','8806','False easting',40000.0,'EPSG','9001','EPSG','8807','False northing',60000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8308','Oregon Warner Highway zone (International feet)',NULL,NULL,'EPSG','4486','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',42.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-120.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000245,'EPSG','9201','EPSG','8806','False easting',131233.5958,'EPSG','9002','EPSG','8807','False northing',196850.3937,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8309','Oregon Willamette Pass zone (meters)',NULL,NULL,'EPSG','4488','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-122.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000223,'EPSG','9201','EPSG','8806','False easting',20000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8310','Oregon Willamette Pass zone (International feet)',NULL,NULL,'EPSG','4488','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-122.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000223,'EPSG','9201','EPSG','8806','False easting',65616.7979,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8354','Black Sea height to Black Sea depth',NULL,NULL,'EPSG','3251','EPSG','1068','Height Depth Reversal',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8355','AIOC95 height to AIOC95 depth',NULL,NULL,'EPSG','2592','EPSG','1068','Height Depth Reversal',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8356','Caspian height to Caspian depth',NULL,NULL,'EPSG','1291','EPSG','1068','Height Depth Reversal',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8359','Baltic 1957 height to Baltic 1957 depth',NULL,NULL,'EPSG','1306','EPSG','1068','Height Depth Reversal',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8373','NCRS Las Vegas zone (m)',NULL,NULL,'EPSG','4485','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-114.58,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0001,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8374','NCRS Las Vegas zone (ftUS)',NULL,NULL,'EPSG','4485','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-114.58,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0001,'EPSG','9201','EPSG','8806','False easting',328083.3333,'EPSG','9003','EPSG','8807','False northing',656166.6667,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8375','NCRS Las Vegas high elevation zone (m)',NULL,NULL,'EPSG','4487','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-114.58,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000135,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',400000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8376','NCRS Las Vegas high elevation zone (ftUS)',NULL,NULL,'EPSG','4487','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-114.58,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000135,'EPSG','9201','EPSG','8806','False easting',984250.0,'EPSG','9003','EPSG','8807','False northing',1312333.3333,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8389','WEIPA94',NULL,NULL,'EPSG','4491','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',141.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.999929,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',2000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8432','Macau Grid',NULL,NULL,'EPSG','1147','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',22.124463,'EPSG','9110','EPSG','8802','Longitude of natural origin',113.321129,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',20000.0,'EPSG','9001','EPSG','8807','False northing',20000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8440','Laborde Grid (Greenwich)',NULL,NULL,'EPSG','1149','EPSG','9813','Laborde Oblique Mercator','EPSG','8811','Latitude of projection centre',-18.54,'EPSG','9110','EPSG','8812','Longitude of projection centre',46.2614025,'EPSG','9110','EPSG','8813','Azimuth of initial line',18.54,'EPSG','9110','EPSG','8815','Scale factor on initial line',0.9995,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8458','Kansas regional zone 1 Goodland (ftUS)',NULL,NULL,'EPSG','4495','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-101.36,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000156,'EPSG','9201','EPSG','8806','False easting',1500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8459','Kansas regional zone 2 Colby (ftUS)',NULL,NULL,'EPSG','4496','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-100.57,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000134,'EPSG','9201','EPSG','8806','False easting',2500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8490','Kansas regional zone 3 Oberlin (ftUS)',NULL,NULL,'EPSG','4497','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-100.21,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000116,'EPSG','9201','EPSG','8806','False easting',3500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8491','Kansas regional zone 4 Hays (ftUS)',NULL,NULL,'EPSG','4494','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-99.27,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000082,'EPSG','9201','EPSG','8806','False easting',4500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8492','Kansas regional zone 5 Great Bend (ftUS)',NULL,NULL,'EPSG','4498','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-98.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000078,'EPSG','9201','EPSG','8806','False easting',5500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8493','Kansas regional zone 6 Beliot (ftUS)',NULL,NULL,'EPSG','4499','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-98.09,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000068,'EPSG','9201','EPSG','8806','False easting',6500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8494','Kansas regional zone 7 Salina (ftUS)',NULL,NULL,'EPSG','4500','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-97.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000049,'EPSG','9201','EPSG','8806','False easting',7500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8495','Kansas regional zone 8 Manhattan (ftUS)',NULL,NULL,'EPSG','4501','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',39.1,'EPSG','9110','EPSG','8802','Longitude of natural origin',-96.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000044,'EPSG','9201','EPSG','8806','False easting',8500000.0,'EPSG','9003','EPSG','8807','False northing',600000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8498','Kansas regional zone 9 Emporia (ftUS)',NULL,NULL,'EPSG','4502','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',38.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-96.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00005,'EPSG','9201','EPSG','8806','False easting',9500000.0,'EPSG','9003','EPSG','8807','False northing',300000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8499','Kansas regional zone 10 Atchison (ftUS)',NULL,NULL,'EPSG','4503','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',39.38,'EPSG','9110','EPSG','8802','Longitude of natural origin',-95.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00004,'EPSG','9201','EPSG','8806','False easting',10500000.0,'EPSG','9003','EPSG','8807','False northing',700000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8500','Kansas regional zone 11 Kansas City (ftUS)',NULL,NULL,'EPSG','4504','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',39.06,'EPSG','9110','EPSG','8802','Longitude of natural origin',-95.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000033,'EPSG','9201','EPSG','8806','False easting',11500000.0,'EPSG','9003','EPSG','8807','False northing',600000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8501','Kansas regional zone 12 Ulysses (ftUS)',NULL,NULL,'EPSG','4505','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-101.25,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00014,'EPSG','9201','EPSG','8806','False easting',12500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8502','Kansas regional zone 13 Garden City (ftUS)',NULL,NULL,'EPSG','4506','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-100.24,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000109,'EPSG','9201','EPSG','8806','False easting',13500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8503','Kansas regional zone 14 Dodge City (ftUS)',NULL,NULL,'EPSG','4507','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-99.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000097,'EPSG','9201','EPSG','8806','False easting',14500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8504','Kansas regional zone 15 Larned (ftUS)',NULL,NULL,'EPSG','4508','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-99.12,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000087,'EPSG','9201','EPSG','8806','False easting',15500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8505','Kansas regional zone 16 Pratt (ftUS)',NULL,NULL,'EPSG','4509','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-98.33,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000069,'EPSG','9201','EPSG','8806','False easting',16500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8506','Kansas regional zone 17 Wichita (ftUS)',NULL,NULL,'EPSG','4510','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',37.46,'EPSG','9110','EPSG','8802','Longitude of natural origin',-97.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000059,'EPSG','9201','EPSG','8806','False easting',17500000.0,'EPSG','9003','EPSG','8807','False northing',400000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8507','Kansas regional zone 18 Arkansas City (ftUS)',NULL,NULL,'EPSG','4511','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',37.11,'EPSG','9110','EPSG','8802','Longitude of natural origin',-97.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000055,'EPSG','9201','EPSG','8806','False easting',18500000.0,'EPSG','9003','EPSG','8807','False northing',200000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8515','Kansas regional zone 19 Coffeyville (ftUS)',NULL,NULL,'EPSG','4512','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-95.58,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000034,'EPSG','9201','EPSG','8806','False easting',19500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8516','Kansas regional zone 20 Pittsburg (ftUS)',NULL,NULL,'EPSG','4513','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-95.05,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000031,'EPSG','9201','EPSG','8806','False easting',20500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8825','Idaho Transverse Mercator',NULL,NULL,'EPSG','1381','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-114.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',2500000.0,'EPSG','9001','EPSG','8807','False northing',1200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8854','Equal Earth Greenwich',NULL,NULL,'EPSG','1262','EPSG','1078','Equal Earth','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8855','Equal Earth Americas',NULL,NULL,'EPSG','1262','EPSG','1078','Equal Earth','EPSG','8802','Longitude of natural origin',-90.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','8856','Equal Earth Asia-Pacific',NULL,NULL,'EPSG','1262','EPSG','1078','Equal Earth','EPSG','8802','Longitude of natural origin',150.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10101','Alabama CS27 East zone',NULL,NULL,'EPSG','2154','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10102','Alabama CS27 West zone',NULL,NULL,'EPSG','2155','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999933333,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10131','SPCS83 Alabama East zone (meters)',NULL,NULL,'EPSG','2154','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99996,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10132','SPCS83 Alabama West zone (meters)',NULL,NULL,'EPSG','2155','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999933333,'EPSG','9201','EPSG','8806','False easting',600000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10201','Arizona Coordinate System East zone',NULL,NULL,'EPSG','2167','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-110.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10202','Arizona Coordinate System Central zone',NULL,NULL,'EPSG','2166','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-111.55,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10203','Arizona Coordinate System West zone',NULL,NULL,'EPSG','2168','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-113.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999933333,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10231','SPCS83 Arizona East zone (meters)',NULL,NULL,'EPSG','2167','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-110.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',213360.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10232','SPCS83 Arizona Central zone (meters)',NULL,NULL,'EPSG','2166','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-111.55,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',213360.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10233','SPCS83 Arizona West zone (meters)',NULL,NULL,'EPSG','2168','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-113.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999933333,'EPSG','9201','EPSG','8806','False easting',213360.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10301','Arkansas CS27 North',NULL,NULL,'EPSG','2169','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',34.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-92.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',36.14,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',34.56,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10302','Arkansas CS27 South',NULL,NULL,'EPSG','2170','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',32.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-92.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',34.46,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',33.18,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10331','SPCS83 Arkansas North zone (meters)',NULL,NULL,'EPSG','2169','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',34.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-92.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',36.14,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',34.56,'EPSG','9110','EPSG','8826','Easting at false origin',400000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10332','SPCS83 Arkansas South zone (meters)',NULL,NULL,'EPSG','2170','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',32.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-92.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',34.46,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',33.18,'EPSG','9110','EPSG','8826','Easting at false origin',400000.0,'EPSG','9001','EPSG','8827','Northing at false origin',400000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10401','California CS27 zone I',NULL,NULL,'EPSG','2175','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',39.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-122.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.0,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10402','California CS27 zone II',NULL,NULL,'EPSG','2176','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-122.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.5,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.2,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10403','California CS27 zone III',NULL,NULL,'EPSG','2177','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-120.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',38.26,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.04,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10404','California CS27 zone IV',NULL,NULL,'EPSG','2178','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',35.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-119.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',37.15,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',36.0,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10405','California CS27 zone V',NULL,NULL,'EPSG','2179','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',33.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-118.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',35.28,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',34.02,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10406','California CS27 zone VI',NULL,NULL,'EPSG','2180','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',32.1,'EPSG','9110','EPSG','8822','Longitude of false origin',-116.15,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',33.53,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',32.47,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10407','California CS27 zone VII',NULL,NULL,'EPSG','2181','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',34.08,'EPSG','9110','EPSG','8822','Longitude of false origin',-118.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',34.25,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',33.52,'EPSG','9110','EPSG','8826','Easting at false origin',4186692.58,'EPSG','9003','EPSG','8827','Northing at false origin',416926.74,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','10408','California CS27 zone VII',NULL,NULL,'EPSG','2181','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',34.08,'EPSG','9110','EPSG','8822','Longitude of false origin',-118.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',34.25,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',33.52,'EPSG','9110','EPSG','8826','Easting at false origin',4186692.58,'EPSG','9003','EPSG','8827','Northing at false origin',4160926.74,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10420','California Albers',NULL,NULL,'EPSG','1375','EPSG','9822','Albers Equal Area','EPSG','8821','Latitude of false origin',0.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-120.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',34.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',40.5,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',-4000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10431','SPCS83 California zone 1 (meters)',NULL,NULL,'EPSG','2175','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',39.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-122.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.0,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10432','SPCS83 California zone 2 (meters)',NULL,NULL,'EPSG','2176','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-122.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.5,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.2,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10433','SPCS83 California zone 3 (meters)',NULL,NULL,'EPSG','2177','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-120.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',38.26,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.04,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10434','SPCS83 California zone 4 (meters)',NULL,NULL,'EPSG','2178','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',35.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-119.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',37.15,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',36.0,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10435','SPCS83 California zone 5 (meters)',NULL,NULL,'EPSG','2182','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',33.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-118.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',35.28,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',34.02,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10436','SPCS83 California zone 6 (meters)',NULL,NULL,'EPSG','2180','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',32.1,'EPSG','9110','EPSG','8822','Longitude of false origin',-116.15,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',33.53,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',32.47,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10501','Colorado CS27 North zone',NULL,NULL,'EPSG','2184','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',39.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-105.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.43,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.47,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10502','Colorado CS27 Central zone',NULL,NULL,'EPSG','2183','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-105.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.45,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.27,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10503','Colorado CS27 South zone',NULL,NULL,'EPSG','2185','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-105.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',38.26,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.14,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10531','SPCS83 Colorado North zone (meters)',NULL,NULL,'EPSG','2184','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',39.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-105.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',40.47,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',39.43,'EPSG','9110','EPSG','8826','Easting at false origin',914401.8289,'EPSG','9001','EPSG','8827','Northing at false origin',304800.6096,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10532','SPCS83 Colorado Central zone (meters)',NULL,NULL,'EPSG','2183','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-105.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.45,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.27,'EPSG','9110','EPSG','8826','Easting at false origin',914401.8289,'EPSG','9001','EPSG','8827','Northing at false origin',304800.6096,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10533','SPCS83 Colorado South zone (meters)',NULL,NULL,'EPSG','2185','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-105.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',38.26,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.14,'EPSG','9110','EPSG','8826','Easting at false origin',914401.8289,'EPSG','9001','EPSG','8827','Northing at false origin',304800.6096,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10600','Connecticut CS27',NULL,NULL,'EPSG','1377','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',40.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-72.45,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.52,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',41.12,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10630','SPCS83 Connecticut zone (meters)',NULL,NULL,'EPSG','1377','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',40.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-72.45,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.52,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',41.12,'EPSG','9110','EPSG','8826','Easting at false origin',304800.6096,'EPSG','9001','EPSG','8827','Northing at false origin',152400.3048,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10700','Delaware CS27',NULL,NULL,'EPSG','1378','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-75.25,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999995,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10730','SPCS83 Delaware zone (meters)',NULL,NULL,'EPSG','1378','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-75.25,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999995,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10901','Florida CS27 East zone',NULL,NULL,'EPSG','2186','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',24.2,'EPSG','9110','EPSG','8802','Longitude of natural origin',-81.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999941177,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10902','Florida CS27 West zone',NULL,NULL,'EPSG','2188','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',24.2,'EPSG','9110','EPSG','8802','Longitude of natural origin',-82.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999941177,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10903','Florida CS27 North zone',NULL,NULL,'EPSG','2187','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',29.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-84.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',30.45,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',29.35,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10931','SPCS83 Florida East zone (meters)',NULL,NULL,'EPSG','2186','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',24.2,'EPSG','9110','EPSG','8802','Longitude of natural origin',-81.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999941177,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10932','SPCS83 Florida West zone (meters)',NULL,NULL,'EPSG','2188','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',24.2,'EPSG','9110','EPSG','8802','Longitude of natural origin',-82.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999941177,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10933','SPCS83 Florida North zone (meters)',NULL,NULL,'EPSG','2187','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',29.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-84.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',30.45,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',29.35,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','10934','Florida GDL Albers (meters)',NULL,NULL,'EPSG','1379','EPSG','9822','Albers Equal Area','EPSG','8821','Latitude of false origin',24.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-84.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',24.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',31.3,'EPSG','9110','EPSG','8826','Easting at false origin',400000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11001','Georgia CS27 East zone',NULL,NULL,'EPSG','2189','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-82.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11002','Georgia CS27 West zone',NULL,NULL,'EPSG','2190','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-84.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11031','SPCS83 Georgia East zone (meters)',NULL,NULL,'EPSG','2189','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-82.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11032','SPCS83 Georgia West zone (meters)',NULL,NULL,'EPSG','2190','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-84.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',700000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11101','Idaho CS27 East zone',NULL,NULL,'EPSG','2192','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-112.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999947368,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11102','Idaho CS27 Central zone',NULL,NULL,'EPSG','2191','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-114.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999947368,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11103','Idaho CS27 West zone',NULL,NULL,'EPSG','2193','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-115.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999933333,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11131','SPCS83 Idaho East zone (meters)',NULL,NULL,'EPSG','2192','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-112.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999947368,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11132','SPCS83 Idaho Central zone (meters)',NULL,NULL,'EPSG','2191','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-114.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999947368,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11133','SPCS83 Idaho West zone (meters)',NULL,NULL,'EPSG','2193','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-115.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999933333,'EPSG','9201','EPSG','8806','False easting',800000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11201','Illinois CS27 East zone',NULL,NULL,'EPSG','2194','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999975,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11202','Illinois CS27 West zone',NULL,NULL,'EPSG','2195','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999941177,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11231','SPCS83 Illinois East zone (meters)',NULL,NULL,'EPSG','2194','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999975,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11232','SPCS83 Illinois West zone (meters)',NULL,NULL,'EPSG','2195','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999941177,'EPSG','9201','EPSG','8806','False easting',700000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11301','Indiana CS27 East zone',NULL,NULL,'EPSG','2196','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11302','Indiana CS27 West zone',NULL,NULL,'EPSG','2197','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.05,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11331','SPCS83 Indiana East zone (meters)',NULL,NULL,'EPSG','2196','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',250000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11332','SPCS83 Indiana West zone (meters)',NULL,NULL,'EPSG','2197','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.05,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',900000.0,'EPSG','9001','EPSG','8807','False northing',250000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11401','Iowa CS27 North zone',NULL,NULL,'EPSG','2198','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-93.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',43.16,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',42.04,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11402','Iowa CS27 South zone',NULL,NULL,'EPSG','2199','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',40.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-93.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.47,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.37,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11431','SPCS83 Iowa North zone (meters)',NULL,NULL,'EPSG','2198','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-93.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',43.16,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',42.04,'EPSG','9110','EPSG','8826','Easting at false origin',1500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11432','SPCS83 Iowa South zone (meters)',NULL,NULL,'EPSG','2199','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',40.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-93.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.47,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.37,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11501','Kansas CS27 North zone',NULL,NULL,'EPSG','2200','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',38.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.47,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.43,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11502','Kansas CS27 South zone',NULL,NULL,'EPSG','2201','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',38.34,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.16,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11531','SPCS83 Kansas North zone (meters)',NULL,NULL,'EPSG','2200','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',38.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.47,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.43,'EPSG','9110','EPSG','8826','Easting at false origin',400000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11532','SPCS83 Kansas South zone (meters)',NULL,NULL,'EPSG','2201','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',38.34,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.16,'EPSG','9110','EPSG','8826','Easting at false origin',400000.0,'EPSG','9001','EPSG','8827','Northing at false origin',400000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11601','Kentucky CS27 North zone',NULL,NULL,'EPSG','2202','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-84.15,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',37.58,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.58,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11602','Kentucky CS27 South zone',NULL,NULL,'EPSG','2203','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-85.45,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',36.44,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.56,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11630','SPCS83 Kentucky Single Zone (meters)',NULL,NULL,'EPSG','1386','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-85.45,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',37.05,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.4,'EPSG','9110','EPSG','8826','Easting at false origin',1500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11631','Kentucky CS83 North zone',NULL,NULL,'EPSG','2202','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-84.15,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',37.58,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.58,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','11632','SPCS83 Kentucky South zone (meters)',NULL,NULL,'EPSG','2203','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-85.45,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',37.56,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',36.44,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11701','Louisiana CS27 North zone',NULL,NULL,'EPSG','2204','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',30.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-92.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',31.1,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',32.4,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11702','Louisiana CS27 South zone',NULL,NULL,'EPSG','2205','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',28.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-91.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',29.18,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',30.42,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11703','Louisiana CS27 Offshore zone',NULL,NULL,'EPSG','1387','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',25.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-91.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',27.5,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',26.1,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11731','SPCS83 Louisiana North zone (meters)',NULL,NULL,'EPSG','2204','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',30.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-92.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',32.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',31.1,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11732','SPCS83 Louisiana South zone (meters)',NULL,NULL,'EPSG','2529','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',28.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-91.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',30.42,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',29.18,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11733','SPCS83 Louisiana Offshore zone (meters)',NULL,NULL,'EPSG','1387','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',25.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-91.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',27.5,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',26.1,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11801','Maine CS27 East zone',NULL,NULL,'EPSG','2206','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-68.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11802','Maine CS27 West zone',NULL,NULL,'EPSG','2207','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-70.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11831','SPCS83 Maine East zone (meters)',NULL,NULL,'EPSG','2206','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-68.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11832','SPCS83 Maine West zone (meters)',NULL,NULL,'EPSG','2207','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-70.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',900000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11833','SPCS83 Maine East zone (US Survey feet)',NULL,NULL,'EPSG','2206','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-68.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',984250.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11834','SPCS83 Maine West zone (US Survey feet)',NULL,NULL,'EPSG','2207','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-70.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',2952750.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11851','Maine CS2000 East zone (meters)',NULL,NULL,'EPSG','2960','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-67.523,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99998,'EPSG','9201','EPSG','8806','False easting',700000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11852','Maine CS2000 Central zone',NULL,NULL,'EPSG','2959','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-69.073,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99998,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','11853','Maine CS2000 West zone (meters)',NULL,NULL,'EPSG','2958','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-70.223,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99998,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11854','Maine CS2000 Central zone (meters)',NULL,NULL,'EPSG','2959','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',43.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-69.073,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99998,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11900','Maryland CS27',NULL,NULL,'EPSG','1389','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-77.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',38.18,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',39.27,'EPSG','9110','EPSG','8826','Easting at false origin',800000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','11930','SPCS83 Maryland zone (meters)',NULL,NULL,'EPSG','1389','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-77.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.27,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.18,'EPSG','9110','EPSG','8826','Easting at false origin',400000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12001','Massachusetts CS27 Mainland zone',NULL,NULL,'EPSG','2209','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-71.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.43,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',42.41,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12002','Massachusetts CS27 Island zone',NULL,NULL,'EPSG','2208','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-70.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.17,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',41.29,'EPSG','9110','EPSG','8826','Easting at false origin',200000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12031','SPCS83 Massachusetts Mainland zone (meters)',NULL,NULL,'EPSG','2209','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-71.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',42.41,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',41.43,'EPSG','9110','EPSG','8826','Easting at false origin',200000.0,'EPSG','9001','EPSG','8827','Northing at false origin',750000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12032','SPCS83 Massachusetts Island zone (meters)',NULL,NULL,'EPSG','2208','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-70.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.29,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',41.17,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12101','Michigan State Plane East zone',NULL,NULL,'EPSG','1720','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-83.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999942857,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12102','Michigan State Plane Old Central zone',NULL,NULL,'EPSG','1721','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999909091,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12103','Michigan State Plane West zone',NULL,NULL,'EPSG','3652','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999909091,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12111','Michigan CS27 North zone',NULL,NULL,'EPSG','1723','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',44.47,'EPSG','9110','EPSG','8822','Longitude of false origin',-87.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',45.29,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',47.05,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','12112','Michigan CS27 Central zone',NULL,NULL,'EPSG','1724','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',43.19,'EPSG','9110','EPSG','8822','Longitude of false origin',-84.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',44.11,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',45.42,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','12113','Michigan CS27 South zone',NULL,NULL,'EPSG','1725','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-84.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',42.06,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',43.4,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','12141','SPCS83 Michigan North zone (meters)',NULL,NULL,'EPSG','1723','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',44.47,'EPSG','9110','EPSG','8822','Longitude of false origin',-87.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',47.05,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',45.29,'EPSG','9110','EPSG','8826','Easting at false origin',8000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12142','SPCS83 Michigan Central zone (meters)',NULL,NULL,'EPSG','1724','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',43.19,'EPSG','9110','EPSG','8822','Longitude of false origin',-84.22,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',45.42,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',44.11,'EPSG','9110','EPSG','8826','Easting at false origin',6000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12143','SPCS83 Michigan South zone (meters)',NULL,NULL,'EPSG','1725','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-84.22,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',43.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',42.06,'EPSG','9110','EPSG','8826','Easting at false origin',4000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12150','Michigan Oblique Mercator (meters)',NULL,NULL,'EPSG','1391','EPSG','9812','Hotine Oblique Mercator (variant A)','EPSG','8811','Latitude of projection centre',45.1833,'EPSG','9110','EPSG','8812','Longitude of projection centre',-86.0,'EPSG','9110','EPSG','8813','Azimuth of initial line',337.25556,'EPSG','9102','EPSG','8814','Angle from Rectified to Skew Grid',337.25556,'EPSG','9102','EPSG','8815','Scale factor on initial line',0.9996,'EPSG','9201','EPSG','8806','False easting',2546731.496,'EPSG','9001','EPSG','8807','False northing',-4354009.816,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','12201','Minnesota CS27 North zone',NULL,NULL,'EPSG','2214','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',46.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-93.06,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',47.02,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',48.38,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12202','Minnesota CS27 Central zone',NULL,NULL,'EPSG','2213','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',45.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-94.15,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',45.37,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',47.03,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12203','Minnesota CS27 South zone',NULL,NULL,'EPSG','2215','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',43.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-94.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',43.47,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',45.13,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12231','SPCS83 Minnesota North zone (meters)',NULL,NULL,'EPSG','2214','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',46.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-93.06,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',48.38,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',47.02,'EPSG','9110','EPSG','8826','Easting at false origin',800000.0,'EPSG','9001','EPSG','8827','Northing at false origin',100000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12232','SPCS83 Minnesota Central zone (meters)',NULL,NULL,'EPSG','2213','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',45.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-94.15,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',47.03,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',45.37,'EPSG','9110','EPSG','8826','Easting at false origin',800000.0,'EPSG','9001','EPSG','8827','Northing at false origin',100000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12233','SPCS83 Minnesota South zone (meters)',NULL,NULL,'EPSG','2215','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',43.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-94.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',45.13,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',43.47,'EPSG','9110','EPSG','8826','Easting at false origin',800000.0,'EPSG','9001','EPSG','8827','Northing at false origin',100000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12234','SPCS83 Minnesota North zone (US Survey feet)',NULL,NULL,'EPSG','2214','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',46.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-93.06,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',48.38,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',47.02,'EPSG','9110','EPSG','8826','Easting at false origin',2624666.6667,'EPSG','9003','EPSG','8827','Northing at false origin',328083.3333,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12235','SPCS83 Minnesota Central zone (US Survey feet)',NULL,NULL,'EPSG','2213','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',45.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-94.15,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',47.03,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',45.37,'EPSG','9110','EPSG','8826','Easting at false origin',2624666.6667,'EPSG','9003','EPSG','8827','Northing at false origin',328083.3333,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12236','SPCS83 Minnesota South zone (US Survey feet)',NULL,NULL,'EPSG','2215','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',43.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-94.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',45.13,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',43.47,'EPSG','9110','EPSG','8826','Easting at false origin',2624666.6667,'EPSG','9003','EPSG','8827','Northing at false origin',328083.3333,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12301','Mississippi CS27 East zone',NULL,NULL,'EPSG','2216','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',29.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12302','Mississippi CS27 West zone',NULL,NULL,'EPSG','2217','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999941177,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12331','SPCS83 Mississippi East zone (meters)',NULL,NULL,'EPSG','2216','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',29.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12332','SPCS83 Mississippi West zone (meters)',NULL,NULL,'EPSG','2217','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',29.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',700000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12401','Missouri CS27 East zone',NULL,NULL,'EPSG','2219','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',35.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999933333,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12402','Missouri CS27 Central zone',NULL,NULL,'EPSG','2218','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',35.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-92.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999933333,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12403','Missouri CS27 West zone',NULL,NULL,'EPSG','2220','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.1,'EPSG','9110','EPSG','8802','Longitude of natural origin',-94.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999941177,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12431','SPCS83 Missouri East zone (meters)',NULL,NULL,'EPSG','2219','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',35.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999933333,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12432','SPCS83 Missouri Central zone (meters)',NULL,NULL,'EPSG','2218','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',35.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-92.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999933333,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12433','SPCS83 Missouri West zone (meters)',NULL,NULL,'EPSG','2220','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.1,'EPSG','9110','EPSG','8802','Longitude of natural origin',-94.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999941177,'EPSG','9201','EPSG','8806','False easting',850000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12501','Montana CS27 North zone',NULL,NULL,'EPSG','2211','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',47.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-109.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',48.43,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',47.51,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12502','Montana CS27 Central zone',NULL,NULL,'EPSG','2210','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',45.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-109.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',47.53,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',46.27,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12503','Montana CS27 South zone',NULL,NULL,'EPSG','2212','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',44.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-109.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',46.24,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',44.52,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12530','SPCS83 Montana zone (meters)',NULL,NULL,'EPSG','1395','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',44.15,'EPSG','9110','EPSG','8822','Longitude of false origin',-109.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',49.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',45.0,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12601','Nebraska CS27 North zone',NULL,NULL,'EPSG','2221','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.51,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',42.49,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12602','Nebraska CS27 South zone',NULL,NULL,'EPSG','2222','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',39.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-99.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',40.17,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',41.43,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12630','SPCS83 Nebraska zone (meters)',NULL,NULL,'EPSG','1396','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',39.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',43.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.0,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12701','Nevada CS27 East zone',NULL,NULL,'EPSG','2224','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',34.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-115.35,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12702','Nevada CS27 Central zone',NULL,NULL,'EPSG','2223','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',34.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-116.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12703','Nevada CS27 West zone',NULL,NULL,'EPSG','2225','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',34.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-118.35,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12731','SPCS83 Nevada East zone (meters)',NULL,NULL,'EPSG','2224','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',34.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-115.35,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',8000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12732','SPCS83 Nevada Central zone (meters)',NULL,NULL,'EPSG','2223','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',34.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-116.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',6000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12733','SPCS83 Nevada West zone (meters)',NULL,NULL,'EPSG','2225','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',34.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-118.35,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',800000.0,'EPSG','9001','EPSG','8807','False northing',4000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12800','New Hampshire CS27',NULL,NULL,'EPSG','1398','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-71.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12830','SPCS83 New Hampshire zone (meters)',NULL,NULL,'EPSG','1398','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-71.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12900','New Jersey CS27',NULL,NULL,'EPSG','1399','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-74.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999975,'EPSG','9201','EPSG','8806','False easting',2000000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','12930','SPCS83 New Jersey zone (meters)',NULL,NULL,'EPSG','1399','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-74.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13001','New Mexico CS27 East zone',NULL,NULL,'EPSG','2228','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-104.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999909091,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13002','New Mexico CS27 Central zone',NULL,NULL,'EPSG','2229','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-106.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13003','New Mexico CS27 West zone',NULL,NULL,'EPSG','2230','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-107.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999916667,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13031','SPCS83 New Mexico East zone (meters)',NULL,NULL,'EPSG','2228','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-104.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999909091,'EPSG','9201','EPSG','8806','False easting',165000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13032','SPCS83 New Mexico Central zone (meters)',NULL,NULL,'EPSG','2231','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-106.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13033','SPCS83 New Mexico West zone (meters)',NULL,NULL,'EPSG','2232','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-107.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999916667,'EPSG','9201','EPSG','8806','False easting',830000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13101','New York CS27 East zone',NULL,NULL,'EPSG','2234','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-74.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13102','New York CS27 Central zone',NULL,NULL,'EPSG','2233','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-76.35,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999375,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13103','New York CS27 West zone',NULL,NULL,'EPSG','2236','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-78.35,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999375,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13104','New York CS27 Long Island zone',NULL,NULL,'EPSG','2235','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',40.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-74.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.02,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.4,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','13131','SPCS83 New York East zone (meters)',NULL,NULL,'EPSG','2234','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-74.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13132','SPCS83 New York Central zone (meters)',NULL,NULL,'EPSG','2233','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-76.35,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999375,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13133','SPCS83 New York West zone (meters)',NULL,NULL,'EPSG','2236','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-78.35,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999375,'EPSG','9201','EPSG','8806','False easting',350000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13134','SPCS83 New York Long Island zone (meters)',NULL,NULL,'EPSG','2235','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',40.1,'EPSG','9110','EPSG','8822','Longitude of false origin',-74.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.02,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.4,'EPSG','9110','EPSG','8826','Easting at false origin',300000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13200','North Carolina CS27',NULL,NULL,'EPSG','1402','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',33.45,'EPSG','9110','EPSG','8822','Longitude of false origin',-79.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',34.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',36.1,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13230','SPCS83 North Carolina zone (meters)',NULL,NULL,'EPSG','1402','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',33.45,'EPSG','9110','EPSG','8822','Longitude of false origin',-79.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',36.1,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',34.2,'EPSG','9110','EPSG','8826','Easting at false origin',609601.22,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13301','North Dakota CS27 North zone',NULL,NULL,'EPSG','2237','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',47.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',47.26,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',48.44,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13302','North Dakota CS27 South zone',NULL,NULL,'EPSG','2238','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',45.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',46.11,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',47.29,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13331','SPCS83 North Dakota North zone (meters)',NULL,NULL,'EPSG','2237','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',47.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',48.44,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',47.26,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13332','SPCS83 North Dakota South zone (meters)',NULL,NULL,'EPSG','2238','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',45.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',47.29,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',46.11,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13401','Ohio CS27 North zone',NULL,NULL,'EPSG','2239','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',39.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-82.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',40.26,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',41.42,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13402','Ohio CS27 South zone',NULL,NULL,'EPSG','2240','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',38.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-82.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',38.44,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.02,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13431','SPCS83 Ohio North zone (meters)',NULL,NULL,'EPSG','2239','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',39.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-82.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.42,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.26,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13432','SPCS83 Ohio South zone (meters)',NULL,NULL,'EPSG','2240','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',38.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-82.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',40.02,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.44,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13433','SPCS83 Ohio North zone (US Survey feet)',NULL,NULL,'EPSG','2239','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',39.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-82.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.42,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.26,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13434','SPCS83 Ohio South zone (US Survey feet)',NULL,NULL,'EPSG','2240','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',38.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-82.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',40.02,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.44,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13501','Oklahoma CS27 North zone',NULL,NULL,'EPSG','2241','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',35.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',35.34,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',36.46,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13502','Oklahoma CS27 South zone',NULL,NULL,'EPSG','2242','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',33.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',33.56,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',35.14,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13531','SPCS83 Oklahoma North zone (meters)',NULL,NULL,'EPSG','2241','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',35.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',36.46,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',35.34,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13532','SPCS83 Oklahoma South zone (meters)',NULL,NULL,'EPSG','2242','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',33.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',35.14,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',33.56,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13601','Oregon CS27 North zone',NULL,NULL,'EPSG','2243','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',43.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-120.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',44.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',46.0,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13602','Oregon CS27 South zone',NULL,NULL,'EPSG','2244','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-120.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',42.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',44.0,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13631','SPCS83 Oregon North zone (meters)',NULL,NULL,'EPSG','2243','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',43.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-120.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',46.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',44.2,'EPSG','9110','EPSG','8826','Easting at false origin',2500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13632','SPCS83 Oregon South zone (meters)',NULL,NULL,'EPSG','2244','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-120.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',44.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',42.2,'EPSG','9110','EPSG','8826','Easting at false origin',1500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13633','Oregon Lambert (meters)',NULL,NULL,'EPSG','1406','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.45,'EPSG','9110','EPSG','8822','Longitude of false origin',-120.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',43.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',45.3,'EPSG','9110','EPSG','8826','Easting at false origin',400000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13701','Pennsylvania CS27 North zone',NULL,NULL,'EPSG','2245','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',40.1,'EPSG','9110','EPSG','8822','Longitude of false origin',-77.45,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',40.53,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',41.57,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13702','Pennsylvania CS27 South zone',NULL,NULL,'EPSG','2246','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',39.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-77.45,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.56,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.48,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','13731','SPCS83 Pennsylvania North zone (meters)',NULL,NULL,'EPSG','2245','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',40.1,'EPSG','9110','EPSG','8822','Longitude of false origin',-77.45,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.57,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.53,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13732','SPCS83 Pennsylvania South zone (meters)',NULL,NULL,'EPSG','2246','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',39.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-77.45,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',40.58,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',39.56,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13800','Rhode Island CS27',NULL,NULL,'EPSG','1408','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.05,'EPSG','9110','EPSG','8802','Longitude of natural origin',-71.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999938,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13830','SPCS83 Rhode Island zone (meters)',NULL,NULL,'EPSG','1408','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.05,'EPSG','9110','EPSG','8802','Longitude of natural origin',-71.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99999375,'EPSG','9201','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13901','South Carolina CS27 North zone',NULL,NULL,'EPSG','2247','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',33.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-81.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',33.46,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',34.58,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13902','South Carolina CS27 South zone',NULL,NULL,'EPSG','2248','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',31.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-81.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',32.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',33.4,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','13930','SPCS83 South Carolina zone (meters)',NULL,NULL,'EPSG','1409','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',31.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-81.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',34.5,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',32.3,'EPSG','9110','EPSG','8826','Easting at false origin',609600.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14001','South Dakota CS27 North zone',NULL,NULL,'EPSG','2249','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',43.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',44.25,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',45.41,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14002','South Dakota CS27 South zone',NULL,NULL,'EPSG','2250','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',42.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',42.5,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',44.24,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14031','SPCS83 South Dakota North zone (meters)',NULL,NULL,'EPSG','2249','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',43.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',45.41,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',44.25,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14032','SPCS83 South Dakota South zone (meters)',NULL,NULL,'EPSG','2250','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',42.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',44.24,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',42.5,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14100','Tennessee CS27',NULL,NULL,'EPSG','1411','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',34.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-86.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',35.15,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',36.25,'EPSG','9110','EPSG','8826','Easting at false origin',100000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','14130','SPCS83 Tennessee zone (meters)',NULL,NULL,'EPSG','1411','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',34.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-86.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',36.25,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',35.15,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14201','Texas CS27 North zone',NULL,NULL,'EPSG','2253','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',34.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-101.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',34.39,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',36.11,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14202','Texas CS27 North Central zone',NULL,NULL,'EPSG','2254','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',31.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-97.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',32.08,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',33.58,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14203','Texas CS27 Central zone',NULL,NULL,'EPSG','2252','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',29.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',30.07,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',31.53,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14204','Texas CS27 South Central zone',NULL,NULL,'EPSG','2256','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',27.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-99.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',28.23,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',30.17,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14205','Texas CS27 South zone',NULL,NULL,'EPSG','2255','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',25.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',26.1,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',27.5,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14231','SPCS83 Texas North zone (meters)',NULL,NULL,'EPSG','2253','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',34.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-101.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',36.11,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',34.39,'EPSG','9110','EPSG','8826','Easting at false origin',200000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14232','SPCS83 Texas North Central zone (meters)',NULL,NULL,'EPSG','2254','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',31.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',33.58,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',32.08,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',2000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14233','SPCS83 Texas Central zone (meters)',NULL,NULL,'EPSG','2252','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',29.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',31.53,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',30.07,'EPSG','9110','EPSG','8826','Easting at false origin',700000.0,'EPSG','9001','EPSG','8827','Northing at false origin',3000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14234','SPCS83 Texas South Central zone (meters)',NULL,NULL,'EPSG','2527','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',27.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-99.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',30.17,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',28.23,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14235','SPCS83 Texas South zone (meters)',NULL,NULL,'EPSG','2528','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',25.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',27.5,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',26.1,'EPSG','9110','EPSG','8826','Easting at false origin',300000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14251','Texas State Mapping System (meters)',NULL,NULL,'EPSG','1412','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',31.1,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',27.25,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',34.55,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14252','Shackleford',NULL,NULL,'EPSG','1412','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',31.1,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',27.25,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',34.55,'EPSG','9110','EPSG','8826','Easting at false origin',3000000.0,'EPSG','9002','EPSG','8827','Northing at false origin',3000000.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14253','Texas Centric Lambert Conformal',NULL,NULL,'EPSG','1412','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',18.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',27.3,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',35.0,'EPSG','9110','EPSG','8826','Easting at false origin',1500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14254','Texas Centric Albers Equal Area',NULL,NULL,'EPSG','1412','EPSG','9822','Albers Equal Area','EPSG','8821','Latitude of false origin',18.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',27.3,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',35.0,'EPSG','9110','EPSG','8826','Easting at false origin',1500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',6000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14301','Utah CS27 North zone',NULL,NULL,'EPSG','2258','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',40.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-111.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',40.43,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',41.47,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14302','Utah CS27 Central zone',NULL,NULL,'EPSG','2257','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',38.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-111.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.01,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.39,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14303','Utah CS27 South zone',NULL,NULL,'EPSG','2259','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-111.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',37.13,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.21,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14331','SPCS83 Utah North zone (meters)',NULL,NULL,'EPSG','2258','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',40.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-111.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.47,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.43,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14332','SPCS83 Utah Central zone (meters)',NULL,NULL,'EPSG','2257','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',38.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-111.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',40.39,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',39.01,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',2000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14333','SPCS83 Utah South zone (meters)',NULL,NULL,'EPSG','2259','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-111.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',38.21,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.13,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',3000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14400','Vermont CS27',NULL,NULL,'EPSG','1414','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-72.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999964286,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14430','SPCS83 Vermont zone (meters)',NULL,NULL,'EPSG','1414','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-72.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999964286,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14501','Virginia CS27 North zone',NULL,NULL,'EPSG','2260','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-78.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',38.02,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',39.12,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14502','Virginia CS27 South zone',NULL,NULL,'EPSG','2261','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-78.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',36.46,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.58,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14531','SPCS83 Virginia North zone (meters)',NULL,NULL,'EPSG','2260','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-78.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.12,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.02,'EPSG','9110','EPSG','8826','Easting at false origin',3500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',2000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14532','SPCS83 Virginia South zone (meters)',NULL,NULL,'EPSG','2261','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-78.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',37.58,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',36.46,'EPSG','9110','EPSG','8826','Easting at false origin',3500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14601','Washington CS27 North zone',NULL,NULL,'EPSG','2262','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',47.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-120.5,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',47.3,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',48.44,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14602','Washington CS27 South zone',NULL,NULL,'EPSG','2263','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',45.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-120.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',45.5,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',47.2,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14631','SPCS83 Washington North zone (meters)',NULL,NULL,'EPSG','2273','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',47.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-120.5,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',48.44,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',47.3,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14632','SPCS83 Washington South zone (meters)',NULL,NULL,'EPSG','2274','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',45.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-120.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',47.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',45.5,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14701','West Virginia CS27 North zone',NULL,NULL,'EPSG','2264','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',38.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-79.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.15,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14702','West Virginia CS27 South zone',NULL,NULL,'EPSG','2265','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-81.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',37.29,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.53,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14731','SPCS83 West Virginia North zone (meters)',NULL,NULL,'EPSG','2264','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',38.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-79.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',40.15,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',39.0,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14732','SPCS83 West Virginia South zone (meters)',NULL,NULL,'EPSG','2265','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-81.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',38.53,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.29,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14733','SPCS83 West Virginia North zone (US Survey feet)',NULL,NULL,'EPSG','2264','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',38.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-79.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',40.15,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',39.0,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','14734','SPCS83 West Virginia South zone (US Survey feet)',NULL,NULL,'EPSG','2265','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-81.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',38.53,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.29,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','14735','SPCS83 West Virginia North zone (US Survey feet)',NULL,NULL,'EPSG','2264','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',38.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-79.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',40.15,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',39.0,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14736','SPCS83 West Virginia South zone (US Survey feet)',NULL,NULL,'EPSG','2265','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-81.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',38.53,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.29,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14801','Wisconsin CS27 North zone',NULL,NULL,'EPSG','2267','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',45.1,'EPSG','9110','EPSG','8822','Longitude of false origin',-90.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',45.34,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',46.46,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14802','Wisconsin CS27 Central zone',NULL,NULL,'EPSG','2266','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',43.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-90.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',44.15,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',45.3,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14803','Wisconsin CS27 South zone',NULL,NULL,'EPSG','2268','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',42.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-90.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',42.44,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',44.04,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14811','Wisconsin Transverse Mercator 27',NULL,NULL,'EPSG','1418','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-90.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',-4500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14831','SPCS83 Wisconsin North zone (meters)',NULL,NULL,'EPSG','2267','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',45.1,'EPSG','9110','EPSG','8822','Longitude of false origin',-90.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',46.46,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',45.34,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14832','SPCS83 Wisconsin Central zone (meters)',NULL,NULL,'EPSG','2266','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',43.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-90.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',45.3,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',44.15,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14833','SPCS83 Wisconsin South zone (meters)',NULL,NULL,'EPSG','2268','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',42.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-90.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',44.04,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',42.44,'EPSG','9110','EPSG','8826','Easting at false origin',600000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14841','Wisconsin Transverse Mercator 83',NULL,NULL,'EPSG','1418','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-90.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',520000.0,'EPSG','9001','EPSG','8807','False northing',-4480000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14901','Wyoming CS27 East zone',NULL,NULL,'EPSG','2269','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-105.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999941177,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14902','Wyoming CS27 East Central zone',NULL,NULL,'EPSG','2270','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-107.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999941177,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14903','Wyoming CS27 West Central zone',NULL,NULL,'EPSG','2272','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-108.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999941177,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14904','Wyoming CS27 West zone',NULL,NULL,'EPSG','2271','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-110.05,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999941177,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14931','SPCS83 Wyoming East zone (meters)',NULL,NULL,'EPSG','2269','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-105.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999375,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14932','SPCS83 Wyoming East Central zone (meters)',NULL,NULL,'EPSG','2270','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-107.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999375,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',100000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14933','SPCS83 Wyoming West Central zone (meters)',NULL,NULL,'EPSG','2272','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-108.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999375,'EPSG','9201','EPSG','8806','False easting',600000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14934','SPCS83 Wyoming West zone (meters)',NULL,NULL,'EPSG','2271','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-110.05,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999375,'EPSG','9201','EPSG','8806','False easting',800000.0,'EPSG','9001','EPSG','8807','False northing',100000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14935','SPCS83 Wyoming East zone (US Survey feet)',NULL,NULL,'EPSG','2269','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-105.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999375,'EPSG','9201','EPSG','8806','False easting',656166.6667,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14936','SPCS83 Wyoming East Central zone (US Survey feet)',NULL,NULL,'EPSG','2270','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-107.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999375,'EPSG','9201','EPSG','8806','False easting',1312333.3333,'EPSG','9003','EPSG','8807','False northing',328083.3333,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14937','SPCS83 Wyoming West Central zone (US Survey feet)',NULL,NULL,'EPSG','2272','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-108.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999375,'EPSG','9201','EPSG','8806','False easting',1968500.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','14938','SPCS83 Wyoming West zone (US Survey feet)',NULL,NULL,'EPSG','2271','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-110.05,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999375,'EPSG','9201','EPSG','8806','False easting',2624666.6667,'EPSG','9003','EPSG','8807','False northing',328083.3333,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15001','Alaska CS27 zone 1',NULL,NULL,'EPSG','2156','EPSG','9812','Hotine Oblique Mercator (variant A)','EPSG','8811','Latitude of projection centre',57.0,'EPSG','9110','EPSG','8812','Longitude of projection centre',-133.4,'EPSG','9110','EPSG','8813','Azimuth of initial line',323.07483685,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',323.07483685,'EPSG','9110','EPSG','8815','Scale factor on initial line',0.9999,'EPSG','9201','EPSG','8806','False easting',16404166.67,'EPSG','9003','EPSG','8807','False northing',-16404166.67,'EPSG','9003',0); +INSERT INTO "conversion" VALUES('EPSG','15002','Alaska CS27 zone 2',NULL,NULL,'EPSG','2158','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',54.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-142.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15003','Alaska CS27 zone 3',NULL,NULL,'EPSG','2159','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',54.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-146.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15004','Alaska CS27 zone 4',NULL,NULL,'EPSG','2160','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',54.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-150.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15005','Alaska CS27 zone 5',NULL,NULL,'EPSG','2161','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',54.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-154.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15006','Alaska CS27 zone 6',NULL,NULL,'EPSG','2162','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',54.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-158.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15007','Alaska CS27 zone 7',NULL,NULL,'EPSG','2163','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',54.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-162.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',700000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15008','Alaska CS27 zone 8',NULL,NULL,'EPSG','2164','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',54.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-166.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15009','Alaska CS27 zone 9',NULL,NULL,'EPSG','2165','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',54.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-170.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',600000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15010','Alaska CS27 zone 10',NULL,NULL,'EPSG','2157','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',51.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-176.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',53.5,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',51.5,'EPSG','9110','EPSG','8826','Easting at false origin',3000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15020','Alaska Albers',NULL,NULL,'EPSG','1330','EPSG','9822','Albers Equal Area','EPSG','8821','Latitude of false origin',50.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-154.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',55.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',65.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15021','Alaska Albers (meters)',NULL,NULL,'EPSG','1330','EPSG','9822','Albers Equal Area','EPSG','8821','Latitude of false origin',50.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-154.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',55.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',65.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15031','SPCS83 Alaska zone 1 (meters)',NULL,NULL,'EPSG','2156','EPSG','9812','Hotine Oblique Mercator (variant A)','EPSG','8811','Latitude of projection centre',57.0,'EPSG','9110','EPSG','8812','Longitude of projection centre',-133.4,'EPSG','9110','EPSG','8813','Azimuth of initial line',323.07483685,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',323.07483685,'EPSG','9110','EPSG','8815','Scale factor on initial line',0.9999,'EPSG','9201','EPSG','8806','False easting',5000000.0,'EPSG','9001','EPSG','8807','False northing',-5000000.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','15032','SPCS83 Alaska zone 2 (meters)',NULL,NULL,'EPSG','2158','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',54.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-142.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15033','SPCS83 Alaska zone 3 (meters)',NULL,NULL,'EPSG','2159','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',54.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-146.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15034','SPCS83 Alaska zone 4 (meters)',NULL,NULL,'EPSG','2160','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',54.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-150.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15035','SPCS83 Alaska zone 5 (meters)',NULL,NULL,'EPSG','2161','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',54.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-154.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15036','SPCS83 Alaska zone 6 (meters)',NULL,NULL,'EPSG','2162','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',54.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-158.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15037','SPCS83 Alaska zone 7 (meters)',NULL,NULL,'EPSG','2163','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',54.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-162.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15038','SPCS83 Alaska zone 8 (meters)',NULL,NULL,'EPSG','2164','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',54.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-166.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15039','SPCS83 Alaska zone 9 (meters)',NULL,NULL,'EPSG','2165','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',54.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-170.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15040','SPCS83 Alaska zone 10 (meters)',NULL,NULL,'EPSG','2157','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',51.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-176.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',53.5,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',51.5,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15101','Hawaii CS27 zone 1',NULL,NULL,'EPSG','1546','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',18.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-155.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15102','Hawaii CS27 zone 2',NULL,NULL,'EPSG','1547','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',20.2,'EPSG','9110','EPSG','8802','Longitude of natural origin',-156.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15103','Hawaii CS27 zone 3',NULL,NULL,'EPSG','1548','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',21.1,'EPSG','9110','EPSG','8802','Longitude of natural origin',-158.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15104','Hawaii CS27 zone 4',NULL,NULL,'EPSG','1549','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',21.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-159.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15105','Hawaii CS27 zone 5',NULL,NULL,'EPSG','1550','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',21.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-160.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15131','SPCS83 Hawaii zone 1 (meters)',NULL,NULL,'EPSG','1546','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',18.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-155.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15132','SPCS83 Hawaii zone 2 (meters)',NULL,NULL,'EPSG','1547','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',20.2,'EPSG','9110','EPSG','8802','Longitude of natural origin',-156.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15133','SPCS83 Hawaii zone 3 (meters)',NULL,NULL,'EPSG','1548','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',21.1,'EPSG','9110','EPSG','8802','Longitude of natural origin',-158.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15134','SPCS83 Hawaii zone 4 (meters)',NULL,NULL,'EPSG','1549','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',21.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-159.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15135','SPCS83 Hawaii zone 5 (meters)',NULL,NULL,'EPSG','1550','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',21.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-160.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15138','SPCS83 Hawaii zone 3 (US Survey feet)',NULL,NULL,'EPSG','1548','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',21.1,'EPSG','9110','EPSG','8802','Longitude of natural origin',-158.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99999,'EPSG','9201','EPSG','8806','False easting',1640416.6667,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15201','Puerto Rico CS27',NULL,NULL,'EPSG','3294','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',17.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-66.26,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',18.26,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',18.02,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15202','St. Croix CS27',NULL,NULL,'EPSG','3330','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',17.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-66.26,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',18.26,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',18.02,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9003','EPSG','8827','Northing at false origin',100000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15230','SPCS83 Puerto Rico & Virgin Islands zone (meters)',NULL,NULL,'EPSG','3634','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',17.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-66.26,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',18.26,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',18.02,'EPSG','9110','EPSG','8826','Easting at false origin',200000.0,'EPSG','9001','EPSG','8827','Northing at false origin',200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15297','SPCS83 Utah North zone (US Survey feet)',NULL,NULL,'EPSG','2258','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',40.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-111.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.47,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.43,'EPSG','9110','EPSG','8826','Easting at false origin',1640416.6667,'EPSG','9003','EPSG','8827','Northing at false origin',3280833.3333,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15298','SPCS83 Utah Central zone (US Survey feet)',NULL,NULL,'EPSG','2257','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',38.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-111.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',40.39,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',39.01,'EPSG','9110','EPSG','8826','Easting at false origin',1640416.6667,'EPSG','9003','EPSG','8827','Northing at false origin',6561666.6667,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15299','SPCS83 Utah South zone (US Survey feet)',NULL,NULL,'EPSG','2259','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-111.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',38.21,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.13,'EPSG','9110','EPSG','8826','Easting at false origin',1640416.6667,'EPSG','9003','EPSG','8827','Northing at false origin',9842500.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15300','American Samoa Lambert',NULL,NULL,'EPSG','1027','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',-14.16,'EPSG','9110','EPSG','8802','Longitude of natural origin',170.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15301','American Samoa Lambert',NULL,NULL,'EPSG','1027','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',-14.16,'EPSG','9110','EPSG','8802','Longitude of natural origin',-170.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15302','Tennessee CS27',NULL,NULL,'EPSG','1411','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',34.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-86.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',35.15,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',36.25,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',100000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15303','SPCS83 Kentucky North zone (meters)',NULL,NULL,'EPSG','2202','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-84.15,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',37.58,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.58,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15304','SPCS83 Arizona East zone (International feet)',NULL,NULL,'EPSG','2167','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-110.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',700000.0,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15305','SPCS83 Arizona Central zone (International feet)',NULL,NULL,'EPSG','2166','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-111.55,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',700000.0,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15306','SPCS83 Arizona West zone (International feet)',NULL,NULL,'EPSG','2168','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-113.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999933333,'EPSG','9201','EPSG','8806','False easting',700000.0,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15307','SPCS83 California zone 1 (US Survey feet)',NULL,NULL,'EPSG','2175','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',39.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-122.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.0,'EPSG','9110','EPSG','8826','Easting at false origin',6561666.667,'EPSG','9003','EPSG','8827','Northing at false origin',1640416.667,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15308','SPCS83 California zone 2 (US Survey feet)',NULL,NULL,'EPSG','2176','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-122.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.5,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.2,'EPSG','9110','EPSG','8826','Easting at false origin',6561666.667,'EPSG','9003','EPSG','8827','Northing at false origin',1640416.667,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15309','SPCS83 California zone 3 (US Survey feet)',NULL,NULL,'EPSG','2177','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-120.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',38.26,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.04,'EPSG','9110','EPSG','8826','Easting at false origin',6561666.667,'EPSG','9003','EPSG','8827','Northing at false origin',1640416.667,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15310','SPCS83 California zone 4 (US Survey feet)',NULL,NULL,'EPSG','2178','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',35.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-119.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',37.15,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',36.0,'EPSG','9110','EPSG','8826','Easting at false origin',6561666.667,'EPSG','9003','EPSG','8827','Northing at false origin',1640416.667,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15311','SPCS83 California zone 5 (US Survey feet)',NULL,NULL,'EPSG','2182','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',33.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-118.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',35.28,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',34.02,'EPSG','9110','EPSG','8826','Easting at false origin',6561666.667,'EPSG','9003','EPSG','8827','Northing at false origin',1640416.667,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15312','SPCS83 California zone 6 (US Survey feet)',NULL,NULL,'EPSG','2180','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',32.1,'EPSG','9110','EPSG','8822','Longitude of false origin',-116.15,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',33.53,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',32.47,'EPSG','9110','EPSG','8826','Easting at false origin',6561666.667,'EPSG','9003','EPSG','8827','Northing at false origin',1640416.667,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15313','SPCS83 Colorado North zone (US Survey feet)',NULL,NULL,'EPSG','2184','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',39.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-105.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',40.47,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',39.43,'EPSG','9110','EPSG','8826','Easting at false origin',3000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15314','SPCS83 Colorado Central zone (US Survey feet)',NULL,NULL,'EPSG','2183','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-105.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.45,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.27,'EPSG','9110','EPSG','8826','Easting at false origin',3000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15315','SPCS83 Colorado South zone (US Survey feet)',NULL,NULL,'EPSG','2185','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-105.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',38.26,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.14,'EPSG','9110','EPSG','8826','Easting at false origin',3000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15316','SPCS83 Connecticut zone (US Survey feet)',NULL,NULL,'EPSG','1377','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',40.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-72.45,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.52,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',41.12,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',500000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15317','SPCS83 Delaware zone (US Survey feet)',NULL,NULL,'EPSG','1378','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-75.25,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999995,'EPSG','9201','EPSG','8806','False easting',656166.667,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15318','SPCS83 Florida East zone (US Survey feet)',NULL,NULL,'EPSG','2186','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',24.2,'EPSG','9110','EPSG','8802','Longitude of natural origin',-81.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999941177,'EPSG','9201','EPSG','8806','False easting',656166.667,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15319','SPCS83 Florida West zone (US Survey feet)',NULL,NULL,'EPSG','2188','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',24.2,'EPSG','9110','EPSG','8802','Longitude of natural origin',-82.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999941177,'EPSG','9201','EPSG','8806','False easting',656166.667,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15320','SPCS83 Florida North zone (US Survey feet)',NULL,NULL,'EPSG','2187','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',29.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-84.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',30.45,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',29.35,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15321','SPCS83 Georgia East zone (US Survey feet)',NULL,NULL,'EPSG','2189','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-82.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',656166.667,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15322','SPCS83 Georgia West zone (US Survey feet)',NULL,NULL,'EPSG','2190','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-84.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',2296583.333,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15323','SPCS83 Idaho East zone (US Survey feet)',NULL,NULL,'EPSG','2192','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-112.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999947368,'EPSG','9201','EPSG','8806','False easting',656166.667,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15324','SPCS83 Idaho Central zone (US Survey feet)',NULL,NULL,'EPSG','2191','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-114.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999947368,'EPSG','9201','EPSG','8806','False easting',1640416.667,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15325','SPCS83 Idaho West zone (US Survey feet)',NULL,NULL,'EPSG','2193','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-115.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999933333,'EPSG','9201','EPSG','8806','False easting',2624666.667,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15326','SPCS83 Indiana East zone (US Survey feet)',NULL,NULL,'EPSG','2196','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',328083.333,'EPSG','9003','EPSG','8807','False northing',818125.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15327','SPCS83 Indiana West zone (US Survey feet)',NULL,NULL,'EPSG','2197','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.05,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',2952750.0,'EPSG','9003','EPSG','8807','False northing',818125.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15328','SPCS83 Kentucky North zone (US Survey feet)',NULL,NULL,'EPSG','2202','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-84.15,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',37.58,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.58,'EPSG','9110','EPSG','8826','Easting at false origin',1640416.667,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15329','SPCS83 Kentucky South zone (US Survey feet)',NULL,NULL,'EPSG','2203','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-85.45,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',37.56,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',36.44,'EPSG','9110','EPSG','8826','Easting at false origin',1640416.667,'EPSG','9003','EPSG','8827','Northing at false origin',1640416.667,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15330','SPCS83 Maryland zone (US Survey feet)',NULL,NULL,'EPSG','1389','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-77.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.27,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.18,'EPSG','9110','EPSG','8826','Easting at false origin',1312333.333,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15331','SPCS83 Massachusetts Mainland zone (US Survey feet)',NULL,NULL,'EPSG','2209','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-71.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',42.41,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',41.43,'EPSG','9110','EPSG','8826','Easting at false origin',656166.667,'EPSG','9003','EPSG','8827','Northing at false origin',2460625.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15332','SPCS83 Massachusetts Island zone (US Survey feet)',NULL,NULL,'EPSG','2208','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-70.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.29,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',41.17,'EPSG','9110','EPSG','8826','Easting at false origin',1640416.667,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15333','SPCS83 Michigan North zone (International feet)',NULL,NULL,'EPSG','1723','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',44.47,'EPSG','9110','EPSG','8822','Longitude of false origin',-87.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',47.05,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',45.29,'EPSG','9110','EPSG','8826','Easting at false origin',26246719.16,'EPSG','9002','EPSG','8827','Northing at false origin',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15334','SPCS83 Michigan Central zone (International feet)',NULL,NULL,'EPSG','1724','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',43.19,'EPSG','9110','EPSG','8822','Longitude of false origin',-84.22,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',45.42,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',44.11,'EPSG','9110','EPSG','8826','Easting at false origin',19685039.37,'EPSG','9002','EPSG','8827','Northing at false origin',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15335','SPCS83 Michigan South zone (International feet)',NULL,NULL,'EPSG','1725','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-84.22,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',43.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',42.06,'EPSG','9110','EPSG','8826','Easting at false origin',13123359.58,'EPSG','9002','EPSG','8827','Northing at false origin',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15336','SPCS83 Mississippi East zone (US Survey feet)',NULL,NULL,'EPSG','2216','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',29.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',984250.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15337','SPCS83 Mississippi West zone (US Survey feet)',NULL,NULL,'EPSG','2217','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',29.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',2296583.333,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15338','SPCS83 Montana zone (International feet)',NULL,NULL,'EPSG','1395','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',44.15,'EPSG','9110','EPSG','8822','Longitude of false origin',-109.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',49.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',45.0,'EPSG','9110','EPSG','8826','Easting at false origin',1968503.937,'EPSG','9002','EPSG','8827','Northing at false origin',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15339','SPCS83 New Mexico East zone (US Survey feet)',NULL,NULL,'EPSG','2228','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-104.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999909091,'EPSG','9201','EPSG','8806','False easting',541337.5,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15340','SPCS83 New Mexico Central zone (US Survey feet)',NULL,NULL,'EPSG','2231','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-106.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',1640416.667,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15341','SPCS83 New Mexico West zone (US Survey feet)',NULL,NULL,'EPSG','2232','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-107.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999916667,'EPSG','9201','EPSG','8806','False easting',2723091.667,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15342','SPCS83 New York East zone (US Survey feet)',NULL,NULL,'EPSG','2234','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-74.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',492125.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15343','SPCS83 New York Central zone (US Survey feet)',NULL,NULL,'EPSG','2233','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-76.35,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999375,'EPSG','9201','EPSG','8806','False easting',820208.333,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15344','SPCS83 New York West zone (US Survey feet)',NULL,NULL,'EPSG','2236','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-78.35,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999375,'EPSG','9201','EPSG','8806','False easting',1148291.667,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15345','SPCS83 New York Long Island zone (US Survey feet)',NULL,NULL,'EPSG','2235','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',40.1,'EPSG','9110','EPSG','8822','Longitude of false origin',-74.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.02,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.4,'EPSG','9110','EPSG','8826','Easting at false origin',984250.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15346','SPCS83 North Carolina zone (US Survey feet)',NULL,NULL,'EPSG','1402','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',33.45,'EPSG','9110','EPSG','8822','Longitude of false origin',-79.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',36.1,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',34.2,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15347','SPCS83 North Dakota North zone (International feet)',NULL,NULL,'EPSG','2237','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',47.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',48.44,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',47.26,'EPSG','9110','EPSG','8826','Easting at false origin',1968503.937,'EPSG','9002','EPSG','8827','Northing at false origin',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15348','SPCS83 North Dakota South zone (International feet)',NULL,NULL,'EPSG','2238','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',45.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',47.29,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',46.11,'EPSG','9110','EPSG','8826','Easting at false origin',1968503.937,'EPSG','9002','EPSG','8827','Northing at false origin',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15349','SPCS83 Oklahoma North zone (US Survey feet)',NULL,NULL,'EPSG','2241','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',35.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',36.46,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',35.34,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15350','SPCS83 Oklahoma South zone (US Survey feet)',NULL,NULL,'EPSG','2242','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',33.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',35.14,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',33.56,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15351','SPCS83 Oregon North zone (International feet)',NULL,NULL,'EPSG','2243','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',43.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-120.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',46.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',44.2,'EPSG','9110','EPSG','8826','Easting at false origin',8202099.738,'EPSG','9002','EPSG','8827','Northing at false origin',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15352','SPCS83 Oregon South zone (International feet)',NULL,NULL,'EPSG','2244','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-120.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',44.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',42.2,'EPSG','9110','EPSG','8826','Easting at false origin',4921259.843,'EPSG','9002','EPSG','8827','Northing at false origin',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15353','SPCS83 Pennsylvania North zone (US Survey feet)',NULL,NULL,'EPSG','2245','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',40.1,'EPSG','9110','EPSG','8822','Longitude of false origin',-77.45,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.57,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.53,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15354','SPCS83 Pennsylvania South zone (US Survey feet)',NULL,NULL,'EPSG','2246','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',39.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-77.45,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',40.58,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',39.56,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15355','SPCS83 South Carolina zone (International feet)',NULL,NULL,'EPSG','1409','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',31.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-81.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',34.5,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',32.3,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9002','EPSG','8827','Northing at false origin',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15356','SPCS83 Tennessee zone (US Survey feet)',NULL,NULL,'EPSG','1411','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',34.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-86.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',36.25,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',35.15,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15357','SPCS83 Texas North zone (US Survey feet)',NULL,NULL,'EPSG','2253','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',34.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-101.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',36.11,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',34.39,'EPSG','9110','EPSG','8826','Easting at false origin',656166.667,'EPSG','9003','EPSG','8827','Northing at false origin',3280833.333,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15358','SPCS83 Texas North Central zone (US Survey feet)',NULL,NULL,'EPSG','2254','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',31.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',33.58,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',32.08,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9003','EPSG','8827','Northing at false origin',6561666.667,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15359','SPCS83 Texas Central zone (US Survey feet)',NULL,NULL,'EPSG','2252','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',29.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',31.53,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',30.07,'EPSG','9110','EPSG','8826','Easting at false origin',2296583.333,'EPSG','9003','EPSG','8827','Northing at false origin',9842500.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15360','SPCS83 Texas South Central zone (US Survey feet)',NULL,NULL,'EPSG','2527','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',27.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-99.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',30.17,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',28.23,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9003','EPSG','8827','Northing at false origin',13123333.333,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15361','SPCS83 Texas South zone (US Survey feet)',NULL,NULL,'EPSG','2528','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',25.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',27.5,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',26.1,'EPSG','9110','EPSG','8826','Easting at false origin',984250.0,'EPSG','9003','EPSG','8827','Northing at false origin',16404166.667,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15362','SPCS83 Utah North zone (International feet)',NULL,NULL,'EPSG','2258','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',40.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-111.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.47,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.43,'EPSG','9110','EPSG','8826','Easting at false origin',1640419.948,'EPSG','9002','EPSG','8827','Northing at false origin',3280839.895,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15363','SPCS83 Utah Central zone (International feet)',NULL,NULL,'EPSG','2257','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',38.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-111.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',40.39,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',39.01,'EPSG','9110','EPSG','8826','Easting at false origin',1640419.948,'EPSG','9002','EPSG','8827','Northing at false origin',6561679.79,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15364','SPCS83 Utah South zone (International feet)',NULL,NULL,'EPSG','2259','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-111.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',38.21,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.13,'EPSG','9110','EPSG','8826','Easting at false origin',1640419.948,'EPSG','9002','EPSG','8827','Northing at false origin',9842519.685,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15365','SPCS83 Virginia North zone (US Survey feet)',NULL,NULL,'EPSG','2260','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',37.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-78.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.12,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.02,'EPSG','9110','EPSG','8826','Easting at false origin',11482916.667,'EPSG','9003','EPSG','8827','Northing at false origin',6561666.667,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15366','SPCS83 Virginia South zone (US Survey feet)',NULL,NULL,'EPSG','2261','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-78.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',37.58,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',36.46,'EPSG','9110','EPSG','8826','Easting at false origin',11482916.667,'EPSG','9003','EPSG','8827','Northing at false origin',3280833.333,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15367','SPCS83 Washington North zone (US Survey feet)',NULL,NULL,'EPSG','2273','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',47.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-120.5,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',48.44,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',47.3,'EPSG','9110','EPSG','8826','Easting at false origin',1640416.667,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15368','SPCS83 Washington South zone (US Survey feet)',NULL,NULL,'EPSG','2274','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',45.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-120.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',47.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',45.5,'EPSG','9110','EPSG','8826','Easting at false origin',1640416.667,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15369','SPCS83 Wisconsin North zone (US Survey feet)',NULL,NULL,'EPSG','2267','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',45.1,'EPSG','9110','EPSG','8822','Longitude of false origin',-90.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',46.46,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',45.34,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15370','SPCS83 Wisconsin Central zone (US Survey feet)',NULL,NULL,'EPSG','2266','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',43.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-90.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',45.3,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',44.15,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15371','SPCS83 Wisconsin South zone (US Survey feet)',NULL,NULL,'EPSG','2268','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',42.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-90.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',44.04,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',42.44,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15372','SPCS83 Indiana East zone (US Survey feet)',NULL,NULL,'EPSG','2196','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-85.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',328083.333,'EPSG','9003','EPSG','8807','False northing',820208.333,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15373','SPCS83 Indiana West zone (US Survey feet)',NULL,NULL,'EPSG','2197','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',37.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-87.05,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',2952750.0,'EPSG','9003','EPSG','8807','False northing',820208.333,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15374','Oregon GIC Lambert (International feet)',NULL,NULL,'EPSG','1406','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.45,'EPSG','9110','EPSG','8822','Longitude of false origin',-120.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',43.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',45.3,'EPSG','9110','EPSG','8826','Easting at false origin',1312335.958,'EPSG','9002','EPSG','8827','Northing at false origin',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15375','SPCS83 Kentucky Single Zone (US Survey feet)',NULL,NULL,'EPSG','1386','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-85.45,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',37.05,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.4,'EPSG','9110','EPSG','8826','Easting at false origin',4921250.0,'EPSG','9003','EPSG','8827','Northing at false origin',3280833.333,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15376','American Samoa Lambert',NULL,NULL,'EPSG','3109','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',-14.16,'EPSG','9110','EPSG','8802','Longitude of natural origin',-170.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9003','EPSG','8807','False northing',312234.65,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15377','SPCS83 Iowa North zone (US Survey feet)',NULL,NULL,'EPSG','2198','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-93.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',43.16,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',42.04,'EPSG','9110','EPSG','8826','Easting at false origin',4921250.0,'EPSG','9003','EPSG','8827','Northing at false origin',3280833.3333,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15378','SPCS83 Iowa South zone (US Survey feet)',NULL,NULL,'EPSG','2199','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',40.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-93.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.47,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.37,'EPSG','9110','EPSG','8826','Easting at false origin',1640416.6667,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15379','SPCS83 Kansas North zone (US Survey feet)',NULL,NULL,'EPSG','2200','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',38.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',39.47,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',38.43,'EPSG','9110','EPSG','8826','Easting at false origin',1312333.3333,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15380','SPCS83 Kansas South zone (US Survey feet)',NULL,NULL,'EPSG','2201','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',36.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-98.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',38.34,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',37.16,'EPSG','9110','EPSG','8826','Easting at false origin',1312333.3333,'EPSG','9003','EPSG','8827','Northing at false origin',1312333.3333,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15381','SPCS83 Nevada East zone (US Survey feet)',NULL,NULL,'EPSG','2224','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',34.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-115.35,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',656166.6667,'EPSG','9003','EPSG','8807','False northing',26246666.6667,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15382','SPCS83 Nevada Central zone (US Survey feet)',NULL,NULL,'EPSG','2223','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',34.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-116.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',1640416.6667,'EPSG','9003','EPSG','8807','False northing',19685000.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15383','SPCS83 Nevada West zone (US Survey feet)',NULL,NULL,'EPSG','2225','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',34.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-118.35,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',2624666.6667,'EPSG','9003','EPSG','8807','False northing',13123333.3333,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15384','SPCS83 New Jersey zone (US Survey feet)',NULL,NULL,'EPSG','1399','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',-74.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',492125.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15385','SPCS83 Arkansas North zone (US Survey feet)',NULL,NULL,'EPSG','2169','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',34.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-92.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',36.14,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',34.56,'EPSG','9110','EPSG','8826','Easting at false origin',1312333.3333,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15386','SPCS83 Arkansas South zone (US Survey feet)',NULL,NULL,'EPSG','2170','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',32.4,'EPSG','9110','EPSG','8822','Longitude of false origin',-92.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',34.46,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',33.18,'EPSG','9110','EPSG','8826','Easting at false origin',1312333.3333,'EPSG','9003','EPSG','8827','Northing at false origin',1312333.3333,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15387','SPCS83 Illinois East zone (US Survey feet)',NULL,NULL,'EPSG','2194','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-88.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999975,'EPSG','9201','EPSG','8806','False easting',984250.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15388','SPCS83 Illinois West zone (US Survey feet)',NULL,NULL,'EPSG','2195','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999941177,'EPSG','9201','EPSG','8806','False easting',2296583.3333,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15389','SPCS83 New Hampshire zone (US Survey feet)',NULL,NULL,'EPSG','1398','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',42.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-71.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999966667,'EPSG','9201','EPSG','8806','False easting',984250.0,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15390','SPCS83 Rhode Island zone (US Survey feet)',NULL,NULL,'EPSG','1408','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',41.05,'EPSG','9110','EPSG','8802','Longitude of natural origin',-71.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99999375,'EPSG','9201','EPSG','8806','False easting',328083.3333,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15391','SPCS83 Louisiana North zone (US Survey feet)',NULL,NULL,'EPSG','2204','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',30.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-92.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',32.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',31.1,'EPSG','9110','EPSG','8826','Easting at false origin',3280833.3333,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15392','SPCS83 Louisiana South zone (US Survey feet)',NULL,NULL,'EPSG','2529','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',28.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-91.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',30.42,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',29.18,'EPSG','9110','EPSG','8826','Easting at false origin',3280833.3333,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15393','SPCS83 Louisiana Offshore zone (US Survey feet)',NULL,NULL,'EPSG','1387','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',25.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-91.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',27.5,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',26.1,'EPSG','9110','EPSG','8826','Easting at false origin',3280833.3333,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15394','SPCS83 South Dakota North zone (US Survey feet)',NULL,NULL,'EPSG','2249','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',43.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',45.41,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',44.25,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15395','SPCS83 South Dakota South zone (US Survey feet)',NULL,NULL,'EPSG','2250','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',42.2,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',44.24,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',42.5,'EPSG','9110','EPSG','8826','Easting at false origin',1968500.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15396','SPCS83 Nebraska zone (US Survey feet)',NULL,NULL,'EPSG','1396','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',39.5,'EPSG','9110','EPSG','8822','Longitude of false origin',-100.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',43.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.0,'EPSG','9110','EPSG','8826','Easting at false origin',1640416.6667,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15397','Great Lakes Albers',NULL,NULL,'EPSG','3467','EPSG','9822','Albers Equal Area','EPSG','8821','Latitude of false origin',45.568977,'EPSG','9102','EPSG','8822','Longitude of false origin',-84.455955,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',42.122774,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',49.01518,'EPSG','9102','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15398','Great Lakes and St Lawrence Albers',NULL,NULL,'EPSG','3468','EPSG','9822','Albers Equal Area','EPSG','8821','Latitude of false origin',45.568977,'EPSG','9102','EPSG','8822','Longitude of false origin',-83.248627,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',42.122774,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',49.01518,'EPSG','9102','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15399','Yap Islands',NULL,NULL,'EPSG','3108','EPSG','9832','Modified Azimuthal Equidistant','EPSG','8801','Latitude of natural origin',9.324815,'EPSG','9110','EPSG','8802','Longitude of natural origin',138.100748,'EPSG','9110','EPSG','8806','False easting',40000.0,'EPSG','9001','EPSG','8807','False northing',60000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15400','Guam SPCS',NULL,NULL,'EPSG','3255','EPSG','9831','Guam Projection','EPSG','8801','Latitude of natural origin',13.282087887,'EPSG','9110','EPSG','8802','Longitude of natural origin',144.445550254,'EPSG','9110','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',50000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15498','axis order change (2D)',NULL,NULL,'EPSG','1262','EPSG','9843','Axis Order Reversal (2D)',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15499','axis order change (geographic3D horizontal)',NULL,NULL,'EPSG','1262','EPSG','9844','Axis Order Reversal (Geographic3D horizontal)',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15500','Australian Antarctic geocentric to geog3D',NULL,NULL,'EPSG','1278','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15501','Australian Antarctic geog3D to geog2D',NULL,NULL,'EPSG','1278','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15502','CHTRF95 geocentric to geog3D',NULL,NULL,'EPSG','1286','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15503','CHTRF95 geog3D to geog2D',NULL,NULL,'EPSG','1286','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15504','EST97 geocentric to geog3D',NULL,NULL,'EPSG','1090','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15505','EST97 geog3D to geog2D',NULL,NULL,'EPSG','1090','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15506','ETRS89 geocentric to geog3D',NULL,NULL,'EPSG','1298','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15507','ETRS89 geog3D to geog2D',NULL,NULL,'EPSG','1298','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15508','GDA94 geocentric to geog3D',NULL,NULL,'EPSG','2575','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15509','GDA94 geog3D to geog2D',NULL,NULL,'EPSG','2575','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15510','Hartebeesthoek94 geocentric to geog3D',NULL,NULL,'EPSG','1215','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15511','Hartebeesthoek94 geog3D to geog2D',NULL,NULL,'EPSG','1215','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15512','IRENET95 geocentric to geog3D',NULL,NULL,'EPSG','1305','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15513','IRENET95 geog3D to geog2D',NULL,NULL,'EPSG','1305','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15514','ISN93 geocentric to geog3D',NULL,NULL,'EPSG','1120','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15515','ISN93 geog3D to geog2D',NULL,NULL,'EPSG','1120','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15516','JGD2000 geocentric to geog3D',NULL,NULL,'EPSG','1129','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15517','JGD2000 geog3D to geog2D',NULL,NULL,'EPSG','1129','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15518','LKS92 geocentric to geog3D',NULL,NULL,'EPSG','1139','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15519','LKS92 geog3D to geog2D',NULL,NULL,'EPSG','1139','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15520','LKS94 geocentric to geog3D',NULL,NULL,'EPSG','1145','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15521','LKS94 geocentric to geog3D',NULL,NULL,'EPSG','1145','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15522','Moznet geocentric to geog3D',NULL,NULL,'EPSG','1167','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15523','Moznet geog3D to geog2D',NULL,NULL,'EPSG','1167','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15524','NAD83(CSRS) geocentric to geog3D',NULL,NULL,'EPSG','1061','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15525','NAD83(CSRS) geog3D to geog2D',NULL,NULL,'EPSG','1061','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15526','NAD83(HARN) geocentric to geog3D',NULL,NULL,'EPSG','1337','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15527','NAD83(HARN) geog3D to geog2D',NULL,NULL,'EPSG','1337','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15528','NZGD2000 geocentric to geog3D',NULL,NULL,'EPSG','1175','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15529','NZGD2000 geog3D to geog2D',NULL,NULL,'EPSG','1175','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15530','POSGAR 98 geocentric to geog3D',NULL,NULL,'EPSG','1033','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15531','POSGAR 98 geog3D to geog2D',NULL,NULL,'EPSG','1033','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15532','REGVEN geocentric to geog3D',NULL,NULL,'EPSG','1251','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15533','REGVEN geog3D to geog2D',NULL,NULL,'EPSG','1251','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15534','RGF93 geocentric to geog3D',NULL,NULL,'EPSG','1096','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15535','RGF93 geog3D to geog2D',NULL,NULL,'EPSG','1096','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15536','RGFG95 geocentric to geog3D',NULL,NULL,'EPSG','1097','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15537','RGFG95 geog3D to geog2D',NULL,NULL,'EPSG','1097','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15538','RGNC91-93 geocentric to geog3D',NULL,NULL,'EPSG','1174','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15539','RGNC91-93 geog3D to geog2D',NULL,NULL,'EPSG','1174','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15540','RGR92 geocentric to geog3D',NULL,NULL,'EPSG','1196','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15541','RGR92 geog3D to geog2D',NULL,NULL,'EPSG','1196','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15542','RRAF 1991 geocentric to geog3D',NULL,NULL,'EPSG','2824','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15543','RRAF 1991 geog3D to geog2D',NULL,NULL,'EPSG','2824','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15544','SIRGAS geocentric to geog3D',NULL,NULL,'EPSG','3448','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15545','SIRGAS geog3D to geog2D',NULL,NULL,'EPSG','3448','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15546','SWEREF99 geocentric to geog3D',NULL,NULL,'EPSG','1225','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15547','SWEREF99 geog3D to geog2D',NULL,NULL,'EPSG','1225','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15548','WGS 84 geocentric to geog3D',NULL,NULL,'EPSG','1262','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15549','WGS 84 geog3D to geog2D',NULL,NULL,'EPSG','1262','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15550','Yemen NGN96 geocentric to geog3D',NULL,NULL,'EPSG','1257','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15551','Yemen NGN96 geog3D to geog2D',NULL,NULL,'EPSG','1257','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15552','IGM95 geocentric to geog3D',NULL,NULL,'EPSG','1127','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15553','IGM95 geog3D to geog2D',NULL,NULL,'EPSG','1127','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15554','WGS 72 geocentric to geog3D',NULL,NULL,'EPSG','1262','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15555','WGS 72 geog3D to geog2D',NULL,NULL,'EPSG','1262','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15556','WGS 72BE geocentric to geog3D',NULL,NULL,'EPSG','1262','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15557','WGS 72BE geog3D to geog2D',NULL,NULL,'EPSG','1262','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15558','SIRGAS 2000 geocentric to geog3D',NULL,NULL,'EPSG','3418','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15559','SIRGAS 2000 geog3D to geog2D',NULL,NULL,'EPSG','3418','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15560','Lao 1993 geocentric to geog3D',NULL,NULL,'EPSG','1138','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15561','Lao 1993 geog3D to geog2D',NULL,NULL,'EPSG','1138','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15562','Lao 1997 geocentric to geog3D',NULL,NULL,'EPSG','1138','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15563','Lao 1997 geog3D to geog2D',NULL,NULL,'EPSG','1138','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15564','PRS92 geocentric to geog3D',NULL,NULL,'EPSG','1190','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15565','PRS92 geog3D to geog2D',NULL,NULL,'EPSG','1190','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15566','MAGNA-SIRGAS geocentric to geog3D',NULL,NULL,'EPSG','1070','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15567','MAGNA-SIRGAS geog3D to geog2D',NULL,NULL,'EPSG','1070','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15568','RGPF geocentric to geog3D',NULL,NULL,'EPSG','1098','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15569','RGPF geog3D to geog2D',NULL,NULL,'EPSG','1098','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15570','POSGAR 94 geocentric to geog3D',NULL,NULL,'EPSG','1033','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15571','POSGAR 94 geog3D to geog2D',NULL,NULL,'EPSG','1033','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15572','Korean 2000 geocentric to geog3D',NULL,NULL,'EPSG','1135','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15573','Korean 2000 geog3D to geog2D',NULL,NULL,'EPSG','1135','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15574','Mauritania 1999 geocentric to geog3D',NULL,NULL,'EPSG','1157','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15575','Mauritania 1999 geog3D to geog2D',NULL,NULL,'EPSG','1157','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15576','PZ-90 geocentric to geog3D',NULL,NULL,'EPSG','1262','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15577','PZ-90 geog3D to geog2D',NULL,NULL,'EPSG','1262','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15578','GDM2000 geocentric to geog3D',NULL,NULL,'EPSG','1151','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15579','GDM2000 geog3D to geog2D',NULL,NULL,'EPSG','1151','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15580','GR96 geocentric to geog3D',NULL,NULL,'EPSG','1107','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15581','GR96 geog3D to geog2D',NULL,NULL,'EPSG','1107','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15582','LGD2006 geocentric to geog3D',NULL,NULL,'EPSG','1143','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15583','LGD2006 geog3D to geog2D',NULL,NULL,'EPSG','1143','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15584','DGN95 geocentric to geog3D',NULL,NULL,'EPSG','1122','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15585','DGN95 geog3D to geog2D',NULL,NULL,'EPSG','1122','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15586','JAD2001 geocentric to geog3D',NULL,NULL,'EPSG','1128','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15587','JAD2001 geog3D to geog2D',NULL,NULL,'EPSG','1128','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15588','NAD83(NSRS2007) geocentric to geog3D',NULL,NULL,'EPSG','1511','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15589','NAD83(NSRS2007) geog3D to geog2D',NULL,NULL,'EPSG','1511','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15590','WGS 66 geocentric to geog3D',NULL,NULL,'EPSG','1262','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15591','WGS 66 geog3D to geog2D',NULL,NULL,'EPSG','1262','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','15592','geocentric to geographic3D',NULL,NULL,'EPSG','1262','EPSG','9602','Geographic/geocentric conversions',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15593','geographic3D to geographic2D',NULL,NULL,'EPSG','1262','EPSG','9659','Geographic3D to 2D conversion',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15594','EPSG topocentric example A',NULL,NULL,'EPSG','1263','EPSG','9837','Geographic/topocentric conversions','EPSG','8834','Latitude of topocentric origin',55.0,'EPSG','9102','EPSG','8835','Longitude of topocentric origin',5.0,'EPSG','9102','EPSG','8836','Ellipsoidal height of topocentric origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15595','EPSG topocentric example B',NULL,NULL,'EPSG','1263','EPSG','9836','Geocentric/topocentric conversions','EPSG','8837','Geocentric X of topocentric origin',3771793.97,'EPSG','9001','EPSG','8838','Geocentric Y of topocentric origin',140253.34,'EPSG','9001','EPSG','8839','Geocentric Z of topocentric origin',5124304.35,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15914','BLM zone 14N (US survey feet)',NULL,NULL,'EPSG','3637','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-99.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15915','BLM zone 15N (US survey feet)',NULL,NULL,'EPSG','3640','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-93.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15916','BLM zone 16N (US survey feet)',NULL,NULL,'EPSG','3641','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-87.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','15917','BLM zone 17N (US survey feet)',NULL,NULL,'EPSG','3642','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-81.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1640416.67,'EPSG','9003','EPSG','8807','False northing',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16000','UTM grid system (northern hemisphere)',NULL,NULL,'EPSG','1998','EPSG','9824','Transverse Mercator Zoned Grid System','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8830','Initial longitude',-180.0,'EPSG','9102','EPSG','8831','Zone width',6.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16001','UTM zone 1N',NULL,NULL,'EPSG','1873','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-177.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16002','UTM zone 2N',NULL,NULL,'EPSG','1875','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-171.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16003','UTM zone 3N',NULL,NULL,'EPSG','1877','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-165.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16004','UTM zone 4N',NULL,NULL,'EPSG','1879','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-159.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16005','UTM zone 5N',NULL,NULL,'EPSG','1881','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-153.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16006','UTM zone 6N',NULL,NULL,'EPSG','1883','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-147.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16007','UTM zone 7N',NULL,NULL,'EPSG','1885','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-141.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16008','UTM zone 8N',NULL,NULL,'EPSG','1887','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-135.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16009','UTM zone 9N',NULL,NULL,'EPSG','1889','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-129.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16010','UTM zone 10N',NULL,NULL,'EPSG','1891','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-123.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16011','UTM zone 11N',NULL,NULL,'EPSG','1893','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-117.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16012','UTM zone 12N',NULL,NULL,'EPSG','1895','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-111.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16013','UTM zone 13N',NULL,NULL,'EPSG','1897','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-105.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16014','UTM zone 14N',NULL,NULL,'EPSG','1899','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-99.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16015','UTM zone 15N',NULL,NULL,'EPSG','1901','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-93.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16016','UTM zone 16N',NULL,NULL,'EPSG','1903','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-87.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16017','UTM zone 17N',NULL,NULL,'EPSG','1905','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-81.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16018','UTM zone 18N',NULL,NULL,'EPSG','1907','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-75.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16019','UTM zone 19N',NULL,NULL,'EPSG','1909','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-69.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16020','UTM zone 20N',NULL,NULL,'EPSG','1911','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-63.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16021','UTM zone 21N',NULL,NULL,'EPSG','1913','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-57.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16022','UTM zone 22N',NULL,NULL,'EPSG','1915','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-51.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16023','UTM zone 23N',NULL,NULL,'EPSG','1917','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-45.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16024','UTM zone 24N',NULL,NULL,'EPSG','1919','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-39.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16025','UTM zone 25N',NULL,NULL,'EPSG','1921','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-33.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16026','UTM zone 26N',NULL,NULL,'EPSG','1923','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-27.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16027','UTM zone 27N',NULL,NULL,'EPSG','1925','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16028','UTM zone 28N',NULL,NULL,'EPSG','1927','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16029','UTM zone 29N',NULL,NULL,'EPSG','1929','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-9.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16030','UTM zone 30N',NULL,NULL,'EPSG','1931','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-3.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16031','UTM zone 31N',NULL,NULL,'EPSG','1933','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',3.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16032','UTM zone 32N',NULL,NULL,'EPSG','1935','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',9.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16033','UTM zone 33N',NULL,NULL,'EPSG','1937','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16034','UTM zone 34N',NULL,NULL,'EPSG','1939','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16035','UTM zone 35N',NULL,NULL,'EPSG','1941','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',27.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16036','UTM zone 36N',NULL,NULL,'EPSG','1943','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',33.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16037','UTM zone 37N',NULL,NULL,'EPSG','1945','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',39.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16038','UTM zone 38N',NULL,NULL,'EPSG','1947','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',45.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16039','UTM zone 39N',NULL,NULL,'EPSG','1949','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',51.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16040','UTM zone 40N',NULL,NULL,'EPSG','1951','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',57.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16041','UTM zone 41N',NULL,NULL,'EPSG','1953','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',63.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16042','UTM zone 42N',NULL,NULL,'EPSG','1955','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',69.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16043','UTM zone 43N',NULL,NULL,'EPSG','1957','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',75.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16044','UTM zone 44N',NULL,NULL,'EPSG','1959','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',81.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16045','UTM zone 45N',NULL,NULL,'EPSG','1961','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',87.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16046','UTM zone 46N',NULL,NULL,'EPSG','1963','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',93.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16047','UTM zone 47N',NULL,NULL,'EPSG','1965','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',99.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16048','UTM zone 48N',NULL,NULL,'EPSG','1967','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',105.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16049','UTM zone 49N',NULL,NULL,'EPSG','1969','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',111.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16050','UTM zone 50N',NULL,NULL,'EPSG','1971','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',117.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16051','UTM zone 51N',NULL,NULL,'EPSG','1973','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',123.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16052','UTM zone 52N',NULL,NULL,'EPSG','1975','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',129.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16053','UTM zone 53N',NULL,NULL,'EPSG','1977','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',135.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16054','UTM zone 54N',NULL,NULL,'EPSG','1979','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',141.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16055','UTM zone 55N',NULL,NULL,'EPSG','1981','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',147.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16056','UTM zone 56N',NULL,NULL,'EPSG','1983','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',153.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16057','UTM zone 57N',NULL,NULL,'EPSG','1985','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',159.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16058','UTM zone 58N',NULL,NULL,'EPSG','1987','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',165.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16059','UTM zone 59N',NULL,NULL,'EPSG','1989','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',171.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16060','UTM zone 60N',NULL,NULL,'EPSG','1991','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',177.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16061','Universal Polar Stereographic North',NULL,NULL,'EPSG','1996','EPSG','9810','Polar Stereographic (variant A)','EPSG','8801','Latitude of natural origin',90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.994,'EPSG','9201','EPSG','8806','False easting',2000000.0,'EPSG','9001','EPSG','8807','False northing',2000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16065','TM35FIN',NULL,NULL,'EPSG','1095','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',27.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16070','3-degree Gauss-Kruger zone 40',NULL,NULL,'EPSG','2628','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',120.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',40500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16071','3-degree Gauss-Kruger zone 41',NULL,NULL,'EPSG','2629','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',123.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',41500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16072','3-degree Gauss-Kruger zone 42',NULL,NULL,'EPSG','2630','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',126.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',42500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16073','3-degree Gauss-Kruger zone 43',NULL,NULL,'EPSG','2631','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',129.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',43500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16074','3-degree Gauss-Kruger zone 44',NULL,NULL,'EPSG','2632','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',132.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',44500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16075','3-degree Gauss-Kruger zone 45',NULL,NULL,'EPSG','2633','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',135.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',45500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16076','3-degree Gauss-Kruger zone 46',NULL,NULL,'EPSG','2634','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',138.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',46500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16077','3-degree Gauss-Kruger zone 47',NULL,NULL,'EPSG','2635','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',141.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',47500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16078','3-degree Gauss-Kruger zone 48',NULL,NULL,'EPSG','2636','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',144.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',48500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16079','3-degree Gauss-Kruger zone 49',NULL,NULL,'EPSG','2637','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',147.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',49500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16080','3-degree Gauss-Kruger zone 50',NULL,NULL,'EPSG','2638','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',150.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',50500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16081','3-degree Gauss-Kruger zone 51',NULL,NULL,'EPSG','2639','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',153.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',51500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16082','3-degree Gauss-Kruger zone 52',NULL,NULL,'EPSG','2640','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',156.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',52500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16083','3-degree Gauss-Kruger zone 53',NULL,NULL,'EPSG','2641','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',159.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',53500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16084','3-degree Gauss-Kruger zone 54',NULL,NULL,'EPSG','2642','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',162.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',54500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16085','3-degree Gauss-Kruger zone 55',NULL,NULL,'EPSG','2643','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',165.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',55500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16086','3-degree Gauss-Kruger zone 56',NULL,NULL,'EPSG','2644','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',168.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',56500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16087','3-degree Gauss-Kruger zone 57',NULL,NULL,'EPSG','2645','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',171.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',57500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16088','3-degree Gauss-Kruger zone 58',NULL,NULL,'EPSG','2646','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',174.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',58500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16089','3-degree Gauss-Kruger zone 59',NULL,NULL,'EPSG','2647','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',177.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',59500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16090','3-degree Gauss-Kruger zone 60',NULL,NULL,'EPSG','2648','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',180.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',60000000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16091','3-degree Gauss-Kruger zone 61',NULL,NULL,'EPSG','2649','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-177.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',61500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16092','3-degree Gauss-Kruger zone 62',NULL,NULL,'EPSG','2650','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-174.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',62500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16093','3-degree Gauss-Kruger zone 63',NULL,NULL,'EPSG','2651','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-171.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',63500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16094','3-degree Gauss-Kruger zone 64',NULL,NULL,'EPSG','2652','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-168.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',64500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16099','3-degree Gauss-Kruger zone 60',NULL,NULL,'EPSG','2648','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',180.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',60500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16100','UTM grid system (southern hemisphere)',NULL,NULL,'EPSG','1999','EPSG','9824','Transverse Mercator Zoned Grid System','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8830','Initial longitude',-180.0,'EPSG','9102','EPSG','8831','Zone width',6.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16101','UTM zone 1S',NULL,NULL,'EPSG','1874','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-177.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16102','UTM zone 2S',NULL,NULL,'EPSG','1876','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-171.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16103','UTM zone 3S',NULL,NULL,'EPSG','1878','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-165.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16104','UTM zone 4S',NULL,NULL,'EPSG','1880','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-159.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16105','UTM zone 5S',NULL,NULL,'EPSG','1882','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-153.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16106','UTM zone 6S',NULL,NULL,'EPSG','1884','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-147.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16107','UTM zone 7S',NULL,NULL,'EPSG','1886','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-141.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16108','UTM zone 8S',NULL,NULL,'EPSG','1888','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-135.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16109','UTM zone 9S',NULL,NULL,'EPSG','1890','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-129.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16110','UTM zone 10S',NULL,NULL,'EPSG','1892','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-123.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16111','UTM zone 11S',NULL,NULL,'EPSG','1894','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-117.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16112','UTM zone 12S',NULL,NULL,'EPSG','1896','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-111.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16113','UTM zone 13S',NULL,NULL,'EPSG','1898','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-105.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16114','UTM zone 14S',NULL,NULL,'EPSG','1900','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-99.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16115','UTM zone 15S',NULL,NULL,'EPSG','1902','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-93.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16116','UTM zone 16S',NULL,NULL,'EPSG','1904','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-87.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16117','UTM zone 17S',NULL,NULL,'EPSG','1906','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-81.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16118','UTM zone 18S',NULL,NULL,'EPSG','1908','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-75.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16119','UTM zone 19S',NULL,NULL,'EPSG','1910','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-69.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16120','UTM zone 20S',NULL,NULL,'EPSG','1912','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-63.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16121','UTM zone 21S',NULL,NULL,'EPSG','1914','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-57.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16122','UTM zone 22S',NULL,NULL,'EPSG','1916','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-51.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16123','UTM zone 23S',NULL,NULL,'EPSG','1918','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-45.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16124','UTM zone 24S',NULL,NULL,'EPSG','1920','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-39.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16125','UTM zone 25S',NULL,NULL,'EPSG','1922','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-33.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16126','UTM zone 26S',NULL,NULL,'EPSG','1924','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-27.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16127','UTM zone 27S',NULL,NULL,'EPSG','1926','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16128','UTM zone 28S',NULL,NULL,'EPSG','1928','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16129','UTM zone 29S',NULL,NULL,'EPSG','1930','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-9.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16130','UTM zone 30S',NULL,NULL,'EPSG','1932','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-3.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16131','UTM zone 31S',NULL,NULL,'EPSG','1934','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',3.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16132','UTM zone 32S',NULL,NULL,'EPSG','1936','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',9.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16133','UTM zone 33S',NULL,NULL,'EPSG','1938','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16134','UTM zone 34S',NULL,NULL,'EPSG','1940','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16135','UTM zone 35S',NULL,NULL,'EPSG','1942','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',27.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16136','UTM zone 36S',NULL,NULL,'EPSG','1944','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',33.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16137','UTM zone 37S',NULL,NULL,'EPSG','1946','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',39.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16138','UTM zone 38S',NULL,NULL,'EPSG','1948','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',45.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16139','UTM zone 39S',NULL,NULL,'EPSG','1950','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',51.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16140','UTM zone 40S',NULL,NULL,'EPSG','1952','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',57.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16141','UTM zone 41S',NULL,NULL,'EPSG','1954','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',63.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16142','UTM zone 42S',NULL,NULL,'EPSG','1956','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',69.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16143','UTM zone 43S',NULL,NULL,'EPSG','1958','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',75.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16144','UTM zone 44S',NULL,NULL,'EPSG','1960','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',81.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16145','UTM zone 45S',NULL,NULL,'EPSG','1962','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',87.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16146','UTM zone 46S',NULL,NULL,'EPSG','1964','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',93.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16147','UTM zone 47S',NULL,NULL,'EPSG','1966','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',99.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16148','UTM zone 48S',NULL,NULL,'EPSG','1968','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',105.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16149','UTM zone 49S',NULL,NULL,'EPSG','1970','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',111.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16150','UTM zone 50S',NULL,NULL,'EPSG','1972','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',117.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16151','UTM zone 51S',NULL,NULL,'EPSG','1974','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',123.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16152','UTM zone 52S',NULL,NULL,'EPSG','1976','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',129.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16153','UTM zone 53S',NULL,NULL,'EPSG','1978','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',135.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16154','UTM zone 54S',NULL,NULL,'EPSG','1980','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',141.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16155','UTM zone 55S',NULL,NULL,'EPSG','1982','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',147.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16156','UTM zone 56S',NULL,NULL,'EPSG','1984','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',153.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16157','UTM zone 57S',NULL,NULL,'EPSG','1986','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',159.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16158','UTM zone 58S',NULL,NULL,'EPSG','1988','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',165.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16159','UTM zone 59S',NULL,NULL,'EPSG','1990','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',171.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16160','UTM zone 60S',NULL,NULL,'EPSG','1992','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',177.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16161','Universal Polar Stereographic South',NULL,NULL,'EPSG','1997','EPSG','9810','Polar Stereographic (variant A)','EPSG','8801','Latitude of natural origin',-90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.994,'EPSG','9201','EPSG','8806','False easting',2000000.0,'EPSG','9001','EPSG','8807','False northing',2000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16170','3-degree Gauss-Kruger CM 120E',NULL,NULL,'EPSG','2628','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',120.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16171','3-degree Gauss-Kruger CM 123E',NULL,NULL,'EPSG','2629','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',123.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16172','3-degree Gauss-Kruger CM 126E',NULL,NULL,'EPSG','2630','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',126.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16173','3-degree Gauss-Kruger CM 129E',NULL,NULL,'EPSG','2631','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',129.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16174','3-degree Gauss-Kruger CM 132E',NULL,NULL,'EPSG','2632','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',132.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16175','3-degree Gauss-Kruger CM 135E',NULL,NULL,'EPSG','2633','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',135.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16176','3-degree Gauss-Kruger CM 138E',NULL,NULL,'EPSG','2634','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',138.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16177','3-degree Gauss-Kruger CM 141E',NULL,NULL,'EPSG','2635','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',141.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16178','3-degree Gauss-Kruger CM 144E',NULL,NULL,'EPSG','2636','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',144.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16179','3-degree Gauss-Kruger CM 147E',NULL,NULL,'EPSG','2637','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',147.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16180','3-degree Gauss-Kruger CM 150E',NULL,NULL,'EPSG','2638','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',150.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16181','3-degree Gauss-Kruger CM 153E',NULL,NULL,'EPSG','2639','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',153.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16182','3-degree Gauss-Kruger CM 156E',NULL,NULL,'EPSG','2640','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',156.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16183','3-degree Gauss-Kruger CM 159E',NULL,NULL,'EPSG','2641','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',159.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16184','3-degree Gauss-Kruger CM 162E',NULL,NULL,'EPSG','2642','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',162.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16185','3-degree Gauss-Kruger CM 165E',NULL,NULL,'EPSG','2643','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',165.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16186','3-degree Gauss-Kruger CM 168E',NULL,NULL,'EPSG','2644','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',168.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16187','3-degree Gauss-Kruger CM 171E',NULL,NULL,'EPSG','2645','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',171.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16188','3-degree Gauss-Kruger CM 174E',NULL,NULL,'EPSG','2646','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',174.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16189','3-degree Gauss-Kruger CM 177E',NULL,NULL,'EPSG','2647','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',177.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16190','3-degree Gauss-Kruger CM 180',NULL,NULL,'EPSG','2648','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',180.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16191','3-degree Gauss-Kruger CM 177W',NULL,NULL,'EPSG','2649','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-177.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16192','3-degree Gauss-Kruger CM 174W',NULL,NULL,'EPSG','2650','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-174.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16193','3-degree Gauss-Kruger CM 171W',NULL,NULL,'EPSG','2651','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-171.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16194','3-degree Gauss-Kruger CM 168W',NULL,NULL,'EPSG','2652','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-168.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16201','6-degree Gauss-Kruger zone 1',NULL,NULL,'EPSG','1933','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',3.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16202','6-degree Gauss-Kruger zone 2',NULL,NULL,'EPSG','2741','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',9.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',2500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16203','6-degree Gauss-Kruger zone 3',NULL,NULL,'EPSG','2742','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',3500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16204','6-degree Gauss-Kruger zone 4',NULL,NULL,'EPSG','2743','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',4500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16205','6-degree Gauss-Kruger zone 5',NULL,NULL,'EPSG','2744','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',27.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',5500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16206','6-degree Gauss-Kruger zone 6',NULL,NULL,'EPSG','2745','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',33.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',6500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16207','6-degree Gauss-Kruger zone 7',NULL,NULL,'EPSG','2746','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',39.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',7500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16208','6-degree Gauss-Kruger zone 8',NULL,NULL,'EPSG','1947','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',45.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',8500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16209','6-degree Gauss-Kruger zone 9',NULL,NULL,'EPSG','1949','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',51.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',9500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16210','6-degree Gauss-Kruger zone 10',NULL,NULL,'EPSG','1951','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',57.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',10500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16211','6-degree Gauss-Kruger zone 11',NULL,NULL,'EPSG','1953','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',63.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',11500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16212','6-degree Gauss-Kruger zone 12',NULL,NULL,'EPSG','1955','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',69.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',12500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16213','6-degree Gauss-Kruger zone 13',NULL,NULL,'EPSG','1957','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',75.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',13500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16214','6-degree Gauss-Kruger zone 14',NULL,NULL,'EPSG','1959','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',81.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',14500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16215','6-degree Gauss-Kruger zone 15',NULL,NULL,'EPSG','1961','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',87.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',15500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16216','6-degree Gauss-Kruger zone 16',NULL,NULL,'EPSG','1963','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',93.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',16500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16217','6-degree Gauss-Kruger zone 17',NULL,NULL,'EPSG','1965','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',99.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',17500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16218','6-degree Gauss-Kruger zone 18',NULL,NULL,'EPSG','1967','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',105.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',18500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16219','6-degree Gauss-Kruger zone 19',NULL,NULL,'EPSG','1969','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',111.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',19500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16220','6-degree Gauss-Kruger zone 20',NULL,NULL,'EPSG','1971','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',117.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',20500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16221','6-degree Gauss-Kruger zone 21',NULL,NULL,'EPSG','1973','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',123.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',21500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16222','6-degree Gauss-Kruger zone 22',NULL,NULL,'EPSG','1975','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',129.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',22500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16223','6-degree Gauss-Kruger zone 23',NULL,NULL,'EPSG','1977','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',135.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',23500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16224','6-degree Gauss-Kruger zone 24',NULL,NULL,'EPSG','1979','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',141.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',24500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16225','6-degree Gauss-Kruger zone 25',NULL,NULL,'EPSG','1981','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',147.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',25500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16226','6-degree Gauss-Kruger zone 26',NULL,NULL,'EPSG','1983','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',153.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',26500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16227','6-degree Gauss-Kruger zone 27',NULL,NULL,'EPSG','1985','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',159.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',27500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16228','6-degree Gauss-Kruger zone 28',NULL,NULL,'EPSG','1987','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',165.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',28500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16229','6-degree Gauss-Kruger zone 29',NULL,NULL,'EPSG','1989','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',171.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',29500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16230','6-degree Gauss-Kruger zone 30',NULL,NULL,'EPSG','1991','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',177.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',30500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16231','6-degree Gauss-Kruger zone 31',NULL,NULL,'EPSG','1873','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-177.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',31500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16232','6-degree Gauss-Kruger zone 32',NULL,NULL,'EPSG','1875','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-171.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',32500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16233','6-degree Gauss-Kruger zone 33',NULL,NULL,'EPSG','1877','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-165.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',33500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16234','6-degree Gauss-Kruger zone 34',NULL,NULL,'EPSG','1879','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-159.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',34500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16235','6-degree Gauss-Kruger zone 35',NULL,NULL,'EPSG','1881','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-153.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',35500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16236','6-degree Gauss-Kruger zone 36',NULL,NULL,'EPSG','1883','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-147.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',36500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16237','6-degree Gauss-Kruger zone 37',NULL,NULL,'EPSG','1885','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-141.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',37500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16238','6-degree Gauss-Kruger zone 38',NULL,NULL,'EPSG','1887','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-135.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',38500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16239','6-degree Gauss-Kruger zone 39',NULL,NULL,'EPSG','1889','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-129.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',39500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16240','6-degree Gauss-Kruger zone 40',NULL,NULL,'EPSG','1891','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-123.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',40500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16241','6-degree Gauss-Kruger zone 41',NULL,NULL,'EPSG','1893','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-117.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',41500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16242','6-degree Gauss-Kruger zone 42',NULL,NULL,'EPSG','1895','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-111.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',42500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16243','6-degree Gauss-Kruger zone 43',NULL,NULL,'EPSG','1897','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-105.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',43500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16244','6-degree Gauss-Kruger zone 44',NULL,NULL,'EPSG','1899','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-99.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',44500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16245','6-degree Gauss-Kruger zone 45',NULL,NULL,'EPSG','1901','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-93.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',45500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16246','6-degree Gauss-Kruger zone 46',NULL,NULL,'EPSG','1903','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-87.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',46500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16247','6-degree Gauss-Kruger zone 47',NULL,NULL,'EPSG','2732','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-81.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',47500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16248','6-degree Gauss-Kruger zone 48',NULL,NULL,'EPSG','2733','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-75.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',48500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16249','6-degree Gauss-Kruger zone 49',NULL,NULL,'EPSG','2734','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-69.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',49500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16250','6-degree Gauss-Kruger zone 50',NULL,NULL,'EPSG','2735','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-63.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',50500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16251','6-degree Gauss-Kruger zone 51',NULL,NULL,'EPSG','2736','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-57.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',51500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16252','6-degree Gauss-Kruger zone 52',NULL,NULL,'EPSG','2737','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-51.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',52500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16253','6-degree Gauss-Kruger zone 53',NULL,NULL,'EPSG','2738','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-45.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',53500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16254','6-degree Gauss-Kruger zone 54',NULL,NULL,'EPSG','2739','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-39.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',54500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16255','6-degree Gauss-Kruger zone 55',NULL,NULL,'EPSG','2740','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-33.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',55500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16256','6-degree Gauss-Kruger zone 56',NULL,NULL,'EPSG','1923','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-27.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',56500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16257','6-degree Gauss-Kruger zone 57',NULL,NULL,'EPSG','1925','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',57500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16258','6-degree Gauss-Kruger zone 58',NULL,NULL,'EPSG','1927','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',58500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16259','6-degree Gauss-Kruger zone 59',NULL,NULL,'EPSG','1929','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-9.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',59500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16260','6-degree Gauss-Kruger zone 60',NULL,NULL,'EPSG','1931','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-3.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',60500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16261','3-degree Gauss-Kruger zone 1',NULL,NULL,'EPSG','2299','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',3.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16262','3-degree Gauss-Kruger zone 2',NULL,NULL,'EPSG','2300','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',6.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',2500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16263','3-degree Gauss-Kruger zone 3',NULL,NULL,'EPSG','2301','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',9.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',3500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16264','3-degree Gauss-Kruger zone 4',NULL,NULL,'EPSG','2302','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',12.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',4500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16265','3-degree Gauss-Kruger zone 5',NULL,NULL,'EPSG','2303','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',5500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16266','3-degree Gauss-Kruger zone 6',NULL,NULL,'EPSG','2304','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',18.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',6500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16267','3-degree Gauss-Kruger zone 7',NULL,NULL,'EPSG','2305','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',7500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16268','3-degree Gauss-Kruger zone 8',NULL,NULL,'EPSG','2306','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',24.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',8500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16269','3-degree Gauss-Kruger zone 9',NULL,NULL,'EPSG','2534','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',27.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',9500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16270','3-degree Gauss-Kruger zone 10',NULL,NULL,'EPSG','2535','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',30.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',10500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16271','3-degree Gauss-Kruger zone 11',NULL,NULL,'EPSG','2536','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',33.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',11500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16272','3-degree Gauss-Kruger zone 12',NULL,NULL,'EPSG','2537','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',36.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',12500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16273','3-degree Gauss-Kruger zone 13',NULL,NULL,'EPSG','2538','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',39.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',13500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16274','3-degree Gauss-Kruger zone 14',NULL,NULL,'EPSG','2539','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',42.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',14500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16275','3-degree Gauss-Kruger zone 15',NULL,NULL,'EPSG','2540','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',45.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',15500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16276','3-degree Gauss-Kruger zone 16',NULL,NULL,'EPSG','2604','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',48.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',16500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16277','3-degree Gauss-Kruger zone 17',NULL,NULL,'EPSG','2605','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',51.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',17500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16278','3-degree Gauss-Kruger zone 18',NULL,NULL,'EPSG','2606','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',54.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',18500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16279','3-degree Gauss-Kruger zone 19',NULL,NULL,'EPSG','2607','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',57.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',19500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16280','3-degree Gauss-Kruger zone 20',NULL,NULL,'EPSG','2608','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',60.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',20500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16281','3-degree Gauss-Kruger zone 21',NULL,NULL,'EPSG','2609','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',63.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',21500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16282','3-degree Gauss-Kruger zone 22',NULL,NULL,'EPSG','2610','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',66.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',22500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16283','3-degree Gauss-Kruger zone 23',NULL,NULL,'EPSG','2611','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',69.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',23500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16284','3-degree Gauss-Kruger zone 24',NULL,NULL,'EPSG','2612','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',72.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',24500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16285','3-degree Gauss-Kruger zone 25',NULL,NULL,'EPSG','2613','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',75.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',25500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16286','3-degree Gauss-Kruger zone 26',NULL,NULL,'EPSG','2614','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',78.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',26500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16287','3-degree Gauss-Kruger zone 27',NULL,NULL,'EPSG','2615','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',81.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',27500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16288','3-degree Gauss-Kruger zone 28',NULL,NULL,'EPSG','2616','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',84.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',28500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16289','3-degree Gauss-Kruger zone 29',NULL,NULL,'EPSG','2617','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',87.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',29500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16290','3-degree Gauss-Kruger zone 30',NULL,NULL,'EPSG','2618','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',90.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',30500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16291','3-degree Gauss-Kruger zone 31',NULL,NULL,'EPSG','2619','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',93.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',31500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16292','3-degree Gauss-Kruger zone 32',NULL,NULL,'EPSG','2620','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',96.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',32500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16293','3-degree Gauss-Kruger zone 33',NULL,NULL,'EPSG','2621','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',99.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',33500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16294','3-degree Gauss-Kruger zone 34',NULL,NULL,'EPSG','2622','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',102.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',34500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16295','3-degree Gauss-Kruger zone 35',NULL,NULL,'EPSG','2623','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',105.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',35500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16296','3-degree Gauss-Kruger zone 36',NULL,NULL,'EPSG','2624','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',108.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',36500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16297','3-degree Gauss-Kruger zone 37',NULL,NULL,'EPSG','2625','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',111.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',37500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16298','3-degree Gauss-Kruger zone 38',NULL,NULL,'EPSG','2626','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',114.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',38500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16299','3-degree Gauss-Kruger zone 39',NULL,NULL,'EPSG','2627','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',117.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',39500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16301','Gauss-Kruger CM 3E',NULL,NULL,'EPSG','1933','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',3.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16302','Gauss-Kruger CM 9E',NULL,NULL,'EPSG','1935','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',9.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16303','Gauss-Kruger CM 15E',NULL,NULL,'EPSG','1937','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16304','Gauss-Kruger CM 21E',NULL,NULL,'EPSG','1939','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16305','Gauss-Kruger CM 27E',NULL,NULL,'EPSG','1941','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',27.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16306','Gauss-Kruger CM 33E',NULL,NULL,'EPSG','1943','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',33.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16307','Gauss-Kruger CM 39E',NULL,NULL,'EPSG','1945','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',39.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16308','Gauss-Kruger CM 45E',NULL,NULL,'EPSG','1947','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',45.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16309','Gauss-Kruger CM 51E',NULL,NULL,'EPSG','1949','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',51.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16310','Gauss-Kruger CM 57E',NULL,NULL,'EPSG','1951','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',57.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16311','Gauss-Kruger CM 63E',NULL,NULL,'EPSG','1953','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',63.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16312','Gauss-Kruger CM 69E',NULL,NULL,'EPSG','1955','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',69.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16313','Gauss-Kruger CM 75E',NULL,NULL,'EPSG','1957','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',75.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16314','Gauss-Kruger CM 81E',NULL,NULL,'EPSG','1959','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',81.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16315','Gauss-Kruger CM 87E',NULL,NULL,'EPSG','1961','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',87.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16316','Gauss-Kruger CM 93E',NULL,NULL,'EPSG','1963','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',93.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16317','Gauss-Kruger CM 99E',NULL,NULL,'EPSG','1965','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',99.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16318','Gauss-Kruger CM 105E',NULL,NULL,'EPSG','1967','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',105.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16319','Gauss-Kruger CM 111E',NULL,NULL,'EPSG','1969','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',111.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16320','Gauss-Kruger CM 117E',NULL,NULL,'EPSG','1971','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',117.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16321','Gauss-Kruger CM 123E',NULL,NULL,'EPSG','1973','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',123.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16322','Gauss-Kruger CM 129E',NULL,NULL,'EPSG','1975','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',129.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16323','Gauss-Kruger CM 135E',NULL,NULL,'EPSG','1977','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',135.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16324','Gauss-Kruger CM 141E',NULL,NULL,'EPSG','1979','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',141.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16325','Gauss-Kruger CM 147E',NULL,NULL,'EPSG','1981','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',147.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16326','Gauss-Kruger CM 153E',NULL,NULL,'EPSG','1983','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',153.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16327','Gauss-Kruger CM 159E',NULL,NULL,'EPSG','1985','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',159.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16328','Gauss-Kruger CM 165E',NULL,NULL,'EPSG','1987','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',165.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16329','Gauss-Kruger CM 171E',NULL,NULL,'EPSG','1989','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',171.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16330','Gauss-Kruger CM 177E',NULL,NULL,'EPSG','1991','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',177.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16331','Gauss-Kruger CM 177W',NULL,NULL,'EPSG','1873','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-177.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16332','Gauss-Kruger CM 171W',NULL,NULL,'EPSG','1875','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-171.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16333','Gauss-Kruger CM 165W',NULL,NULL,'EPSG','1877','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-165.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16334','Gauss-Kruger CM 159W',NULL,NULL,'EPSG','1879','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-159.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16335','Gauss-Kruger CM 153W',NULL,NULL,'EPSG','1881','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-153.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16336','Gauss-Kruger CM 147W',NULL,NULL,'EPSG','1883','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-147.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16337','Gauss-Kruger CM 141W',NULL,NULL,'EPSG','1885','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-141.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16338','Gauss-Kruger CM 135W',NULL,NULL,'EPSG','1887','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-135.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16339','Gauss-Kruger CM 129W',NULL,NULL,'EPSG','1889','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-129.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16340','Gauss-Kruger CM 123W',NULL,NULL,'EPSG','1891','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-123.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16341','Gauss-Kruger CM 117W',NULL,NULL,'EPSG','1893','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-117.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16342','Gauss-Kruger CM 111W',NULL,NULL,'EPSG','1895','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-111.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16343','Gauss-Kruger CM 105W',NULL,NULL,'EPSG','1897','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-105.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16344','Gauss-Kruger CM 99W',NULL,NULL,'EPSG','1899','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-99.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16345','Gauss-Kruger CM 93W',NULL,NULL,'EPSG','1901','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-93.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16346','Gauss-Kruger CM 87W',NULL,NULL,'EPSG','1903','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-87.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16347','Gauss-Kruger CM 81W',NULL,NULL,'EPSG','1905','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-81.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16348','Gauss-Kruger CM 75W',NULL,NULL,'EPSG','1907','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-75.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16349','Gauss-Kruger CM 69W',NULL,NULL,'EPSG','1909','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-69.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16350','Gauss-Kruger CM 63W',NULL,NULL,'EPSG','1911','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-63.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16351','Gauss-Kruger CM 57W',NULL,NULL,'EPSG','1913','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-57.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16352','Gauss-Kruger CM 51W',NULL,NULL,'EPSG','1915','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-51.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16353','Gauss-Kruger CM 45W',NULL,NULL,'EPSG','1917','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-45.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16354','Gauss-Kruger CM 39W',NULL,NULL,'EPSG','1919','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-39.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16355','Gauss-Kruger CM 33W',NULL,NULL,'EPSG','1921','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-33.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16356','Gauss-Kruger CM 27W',NULL,NULL,'EPSG','1923','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-27.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16357','Gauss-Kruger CM 21W',NULL,NULL,'EPSG','1925','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16358','Gauss-Kruger CM 15W',NULL,NULL,'EPSG','1927','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16359','Gauss-Kruger CM 9W',NULL,NULL,'EPSG','1929','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-9.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16360','Gauss-Kruger CM 3W',NULL,NULL,'EPSG','1931','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-3.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16361','3-degree Gauss-Kruger CM 3E',NULL,NULL,'EPSG','2299','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',3.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16362','3-degree Gauss-Kruger CM 6E',NULL,NULL,'EPSG','2300','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',6.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16363','3-degree Gauss-Kruger CM 9E',NULL,NULL,'EPSG','2301','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',9.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16364','3-degree Gauss-Kruger CM 12E',NULL,NULL,'EPSG','2302','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',12.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16365','3-degree Gauss-Kruger CM 15E',NULL,NULL,'EPSG','2303','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16366','3-degree Gauss-Kruger CM 18E',NULL,NULL,'EPSG','2304','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',18.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16367','3-degree Gauss-Kruger CM 21E',NULL,NULL,'EPSG','2305','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16368','3-degree Gauss-Kruger CM 24E',NULL,NULL,'EPSG','2306','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',24.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16369','3-degree Gauss-Kruger CM 27E',NULL,NULL,'EPSG','2534','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',27.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16370','3-degree Gauss-Kruger CM 30E',NULL,NULL,'EPSG','2535','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',30.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16371','3-degree Gauss-Kruger CM 33E',NULL,NULL,'EPSG','2536','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',33.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16372','3-degree Gauss-Kruger CM 36E',NULL,NULL,'EPSG','2537','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',36.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16373','3-degree Gauss-Kruger CM 39E',NULL,NULL,'EPSG','2538','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',39.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16374','3-degree Gauss-Kruger CM 42E',NULL,NULL,'EPSG','2539','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',42.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16375','3-degree Gauss-Kruger CM 45E',NULL,NULL,'EPSG','2540','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',45.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16376','3-degree Gauss-Kruger CM 48E',NULL,NULL,'EPSG','2604','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',48.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16377','3-degree Gauss-Kruger CM 51E',NULL,NULL,'EPSG','2605','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',51.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16378','3-degree Gauss-Kruger CM 54E',NULL,NULL,'EPSG','2606','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',54.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16379','3-degree Gauss-Kruger CM 57E',NULL,NULL,'EPSG','2607','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',57.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16380','3-degree Gauss-Kruger CM 60E',NULL,NULL,'EPSG','2608','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',60.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16381','3-degree Gauss-Kruger CM 63E',NULL,NULL,'EPSG','2609','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',63.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16382','3-degree Gauss-Kruger CM 66E',NULL,NULL,'EPSG','2610','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',66.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16383','3-degree Gauss-Kruger CM 69E',NULL,NULL,'EPSG','2611','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',69.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16384','3-degree Gauss-Kruger CM 72E',NULL,NULL,'EPSG','2612','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',72.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16385','3-degree Gauss-Kruger CM 75E',NULL,NULL,'EPSG','2613','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',75.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16386','3-degree Gauss-Kruger CM 78E',NULL,NULL,'EPSG','2614','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',78.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16387','3-degree Gauss-Kruger CM 81E',NULL,NULL,'EPSG','2615','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',81.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16388','3-degree Gauss-Kruger CM 84E',NULL,NULL,'EPSG','2616','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',84.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16389','3-degree Gauss-Kruger CM 87E',NULL,NULL,'EPSG','2617','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',87.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16390','3-degree Gauss-Kruger CM 90E',NULL,NULL,'EPSG','2618','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',90.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16391','3-degree Gauss-Kruger CM 93E',NULL,NULL,'EPSG','2619','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',93.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16392','3-degree Gauss-Kruger CM 96E',NULL,NULL,'EPSG','2620','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',96.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16393','3-degree Gauss-Kruger CM 99E',NULL,NULL,'EPSG','2621','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',99.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16394','3-degree Gauss-Kruger CM 102E',NULL,NULL,'EPSG','2622','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',102.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16395','3-degree Gauss-Kruger CM 105E',NULL,NULL,'EPSG','2623','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',105.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16396','3-degree Gauss-Kruger CM 108E',NULL,NULL,'EPSG','2624','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',108.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16397','3-degree Gauss-Kruger CM 111E',NULL,NULL,'EPSG','2625','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',111.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16398','3-degree Gauss-Kruger CM 114E',NULL,NULL,'EPSG','2626','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',114.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16399','3-degree Gauss-Kruger CM 117E',NULL,NULL,'EPSG','2627','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',117.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','16400','TM 0 N',NULL,NULL,'EPSG','1629','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16405','TM 5 NE',NULL,NULL,'EPSG','1630','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',5.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16406','TM 6 NE',NULL,NULL,'EPSG','3914','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',6.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16411','TM 11 NE',NULL,NULL,'EPSG','1489','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',11.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16412','TM 12 NE',NULL,NULL,'EPSG','1482','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',12.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16413','TM 13 NE',NULL,NULL,'EPSG','2771','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',13.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16430','TM 30 NE',NULL,NULL,'EPSG','2546','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',30.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16490','Bangladesh Transverse Mercator',NULL,NULL,'EPSG','1041','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',90.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16506','TM 106 NE',NULL,NULL,'EPSG','1495','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',106.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16586','GK 106 NE',NULL,NULL,'EPSG','1494','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',106.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16611','TM 11.30 SE',NULL,NULL,'EPSG','1605','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',11.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16612','TM 12 SE',NULL,NULL,'EPSG','1604','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',12.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16636','TM 36 SE',NULL,NULL,'EPSG','1726','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',36.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16709','TM 109 SE',NULL,NULL,'EPSG','2577','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',109.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16716','TM 116 SE',NULL,NULL,'EPSG','2588','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',116.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','16732','TM 132 SE',NULL,NULL,'EPSG','2589','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',132.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17001','TM 1 NW',NULL,NULL,'EPSG','1505','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-1.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17005','TM 5 NW',NULL,NULL,'EPSG','2296','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-5.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17054','TM 54 NW',NULL,NULL,'EPSG','1727','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-54.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17204','SCAR IMW SP19-20',NULL,NULL,'EPSG','2991','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-66.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-60.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-63.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17205','SCAR IMW SP21-22',NULL,NULL,'EPSG','2992','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-54.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-60.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-63.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17206','SCAR IMW SP23-24',NULL,NULL,'EPSG','2993','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-42.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-60.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-63.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17207','SCAR IMW SQ01-02',NULL,NULL,'EPSG','2994','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-174.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-64.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-67.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17208','SCAR IMW SQ19-20',NULL,NULL,'EPSG','2995','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-66.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-64.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-67.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17209','SCAR IMW SQ21-22',NULL,NULL,'EPSG','2996','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-54.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-64.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-67.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17210','SCAR IMW SQ37-38',NULL,NULL,'EPSG','2997','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',42.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-64.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-67.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17211','SCAR IMW SQ39-40',NULL,NULL,'EPSG','2998','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',54.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-64.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-67.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17212','SCAR IMW SQ41-42',NULL,NULL,'EPSG','2999','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',66.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-64.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-67.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17213','SCAR IMW SQ43-44',NULL,NULL,'EPSG','3000','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',78.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-64.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-67.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17214','SCAR IMW SQ45-46',NULL,NULL,'EPSG','3001','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',90.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-64.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-67.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17215','SCAR IMW SQ47-48',NULL,NULL,'EPSG','3002','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',102.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-64.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-67.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17216','SCAR IMW SQ49-50',NULL,NULL,'EPSG','3003','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',114.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-64.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-67.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17217','SCAR IMW SQ51-52',NULL,NULL,'EPSG','3004','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',126.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-64.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-67.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17218','SCAR IMW SQ53-54',NULL,NULL,'EPSG','3005','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',138.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-64.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-67.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17219','SCAR IMW SQ55-56',NULL,NULL,'EPSG','3006','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',150.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-64.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-67.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17220','SCAR IMW SQ57-58',NULL,NULL,'EPSG','3007','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',162.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-64.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-67.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17221','SCAR IMW SR13-14',NULL,NULL,'EPSG','3008','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-102.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17222','SCAR IMW SR15-16',NULL,NULL,'EPSG','3009','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-90.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17223','SCAR IMW SR17-18',NULL,NULL,'EPSG','3010','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-78.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17224','SCAR IMW SR19-20',NULL,NULL,'EPSG','3011','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-66.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17225','SCAR IMW SR27-28',NULL,NULL,'EPSG','3012','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-18.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17226','SCAR IMW SR29-30',NULL,NULL,'EPSG','3013','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-6.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17227','SCAR IMW SR31-32',NULL,NULL,'EPSG','3014','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',6.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17228','SCAR IMW SR33-34',NULL,NULL,'EPSG','3015','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',18.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17229','SCAR IMW SR35-36',NULL,NULL,'EPSG','3016','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',30.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17230','SCAR IMW SR37-38',NULL,NULL,'EPSG','3017','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',42.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17231','SCAR IMW SR39-40',NULL,NULL,'EPSG','3018','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',54.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17232','SCAR IMW SR41-42',NULL,NULL,'EPSG','3019','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',66.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17233','SCAR IMW SR43-44',NULL,NULL,'EPSG','3020','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',78.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17234','SCAR IMW SR45-46',NULL,NULL,'EPSG','3021','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',90.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17235','SCAR IMW SR47-48',NULL,NULL,'EPSG','3022','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',102.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17236','SCAR IMW SR49-50',NULL,NULL,'EPSG','3023','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',114.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17237','SCAR IMW SR51-52',NULL,NULL,'EPSG','3024','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',126.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17238','SCAR IMW SR53-54',NULL,NULL,'EPSG','3025','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',138.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17239','SCAR IMW SR55-56',NULL,NULL,'EPSG','3026','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',150.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17240','SCAR IMW SR57-58',NULL,NULL,'EPSG','3027','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',162.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17241','SCAR IMW SR59-60',NULL,NULL,'EPSG','3028','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',174.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-68.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-71.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17242','SCAR IMW SS04-06',NULL,NULL,'EPSG','3029','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-153.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-72.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17243','SCAR IMW SS07-09',NULL,NULL,'EPSG','3030','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-135.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-72.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17244','SCAR IMW SS10-12',NULL,NULL,'EPSG','3031','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-117.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-72.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17245','SCAR IMW SS13-15',NULL,NULL,'EPSG','3032','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-99.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-72.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17246','SCAR IMW SS16-18',NULL,NULL,'EPSG','3033','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-81.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-72.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17247','SCAR IMW SS19-21',NULL,NULL,'EPSG','3034','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-63.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-72.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17248','SCAR IMW SS25-27',NULL,NULL,'EPSG','3035','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-27.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-72.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17249','SCAR IMW SS28-30',NULL,NULL,'EPSG','3036','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-9.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-72.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17250','SCAR IMW SS31-33',NULL,NULL,'EPSG','3037','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',9.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-72.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17251','SCAR IMW SS34-36',NULL,NULL,'EPSG','3038','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',27.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-72.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17252','SCAR IMW SS37-39',NULL,NULL,'EPSG','3039','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',45.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-72.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17253','SCAR IMW SS40-42',NULL,NULL,'EPSG','3040','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',63.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-72.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17254','SCAR IMW SS43-45',NULL,NULL,'EPSG','3041','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',81.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-72.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17255','SCAR IMW SS46-48',NULL,NULL,'EPSG','3042','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',99.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-72.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17256','SCAR IMW SS49-51',NULL,NULL,'EPSG','3043','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',117.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-72.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17257','SCAR IMW SS52-54',NULL,NULL,'EPSG','3044','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',135.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-72.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17258','SCAR IMW SS55-57',NULL,NULL,'EPSG','3045','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',153.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-72.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17259','SCAR IMW SS58-60',NULL,NULL,'EPSG','3046','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',171.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-72.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-75.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17260','SCAR IMW ST01-04',NULL,NULL,'EPSG','3047','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-168.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-76.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-79.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17261','SCAR IMW ST05-08',NULL,NULL,'EPSG','3048','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-144.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-76.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-79.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17262','SCAR IMW ST09-12',NULL,NULL,'EPSG','3049','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-120.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-76.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-79.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17263','SCAR IMW ST13-16',NULL,NULL,'EPSG','3050','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-96.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-76.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-79.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17264','SCAR IMW ST17-20',NULL,NULL,'EPSG','3051','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-72.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-76.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-79.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17265','SCAR IMW ST21-24',NULL,NULL,'EPSG','3052','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-48.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-76.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-79.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17266','SCAR IMW ST25-28',NULL,NULL,'EPSG','3053','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-24.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-76.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-79.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17267','SCAR IMW ST29-32',NULL,NULL,'EPSG','3054','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',0.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-76.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-79.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17268','SCAR IMW ST33-36',NULL,NULL,'EPSG','3055','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',24.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-76.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-79.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17269','SCAR IMW ST37-40',NULL,NULL,'EPSG','3056','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',48.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-76.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-79.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17270','SCAR IMW ST41-44',NULL,NULL,'EPSG','3057','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',72.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-76.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-79.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17271','SCAR IMW ST45-48',NULL,NULL,'EPSG','3058','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',96.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-76.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-79.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17272','SCAR IMW ST49-52',NULL,NULL,'EPSG','3059','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',120.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-76.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-79.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17273','SCAR IMW ST53-56',NULL,NULL,'EPSG','3060','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',144.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-76.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-79.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17274','SCAR IMW ST57-60',NULL,NULL,'EPSG','3061','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9102','EPSG','8822','Longitude of false origin',168.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-76.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-79.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17275','SCAR IMW SU01-05',NULL,NULL,'EPSG','3062','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',-165.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17276','SCAR IMW SU06-10',NULL,NULL,'EPSG','3063','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',-135.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17277','SCAR IMW SU11-15',NULL,NULL,'EPSG','3064','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',-105.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17278','SCAR IMW SU16-20',NULL,NULL,'EPSG','3065','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',-75.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17279','SCAR IMW SU21-25',NULL,NULL,'EPSG','3066','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',-45.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17280','SCAR IMW SU26-30',NULL,NULL,'EPSG','3067','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',-15.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17281','SCAR IMW SU31-35',NULL,NULL,'EPSG','3068','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',15.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17282','SCAR IMW SU36-40',NULL,NULL,'EPSG','3069','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',45.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17283','SCAR IMW SU41-45',NULL,NULL,'EPSG','3070','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',75.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17284','SCAR IMW SU46-50',NULL,NULL,'EPSG','3071','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',105.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17285','SCAR IMW SU51-55',NULL,NULL,'EPSG','3072','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',135.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17286','SCAR IMW SU56-60',NULL,NULL,'EPSG','3073','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',165.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17287','SCAR IMW SV01-10',NULL,NULL,'EPSG','3074','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',-150.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17288','SCAR IMW SV11-20',NULL,NULL,'EPSG','3075','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',-90.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17289','SCAR IMW SV21-30',NULL,NULL,'EPSG','3076','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',-30.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17290','SCAR IMW SV31-40',NULL,NULL,'EPSG','3077','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',30.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17291','SCAR IMW SV41-50',NULL,NULL,'EPSG','3078','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',90.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17292','SCAR IMW SV51-60',NULL,NULL,'EPSG','3079','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',150.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17293','SCAR IMW SW01-60',NULL,NULL,'EPSG','3080','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-80.1419,'EPSG','9110','EPSG','8833','Longitude of origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17294','USGS Transantarctic Mountains',NULL,NULL,'EPSG','3081','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-78.0,'EPSG','9102','EPSG','8822','Longitude of false origin',162.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-76.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-79.2,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17295','North Pole Lambert Azimuthal Equal Area (Bering Sea)',NULL,NULL,'EPSG','3480','EPSG','9820','Lambert Azimuthal Equal Area','EPSG','8801','Latitude of natural origin',90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',180.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17296','North Pole Lambert Azimuthal Equal Area (Alaska)',NULL,NULL,'EPSG','3480','EPSG','9820','Lambert Azimuthal Equal Area','EPSG','8801','Latitude of natural origin',90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-150.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17297','North Pole Lambert Azimuthal Equal Area (Canada)',NULL,NULL,'EPSG','3480','EPSG','9820','Lambert Azimuthal Equal Area','EPSG','8801','Latitude of natural origin',90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-100.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17298','North Pole Lambert Azimuthal Equal Area (Atlantic)',NULL,NULL,'EPSG','3480','EPSG','9820','Lambert Azimuthal Equal Area','EPSG','8801','Latitude of natural origin',90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-40.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17299','North Pole Lambert Azimuthal Equal Area (Europe)',NULL,NULL,'EPSG','3480','EPSG','9820','Lambert Azimuthal Equal Area','EPSG','8801','Latitude of natural origin',90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',10.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17300','North Pole Lambert Azimuthal Equal Area (Russia)',NULL,NULL,'EPSG','3480','EPSG','9820','Lambert Azimuthal Equal Area','EPSG','8801','Latitude of natural origin',90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',90.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17321','SWEREF99 12 00',NULL,NULL,'EPSG','2833','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',12.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17322','SWEREF99 13 30',NULL,NULL,'EPSG','2834','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',13.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17323','SWEREF99 15 00',NULL,NULL,'EPSG','2835','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17324','SWEREF99 16 30',NULL,NULL,'EPSG','2836','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',16.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17325','SWEREF99 18 00',NULL,NULL,'EPSG','2837','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',18.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17326','SWEREF99 14 15',NULL,NULL,'EPSG','2838','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',14.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17327','SWEREF99 15 45',NULL,NULL,'EPSG','2839','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',15.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17328','SWEREF99 17 15',NULL,NULL,'EPSG','2840','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',17.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17329','SWEREF99 18 45',NULL,NULL,'EPSG','2841','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',18.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17330','SWEREF99 20 15',NULL,NULL,'EPSG','2842','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',20.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17331','SWEREF99 21 45',NULL,NULL,'EPSG','2843','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',21.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17332','SWEREF99 23 15',NULL,NULL,'EPSG','2844','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',23.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17333','SWEREF99 TM',NULL,NULL,'EPSG','1225','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17334','Sweden zone 7.5 gon V',NULL,NULL,'EPSG','2845','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',11.18298,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17335','Sweden zone 5 gon V',NULL,NULL,'EPSG','2846','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',13.33298,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17336','Sweden zone 0 gon',NULL,NULL,'EPSG','2848','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',18.03298,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17337','Sweden zone 2.5 gon O',NULL,NULL,'EPSG','2849','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',20.18298,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17338','Sweden zone 5 gon O',NULL,NULL,'EPSG','2850','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',22.33298,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17339','RT90 zone 7.5 gon V emulation',NULL,NULL,'EPSG','2845','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',11.18225,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000006,'EPSG','9201','EPSG','8806','False easting',1500025.141,'EPSG','9001','EPSG','8807','False northing',-667.282,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17340','RT90 zone 5 gon V emulation',NULL,NULL,'EPSG','2846','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',13.332256,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000058,'EPSG','9201','EPSG','8806','False easting',1500044.695,'EPSG','9001','EPSG','8807','False northing',-667.13,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17341','RT90 zone 2.5 gon V emulation',NULL,NULL,'EPSG','2847','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',15.4822624306,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00000561024,'EPSG','9201','EPSG','8806','False easting',1500064.274,'EPSG','9001','EPSG','8807','False northing',-667.711,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17342','RT90 zone 0 gon emulation',NULL,NULL,'EPSG','2848','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',18.032268,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000054,'EPSG','9201','EPSG','8806','False easting',1500083.521,'EPSG','9001','EPSG','8807','False northing',-668.844,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17343','RT90 zone 2.5 gon O emulation',NULL,NULL,'EPSG','2849','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',20.182274,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000052,'EPSG','9201','EPSG','8806','False easting',1500102.765,'EPSG','9001','EPSG','8807','False northing',-670.706,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17344','RT90 zone 5 gon O emulation',NULL,NULL,'EPSG','2850','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',22.33228,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000049,'EPSG','9201','EPSG','8806','False easting',1500121.846,'EPSG','9001','EPSG','8807','False northing',-672.557,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17348','Map Grid of Australia zone 48',NULL,NULL,'EPSG','4191','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',105.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17349','Map Grid of Australia zone 49',NULL,NULL,'EPSG','4176','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',111.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17350','Map Grid of Australia zone 50',NULL,NULL,'EPSG','4178','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',117.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17351','Map Grid of Australia zone 51',NULL,NULL,'EPSG','1559','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',123.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17352','Map Grid of Australia zone 52',NULL,NULL,'EPSG','1560','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',129.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17353','Map Grid of Australia zone 53',NULL,NULL,'EPSG','1561','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',135.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17354','Map Grid of Australia zone 54',NULL,NULL,'EPSG','1562','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',141.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17355','Map Grid of Australia zone 55',NULL,NULL,'EPSG','1563','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',147.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17356','Map Grid of Australia zone 56',NULL,NULL,'EPSG','1564','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',153.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17357','Map Grid of Australia zone 57',NULL,NULL,'EPSG','4196','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',159.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17358','Map Grid of Australia zone 58',NULL,NULL,'EPSG','4175','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',165.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17359','South Australia Lambert',NULL,NULL,'EPSG','2986','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-32.0,'EPSG','9102','EPSG','8822','Longitude of false origin',135.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-28.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',-36.0,'EPSG','9102','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',2000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17360','Vicgrid66',NULL,NULL,'EPSG','2285','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-37.0,'EPSG','9102','EPSG','8822','Longitude of false origin',145.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-36.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',-38.0,'EPSG','9102','EPSG','8826','Easting at false origin',2500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17361','Vicgrid',NULL,NULL,'EPSG','2285','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-37.0,'EPSG','9102','EPSG','8822','Longitude of false origin',145.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-36.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',-38.0,'EPSG','9102','EPSG','8826','Easting at false origin',2500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',2500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17362','Geoscience Australia Standard National Scale Lambert Projection',NULL,NULL,'EPSG','2575','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',0.0,'EPSG','9102','EPSG','8822','Longitude of false origin',134.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-18.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',-36.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17363','Brisbane City Survey Grid 02',NULL,NULL,'EPSG','2990','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-28.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',153.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99999,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',100000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17364','New South Wales Lambert',NULL,NULL,'EPSG','3139','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-33.25,'EPSG','9102','EPSG','8822','Longitude of false origin',147.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-30.75,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',-35.75,'EPSG','9102','EPSG','8826','Easting at false origin',9300000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17365','Australian Albers',NULL,NULL,'EPSG','2575','EPSG','9822','Albers Equal Area','EPSG','8821','Latitude of false origin',0.0,'EPSG','9102','EPSG','8822','Longitude of false origin',132.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-18.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',-36.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17401','Katanga Lambert Conformal',NULL,NULL,'EPSG','3147','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',0.0,'EPSG','9102','EPSG','8822','Longitude of false origin',26.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-6.5,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',-11.5,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','17402','Katanga Transverse Mercator',NULL,NULL,'EPSG','3147','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-9.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',26.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9998,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','17412','Congo Transverse Mercator zone 12',NULL,NULL,'EPSG','3937','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',12.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17414','Congo Transverse Mercator zone 14',NULL,NULL,'EPSG','3151','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',14.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17416','Congo Transverse Mercator zone 16',NULL,NULL,'EPSG','3152','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',16.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17418','Congo Transverse Mercator zone 18',NULL,NULL,'EPSG','3153','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',18.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17420','Congo Transverse Mercator zone 20',NULL,NULL,'EPSG','3154','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',20.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17422','Congo Transverse Mercator zone 22',NULL,NULL,'EPSG','3155','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',22.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17424','Congo Transverse Mercator zone 24',NULL,NULL,'EPSG','3156','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',24.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17426','Congo Transverse Mercator zone 26',NULL,NULL,'EPSG','3157','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',26.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17428','Congo Transverse Mercator zone 28',NULL,NULL,'EPSG','3158','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',28.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17430','Congo Transverse Mercator zone 30',NULL,NULL,'EPSG','3159','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',30.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17432','Indonesia TM-3 zone 46.2',NULL,NULL,'EPSG','3976','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',94.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17433','Indonesia TM-3 zone 47.1',NULL,NULL,'EPSG','3510','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',97.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17434','Indonesia TM-3 zone 47.2',NULL,NULL,'EPSG','3511','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',100.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17435','Indonesia TM-3 zone 48.1',NULL,NULL,'EPSG','3512','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',103.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17436','Indonesia TM-3 zone 48.2',NULL,NULL,'EPSG','3513','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',106.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17437','Indonesia TM-3 zone 49.1',NULL,NULL,'EPSG','3514','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',109.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17438','Indonesia TM-3 zone 49.2',NULL,NULL,'EPSG','3515','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',112.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17439','Indonesia TM-3 zone 50.1',NULL,NULL,'EPSG','3516','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',115.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17440','Indonesia TM-3 zone 50.2',NULL,NULL,'EPSG','3517','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',118.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17441','Indonesia TM-3 zone 51.1',NULL,NULL,'EPSG','3518','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',121.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17442','Indonesia TM-3 zone 51.2',NULL,NULL,'EPSG','3519','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',124.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17443','Indonesia TM-3 zone 52.1',NULL,NULL,'EPSG','3520','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',127.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17444','Indonesia TM-3 zone 52.2',NULL,NULL,'EPSG','3521','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',130.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17445','Indonesia TM-3 zone 53.1',NULL,NULL,'EPSG','3522','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',133.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17446','Indonesia TM-3 zone 53.2',NULL,NULL,'EPSG','3523','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',136.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17447','Indonesia TM-3 zone 54.1',NULL,NULL,'EPSG','3975','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',139.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',1500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17448','Australian Map Grid zone 48',NULL,NULL,'EPSG','1556','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',105.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','17449','Australian Map Grid zone 49',NULL,NULL,'EPSG','1557','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',111.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17450','Australian Map Grid zone 50',NULL,NULL,'EPSG','1558','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',117.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17451','Australian Map Grid zone 51',NULL,NULL,'EPSG','1559','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',123.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17452','Australian Map Grid zone 52',NULL,NULL,'EPSG','1560','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',129.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17453','Australian Map Grid zone 53',NULL,NULL,'EPSG','1561','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',135.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17454','Australian Map Grid zone 54',NULL,NULL,'EPSG','1567','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',141.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17455','Australian Map Grid zone 55',NULL,NULL,'EPSG','1568','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',147.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17456','Australian Map Grid zone 56',NULL,NULL,'EPSG','2291','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',153.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17457','Australian Map Grid zone 57',NULL,NULL,'EPSG','1565','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',159.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17458','Australian Map Grid zone 58',NULL,NULL,'EPSG','1566','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',165.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17515','South African Survey Grid zone 15',NULL,NULL,'EPSG','1454','EPSG','9808','Transverse Mercator (South Orientated)','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17517','South African Survey Grid zone 17',NULL,NULL,'EPSG','1455','EPSG','9808','Transverse Mercator (South Orientated)','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',17.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17519','South African Survey Grid zone 19',NULL,NULL,'EPSG','1456','EPSG','9808','Transverse Mercator (South Orientated)','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',19.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17521','South African Survey Grid zone 21',NULL,NULL,'EPSG','1457','EPSG','9808','Transverse Mercator (South Orientated)','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17523','South African Survey Grid zone 23',NULL,NULL,'EPSG','1458','EPSG','9808','Transverse Mercator (South Orientated)','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',23.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17525','South African Survey Grid zone 25',NULL,NULL,'EPSG','1459','EPSG','9808','Transverse Mercator (South Orientated)','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',25.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17527','South African Survey Grid zone 27',NULL,NULL,'EPSG','1460','EPSG','9808','Transverse Mercator (South Orientated)','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',27.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17529','South African Survey Grid zone 29',NULL,NULL,'EPSG','1461','EPSG','9808','Transverse Mercator (South Orientated)','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',29.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17531','South African Survey Grid zone 31',NULL,NULL,'EPSG','1462','EPSG','9808','Transverse Mercator (South Orientated)','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',31.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17533','South African Survey Grid zone 33',NULL,NULL,'EPSG','1463','EPSG','9808','Transverse Mercator (South Orientated)','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',33.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17611','South West African Survey Grid zone 11',NULL,NULL,'EPSG','1838','EPSG','9808','Transverse Mercator (South Orientated)','EPSG','8801','Latitude of natural origin',-22.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',11.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9031','EPSG','8807','False northing',0.0,'EPSG','9031',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17613','South West African Survey Grid zone 13',NULL,NULL,'EPSG','1839','EPSG','9808','Transverse Mercator (South Orientated)','EPSG','8801','Latitude of natural origin',-22.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',13.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9031','EPSG','8807','False northing',0.0,'EPSG','9031',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17615','South West African Survey Grid zone 15',NULL,NULL,'EPSG','1840','EPSG','9808','Transverse Mercator (South Orientated)','EPSG','8801','Latitude of natural origin',-22.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9031','EPSG','8807','False northing',0.0,'EPSG','9031',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17617','South West African Survey Grid zone 17',NULL,NULL,'EPSG','1841','EPSG','9808','Transverse Mercator (South Orientated)','EPSG','8801','Latitude of natural origin',-22.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',17.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9031','EPSG','8807','False northing',0.0,'EPSG','9031',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17619','South West African Survey Grid zone 19',NULL,NULL,'EPSG','1842','EPSG','9808','Transverse Mercator (South Orientated)','EPSG','8801','Latitude of natural origin',-22.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',19.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9031','EPSG','8807','False northing',0.0,'EPSG','9031',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17621','South West African Survey Grid zone 21',NULL,NULL,'EPSG','1843','EPSG','9808','Transverse Mercator (South Orientated)','EPSG','8801','Latitude of natural origin',-22.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9031','EPSG','8807','False northing',0.0,'EPSG','9031',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17623','South West African Survey Grid zone 23',NULL,NULL,'EPSG','1844','EPSG','9808','Transverse Mercator (South Orientated)','EPSG','8801','Latitude of natural origin',-22.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',23.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9031','EPSG','8807','False northing',0.0,'EPSG','9031',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17625','South West African Survey Grid zone 25',NULL,NULL,'EPSG','1845','EPSG','9808','Transverse Mercator (South Orientated)','EPSG','8801','Latitude of natural origin',-22.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',25.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9031','EPSG','8807','False northing',0.0,'EPSG','9031',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17700','MTM Quebec zone 2',NULL,NULL,'EPSG','1420','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-55.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',304800.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','17701','MTM zone 1',NULL,NULL,'EPSG','2226','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-53.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',304800.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17702','MTM zone 2',NULL,NULL,'EPSG','2227','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-56.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',304800.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17703','MTM zone 3',NULL,NULL,'EPSG','2290','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-58.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',304800.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17704','MTM zone 4',NULL,NULL,'EPSG','2276','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-61.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',304800.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17705','MTM zone 5',NULL,NULL,'EPSG','2277','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-64.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',304800.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17706','MTM zone 6',NULL,NULL,'EPSG','2278','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-67.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',304800.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17707','MTM zone 7',NULL,NULL,'EPSG','1425','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-70.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',304800.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17708','MTM zone 8',NULL,NULL,'EPSG','2279','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-73.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',304800.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17709','MTM zone 9',NULL,NULL,'EPSG','2280','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-76.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',304800.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17710','MTM zone 10',NULL,NULL,'EPSG','2281','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-79.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',304800.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17711','MTM zone 11',NULL,NULL,'EPSG','1432','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-82.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',304800.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17712','MTM zone 12',NULL,NULL,'EPSG','1433','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-81.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',304800.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17713','MTM zone 13',NULL,NULL,'EPSG','1434','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-84.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',304800.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17714','MTM zone 14',NULL,NULL,'EPSG','1435','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-87.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',304800.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17715','MTM zone 15',NULL,NULL,'EPSG','1436','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-90.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',304800.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17716','MTM zone 16',NULL,NULL,'EPSG','1437','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-93.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',304800.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17717','MTM zone 17',NULL,NULL,'EPSG','1438','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-96.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',304800.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17722','Alberta 3-degree TM reference meridian 111 W',NULL,NULL,'EPSG','3543','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-111.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17723','Alberta 3-degree TM reference meridian 114 W',NULL,NULL,'EPSG','3542','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-114.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17724','Alberta 3-degree TM reference meridian 117 W',NULL,NULL,'EPSG','3541','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-117.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17725','Alberta 3-degree TM reference meridian 120 W',NULL,NULL,'EPSG','3540','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-120.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9001','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','17726','Alberta 3-degree TM reference meridian 120 W',NULL,NULL,'EPSG','3540','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-120.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17794','MTM Nova Scotia zone 4',NULL,NULL,'EPSG','1534','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-61.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',4500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17795','MTM Nova Scotia zone 5',NULL,NULL,'EPSG','1535','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-64.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',5500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17801','Japan Plane Rectangular CS zone I',NULL,NULL,'EPSG','1854','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',33.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',129.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17802','Japan Plane Rectangular CS zone II',NULL,NULL,'EPSG','1855','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',33.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',131.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17803','Japan Plane Rectangular CS zone III',NULL,NULL,'EPSG','1856','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',132.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17804','Japan Plane Rectangular CS zone IV',NULL,NULL,'EPSG','1857','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',33.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',133.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17805','Japan Plane Rectangular CS zone V',NULL,NULL,'EPSG','1858','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',134.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17806','Japan Plane Rectangular CS zone VI',NULL,NULL,'EPSG','1859','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',136.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17807','Japan Plane Rectangular CS zone VII',NULL,NULL,'EPSG','1860','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',137.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17808','Japan Plane Rectangular CS zone VIII',NULL,NULL,'EPSG','1861','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',138.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17809','Japan Plane Rectangular CS zone IX',NULL,NULL,'EPSG','1862','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',36.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',139.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17810','Japan Plane Rectangular CS zone X',NULL,NULL,'EPSG','1863','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',40.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',140.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17811','Japan Plane Rectangular CS zone XI',NULL,NULL,'EPSG','1864','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',140.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17812','Japan Plane Rectangular CS zone XII',NULL,NULL,'EPSG','1865','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',142.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17813','Japan Plane Rectangular CS zone XIII',NULL,NULL,'EPSG','1866','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',44.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',144.15,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17814','Japan Plane Rectangular CS zone XIV',NULL,NULL,'EPSG','1867','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',26.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',142.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17815','Japan Plane Rectangular CS zone XV',NULL,NULL,'EPSG','1868','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',26.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',127.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17816','Japan Plane Rectangular CS zone XVI',NULL,NULL,'EPSG','1869','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',26.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',124.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17817','Japan Plane Rectangular CS zone XVII',NULL,NULL,'EPSG','1870','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',26.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',131.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17818','Japan Plane Rectangular CS zone XVIII',NULL,NULL,'EPSG','1871','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',20.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',136.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17819','Japan Plane Rectangular CS zone XIX',NULL,NULL,'EPSG','1872','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',26.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',154.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17901','Mount Eden Circuit',NULL,NULL,'EPSG','3781','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-36.5247515,'EPSG','9110','EPSG','8802','Longitude of natural origin',174.45516217,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17902','Bay of Plenty Circuit',NULL,NULL,'EPSG','3779','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-37.45404993,'EPSG','9110','EPSG','8802','Longitude of natural origin',176.27583101,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17903','Poverty Bay Circuit',NULL,NULL,'EPSG','3780','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-38.372893,'EPSG','9110','EPSG','8802','Longitude of natural origin',177.53082906,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17904','Hawkes Bay Circuit',NULL,NULL,'EPSG','3772','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-39.39033455,'EPSG','9110','EPSG','8802','Longitude of natural origin',176.40252499,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17905','Taranaki Circuit',NULL,NULL,'EPSG','3777','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-39.08087299,'EPSG','9110','EPSG','8802','Longitude of natural origin',174.13408423,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17906','Tuhirangi Circuit',NULL,NULL,'EPSG','3778','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-39.30448934,'EPSG','9110','EPSG','8802','Longitude of natural origin',175.38241325,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17907','Wanganui Circuit',NULL,NULL,'EPSG','3776','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-40.14310097,'EPSG','9110','EPSG','8802','Longitude of natural origin',175.29171586,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17908','Wairarapa Circuit',NULL,NULL,'EPSG','3775','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-40.55319175,'EPSG','9110','EPSG','8802','Longitude of natural origin',175.38504588,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17909','Wellington Circuit',NULL,NULL,'EPSG','3774','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-41.18047507,'EPSG','9110','EPSG','8802','Longitude of natural origin',174.46358432,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17910','Collingwood Circuit',NULL,NULL,'EPSG','3782','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-40.42531326,'EPSG','9110','EPSG','8802','Longitude of natural origin',172.40193674,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17911','Nelson Circuit',NULL,NULL,'EPSG','3784','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-41.1628361,'EPSG','9110','EPSG','8802','Longitude of natural origin',173.17575405,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17912','Karamea Circuit',NULL,NULL,'EPSG','3783','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-41.17236815,'EPSG','9110','EPSG','8802','Longitude of natural origin',172.06325015,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17913','Buller Circuit',NULL,NULL,'EPSG','3786','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-41.48388903,'EPSG','9110','EPSG','8802','Longitude of natural origin',171.34525362,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17914','Grey Circuit',NULL,NULL,'EPSG','3787','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-42.20012994,'EPSG','9110','EPSG','8802','Longitude of natural origin',171.32591767,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17915','Amuri Circuit',NULL,NULL,'EPSG','3788','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-42.41208197,'EPSG','9110','EPSG','8802','Longitude of natural origin',173.00364802,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17916','Marlborough Circuit',NULL,NULL,'EPSG','3785','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-41.3240152,'EPSG','9110','EPSG','8802','Longitude of natural origin',173.48074668,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17917','Hokitika Circuit',NULL,NULL,'EPSG','3789','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-42.53107605,'EPSG','9110','EPSG','8802','Longitude of natural origin',170.58479766,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17918','Okarito Circuit',NULL,NULL,'EPSG','3791','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-43.06364613,'EPSG','9110','EPSG','8802','Longitude of natural origin',170.1539333,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17919','Jacksons Bay Circuit',NULL,NULL,'EPSG','3794','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-43.58400904,'EPSG','9110','EPSG','8802','Longitude of natural origin',168.36225612,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17920','Mount Pleasant Circuit',NULL,NULL,'EPSG','3790','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-43.35262953,'EPSG','9110','EPSG','8802','Longitude of natural origin',172.43378969,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17921','Gawler Circuit',NULL,NULL,'EPSG','3792','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-43.44553616,'EPSG','9110','EPSG','8802','Longitude of natural origin',171.21386945,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17922','Timaru Circuit',NULL,NULL,'EPSG','3793','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-44.24079933,'EPSG','9110','EPSG','8802','Longitude of natural origin',171.0326103,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17923','Lindis Peak Circuit',NULL,NULL,'EPSG','3795','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-44.44069647,'EPSG','9110','EPSG','8802','Longitude of natural origin',169.28039183,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17924','Mount Nicholas Circuit',NULL,NULL,'EPSG','3797','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-45.07584493,'EPSG','9110','EPSG','8802','Longitude of natural origin',168.23551083,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17925','Mount York Circuit',NULL,NULL,'EPSG','3799','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-45.33494142,'EPSG','9110','EPSG','8802','Longitude of natural origin',167.44199024,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17926','Observation Point Circuit',NULL,NULL,'EPSG','3796','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-45.48583078,'EPSG','9110','EPSG','8802','Longitude of natural origin',170.37429426,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17927','North Taieri Circuit',NULL,NULL,'EPSG','3798','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-45.51414481,'EPSG','9110','EPSG','8802','Longitude of natural origin',170.16573208,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99996,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17928','Bluff Circuit',NULL,NULL,'EPSG','3800','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-46.36000346,'EPSG','9110','EPSG','8802','Longitude of natural origin',168.20343392,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300002.66,'EPSG','9001','EPSG','8807','False northing',699999.58,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17931','Mount Eden 2000',NULL,NULL,'EPSG','3781','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-36.5247,'EPSG','9110','EPSG','8802','Longitude of natural origin',174.4551,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17932','Bay of Plenty 2000',NULL,NULL,'EPSG','3779','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-37.454,'EPSG','9110','EPSG','8802','Longitude of natural origin',176.2758,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17933','Poverty Bay 2000',NULL,NULL,'EPSG','3780','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-38.3728,'EPSG','9110','EPSG','8802','Longitude of natural origin',177.5308,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17934','Hawkes Bay 2000',NULL,NULL,'EPSG','3772','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-39.3903,'EPSG','9110','EPSG','8802','Longitude of natural origin',176.4025,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17935','Taranaki 2000',NULL,NULL,'EPSG','3777','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-39.0808,'EPSG','9110','EPSG','8802','Longitude of natural origin',174.134,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17936','Tuhirangi 2000',NULL,NULL,'EPSG','3778','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-39.3044,'EPSG','9110','EPSG','8802','Longitude of natural origin',175.3824,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17937','Wanganui 2000',NULL,NULL,'EPSG','3776','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-40.1431,'EPSG','9110','EPSG','8802','Longitude of natural origin',175.2917,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17938','Wairarapa 2000',NULL,NULL,'EPSG','3775','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-40.5531,'EPSG','9110','EPSG','8802','Longitude of natural origin',175.385,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17939','Wellington 2000',NULL,NULL,'EPSG','3774','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-41.1804,'EPSG','9110','EPSG','8802','Longitude of natural origin',174.4635,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17940','Collingwood 2000',NULL,NULL,'EPSG','3782','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-40.4253,'EPSG','9110','EPSG','8802','Longitude of natural origin',172.4019,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17941','Nelson 2000',NULL,NULL,'EPSG','3784','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-41.1628,'EPSG','9110','EPSG','8802','Longitude of natural origin',173.1757,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17942','Karamea 2000',NULL,NULL,'EPSG','3783','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-41.1723,'EPSG','9110','EPSG','8802','Longitude of natural origin',172.0632,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17943','Buller 2000',NULL,NULL,'EPSG','3786','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-41.4838,'EPSG','9110','EPSG','8802','Longitude of natural origin',171.3452,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17944','Grey 2000',NULL,NULL,'EPSG','3787','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-42.2001,'EPSG','9110','EPSG','8802','Longitude of natural origin',171.3259,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17945','Amuri 2000',NULL,NULL,'EPSG','3788','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-42.412,'EPSG','9110','EPSG','8802','Longitude of natural origin',173.0036,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17946','Marlborough 2000',NULL,NULL,'EPSG','3785','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-41.324,'EPSG','9110','EPSG','8802','Longitude of natural origin',173.4807,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17947','Hokitika 2000',NULL,NULL,'EPSG','3789','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-42.531,'EPSG','9110','EPSG','8802','Longitude of natural origin',170.5847,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17948','Okarito 2000',NULL,NULL,'EPSG','3791','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-43.0636,'EPSG','9110','EPSG','8802','Longitude of natural origin',170.1539,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17949','Jacksons Bay 2000',NULL,NULL,'EPSG','3794','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-43.584,'EPSG','9110','EPSG','8802','Longitude of natural origin',168.3622,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17950','Mount Pleasant 2000',NULL,NULL,'EPSG','3790','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-43.3526,'EPSG','9110','EPSG','8802','Longitude of natural origin',172.4337,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17951','Gawler 2000',NULL,NULL,'EPSG','3792','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-43.4455,'EPSG','9110','EPSG','8802','Longitude of natural origin',171.2138,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17952','Timaru 2000',NULL,NULL,'EPSG','3793','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-44.2407,'EPSG','9110','EPSG','8802','Longitude of natural origin',171.0326,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17953','Lindis Peak 2000',NULL,NULL,'EPSG','3795','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-44.4406,'EPSG','9110','EPSG','8802','Longitude of natural origin',169.2803,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17954','Mount Nicholas 2000',NULL,NULL,'EPSG','3797','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-45.0758,'EPSG','9110','EPSG','8802','Longitude of natural origin',168.2355,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17955','Mount York 2000',NULL,NULL,'EPSG','3799','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-45.3349,'EPSG','9110','EPSG','8802','Longitude of natural origin',167.4419,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17956','Observation Point 2000',NULL,NULL,'EPSG','3796','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-45.4858,'EPSG','9110','EPSG','8802','Longitude of natural origin',170.3742,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17957','North Taieri 2000',NULL,NULL,'EPSG','3798','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-45.5141,'EPSG','9110','EPSG','8802','Longitude of natural origin',170.1657,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99996,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17958','Bluff 2000',NULL,NULL,'EPSG','3800','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-46.36,'EPSG','9110','EPSG','8802','Longitude of natural origin',168.2034,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17959','Chatham Island Circuit 2000',NULL,NULL,'EPSG','2889','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-44.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-176.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17960','Auckland Islands Transverse Mercator 2000',NULL,NULL,'EPSG','3554','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',166.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',3500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17961','Campbell Island Transverse Mercator 2000',NULL,NULL,'EPSG','3555','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',169.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',3500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17962','Antipodes Islands Transverse Mercator 2000',NULL,NULL,'EPSG','3556','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',179.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',3500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17963','Raoul Island Transverse Mercator 2000',NULL,NULL,'EPSG','3557','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-178.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',3500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17964','New Zealand Continental Shelf Lambert Conformal 2000',NULL,NULL,'EPSG','3593','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-41.0,'EPSG','9110','EPSG','8822','Longitude of false origin',173.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',-37.3,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-44.3,'EPSG','9110','EPSG','8826','Easting at false origin',3000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',7000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17965','Chatham Islands Transverse Mercator 2000',NULL,NULL,'EPSG','2889','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-176.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',3500000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','17966','Darwin Glacier Lambert Conformal 2000',NULL,NULL,'EPSG','3592','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-90.0,'EPSG','9110','EPSG','8822','Longitude of false origin',157.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',-76.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-79.2,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18001','Austria Gauss-Kruger West Zone',NULL,NULL,'EPSG','1706','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',28.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',-5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18002','Austria Gauss-Kruger Central Zone',NULL,NULL,'EPSG','1707','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',31.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',-5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18003','Austria Gauss-Kruger East Zone',NULL,NULL,'EPSG','1708','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',34.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',-5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18004','Austria Gauss-Kruger West',NULL,NULL,'EPSG','1706','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',10.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',-5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18005','Austria Gauss-Kruger Central',NULL,NULL,'EPSG','1707','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',13.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',-5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18006','Austria Gauss-Kruger East',NULL,NULL,'EPSG','1708','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',16.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',-5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18007','Austria Gauss-Kruger M28',NULL,NULL,'EPSG','1706','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',10.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',-5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18008','Austria Gauss-Kruger M31',NULL,NULL,'EPSG','1707','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',13.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',450000.0,'EPSG','9001','EPSG','8807','False northing',-5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18009','Austria Gauss-Kruger M34',NULL,NULL,'EPSG','1708','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',16.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',750000.0,'EPSG','9001','EPSG','8807','False northing',-5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18011','Nord Algerie (ancienne)',NULL,NULL,'EPSG','1728','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',40.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',3.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.999625544,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18012','Sud Algerie (ancienne)',NULL,NULL,'EPSG','1729','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',37.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',3.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.999625769,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18021','Nord Algerie',NULL,NULL,'EPSG','1728','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',40.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',3.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.999625544,'EPSG','9201','EPSG','8806','False easting',500135.0,'EPSG','9001','EPSG','8807','False northing',300090.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18022','Sud Algerie',NULL,NULL,'EPSG','1729','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',37.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',3.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.999625769,'EPSG','9201','EPSG','8806','False easting',500135.0,'EPSG','9001','EPSG','8807','False northing',300090.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18031','Argentina zone 1',NULL,NULL,'EPSG','1608','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-72.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18032','Argentina zone 2',NULL,NULL,'EPSG','1609','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-69.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',2500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18033','Argentina zone 3',NULL,NULL,'EPSG','1610','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-66.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',3500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18034','Argentina zone 4',NULL,NULL,'EPSG','1611','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-63.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',4500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18035','Argentina zone 5',NULL,NULL,'EPSG','1612','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-60.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',5500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18036','Argentina zone 6',NULL,NULL,'EPSG','1613','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-57.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',6500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18037','Argentina zone 7',NULL,NULL,'EPSG','1614','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-90.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-54.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',7500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18041','Austria West Zone',NULL,NULL,'EPSG','1706','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',28.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18042','Austria Central Zone',NULL,NULL,'EPSG','1707','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',31.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18043','Austria East Zone',NULL,NULL,'EPSG','1708','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',34.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18044','Austria M28',NULL,NULL,'EPSG','1706','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',10.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18045','Austria M31',NULL,NULL,'EPSG','1707','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',13.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',450000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18046','Austria M34',NULL,NULL,'EPSG','1708','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',16.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',750000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18047','Austria zone M28',NULL,NULL,'EPSG','1706','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',28.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',150000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18048','Austria zone M31',NULL,NULL,'EPSG','1707','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',31.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',450000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18049','Austria zone M34',NULL,NULL,'EPSG','1708','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',34.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',750000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18051','Colombia West zone',NULL,NULL,'EPSG','1598','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',4.355657,'EPSG','9110','EPSG','8802','Longitude of natural origin',-77.04513,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18052','Colombia Bogota zone',NULL,NULL,'EPSG','1599','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',4.355657,'EPSG','9110','EPSG','8802','Longitude of natural origin',-74.04513,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18053','Colombia East Central zone',NULL,NULL,'EPSG','1600','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',4.355657,'EPSG','9110','EPSG','8802','Longitude of natural origin',-71.04513,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18054','Colombia East zone',NULL,NULL,'EPSG','1601','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',4.355657,'EPSG','9110','EPSG','8802','Longitude of natural origin',-68.04513,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18055','Colombia MAGNA Far West zone',NULL,NULL,'EPSG','3091','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',4.35463215,'EPSG','9110','EPSG','8802','Longitude of natural origin',-80.04390285,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18056','Colombia MAGNA West zone',NULL,NULL,'EPSG','3090','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',4.35463215,'EPSG','9110','EPSG','8802','Longitude of natural origin',-77.04390285,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18057','Colombia MAGNA Bogota zone',NULL,NULL,'EPSG','1599','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',4.35463215,'EPSG','9110','EPSG','8802','Longitude of natural origin',-74.04390285,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18058','Colombia MAGNA East Central zone',NULL,NULL,'EPSG','1600','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',4.35463215,'EPSG','9110','EPSG','8802','Longitude of natural origin',-71.04390285,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18059','Colombia MAGNA East zone',NULL,NULL,'EPSG','1601','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',4.35463215,'EPSG','9110','EPSG','8802','Longitude of natural origin',-68.04390285,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18061','Cuba Norte',NULL,NULL,'EPSG','1487','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',22.21,'EPSG','9110','EPSG','8802','Longitude of natural origin',-81.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99993602,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',280296.016,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','18062','Cuba Sur',NULL,NULL,'EPSG','1488','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',20.43,'EPSG','9110','EPSG','8802','Longitude of natural origin',-76.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99994848,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',229126.939,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','18063','Cuba Norte',NULL,NULL,'EPSG','1487','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',22.21,'EPSG','9110','EPSG','8822','Longitude of false origin',-81.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',23.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',21.42,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',280296.016,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18064','Cuba Sur',NULL,NULL,'EPSG','1488','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',20.43,'EPSG','9110','EPSG','8822','Longitude of false origin',-76.5,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',21.18,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',20.08,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',229126.939,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18071','Egypt Blue Belt',NULL,NULL,'EPSG','1642','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',35.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',1100000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18072','Egypt Red Belt',NULL,NULL,'EPSG','1643','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',31.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',615000.0,'EPSG','9001','EPSG','8807','False northing',810000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18073','Egypt Purple Belt',NULL,NULL,'EPSG','1644','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',27.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',700000.0,'EPSG','9001','EPSG','8807','False northing',200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18074','Egypt Extended Purple Belt',NULL,NULL,'EPSG','1645','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',30.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',27.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',700000.0,'EPSG','9001','EPSG','8807','False northing',1200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18081','Lambert zone I',NULL,NULL,'EPSG','1731','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',55.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.999877341,'EPSG','9201','EPSG','8806','False easting',600000.0,'EPSG','9001','EPSG','8807','False northing',1200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18082','Lambert zone II',NULL,NULL,'EPSG','1734','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',52.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.99987742,'EPSG','9201','EPSG','8806','False easting',600000.0,'EPSG','9001','EPSG','8807','False northing',2200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18083','Lambert zone III',NULL,NULL,'EPSG','1733','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',49.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.999877499,'EPSG','9201','EPSG','8806','False easting',600000.0,'EPSG','9001','EPSG','8807','False northing',3200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18084','Lambert zone IV',NULL,NULL,'EPSG','1327','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',46.85,'EPSG','9105','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.99994471,'EPSG','9201','EPSG','8806','False easting',234.358,'EPSG','9001','EPSG','8807','False northing',4185861.369,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18085','Lambert-93',NULL,NULL,'EPSG','1326','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',46.3,'EPSG','9110','EPSG','8822','Longitude of false origin',3.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',49.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',44.0,'EPSG','9110','EPSG','8826','Easting at false origin',700000.0,'EPSG','9001','EPSG','8827','Northing at false origin',6600000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18086','France EuroLambert',NULL,NULL,'EPSG','1326','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',46.48,'EPSG','9110','EPSG','8802','Longitude of natural origin',2.2014025,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99987742,'EPSG','9201','EPSG','8806','False easting',600000.0,'EPSG','9001','EPSG','8807','False northing',2200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','18091','Lambert Nord France',NULL,NULL,'EPSG','1731','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',55.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.999877341,'EPSG','9201','EPSG','8806','False easting',600000.0,'EPSG','9001','EPSG','8807','False northing',200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18092','Lambert Centre France',NULL,NULL,'EPSG','1734','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',52.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.99987742,'EPSG','9201','EPSG','8806','False easting',600000.0,'EPSG','9001','EPSG','8807','False northing',200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18093','Lambert Sud France',NULL,NULL,'EPSG','1733','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',49.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.999877499,'EPSG','9201','EPSG','8806','False easting',600000.0,'EPSG','9001','EPSG','8807','False northing',200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18094','Lambert Corse',NULL,NULL,'EPSG','1327','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',46.85,'EPSG','9105','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.99994471,'EPSG','9201','EPSG','8806','False easting',234.358,'EPSG','9001','EPSG','8807','False northing',185861.369,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18101','France Conic Conformal zone 1',NULL,NULL,'EPSG','3545','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',42.0,'EPSG','9102','EPSG','8822','Longitude of false origin',3.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',41.25,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',42.75,'EPSG','9102','EPSG','8826','Easting at false origin',1700000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18102','France Conic Conformal zone 2',NULL,NULL,'EPSG','3546','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',43.0,'EPSG','9102','EPSG','8822','Longitude of false origin',3.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',42.25,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',43.75,'EPSG','9102','EPSG','8826','Easting at false origin',1700000.0,'EPSG','9001','EPSG','8827','Northing at false origin',2200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18103','France Conic Conformal zone 3',NULL,NULL,'EPSG','3547','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',44.0,'EPSG','9102','EPSG','8822','Longitude of false origin',3.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',43.25,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',44.75,'EPSG','9102','EPSG','8826','Easting at false origin',1700000.0,'EPSG','9001','EPSG','8827','Northing at false origin',3200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18104','France Conic Conformal zone 4',NULL,NULL,'EPSG','3548','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',45.0,'EPSG','9102','EPSG','8822','Longitude of false origin',3.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',44.25,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',45.75,'EPSG','9102','EPSG','8826','Easting at false origin',1700000.0,'EPSG','9001','EPSG','8827','Northing at false origin',4200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18105','France Conic Conformal zone 5',NULL,NULL,'EPSG','3549','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',46.0,'EPSG','9102','EPSG','8822','Longitude of false origin',3.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',45.25,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',46.75,'EPSG','9102','EPSG','8826','Easting at false origin',1700000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18106','France Conic Conformal zone 6',NULL,NULL,'EPSG','3550','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',47.0,'EPSG','9102','EPSG','8822','Longitude of false origin',3.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',46.25,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',47.75,'EPSG','9102','EPSG','8826','Easting at false origin',1700000.0,'EPSG','9001','EPSG','8827','Northing at false origin',6200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18107','France Conic Conformal zone 7',NULL,NULL,'EPSG','3551','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',48.0,'EPSG','9102','EPSG','8822','Longitude of false origin',3.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',47.25,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',48.75,'EPSG','9102','EPSG','8826','Easting at false origin',1700000.0,'EPSG','9001','EPSG','8827','Northing at false origin',7200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18108','France Conic Conformal zone 8',NULL,NULL,'EPSG','3552','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',49.0,'EPSG','9102','EPSG','8822','Longitude of false origin',3.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',48.25,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',49.75,'EPSG','9102','EPSG','8826','Easting at false origin',1700000.0,'EPSG','9001','EPSG','8827','Northing at false origin',8200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18109','France Conic Conformal zone 9',NULL,NULL,'EPSG','3553','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',50.0,'EPSG','9102','EPSG','8822','Longitude of false origin',3.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',49.25,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',50.75,'EPSG','9102','EPSG','8826','Easting at false origin',1700000.0,'EPSG','9001','EPSG','8827','Northing at false origin',9200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18110','India zone 0',NULL,NULL,'EPSG','1668','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',39.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',68.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99846154,'EPSG','9201','EPSG','8806','False easting',2355500.0,'EPSG','9084','EPSG','8807','False northing',2590000.0,'EPSG','9084',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18111','India zone I',NULL,NULL,'EPSG','1669','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',32.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',68.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99878641,'EPSG','9201','EPSG','8806','False easting',3000000.0,'EPSG','9084','EPSG','8807','False northing',1000000.0,'EPSG','9084',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18112','India zone IIa',NULL,NULL,'EPSG','1670','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',26.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',74.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99878641,'EPSG','9201','EPSG','8806','False easting',3000000.0,'EPSG','9084','EPSG','8807','False northing',1000000.0,'EPSG','9084',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18113','India zone IIb',NULL,NULL,'EPSG','1671','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',26.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',90.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99878641,'EPSG','9201','EPSG','8806','False easting',3000000.0,'EPSG','9084','EPSG','8807','False northing',1000000.0,'EPSG','9084',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18114','India zone IIIa',NULL,NULL,'EPSG','1672','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',19.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',80.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99878641,'EPSG','9201','EPSG','8806','False easting',3000000.0,'EPSG','9084','EPSG','8807','False northing',1000000.0,'EPSG','9084',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18115','India zone IIIb',NULL,NULL,'EPSG','2292','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',19.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',100.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99878641,'EPSG','9201','EPSG','8806','False easting',3000000.0,'EPSG','9084','EPSG','8807','False northing',1000000.0,'EPSG','9084',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18116','India zone IVa',NULL,NULL,'EPSG','1673','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',12.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',80.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99878641,'EPSG','9201','EPSG','8806','False easting',3000000.0,'EPSG','9084','EPSG','8807','False northing',1000000.0,'EPSG','9084',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18117','India zone IVb',NULL,NULL,'EPSG','2293','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',12.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',100.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99878641,'EPSG','9201','EPSG','8806','False easting',3000000.0,'EPSG','9084','EPSG','8807','False northing',1000000.0,'EPSG','9084',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18121','Italy zone 1',NULL,NULL,'EPSG','1718','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',9.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18122','Italy zone 2',NULL,NULL,'EPSG','1719','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',2520000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18131','Nord Maroc',NULL,NULL,'EPSG','1703','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',37.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',-6.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.999625769,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18132','Sud Maroc',NULL,NULL,'EPSG','2787','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',33.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',-6.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.999615596,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18133','Sahara',NULL,NULL,'EPSG','1705','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',29.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',-6.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1200000.0,'EPSG','9001','EPSG','8807','False northing',400000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','18134','Sahara Nord',NULL,NULL,'EPSG','2788','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',29.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',-6.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.999616304,'EPSG','9201','EPSG','8806','False easting',1200000.0,'EPSG','9001','EPSG','8807','False northing',400000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18135','Sahara Sud',NULL,NULL,'EPSG','2789','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',25.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',-6.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.999616437,'EPSG','9201','EPSG','8806','False easting',1500000.0,'EPSG','9001','EPSG','8807','False northing',400000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18141','New Zealand North Island National Grid',NULL,NULL,'EPSG','1500','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-39.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',175.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9040','EPSG','8807','False northing',400000.0,'EPSG','9040',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18142','New Zealand South Island National Grid',NULL,NULL,'EPSG','3344','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-44.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',171.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9040','EPSG','8807','False northing',500000.0,'EPSG','9040',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18151','Nigeria West Belt',NULL,NULL,'EPSG','1715','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',4.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',4.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99975,'EPSG','9201','EPSG','8806','False easting',230738.26,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18152','Nigeria Mid Belt',NULL,NULL,'EPSG','1714','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',4.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',8.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99975,'EPSG','9201','EPSG','8806','False easting',670553.98,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18153','Nigeria East Belt',NULL,NULL,'EPSG','1713','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',4.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',12.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99975,'EPSG','9201','EPSG','8806','False easting',1110369.7,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18161','Peru west zone',NULL,NULL,'EPSG','1753','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-6.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-80.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99983008,'EPSG','9201','EPSG','8806','False easting',222000.0,'EPSG','9001','EPSG','8807','False northing',1426834.743,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18162','Peru central zone',NULL,NULL,'EPSG','1752','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-9.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-76.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99932994,'EPSG','9201','EPSG','8806','False easting',720000.0,'EPSG','9001','EPSG','8807','False northing',1039979.159,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18163','Peru east zone',NULL,NULL,'EPSG','1751','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-9.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-70.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99952992,'EPSG','9201','EPSG','8806','False easting',1324000.0,'EPSG','9001','EPSG','8807','False northing',1040084.558,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18171','Philippines zone I',NULL,NULL,'EPSG','1698','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',117.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18172','Philippines zone II',NULL,NULL,'EPSG','1699','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',119.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18173','Philippines zone III',NULL,NULL,'EPSG','1700','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',121.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18174','Philippines zone IV',NULL,NULL,'EPSG','1701','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',123.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18175','Philippines zone V',NULL,NULL,'EPSG','1702','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',125.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18180','Finland zone 0',NULL,NULL,'EPSG','3092','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',18.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18181','Nord Tunisie',NULL,NULL,'EPSG','1619','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',40.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',11.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.999625544,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18182','Sud Tunisie',NULL,NULL,'EPSG','1620','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',37.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',11.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.999625769,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18183','Finland ETRS-GK19',NULL,NULL,'EPSG','3092','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',19.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18184','Finland ETRS-GK20',NULL,NULL,'EPSG','3093','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',20.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18185','Finland ETRS-GK21',NULL,NULL,'EPSG','3094','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18186','Finland ETRS-GK22',NULL,NULL,'EPSG','3095','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',22.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18187','Finland ETRS-GK23',NULL,NULL,'EPSG','3096','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',23.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18188','Finland ETRS-GK24',NULL,NULL,'EPSG','3097','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',24.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18189','Finland ETRS-GK25',NULL,NULL,'EPSG','3098','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',25.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18190','Finland ETRS-GK26',NULL,NULL,'EPSG','3099','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',26.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18191','Finland zone 1',NULL,NULL,'EPSG','1536','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18192','Finland zone 2',NULL,NULL,'EPSG','1537','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',24.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',2500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18193','Finland Uniform Coordinate System',NULL,NULL,'EPSG','1095','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',27.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',3500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18194','Finland zone 4',NULL,NULL,'EPSG','1539','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',30.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',4500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18195','Finland ETRS-GK27',NULL,NULL,'EPSG','3100','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',27.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18196','Finland ETRS-GK28',NULL,NULL,'EPSG','3101','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',28.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18197','Finland ETRS-GK29',NULL,NULL,'EPSG','3102','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',29.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18198','Finland ETRS-GK30',NULL,NULL,'EPSG','3103','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',30.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18199','Finland ETRS-GK31',NULL,NULL,'EPSG','3104','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',31.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18201','Palestine Grid',NULL,NULL,'EPSG','1356','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',31.4402749,'EPSG','9110','EPSG','8802','Longitude of natural origin',35.124349,'EPSG','9110','EPSG','8806','False easting',170251.555,'EPSG','9001','EPSG','8807','False northing',126867.909,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18202','Palestine Belt',NULL,NULL,'EPSG','1356','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.4402749,'EPSG','9110','EPSG','8802','Longitude of natural origin',35.124349,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',170251.555,'EPSG','9001','EPSG','8807','False northing',1126867.909,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18203','Israeli CS',NULL,NULL,'EPSG','2603','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',31.4402749,'EPSG','9110','EPSG','8802','Longitude of natural origin',35.124349,'EPSG','9110','EPSG','8806','False easting',170251.555,'EPSG','9001','EPSG','8807','False northing',1126867.909,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18204','Israeli TM',NULL,NULL,'EPSG','2603','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',31.4403817,'EPSG','9110','EPSG','8802','Longitude of natural origin',35.1216261,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0000067,'EPSG','9201','EPSG','8806','False easting',219529.584,'EPSG','9001','EPSG','8807','False northing',626907.39,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18205','Finland zone 5',NULL,NULL,'EPSG','3385','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',33.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',5500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18211','Guatemala Norte',NULL,NULL,'EPSG','2120','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',16.49,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99992226,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',292209.579,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18212','Guatemala Sur',NULL,NULL,'EPSG','2121','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',14.54,'EPSG','9110','EPSG','8802','Longitude of natural origin',-90.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99989906,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',325992.681,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18221','NGO zone I',NULL,NULL,'EPSG','1741','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-4.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18222','NGO zone II',NULL,NULL,'EPSG','1742','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-2.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18223','NGO zone III',NULL,NULL,'EPSG','1743','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18224','NGO zone IV',NULL,NULL,'EPSG','1744','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',2.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18225','NGO zone V',NULL,NULL,'EPSG','1745','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',6.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18226','NGO zone VI',NULL,NULL,'EPSG','1746','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',10.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18227','NGO zone VII',NULL,NULL,'EPSG','1747','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',14.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18228','NGO zone VIII',NULL,NULL,'EPSG','1748','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',58.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',18.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18231','India zone I (1975 metres)',NULL,NULL,'EPSG','1676','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',32.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',68.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99878641,'EPSG','9201','EPSG','8806','False easting',2743195.5,'EPSG','9001','EPSG','8807','False northing',914398.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18232','India zone IIa (1975 metres)',NULL,NULL,'EPSG','1677','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',26.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',74.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99878641,'EPSG','9201','EPSG','8806','False easting',2743195.5,'EPSG','9001','EPSG','8807','False northing',914398.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18233','India zone IIIa (1975 metres)',NULL,NULL,'EPSG','1672','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',19.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',80.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99878641,'EPSG','9201','EPSG','8806','False easting',2743195.5,'EPSG','9001','EPSG','8807','False northing',914398.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18234','India zone IVa (1975 metres)',NULL,NULL,'EPSG','1673','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',12.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',80.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99878641,'EPSG','9201','EPSG','8806','False easting',2743195.5,'EPSG','9001','EPSG','8807','False northing',914398.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18235','India zone IIb (1975 metres)',NULL,NULL,'EPSG','1678','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',26.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',90.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99878641,'EPSG','9201','EPSG','8806','False easting',2743195.5,'EPSG','9001','EPSG','8807','False northing',914398.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18236','India zone I (1962 metres)',NULL,NULL,'EPSG','1685','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',32.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',68.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99878641,'EPSG','9201','EPSG','8806','False easting',2743196.4,'EPSG','9001','EPSG','8807','False northing',914398.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18237','India zone IIa (1962 metres)',NULL,NULL,'EPSG','1686','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',26.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',74.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99878641,'EPSG','9201','EPSG','8806','False easting',2743196.4,'EPSG','9001','EPSG','8807','False northing',914398.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18238','India zone IIb (1937 metres)',NULL,NULL,'EPSG','3217','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',26.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',90.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99878641,'EPSG','9201','EPSG','8806','False easting',2743185.69,'EPSG','9001','EPSG','8807','False northing',914395.23,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18240','Libya zone 5',NULL,NULL,'EPSG','1470','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',9.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18241','Libya zone 6',NULL,NULL,'EPSG','1471','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',11.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18242','Libya zone 7',NULL,NULL,'EPSG','1472','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',13.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18243','Libya zone 8',NULL,NULL,'EPSG','1473','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18244','Libya zone 9',NULL,NULL,'EPSG','1474','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',17.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18245','Libya zone 10',NULL,NULL,'EPSG','1475','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',19.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18246','Libya zone 11',NULL,NULL,'EPSG','1476','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18247','Libya zone 12',NULL,NULL,'EPSG','1477','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',23.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18248','Libya zone 13',NULL,NULL,'EPSG','1478','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',25.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18251','Korea East Belt',NULL,NULL,'EPSG','3726','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',129.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18252','Korea Central Belt',NULL,NULL,'EPSG','3716','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',127.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18253','Korea West Belt',NULL,NULL,'EPSG','3713','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',125.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18260','Maracaibo Grid (M1)',NULL,NULL,'EPSG','1319','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',10.1,'EPSG','9110','EPSG','8802','Longitude of natural origin',-71.3620224,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',-52684.972,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18261','Maracaibo Grid',NULL,NULL,'EPSG','1319','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',10.1,'EPSG','9110','EPSG','8802','Longitude of natural origin',-71.3620224,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',147315.028,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18262','Maracaibo Grid (M3)',NULL,NULL,'EPSG','1319','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',10.1,'EPSG','9110','EPSG','8802','Longitude of natural origin',-71.3620224,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',447315.028,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18263','Maracaibo La Rosa Grid',NULL,NULL,'EPSG','1319','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',10.1,'EPSG','9110','EPSG','8802','Longitude of natural origin',-71.3620224,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',-17044.0,'EPSG','9001','EPSG','8807','False northing',-23139.97,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18275','Balkans zone 5',NULL,NULL,'EPSG','1709','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',5500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18276','Balkans zone 6',NULL,NULL,'EPSG','1710','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',18.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',6500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18277','Balkans zone 7',NULL,NULL,'EPSG','1711','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',7500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18278','Balkans zone 8',NULL,NULL,'EPSG','1712','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',24.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',8500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18280','Poland zone I',NULL,NULL,'EPSG','1515','EPSG','9809','Oblique Stereographic','EPSG','8801','Latitude of natural origin',50.373,'EPSG','9110','EPSG','8802','Longitude of natural origin',21.05,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9998,'EPSG','9201','EPSG','8806','False easting',4637000.0,'EPSG','9001','EPSG','8807','False northing',5467000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18281','Poland zone I',NULL,NULL,'EPSG','1515','EPSG','9809','Oblique Stereographic','EPSG','8801','Latitude of natural origin',50.373,'EPSG','9110','EPSG','8802','Longitude of natural origin',21.05,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9998,'EPSG','9201','EPSG','8806','False easting',4637000.0,'EPSG','9001','EPSG','8807','False northing',5647000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','18282','Poland zone II',NULL,NULL,'EPSG','1516','EPSG','9809','Oblique Stereographic','EPSG','8801','Latitude of natural origin',53.0007,'EPSG','9110','EPSG','8802','Longitude of natural origin',21.301,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9998,'EPSG','9201','EPSG','8806','False easting',4603000.0,'EPSG','9001','EPSG','8807','False northing',5806000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18283','Poland zone III',NULL,NULL,'EPSG','1517','EPSG','9809','Oblique Stereographic','EPSG','8801','Latitude of natural origin',53.35,'EPSG','9110','EPSG','8802','Longitude of natural origin',17.003,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9998,'EPSG','9201','EPSG','8806','False easting',3501000.0,'EPSG','9001','EPSG','8807','False northing',5999000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18284','Poland zone IV',NULL,NULL,'EPSG','1518','EPSG','9809','Oblique Stereographic','EPSG','8801','Latitude of natural origin',51.4015,'EPSG','9110','EPSG','8802','Longitude of natural origin',16.402,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9998,'EPSG','9201','EPSG','8806','False easting',3703000.0,'EPSG','9001','EPSG','8807','False northing',5627000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18285','Poland zone V',NULL,NULL,'EPSG','1519','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',18.573,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999983,'EPSG','9201','EPSG','8806','False easting',237000.0,'EPSG','9001','EPSG','8807','False northing',-4700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18286','GUGiK-80',NULL,NULL,'EPSG','1192','EPSG','9809','Oblique Stereographic','EPSG','8801','Latitude of natural origin',52.1,'EPSG','9110','EPSG','8802','Longitude of natural origin',19.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999714,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18300','Poland CS92',NULL,NULL,'EPSG','1192','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',19.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9993,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',-5300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18305','Poland CS2000 zone 5',NULL,NULL,'EPSG','1520','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.999923,'EPSG','9201','EPSG','8806','False easting',5500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18306','Poland CS2000 zone 6',NULL,NULL,'EPSG','1521','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',18.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.999923,'EPSG','9201','EPSG','8806','False easting',6500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18307','Poland CS2000 zone 7',NULL,NULL,'EPSG','1522','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.999923,'EPSG','9201','EPSG','8806','False easting',7500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18308','Poland CS2000 zone 8',NULL,NULL,'EPSG','1523','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',24.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.999923,'EPSG','9201','EPSG','8806','False easting',8500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18310','Libya TM zone 5',NULL,NULL,'EPSG','1470','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',9.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18311','Libya TM zone 6',NULL,NULL,'EPSG','1471','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',11.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18312','Libya TM zone 7',NULL,NULL,'EPSG','1472','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',13.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18313','Libya TM zone 8',NULL,NULL,'EPSG','1473','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18314','Libya TM zone 9',NULL,NULL,'EPSG','1474','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',17.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18315','Libya TM zone 10',NULL,NULL,'EPSG','1475','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',19.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18316','Libya TM zone 11',NULL,NULL,'EPSG','1476','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18317','Libya TM zone 12',NULL,NULL,'EPSG','1477','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',23.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18318','Libya TM zone 13',NULL,NULL,'EPSG','1478','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',25.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18319','Libya TM',NULL,NULL,'EPSG','1143','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',17.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9965,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18401','Kp2000 Jylland og Fyn',NULL,NULL,'EPSG','2531','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',9.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18402','Kp2000 Sjaelland',NULL,NULL,'EPSG','2532','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',12.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99995,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18403','Kp2000 Bornholm',NULL,NULL,'EPSG','2533','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',900000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18411','French West Africa Senegal zone',NULL,NULL,'EPSG','2548','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-13.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18412','French West Africa Ivory Coast zone',NULL,NULL,'EPSG','2549','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-6.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18413','French West Africa Dahomey zone',NULL,NULL,'EPSG','2550','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',0.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18414','French West Africa Niger zone',NULL,NULL,'EPSG','2551','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',7.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18415','French Equatorial Africa west zone',NULL,NULL,'EPSG','2552','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',10.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18416','French Equatorial Africa central zone',NULL,NULL,'EPSG','2553','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',17.4,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18417','French Equatorial Africa east zone',NULL,NULL,'EPSG','2554','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',24.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18421','Greenland zone 1 east',NULL,NULL,'EPSG','2556','EPSG','9826','Lambert Conic Conformal (West Orientated)','EPSG','8801','Latitude of natural origin',82.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-40.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18422','Greenland zone 2 east',NULL,NULL,'EPSG','2557','EPSG','9826','Lambert Conic Conformal (West Orientated)','EPSG','8801','Latitude of natural origin',79.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-24.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18423','Greenland zone 3 east',NULL,NULL,'EPSG','2558','EPSG','9826','Lambert Conic Conformal (West Orientated)','EPSG','8801','Latitude of natural origin',76.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-20.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18424','Greenland zone 4 east',NULL,NULL,'EPSG','2559','EPSG','9826','Lambert Conic Conformal (West Orientated)','EPSG','8801','Latitude of natural origin',73.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-24.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18425','Greenland zone 5 east',NULL,NULL,'EPSG','2560','EPSG','9826','Lambert Conic Conformal (West Orientated)','EPSG','8801','Latitude of natural origin',70.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-24.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18426','Greenland zone 6 east',NULL,NULL,'EPSG','2561','EPSG','9826','Lambert Conic Conformal (West Orientated)','EPSG','8801','Latitude of natural origin',67.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-32.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18427','Greenland zone 7 east',NULL,NULL,'EPSG','2562','EPSG','9826','Lambert Conic Conformal (West Orientated)','EPSG','8801','Latitude of natural origin',64.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-40.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18428','Greenland zone 8 east',NULL,NULL,'EPSG','2569','EPSG','9826','Lambert Conic Conformal (West Orientated)','EPSG','8801','Latitude of natural origin',61.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-48.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18432','Greenland zone 2 west',NULL,NULL,'EPSG','2563','EPSG','9826','Lambert Conic Conformal (West Orientated)','EPSG','8801','Latitude of natural origin',79.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-64.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18433','Greenland zone 3 west',NULL,NULL,'EPSG','2564','EPSG','9826','Lambert Conic Conformal (West Orientated)','EPSG','8801','Latitude of natural origin',76.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-64.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18434','Greenland zone 4 west',NULL,NULL,'EPSG','2565','EPSG','9826','Lambert Conic Conformal (West Orientated)','EPSG','8801','Latitude of natural origin',73.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-52.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18435','Greenland zone 5 west',NULL,NULL,'EPSG','2566','EPSG','9826','Lambert Conic Conformal (West Orientated)','EPSG','8801','Latitude of natural origin',70.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-52.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18436','Greenland zone 6 west',NULL,NULL,'EPSG','2567','EPSG','9826','Lambert Conic Conformal (West Orientated)','EPSG','8801','Latitude of natural origin',67.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-52.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18437','Greenland zone 7 west',NULL,NULL,'EPSG','2568','EPSG','9826','Lambert Conic Conformal (West Orientated)','EPSG','8801','Latitude of natural origin',64.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-52.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18441','CS63 zone A1',NULL,NULL,'EPSG','2772','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.07,'EPSG','9110','EPSG','8802','Longitude of natural origin',41.32,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18442','CS63 zone A2',NULL,NULL,'EPSG','2773','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.07,'EPSG','9110','EPSG','8802','Longitude of natural origin',44.32,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',2300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18443','CS63 zone A3',NULL,NULL,'EPSG','2774','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.07,'EPSG','9110','EPSG','8802','Longitude of natural origin',47.32,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',3300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18444','CS63 zone A4',NULL,NULL,'EPSG','2775','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.07,'EPSG','9110','EPSG','8802','Longitude of natural origin',50.32,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',4300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18446','CS63 zone K2',NULL,NULL,'EPSG','2776','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.08,'EPSG','9110','EPSG','8802','Longitude of natural origin',50.46,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',2300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18447','CS63 zone K3',NULL,NULL,'EPSG','2777','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.08,'EPSG','9110','EPSG','8802','Longitude of natural origin',53.46,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',3300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18448','CS63 zone K4',NULL,NULL,'EPSG','2778','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.08,'EPSG','9110','EPSG','8802','Longitude of natural origin',56.46,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',4300000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18450','CS63 zone C0',NULL,NULL,'EPSG','3173','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.06,'EPSG','9110','EPSG','8802','Longitude of natural origin',21.57,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18451','CS63 zone C1',NULL,NULL,'EPSG','3174','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.06,'EPSG','9110','EPSG','8802','Longitude of natural origin',24.57,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1250000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','18452','CS63 zone C2',NULL,NULL,'EPSG','3175','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.06,'EPSG','9110','EPSG','8802','Longitude of natural origin',27.57,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',2250000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19839','Dubai Local Transverse Mercator',NULL,NULL,'EPSG','3531','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',55.2,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19840','IBCAO Polar Stereographic',NULL,NULL,'EPSG','1996','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',75.0,'EPSG','9102','EPSG','8833','Longitude of origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19841','Swiss Oblique Mercator 1903C (Greenwich)',NULL,NULL,'EPSG','1144','EPSG','9815','Hotine Oblique Mercator (variant B)','EPSG','8811','Latitude of projection centre',46.570866,'EPSG','9110','EPSG','8812','Longitude of projection centre',7.26225,'EPSG','9110','EPSG','8813','Azimuth of initial line',90.0,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',90.0,'EPSG','9110','EPSG','8815','Scale factor on initial line',1.0,'EPSG','9201','EPSG','8816','Easting at projection centre',0.0,'EPSG','9001','EPSG','8817','Northing at projection centre',0.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','19842','Arctic Polar Stereographic',NULL,NULL,'EPSG','1996','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',71.0,'EPSG','9102','EPSG','8833','Longitude of origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19843','Mercator 41',NULL,NULL,'EPSG','3508','EPSG','9805','Mercator (variant B)','EPSG','8823','Latitude of 1st standard parallel',-41.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',100.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19844','Ministry of Transport of Quebec Lambert',NULL,NULL,'EPSG','1368','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',44.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-70.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',50.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',46.0,'EPSG','9102','EPSG','8826','Easting at false origin',800000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19845','Slovene National Grid',NULL,NULL,'EPSG','1212','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',-5000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19846','World Equidistant Cylindrical',NULL,NULL,'EPSG','1262','EPSG','9842','Equidistant Cylindrical','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8822','Longitude of false origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','19847','Popular Visualisation Mercator',NULL,NULL,'EPSG','1262','EPSG','9841','Mercator (1SP) (Spherical)','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','19848','Pitcairn TM 2006',NULL,NULL,'EPSG','3208','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-25.04067894,'EPSG','9110','EPSG','8802','Longitude of natural origin',-130.06466816,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',14200.0,'EPSG','9001','EPSG','8807','False northing',15500.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19849','Bermuda 2000 National Grid',NULL,NULL,'EPSG','1047','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',32.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-64.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',550000.0,'EPSG','9001','EPSG','8807','False northing',100000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19850','EPSG vertical perspective example',NULL,NULL,'EPSG','1263','EPSG','9838','Vertical Perspective','EPSG','8834','Latitude of topocentric origin',55.0,'EPSG','9102','EPSG','8835','Longitude of topocentric origin',5.0,'EPSG','9102','EPSG','8836','Ellipsoidal height of topocentric origin',200.0,'EPSG','9001','EPSG','8840','Viewpoint height',5900.0,'EPSG','9036',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19851','Croatia Transverse Mercator',NULL,NULL,'EPSG','1076','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',16.5,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19852','Croatia Lambert Conformal Conic',NULL,NULL,'EPSG','1076','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',0.0,'EPSG','9102','EPSG','8822','Longitude of false origin',16.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',45.55,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',43.05,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19853','Portugual TM06',NULL,NULL,'EPSG','1294','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.400573,'EPSG','9110','EPSG','8802','Longitude of natural origin',-8.075919,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19854','South Georgia Lambert',NULL,NULL,'EPSG','3529','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-55.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-37.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-54.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-54.45,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19855','Mercator 41',NULL,NULL,'EPSG','3508','EPSG','9804','Mercator (variant A)','EPSG','8801','Latitude of natural origin',-41.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',100.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','19856','TM Reunion',NULL,NULL,'EPSG','3337','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-21.07,'EPSG','9110','EPSG','8802','Longitude of natural origin',55.32,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',160000.0,'EPSG','9001','EPSG','8807','False northing',50000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19857','Northwest Territories Lambert',NULL,NULL,'EPSG','3481','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',0.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-112.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',62.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',70.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19858','Yukon Albers',NULL,NULL,'EPSG','2417','EPSG','9822','Albers Equal Area','EPSG','8821','Latitude of false origin',59.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-132.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',61.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',68.0,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19859','Fiji Map Grid',NULL,NULL,'EPSG','1094','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-17.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',178.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99985,'EPSG','9201','EPSG','8806','False easting',2000000.0,'EPSG','9001','EPSG','8807','False northing',4000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19860','Jamaica Metric Grid 2001',NULL,NULL,'EPSG','3342','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',18.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-77.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',750000.0,'EPSG','9001','EPSG','8807','False northing',650000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19861','Laborde Grid',NULL,NULL,'EPSG','1149','EPSG','9813','Laborde Oblique Mercator','EPSG','8811','Latitude of projection centre',-21.0,'EPSG','9105','EPSG','8812','Longitude of projection centre',49.0,'EPSG','9105','EPSG','8813','Azimuth of initial line',21.0,'EPSG','9105','EPSG','8815','Scale factor on initial line',0.9995,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19862','Belgian Lambert 2005',NULL,NULL,'EPSG','1347','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',50.4752134,'EPSG','9110','EPSG','8822','Longitude of false origin',4.2133177,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',49.5,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',51.1,'EPSG','9110','EPSG','8826','Easting at false origin',150328.0,'EPSG','9001','EPSG','8827','Northing at false origin',166262.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19863','South China Sea Lambert',NULL,NULL,'EPSG','3470','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',21.0,'EPSG','9102','EPSG','8822','Longitude of false origin',114.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',18.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',24.0,'EPSG','9102','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19864','Singapore Transverse Mercator',NULL,NULL,'EPSG','1210','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',1.22,'EPSG','9110','EPSG','8802','Longitude of natural origin',103.5,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',28001.642,'EPSG','9001','EPSG','8807','False northing',38744.572,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19865','US NSIDC Sea Ice polar stereographic north',NULL,NULL,'EPSG','1996','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',70.0,'EPSG','9102','EPSG','8833','Longitude of origin',-45.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19866','US NSIDC Sea Ice polar stereographic south',NULL,NULL,'EPSG','1997','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-70.0,'EPSG','9102','EPSG','8833','Longitude of origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19867','US NSIDC Equal Area north projection',NULL,NULL,'EPSG','1996','EPSG','9821','Lambert Azimuthal Equal Area (Spherical)','EPSG','8828','Spherical latitude of origin',90.0,'EPSG','9102','EPSG','8829','Spherical longitude of origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','19868','US NSIDC Equal Area south projection',NULL,NULL,'EPSG','1997','EPSG','9821','Lambert Azimuthal Equal Area (Spherical)','EPSG','8828','Spherical latitude of origin',-90.0,'EPSG','9102','EPSG','8829','Spherical longitude of origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','19869','US NSIDC Equal Area global projection',NULL,NULL,'EPSG','3463','EPSG','9834','Lambert Cylindrical Equal Area (Spherical)','EPSG','8823','Latitude of 1st standard parallel',30.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19870','Faroe Lambert',NULL,NULL,'EPSG','3248','EPSG','9826','Lambert Conic Conformal (West Orientated)','EPSG','8801','Latitude of natural origin',62.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-9.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19871','Rectified Skew Orthomorphic Malaya Grid (chains)',NULL,NULL,'EPSG','1690','EPSG','9812','Hotine Oblique Mercator (variant A)','EPSG','8811','Latitude of projection centre',4.0,'EPSG','9110','EPSG','8812','Longitude of projection centre',102.15,'EPSG','9110','EPSG','8813','Azimuth of initial line',323.01328458,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',323.07483685,'EPSG','9110','EPSG','8815','Scale factor on initial line',0.99984,'EPSG','9201','EPSG','8806','False easting',40000.0,'EPSG','9301','EPSG','8807','False northing',0.0,'EPSG','9301',0); +INSERT INTO "conversion" VALUES('EPSG','19872','Rectified Skew Orthomorphic Malaya Grid (metres)',NULL,NULL,'EPSG','1690','EPSG','9812','Hotine Oblique Mercator (variant A)','EPSG','8811','Latitude of projection centre',4.0,'EPSG','9110','EPSG','8812','Longitude of projection centre',102.15,'EPSG','9110','EPSG','8813','Azimuth of initial line',323.01328458,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',323.07483685,'EPSG','9110','EPSG','8815','Scale factor on initial line',0.99984,'EPSG','9201','EPSG','8806','False easting',804670.24,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','19873','Noumea Lambert',NULL,NULL,'EPSG','2823','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-22.16108903,'EPSG','9110','EPSG','8822','Longitude of false origin',166.26327327,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',-22.14408903,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-22.17408903,'EPSG','9110','EPSG','8826','Easting at false origin',0.66,'EPSG','9001','EPSG','8827','Northing at false origin',1.02,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19874','Noumea Lambert 2',NULL,NULL,'EPSG','2823','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-22.1611,'EPSG','9110','EPSG','8822','Longitude of false origin',166.2633,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',-22.1441,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-22.1741,'EPSG','9110','EPSG','8826','Easting at false origin',8.313,'EPSG','9001','EPSG','8827','Northing at false origin',-2.354,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19875','Ontario MNR Lambert',NULL,NULL,'EPSG','1367','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',0.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-85.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',44.5,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',53.5,'EPSG','9102','EPSG','8826','Easting at false origin',930000.0,'EPSG','9001','EPSG','8827','Northing at false origin',6430000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19876','ST74',NULL,NULL,'EPSG','3408','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',18.0328044,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99999425,'EPSG','9201','EPSG','8806','False easting',100178.1808,'EPSG','9001','EPSG','8807','False northing',-6500614.7836,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19877','Faroe Lambert fk89',NULL,NULL,'EPSG','3248','EPSG','9826','Lambert Conic Conformal (West Orientated)','EPSG','8801','Latitude of natural origin',62.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-9.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',700000.0,'EPSG','9001','EPSG','8807','False northing',700000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19878','Vanua Levu Grid',NULL,NULL,'EPSG','3401','EPSG','9833','Hyperbolic Cassini-Soldner','EPSG','8801','Latitude of natural origin',-16.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',179.2,'EPSG','9110','EPSG','8806','False easting',1251331.8,'EPSG','9098','EPSG','8807','False northing',1662888.5,'EPSG','9098',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19879','Viti Levu Grid',NULL,NULL,'EPSG','3195','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',-18.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',178.0,'EPSG','9102','EPSG','8806','False easting',544000.0,'EPSG','9098','EPSG','8807','False northing',704000.0,'EPSG','9098',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19880','Fiji Map Grid',NULL,NULL,'EPSG','1094','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-17.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',178.45,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99985,'EPSG','9001','EPSG','8806','False easting',2000000.0,'EPSG','9001','EPSG','8807','False northing',4000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','19881','Alberta 10-degree TM (Forest)',NULL,NULL,'EPSG','2376','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-115.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9992,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19882','Alberta 10-degree TM (Resource)',NULL,NULL,'EPSG','2376','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-115.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9992,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19883','World Mercator',NULL,NULL,'EPSG','3391','EPSG','9804','Mercator (variant A)','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19884','Caspian Sea Mercator',NULL,NULL,'EPSG','1291','EPSG','9805','Mercator (variant B)','EPSG','8823','Latitude of 1st standard parallel',42.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',51.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19885','Kelantan Grid',NULL,NULL,'EPSG','3384','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',5.582115717,'EPSG','9110','EPSG','8802','Longitude of natural origin',102.174287001,'EPSG','9110','EPSG','8806','False easting',13227.851,'EPSG','9001','EPSG','8807','False northing',8739.894,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19886','Perak Grid',NULL,NULL,'EPSG','3383','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',4.513262688,'EPSG','9110','EPSG','8802','Longitude of natural origin',100.485547811,'EPSG','9110','EPSG','8806','False easting',-1.769,'EPSG','9001','EPSG','8807','False northing',133454.779,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19887','Kedah and Perlis Grid',NULL,NULL,'EPSG','3382','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',5.575282177,'EPSG','9110','EPSG','8802','Longitude of natural origin',100.3810936,'EPSG','9110','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19888','Pinang Grid',NULL,NULL,'EPSG','3381','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',5.251746315,'EPSG','9110','EPSG','8802','Longitude of natural origin',100.203975707,'EPSG','9110','EPSG','8806','False easting',-23.414,'EPSG','9001','EPSG','8807','False northing',62.283,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19889','Terengganu Grid',NULL,NULL,'EPSG','3380','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',4.583462672,'EPSG','9110','EPSG','8802','Longitude of natural origin',103.041299225,'EPSG','9110','EPSG','8806','False easting',19594.245,'EPSG','9001','EPSG','8807','False northing',3371.895,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19890','Selangor Grid',NULL,NULL,'EPSG','3379','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',3.410473658,'EPSG','9110','EPSG','8802','Longitude of natural origin',101.232078849,'EPSG','9110','EPSG','8806','False easting',-34836.161,'EPSG','9001','EPSG','8807','False northing',56464.049,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19891','Pahang Grid',NULL,NULL,'EPSG','3378','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',3.460979712,'EPSG','9110','EPSG','8802','Longitude of natural origin',102.220587634,'EPSG','9110','EPSG','8806','False easting',-7368.228,'EPSG','9001','EPSG','8807','False northing',6485.858,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19892','Sembilan and Melaka Grid',NULL,NULL,'EPSG','3377','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',2.405645149,'EPSG','9110','EPSG','8802','Longitude of natural origin',101.582965815,'EPSG','9110','EPSG','8806','False easting',3673.785,'EPSG','9001','EPSG','8807','False northing',-4240.573,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19893','Johor Grid',NULL,NULL,'EPSG','3376','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',2.071804708,'EPSG','9110','EPSG','8802','Longitude of natural origin',103.254057045,'EPSG','9110','EPSG','8806','False easting',-14810.562,'EPSG','9001','EPSG','8807','False northing',8758.32,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19894','Borneo RSO',NULL,NULL,'EPSG','1362','EPSG','9812','Hotine Oblique Mercator (variant A)','EPSG','8811','Latitude of projection centre',4.0,'EPSG','9110','EPSG','8812','Longitude of projection centre',115.0,'EPSG','9110','EPSG','8813','Azimuth of initial line',53.185691582,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',53.07483685,'EPSG','9110','EPSG','8815','Scale factor on initial line',0.99984,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','19895','Peninsular RSO',NULL,NULL,'EPSG','3955','EPSG','9812','Hotine Oblique Mercator (variant A)','EPSG','8811','Latitude of projection centre',4.0,'EPSG','9110','EPSG','8812','Longitude of projection centre',102.15,'EPSG','9110','EPSG','8813','Azimuth of initial line',323.013286728,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',323.07483685,'EPSG','9110','EPSG','8815','Scale factor on initial line',0.99984,'EPSG','9201','EPSG','8806','False easting',804671.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','19896','Hong Kong 1963 Grid',NULL,NULL,'EPSG','1118','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',22.184368,'EPSG','9110','EPSG','8802','Longitude of natural origin',114.10428,'EPSG','9110','EPSG','8806','False easting',132033.92,'EPSG','9005','EPSG','8807','False northing',62565.96,'EPSG','9005',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19897','Statistics Canada Lambert',NULL,NULL,'EPSG','1061','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',63.390675,'EPSG','9102','EPSG','8822','Longitude of false origin',-91.52,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',49.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',77.0,'EPSG','9102','EPSG','8826','Easting at false origin',6200000.0,'EPSG','9001','EPSG','8827','Northing at false origin',3000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19898','Pacific Disaster Center Mercator',NULL,NULL,'EPSG','3172','EPSG','9804','Mercator (variant A)','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-150.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','19899','Mauritius Grid',NULL,NULL,'EPSG','3209','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',-20.114225,'EPSG','9110','EPSG','8802','Longitude of natural origin',57.311858,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1000000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19900','Bahrain State Grid',NULL,NULL,'EPSG','1040','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',51.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19901','Belge Lambert 50',NULL,NULL,'EPSG','1347','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',90.0,'EPSG','9110','EPSG','8822','Longitude of false origin',0.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',49.5,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',51.1,'EPSG','9110','EPSG','8826','Easting at false origin',150000.0,'EPSG','9001','EPSG','8827','Northing at false origin',5400000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19902','Belge Lambert 72',NULL,NULL,'EPSG','1347','EPSG','9803','Lambert Conic Conformal (2SP Belgium)','EPSG','8821','Latitude of false origin',90.0,'EPSG','9110','EPSG','8822','Longitude of false origin',4.2124983,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',49.5,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',51.1,'EPSG','9110','EPSG','8826','Easting at false origin',150000.01256,'EPSG','9001','EPSG','8827','Northing at false origin',5400088.4378,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19903','Nord de Guerre',NULL,NULL,'EPSG','1369','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',55.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',6.0,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.99950908,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19904','Ghana Metre Grid',NULL,NULL,'EPSG','1104','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',4.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-1.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99975,'EPSG','9201','EPSG','8806','False easting',274319.51,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19905','Netherlands East Indies Equatorial Zone',NULL,NULL,'EPSG','4020','EPSG','9804','Mercator (variant A)','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',110.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.997,'EPSG','9201','EPSG','8806','False easting',3900000.0,'EPSG','9001','EPSG','8807','False northing',900000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19906','Iraq zone',NULL,NULL,'EPSG','2294','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',32.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',45.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9987864078,'EPSG','9201','EPSG','8806','False easting',1500000.0,'EPSG','9001','EPSG','8807','False northing',1166200.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19907','Iraq National Grid',NULL,NULL,'EPSG','3625','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',29.0134566,'EPSG','9110','EPSG','8802','Longitude of natural origin',46.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9994,'EPSG','9201','EPSG','8806','False easting',800000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19908','Irish National Grid',NULL,NULL,'EPSG','1305','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',53.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-8.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000035,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',250000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','19909','Jamaica (Old Grid)',NULL,NULL,'EPSG','3342','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',18.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-77.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',550000.0,'EPSG','9005','EPSG','8807','False northing',400000.0,'EPSG','9005',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19910','Jamaica National Grid',NULL,NULL,'EPSG','3342','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',18.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-77.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',250000.0,'EPSG','9001','EPSG','8807','False northing',150000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19911','Laborde Grid approximation',NULL,NULL,'EPSG','1149','EPSG','9815','Hotine Oblique Mercator (variant B)','EPSG','8811','Latitude of projection centre',-21.0,'EPSG','9105','EPSG','8812','Longitude of projection centre',49.0,'EPSG','9105','EPSG','8813','Azimuth of initial line',21.0,'EPSG','9105','EPSG','8814','Angle from Rectified to Skew Grid',21.0,'EPSG','9105','EPSG','8815','Scale factor on initial line',0.9995,'EPSG','9201','EPSG','8816','Easting at projection centre',400000.0,'EPSG','9001','EPSG','8817','Northing at projection centre',800000.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','19913','RD Old',NULL,NULL,'EPSG','1275','EPSG','9809','Oblique Stereographic','EPSG','8801','Latitude of natural origin',52.0922178,'EPSG','9110','EPSG','8802','Longitude of natural origin',5.23155,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999079,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19914','RD New',NULL,NULL,'EPSG','1275','EPSG','9809','Oblique Stereographic','EPSG','8801','Latitude of natural origin',52.0922178,'EPSG','9110','EPSG','8802','Longitude of natural origin',5.23155,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999079,'EPSG','9201','EPSG','8806','False easting',155000.0,'EPSG','9001','EPSG','8807','False northing',463000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19915','Aden Zone',NULL,NULL,'EPSG','3332','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',15.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',45.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.999365678,'EPSG','9201','EPSG','8806','False easting',1500000.0,'EPSG','9001','EPSG','8807','False northing',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19916','British National Grid',NULL,NULL,'EPSG','4390','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',49.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-2.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996012717,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',-100000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19917','New Zealand Map Grid',NULL,NULL,'EPSG','3973','EPSG','9811','New Zealand Map Grid','EPSG','8801','Latitude of natural origin',-41.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',173.0,'EPSG','9102','EPSG','8806','False easting',2510000.0,'EPSG','9001','EPSG','8807','False northing',6023150.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19919','Qatar National Grid',NULL,NULL,'EPSG','1195','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',24.27,'EPSG','9110','EPSG','8802','Longitude of natural origin',51.13,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99999,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19920','Singapore Grid',NULL,NULL,'EPSG','1210','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',1.1715528,'EPSG','9110','EPSG','8802','Longitude of natural origin',103.5110808,'EPSG','9110','EPSG','8806','False easting',30000.0,'EPSG','9001','EPSG','8807','False northing',30000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19921','Spain',NULL,NULL,'EPSG','2366','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',40.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9988085293,'EPSG','9201','EPSG','8806','False easting',600000.0,'EPSG','9001','EPSG','8807','False northing',600000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19922','Swiss Oblique Mercator 1903M',NULL,NULL,'EPSG','1286','EPSG','9815','Hotine Oblique Mercator (variant B)','EPSG','8811','Latitude of projection centre',46.570866,'EPSG','9110','EPSG','8812','Longitude of projection centre',7.26225,'EPSG','9110','EPSG','8813','Azimuth of initial line',90.0,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',90.0,'EPSG','9110','EPSG','8815','Scale factor on initial line',1.0,'EPSG','9201','EPSG','8816','Easting at projection centre',600000.0,'EPSG','9001','EPSG','8817','Northing at projection centre',200000.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','19923','Swiss Oblique Mercator 1903C',NULL,NULL,'EPSG','1286','EPSG','9815','Hotine Oblique Mercator (variant B)','EPSG','8811','Latitude of projection centre',46.570866,'EPSG','9110','EPSG','8812','Longitude of projection centre',0.0,'EPSG','9110','EPSG','8813','Azimuth of initial line',90.0,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',90.0,'EPSG','9110','EPSG','8815','Scale factor on initial line',1.0,'EPSG','9201','EPSG','8816','Easting at projection centre',0.0,'EPSG','9001','EPSG','8817','Northing at projection centre',0.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','19924','Tobago Grid',NULL,NULL,'EPSG','1322','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',11.1507843,'EPSG','9110','EPSG','8802','Longitude of natural origin',-60.4109632,'EPSG','9110','EPSG','8806','False easting',187500.0,'EPSG','9039','EPSG','8807','False northing',180000.0,'EPSG','9039',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19925','Trinidad Grid',NULL,NULL,'EPSG','1339','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',10.263,'EPSG','9110','EPSG','8802','Longitude of natural origin',-61.2,'EPSG','9110','EPSG','8806','False easting',430000.0,'EPSG','9039','EPSG','8807','False northing',325000.0,'EPSG','9039',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19926','Stereo 70',NULL,NULL,'EPSG','1197','EPSG','9809','Oblique Stereographic','EPSG','8801','Latitude of natural origin',46.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',25.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99975,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19927','Stereo 33',NULL,NULL,'EPSG','1197','EPSG','9809','Oblique Stereographic','EPSG','8801','Latitude of natural origin',45.54,'EPSG','9110','EPSG','8802','Longitude of natural origin',25.23328772,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9996667,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19928','Kuwait TM',NULL,NULL,'EPSG','1310','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',48.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','19929','Sweden zone 2.5 gon V',NULL,NULL,'EPSG','2847','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',15.48298,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',1500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19930','Greek Grid',NULL,NULL,'EPSG','3254','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',24.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19931','Egyseges Orszagos Vetuleti',NULL,NULL,'EPSG','1119','EPSG','9815','Hotine Oblique Mercator (variant B)','EPSG','8811','Latitude of projection centre',47.08398174,'EPSG','9110','EPSG','8812','Longitude of projection centre',19.02548584,'EPSG','9110','EPSG','8813','Azimuth of initial line',90.0,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',90.0,'EPSG','9110','EPSG','8815','Scale factor on initial line',0.99993,'EPSG','9201','EPSG','8816','Easting at projection centre',650000.0,'EPSG','9001','EPSG','8817','Northing at projection centre',200000.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','19933','Prince Edward Island Stereographic (ATS77)',NULL,NULL,'EPSG','1533','EPSG','9809','Oblique Stereographic','EPSG','8801','Latitude of natural origin',47.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-63.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999912,'EPSG','9201','EPSG','8806','False easting',700000.0,'EPSG','9001','EPSG','8807','False northing',400000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19934','Lithuania 1994',NULL,NULL,'EPSG','1145','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',24.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9998,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19935','Rectified Skew Orthomorphic Malaya Grid',NULL,NULL,'EPSG','1690','EPSG','9812','Hotine Oblique Mercator (variant A)','EPSG','8811','Latitude of projection centre',4.0,'EPSG','9110','EPSG','8812','Longitude of projection centre',102.15,'EPSG','9110','EPSG','8813','Azimuth of initial line',323.01328458,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',323.07483685,'EPSG','9110','EPSG','8815','Scale factor on initial line',0.99984,'EPSG','9201','EPSG','8806','False easting',40000.0,'EPSG','9062','EPSG','8807','False northing',0.0,'EPSG','9062',1); +INSERT INTO "conversion" VALUES('EPSG','19936','Portuguese National Grid',NULL,NULL,'EPSG','1294','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',1.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19937','Tunisia Mining Grid',NULL,NULL,'EPSG','1618','EPSG','9816','Tunisia Mining Grid','EPSG','8821','Latitude of false origin',36.5964,'EPSG','9105','EPSG','8822','Longitude of false origin',7.83445,'EPSG','9105','EPSG','8826','Easting at false origin',270.0,'EPSG','9036','EPSG','8827','Northing at false origin',360.0,'EPSG','9036',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19938','Estonian National Grid',NULL,NULL,'EPSG','1090','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',57.310319415,'EPSG','9110','EPSG','8822','Longitude of false origin',24.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',59.2,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',58.0,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',6375000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19939','TM Baltic 93',NULL,NULL,'EPSG','1646','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',24.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19940','Levant Zone',NULL,NULL,'EPSG','1623','EPSG','9817','Lambert Conic Near-Conformal','EPSG','8801','Latitude of natural origin',34.39,'EPSG','9110','EPSG','8802','Longitude of natural origin',37.21,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9996256,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19941','Brazil Polyconic',NULL,NULL,'EPSG','1053','EPSG','9818','American Polyconic','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-54.0,'EPSG','9102','EPSG','8806','False easting',5000000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19942','British West Indies Grid',NULL,NULL,'EPSG','2295','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-62.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9995,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19943','Barbados National Grid',NULL,NULL,'EPSG','3218','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',13.1035,'EPSG','9110','EPSG','8802','Longitude of natural origin',-59.3335,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999986,'EPSG','9201','EPSG','8806','False easting',30000.0,'EPSG','9001','EPSG','8807','False northing',75000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19944','Quebec Lambert Projection',NULL,NULL,'EPSG','1368','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',44.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-68.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',60.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',46.0,'EPSG','9110','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19945','New Brunswick Stereographic (ATS77)',NULL,NULL,'EPSG','1447','EPSG','9809','Oblique Stereographic','EPSG','8801','Latitude of natural origin',46.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-66.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999912,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19946','New Brunswick Stereographic (NAD83)',NULL,NULL,'EPSG','1447','EPSG','9809','Oblique Stereographic','EPSG','8801','Latitude of natural origin',46.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-66.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999912,'EPSG','9201','EPSG','8806','False easting',2500000.0,'EPSG','9001','EPSG','8807','False northing',7500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19947','Austria Lambert',NULL,NULL,'EPSG','1037','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',47.3,'EPSG','9110','EPSG','8822','Longitude of false origin',13.2,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',49.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',46.0,'EPSG','9110','EPSG','8826','Easting at false origin',400000.0,'EPSG','9001','EPSG','8827','Northing at false origin',400000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19948','Syria Lambert',NULL,NULL,'EPSG','1623','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',34.39,'EPSG','9110','EPSG','8802','Longitude of natural origin',37.21,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9996256,'EPSG','9201','EPSG','8806','False easting',300000.0,'EPSG','9001','EPSG','8807','False northing',300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19949','Levant Stereographic',NULL,NULL,'EPSG','1623','EPSG','9809','Oblique Stereographic','EPSG','8801','Latitude of natural origin',38.0,'EPSG','9105','EPSG','8802','Longitude of natural origin',43.5,'EPSG','9105','EPSG','8805','Scale factor at natural origin',0.9995341,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19950','Swiss Oblique Mercator 1995',NULL,NULL,'EPSG','1286','EPSG','9815','Hotine Oblique Mercator (variant B)','EPSG','8811','Latitude of projection centre',46.570866,'EPSG','9110','EPSG','8812','Longitude of projection centre',7.26225,'EPSG','9110','EPSG','8813','Azimuth of initial line',90.0,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',90.0,'EPSG','9110','EPSG','8815','Scale factor on initial line',1.0,'EPSG','9201','EPSG','8816','Easting at projection centre',2600000.0,'EPSG','9001','EPSG','8817','Northing at projection centre',1200000.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','19951','Nakhl e Taqi Oblique Mercator',NULL,NULL,'EPSG','1338','EPSG','9815','Hotine Oblique Mercator (variant B)','EPSG','8811','Latitude of projection centre',27.31077837,'EPSG','9110','EPSG','8812','Longitude of projection centre',52.3612741,'EPSG','9110','EPSG','8813','Azimuth of initial line',0.34179803,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',0.34179803,'EPSG','9110','EPSG','8815','Scale factor on initial line',0.999895934,'EPSG','9201','EPSG','8816','Easting at projection centre',658377.437,'EPSG','9001','EPSG','8817','Northing at projection centre',3044969.194,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','19952','Krovak',NULL,NULL,'EPSG','1306','EPSG','9819','Krovak','EPSG','8811','Latitude of projection centre',49.3,'EPSG','9110','EPSG','8833','Longitude of origin',42.3,'EPSG','9110','EPSG','1036','Co-latitude of cone axis',30.171730311,'EPSG','9110','EPSG','8818','Latitude of pseudo standard parallel',78.3,'EPSG','9110','EPSG','8819','Scale factor on pseudo standard parallel',0.9999,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','19953','Qatar Grid',NULL,NULL,'EPSG','1346','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',25.22565,'EPSG','9110','EPSG','8802','Longitude of natural origin',50.4541,'EPSG','9110','EPSG','8806','False easting',100000.0,'EPSG','9001','EPSG','8807','False northing',100000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19954','Suriname Old TM',NULL,NULL,'EPSG','1222','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-55.41,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19955','Suriname TM',NULL,NULL,'EPSG','1222','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-55.41,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19956','Rectified Skew Orthomorphic Borneo Grid (chains)',NULL,NULL,'EPSG','1362','EPSG','9815','Hotine Oblique Mercator (variant B)','EPSG','8811','Latitude of projection centre',4.0,'EPSG','9110','EPSG','8812','Longitude of projection centre',115.0,'EPSG','9110','EPSG','8813','Azimuth of initial line',53.18569537,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',53.07483685,'EPSG','9110','EPSG','8815','Scale factor on initial line',0.99984,'EPSG','9201','EPSG','8816','Easting at projection centre',29352.4763,'EPSG','9042','EPSG','8817','Northing at projection centre',22014.3572,'EPSG','9042',0); +INSERT INTO "conversion" VALUES('EPSG','19957','Rectified Skew Orthomorphic Borneo Grid (feet)',NULL,NULL,'EPSG','1851','EPSG','9815','Hotine Oblique Mercator (variant B)','EPSG','8811','Latitude of projection centre',4.0,'EPSG','9110','EPSG','8812','Longitude of projection centre',115.0,'EPSG','9110','EPSG','8813','Azimuth of initial line',53.18569537,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',53.07483685,'EPSG','9110','EPSG','8815','Scale factor on initial line',0.99984,'EPSG','9201','EPSG','8816','Easting at projection centre',1937263.44,'EPSG','9041','EPSG','8817','Northing at projection centre',1452947.58,'EPSG','9041',0); +INSERT INTO "conversion" VALUES('EPSG','19958','Rectified Skew Orthomorphic Borneo Grid (metres)',NULL,NULL,'EPSG','1362','EPSG','9815','Hotine Oblique Mercator (variant B)','EPSG','8811','Latitude of projection centre',4.0,'EPSG','9110','EPSG','8812','Longitude of projection centre',115.0,'EPSG','9110','EPSG','8813','Azimuth of initial line',53.18569537,'EPSG','9110','EPSG','8814','Angle from Rectified to Skew Grid',53.07483685,'EPSG','9110','EPSG','8815','Scale factor on initial line',0.99984,'EPSG','9201','EPSG','8816','Easting at projection centre',590476.87,'EPSG','9001','EPSG','8817','Northing at projection centre',442857.65,'EPSG','9001',0); +INSERT INTO "conversion" VALUES('EPSG','19959','Ghana National Grid',NULL,NULL,'EPSG','1104','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',4.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-1.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99975,'EPSG','9201','EPSG','8806','False easting',900000.0,'EPSG','9094','EPSG','8807','False northing',0.0,'EPSG','9094',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19960','Prince Edward Isl. Stereographic (NAD83)',NULL,NULL,'EPSG','1533','EPSG','9809','Oblique Stereographic','EPSG','8801','Latitude of natural origin',47.15,'EPSG','9110','EPSG','8802','Longitude of natural origin',-63.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999912,'EPSG','9201','EPSG','8806','False easting',400000.0,'EPSG','9001','EPSG','8807','False northing',800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19961','Belgian Lambert 72',NULL,NULL,'EPSG','1347','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',90.0,'EPSG','9110','EPSG','8822','Longitude of false origin',4.2202952,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',51.100000204,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',49.500000204,'EPSG','9110','EPSG','8826','Easting at false origin',150000.013,'EPSG','9001','EPSG','8827','Northing at false origin',5400088.438,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19962','Irish Transverse Mercator',NULL,NULL,'EPSG','1305','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',53.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-8.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.99982,'EPSG','9201','EPSG','8806','False easting',600000.0,'EPSG','9001','EPSG','8807','False northing',750000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19963','Sierra Leone New Colony Grid',NULL,NULL,'EPSG','1342','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',6.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-12.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9094','EPSG','8807','False northing',0.0,'EPSG','9094',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19964','New War Office Sierra Leone Grid',NULL,NULL,'EPSG','1342','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',6.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-12.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',800000.0,'EPSG','9094','EPSG','8807','False northing',600000.0,'EPSG','9094',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19965','US National Atlas Equal Area',NULL,NULL,'EPSG','1245','EPSG','9821','Lambert Azimuthal Equal Area (Spherical)','EPSG','8828','Spherical latitude of origin',45.0,'EPSG','9102','EPSG','8829','Spherical longitude of origin',-100.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','19966','Luxembourg Gauss',NULL,NULL,'EPSG','1146','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',49.5,'EPSG','9110','EPSG','8802','Longitude of natural origin',6.1,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',80000.0,'EPSG','9001','EPSG','8807','False northing',100000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19967','Slovenia Grid',NULL,NULL,'EPSG','1212','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',15.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.9999,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19968','World Equidistant Cylindrical (Sphere)',NULL,NULL,'EPSG','1262','EPSG','9823','Equidistant Cylindrical (Spherical)','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','19969','Portuguese Grid',NULL,NULL,'EPSG','1294','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',1.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19971','New Zealand Transverse Mercator 2000',NULL,NULL,'EPSG','3973','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',173.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',1600000.0,'EPSG','9001','EPSG','8807','False northing',10000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19972','Irish Grid',NULL,NULL,'EPSG','1305','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',53.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-8.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.000035,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',250000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19973','Irish National Grid',NULL,NULL,'EPSG','2530','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',53.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-8.0,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',200000.0,'EPSG','9001','EPSG','8807','False northing',250000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19974','Modified Portuguese Grid',NULL,NULL,'EPSG','1294','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',39.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',-8.0754862,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',180.598,'EPSG','9001','EPSG','8807','False northing',-86.99,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19975','Trinidad Grid (Clarke''s feet)',NULL,NULL,'EPSG','1339','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',10.263,'EPSG','9110','EPSG','8802','Longitude of natural origin',-61.2,'EPSG','9110','EPSG','8806','False easting',283800.0,'EPSG','9005','EPSG','8807','False northing',214500.0,'EPSG','9005',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19976','ICN Regional',NULL,NULL,'EPSG','1251','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',6.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-66.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',9.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',3.0,'EPSG','9102','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',1000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19977','Aramco Lambert',NULL,NULL,'EPSG','3303','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',25.0522236,'EPSG','9110','EPSG','8822','Longitude of false origin',48.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',17.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',33.0,'EPSG','9102','EPSG','8826','Easting at false origin',0.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19978','Hong Kong 1980 Grid',NULL,NULL,'EPSG','1118','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',22.184368,'EPSG','9110','EPSG','8802','Longitude of natural origin',114.10428,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',836694.05,'EPSG','9001','EPSG','8807','False northing',819069.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19979','Portugal Bonne',NULL,NULL,'EPSG','1294','EPSG','9828','Bonne (South Orientated)','EPSG','8801','Latitude of natural origin',39.4,'EPSG','9110','EPSG','8802','Longitude of natural origin',1.0,'EPSG','9110','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19981','Lambert New Caledonia',NULL,NULL,'EPSG','3430','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-21.3,'EPSG','9110','EPSG','8822','Longitude of false origin',166.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',-20.4,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-22.2,'EPSG','9110','EPSG','8826','Easting at false origin',400000.0,'EPSG','9001','EPSG','8827','Northing at false origin',300000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19982','TM Reunion',NULL,NULL,'EPSG','1196','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',-21.07,'EPSG','9110','EPSG','8802','Longitude of natural origin',55.32,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',160000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "conversion" VALUES('EPSG','19983','Terre Adelie Polar Stereographic',NULL,NULL,'EPSG','2818','EPSG','9830','Polar Stereographic (variant C)','EPSG','8832','Latitude of standard parallel',-67.0,'EPSG','9102','EPSG','8833','Longitude of origin',140.0,'EPSG','9102','EPSG','8826','Easting at false origin',300000.0,'EPSG','9001','EPSG','8827','Northing at false origin',200000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19984','British Columbia Albers',NULL,NULL,'EPSG','2832','EPSG','9822','Albers Equal Area','EPSG','8821','Latitude of false origin',45.0,'EPSG','9102','EPSG','8822','Longitude of false origin',-126.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',50.0,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',58.3,'EPSG','9110','EPSG','8826','Easting at false origin',1000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19985','Europe Conformal 2001',NULL,NULL,'EPSG','2881','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',52.0,'EPSG','9102','EPSG','8822','Longitude of false origin',10.0,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',35.0,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',65.0,'EPSG','9102','EPSG','8826','Easting at false origin',4000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',2800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19986','Europe Equal Area 2001',NULL,NULL,'EPSG','2881','EPSG','9820','Lambert Azimuthal Equal Area','EPSG','8801','Latitude of natural origin',52.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',10.0,'EPSG','9102','EPSG','8806','False easting',4321000.0,'EPSG','9001','EPSG','8807','False northing',3210000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19987','Iceland Lambert 1900',NULL,NULL,'EPSG','3262','EPSG','9826','Lambert Conic Conformal (West Orientated)','EPSG','8801','Latitude of natural origin',65.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-19.011965,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19988','Iceland Lambert 1955',NULL,NULL,'EPSG','3262','EPSG','9826','Lambert Conic Conformal (West Orientated)','EPSG','8801','Latitude of natural origin',65.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',-18.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19989','Iceland Lambert 1993',NULL,NULL,'EPSG','1120','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',65.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-19.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',64.15,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',65.45,'EPSG','9110','EPSG','8826','Easting at false origin',500000.0,'EPSG','9001','EPSG','8827','Northing at false origin',500000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19990','Latvian Transverse Mercator',NULL,NULL,'EPSG','1139','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',24.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9996,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',-6000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19991','Jan Mayen Grid',NULL,NULL,'EPSG','2869','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9110','EPSG','8802','Longitude of natural origin',-8.3,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',50000.0,'EPSG','9001','EPSG','8807','False northing',-7800000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19992','Antarctic Polar Stereographic',NULL,NULL,'EPSG','1031','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-71.0,'EPSG','9102','EPSG','8833','Longitude of origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19993','Australian Antarctic Polar Stereographic',NULL,NULL,'EPSG','1278','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-71.0,'EPSG','9102','EPSG','8833','Longitude of origin',70.0,'EPSG','9102','EPSG','8806','False easting',6000000.0,'EPSG','9001','EPSG','8807','False northing',6000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19994','Australian Antarctic Lambert',NULL,NULL,'EPSG','2880','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-50.0,'EPSG','9110','EPSG','8822','Longitude of false origin',70.0,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',-68.3,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',-74.3,'EPSG','9110','EPSG','8826','Easting at false origin',6000000.0,'EPSG','9001','EPSG','8827','Northing at false origin',6000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19995','Jordan Transverse Mercator',NULL,NULL,'EPSG','1130','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',37.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9998,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',-3000000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19996','Soldner Berlin',NULL,NULL,'EPSG','2898','EPSG','9806','Cassini-Soldner','EPSG','8801','Latitude of natural origin',52.25071338,'EPSG','9110','EPSG','8802','Longitude of natural origin',13.37379332,'EPSG','9110','EPSG','8806','False easting',40000.0,'EPSG','9001','EPSG','8807','False northing',10000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19997','Kuwait Transverse Mercator',NULL,NULL,'EPSG','1310','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',48.0,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.0,'EPSG','9201','EPSG','8806','False easting',500000.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19998','Guernsey Grid',NULL,NULL,'EPSG','2989','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',49.3,'EPSG','9110','EPSG','8802','Longitude of natural origin',-2.25,'EPSG','9110','EPSG','8805','Scale factor at natural origin',0.999997,'EPSG','9201','EPSG','8806','False easting',47000.0,'EPSG','9001','EPSG','8807','False northing',50000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "conversion" VALUES('EPSG','19999','Jersey Transverse Mercator',NULL,NULL,'EPSG','2988','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',49.225,'EPSG','9102','EPSG','8802','Longitude of natural origin',-2.135,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.9999999,'EPSG','9201','EPSG','8806','False easting',40000.0,'EPSG','9001','EPSG','8807','False northing',70000.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); diff --git a/data/sql/conversion_triggers.sql b/data/sql/conversion_triggers.sql new file mode 100644 index 00000000..86eb1afd --- /dev/null +++ b/data/sql/conversion_triggers.sql @@ -0,0 +1,165 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +CREATE TRIGGER conversion_method_check_insert_trigger +BEFORE INSERT ON conversion +FOR EACH ROW BEGIN + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Conic Conformal (2SP)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9802' AND (NEW.method_name != 'Lambert Conic Conformal (2SP)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8821' OR NEW.param1_name != 'Latitude of false origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8822' OR NEW.param2_name != 'Longitude of false origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8823' OR NEW.param3_name != 'Latitude of 1st standard parallel' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8824' OR NEW.param4_name != 'Latitude of 2nd standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8826' OR NEW.param5_name != 'Easting at false origin' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8827' OR NEW.param6_name != 'Northing at false origin' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Transverse Mercator') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9807' AND (NEW.method_name != 'Transverse Mercator' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Mercator (variant A)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9804' AND (NEW.method_name != 'Mercator (variant A)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Popular Visualisation Pseudo Mercator') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1024' AND (NEW.method_name != 'Popular Visualisation Pseudo Mercator' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Azimuthal Equal Area (Spherical)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1027' AND (NEW.method_name != 'Lambert Azimuthal Equal Area (Spherical)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Equidistant Cylindrical') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1028' AND (NEW.method_name != 'Equidistant Cylindrical' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8823' OR NEW.param1_name != 'Latitude of 1st standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Equidistant Cylindrical (Spherical)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1029' AND (NEW.method_name != 'Equidistant Cylindrical (Spherical)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8823' OR NEW.param1_name != 'Latitude of 1st standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Cassini-Soldner') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9806' AND (NEW.method_name != 'Cassini-Soldner' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Bonne (South Orientated)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9828' AND (NEW.method_name != 'Bonne (South Orientated)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Albers Equal Area') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9822' AND (NEW.method_name != 'Albers Equal Area' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8821' OR NEW.param1_name != 'Latitude of false origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8822' OR NEW.param2_name != 'Longitude of false origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8823' OR NEW.param3_name != 'Latitude of 1st standard parallel' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8824' OR NEW.param4_name != 'Latitude of 2nd standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8826' OR NEW.param5_name != 'Easting at false origin' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8827' OR NEW.param6_name != 'Northing at false origin' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Krovak (North Orientated)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1041' AND (NEW.method_name != 'Krovak (North Orientated)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8833' OR NEW.param2_name != 'Longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '1036' OR NEW.param3_name != 'Co-latitude of cone axis' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8818' OR NEW.param4_name != 'Latitude of pseudo standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8819' OR NEW.param5_name != 'Scale factor on pseudo standard parallel' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8806' OR NEW.param6_name != 'False easting' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8807' OR NEW.param7_name != 'False northing' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length'); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Krovak Modified') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1042' AND (NEW.method_name != 'Krovak Modified' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8833' OR NEW.param2_name != 'Longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '1036' OR NEW.param3_name != 'Co-latitude of cone axis' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8818' OR NEW.param4_name != 'Latitude of pseudo standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8819' OR NEW.param5_name != 'Scale factor on pseudo standard parallel' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8806' OR NEW.param6_name != 'False easting' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8807' OR NEW.param7_name != 'False northing' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length'); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Krovak Modified (North Orientated)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1043' AND (NEW.method_name != 'Krovak Modified (North Orientated)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8833' OR NEW.param2_name != 'Longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '1036' OR NEW.param3_name != 'Co-latitude of cone axis' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8818' OR NEW.param4_name != 'Latitude of pseudo standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8819' OR NEW.param5_name != 'Scale factor on pseudo standard parallel' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8806' OR NEW.param6_name != 'False easting' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8807' OR NEW.param7_name != 'False northing' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length'); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Conic Conformal (1SP)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9801' AND (NEW.method_name != 'Lambert Conic Conformal (1SP)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for American Polyconic') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9818' AND (NEW.method_name != 'American Polyconic' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Polar Stereographic (variant A)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9810' AND (NEW.method_name != 'Polar Stereographic (variant A)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Krovak') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9819' AND (NEW.method_name != 'Krovak' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8833' OR NEW.param2_name != 'Longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '1036' OR NEW.param3_name != 'Co-latitude of cone axis' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8818' OR NEW.param4_name != 'Latitude of pseudo standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8819' OR NEW.param5_name != 'Scale factor on pseudo standard parallel' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8806' OR NEW.param6_name != 'False easting' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8807' OR NEW.param7_name != 'False northing' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length'); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Oblique Stereographic') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9809' AND (NEW.method_name != 'Oblique Stereographic' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Mercator (variant B)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9805' AND (NEW.method_name != 'Mercator (variant B)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8823' OR NEW.param1_name != 'Latitude of 1st standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Polar Stereographic (variant B)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9829' AND (NEW.method_name != 'Polar Stereographic (variant B)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8832' OR NEW.param1_name != 'Latitude of standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8833' OR NEW.param2_name != 'Longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Conic Conformal (2SP Michigan)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1051' AND (NEW.method_name != 'Lambert Conic Conformal (2SP Michigan)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8821' OR NEW.param1_name != 'Latitude of false origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8822' OR NEW.param2_name != 'Longitude of false origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8823' OR NEW.param3_name != 'Latitude of 1st standard parallel' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8824' OR NEW.param4_name != 'Latitude of 2nd standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8826' OR NEW.param5_name != 'Easting at false origin' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8827' OR NEW.param6_name != 'Northing at false origin' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '1038' OR NEW.param7_name != 'Ellipsoid scaling factor' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'scale'); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Colombia Urban') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1052' AND (NEW.method_name != 'Colombia Urban' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '1039' OR NEW.param5_name != 'Projection plane origin height' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Hotine Oblique Mercator (variant A)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9812' AND (NEW.method_name != 'Hotine Oblique Mercator (variant A)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8812' OR NEW.param2_name != 'Longitude of projection centre' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8813' OR NEW.param3_name != 'Azimuth of initial line' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8814' OR NEW.param4_name != 'Angle from Rectified to Skew Grid' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8815' OR NEW.param5_name != 'Scale factor on initial line' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8806' OR NEW.param6_name != 'False easting' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8807' OR NEW.param7_name != 'False northing' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length'); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Cylindrical Equal Area') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9835' AND (NEW.method_name != 'Lambert Cylindrical Equal Area' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8823' OR NEW.param1_name != 'Latitude of 1st standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Azimuthal Equal Area') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9820' AND (NEW.method_name != 'Lambert Azimuthal Equal Area' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Height Depth Reversal') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1068' AND (NEW.method_name != 'Height Depth Reversal' OR NEW.param1_auth_name IS NOT NULL OR NEW.param1_code IS NOT NULL OR NEW.param1_name IS NOT NULL OR NEW.param1_value IS NOT NULL OR NEW.param1_uom_auth_name IS NOT NULL OR NEW.param1_uom_code IS NOT NULL OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Change of Vertical Unit') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1069' AND (NEW.method_name != 'Change of Vertical Unit' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '1051' OR NEW.param1_name != 'Unit conversion scalar' OR (NOT((NEW.param1_value IS NULL AND NEW.param1_uom_auth_name IS NULL AND NEW.param1_uom_code IS NULL) OR (NEW.param1_value IS NOT NULL AND (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) = 'scale'))) OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Hotine Oblique Mercator (variant B)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9815' AND (NEW.method_name != 'Hotine Oblique Mercator (variant B)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8812' OR NEW.param2_name != 'Longitude of projection centre' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8813' OR NEW.param3_name != 'Azimuth of initial line' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8814' OR NEW.param4_name != 'Angle from Rectified to Skew Grid' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8815' OR NEW.param5_name != 'Scale factor on initial line' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8816' OR NEW.param6_name != 'Easting at projection centre' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8817' OR NEW.param7_name != 'Northing at projection centre' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length'); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Laborde Oblique Mercator') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9813' AND (NEW.method_name != 'Laborde Oblique Mercator' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8812' OR NEW.param2_name != 'Longitude of projection centre' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8813' OR NEW.param3_name != 'Azimuth of initial line' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8815' OR NEW.param4_name != 'Scale factor on initial line' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'scale' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8806' OR NEW.param5_name != 'False easting' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8807' OR NEW.param6_name != 'False northing' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Equal Earth') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1078' AND (NEW.method_name != 'Equal Earth' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8802' OR NEW.param1_name != 'Longitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8806' OR NEW.param2_name != 'False easting' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'length' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8807' OR NEW.param3_name != 'False northing' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Modified Azimuthal Equidistant') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9832' AND (NEW.method_name != 'Modified Azimuthal Equidistant' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Guam Projection') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9831' AND (NEW.method_name != 'Guam Projection' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Axis Order Reversal (2D)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9843' AND (NEW.method_name != 'Axis Order Reversal (2D)' OR NEW.param1_auth_name IS NOT NULL OR NEW.param1_code IS NOT NULL OR NEW.param1_name IS NOT NULL OR NEW.param1_value IS NOT NULL OR NEW.param1_uom_auth_name IS NOT NULL OR NEW.param1_uom_code IS NOT NULL OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Axis Order Reversal (Geographic3D horizontal)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9844' AND (NEW.method_name != 'Axis Order Reversal (Geographic3D horizontal)' OR NEW.param1_auth_name IS NOT NULL OR NEW.param1_code IS NOT NULL OR NEW.param1_name IS NOT NULL OR NEW.param1_value IS NOT NULL OR NEW.param1_uom_auth_name IS NOT NULL OR NEW.param1_uom_code IS NOT NULL OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Geographic/geocentric conversions') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9602' AND (NEW.method_name != 'Geographic/geocentric conversions' OR NEW.param1_auth_name IS NOT NULL OR NEW.param1_code IS NOT NULL OR NEW.param1_name IS NOT NULL OR NEW.param1_value IS NOT NULL OR NEW.param1_uom_auth_name IS NOT NULL OR NEW.param1_uom_code IS NOT NULL OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Geographic3D to 2D conversion') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9659' AND (NEW.method_name != 'Geographic3D to 2D conversion' OR NEW.param1_auth_name IS NOT NULL OR NEW.param1_code IS NOT NULL OR NEW.param1_name IS NOT NULL OR NEW.param1_value IS NOT NULL OR NEW.param1_uom_auth_name IS NOT NULL OR NEW.param1_uom_code IS NOT NULL OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Geographic/topocentric conversions') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9837' AND (NEW.method_name != 'Geographic/topocentric conversions' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8834' OR NEW.param1_name != 'Latitude of topocentric origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8835' OR NEW.param2_name != 'Longitude of topocentric origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8836' OR NEW.param3_name != 'Ellipsoidal height of topocentric origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Geocentric/topocentric conversions') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9836' AND (NEW.method_name != 'Geocentric/topocentric conversions' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8837' OR NEW.param1_name != 'Geocentric X of topocentric origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'length' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8838' OR NEW.param2_name != 'Geocentric Y of topocentric origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'length' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8839' OR NEW.param3_name != 'Geocentric Z of topocentric origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Transverse Mercator Zoned Grid System') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9824' AND (NEW.method_name != 'Transverse Mercator Zoned Grid System' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8830' OR NEW.param2_name != 'Initial longitude' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8831' OR NEW.param3_name != 'Zone width' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8805' OR NEW.param4_name != 'Scale factor at natural origin' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'scale' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8806' OR NEW.param5_name != 'False easting' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8807' OR NEW.param6_name != 'False northing' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Transverse Mercator (South Orientated)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9808' AND (NEW.method_name != 'Transverse Mercator (South Orientated)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Conic Conformal (West Orientated)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9826' AND (NEW.method_name != 'Lambert Conic Conformal (West Orientated)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Equidistant Cylindrical') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9842' AND (NEW.method_name != 'Equidistant Cylindrical' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8822' OR NEW.param2_name != 'Longitude of false origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Mercator (1SP) (Spherical)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9841' AND (NEW.method_name != 'Mercator (1SP) (Spherical)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Vertical Perspective') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9838' AND (NEW.method_name != 'Vertical Perspective' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8834' OR NEW.param1_name != 'Latitude of topocentric origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8835' OR NEW.param2_name != 'Longitude of topocentric origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8836' OR NEW.param3_name != 'Ellipsoidal height of topocentric origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8840' OR NEW.param4_name != 'Viewpoint height' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Azimuthal Equal Area (Spherical)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9821' AND (NEW.method_name != 'Lambert Azimuthal Equal Area (Spherical)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8828' OR NEW.param1_name != 'Spherical latitude of origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8829' OR NEW.param2_name != 'Spherical longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Cylindrical Equal Area (Spherical)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9834' AND (NEW.method_name != 'Lambert Cylindrical Equal Area (Spherical)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8823' OR NEW.param1_name != 'Latitude of 1st standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Hyperbolic Cassini-Soldner') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9833' AND (NEW.method_name != 'Hyperbolic Cassini-Soldner' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Conic Conformal (2SP Belgium)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9803' AND (NEW.method_name != 'Lambert Conic Conformal (2SP Belgium)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8821' OR NEW.param1_name != 'Latitude of false origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8822' OR NEW.param2_name != 'Longitude of false origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8823' OR NEW.param3_name != 'Latitude of 1st standard parallel' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8824' OR NEW.param4_name != 'Latitude of 2nd standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8826' OR NEW.param5_name != 'Easting at false origin' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8827' OR NEW.param6_name != 'Northing at false origin' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for New Zealand Map Grid') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9811' AND (NEW.method_name != 'New Zealand Map Grid' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Tunisia Mining Grid') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9816' AND (NEW.method_name != 'Tunisia Mining Grid' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8821' OR NEW.param1_name != 'Latitude of false origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8822' OR NEW.param2_name != 'Longitude of false origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8826' OR NEW.param3_name != 'Easting at false origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8827' OR NEW.param4_name != 'Northing at false origin' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Conic Near-Conformal') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9817' AND (NEW.method_name != 'Lambert Conic Near-Conformal' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Equidistant Cylindrical (Spherical)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9823' AND (NEW.method_name != 'Equidistant Cylindrical (Spherical)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Polar Stereographic (variant C)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9830' AND (NEW.method_name != 'Polar Stereographic (variant C)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8832' OR NEW.param1_name != 'Latitude of standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8833' OR NEW.param2_name != 'Longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8826' OR NEW.param3_name != 'Easting at false origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8827' OR NEW.param4_name != 'Northing at false origin' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); +END; diff --git a/data/sql/coordinate_system.sql b/data/sql/coordinate_system.sql new file mode 100644 index 00000000..1e893f65 --- /dev/null +++ b/data/sql/coordinate_system.sql @@ -0,0 +1,132 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +INSERT INTO "coordinate_system" VALUES('EPSG','1024','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','1025','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','1026','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','1027','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','1028','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','1029','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','1030','vertical',1); +INSERT INTO "coordinate_system" VALUES('EPSG','1031','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','1032','Cartesian',3); +INSERT INTO "coordinate_system" VALUES('EPSG','1033','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','1034','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','1035','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','1036','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','1037','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','1038','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','1039','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','1040','Cartesian',3); +INSERT INTO "coordinate_system" VALUES('EPSG','1041','Cartesian',3); +INSERT INTO "coordinate_system" VALUES('EPSG','1042','Cartesian',3); +INSERT INTO "coordinate_system" VALUES('EPSG','1043','vertical',1); +INSERT INTO "coordinate_system" VALUES('EPSG','1044','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','1045','Cartesian',3); +INSERT INTO "coordinate_system" VALUES('EPSG','4400','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4401','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4402','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4403','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4404','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4405','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4406','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4407','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4408','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4409','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4410','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4460','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4461','Cartesian',3); +INSERT INTO "coordinate_system" VALUES('EPSG','4462','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4463','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4464','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4465','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4466','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4467','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4468','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4469','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4470','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4471','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4472','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4473','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4474','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4475','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4476','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4477','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4478','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4479','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4480','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4481','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4482','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4483','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4484','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4485','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4486','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4487','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4488','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4489','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4490','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4491','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4492','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4493','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4494','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4495','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4496','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4497','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4498','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4499','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4500','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4501','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4502','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4530','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4531','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4532','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4533','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','4534','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6401','ellipsoidal',3); +INSERT INTO "coordinate_system" VALUES('EPSG','6402','ellipsoidal',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6403','ellipsoidal',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6404','spherical',3); +INSERT INTO "coordinate_system" VALUES('EPSG','6405','ellipsoidal',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6406','ellipsoidal',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6407','ellipsoidal',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6408','ellipsoidal',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6409','ellipsoidal',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6410','ellipsoidal',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6411','ellipsoidal',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6412','ellipsoidal',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6413','ellipsoidal',3); +INSERT INTO "coordinate_system" VALUES('EPSG','6414','ellipsoidal',3); +INSERT INTO "coordinate_system" VALUES('EPSG','6415','ellipsoidal',3); +INSERT INTO "coordinate_system" VALUES('EPSG','6416','ellipsoidal',3); +INSERT INTO "coordinate_system" VALUES('EPSG','6417','ellipsoidal',3); +INSERT INTO "coordinate_system" VALUES('EPSG','6418','ellipsoidal',3); +INSERT INTO "coordinate_system" VALUES('EPSG','6419','ellipsoidal',3); +INSERT INTO "coordinate_system" VALUES('EPSG','6420','ellipsoidal',3); +INSERT INTO "coordinate_system" VALUES('EPSG','6421','ellipsoidal',3); +INSERT INTO "coordinate_system" VALUES('EPSG','6422','ellipsoidal',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6423','ellipsoidal',3); +INSERT INTO "coordinate_system" VALUES('EPSG','6424','ellipsoidal',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6425','ellipsoidal',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6426','ellipsoidal',3); +INSERT INTO "coordinate_system" VALUES('EPSG','6427','ellipsoidal',3); +INSERT INTO "coordinate_system" VALUES('EPSG','6428','ellipsoidal',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6429','ellipsoidal',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6430','ellipsoidal',3); +INSERT INTO "coordinate_system" VALUES('EPSG','6431','ellipsoidal',3); +INSERT INTO "coordinate_system" VALUES('EPSG','6495','vertical',1); +INSERT INTO "coordinate_system" VALUES('EPSG','6496','vertical',1); +INSERT INTO "coordinate_system" VALUES('EPSG','6497','vertical',1); +INSERT INTO "coordinate_system" VALUES('EPSG','6498','vertical',1); +INSERT INTO "coordinate_system" VALUES('EPSG','6499','vertical',1); +INSERT INTO "coordinate_system" VALUES('EPSG','6500','Cartesian',3); +INSERT INTO "coordinate_system" VALUES('EPSG','6501','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6502','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6503','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6504','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6505','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6506','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6507','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6508','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6509','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6510','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6511','Cartesian',2); +INSERT INTO "coordinate_system" VALUES('EPSG','6512','Cartesian',3); diff --git a/data/sql/customizations.sql b/data/sql/customizations.sql new file mode 100644 index 00000000..2181cc2b --- /dev/null +++ b/data/sql/customizations.sql @@ -0,0 +1,8 @@ +-- This file is hand generated. + +INSERT INTO "geodetic_crs" VALUES('OGC','CRS84','WGS 84 (CRS84)',NULL,NULL,'geographic 2D','EPSG','6424','EPSG','6326','EPSG','1262',NULL,0); + +INSERT INTO "other_transformation" VALUES('PROJ','CRS84_TO_EPSG_4326','OGC:CRS84 to WGS 84',NULL,NULL,'EPSG','9843','Axis Order Reversal (2D)','OGC','CRS84','EPSG','4326','EPSG','1262',0.0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +-- alias of EPSG:3857 +INSERT INTO "projected_crs" VALUES('EPSG','900913','Google Maps Global Mercator',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','3856','EPSG','3544',NULL,1); diff --git a/data/sql/ellipsoid.sql b/data/sql/ellipsoid.sql new file mode 100644 index 00000000..660914a5 --- /dev/null +++ b/data/sql/ellipsoid.sql @@ -0,0 +1,57 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +INSERT INTO "ellipsoid" VALUES('EPSG','1024','CGCS2000',NULL,'PROJ','EARTH',6378137.0,'EPSG','9001',298.257222101,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','1025','GSK-2011',NULL,'PROJ','EARTH',6378136.5,'EPSG','9001',298.2564151,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','1026','Zach 1812',NULL,'PROJ','EARTH',6376045.0,'EPSG','9001',310.0,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7001','Airy 1830',NULL,'PROJ','EARTH',6377563.396,'EPSG','9001',299.3249646,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7002','Airy Modified 1849',NULL,'PROJ','EARTH',6377340.189,'EPSG','9001',299.3249646,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7003','Australian National Spheroid',NULL,'PROJ','EARTH',6378160.0,'EPSG','9001',298.25,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7004','Bessel 1841',NULL,'PROJ','EARTH',6377397.155,'EPSG','9001',299.1528128,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7005','Bessel Modified',NULL,'PROJ','EARTH',6377492.018,'EPSG','9001',299.1528128,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7006','Bessel Namibia',NULL,'PROJ','EARTH',6377483.865,'EPSG','9001',299.1528128,NULL,1); +INSERT INTO "ellipsoid" VALUES('EPSG','7007','Clarke 1858',NULL,'PROJ','EARTH',20926348.0,'EPSG','9005',NULL,20855233.0,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7008','Clarke 1866',NULL,'PROJ','EARTH',6378206.4,'EPSG','9001',NULL,6356583.8,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7009','Clarke 1866 Michigan',NULL,'PROJ','EARTH',20926631.531,'EPSG','9003',NULL,20855688.674,1); +INSERT INTO "ellipsoid" VALUES('EPSG','7010','Clarke 1880 (Benoit)',NULL,'PROJ','EARTH',6378300.789,'EPSG','9001',NULL,6356566.435,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7011','Clarke 1880 (IGN)',NULL,'PROJ','EARTH',6378249.2,'EPSG','9001',NULL,6356515.0,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7012','Clarke 1880 (RGS)',NULL,'PROJ','EARTH',6378249.145,'EPSG','9001',293.465,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7013','Clarke 1880 (Arc)',NULL,'PROJ','EARTH',6378249.145,'EPSG','9001',293.4663077,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7014','Clarke 1880 (SGA 1922)',NULL,'PROJ','EARTH',6378249.2,'EPSG','9001',293.46598,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7015','Everest 1830 (1937 Adjustment)',NULL,'PROJ','EARTH',6377276.345,'EPSG','9001',300.8017,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7016','Everest 1830 (1967 Definition)',NULL,'PROJ','EARTH',6377298.556,'EPSG','9001',300.8017,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7018','Everest 1830 Modified',NULL,'PROJ','EARTH',6377304.063,'EPSG','9001',300.8017,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7019','GRS 1980',NULL,'PROJ','EARTH',6378137.0,'EPSG','9001',298.257222101,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7020','Helmert 1906',NULL,'PROJ','EARTH',6378200.0,'EPSG','9001',298.3,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7021','Indonesian National Spheroid',NULL,'PROJ','EARTH',6378160.0,'EPSG','9001',298.247,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7022','International 1924',NULL,'PROJ','EARTH',6378388.0,'EPSG','9001',297.0,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7024','Krassowsky 1940',NULL,'PROJ','EARTH',6378245.0,'EPSG','9001',298.3,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7025','NWL 9D',NULL,'PROJ','EARTH',6378145.0,'EPSG','9001',298.25,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7027','Plessis 1817',NULL,'PROJ','EARTH',6376523.0,'EPSG','9001',308.64,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7028','Struve 1860',NULL,'PROJ','EARTH',6378298.3,'EPSG','9001',294.73,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7029','War Office',NULL,'PROJ','EARTH',6378300.0,'EPSG','9001',296.0,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7030','WGS 84',NULL,'PROJ','EARTH',6378137.0,'EPSG','9001',298.257223563,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7031','GEM 10C',NULL,'PROJ','EARTH',6378137.0,'EPSG','9001',298.257223563,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7032','OSU86F',NULL,'PROJ','EARTH',6378136.2,'EPSG','9001',298.257223563,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7033','OSU91A',NULL,'PROJ','EARTH',6378136.3,'EPSG','9001',298.257223563,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7034','Clarke 1880',NULL,'PROJ','EARTH',20926202.0,'EPSG','9005',NULL,20854895.0,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7035','Sphere',NULL,'PROJ','EARTH',6371000.0,'EPSG','9001',NULL,6371000.0,1); +INSERT INTO "ellipsoid" VALUES('EPSG','7036','GRS 1967',NULL,'PROJ','EARTH',6378160.0,'EPSG','9001',298.247167427,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7041','Average Terrestrial System 1977',NULL,'PROJ','EARTH',6378135.0,'EPSG','9001',298.257,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7042','Everest (1830 Definition)',NULL,'PROJ','EARTH',20922931.8,'EPSG','9080',NULL,20853374.58,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7043','WGS 72',NULL,'PROJ','EARTH',6378135.0,'EPSG','9001',298.26,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7044','Everest 1830 (1962 Definition)',NULL,'PROJ','EARTH',6377301.243,'EPSG','9001',300.8017255,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7045','Everest 1830 (1975 Definition)',NULL,'PROJ','EARTH',6377299.151,'EPSG','9001',300.8017255,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7046','Bessel Namibia (GLM)',NULL,'PROJ','EARTH',6377397.155,'EPSG','9031',299.1528128,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7047','GRS 1980 Authalic Sphere',NULL,'PROJ','EARTH',6370997.0,'EPSG','9001',NULL,6370997.0,1); +INSERT INTO "ellipsoid" VALUES('EPSG','7048','GRS 1980 Authalic Sphere',NULL,'PROJ','EARTH',6371007.0,'EPSG','9001',NULL,6371007.0,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7049','IAG 1975',NULL,'PROJ','EARTH',6378140.0,'EPSG','9001',298.257,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7050','GRS 1967 Modified',NULL,'PROJ','EARTH',6378160.0,'EPSG','9001',298.25,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7051','Danish 1876',NULL,'PROJ','EARTH',6377019.27,'EPSG','9001',300.0,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7052','Clarke 1866 Authalic Sphere',NULL,'PROJ','EARTH',6370997.0,'EPSG','9001',NULL,6370997.0,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7053','Hough 1960',NULL,'PROJ','EARTH',6378270.0,'EPSG','9001',297.0,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7054','PZ-90',NULL,'PROJ','EARTH',6378136.0,'EPSG','9001',298.257839303,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7055','Clarke 1880 (international foot)',NULL,'PROJ','EARTH',20926202.0,'EPSG','9002',NULL,20854895.0,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7056','Everest 1830 (RSO 1969)',NULL,'PROJ','EARTH',6377295.664,'EPSG','9001',300.8017,NULL,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7057','International 1924 Authalic Sphere',NULL,'PROJ','EARTH',6371228.0,'EPSG','9001',NULL,6371228.0,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7058','Hughes 1980',NULL,'PROJ','EARTH',6378273.0,'EPSG','9001',NULL,6356889.449,0); +INSERT INTO "ellipsoid" VALUES('EPSG','7059','Popular Visualisation Sphere',NULL,'PROJ','EARTH',6378137.0,'EPSG','9001',NULL,6378137.0,1); diff --git a/data/sql/esri.sql b/data/sql/esri.sql new file mode 100644 index 00000000..d3d44c97 --- /dev/null +++ b/data/sql/esri.sql @@ -0,0 +1,10309 @@ +--- This file has been generated by scripts/build_db_from_esri.py. DO NOT EDIT ! + +INSERT INTO "metadata" VALUES('ESRI.VERSION', 'ArcMap 10.6.1 / ArcGISPro 2.2'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','1025','Millimeter','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','1033','Centimeter','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9001','Meter','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9002','Foot','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9003','Foot_US','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9005','Foot_Clarke','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9014','Fathom','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9030','Nautical_Mile','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9031','Meter_German','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9033','Chain_US','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9034','Link_US','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9035','Mile_US','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9036','Kilometer','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9037','Yard_Clarke','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9038','Chain_Clarke','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9039','Link_Clarke','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9040','Yard_Sears','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9041','Foot_Sears','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9042','Chain_Sears','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9043','Link_Sears','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9050','Yard_Benoit_1895_A','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9051','Foot_Benoit_1895_A','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9052','Chain_Benoit_1895_A','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9053','Link_Benoit_1895_A','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9060','Yard_Benoit_1895_B','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9061','Foot_Benoit_1895_B','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9062','Chain_Benoit_1895_B','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9063','Link_Benoit_1895_B','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9070','Foot_1865','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9080','Foot_Indian','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9081','Foot_Indian_1937','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9082','Foot_Indian_1962','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9083','Foot_Indian_1975','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9084','Yard_Indian','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9085','Yard_Indian_1937','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9086','Yard_Indian_1962','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9087','Yard_Indian_1975','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9093','Statute_Mile','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9094','Foot_Gold_Coast','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9095','Foot_British_1936','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9096','Yard','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9097','Chain','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9098','Link','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9099','Yard_Sears_1922_Truncated','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9300','Foot_Sears_1922_Truncated','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9301','Chain_Sears_1922_Truncated','ESRI'); +INSERT INTO alias_name VALUES('unit_of_measure','EPSG','9302','Link_Sears_1922_Truncated','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','1026','Zach_1812','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7001','Airy_1830','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7002','Airy_Modified','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7003','Australian','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7004','Bessel_1841','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7005','Bessel_Modified','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7006','Bessel_Namibia','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7007','Clarke_1858','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7008','Clarke_1866','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7009','Clarke_1866_Michigan','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7010','Clarke_1880_Benoit','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7011','Clarke_1880_IGN','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7012','Clarke_1880_RGS','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7013','Clarke_1880_Arc','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7014','Clarke_1880_SGA','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7015','Everest_Adjustment_1937','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7016','Everest_Definition_1967','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7018','Everest_1830_Modified','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7019','GRS_1980','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7020','Helmert_1906','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7021','Indonesian','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7022','International_1924','ESRI'); +INSERT INTO ellipsoid VALUES('ESRI','7023','International_1967','International 1967','PROJ','EARTH',6378160.0,'EPSG','9001',298.25,NULL,0); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7024','Krasovsky_1940','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7025','NWL_9D','ESRI'); +INSERT INTO ellipsoid VALUES('ESRI','7026','NWL_10D','NWL-10D == WGS 1972','PROJ','EARTH',6378135.0,'EPSG','9001',298.26,NULL,0); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7027','Plessis_1817','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7028','Struve_1860','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7029','War_Office','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7030','WGS_1984','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7031','GEM_10C','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7032','OSU_86F','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7033','OSU_91A','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7034','Clarke_1880','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7036','GRS_1967','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7041','ATS_1977','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7042','Everest_1830','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7043','WGS_1972','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7044','Everest_Definition_1962','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7045','Everest_Definition_1975','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7048','Sphere_GRS_1980_Authalic','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7049','Xian_1980','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7050','GRS_1967_Truncated','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7051','Danish_1876','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7052','Sphere_Clarke_1866_Authalic','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7053','Hough_1960','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7054','PZ_1990','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7055','Clarke_1880_Intl_Ft','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7056','Everest_Modified_1969','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7057','Sphere_International_1924_Authalic','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7058','Hughes_1980','ESRI'); +INSERT INTO alias_name VALUES('ellipsoid','EPSG','7059','WGS_1984_Major_Auxiliary_Sphere','ESRI'); +INSERT INTO ellipsoid VALUES('ESRI','107001','WGS_1966','WGS 1966','PROJ','EARTH',6378145.0,'EPSG','9001',298.25,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107002','Fischer_1960','Fischer 1960','PROJ','EARTH',6378166.0,'EPSG','9001',298.3,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107003','Fischer_1968','Fischer 1968','PROJ','EARTH',6378150.0,'EPSG','9001',298.3,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107004','Fischer_Modified','Fischer modified','PROJ','EARTH',6378155.0,'EPSG','9001',298.3,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','7053','Hough_1960','Hough 1960','PROJ','EARTH',6378270.0,'EPSG','9001',297.0,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','7056','Everest_Modified_1969','Everest modified 1969 - 107006, called Everest 1830 (RSO 1969) in EPSG','PROJ','EARTH',6377295.664,'EPSG','9001',300.8017,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107007','Walbeck','Walbeck','PROJ','EARTH',6376896.0,'EPSG','9001',302.78,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107008','Sphere_ARC_INFO','Authalic sphere (ARC/INFO)','PROJ','EARTH',6370997.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107009','Sphere_EMEP','EMEP Sphere of 6370000 m','PROJ','EARTH',6370000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','7050','GRS_1967_Truncated','GRS 1967 Truncated - was 107036, called GRS67 Modified in EPSG','PROJ','EARTH',6378160.0,'EPSG','9001',298.25,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','7059','WGS_1984_Major_Auxiliary_Sphere','Major auxiliary sphere based on WGS 1984','PROJ','EARTH',6378137.0,'EPSG','9001',0.0,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','1024','CGCS2000','China Geodetic Coordinate System 2000','PROJ','EARTH',6378137.0,'EPSG','9001',298.257222101,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107047','Sphere_GRS_1980_Mean_Radius','Sphere with mean radius based on GRS80','PROJ','EARTH',6371008.7714,'EPSG','9001',0.0,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107700','S_GRS_1980_Adj_MN_Anoka','GRS 1980 Adj. Minnesota Anoka','PROJ','EARTH',6378418.941,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107701','S_GRS_1980_Adj_MN_Becker','GRS 1980 Adj. Minnesota Becker','PROJ','EARTH',6378586.581,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107702','S_GRS_1980_Adj_MN_Beltrami_North','GRS 1980 Adj. Minnesota Beltrami North','PROJ','EARTH',6378505.809,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107703','S_GRS_1980_Adj_MN_Beltrami_South','GRS 1980 Adj. Minnesota Beltrami South','PROJ','EARTH',6378544.823,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107704','S_GRS_1980_Adj_MN_Benton','GRS 1980 Adj. Minnesota Benton','PROJ','EARTH',6378490.569,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107705','S_GRS_1980_Adj_MN_Big_Stone','GRS 1980 Adj. Minnesota Big Stone','PROJ','EARTH',6378470.757,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107706','S_GRS_1980_Adj_MN_Blue_Earth','GRS 1980 Adj. Minnesota Blue Earth','PROJ','EARTH',6378403.701,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107707','S_GRS_1980_Adj_MN_Brown','GRS 1980 Adj. Minnesota Brown','PROJ','EARTH',6378434.181,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107708','S_GRS_1980_Adj_MN_Carlton','GRS 1980 Adj. Minnesota Carlton','PROJ','EARTH',6378454.907,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107709','S_GRS_1980_Adj_MN_Carver','GRS 1980 Adj. Minnesota Carver','PROJ','EARTH',6378400.653,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107710','S_GRS_1980_Adj_MN_Cass_North','GRS 1980 Adj. Minnesota Cass North','PROJ','EARTH',6378567.378,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107711','S_GRS_1980_Adj_MN_Cass_South','GRS 1980 Adj. Minnesota Cass South','PROJ','EARTH',6378546.957,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107712','S_GRS_1980_Adj_MN_Chippewa','GRS 1980 Adj. Minnesota Chippewa','PROJ','EARTH',6378476.853,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107713','S_GRS_1980_Adj_MN_Chisago','GRS 1980 Adj. Minnesota Chisago','PROJ','EARTH',6378411.321,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107714','S_GRS_1980_Adj_MN_Cook_North','GRS 1980 Adj. Minnesota Cook North','PROJ','EARTH',6378647.541,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107715','S_GRS_1980_Adj_MN_Cook_South','GRS 1980 Adj. Minnesota Cook South','PROJ','EARTH',6378647.541,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107716','S_GRS_1980_Adj_MN_Cottonwood','GRS 1980 Adj. Minnesota Cottonwood','PROJ','EARTH',6378514.953,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107717','S_GRS_1980_Adj_MN_Crow_Wing','GRS 1980 Adj. Minnesota Crow Wing','PROJ','EARTH',6378546.957,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107718','S_GRS_1980_Adj_MN_Dakota','GRS 1980 Adj. Minnesota Dakota','PROJ','EARTH',6378421.989,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107719','S_GRS_1980_Adj_MN_Dodge','GRS 1980 Adj. Minnesota Dodge','PROJ','EARTH',6378481.425,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107720','S_GRS_1980_Adj_MN_Douglas','GRS 1980 Adj. Minnesota Douglas','PROJ','EARTH',6378518.001,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107721','S_GRS_1980_Adj_MN_Faribault','GRS 1980 Adj. Minnesota Faribault','PROJ','EARTH',6378521.049,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107722','S_GRS_1980_Adj_MN_Fillmore','GRS 1980 Adj. Minnesota Fillmore','PROJ','EARTH',6378464.661,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107723','S_GRS_1980_Adj_MN_Freeborn','GRS 1980 Adj. Minnesota Freeborn','PROJ','EARTH',6378521.049,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107724','S_GRS_1980_Adj_MN_Goodhue','GRS 1980 Adj. Minnesota Goodhue','PROJ','EARTH',6378434.181,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107725','S_GRS_1980_Adj_MN_Grant','GRS 1980 Adj. Minnesota Grant','PROJ','EARTH',6378518.001,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107726','S_GRS_1980_Adj_MN_Hennepin','GRS 1980 Adj. Minnesota Hennepin','PROJ','EARTH',6378418.941,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107727','S_GRS_1980_Adj_MN_Houston','GRS 1980 Adj. Minnesota Houston','PROJ','EARTH',6378436.619,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107728','S_GRS_1980_Adj_MN_Isanti','GRS 1980 Adj. Minnesota Isanti','PROJ','EARTH',6378411.321,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107729','S_GRS_1980_Adj_MN_Itasca_North','GRS 1980 Adj. Minnesota Itasca North','PROJ','EARTH',6378574.389,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107730','S_GRS_1980_Adj_MN_Itasca_South','GRS 1980 Adj. Minnesota Itasca South','PROJ','EARTH',6378574.389,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107731','S_GRS_1980_Adj_MN_Jackson','GRS 1980 Adj. Minnesota Jackson','PROJ','EARTH',6378521.049,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107732','S_GRS_1980_Adj_MN_Kanabec','GRS 1980 Adj. Minnesota Kanabec','PROJ','EARTH',6378472.281,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107733','S_GRS_1980_Adj_MN_Kandiyohi','GRS 1980 Adj. Minnesota Kandiyohi','PROJ','EARTH',6378498.189,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107734','S_GRS_1980_Adj_MN_Kittson','GRS 1980 Adj. Minnesota Kittson','PROJ','EARTH',6378449.421,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107735','S_GRS_1980_Adj_MN_Koochiching','GRS 1980 Adj. Minnesota Koochiching','PROJ','EARTH',6378525.621,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107736','S_GRS_1980_Adj_MN_Lac_Qui_Parle','GRS 1980 Adj. Minnesota Lac Qui Parle','PROJ','EARTH',6378476.853,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107737','S_GRS_1980_Adj_MN_Lake_of_the_Woods_North','GRS 1980 Adj. Minnesota Lake of the Woods North','PROJ','EARTH',6378466.185,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107738','S_GRS_1980_Adj_MN_Lake_of_the_Woods_South','GRS 1980 Adj. Minnesota Lake of the Woods South','PROJ','EARTH',6378496.665,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107739','S_GRS_1980_Adj_MN_Le_Sueur','GRS 1980 Adj. Minnesota Le Sueur','PROJ','EARTH',6378434.181,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107740','S_GRS_1980_Adj_MN_Lincoln','GRS 1980 Adj. Minnesota Lincoln','PROJ','EARTH',6378643.579,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107741','S_GRS_1980_Adj_MN_Lyon','GRS 1980 Adj. Minnesota Lyon','PROJ','EARTH',6378559.758,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107742','S_GRS_1980_Adj_MN_McLeod','GRS 1980 Adj. Minnesota McLeod','PROJ','EARTH',6378414.369,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107743','S_GRS_1980_Adj_MN_Mahnomen','GRS 1980 Adj. Minnesota Mahnomen','PROJ','EARTH',6378586.581,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107744','S_GRS_1980_Adj_MN_Marshall','GRS 1980 Adj. Minnesota Marshall','PROJ','EARTH',6378441.801,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107745','S_GRS_1980_Adj_MN_Martin','GRS 1980 Adj. Minnesota Martin','PROJ','EARTH',6378521.049,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107746','S_GRS_1980_Adj_MN_Meeker','GRS 1980 Adj. Minnesota Meeker','PROJ','EARTH',6378498.189,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107747','S_GRS_1980_Adj_MN_Morrison','GRS 1980 Adj. Minnesota Morrison','PROJ','EARTH',6378502.761,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107748','S_GRS_1980_Adj_MN_Mower','GRS 1980 Adj. Minnesota Mower','PROJ','EARTH',6378521.049,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107749','S_GRS_1980_Adj_MN_Murray','GRS 1980 Adj. Minnesota Murray','PROJ','EARTH',6378617.061,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107750','S_GRS_1980_Adj_MN_Nicollet','GRS 1980 Adj. Minnesota Nicollet','PROJ','EARTH',6378403.701,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107751','S_GRS_1980_Adj_MN_Nobles','GRS 1980 Adj. Minnesota Nobles','PROJ','EARTH',6378624.681,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107752','S_GRS_1980_Adj_MN_Norman','GRS 1980 Adj. Minnesota Norman','PROJ','EARTH',6378468.623,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107753','S_GRS_1980_Adj_MN_Olmsted','GRS 1980 Adj. Minnesota Olmsted','PROJ','EARTH',6378481.425,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107754','S_GRS_1980_Adj_MN_Ottertail','GRS 1980 Adj. Minnesota Ottertail','PROJ','EARTH',6378525.621,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107755','S_GRS_1980_Adj_MN_Pennington','GRS 1980 Adj. Minnesota Pennington','PROJ','EARTH',6378445.763,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107756','S_GRS_1980_Adj_MN_Pine','GRS 1980 Adj. Minnesota Pine','PROJ','EARTH',6378472.281,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107757','S_GRS_1980_Adj_MN_Pipestone','GRS 1980 Adj. Minnesota Pipestone','PROJ','EARTH',6378670.401,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107758','S_GRS_1980_Adj_MN_Polk','GRS 1980 Adj. Minnesota Polk','PROJ','EARTH',6378445.763,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107759','S_GRS_1980_Adj_MN_Pope','GRS 1980 Adj. Minnesota Pope','PROJ','EARTH',6378502.761,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107760','S_GRS_1980_Adj_MN_Ramsey','GRS 1980 Adj. Minnesota Ramsey','PROJ','EARTH',6378418.941,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107761','S_GRS_1980_Adj_MN_Red_Lake','GRS 1980 Adj. Minnesota Red Lake','PROJ','EARTH',6378445.763,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107762','S_GRS_1980_Adj_MN_Redwood','GRS 1980 Adj. Minnesota Redwood','PROJ','EARTH',6378438.753,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107763','S_GRS_1980_Adj_MN_Renville','GRS 1980 Adj. Minnesota Renville','PROJ','EARTH',6378414.369,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107764','S_GRS_1980_Adj_MN_Rice','GRS 1980 Adj. Minnesota Rice','PROJ','EARTH',6378434.181,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107765','S_GRS_1980_Adj_MN_Rock','GRS 1980 Adj. Minnesota Rock','PROJ','EARTH',6378624.681,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107766','S_GRS_1980_Adj_MN_Roseau','GRS 1980 Adj. Minnesota Roseau','PROJ','EARTH',6378449.421,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107767','S_GRS_1980_Adj_MN_St_Louis_North','GRS 1980 Adj. Minnesota St Louis North','PROJ','EARTH',6378543.909,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107768','S_GRS_1980_Adj_MN_St_Louis_Central','GRS 1980 Adj. Minnesota St Louis Central','PROJ','EARTH',6378605.783,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107769','S_GRS_1980_Adj_MN_St_Louis_South','GRS 1980 Adj. Minnesota St Louis South','PROJ','EARTH',6378540.861,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107770','S_GRS_1980_Adj_MN_Scott','GRS 1980 Adj. Minnesota Scott','PROJ','EARTH',6378421.989,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107771','S_GRS_1980_Adj_MN_Sherburne','GRS 1980 Adj. Minnesota Sherburne','PROJ','EARTH',6378443.325,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107772','S_GRS_1980_Adj_MN_Sibley','GRS 1980 Adj. Minnesota Sibley','PROJ','EARTH',6378414.369,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107773','S_GRS_1980_Adj_MN_Stearns','GRS 1980 Adj. Minnesota Stearns','PROJ','EARTH',6378502.761,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107774','S_GRS_1980_Adj_MN_Steele','GRS 1980 Adj. Minnesota Steele','PROJ','EARTH',6378481.425,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107775','S_GRS_1980_Adj_MN_Stevens','GRS 1980 Adj. Minnesota Stevens','PROJ','EARTH',6378502.761,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107776','S_GRS_1980_Adj_MN_Swift','GRS 1980 Adj. Minnesota Swift','PROJ','EARTH',6378470.757,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107777','S_GRS_1980_Adj_MN_Todd','GRS 1980 Adj. Minnesota Todd','PROJ','EARTH',6378548.481,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107778','S_GRS_1980_Adj_MN_Traverse','GRS 1980 Adj. Minnesota Traverse','PROJ','EARTH',6378463.746,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107779','S_GRS_1980_Adj_MN_Wabasha','GRS 1980 Adj. Minnesota Wabasha','PROJ','EARTH',6378426.561,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107780','S_GRS_1980_Adj_MN_Wadena','GRS 1980 Adj. Minnesota Wadena','PROJ','EARTH',6378546.957,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107781','S_GRS_1980_Adj_MN_Waseca','GRS 1980 Adj. Minnesota Waseca','PROJ','EARTH',6378481.425,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107782','S_GRS_1980_Adj_MN_Watonwan','GRS 1980 Adj. Minnesota Watonwan','PROJ','EARTH',6378514.953,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107783','S_GRS_1980_Adj_MN_Winona','GRS 1980 Adj. Minnesota Winona','PROJ','EARTH',6378453.688,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107784','S_GRS_1980_Adj_MN_Wright','GRS 1980 Adj. Minnesota Wright','PROJ','EARTH',6378443.325,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107785','S_GRS_1980_Adj_MN_Yellow_Medicine','GRS 1980 Adj. Minnesota Yellow Medicine','PROJ','EARTH',6378530.193,'EPSG','9001',298.2572221008827,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107786','S_GRS_1980_Adj_MN_St_Louis','GRS 1980 Adj. Minnesota St. Louis','PROJ','EARTH',6378523.0,'EPSG','9001',298.2752724,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107800','GRS_1980_Adj_WI_AL','GRS 1980 Adj. Wisconsin Ashland','PROJ','EARTH',6378471.92,'EPSG','9001',298.272883775229,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107801','GRS_1980_Adj_WI_BA','GRS 1980 Adj. Wisconsin Barron','PROJ','EARTH',6378472.931,'EPSG','9001',298.272931052052,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107802','GRS_1980_Adj_WI_BF','GRS 1980 Adj. Wisconsin Bayfield','PROJ','EARTH',6378411.351,'EPSG','9001',298.270051421254,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107803','GRS_1980_Adj_WI_BR','GRS 1980 Adj. Wisconsin Brown','PROJ','EARTH',6378137.0,'EPSG','9001',298.257222100225,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107804','GRS_1980_Adj_WI_BU','GRS 1980 Adj. Wisconsin Buffalo','PROJ','EARTH',6378380.991,'EPSG','9001',298.268631713702,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107805','GRS_1980_Adj_WI_BN','GRS 1980 Adj. Wisconsin Burnett','PROJ','EARTH',6378414.96,'EPSG','9001',298.270220186885,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107806','GRS_1980_Adj_WI_CP','GRS 1980 Adj. Wisconsin Chippewa','PROJ','EARTH',6378412.542,'EPSG','9001',298.270107115315,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107807','GRS_1980_Adj_WI_CK','GRS 1980 Adj. Wisconsin Clark','PROJ','EARTH',6378470.401,'EPSG','9001',298.272812743089,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107808','GRS_1980_Adj_WI_CO','GRS 1980 Adj. Wisconsin Columbia','PROJ','EARTH',6378376.331,'EPSG','9001',298.268413800752,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107809','GRS_1980_Adj_WI_CR','GRS 1980 Adj. Wisconsin Crawford','PROJ','EARTH',6378379.031,'EPSG','9001',298.268540059328,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107810','GRS_1980_Adj_WI_DN','GRS 1980 Adj. Wisconsin Dane','PROJ','EARTH',6378407.621,'EPSG','9001',298.269876997368,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107811','GRS_1980_Adj_WI_DR','GRS 1980 Adj. Wisconsin Door','PROJ','EARTH',6378313.92,'EPSG','9001',298.26549531037,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107812','GRS_1980_Adj_WI_DG','GRS 1980 Adj. Wisconsin Douglas','PROJ','EARTH',6378414.93,'EPSG','9001',298.270218784012,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107813','GRS_1980_Adj_WI_DU','GRS 1980 Adj. Wisconsin Dunn','PROJ','EARTH',6378413.021,'EPSG','9001',298.270129514522,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107814','GRS_1980_Adj_WI_EC','GRS 1980 Adj. Wisconsin EauClaire','PROJ','EARTH',6378380.381,'EPSG','9001',298.268603188617,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107815','GRS_1980_Adj_WI_FN','GRS 1980 Adj. Wisconsin Florence','PROJ','EARTH',6378530.851,'EPSG','9001',298.275639532334,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107816','GRS_1980_Adj_WI_FR','GRS 1980 Adj. Wisconsin Forest','PROJ','EARTH',6378591.521,'EPSG','9001',298.278476609315,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107817','GRS_1980_Adj_WI_GT','GRS 1980 Adj. Wisconsin Grant','PROJ','EARTH',6378378.881,'EPSG','9001',298.268533044963,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107818','GRS_1980_Adj_WI_IA','GRS 1980 Adj. Wisconsin Iowa','PROJ','EARTH',6378408.041,'EPSG','9001',298.269896637591,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107819','GRS_1980_Adj_WI_IR','GRS 1980 Adj. Wisconsin Iron','PROJ','EARTH',6378655.071,'EPSG','9001',298.281448362111,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107820','GRS_1980_Adj_WI_JA','GRS 1980 Adj. Wisconsin Jackson','PROJ','EARTH',6378409.151,'EPSG','9001',298.269948543895,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107821','GRS_1980_Adj_WI_LC','GRS 1980 Adj. Wisconsin LaCrosse','PROJ','EARTH',6378379.301,'EPSG','9001',298.268552685186,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107822','GRS_1980_Adj_WI_LG','GRS 1980 Adj. Wisconsin Langlade','PROJ','EARTH',6378560.121,'EPSG','9001',298.277008268831,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107823','GRS_1980_Adj_WI_LN','GRS 1980 Adj. Wisconsin Lincoln','PROJ','EARTH',6378531.821,'EPSG','9001',298.275684891897,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107824','GRS_1980_Adj_WI_MA','GRS 1980 Adj. Wisconsin Marathon','PROJ','EARTH',6378500.6,'EPSG','9001',298.274224921888,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107825','GRS_1980_Adj_WI_MN','GRS 1980 Adj. Wisconsin Marinette','PROJ','EARTH',6378376.041,'EPSG','9001',298.268400239645,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107826','GRS_1980_Adj_WI_ME','GRS 1980 Adj. Wisconsin Menominee','PROJ','EARTH',6378406.601,'EPSG','9001',298.269829299684,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107827','GRS_1980_Adj_WI_MR','GRS 1980 Adj. Wisconsin Monroe','PROJ','EARTH',6378438.991,'EPSG','9001',298.27134393498,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107828','GRS_1980_Adj_WI_OC','GRS 1980 Adj. Wisconsin Oconto','PROJ','EARTH',6378345.42,'EPSG','9001',298.266968327098,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107829','GRS_1980_Adj_WI_ON','GRS 1980 Adj. Wisconsin Oneida','PROJ','EARTH',6378593.86,'EPSG','9001',298.278585986653,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107830','GRS_1980_Adj_WI_PK','GRS 1980 Adj. Wisconsin Polk','PROJ','EARTH',6378413.671,'EPSG','9001',298.270159910105,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107831','GRS_1980_Adj_WI_PT','GRS 1980 Adj. Wisconsin Portage','PROJ','EARTH',6378344.377,'EPSG','9001',298.266919538913,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107832','GRS_1980_Adj_WI_PR','GRS 1980 Adj. Wisconsin Price','PROJ','EARTH',6378563.891,'EPSG','9001',298.277184563214,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107833','GRS_1980_Adj_WI_RC','GRS 1980 Adj. Wisconsin Richland','PROJ','EARTH',6378408.091,'EPSG','9001',298.269898975713,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107834','GRS_1980_Adj_WI_RK','GRS 1980 Adj. Wisconsin Rock','PROJ','EARTH',6378377.671,'EPSG','9001',298.268476462415,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107835','GRS_1980_Adj_WI_RS','GRS 1980 Adj. Wisconsin Rusk','PROJ','EARTH',6378472.751,'EPSG','9001',298.272922634813,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107836','GRS_1980_Adj_WI_SC','GRS 1980 Adj. Wisconsin StCroix','PROJ','EARTH',6378412.511,'EPSG','9001',298.270105665679,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107837','GRS_1980_Adj_WI_SK','GRS 1980 Adj. Wisconsin Sauk','PROJ','EARTH',6378407.281,'EPSG','9001',298.26986109814,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107838','GRS_1980_Adj_WI_SW','GRS 1980 Adj. Wisconsin Sawyer','PROJ','EARTH',6378534.451,'EPSG','9001',298.275807877103,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107839','GRS_1980_Adj_WI_SH','GRS 1980 Adj. Wisconsin Shawano','PROJ','EARTH',6378406.051,'EPSG','9001',298.269803580344,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107840','GRS_1980_Adj_WI_TA','GRS 1980 Adj. Wisconsin Taylor','PROJ','EARTH',6378532.921,'EPSG','9001',298.275736330576,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107841','GRS_1980_Adj_WI_TR','GRS 1980 Adj. Wisconsin Trempealeau','PROJ','EARTH',6378380.091,'EPSG','9001',298.26858962751,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107842','GRS_1980_Adj_WI_VR','GRS 1980 Adj. Wisconsin Vernon','PROJ','EARTH',6378408.941,'EPSG','9001',298.269938723784,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107843','GRS_1980_Adj_WI_VI','GRS 1980 Adj. Wisconsin Vilas','PROJ','EARTH',6378624.171,'EPSG','9001',298.280003402845,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107844','GRS_1980_Adj_WI_WW','GRS 1980 Adj. Wisconsin Walworth','PROJ','EARTH',6378377.411,'EPSG','9001',298.268464304182,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107845','GRS_1980_Adj_WI_WB','GRS 1980 Adj. Wisconsin Washburn','PROJ','EARTH',6378474.591,'EPSG','9001',298.273008677695,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107846','GRS_1980_Adj_WI_WA','GRS 1980 Adj. Wisconsin Washington','PROJ','EARTH',6378407.141,'EPSG','9001',298.269854551399,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107847','GRS_1980_Adj_WI_WK','GRS 1980 Adj. Wisconsin Waukesha','PROJ','EARTH',6378376.871,'EPSG','9001',298.268439052467,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107848','GRS_1980_Adj_WI_WP','GRS 1980 Adj. Wisconsin Waupaca','PROJ','EARTH',6378375.251,'EPSG','9001',298.268363297321,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107849','GRS_1980_Adj_WI_WS','GRS 1980 Adj. Wisconsin Waushara','PROJ','EARTH',6378405.971,'EPSG','9001',298.269799839349,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107850','GRS_1980_Adj_WI_WD','GRS 1980 Adj. Wisconsin Wood','PROJ','EARTH',6378437.651,'EPSG','9001',298.271281273316,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107851','GRS_1980_Adj_WI_AD_JN','GRS 1980 Adj. Wisconsin Adams and Juneau','PROJ','EARTH',6378376.271,'EPSG','9001',298.268410995005,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107852','GRS_1980_Adj_WI_GR_LF','GRS 1980 Adj. Wisconsin Green and Lafayette','PROJ','EARTH',6378408.481,'EPSG','9001',298.269917213063,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107853','GRS_1980_Adj_WI_GL_MQ','GRS 1980 Adj. Wisconsin Green Lake and Marquette','PROJ','EARTH',6378375.601,'EPSG','9001',298.268379664173,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107854','GRS_1980_Adj_WI_DD_JF','GRS 1980 Adj. Wisconsin Dodge and Jefferson','PROJ','EARTH',6378376.811,'EPSG','9001',298.268436246721,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107855','GRS_1980_Adj_WI_PP_PC','GRS 1980 Adj. Wisconsin Pepin and Pierce','PROJ','EARTH',6378381.271,'EPSG','9001',298.268644807185,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107856','GRS_1980_Adj_WI_CL_FL_OG_WN','GRS 1980 Adj. Wisconsin Calumet, Fond du Lac, Outagamie, and Winnebago','PROJ','EARTH',6378345.09,'EPSG','9001',298.266952895494,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107857','GRS_1980_Adj_WI_KN_MW_OZ_RA','GRS 1980 Adj. Wisconsin Kenosha, Milwaukee, Ozaukee, and Racine','PROJ','EARTH',6378315.7,'EPSG','9001',298.265578547505,NULL,1); +INSERT INTO ellipsoid VALUES('ESRI','107858','GRS_1980_Adj_WI_KW_MT_SG','GRS 1980 Adj. Wisconsin Kewaunee, Manitowoc, and Sheboygan','PROJ','EARTH',6378285.86,'EPSG','9001',298.264183156421,NULL,1); +INSERT INTO celestial_body VALUES('ESRI', 'Mercury', 'Mercury', 2439700.0); +INSERT INTO ellipsoid VALUES('ESRI','107900','Mercury_2000_IAU_IAG','Mercury','ESRI','Mercury',2439700.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Venus', 'Venus', 6051000.0); +INSERT INTO ellipsoid VALUES('ESRI','107901','Venus_1985_IAU_IAG_COSPAR','Venus 1985','ESRI','Venus',6051000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107902','Venus_2000_IAU_IAG','Venus 2000','ESRI','Venus',6051800.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Moon', 'Moon', 1737400.0); +INSERT INTO ellipsoid VALUES('ESRI','107903','Moon_2000_IAU_IAG','The Moon','ESRI','Moon',1737400.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Mars', 'Mars', 3393400.0); +INSERT INTO ellipsoid VALUES('ESRI','107904','Mars_1979_IAU_IAG','Mars 1979','ESRI','Mars',3393400.0,'EPSG','9001',192.0430107526882,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107905','Mars_2000_IAU_IAG','Mars 2000','ESRI','Mars',3396190.0,'EPSG','9001',169.8944472236118,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Deimos', 'Deimos', 6200.0); +INSERT INTO ellipsoid VALUES('ESRI','107906','Deimos_2000_IAU_IAG','Mars - Deimos','ESRI','Deimos',6200.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Phobos', 'Phobos', 11100.0); +INSERT INTO ellipsoid VALUES('ESRI','107907','Phobos_2000_IAU_IAG','Mars - Phobos','ESRI','Phobos',11100.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Jupiter', 'Jupiter', 71492000.0); +INSERT INTO ellipsoid VALUES('ESRI','107908','Jupiter_2000_IAU_IAG','Jupiter','ESRI','Jupiter',71492000.0,'EPSG','9001',15.41440275981026,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Adrastea', 'Adrastea', 8200.0); +INSERT INTO ellipsoid VALUES('ESRI','107909','Adrastea_2000_IAU_IAG','Jupiter - Adrastea','ESRI','Adrastea',8200.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Amalthea', 'Amalthea', 83500.0); +INSERT INTO ellipsoid VALUES('ESRI','107910','Amalthea_2000_IAU_IAG','Jupiter - Amalthea','ESRI','Amalthea',83500.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Ananke', 'Ananke', 10000.0); +INSERT INTO ellipsoid VALUES('ESRI','107911','Ananke_2000_IAU_IAG','Jupiter - Ananke','ESRI','Ananke',10000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Callisto', 'Callisto', 2409300.0); +INSERT INTO ellipsoid VALUES('ESRI','107912','Callisto_2000_IAU_IAG','Jupiter - Callisto','ESRI','Callisto',2409300.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Carme', 'Carme', 15000.0); +INSERT INTO ellipsoid VALUES('ESRI','107913','Carme_2000_IAU_IAG','Jupiter - Carme','ESRI','Carme',15000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Elara', 'Elara', 40000.0); +INSERT INTO ellipsoid VALUES('ESRI','107914','Elara_2000_IAU_IAG','Jupiter - Elara','ESRI','Elara',40000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Europa', 'Europa', 1562090.0); +INSERT INTO ellipsoid VALUES('ESRI','107915','Europa_2000_IAU_IAG','Jupiter - Europa','ESRI','Europa',1562090.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Ganymede', 'Ganymede', 2632345.0); +INSERT INTO ellipsoid VALUES('ESRI','107916','Ganymede_2000_IAU_IAG','Jupiter - Ganymede','ESRI','Ganymede',2632345.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Himalia', 'Himalia', 85000.0); +INSERT INTO ellipsoid VALUES('ESRI','107917','Himalia_2000_IAU_IAG','Jupiter - Himalia','ESRI','Himalia',85000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Io', 'Io', 1821460.0); +INSERT INTO ellipsoid VALUES('ESRI','107918','Io_2000_IAU_IAG','Jupiter - Io','ESRI','Io',1821460.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Leda', 'Leda', 5000.0); +INSERT INTO ellipsoid VALUES('ESRI','107919','Leda_2000_IAU_IAG','Jupiter - Leda','ESRI','Leda',5000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Lysithea', 'Lysithea', 12000.0); +INSERT INTO ellipsoid VALUES('ESRI','107920','Lysithea_2000_IAU_IAG','Jupiter - Lysithea','ESRI','Lysithea',12000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Metis', 'Metis', 30000.0); +INSERT INTO ellipsoid VALUES('ESRI','107921','Metis_2000_IAU_IAG','Jupiter - Metis','ESRI','Metis',30000.0,'EPSG','9001',3.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Pasiphae', 'Pasiphae', 18000.0); +INSERT INTO ellipsoid VALUES('ESRI','107922','Pasiphae_2000_IAU_IAG','Jupiter - Pasiphae','ESRI','Pasiphae',18000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Sinope', 'Sinope', 14000.0); +INSERT INTO ellipsoid VALUES('ESRI','107923','Sinope_2000_IAU_IAG','Jupiter - Sinope','ESRI','Sinope',14000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Thebe', 'Thebe', 49300.0); +INSERT INTO ellipsoid VALUES('ESRI','107924','Thebe_2000_IAU_IAG','Jupiter - Thebe','ESRI','Thebe',49300.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Saturn', 'Saturn', 60268000.0); +INSERT INTO ellipsoid VALUES('ESRI','107925','Saturn_2000_IAU_IAG','Saturn','ESRI','Saturn',60268000.0,'EPSG','9001',10.2079945799458,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Atlas', 'Atlas', 16000.0); +INSERT INTO ellipsoid VALUES('ESRI','107926','Atlas_2000_IAU_IAG','Saturn - Atlas','ESRI','Atlas',16000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Calypso', 'Calypso', 9500.0); +INSERT INTO ellipsoid VALUES('ESRI','107927','Calypso_2000_IAU_IAG','Saturn - Calypso','ESRI','Calypso',9500.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Dione', 'Dione', 560000.0); +INSERT INTO ellipsoid VALUES('ESRI','107928','Dione_2000_IAU_IAG','Saturn - Dione','ESRI','Dione',560000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Enceladus', 'Enceladus', 249400.0); +INSERT INTO ellipsoid VALUES('ESRI','107929','Enceladus_2000_IAU_IAG','Saturn - Enceladus','ESRI','Enceladus',249400.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Epimetheus', 'Epimetheus', 59500.0); +INSERT INTO ellipsoid VALUES('ESRI','107930','Epimetheus_2000_IAU_IAG','Saturn - Epimetheus','ESRI','Epimetheus',59500.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Helene', 'Helene', 16000.0); +INSERT INTO ellipsoid VALUES('ESRI','107931','Helene_2000_IAU_IAG','Saturn - Helene','ESRI','Helene',16000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Hyperion', 'Hyperion', 133000.0); +INSERT INTO ellipsoid VALUES('ESRI','107932','Hyperion_2000_IAU_IAG','Saturn - Hyperion','ESRI','Hyperion',133000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Iapetus', 'Iapetus', 718000.0); +INSERT INTO ellipsoid VALUES('ESRI','107933','Iapetus_2000_IAU_IAG','Saturn - Iapetus','ESRI','Iapetus',718000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Janus', 'Janus', 88800.0); +INSERT INTO ellipsoid VALUES('ESRI','107934','Janus_2000_IAU_IAG','Saturn - Janus','ESRI','Janus',88800.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Mimas', 'Mimas', 198630.0); +INSERT INTO ellipsoid VALUES('ESRI','107935','Mimas_2000_IAU_IAG','Saturn - Mimas','ESRI','Mimas',198630.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Pan', 'Pan', 10000.0); +INSERT INTO ellipsoid VALUES('ESRI','107936','Pan_2000_IAU_IAG','Saturn - Pan','ESRI','Pan',10000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Pandora', 'Pandora', 41900.0); +INSERT INTO ellipsoid VALUES('ESRI','107937','Pandora_2000_IAU_IAG','Saturn - Pandora','ESRI','Pandora',41900.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Phoebe', 'Phoebe', 110000.0); +INSERT INTO ellipsoid VALUES('ESRI','107938','Phoebe_2000_IAU_IAG','Saturn - Phoebe','ESRI','Phoebe',110000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Prometheus', 'Prometheus', 50100.0); +INSERT INTO ellipsoid VALUES('ESRI','107939','Prometheus_2000_IAU_IAG','Saturn - Prometheus','ESRI','Prometheus',50100.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Rhea', 'Rhea', 764000.0); +INSERT INTO ellipsoid VALUES('ESRI','107940','Rhea_2000_IAU_IAG','Saturn - Rhea','ESRI','Rhea',764000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Telesto', 'Telesto', 11000.0); +INSERT INTO ellipsoid VALUES('ESRI','107941','Telesto_2000_IAU_IAG','Saturn - Telesto','ESRI','Telesto',11000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Tethys', 'Tethys', 529800.0); +INSERT INTO ellipsoid VALUES('ESRI','107942','Tethys_2000_IAU_IAG','Saturn - Tethys','ESRI','Tethys',529800.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Titan', 'Titan', 2575000.0); +INSERT INTO ellipsoid VALUES('ESRI','107943','Titan_2000_IAU_IAG','Saturn - Titan','ESRI','Titan',2575000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Uranus', 'Uranus', 25559000.0); +INSERT INTO ellipsoid VALUES('ESRI','107944','Uranus_2000_IAU_IAG','Uranus','ESRI','Uranus',25559000.0,'EPSG','9001',43.61604095563141,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Ariel', 'Ariel', 578900.0); +INSERT INTO ellipsoid VALUES('ESRI','107945','Ariel_2000_IAU_IAG','Uranus - Ariel','ESRI','Ariel',578900.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Belinda', 'Belinda', 33000.0); +INSERT INTO ellipsoid VALUES('ESRI','107946','Belinda_2000_IAU_IAG','Uranus - Belinda','ESRI','Belinda',33000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Bianca', 'Bianca', 21000.0); +INSERT INTO ellipsoid VALUES('ESRI','107947','Bianca_2000_IAU_IAG','Uranus - Bianca','ESRI','Bianca',21000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Cordelia', 'Cordelia', 13000.0); +INSERT INTO ellipsoid VALUES('ESRI','107948','Cordelia_2000_IAU_IAG','Uranus - Cordelia','ESRI','Cordelia',13000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Cressida', 'Cressida', 31000.0); +INSERT INTO ellipsoid VALUES('ESRI','107949','Cressida_2000_IAU_IAG','Uranus - Cressida','ESRI','Cressida',31000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Desdemona', 'Desdemona', 27000.0); +INSERT INTO ellipsoid VALUES('ESRI','107950','Desdemona_2000_IAU_IAG','Uranus - Desdemona','ESRI','Desdemona',27000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Juliet', 'Juliet', 42000.0); +INSERT INTO ellipsoid VALUES('ESRI','107951','Juliet_2000_IAU_IAG','Uranus - Juliet','ESRI','Juliet',42000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Miranda', 'Miranda', 235800.0); +INSERT INTO ellipsoid VALUES('ESRI','107952','Miranda_2000_IAU_IAG','Uranus - Miranda','ESRI','Miranda',235800.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Oberon', 'Oberon', 761400.0); +INSERT INTO ellipsoid VALUES('ESRI','107953','Oberon_2000_IAU_IAG','Uranus - Oberon','ESRI','Oberon',761400.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Ophelia', 'Ophelia', 15000.0); +INSERT INTO ellipsoid VALUES('ESRI','107954','Ophelia_2000_IAU_IAG','Uranus - Ophelia','ESRI','Ophelia',15000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Portia', 'Portia', 54000.0); +INSERT INTO ellipsoid VALUES('ESRI','107955','Portia_2000_IAU_IAG','Uranus - Portia','ESRI','Portia',54000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Puck', 'Puck', 77000.0); +INSERT INTO ellipsoid VALUES('ESRI','107956','Puck_2000_IAU_IAG','Uranus - Puck','ESRI','Puck',77000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Rosalind', 'Rosalind', 27000.0); +INSERT INTO ellipsoid VALUES('ESRI','107957','Rosalind_2000_IAU_IAG','Uranus - Rosalind','ESRI','Rosalind',27000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Titania', 'Titania', 788900.0); +INSERT INTO ellipsoid VALUES('ESRI','107958','Titania_2000_IAU_IAG','Uranus - Titania','ESRI','Titania',788900.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Umbriel', 'Umbriel', 584700.0); +INSERT INTO ellipsoid VALUES('ESRI','107959','Umbriel_2000_IAU_IAG','Uranus - Umbriel','ESRI','Umbriel',584700.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Neptune', 'Neptune', 24764000.0); +INSERT INTO ellipsoid VALUES('ESRI','107960','Neptune_2000_IAU_IAG','Neptune','ESRI','Neptune',24764000.0,'EPSG','9001',58.54373522458629,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Despina', 'Despina', 74000.0); +INSERT INTO ellipsoid VALUES('ESRI','107961','Despina_2000_IAU_IAG','Neptune - Despina','ESRI','Despina',74000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Galatea', 'Galatea', 79000.0); +INSERT INTO ellipsoid VALUES('ESRI','107962','Galatea_2000_IAU_IAG','Neptune - Galatea','ESRI','Galatea',79000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Larissa', 'Larissa', 104000.0); +INSERT INTO ellipsoid VALUES('ESRI','107963','Larissa_2000_IAU_IAG','Neptune - Larissa','ESRI','Larissa',104000.0,'EPSG','9001',6.933333333333334,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Naiad', 'Naiad', 29000.0); +INSERT INTO ellipsoid VALUES('ESRI','107964','Naiad_2000_IAU_IAG','Neptune - Naiad','ESRI','Naiad',29000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Nereid', 'Nereid', 170000.0); +INSERT INTO ellipsoid VALUES('ESRI','107965','Nereid_2000_IAU_IAG','Neptune - Nereid','ESRI','Nereid',170000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Proteus', 'Proteus', 208000.0); +INSERT INTO ellipsoid VALUES('ESRI','107966','Proteus_2000_IAU_IAG','Neptune - Proteus','ESRI','Proteus',208000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Thalassa', 'Thalassa', 40000.0); +INSERT INTO ellipsoid VALUES('ESRI','107967','Thalassa_2000_IAU_IAG','Neptune - Thalassa','ESRI','Thalassa',40000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Triton', 'Triton', 1352600.0); +INSERT INTO ellipsoid VALUES('ESRI','107968','Triton_2000_IAU_IAG','Neptune - Triton','ESRI','Triton',1352600.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Pluto', 'Pluto', 1195000.0); +INSERT INTO ellipsoid VALUES('ESRI','107969','Pluto_2000_IAU_IAG','Pluto','ESRI','Pluto',1195000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', 'Charon', 'Charon', 593000.0); +INSERT INTO ellipsoid VALUES('ESRI','107970','Charon_2000_IAU_IAG','Pluto - Charon','ESRI','Charon',593000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107971','Mars_2000_(Sphere)','Mars 2000 (Sphere)','ESRI','Mars',3396190.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', '1_Ceres', '1_Ceres', 470000.0); +INSERT INTO ellipsoid VALUES('ESRI','107972','1_Ceres_2015','1 Ceres 2015','ESRI','1_Ceres',470000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO celestial_body VALUES('ESRI', '4_Vesta', '4_Vesta', 255000.0); +INSERT INTO ellipsoid VALUES('ESRI','107973','4_Vesta_2015','4 Vesta 2015','ESRI','4_Vesta',255000.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO ellipsoid VALUES('ESRI','107974','Mercury_2015','Mercury 2015','ESRI','Mercury',2439400.0,'EPSG','9001',0.0,NULL,0); +INSERT INTO alias_name VALUES('prime_meridian','EPSG','8914','Paris_RGS','ESRI'); +INSERT INTO "prime_meridian" VALUES('ESRI','108900','Reference_Meridian',0.0,'EPSG','9110',0); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1024','D_Hungarian_Datum_1909','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1025','D_TWD_1967','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1026','D_TWD_1997','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1029','D_Iraqi_Geospatial_Reference_System','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1031','D_MGI_1901','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1032','D_MOLDREF99','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1033','D_Reseau_Geodesique_de_la_RDC_2005','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1034','D_Serbian_Reference_Network_1998','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1035','D_Red_Geodesica_de_Canarias_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1036','D_Reseau_Geodesique_de_Mayotte_2004','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1037','D_Cadastre_1997','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1038','D_Reseau_Geodesique_de_St_Pierre_et_Miquelon_2006','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1041','D_PTRA08','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1042','D_Mexican_Datum_of_1993','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1043','D_China_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1044','D_Sao_Tome','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1045','D_New_Beijing','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1046','D_Principe','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1047','D_RRAF_1991','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1052','D_S_JTSK_05','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1053','D_Sri_Lanka_Datum_1999','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1055','D_S_JTSK_05_Ferro','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1056','D_GDBD2009','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1057','D_Turkish_National_Reference_Frame','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1058','D_Bhutan_National_Geodetic_Datum','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1060','D_Islands_Network_2004','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1061','D_ITRF_2008','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1062','D_POSGAR_2007','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1063','D_Marco_Geodesico_Nacional','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1064','D_SIRGAS-Chile','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1065','D_Costa_Rica_2005','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1066','D_SGNP_MARCARIO_SOLIS','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1067','D_Peru96','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1068','D_SIRGAS-ROU98','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1069','D_SIRGAS_ES2007.8','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1070','D_Ocotepeque_1935','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1071','D_Sibun_Gorge_1922','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1072','D_Panama-Colon-1911','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1073','Reseau_Geodesique_des_Antilles_Francaises_2009','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1074','D_Corrego_Alegre_1961','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1075','D_South_American_Datum_1969_96','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1076','D_Papua_New_Guinea_Geodetic_Datum_1994','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1077','D_Ukraine_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1078','D_Fehmarnbelt_Datum_2010','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1081','D_Deutsche_Bahn_Reference_System','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1095','D_Tonga_Geodetic_Datum_2005','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1100','D_Cayman_Islands_Geodetic_Datum_2011','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1111','D_Nepal_Nagarkot','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1112','D_Cyprus_Geodetic_Reference_System_1993','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1113','D_Reseau_Geodesique_des_Terres_Australes_et_Antarctiques_Francaises_2007','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1114','Israel_Geodetic_Datum_2005','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1115','Israeli_Geodetic_Datum_2005(2012)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1116','D_NAD_1983_2011','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1117','D_NAD_1983_PA11','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1118','D_NAD_1983_MA11','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1120','D_Mexico_ITRF2008','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1128','D_JGD_2011','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1132','D_Rete_Dinamica_Nazionale_2008','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1133','D_NAD_1983_CORS96','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1135','D_Aden_1925','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1136','D_Bioko','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1137','D_Bekaa_Valley_1920','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1138','D_South_East_Island_1943','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1139','D_Gambia','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1142','IG05_Intermediate_Datum','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1114','Israel_Geodetic_Datum_2005','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1144','IG05(2012)_Intermediate_Datum','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1115','Israeli_Geodetic_Datum_2005(2012)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1147','Oman_National_Geodetic_Datum_2014','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1152','World_Geodetic_System_1984_(G730)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1153','World_Geodetic_System_1984_(G873)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1154','World_Geodetic_System_1984_(G1150)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1155','World_Geodetic_System_1984_(G1674)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1156','World_Geodetic_System_1984_(G1762)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1157','Parametry_Zemli_1990.02','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1158','Parametry_Zemli_1990.11','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1159','Geodezicheskaya_Sistema_Koordinat_2011','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1165','International_Terrestrial_Reference_Frame_2014','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1166','World_Geodetic_System_1984_(Transit)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1167','Bulgaria_Geodetic_System_2005','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1168','GDA2020','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1173','St_Helena_Tritan','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1174','St_Helena_Geodetic_Datum_2015','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1178','D_ETRF_1989','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1179','European_Terrestrial_Reference_Frame_1990','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1180','European_Terrestrial_Reference_Frame_1991','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1181','European_Terrestrial_Reference_Frame_1992','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1182','European_Terrestrial_Reference_Frame_1993','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1183','European_Terrestrial_Reference_Frame_1994','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1184','European_Terrestrial_Reference_Frame_1996','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1185','European_Terrestrial_Reference_Frame_1997','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1186','European_Terrestrial_Reference_Frame_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1187','Islands_Net_2016','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1188','Gusterberg_(Ferro)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1189','St._Stephen_(Ferro)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1192','North_American_Datum_of_1983_(CSRS96)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1193','North_American_Datum_of_1983_(CSRS)_version_2','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1194','North_American_Datum_of_1983_(CSRS)_version_3','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1195','North_American_Datum_of_1983_(CSRS)_version_4','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1196','North_American_Datum_of_1983_(CSRS)_version_5','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1197','North_American_Datum_of_1983_(CSRS)_version_6','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','1198','North_American_Datum_of_1983_(CSRS)_version_7','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6001','D_Airy_1830','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6002','D_Airy_Modified','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6003','D_Australian','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6004','D_Bessel_1841','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6005','D_Bessel_Modified','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6006','D_Bessel_Namibia','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6007','D_Clarke_1858','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6008','D_Clarke_1866','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6009','D_Clarke_1866_Michigan','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6010','D_Clarke_1880_Benoit','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6011','D_Clarke_1880_IGN','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6012','D_Clarke_1880_RGS','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6013','D_Clarke_1880_Arc','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6014','D_Clarke_1880_SGA','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6015','D_Everest_Adj_1937','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6016','D_Everest_Def_1967','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6018','D_Everest_Modified','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6019','D_GRS_1980','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6020','D_Helmert_1906','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6021','D_Indonesian','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6022','D_International_1924','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6024','D_Krasovsky_1940','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6025','D_NWL_9D','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6027','D_Plessis_1817','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6028','D_Struve_1860','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6029','D_War_Office','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6031','D_GEM_10C','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6032','D_OSU_86F','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6033','D_OSU_91A','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6034','D_Clarke_1880','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6035','D_Sphere','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6036','D_GRS_1967','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6042','D_Everest_1830','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6044','D_Everest_Def_1962','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6045','D_Everest_Def_1975','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6047','D_Sphere_GRS_1980_Authalic','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6052','D_Sphere_Clarke_1866_Authalic','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6053','D_Sphere_International_1924_Authalic','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6054','D_Hughes_1980','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6055','D_WGS_1984_Major_Auxiliary_Sphere','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6120','D_Greek','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6121','D_GGRS_1987','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6122','D_ATS_1977','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6123','D_KKJ','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6124','D_RT_1990','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6125','D_Samboja','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6126','D_Lithuania_1994','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6127','D_Tete','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6128','D_Madzansua','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6129','D_Observatario','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6130','D_Moznet','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6131','D_Indian_1960','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6132','D_FD_1958','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6133','D_Estonia_1992','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6134','D_PDO_1993','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6135','D_Old_Hawaiian','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6136','D_St_Lawrence_Island','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6137','D_St_Paul_Island','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6138','D_St_George_Island','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6139','D_Puerto_Rico','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6140','D_North_American_1983_CSRS','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6141','D_Israel','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6142','D_Locodjo_1965','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6143','D_Abidjan_1987','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6144','D_Kalianpur_1937','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6145','D_Kalianpur_1962','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6146','D_Kalianpur_1975','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6147','D_Hanoi_1972','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6148','D_Hartebeesthoek_1994','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6149','D_CH1903','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6150','D_CH1903+','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6151','D_Swiss_TRF_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6152','D_North_American_1983_HARN','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6153','D_Rassadiran','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6154','D_European_1950_ED77','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6155','D_Dabola_1981','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6156','D_S_JTSK','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6157','D_Mount_Dillon','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6158','D_Naparima_1955','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6159','D_European_Libyan_1979','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6160','D_Chos_Malal_1914','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6161','D_Pampa_del_Castillo','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6162','D_Korean_Datum_1985','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6163','D_Yemen_NGN_1996','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6164','D_South_Yemen','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6165','D_Bissau','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6166','D_Korean_Datum_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6167','D_NZGD_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6168','D_Accra','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6169','D_American_Samoa_1962','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6170','D_SIRGAS','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6171','D_RGF_1993','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6172','D_POSGAR','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6173','D_IRENET95','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6174','D_Sierra_Leone_1924','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6175','D_Sierra_Leone_1968','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6176','D_Australian_Antarctic_1998','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6178','D_Pulkovo_1942_Adj_1983','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6179','D_Pulkovo_1942_Adj_1958','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6180','D_Estonia_1997','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6181','D_Luxembourg_1930','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6182','D_Azores_Occidental_Islands_1939','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6183','D_Azores_Central_Islands_1948','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6184','D_Azores_Oriental_Islands_1940','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6185','D_Madeira_1936','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6188','D_OSNI_1952','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6189','D_REGVEN','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6190','D_POSGAR_1998','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6191','D_Albanian_1987','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6192','D_Douala_1948','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6193','D_Manoca_1962','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6194','D_Qornoq_1927','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6195','D_Scoresbysund_1952','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6196','D_Ammassalik_1958','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6197','D_Garoua','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6198','D_Kousseri','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6199','D_Egypt_1930','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6200','D_Pulkovo_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6201','D_Adindan','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6202','D_Australian_1966','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6203','D_Australian_1984','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6204','D_Ain_el_Abd_1970','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6205','D_Afgooye','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6206','D_Agadez','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6207','D_Lisbon','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6208','D_Aratu','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6209','D_Arc_1950','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6210','D_Arc_1960','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6211','D_Batavia','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6212','D_Barbados_1938','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6213','D_Beduaram','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6214','D_Beijing_1954','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6215','D_Belge_1950','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6216','D_Bermuda_1957','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6218','D_Bogota','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6219','D_Bukit_Rimpah','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6220','D_Camacupa','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6221','D_Campo_Inchauspe','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6222','D_Cape','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6223','D_Carthage','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6224','D_Chua','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6225','D_Corrego_Alegre','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6226','D_Cote_d_Ivoire','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6227','D_Deir_ez_Zor','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6228','D_Douala','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6229','D_Egypt_1907','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6230','D_European_1950','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6231','D_European_1987','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6232','D_Fahud','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6233','D_Gandajika_1970','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6197','D_Garoua','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6235','D_Guyane_Francaise','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6236','D_Hu_Tzu_Shan','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6237','D_Hungarian_1972','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6238','D_Indonesian_1974','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6239','D_Indian_1954','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6240','D_Indian_1975','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6241','D_Jamaica_1875','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6242','D_Jamaica_1969','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6243','D_Kalianpur_1880','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6244','D_Kandawala','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6245','D_Kertau','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6246','D_Kuwait_Oil_Company','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6247','D_La_Canoa','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6248','D_Provisional_S_American_1956','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6249','D_Lake','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6250','D_Leigon','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6251','D_Liberia_1964','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6252','D_Lome','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6253','D_Luzon_1911','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6254','D_Hito_XVIII_1963','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6255','D_Herat_North','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6256','D_Mahe_1971','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6257','D_Makassar','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6258','D_ETRS_1989','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6259','D_Malongo_1987','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6260','D_Manoca','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6261','D_Merchich','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6262','D_Massawa','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6263','D_Minna','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6264','D_Mhast','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6265','D_Monte_Mario','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6266','D_Mporaloko','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6267','D_North_American_1927','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6268','D_North_American_Michigan','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6269','D_North_American_1983','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6270','D_Nahrwan_1967','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6271','D_Naparima_1972','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6272','D_New_Zealand_1949','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6273','D_NGO_1948','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6274','D_Datum_73','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6275','D_NTF','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6276','D_NSWC_9Z_2','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6277','D_OSGB_1936','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6278','D_OSGB_1970_SN','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6279','D_OS_SN_1980','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6280','D_Padang_1884','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6281','D_Palestine_1923','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6282','D_Pointe_Noire','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6283','D_GDA_1994','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6284','D_Pulkovo_1942','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6285','D_Qatar','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6286','D_Qatar_1948','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6287','D_Qornoq','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6288','D_Loma_Quintana','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6289','D_Amersfoort','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6618','D_South_American_1969','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6292','D_Sapper_Hill_1943','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6293','D_Schwarzeck','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6294','D_Segora','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6295','D_Serindung','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6296','D_Sudan','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6297','D_Tananarive_1925','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6298','D_Timbalai_1948','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6299','D_TM65','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6300','D_TM75','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6301','D_Tokyo','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6302','D_Trinidad_1903','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6303','D_Trucial_Coast_1948','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6304','D_Voirol_1875','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6306','D_Bern_1938','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6307','D_Nord_Sahara_1959','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6308','D_Stockholm_1938','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6309','D_Yacare','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6310','D_Yoff','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6311','D_Zanderij','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6312','D_MGI','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6313','D_Belge_1972','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6314','D_Deutsches_Hauptdreiecksnetz','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6315','D_Conakry_1905','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6316','D_Dealul_Piscului_1933','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6317','D_Dealul_Piscului_1970','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6318','D_NGN','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6319','D_Kuwait_Utility','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6322','D_WGS_1972','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6324','D_WGS_1972_BE','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6326','D_WGS_1984','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6600','D_Anguilla_1957','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6601','D_Antigua_1943','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6602','D_Dominica_1945','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6603','D_Grenada_1953','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6604','D_Montserrat_1958','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6605','D_St_Kitts_1955','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6606','D_St_Lucia_1955','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6607','D_St_Vincent_1945','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6608','D_NAD_1927_Definition_1976','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6609','D_NAD_1927_CGQ77','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6610','D_Xian_1980','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6611','D_Hong_Kong_1980','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6612','D_JGD_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6613','D_Gunung_Segara','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6614','D_QND_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6615','D_Porto_Santo_1936','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6616','D_Selvagem_Grande_1938','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6618','D_South_American_1969','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6619','D_SWEREF99','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6620','D_Point_58','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6621','D_Fort_Marigot','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6622','D_Sainte_Anne','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6623','D_CSG_1967','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6624','D_RGFG_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6625','D_Fort_Desaix','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6626','D_Reunion_1947','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6627','D_RGR_1992','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6628','D_Tahiti_1952','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6629','D_Tahaa_1954','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6630','D_IGN72_Nuku_Hiva','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6698','D_Kerguelen_Island_1949','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6632','D_Combani_1950','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6633','D_IGN56_Lifou','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6634','D_IGN72_Grande_Terre','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6636','D_Petrels_1972','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6637','D_Pointe_Geologie_Perroud_1950','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6638','D_Saint_Pierre_et_Miquelon_1950','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6639','D_MOP78','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6641','D_IGN53_Mare','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6642','D_ST84_Ile_des_Pins','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6643','D_ST71_Belep','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6644','D_NEA74_Noumea','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6645','D_RGNC_1991','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6646','D_Grand_Comoros','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6647','D_ITRF_1988','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6648','D_ITRF_1989','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6649','D_ITRF_1990','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6650','D_ITRF_1991','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6651','D_ITRF_1992','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6652','D_ITRF_1993','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6653','D_ITRF_1994','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6654','D_ITRF_1996','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6655','D_ITRF_1997','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6656','D_ITRF_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6657','D_Reykjavik_1900','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6658','D_Hjorsey_1955','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6659','D_Islands_Network_1993','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6660','D_Helle_1954','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6661','D_Latvia_1992','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6663','D_Porto_Santo_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6664','D_Azores_Oriental_Islands_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6665','D_Azores_Central_Islands_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6666','D_Lisbon_1890','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6667','D_Iraq_Kuwait_Boundary_1992','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6668','D_European_1979','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6670','D_IGM_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6671','D_Voirol_1879','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6672','D_Chatham_Island_1971','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6673','D_Chatham_Islands_1979','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6674','D_SIRGAS_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6675','D_Guam_1963','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6676','D_Vientiane_1982','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6677','D_Lao_1993','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6678','D_Lao_National_Datum_1997','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6679','D_Jouik_1961','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6680','D_Nouakchott_1965','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6682','D_Gulshan_303','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6683','D_Philippine_Reference_System_1992','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6684','D_Gan_1970','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6686','D_MAGNA','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6687','D_Reseau_Geodesique_de_la_Polynesie_Francaise','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6688','D_Fatu_Iva_1972','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6689','D_IGN63_Hiva_Oa','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6690','D_Tahiti_1979','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6691','D_Moorea_1987','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6692','D_Maupiti_1983','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6693','D_Nakhl-e_Ghanem','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6694','D_POSGAR_1994','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6695','D_Katanga_1955','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6696','D_Kasai_1953','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6697','D_IGC_1962_Arc_of_the_6th_Parallel_South','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6698','D_Kerguelen_Island_1949','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6699','D_Le_Pouce_1934','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6700','D_IGN_Astro_1960','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6701','D_Institut_Geographique_du_Congo_Belge_1955','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6702','D_Mauritania_1999','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6703','D_Mhast_1951','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6704','D_Mhast_Onshore','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6705','D_Mhast_Offshore','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6706','D_Egypt_Gulf_of_Suez_S-650_TL','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6707','D_Tern_Island_1961','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6708','D_Anna_1_1965','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6709','D_Beacon_E_1945','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6710','D_DOS_71_4','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6711','D_Astro_1952','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6712','D_Ascension_Island_1958','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6713','D_Ayabelle','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6714','D_Bellevue_IGN','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6715','D_Camp_Area','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6716','D_Canton_1966','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6717','D_Cape_Canaveral','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6718','D_Solomon_1968','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6719','D_Easter_Island_1967','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6720','D_Fiji_1986','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6721','D_Fiji_1956','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6722','D_ISTS_061_1968','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6723','D_Grand_Cayman_1959','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6724','D_ISTS_073_1969','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6725','D_Johnston_Island_1961','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6726','D_Little_Cayman_1961','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6727','D_Midway_1961','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6728','D_Pico_de_Las_Nieves','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6729','D_Pitcairn_1967','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6730','D_Santo_DOS_1965','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6731','D_Viti_Levu_1916','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6732','D_Wake_Eniwetok_1960','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6733','D_Wake_Island_1952','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6734','D_Tristan_1968','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6735','D_Kusaie_1951','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6736','D_Deception_Island','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6737','D_Korea_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6738','D_Hong_Kong_1963','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6739','D_Hong_Kong_1963_67','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6740','D_Parametrop_Zemp_1990','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6741','D_Faroe_Datum_1954','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6742','D_GDM_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6743','D_Karbala_1979_Polservice','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6744','D_Nahrwan_1934','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6745','D_Rauenberg_1983','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6746','D_Potsdam_1983','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6747','D_Greenland_1996','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6748','D_Vanua_Levu_1915','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6749','D_Reseau_Geodesique_de_Nouvelle_Caledonie_1991-93','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6750','D_ST87_Ouvea','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6751','D_Kertau_RSO','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6752','D_Viti_Levu_1912','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6753','D_fk89','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6754','D_Libyan_Geodetic_Datum_2006','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6755','D_Datum_Geodesi_Nasional_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6756','D_Vietnam_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6757','D_SVY21','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6758','D_Jamaica_2001','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6759','D_NAD_1983_NSRS2007','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6760','D_WGS_1966','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6761','D_Croatian_Terrestrial_Reference_System','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6762','D_Bermuda_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6763','D_Pitcairn_2006','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6764','D_Ross_Sea_Region_Geodetic_Datum_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6765','D_Slovenia_Geodetic_Datum_1996','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6896','D_ITRF_2005','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6901','D_ATF','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6902','D_Nord_de_Guerre','ESRI'); +INSERT INTO alias_name VALUES('geodetic_datum','EPSG','6903','D_Madrid_1870','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','3819','GCS_HD1909','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','3821','GCS_TWD_1967','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','3824','GCS_TWD_1997','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','3889','GCS_IGRS','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','3906','GCS_MGI_1901','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4001','GCS_Airy_1830','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4002','GCS_Airy_Modified','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4003','GCS_Australian','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4004','GCS_Bessel_1841','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4005','GCS_Bessel_Modified','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4006','GCS_Bessel_Namibia','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4007','GCS_Clarke_1858','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4008','GCS_Clarke_1866','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4009','GCS_Clarke_1866_Michigan','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4010','GCS_Clarke_1880_Benoit','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4011','GCS_Clarke_1880_IGN','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4012','GCS_Clarke_1880_RGS','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4013','GCS_Clarke_1880_Arc','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4014','GCS_Clarke_1880_SGA','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4015','GCS_Everest_Adj_1937','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4016','GCS_Everest_def_1967','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4018','GCS_Everest_Modified','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4019','GCS_GRS_1980','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4020','GCS_Helmert_1906','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4021','GCS_Indonesian','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4022','GCS_International_1924','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4023','GCS_MOLDREF99','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4024','GCS_Krasovsky_1940','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4025','GCS_NWL_9D','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4027','GCS_Plessis_1817','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4028','GCS_Struve_1860','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4029','GCS_War_Office','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4031','GCS_GEM_10C','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4032','GCS_OSU_86F','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4033','GCS_OSU_91A','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4034','GCS_Clarke_1880','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4035','GCS_Sphere','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4036','GCS_GRS_1967','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4042','GCS_Everest_1830','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4044','GCS_Everest_def_1962','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4045','GCS_Everest_def_1975','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4046','GCS_RGRDC_2005','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4047','GCS_Sphere_GRS_1980_Authalic','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4052','GCS_Sphere_Clarke_1866_Authalic','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4053','GCS_Sphere_International_1924_Authalic','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4054','GCS_Hughes_1980','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4055','GCS_WGS_1984_Major_Auxiliary_Sphere','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4075','GCS_SREF98','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4081','GCS_REGCAN95','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4120','GCS_Greek','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4121','GCS_GGRS_1987','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4122','GCS_ATS_1977','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4123','GCS_KKJ','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4124','GCS_RT_1990','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4125','GCS_Samboja','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4669','GCS_LKS_1994','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4127','GCS_Tete','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4128','GCS_Madzansua','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4129','GCS_Observatario','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4130','GCS_Moznet','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4131','GCS_Indian_1960','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4132','GCS_FD_1958','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4133','GCS_Estonia_1992','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4134','GCS_PDO_1993','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4135','GCS_Old_Hawaiian','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4136','GCS_St_Lawrence_Island','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4137','GCS_St_Paul_Island','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4138','GCS_St_George_Island','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4139','GCS_Puerto_Rico','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4617','GCS_North_American_1983_CSRS','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4141','GCS_Israel','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4142','GCS_Locodjo_1965','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4143','GCS_Abidjan_1987','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4144','GCS_Kalianpur_1937','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4145','GCS_Kalianpur_1962','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4146','GCS_Kalianpur_1975','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4147','GCS_Hanoi_1972','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4148','GCS_Hartebeesthoek_1994','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4149','GCS_CH1903','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4150','GCS_CH1903+','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4151','GCS_Swiss_TRF_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4152','GCS_North_American_1983_HARN','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4153','GCS_Rassadiran','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4154','GCS_European_1950_ED77','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4155','GCS_Dabola_1981','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4156','GCS_S_JTSK','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4157','GCS_Mount_Dillon','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4158','GCS_Naparima_1955','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4159','GCS_European_Libyan_Datum_1979','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4160','GCS_Chos_Malal_1914','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4161','GCS_Pampa_del_Castillo','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4162','GCS_Korean_Datum_1985','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4163','GCS_Yemen_NGN_1996','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4164','GCS_South_Yemen','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4165','GCS_Bissau','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4166','GCS_Korean_Datum_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4167','GCS_NZGD_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4168','GCS_Accra','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4169','GCS_American_Samoa_1962','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4170','GCS_SIRGAS','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4171','GCS_RGF_1993','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4172','GCS_POSGAR','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4173','GCS_IRENET95','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4174','GCS_Sierra_Leone_1924','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4175','GCS_Sierra_Leone_1968','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4176','GCS_Australian_Antarctic_1998','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4178','GCS_Pulkovo_1942_Adj_1983','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4179','GCS_Pulkovo_1942_Adj_1958','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4180','GCS_Estonia_1997','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4181','GCS_Luxembourg_1930','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4182','GCS_Azores_Occidental_1939','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4183','GCS_Azores_Central_1948','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4184','GCS_Azores_Oriental_1940','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4185','GCS_Madeira_1936','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4188','GCS_OSNI_1952','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4189','GCS_REGVEN','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4190','GCS_POSGAR_1998','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4191','GCS_Albanian_1987','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4192','GCS_Douala_1948','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4193','GCS_Manoca_1962','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4194','GCS_Qornoq_1927','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4195','GCS_Scoresbysund_1952','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4196','GCS_Ammassalik_1958','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4197','GCS_Garoua','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4198','GCS_Kousseri','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4199','GCS_Egypt_1930','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4200','GCS_Pulkovo_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4201','GCS_Adindan','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4202','GCS_Australian_1966','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4203','GCS_Australian_1984','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4204','GCS_Ain_el_Abd_1970','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4205','GCS_Afgooye','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4206','GCS_Agadez','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4207','GCS_Lisbon','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4208','GCS_Aratu','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4209','GCS_Arc_1950','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4210','GCS_Arc_1960','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4211','GCS_Batavia','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4212','GCS_Barbados_1938','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4213','GCS_Beduaram','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4214','GCS_Beijing_1954','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4215','GCS_Belge_1950','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4216','GCS_Bermuda_1957','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4218','GCS_Bogota','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4219','GCS_Bukit_Rimpah','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4220','GCS_Camacupa','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4221','GCS_Campo_Inchauspe','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4222','GCS_Cape','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4223','GCS_Carthage','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4224','GCS_Chua','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4225','GCS_Corrego_Alegre','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4226','GCS_Cote_d_Ivoire','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4227','GCS_Deir_ez_Zor','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4228','GCS_Douala','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4229','GCS_Egypt_1907','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4230','GCS_European_1950','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4231','GCS_European_1987','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4232','GCS_Fahud','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4233','GCS_Gandajika_1970','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4197','GCS_Garoua','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4235','GCS_Guyane_Francaise','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4236','GCS_Hu_Tzu_Shan','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4237','GCS_Hungarian_1972','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4238','GCS_Indonesian_1974','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4239','GCS_Indian_1954','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4240','GCS_Indian_1975','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4241','GCS_Jamaica_1875','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4242','GCS_Jamaica_1969','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4243','GCS_Kalianpur_1880','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4244','GCS_Kandawala','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4245','GCS_Kertau','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4246','GCS_Kuwait_Oil_Company','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4247','GCS_La_Canoa','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4248','GCS_Provisional_S_American_1956','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4249','GCS_Lake','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4250','GCS_Leigon','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4251','GCS_Liberia_1964','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4252','GCS_Lome','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4253','GCS_Luzon_1911','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4254','GCS_Hito_XVIII_1963','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4255','GCS_Herat_North','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4256','GCS_Mahe_1971','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4257','GCS_Makassar','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4258','GCS_ETRS_1989','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4259','GCS_Malongo_1987','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4260','GCS_Manoca','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4261','GCS_Merchich','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4262','GCS_Massawa','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4263','GCS_Minna','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4264','GCS_Mhast','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4265','GCS_Monte_Mario','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4266','GCS_Mporaloko','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4267','GCS_North_American_1927','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4268','GCS_North_American_Michigan','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4269','GCS_North_American_1983','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4270','GCS_Nahrwan_1967','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4271','GCS_Naparima_1972','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4272','GCS_New_Zealand_1949','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4273','GCS_NGO_1948','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4274','GCS_Datum_73','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4275','GCS_NTF','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4276','GCS_NSWC_9Z_2','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4277','GCS_OSGB_1936','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4278','GCS_OSGB_1970_SN','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4279','GCS_OS_SN_1980','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4280','GCS_Padang_1884','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4281','GCS_Palestine_1923','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4282','GCS_Pointe_Noire','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4283','GCS_GDA_1994','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4284','GCS_Pulkovo_1942','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4285','GCS_Qatar_1974','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4286','GCS_Qatar_1948','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4287','GCS_Qornoq','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4288','GCS_Loma_Quintana','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4289','GCS_Amersfoort','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4618','GCS_South_American_1969','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4292','GCS_Sapper_Hill_1943','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4293','GCS_Schwarzeck','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4294','GCS_Segora','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4295','GCS_Serindung','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4296','GCS_Sudan','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4297','GCS_Tananarive_1925','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4298','GCS_Timbalai_1948','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4299','GCS_TM65','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4300','GCS_TM75','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4301','GCS_Tokyo','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4302','GCS_Trinidad_1903','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4303','GCS_Trucial_Coast_1948','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4304','GCS_Voirol_1875','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6305','D_Voirol_Unifie_1960','Voirol Unifie 1960',NULL,'EPSG','7012','EPSG','8901','EPSG','2730',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','4305','GCS_Voirol_Unifie_1960',NULL,NULL,'geographic 2D','EPSG','6403','ESRI','6305','EPSG','2730',NULL,0); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4306','GCS_Bern_1938','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4307','GCS_Nord_Sahara_1959','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4308','GCS_RT38','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4309','GCS_Yacare','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4310','GCS_Yoff','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4311','GCS_Zanderij','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4312','GCS_MGI','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4313','GCS_Belge_1972','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4314','GCS_Deutsches_Hauptdreiecksnetz','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4315','GCS_Conakry_1905','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4316','GCS_Dealul_Piscului_1933','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4317','GCS_Dealul_Piscului_1970','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4318','GCS_NGN','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4319','GCS_KUDAMS','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4322','GCS_WGS_1972','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4324','GCS_WGS_1972_BE','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4326','GCS_WGS_1984','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4463','GCS_RGSPM_2006','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','1038','D_Reseau_Geodesique_de_St_Pierre_et_Miquelon_2006','Reseau Geodesique de St Pierre et Miquelon 2006',NULL,'EPSG','7019','EPSG','8901','EPSG','1220',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','4466','GCS_RGSPM_2006',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1038','EPSG','1220',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','4466','EPSG','4463','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','1036','D_Reseau_Geodesique_de_Mayotte_2004','Reseau Geodesique de Mayotte 2004',NULL,'EPSG','7019','EPSG','8901','EPSG','1159',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','4469','GCS_RGM_2004',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1036','EPSG','1159',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','4469','EPSG','4470','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4470','GCS_RGM_2004','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4475','GCS_Cadastre_1997','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4483','GCS_Mexican_Datum_of_1993','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4490','GCS_China_Geodetic_Coordinate_System_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4555','GCS_New_Beijing','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4558','GCS_RRAF_1991','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4600','GCS_Anguilla_1957','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4601','GCS_Antigua_1943','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4602','GCS_Dominica_1945','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4603','GCS_Grenada_1953','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4604','GCS_Montserrat_1958','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4605','GCS_St_Kitts_1955','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4606','GCS_St_Lucia_1955','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4607','GCS_St_Vincent_1945','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4608','GCS_NAD_1927_Definition_1976','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4609','GCS_NAD_1927_CGQ77','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4610','GCS_Xian_1980','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4611','GCS_Hong_Kong_1980','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4612','GCS_JGD_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4613','GCS_Gunung_Segara','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4614','GCS_QND_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4615','GCS_Porto_Santo_1936','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4616','GCS_Selvagem_Grande_1938','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4617','GCS_North_American_1983_CSRS','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4618','GCS_South_American_1969','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4619','GCS_SWEREF99','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4620','GCS_Point_58','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4621','GCS_Fort_Marigot','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4622','GCS_Sainte_Anne','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4623','GCS_CSG_1967','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4624','GCS_RGFG_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4625','GCS_Fort_Desaix','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4626','GCS_Reunion_1947','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4627','GCS_RGR_1992','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4628','GCS_Tahiti_1952','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4629','GCS_Tahaa_1954','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4630','GCS_IGN72_Nuku_Hiva','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4698','GCS_Kerguelen_Island_1949','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4632','GCS_Combani_1950','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4633','GCS_IGN56_Lifou','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4636','GCS_Petrels_1972','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4637','GCS_Pointe_Geologie_Perroud_1950','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4638','GCS_Saint_Pierre_et_Miquelon_1950','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4639','GCS_MOP78','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4641','GCS_IGN53_Mare','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4642','GCS_ST84_Ile_des_Pins','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4643','GCS_ST71_Belep','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4644','GCS_NEA74_Noumea','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4645','GCS_RGNC_1991','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4646','GCS_Grand_Comoros','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4657','GCS_Reykjavik_1900','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4658','GCS_Hjorsey_1955','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4659','GCS_ISN_1993','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4660','GCS_Helle_1954','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4661','GCS_LKS_1992','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4662','GCS_IGN72_Grande_Terre','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4663','GCS_Porto_Santo_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4664','GCS_Azores_Oriental_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4665','GCS_Azores_Central_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4666','GCS_Lisbon_1890','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4667','GCS_IKBD_1992','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4668','GCS_European_1979','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4669','GCS_LKS_1994','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4670','GCS_IGM_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4671','GCS_Voirol_1879','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4672','GCS_Chatham_Island_1971','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4673','GCS_Chatham_Islands_1979','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4674','GCS_SIRGAS_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4675','GCS_Guam_1963','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4676','GCS_Vientiane_1982','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4677','GCS_Lao_1993','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4678','GCS_Lao_1997','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4679','GCS_Jouik_1961','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4680','GCS_Nouakchott_1965','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4682','GCS_Gulshan_303','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4683','GCS_PRS_1992','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4684','GCS_Gan_1970','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4686','GCS_MAGNA','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4687','GCS_RGPF','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4688','GCS_Fatu_Iva_1972','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4689','GCS_IGN63_Hiva_Oa','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4690','GCS_Tahiti_1979','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4691','GCS_Moorea_1987','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4692','GCS_Maupiti_1983','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4693','GCS_Nakhl-e_Ghanem','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4694','GCS_POSGAR_1994','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4695','GCS_Katanga_1955','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4696','GCS_Kasai_1953','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4697','GCS_IGC_1962_6th_Parallel_South','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4698','GCS_Kerguelen_Island_1949','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4699','GCS_Le_Pouce_1934','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4700','GCS_IGN_Astro_1960','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4701','GCS_IGCB_1955','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4702','GCS_Mauritania_1999','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4703','GCS_Mhast_1951','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4704','GCS_Mhast_Onshore','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4705','GCS_Mhast_Offshore','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4706','GCS_Egypt_Gulf_of_Suez_S-650_TL','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4707','GCS_Tern_Island_1961','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4708','GCS_Anna_1_1965','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4709','GCS_Beacon_E_1945','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4710','GCS_DOS_71_4','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4711','GCS_Astro_1952','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4712','GCS_Ascension_Island_1958','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4713','GCS_Ayabelle','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4714','GCS_Bellevue_IGN','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4715','GCS_Camp_Area','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4716','GCS_Canton_1966','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4717','GCS_Cape_Canaveral','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4718','GCS_Solomon_1968','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4719','GCS_Easter_Island_1967','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4720','GCS_Fiji_1986','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4721','GCS_Fiji_1956','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4722','GCS_ISTS_061_1968','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4723','GCS_Grand_Cayman_1959','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4724','GCS_ISTS_073_1969','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4725','GCS_Johnston_Island_1961','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4726','GCS_Little_Cayman_1961','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4727','GCS_Midway_1961','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4728','GCS_Pico_de_Las_Nieves','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4729','GCS_Pitcairn_1967','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4730','GCS_Santo_DOS_1965','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4731','GCS_Viti_Levu_1916','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4732','GCS_Wake_Eniwetok_1960','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4733','GCS_Wake_Island_1952','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4734','GCS_Tristan_1968','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4735','GCS_Kusaie_1951','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4736','GCS_Deception_Island','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4737','GCS_Korea_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4738','GCS_Hong_Kong_1963','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4739','GCS_Hong_Kong_1963_67','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4740','GCS_PZ_1990','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4741','GCS_FD_1954','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4742','GCS_GDM_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4743','GCS_Karbala_1979_Polservice','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4744','GCS_Nahrwan_1934','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4745','GCS_RD/83','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4746','GCS_PD/83','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4747','GCS_Greenland_1996','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4748','GCS_Vanua_Levu_1915','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4749','GCS_RGNC_1991-93','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4750','GCS_ST87_Ouvea','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4751','GCS_Kertau_RSO','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4752','GCS_Viti_Levu_1912','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4753','GCS_fk89','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4754','GCS_LGD2006','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4755','GCS_DGN_1995','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4756','GCS_VN_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4757','GCS_SVY21','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4758','GCS_JAD_2001','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4759','GCS_NAD_1983_NSRS2007','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4760','GCS_WGS_1966','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4761','GCS_HTRS96','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4762','GCS_Bermuda_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4763','GCS_Pitcairn_2006','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4764','GCS_RSRGD2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4765','GCS_Slovenia_1996','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4801','GCS_Bern_1898_Bern','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4802','GCS_Bogota_Bogota','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4803','GCS_Lisbon_Lisbon','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4804','GCS_Makassar_Jakarta','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4805','GCS_MGI_Ferro','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4806','GCS_Monte_Mario_Rome','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4807','GCS_NTF_Paris','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4808','GCS_Padang_1884_Jakarta','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4809','GCS_Belge_1950_Brussels','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4810','GCS_Tananarive_1925_Paris','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4811','GCS_Voirol_1875_Paris','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6305_Paris','D_Voirol_Unifie_1960_Paris',NULL,'Reseau Geodesique de Mayotte 2004 with Paris prime meridian','EPSG','7019','EPSG','8903','EPSG','2730',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','4812','GCS_Voirol_Unifie_1960_Paris',NULL,NULL,'geographic 2D','EPSG','6403','ESRI','6305_Paris','EPSG','2730',NULL,0); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4813','GCS_Batavia_Jakarta','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4814','GCS_RT38_Stockholm','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4815','GCS_Greek_Athens','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4816','GCS_Carthage_Paris','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4817','GCS_NGO_1948_Oslo','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4818','GCS_S_JTSK_Ferro','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4819','GCS_Nord_Sahara_1959_Paris','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4820','GCS_Gunung_Segara_Jakarta','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4821','GCS_Voirol_1879_Paris','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4823','GCS_Sao_Tome','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4824','GCS_Principe','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4901','GCS_ATF_Paris','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4902','GCS_Nord_de_Guerre_Paris','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4903','GCS_Madrid_1870_Madrid','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','4904','GCS_Lisbon_1890_Lisbon','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5013','GCS_PTRA08','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5228','GCS_S_JTSK/05','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5229','GCS_S_JTSK/05_Ferro','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5233','GCS_SLD99','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5246','GCS_GDBD2009','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5252','GCS_TUREF','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5264','GCS_DRUKREF_03','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5324','GCS_ISN_2004','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5340','GCS_POSGAR_2007','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5354','GCS_MARGEN','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5360','GCS_SIRGAS-Chile','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5365','GCS_CR05','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5371','GCS_MARCARIO_SOLIS','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5373','GCS_Peru96','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5381','GCS_SIRGAS-ROU98','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5393','GCS_SIRGAS_ES2007.8','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5451','GCS_Ocotepeque_1935','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5464','GCS_Sibun_Gorge_1922','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5467','GCS_Panama-Colon_1911','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5489','GCS_RGAF09','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5524','GCS_Corrego_Alegre_1961','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5527','GCS_SAD_1969_96','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5546','GCS_PNG94','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5561','GCS_Ukraine_2000','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5593','GCS_FEH2010','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5681','GCS_DB_REF','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','5886','GCS_TGD2005','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','6135','GCS_CIGD11','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','6207','GCS_Nepal_Nagarkot','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','6311','GCS_CGRS_1993','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','6318','GCS_NAD_1983_2011','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','6322','GCS_NAD_1983_PA11','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','6325','GCS_NAD_1983_MA11','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','6365','GCS_Mexico_ITRF2008','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','6668','GCS_JGD_2011','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','6706','GCS_RDN2008','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','6783','GCS_NAD_1983_CORS96','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','6881','GCS_Aden_1925','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','6882','GCS_Bekaa_Valley_1920','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','6883','GCS_Bioko','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','6892','GCS_South_East_Island_1943','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','6894','GCS_Gambia','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','6983','IG05_Intermediate_CRS','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','7139','IGD05(2012)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','6990','IG05(2012)_Intermediate_CRS','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','7035','RGSPM06_(lon-lat)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','7037','RGR92_(lon-lat)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','7039','RGM04_(lon-lat)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','7041','RGFG95_(lon-lat)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','7073','GCS_RGTAAF07','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','7084','RGF93_(lon-lat)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','7086','RGAF09_(lon-lat)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','7133','RGTAAF07_(lon-lat)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','7139','IGD05(2012)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','7881','St_Helena_Tritan','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','8042','Gusterberg(Ferro)','ESRI'); +INSERT INTO alias_name VALUES('geodetic_crs','EPSG','8043','St._Stephen(Ferro)','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6760','D_WGS_1966','WGS 1966',NULL,'ESRI','107001','EPSG','8901','EPSG','1262',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37001','GCS_WGS_1966',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6760','EPSG','1262',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37001','EPSG','4760','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','106002','D_Fischer_1960','Fischer 1960',NULL,'ESRI','107002','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37002','GCS_Fischer_1960',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106002','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106003','D_Fischer_1968','Fischer 1968',NULL,'ESRI','107003','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37003','GCS_Fischer_1968',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106003','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106004','D_Fischer_Modified','Fischer modified',NULL,'ESRI','107004','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37004','GCS_Fischer_Modified',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106004','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106005','D_Hough_1960','Hough 1960',NULL,'ESRI','7053','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37005','GCS_Hough_1960',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106005','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106006','D_Everest_Modified_1969','Everest modified 1969',NULL,'ESRI','7056','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37006','GCS_Everest_Modified_1969',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106006','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106007','D_Walbeck','Walbeck',NULL,'ESRI','107007','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37007','GCS_Walbeck',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106007','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106008','D_Sphere_ARC_INFO','Authalic sphere (ARC/INFO)',NULL,'ESRI','107008','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37008','GCS_Sphere_ARC_INFO',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106008','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','6668','D_European_1979','European 1979',NULL,'EPSG','7022','EPSG','8901','EPSG','1297',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37201','GCS_European_1979',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6668','EPSG','1297',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37201','EPSG','4668','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','106202','D_Everest_Bangladesh','Everest - Bangladesh',NULL,'EPSG','7015','EPSG','8901','EPSG','1041',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37202','GCS_Everest_Bangladesh',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106202','EPSG','1041',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106203','D_Everest_India_Nepal','Everest - India and Nepal',NULL,'EPSG','7044','EPSG','8901','EPSG','1121',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37203','GCS_Everest_India_Nepal',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106203','EPSG','1121',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','6658','D_Hjorsey_1955','Hjorsey 1955',NULL,'EPSG','7022','EPSG','8901','EPSG','3262',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37204','GCS_Hjorsey_1955',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6658','EPSG','3262',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37204','EPSG','4658','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6739','D_Hong_Kong_1963_67','Hong Kong 1963(67)',NULL,'EPSG','7022','EPSG','8901','EPSG','1118',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37205','GCS_Hong_Kong_1963_67',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6739','EPSG','1118',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37205','EPSG','4739','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','106206','D_Oman','Oman',NULL,'EPSG','7012','EPSG','8901','EPSG','1183',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37206','GCS_Oman',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106206','EPSG','1183',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106207','D_South_Asia_Singapore','South Asia Singapore',NULL,'ESRI','107004','EPSG','8901','EPSG','1210',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37207','GCS_South_Asia_Singapore',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106207','EPSG','1210',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','6713','D_Ayabelle','Ayabelle Lighthouse',NULL,'EPSG','7012','EPSG','8901','EPSG','1081',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37208','GCS_Ayabelle',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6713','EPSG','1081',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37208','EPSG','4713','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6620','D_Point_58','Point 58',NULL,'EPSG','7012','EPSG','8901','EPSG','2790',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37211','GCS_Point_58',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6620','EPSG','2790',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37211','EPSG','4620','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6709','D_Beacon_E_1945','Astro Beacon E 1945 (Iwo Jima 1945)',NULL,'EPSG','7022','EPSG','8901','EPSG','3200',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37212','GCS_Beacon_E_1945',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6709','EPSG','3200',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37212','EPSG','4709','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6707','D_Tern_Island_1961','Tern Island Astro 1961',NULL,'EPSG','7022','EPSG','8901','EPSG','3181',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37213','GCS_Tern_Island_1961',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6707','EPSG','3181',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37213','EPSG','4707','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6711','D_Astro_1952','Astronomical Station 1952 (Marcus Island 1952 )',NULL,'EPSG','7022','EPSG','8901','EPSG','1872',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37214','GCS_Astro_1952',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6711','EPSG','1872',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37214','EPSG','4711','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6714','D_Bellevue_IGN','Bellevue IGN',NULL,'EPSG','7022','EPSG','8901','EPSG','3193',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37215','GCS_Bellevue_IGN',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6714','EPSG','3193',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37215','EPSG','4714','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6716','D_Canton_1966','Canton Astro 1966 (Phoenix Islands 1966)',NULL,'EPSG','7022','EPSG','8901','EPSG','3196',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37216','GCS_Canton_1966',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6716','EPSG','3196',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37216','EPSG','4716','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6672','D_Chatham_Island_1971','Chatham Island Astro 1971',NULL,'EPSG','7022','EPSG','8901','EPSG','2889',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37217','GCS_Chatham_Island_1971',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6672','EPSG','2889',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37217','EPSG','4672','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','106218','D_DOS_1968','DOS 1968',NULL,'EPSG','7022','EPSG','8901','EPSG','3198',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37218','GCS_DOS_1968',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106218','EPSG','3198',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','6719','D_Easter_Island_1967','Easter Island 1967',NULL,'EPSG','7022','EPSG','8901','EPSG','3188',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37219','GCS_Easter_Island_1967',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6719','EPSG','3188',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37219','EPSG','4719','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6675','D_Guam_1963','Guam 1963',NULL,'EPSG','7008','EPSG','8901','EPSG','4167',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37220','GCS_Guam_1963',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6675','EPSG','4167',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37220','EPSG','4675','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','106221','D_GUX_1','GUX 1 Astro',NULL,'EPSG','7022','EPSG','8901','EPSG','3197',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37221','GCS_GUX_1',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106221','EPSG','3197',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','6725','D_Johnston_Island_1961','Johnston Island 1961',NULL,'EPSG','7022','EPSG','8901','EPSG','3201',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37222','GCS_Johnston_Island_1961',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6725','EPSG','3201',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37222','EPSG','4725','ESRI'); +INSERT INTO "geodetic_crs" VALUES('ESRI','37223','GCS_Carthage',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6223','EPSG','1236',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37223','EPSG','4223','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6727','D_Midway_1961','Midway Astro 1961',NULL,'EPSG','7022','EPSG','8901','EPSG','3202',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37224','GCS_Midway_1961',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6727','EPSG','3202',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37224','EPSG','4727','ESRI'); +INSERT INTO "geodetic_crs" VALUES('ESRI','37225','GCS_Carthage_Grad',NULL,NULL,'geographic 2D','EPSG','6403','EPSG','6223','EPSG','1236',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','6729','D_Pitcairn_1967','Pitcairn Astro 1967',NULL,'EPSG','7022','EPSG','8901','EPSG','3208',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37226','GCS_Pitcairn_1967',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6729','EPSG','3208',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37226','EPSG','4729','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6730','D_Santo_DOS_1965','Santo DOS 1965',NULL,'EPSG','7022','EPSG','8901','EPSG','3194',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37227','GCS_Santo_DOS_1965',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6730','EPSG','3194',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37227','EPSG','4730','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6731','D_Viti_Levu_1916','Viti Levu 1916',NULL,'EPSG','7012','EPSG','8901','EPSG','3195',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37228','GCS_Viti_Levu_1916',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6731','EPSG','3195',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37228','EPSG','4731','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6732','D_Wake_Eniwetok_1960','Wake-Eniwetok 1960 (Marshall Islands 1960)',NULL,'ESRI','7053','EPSG','8901','EPSG','3191',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37229','GCS_Wake_Eniwetok_1960',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6732','EPSG','3191',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37229','EPSG','4732','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6733','D_Wake_Island_1952','Wake Island Astro 1952',NULL,'EPSG','7022','EPSG','8901','EPSG','3190',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37230','GCS_Wake_Island_1952',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6733','EPSG','3190',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37230','EPSG','4733','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6708','D_Anna_1_1965','Anna 1 Astro 1965 (Cocos Islands 1965)',NULL,'EPSG','7003','EPSG','8901','EPSG','1069',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37231','GCS_Anna_1_1965',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6708','EPSG','1069',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37231','EPSG','4708','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6684','D_Gan_1970','Gan 1970',NULL,'EPSG','7022','EPSG','8901','EPSG','3274',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37232','GCS_Gan_1970',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6684','EPSG','3274',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37232','EPSG','4684','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6724','D_ISTS_073_1969','ISTS 073 Astro 1969 (Diego Garcia 1969)',NULL,'EPSG','7022','EPSG','8901','EPSG','3189',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37233','GCS_ISTS_073_1969',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6724','EPSG','3189',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37233','EPSG','4724','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6698','D_Kerguelen_Island_1949','Kerguelen Island 1949',NULL,'EPSG','7022','EPSG','8901','EPSG','2816',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37234','GCS_Kerguelen_Island_1949',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6698','EPSG','2816',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37234','EPSG','4698','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6626','D_Reunion_1947','Reunion 1947',NULL,'EPSG','7022','EPSG','8901','EPSG','3337',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37235','GCS_Reunion_1947',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6626','EPSG','3337',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37235','EPSG','4626','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6712','D_Ascension_Island_1958','Ascension Island 1958',NULL,'EPSG','7022','EPSG','8901','EPSG','3182',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37237','GCS_Ascension_Island_1958',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6712','EPSG','3182',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37237','EPSG','4712','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6710','D_DOS_71_4','Astro DOS 71/4 (St. Helena 1971)',NULL,'EPSG','7022','EPSG','8901','EPSG','3183',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37238','GCS_DOS_71_4',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6710','EPSG','3183',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37238','EPSG','4710','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6717','D_Cape_Canaveral','Cape Canaveral',NULL,'EPSG','7008','EPSG','8901','EPSG','3206',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37239','GCS_Cape_Canaveral',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6717','EPSG','3206',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37239','EPSG','4717','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','106240','D_Fort_Thomas_1955','Fort Thomas 1955',NULL,'EPSG','7012','EPSG','8901','EPSG','1200',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37240','GCS_Fort_Thomas_1955',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106240','EPSG','1200',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106241','D_Graciosa_Base_SW_1948','Graciosa Base SW 1948',NULL,'EPSG','7022','EPSG','8901','EPSG','1301',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37241','GCS_Graciosa_Base_SW_1948',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106241','EPSG','1301',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','6722','D_ISTS_061_1968','ISTS 061 Astro 1968 (South Georgia 1968)',NULL,'EPSG','7022','EPSG','8901','EPSG','3529',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37242','GCS_ISTS_061_1968',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6722','EPSG','3529',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37242','EPSG','4722','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','106243','D_LC5_1961','L.C. 5 Astro 1961',NULL,'EPSG','7008','EPSG','8901','EPSG','3207',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37243','GCS_LC5_1961',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106243','EPSG','3207',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106245','D_Observatorio_Meteorologico_1939','Observ. Meteorologico 1939',NULL,'EPSG','7022','EPSG','8901','EPSG','1344',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37245','GCS_Observatorio_Meteorologico_1939',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106245','EPSG','1344',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','6728','D_Pico_de_Las_Nieves','Pico de Las Nieves',NULL,'EPSG','7022','EPSG','8901','EPSG','3873',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37246','GCS_Pico_de_Las_Nieves',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6728','EPSG','3873',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37246','EPSG','4728','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6615','D_Porto_Santo_1936','Porto Santo 1936',NULL,'EPSG','7022','EPSG','8901','EPSG','1314',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37247','GCS_Porto_Santo_1936',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6615','EPSG','1314',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37247','EPSG','4615','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','106249','D_Sao_Braz','Sao Braz',NULL,'EPSG','7022','EPSG','8901','EPSG','1345',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37249','GCS_Sao_Braz',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106249','EPSG','1345',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','6616','D_Selvagem_Grande_1938','Selvagem Grande 1938',NULL,'EPSG','7022','EPSG','8901','EPSG','2779',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37250','GCS_Selvagem_Grande_1938',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6616','EPSG','2779',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37250','EPSG','4616','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6734','D_Tristan_1968','Tristan Astro 1968',NULL,'EPSG','7022','EPSG','8901','EPSG','3184',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37251','GCS_Tristan_1968',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6734','EPSG','3184',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37251','EPSG','4734','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6169','D_American_Samoa_1962','American Samoa 1962',NULL,'EPSG','7008','EPSG','8901','EPSG','3109',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37252','GCS_American_Samoa_1962',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6169','EPSG','3109',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37252','EPSG','4169','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6715','D_Camp_Area','Camp Area Astro',NULL,'EPSG','7022','EPSG','8901','EPSG','3205',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37253','GCS_Camp_Area',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6715','EPSG','3205',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37253','EPSG','4715','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6736','D_Deception_Island','Deception Island',NULL,'EPSG','7012','EPSG','8901','EPSG','3204',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37254','GCS_Deception_Island',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6736','EPSG','3204',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37254','EPSG','4736','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6613','D_Gunung_Segara','Gunung Segara',NULL,'EPSG','7004','EPSG','8901','EPSG','1360',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37255','GCS_Gunung_Segara',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6613','EPSG','1360',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37255','EPSG','4613','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','106257','D_S42_Hungary','S-42 Hungary',NULL,'EPSG','7024','EPSG','8901','EPSG','1119',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37257','GCS_S42_Hungary',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106257','EPSG','1119',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','6735','D_Kusaie_1951','Kusaie Astro 1951',NULL,'EPSG','7022','EPSG','8901','EPSG','3192',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','37259','GCS_Kusaie_1951',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6735','EPSG','3192',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','37259','EPSG','4735','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','106260','D_Alaskan_Islands','Alaskan Islands',NULL,'EPSG','7008','EPSG','8901','EPSG','1330',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','37260','GCS_Alaskan_Islands',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106260','EPSG','1330',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104000','GCS_Assumed_Geographic_1',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6267','EPSG','1263',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106009','D_Kyrgyz_Republic_2006','Kyrgyz Republic 2006',NULL,'EPSG','7019','EPSG','8901','EPSG','1137',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104009','GCS_Kyrg-06',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106009','EPSG','1137',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104010','GCS_IGS08',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1141','EPSG','2830',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104011','WGS_1984_(G730)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1152','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104012','WGS_1984_(G873)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1153','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104013','WGS_1984_(G1150)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1154','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104014','WGS_1984_(G1674)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1155','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104015','WGS_1984_(G1762)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1156','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104016','WGS_1984_(Transit)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1166','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104017','PZ-90.02',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1157','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104018','PZ-90.11',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1158','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104019','ITRF2014',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1165','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','1128','D_JGD_2011','Japan Geodetic Datum 2011',NULL,'EPSG','7019','EPSG','8901','EPSG','1129',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104020','GCS_JGD_2011',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1128','EPSG','1129',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104020','EPSG','6668','ESRI'); +INSERT INTO "geodetic_crs" VALUES('ESRI','104021','IGS14',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1191','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','6023','D_International_1967','International 1967',NULL,'ESRI','7023','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104023','GCS_International_1967',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6023','EPSG','1263',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106047','D_Sphere_GRS_1980_Mean_Radius','GRS 1980 Mean Radius Sphere',NULL,'ESRI','107047','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104047','GCS_Sphere_GRS_1980_Mean_Radius',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106047','EPSG','1263',NULL,0); +INSERT INTO "area" VALUES('ESRI','1','UK - London','UK - London',51.2,51.8,-0.7,0.6,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106050','D_Xrail84','Xrail84',NULL,'EPSG','7030','EPSG','8901','ESRI','1',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104050','GCS_Xrail84',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106050','ESRI','1',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','1056','D_GDBD2009','GDBD2009',NULL,'EPSG','7019','EPSG','8901','EPSG','1055',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104100','GCS_GDBD2009',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1056','EPSG','1055',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104100','EPSG','5246','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','106101','D_Estonia_1937','Estonia 1937',NULL,'EPSG','7004','EPSG','8901','EPSG','1090',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104101','GCS_Estonia_1937',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106101','EPSG','1090',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106102','D_Hermannskogel','Hermannskogel',NULL,'EPSG','7004','EPSG','8901','EPSG','1321',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104102','GCS_Hermannskogel',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106102','EPSG','1321',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106103','D_Sierra_Leone_1960','Sierra Leone 1960',NULL,'EPSG','7012','EPSG','8901','EPSG','1209',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104103','GCS_Sierra_Leone_1960',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106103','EPSG','1209',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','6611','D_Hong_Kong_1980','Hong Kong 1980',NULL,'EPSG','7022','EPSG','8901','EPSG','1118',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104104','GCS_Hong_Kong_1980',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6611','EPSG','1118',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104104','EPSG','4611','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','106262','D_Datum_Lisboa_Bessel','Datum Lisboa Bessel',NULL,'EPSG','7004','EPSG','8901','EPSG','1193',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104105','GCS_Datum_Lisboa_Bessel',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106262','EPSG','1193',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106263','D_Datum_Lisboa_Hayford','Datum Lisboa Hayford',NULL,'EPSG','7022','EPSG','8901','EPSG','1193',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104106','GCS_Datum_Lisboa_Hayford',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106263','EPSG','1193',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','6171','D_RGF_1993','Reseau Geodesique Francais 1993',NULL,'EPSG','7019','EPSG','8901','EPSG','1096',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104107','GCS_RGF_1993',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6171','EPSG','1096',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104107','EPSG','4171','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6167','D_NZGD_2000','New Zealand Geodetic Datum 2000',NULL,'EPSG','7019','EPSG','8901','EPSG','1175',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104108','GCS_NZGD_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6167','EPSG','1175',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104108','EPSG','4167','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','106266','D_Pohnpei','Pohnpei - Fed. States Micronesia',NULL,'EPSG','7008','EPSG','8901','EPSG','1161',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104109','GCS_Pohnpei',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106266','EPSG','1161',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','6189','D_REGVEN','REGVEN',NULL,'EPSG','7019','EPSG','8901','EPSG','1251',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104110','GCS_REGVEN',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6189','EPSG','1251',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104110','EPSG','4189','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6612','D_JGD_2000','Japan Geodetic Datum 2000',NULL,'EPSG','7019','EPSG','8901','EPSG','1129',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104111','GCS_JGD_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6612','EPSG','1129',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104111','EPSG','4612','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','106269','D_Bab_South','Bab South Astro - Bablethuap Is - Republic of Palau',NULL,'EPSG','7008','EPSG','8901','EPSG','1185',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104112','GCS_Bab_South',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106269','EPSG','1185',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106270','D_Majuro','Majuro - Republic of Marshall Is.',NULL,'EPSG','7008','EPSG','8901','EPSG','1155',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104113','GCS_Majuro',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106270','EPSG','1155',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','6762','D_Bermuda_2000','Bermuda 2000',NULL,'EPSG','7030','EPSG','8901','EPSG','1047',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104114','GCS_Bermuda_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6762','EPSG','1047',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104114','EPSG','4762','ESRI'); +INSERT INTO "geodetic_crs" VALUES('ESRI','104115','GCS_ITRF_1988',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6647','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104116','GCS_ITRF_1989',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6648','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104117','GCS_ITRF_1990',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6649','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104118','GCS_ITRF_1991',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6650','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104119','GCS_ITRF_1992',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6651','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104120','GCS_ITRF_1993',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6652','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104121','GCS_ITRF_1994',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6653','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104122','GCS_ITRF_1996',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6654','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104123','GCS_ITRF_1997',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6655','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104124','GCS_ITRF_2000',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6656','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','6673','D_Chatham_Islands_1979','Chatham Islands 1979',NULL,'EPSG','7022','EPSG','8901','EPSG','2889',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104125','GCS_Chatham_Islands_1979',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6673','EPSG','2889',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104125','EPSG','4673','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','106274','D_Observatorio_Meteorologico_1965','Observatorio Meteorologico 1965',NULL,'EPSG','7022','EPSG','8901','EPSG','1147',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104126','GCS_Observatorio_Meteorologico_1965',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106274','EPSG','1147',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106275','D_Roma_1940','Roma 1940',NULL,'EPSG','7022','EPSG','8901','EPSG','3343',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104127','GCS_Roma_1940',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106275','EPSG','3343',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106276','D_Sphere_EMEP','EMEP',NULL,'ESRI','107009','EPSG','8901','EPSG','2881',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104128','GCS_Sphere_EMEP',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106276','EPSG','2881',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104129','GCS_EUREF_FIN',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6258','EPSG','1095',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106277','D_Jordan','Jordan',NULL,'EPSG','7022','EPSG','8901','EPSG','1130',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104130','GCS_Jordan',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106277','EPSG','1130',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106278','D_D48','D48 - Slovenia',NULL,'EPSG','7004','EPSG','8901','EPSG','1212',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104131','GCS_D48',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106278','EPSG','1212',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','1070','D_Ocotepeque_1935','Ocotepeque 1935',NULL,'EPSG','7008','EPSG','8901','EPSG','3876',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104132','GCS_Ocotepeque_1935',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1070','EPSG','3876',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104132','EPSG','5451','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','6758','D_Jamaica_2001','Jamaica 2001',NULL,'EPSG','7030','EPSG','8901','EPSG','1128',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104133','GCS_JAD_2001',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6758','EPSG','1128',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104133','EPSG','4758','ESRI'); +INSERT INTO "geodetic_crs" VALUES('ESRI','104134','GCS_MONREF_1997',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6656','EPSG','1164',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104135','GCS_MSK_1942',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6284','EPSG','1164',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','1025','D_TWD_1967','Taiwan 1967',NULL,'ESRI','7050','EPSG','8901','EPSG','3315',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104136','GCS_TWD_1967',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1025','EPSG','3315',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104136','EPSG','3821','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','1026','D_TWD_1997','Taiwan 1997',NULL,'EPSG','7019','EPSG','8901','EPSG','1228',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104137','GCS_TWD_1997',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1026','EPSG','1228',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104137','EPSG','3824','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','106284','D_Old_Hawaiian_Intl_1924','Old Hawaiian on Intl_1924 spheroid (NGS)',NULL,'EPSG','7022','EPSG','8901','EPSG','1334',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104138','GCS_Old_Hawaiian_Intl_1924',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106284','EPSG','1334',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104139','GCS_Voirol_1875_Grad',NULL,NULL,'geographic 2D','EPSG','6403','EPSG','6304','EPSG','1365',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104140','GCS_Voirol_1879_Grad',NULL,NULL,'geographic 2D','EPSG','6403','EPSG','6671','EPSG','1365',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','1112','D_Cyprus_Geodetic_Reference_System_1993','Cyprus GRS 1993',NULL,'EPSG','7030','EPSG','8901','EPSG','3236',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104141','GCS_CGRS_1993',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1112','EPSG','3236',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104141','EPSG','6311','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','1041','D_PTRA08','Portugal - Autonomous Regions (Madeira and Azores Archipelagos)',NULL,'EPSG','7019','EPSG','8901','EPSG','3670',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104142','GCS_PTRA08',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1041','EPSG','3670',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104142','EPSG','5013','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','1065','D_Costa_Rica_2005','Costa Rica 2005',NULL,'EPSG','7030','EPSG','8901','EPSG','1074',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104143','GCS_CR05',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1065','EPSG','1074',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104143','EPSG','5365','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','1060','D_Islands_Network_2004','Islands Network 2004',NULL,'EPSG','7019','EPSG','8901','EPSG','1120',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104144','GCS_ISN_2004',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1060','EPSG','1120',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104144','EPSG','5324','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','1116','D_NAD_1983_2011','NAD 1983 (2011)',NULL,'EPSG','7019','EPSG','8901','EPSG','1511',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104145','GCS_NAD_1983_2011',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1116','EPSG','1511',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104145','EPSG','6318','ESRI'); +INSERT INTO "geodetic_crs" VALUES('ESRI','104179','ETRF90',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1179','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104180','ETRF91',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1180','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104181','ETRF92',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1181','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104182','ETRF93',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1182','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104183','ETRF94',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1183','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104184','ETRF96',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1184','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104185','ETRF97',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1185','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104186','ETRF2000',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1186','EPSG','1298',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','6055','D_WGS_1984_Major_Auxiliary_Sphere','Major auxiliary sphere based on WGS 1984',NULL,'ESRI','7059','EPSG','8901','EPSG','1262',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104199','GCS_WGS_1984_Major_Auxiliary_Sphere',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6055','EPSG','1262',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104199','EPSG','4055','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','1133','D_NAD_1983_CORS96','NAD 1983 (CORS96)',NULL,'EPSG','7019','EPSG','8901','EPSG','1511',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104223','GCS_NAD_1983_CORS96',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1133','EPSG','1511',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104223','EPSG','6783','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','106248','D_MACAO_2008','Macao 2008 (ITRF 2005)',NULL,'EPSG','7022','EPSG','8901','EPSG','1147',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104248','GCS_MACAO_2008',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106248','EPSG','1147',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','1111','D_Nepal_Nagarkot','Nepal Nagarkot',NULL,'EPSG','7015','EPSG','8901','EPSG','1171',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104256','GCS_Nepal_Nagarkot',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1111','EPSG','1171',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104256','EPSG','6207','ESRI'); +INSERT INTO "geodetic_crs" VALUES('ESRI','104257','GCS_ITRF_2008',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1061','EPSG','2830',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','1178','D_ETRF_1989','European Terrestrial Ref. Frame 1989',NULL,'EPSG','7030','EPSG','8901','EPSG','1298',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104258','GCS_ETRF_1989',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1178','EPSG','1298',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106209','D_NAD_1983_PACP00','NAD 1983 PACP00',NULL,'EPSG','7019','EPSG','8901','EPSG','4162',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104259','GCS_NAD_1983_PACP00',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106209','EPSG','4162',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106210','D_NAD_1983_MARP00','NAD 1983 MARP00',NULL,'EPSG','7019','EPSG','8901','EPSG','4167',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104260','GCS_NAD_1983_MARP00',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106210','EPSG','4167',NULL,0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104261','GCS_Merchich_Degree',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6261','EPSG','3280',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','1118','D_NAD_1983_MA11','NAD 1983 (MA11) - Marianas Plate 2011',NULL,'EPSG','7019','EPSG','8901','EPSG','4167',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104286','GCS_NAD_1983_MA11',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1118','EPSG','4167',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104286','EPSG','6325','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','1117','D_NAD_1983_PA11','NAD 1983 (PA11) - Pacific Plate 2011',NULL,'EPSG','7019','EPSG','8901','EPSG','4162',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104287','GCS_NAD_1983_PA11',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1117','EPSG','4162',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104287','EPSG','6322','ESRI'); +INSERT INTO "geodetic_crs" VALUES('ESRI','104304','GCS_Voirol_1875',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6304','EPSG','1365',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104304','EPSG','4304','ESRI'); +INSERT INTO "geodetic_crs" VALUES('ESRI','104305','GCS_Voirol_Unifie_1960_Degree',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','6305','EPSG','2784',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106700','D_NAD_1983_HARN_Adj_MN_Anoka','NAD 1983 HARN Adj. Minnesota Anoka',NULL,'ESRI','107700','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104700','GCS_NAD_1983_HARN_Adj_MN_Anoka',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106700','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106701','D_NAD_1983_HARN_Adj_MN_Becker','NAD 1983 HARN Adj. Minnesota Becker',NULL,'ESRI','107701','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104701','GCS_NAD_1983_HARN_Adj_MN_Becker',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106701','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106702','D_NAD_1983_HARN_Adj_MN_Beltrami_North','NAD 1983 HARN Adj. Minnesota Beltrami North',NULL,'ESRI','107702','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104702','GCS_NAD_1983_HARN_Adj_MN_Beltrami_North',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106702','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106703','D_NAD_1983_HARN_Adj_MN_Beltrami_South','NAD 1983 HARN Adj. Minnesota Beltrami South',NULL,'ESRI','107703','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104703','GCS_NAD_1983_HARN_Adj_MN_Beltrami_South',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106703','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106704','D_NAD_1983_HARN_Adj_MN_Benton','NAD 1983 HARN Adj. Minnesota Benton',NULL,'ESRI','107704','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104704','GCS_NAD_1983_HARN_Adj_MN_Benton',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106704','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106705','D_NAD_1983_HARN_Adj_MN_Big_Stone','NAD 1983 HARN Adj. Minnesota Big Stone',NULL,'ESRI','107705','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104705','GCS_NAD_1983_HARN_Adj_MN_Big_Stone',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106705','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106706','D_NAD_1983_HARN_Adj_MN_Blue_Earth','NAD 1983 HARN Adj. Minnesota Blue Earth',NULL,'ESRI','107706','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104706','GCS_NAD_1983_HARN_Adj_MN_Blue_Earth',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106706','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106707','D_NAD_1983_HARN_Adj_MN_Brown','NAD 1983 HARN Adj. Minnesota Brown',NULL,'ESRI','107707','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104707','GCS_NAD_1983_HARN_Adj_MN_Brown',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106707','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106708','D_NAD_1983_HARN_Adj_MN_Carlton','NAD 1983 HARN Adj. Minnesota Carlton',NULL,'ESRI','107708','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104708','GCS_NAD_1983_HARN_Adj_MN_Carlton',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106708','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106709','D_NAD_1983_HARN_Adj_MN_Carver','NAD 1983 HARN Adj. Minnesota Carver',NULL,'ESRI','107709','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104709','GCS_NAD_1983_HARN_Adj_MN_Carver',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106709','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106710','D_NAD_1983_HARN_Adj_MN_Cass_North','NAD 1983 HARN Adj. Minnesota Cass North',NULL,'ESRI','107710','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104710','GCS_NAD_1983_HARN_Adj_MN_Cass_North',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106710','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106711','D_NAD_1983_HARN_Adj_MN_Cass_South','NAD 1983 HARN Adj. Minnesota Cass South',NULL,'ESRI','107711','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104711','GCS_NAD_1983_HARN_Adj_MN_Cass_South',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106711','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106712','D_NAD_1983_HARN_Adj_MN_Chippewa','NAD 1983 HARN Adj. Minnesota Chippewa',NULL,'ESRI','107712','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104712','GCS_NAD_1983_HARN_Adj_MN_Chippewa',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106712','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106713','D_NAD_1983_HARN_Adj_MN_Chisago','NAD 1983 HARN Adj. Minnesota Chisago',NULL,'ESRI','107713','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104713','GCS_NAD_1983_HARN_Adj_MN_Chisago',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106713','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106714','D_NAD_1983_HARN_Adj_MN_Cook_North','NAD 1983 HARN Adj. Minnesota Cook North',NULL,'ESRI','107714','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104714','GCS_NAD_1983_HARN_Adj_MN_Cook_North',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106714','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106715','D_NAD_1983_HARN_Adj_MN_Cook_South','NAD 1983 HARN Adj. Minnesota Cook South',NULL,'ESRI','107715','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104715','GCS_NAD_1983_HARN_Adj_MN_Cook_South',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106715','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106716','D_NAD_1983_HARN_Adj_MN_Cottonwood','NAD 1983 HARN Adj. Minnesota Cottonwood',NULL,'ESRI','107716','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104716','GCS_NAD_1983_HARN_Adj_MN_Cottonwood',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106716','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106717','D_NAD_1983_HARN_Adj_MN_Crow_Wing','NAD 1983 HARN Adj. Minnesota Crow Wing',NULL,'ESRI','107717','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104717','GCS_NAD_1983_HARN_Adj_MN_Crow_Wing',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106717','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106718','D_NAD_1983_HARN_Adj_MN_Dakota','NAD 1983 HARN Adj. Minnesota Dakota',NULL,'ESRI','107718','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104718','GCS_NAD_1983_HARN_Adj_MN_Dakota',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106718','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106719','D_NAD_1983_HARN_Adj_MN_Dodge','NAD 1983 HARN Adj. Minnesota Dodge',NULL,'ESRI','107719','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104719','GCS_NAD_1983_HARN_Adj_MN_Dodge',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106719','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106720','D_NAD_1983_HARN_Adj_MN_Douglas','NAD 1983 HARN Adj. Minnesota Douglas',NULL,'ESRI','107720','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104720','GCS_NAD_1983_HARN_Adj_MN_Douglas',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106720','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106721','D_NAD_1983_HARN_Adj_MN_Faribault','NAD 1983 HARN Adj. Minnesota Faribault',NULL,'ESRI','107721','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104721','GCS_NAD_1983_HARN_Adj_MN_Faribault',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106721','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106722','D_NAD_1983_HARN_Adj_MN_Fillmore','NAD 1983 HARN Adj. Minnesota Fillmore',NULL,'ESRI','107722','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104722','GCS_NAD_1983_HARN_Adj_MN_Fillmore',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106722','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106723','D_NAD_1983_HARN_Adj_MN_Freeborn','NAD 1983 HARN Adj. Minnesota Freeborn',NULL,'ESRI','107723','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104723','GCS_NAD_1983_HARN_Adj_MN_Freeborn',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106723','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106724','D_NAD_1983_HARN_Adj_MN_Goodhue','NAD 1983 HARN Adj. Minnesota Goodhue',NULL,'ESRI','107724','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104724','GCS_NAD_1983_HARN_Adj_MN_Goodhue',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106724','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106725','D_NAD_1983_HARN_Adj_MN_Grant','NAD 1983 HARN Adj. Minnesota Grant',NULL,'ESRI','107725','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104725','GCS_NAD_1983_HARN_Adj_MN_Grant',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106725','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106726','D_NAD_1983_HARN_Adj_MN_Hennepin','NAD 1983 HARN Adj. Minnesota Hennepin',NULL,'ESRI','107726','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104726','GCS_NAD_1983_HARN_Adj_MN_Hennepin',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106726','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106727','D_NAD_1983_HARN_Adj_MN_Houston','NAD 1983 HARN Adj. Minnesota Houston',NULL,'ESRI','107727','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104727','GCS_NAD_1983_HARN_Adj_MN_Houston',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106727','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106728','D_NAD_1983_HARN_Adj_MN_Isanti','NAD 1983 HARN Adj. Minnesota Isanti',NULL,'ESRI','107728','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104728','GCS_NAD_1983_HARN_Adj_MN_Isanti',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106728','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106729','D_NAD_1983_HARN_Adj_MN_Itasca_North','NAD 1983 HARN Adj. Minnesota Itasca North',NULL,'ESRI','107729','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104729','GCS_NAD_1983_HARN_Adj_MN_Itasca_North',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106729','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106730','D_NAD_1983_HARN_Adj_MN_Itasca_South','NAD 1983 HARN Adj. Minnesota Itasca South',NULL,'ESRI','107730','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104730','GCS_NAD_1983_HARN_Adj_MN_Itasca_South',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106730','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106731','D_NAD_1983_HARN_Adj_MN_Jackson','NAD 1983 HARN Adj. Minnesota Jackson',NULL,'ESRI','107731','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104731','GCS_NAD_1983_HARN_Adj_MN_Jackson',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106731','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106732','D_NAD_1983_HARN_Adj_MN_Kanabec','NAD 1983 HARN Adj. Minnesota Kanabec',NULL,'ESRI','107732','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104732','GCS_NAD_1983_HARN_Adj_MN_Kanabec',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106732','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106733','D_NAD_1983_HARN_Adj_MN_Kandiyohi','NAD 1983 HARN Adj. Minnesota Kandiyohi',NULL,'ESRI','107733','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104733','GCS_NAD_1983_HARN_Adj_MN_Kandiyohi',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106733','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106734','D_NAD_1983_HARN_Adj_MN_Kittson','NAD 1983 HARN Adj. Minnesota Kittson',NULL,'ESRI','107734','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104734','GCS_NAD_1983_HARN_Adj_MN_Kittson',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106734','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106735','D_NAD_1983_HARN_Adj_MN_Koochiching','NAD 1983 HARN Adj. Minnesota Koochiching',NULL,'ESRI','107735','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104735','GCS_NAD_1983_HARN_Adj_MN_Koochiching',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106735','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106736','D_NAD_1983_HARN_Adj_MN_Lac_Qui_Parle','NAD 1983 HARN Adj. Minnesota Lac Qui Parle',NULL,'ESRI','107736','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104736','GCS_NAD_1983_HARN_Adj_MN_Lac_Qui_Parle',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106736','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106737','D_NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_North','NAD 1983 HARN Adj. Minnesota Lake of the Woods North',NULL,'ESRI','107737','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104737','GCS_NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_North',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106737','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106738','D_NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_South','NAD 1983 HARN Adj. Minnesota Lake of the Woods South',NULL,'ESRI','107738','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104738','GCS_NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_South',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106738','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106739','D_NAD_1983_HARN_Adj_MN_Le_Sueur','NAD 1983 HARN Adj. Minnesota Le Sueur',NULL,'ESRI','107739','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104739','GCS_NAD_1983_HARN_Adj_MN_Le_Sueur',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106739','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106740','D_NAD_1983_HARN_Adj_MN_Lincoln','NAD 1983 HARN Adj. Minnesota Lincoln',NULL,'ESRI','107740','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104740','GCS_NAD_1983_HARN_Adj_MN_Lincoln',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106740','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106741','D_NAD_1983_HARN_Adj_MN_Lyon','NAD 1983 HARN Adj. Minnesota Lyon',NULL,'ESRI','107741','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104741','GCS_NAD_1983_HARN_Adj_MN_Lyon',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106741','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106742','D_NAD_1983_HARN_Adj_MN_McLeod','NAD 1983 HARN Adj. Minnesota McLeod',NULL,'ESRI','107742','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104742','GCS_NAD_1983_HARN_Adj_MN_McLeod',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106742','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106743','D_NAD_1983_HARN_Adj_MN_Mahnomen','NAD 1983 HARN Adj. Minnesota Mahnomen',NULL,'ESRI','107743','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104743','GCS_NAD_1983_HARN_Adj_MN_Mahnomen',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106743','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106744','D_NAD_1983_HARN_Adj_MN_Marshall','NAD 1983 HARN Adj. Minnesota Marshall',NULL,'ESRI','107744','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104744','GCS_NAD_1983_HARN_Adj_MN_Marshall',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106744','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106745','D_NAD_1983_HARN_Adj_MN_Martin','NAD 1983 HARN Adj. Minnesota Martin',NULL,'ESRI','107745','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104745','GCS_NAD_1983_HARN_Adj_MN_Martin',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106745','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106746','D_NAD_1983_HARN_Adj_MN_Meeker','NAD 1983 HARN Adj. Minnesota Meeker',NULL,'ESRI','107746','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104746','GCS_NAD_1983_HARN_Adj_MN_Meeker',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106746','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106747','D_NAD_1983_HARN_Adj_MN_Morrison','NAD 1983 HARN Adj. Minnesota Morrison',NULL,'ESRI','107747','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104747','GCS_NAD_1983_HARN_Adj_MN_Morrison',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106747','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106748','D_NAD_1983_HARN_Adj_MN_Mower','NAD 1983 HARN Adj. Minnesota Mower',NULL,'ESRI','107748','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104748','GCS_NAD_1983_HARN_Adj_MN_Mower',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106748','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106749','D_NAD_1983_HARN_Adj_MN_Murray','NAD 1983 HARN Adj. Minnesota Murray',NULL,'ESRI','107749','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104749','GCS_NAD_1983_HARN_Adj_MN_Murray',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106749','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106750','D_NAD_1983_HARN_Adj_MN_Nicollet','NAD 1983 HARN Adj. Minnesota Nicollet',NULL,'ESRI','107750','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104750','GCS_NAD_1983_HARN_Adj_MN_Nicollet',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106750','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106751','D_NAD_1983_HARN_Adj_MN_Nobles','NAD 1983 HARN Adj. Minnesota Nobles',NULL,'ESRI','107751','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104751','GCS_NAD_1983_HARN_Adj_MN_Nobles',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106751','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106752','D_NAD_1983_HARN_Adj_MN_Norman','NAD 1983 HARN Adj. Minnesota Norman',NULL,'ESRI','107752','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104752','GCS_NAD_1983_HARN_Adj_MN_Norman',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106752','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106753','D_NAD_1983_HARN_Adj_MN_Olmsted','NAD 1983 HARN Adj. Minnesota Olmsted',NULL,'ESRI','107753','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104753','GCS_NAD_1983_HARN_Adj_MN_Olmsted',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106753','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106754','D_NAD_1983_HARN_Adj_MN_Ottertail','NAD 1983 HARN Adj. Minnesota Ottertail',NULL,'ESRI','107754','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104754','GCS_NAD_1983_HARN_Adj_MN_Ottertail',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106754','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106755','D_NAD_1983_HARN_Adj_MN_Pennington','NAD 1983 HARN Adj. Minnesota Pennington',NULL,'ESRI','107755','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104755','GCS_NAD_1983_HARN_Adj_MN_Pennington',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106755','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106756','D_NAD_1983_HARN_Adj_MN_Pine','NAD 1983 HARN Adj. Minnesota Pine',NULL,'ESRI','107756','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104756','GCS_NAD_1983_HARN_Adj_MN_Pine',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106756','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106757','D_NAD_1983_HARN_Adj_MN_Pipestone','NAD 1983 HARN Adj. Minnesota Pipestone',NULL,'ESRI','107757','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104757','GCS_NAD_1983_HARN_Adj_MN_Pipestone',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106757','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106758','D_NAD_1983_HARN_Adj_MN_Polk','NAD 1983 HARN Adj. Minnesota Polk',NULL,'ESRI','107758','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104758','GCS_NAD_1983_HARN_Adj_MN_Polk',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106758','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106759','D_NAD_1983_HARN_Adj_MN_Pope','NAD 1983 HARN Adj. Minnesota Pope',NULL,'ESRI','107759','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104759','GCS_NAD_1983_HARN_Adj_MN_Pope',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106759','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106760','D_NAD_1983_HARN_Adj_MN_Ramsey','NAD 1983 HARN Adj. Minnesota Ramsey',NULL,'ESRI','107760','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104760','GCS_NAD_1983_HARN_Adj_MN_Ramsey',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106760','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106761','D_NAD_1983_HARN_Adj_MN_Red_Lake','NAD 1983 HARN Adj. Minnesota Red Lake',NULL,'ESRI','107761','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104761','GCS_NAD_1983_HARN_Adj_MN_Red_Lake',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106761','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106762','D_NAD_1983_HARN_Adj_MN_Redwood','NAD 1983 HARN Adj. Minnesota Redwood',NULL,'ESRI','107762','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104762','GCS_NAD_1983_HARN_Adj_MN_Redwood',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106762','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106763','D_NAD_1983_HARN_Adj_MN_Renville','NAD 1983 HARN Adj. Minnesota Renville',NULL,'ESRI','107763','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104763','GCS_NAD_1983_HARN_Adj_MN_Renville',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106763','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106764','D_NAD_1983_HARN_Adj_MN_Rice','NAD 1983 HARN Adj. Minnesota Rice',NULL,'ESRI','107764','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104764','GCS_NAD_1983_HARN_Adj_MN_Rice',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106764','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106765','D_NAD_1983_HARN_Adj_MN_Rock','NAD 1983 HARN Adj. Minnesota Rock',NULL,'ESRI','107765','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104765','GCS_NAD_1983_HARN_Adj_MN_Rock',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106765','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106766','D_NAD_1983_HARN_Adj_MN_Roseau','NAD 1983 HARN Adj. Minnesota Roseau',NULL,'ESRI','107766','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104766','GCS_NAD_1983_HARN_Adj_MN_Roseau',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106766','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106767','D_NAD_1983_HARN_Adj_MN_St_Louis_North','NAD 1983 HARN Adj. Minnesota St Louis North',NULL,'ESRI','107767','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104767','GCS_NAD_1983_HARN_Adj_MN_St_Louis_North',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106767','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106768','D_NAD_1983_HARN_Adj_MN_St_Louis_Central','NAD 1983 HARN Adj. Minnesota St Louis Central',NULL,'ESRI','107768','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104768','GCS_NAD_1983_HARN_Adj_MN_St_Louis_Central',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106768','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106769','D_NAD_1983_HARN_Adj_MN_St_Louis_South','NAD 1983 HARN Adj. Minnesota St Louis South',NULL,'ESRI','107769','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104769','GCS_NAD_1983_HARN_Adj_MN_St_Louis_South',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106769','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106770','D_NAD_1983_HARN_Adj_MN_Scott','NAD 1983 HARN Adj. Minnesota Scott',NULL,'ESRI','107770','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104770','GCS_NAD_1983_HARN_Adj_MN_Scott',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106770','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106771','D_NAD_1983_HARN_Adj_MN_Sherburne','NAD 1983 HARN Adj. Minnesota Sherburne',NULL,'ESRI','107771','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104771','GCS_NAD_1983_HARN_Adj_MN_Sherburne',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106771','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106772','D_NAD_1983_HARN_Adj_MN_Sibley','NAD 1983 HARN Adj. Minnesota Sibley',NULL,'ESRI','107772','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104772','GCS_NAD_1983_HARN_Adj_MN_Sibley',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106772','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106773','D_NAD_1983_HARN_Adj_MN_Stearns','NAD 1983 HARN Adj. Minnesota Stearns',NULL,'ESRI','107773','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104773','GCS_NAD_1983_HARN_Adj_MN_Stearns',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106773','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106774','D_NAD_1983_HARN_Adj_MN_Steele','NAD 1983 HARN Adj. Minnesota Steele',NULL,'ESRI','107774','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104774','GCS_NAD_1983_HARN_Adj_MN_Steele',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106774','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106775','D_NAD_1983_HARN_Adj_MN_Stevens','NAD 1983 HARN Adj. Minnesota Stevens',NULL,'ESRI','107775','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104775','GCS_NAD_1983_HARN_Adj_MN_Stevens',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106775','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106776','D_NAD_1983_HARN_Adj_MN_Swift','NAD 1983 HARN Adj. Minnesota Swift',NULL,'ESRI','107776','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104776','GCS_NAD_1983_HARN_Adj_MN_Swift',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106776','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106777','D_NAD_1983_HARN_Adj_MN_Todd','NAD 1983 HARN Adj. Minnesota Todd',NULL,'ESRI','107777','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104777','GCS_NAD_1983_HARN_Adj_MN_Todd',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106777','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106778','D_NAD_1983_HARN_Adj_MN_Traverse','NAD 1983 HARN Adj. Minnesota Traverse',NULL,'ESRI','107778','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104778','GCS_NAD_1983_HARN_Adj_MN_Traverse',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106778','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106779','D_NAD_1983_HARN_Adj_MN_Wabasha','NAD 1983 HARN Adj. Minnesota Wabasha',NULL,'ESRI','107779','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104779','GCS_NAD_1983_HARN_Adj_MN_Wabasha',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106779','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106780','D_NAD_1983_HARN_Adj_MN_Wadena','NAD 1983 HARN Adj. Minnesota Wadena',NULL,'ESRI','107780','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104780','GCS_NAD_1983_HARN_Adj_MN_Wadena',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106780','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106781','D_NAD_1983_HARN_Adj_MN_Waseca','NAD 1983 HARN Adj. Minnesota Waseca',NULL,'ESRI','107781','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104781','GCS_NAD_1983_HARN_Adj_MN_Waseca',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106781','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106782','D_NAD_1983_HARN_Adj_MN_Watonwan','NAD 1983 HARN Adj. Minnesota Watonwan',NULL,'ESRI','107782','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104782','GCS_NAD_1983_HARN_Adj_MN_Watonwan',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106782','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106783','D_NAD_1983_HARN_Adj_MN_Winona','NAD 1983 HARN Adj. Minnesota Winona',NULL,'ESRI','107783','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104783','GCS_NAD_1983_HARN_Adj_MN_Winona',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106783','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106784','D_NAD_1983_HARN_Adj_MN_Wright','NAD 1983 HARN Adj. Minnesota Wright',NULL,'ESRI','107784','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104784','GCS_NAD_1983_HARN_Adj_MN_Wright',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106784','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106785','D_NAD_1983_HARN_Adj_MN_Yellow_Medicine','NAD 1983 HARN Adj. Minnesota Yellow Medicine',NULL,'ESRI','107785','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104785','GCS_NAD_1983_HARN_Adj_MN_Yellow_Medicine',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106785','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106786','D_NAD_1983_HARN_Adj_MN_St_Louis','NAD 1983 HARN Adj. Minnesota St Louis',NULL,'ESRI','107786','EPSG','8901','EPSG','1392',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104786','GCS_NAD_1983_HARN_Adj_MN_St_Louis',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106786','EPSG','1392',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106851','D_NAD_1983_HARN_Adj_WI_AD_JN','NAD 1983 HARN Adj. Wisconsin Adams and Juneau',NULL,'ESRI','107851','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104800','GCS_NAD_1983_HARN_Adj_WI_Adams',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106851','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106800','D_NAD_1983_HARN_Adj_WI_AL','NAD 1983 HARN Adj. Wisconsin Ashland',NULL,'ESRI','107800','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104801','GCS_NAD_1983_HARN_Adj_WI_Ashland',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106800','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106801','D_NAD_1983_HARN_Adj_WI_BA','NAD 1983 HARN Adj. Wisconsin Barron',NULL,'ESRI','107801','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104802','GCS_NAD_1983_HARN_Adj_WI_Barron',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106801','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106802','D_NAD_1983_HARN_Adj_WI_BF','NAD 1983 HARN Adj. Wisconsin Bayfield',NULL,'ESRI','107802','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104803','GCS_NAD_1983_HARN_Adj_WI_Bayfield',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106802','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106803','D_NAD_1983_HARN_Adj_WI_BR','NAD 1983 HARN Adj. Wisconsin Brown',NULL,'ESRI','107803','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104804','GCS_NAD_1983_HARN_Adj_WI_Brown',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106803','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106804','D_NAD_1983_HARN_Adj_WI_BU','NAD 1983 HARN Adj. Wisconsin Buffalo',NULL,'ESRI','107804','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104805','GCS_NAD_1983_HARN_Adj_WI_Buffalo',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106804','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106805','D_NAD_1983_HARN_Adj_WI_BN','NAD 1983 HARN Adj. Wisconsin Burnett',NULL,'ESRI','107805','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104806','GCS_NAD_1983_HARN_Adj_WI_Burnett',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106805','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106856','D_NAD_1983_HARN_Adj_WI_CL_FL_OG_WN','NAD 1983 HARN Adj. Wisconsin Calumet, Fond du Lac, Outagamie, and Winnebago',NULL,'ESRI','107856','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104807','GCS_NAD_1983_HARN_Adj_WI_Calumet',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106856','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106806','D_NAD_1983_HARN_Adj_WI_CP','NAD 1983 HARN Adj. Wisconsin Chippewa',NULL,'ESRI','107806','EPSG','8901','EPSG','1418',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104808','GCS_NAD_1983_HARN_Adj_WI_Chippewa',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106806','EPSG','1418',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106807','D_NAD_1983_HARN_Adj_WI_CK','NAD 1983 HARN Adj. Wisconsin Clark',NULL,'ESRI','107807','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104809','GCS_NAD_1983_HARN_Adj_WI_Clark',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106807','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106808','D_NAD_1983_HARN_Adj_WI_CO','NAD 1983 HARN Adj. Wisconsin Columbia',NULL,'ESRI','107808','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104810','GCS_NAD_1983_HARN_Adj_WI_Columbia',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106808','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106809','D_NAD_1983_HARN_Adj_WI_CR','NAD 1983 HARN Adj. Wisconsin Crawford',NULL,'ESRI','107809','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104811','GCS_NAD_1983_HARN_Adj_WI_Crawford',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106809','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106810','D_NAD_1983_HARN_Adj_WI_DN','NAD 1983 HARN Adj. Wisconsin Dane',NULL,'ESRI','107810','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104812','GCS_NAD_1983_HARN_Adj_WI_Dane',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106810','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106854','D_NAD_1983_HARN_Adj_WI_DD_JF','NAD 1983 HARN Adj. Wisconsin Dodge and Jefferson',NULL,'ESRI','107854','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104813','GCS_NAD_1983_HARN_Adj_WI_Dodge',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106854','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106811','D_NAD_1983_HARN_Adj_WI_DR','NAD 1983 HARN Adj. Wisconsin Door',NULL,'ESRI','107811','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104814','GCS_NAD_1983_HARN_Adj_WI_Door',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106811','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106812','D_NAD_1983_HARN_Adj_WI_DG','NAD 1983 HARN Adj. Wisconsin Douglas',NULL,'ESRI','107812','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104815','GCS_NAD_1983_HARN_Adj_WI_Douglas',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106812','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106813','D_NAD_1983_HARN_Adj_WI_DU','NAD 1983 HARN Adj. Wisconsin Dunn',NULL,'ESRI','107813','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104816','GCS_NAD_1983_HARN_Adj_WI_Dunn',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106813','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106814','D_NAD_1983_HARN_Adj_WI_EC','NAD 1983 HARN Adj. Wisconsin EauClaire',NULL,'ESRI','107814','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104817','GCS_NAD_1983_HARN_Adj_WI_EauClaire',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106814','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106815','D_NAD_1983_HARN_Adj_WI_FN','NAD 1983 HARN Adj. Wisconsin Florence',NULL,'ESRI','107815','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104818','GCS_NAD_1983_HARN_Adj_WI_Florence',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106815','EPSG','1418',NULL,1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104819','GCS_NAD_1983_HARN_Adj_WI_FondduLac',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106856','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106816','D_NAD_1983_HARN_Adj_WI_FR','NAD 1983 HARN Adj. Wisconsin Forest',NULL,'ESRI','107816','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104820','GCS_NAD_1983_HARN_Adj_WI_Forest',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106816','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106817','D_NAD_1983_HARN_Adj_WI_GT','NAD 1983 HARN Adj. Wisconsin Grant',NULL,'ESRI','107817','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104821','GCS_NAD_1983_HARN_Adj_WI_Grant',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106817','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106852','D_NAD_1983_HARN_Adj_WI_GR_LF','NAD 1983 HARN Adj. Wisconsin Green and Lafayette',NULL,'ESRI','107852','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104822','GCS_NAD_1983_HARN_Adj_WI_Green',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106852','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106853','D_NAD_1983_HARN_Adj_WI_GL_MQ','NAD 1983 HARN Adj. Wisconsin Green Lake and Marquette',NULL,'ESRI','107853','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104823','GCS_NAD_1983_HARN_Adj_WI_GreenLake',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106853','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106818','D_NAD_1983_HARN_Adj_WI_IA','NAD 1983 HARN Adj. Wisconsin Iowa',NULL,'ESRI','107818','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104824','GCS_NAD_1983_HARN_Adj_WI_Iowa',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106818','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106819','D_NAD_1983_HARN_Adj_WI_IR','NAD 1983 HARN Adj. Wisconsin Iron',NULL,'ESRI','107819','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104825','GCS_NAD_1983_HARN_Adj_WI_Iron',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106819','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106820','D_NAD_1983_HARN_Adj_WI_JA','NAD 1983 HARN Adj. Wisconsin Jackson',NULL,'ESRI','107820','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104826','GCS_NAD_1983_HARN_Adj_WI_Jackson',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106820','EPSG','1418',NULL,1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104827','GCS_NAD_1983_HARN_Adj_WI_Jefferson',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106854','EPSG','1418',NULL,1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104828','GCS_NAD_1983_HARN_Adj_WI_Juneau',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106851','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106857','D_NAD_1983_HARN_Adj_WI_KN_MW_OZ_RA','NAD 1983 HARN Adj. Wisconsin Kenosha, Milwaukee, Ozaukee, and Racine',NULL,'ESRI','107857','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104829','GCS_NAD_1983_HARN_Adj_WI_Kenosha',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106857','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106858','D_NAD_1983_HARN_Adj_WI_KW_MT_SG','NAD 1983 HARN Adj. Wisconsin Kewaunee, Manitowoc, and Sheboygan',NULL,'ESRI','107858','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104830','GCS_NAD_1983_HARN_Adj_WI_Kewaunee',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106858','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106821','D_NAD_1983_HARN_Adj_WI_LC','NAD 1983 HARN Adj. Wisconsin LaCrosse',NULL,'ESRI','107821','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104831','GCS_NAD_1983_HARN_Adj_WI_LaCrosse',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106821','EPSG','1418',NULL,1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104832','GCS_NAD_1983_HARN_Adj_WI_Lafayette',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106852','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106822','D_NAD_1983_HARN_Adj_WI_LG','NAD 1983 HARN Adj. Wisconsin Langlade',NULL,'ESRI','107822','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104833','GCS_NAD_1983_HARN_Adj_WI_Langlade',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106822','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106823','D_NAD_1983_HARN_Adj_WI_LN','NAD 1983 HARN Adj. Wisconsin Lincoln',NULL,'ESRI','107823','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104834','GCS_NAD_1983_HARN_Adj_WI_Lincoln',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106823','EPSG','1418',NULL,1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104835','GCS_NAD_1983_HARN_Adj_WI_Manitowoc',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106858','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106824','D_NAD_1983_HARN_Adj_WI_MA','NAD 1983 HARN Adj. Wisconsin Marathon',NULL,'ESRI','107824','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104836','GCS_NAD_1983_HARN_Adj_WI_Marathon',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106824','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106825','D_NAD_1983_HARN_Adj_WI_MN','NAD 1983 HARN Adj. Wisconsin Marinette',NULL,'ESRI','107825','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104837','GCS_NAD_1983_HARN_Adj_WI_Marinette',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106825','EPSG','1418',NULL,1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104838','GCS_NAD_1983_HARN_Adj_WI_Marquette',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106853','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106826','D_NAD_1983_HARN_Adj_WI_ME','NAD 1983 HARN Adj. Wisconsin Menominee',NULL,'ESRI','107826','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104839','GCS_NAD_1983_HARN_Adj_WI_Menominee',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106826','EPSG','1418',NULL,1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104840','GCS_NAD_1983_HARN_Adj_WI_Milwaukee',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106857','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106827','D_NAD_1983_HARN_Adj_WI_MR','NAD 1983 HARN Adj. Wisconsin Monroe',NULL,'ESRI','107827','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104841','GCS_NAD_1983_HARN_Adj_WI_Monroe',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106827','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106828','D_NAD_1983_HARN_Adj_WI_OC','NAD 1983 HARN Adj. Wisconsin Oconto',NULL,'ESRI','107828','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104842','GCS_NAD_1983_HARN_Adj_WI_Oconto',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106828','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106829','D_NAD_1983_HARN_Adj_WI_ON','NAD 1983 HARN Adj. Wisconsin Oneida',NULL,'ESRI','107829','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104843','GCS_NAD_1983_HARN_Adj_WI_Oneida',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106829','EPSG','1418',NULL,1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104844','GCS_NAD_1983_HARN_Adj_WI_Outagamie',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106856','EPSG','1418',NULL,1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104845','GCS_NAD_1983_HARN_Adj_WI_Ozaukee',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106857','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106855','D_NAD_1983_HARN_Adj_WI_PP_PC','NAD 1983 HARN Adj. Wisconsin Pepin and Pierce',NULL,'ESRI','107855','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104846','GCS_NAD_1983_HARN_Adj_WI_Pepin',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106855','EPSG','1418',NULL,1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104847','GCS_NAD_1983_HARN_Adj_WI_Pierce',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106855','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106830','D_NAD_1983_HARN_Adj_WI_PK','NAD 1983 HARN Adj. Wisconsin Polk',NULL,'ESRI','107830','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104848','GCS_NAD_1983_HARN_Adj_WI_Polk',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106830','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106831','D_NAD_1983_HARN_Adj_WI_PT','NAD 1983 HARN Adj. Wisconsin Portage',NULL,'ESRI','107831','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104849','GCS_NAD_1983_HARN_Adj_WI_Portage',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106831','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106832','D_NAD_1983_HARN_Adj_WI_PR','NAD 1983 HARN Adj. Wisconsin Price',NULL,'ESRI','107832','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104850','GCS_NAD_1983_HARN_Adj_WI_Price',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106832','EPSG','1418',NULL,1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104851','GCS_NAD_1983_HARN_Adj_WI_Racine',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106857','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106833','D_NAD_1983_HARN_Adj_WI_RC','NAD 1983 HARN Adj. Wisconsin Richland',NULL,'ESRI','107833','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104852','GCS_NAD_1983_HARN_Adj_WI_Richland',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106833','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106834','D_NAD_1983_HARN_Adj_WI_RK','NAD 1983 HARN Adj. Wisconsin Rock',NULL,'ESRI','107834','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104853','GCS_NAD_1983_HARN_Adj_WI_Rock',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106834','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106835','D_NAD_1983_HARN_Adj_WI_RS','NAD 1983 HARN Adj. Wisconsin Rusk',NULL,'ESRI','107835','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104854','GCS_NAD_1983_HARN_Adj_WI_Rusk',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106835','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106836','D_NAD_1983_HARN_Adj_WI_SC','NAD 1983 HARN Adj. Wisconsin StCroix',NULL,'ESRI','107836','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104855','GCS_NAD_1983_HARN_Adj_WI_StCroix',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106836','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106837','D_NAD_1983_HARN_Adj_WI_SK','NAD 1983 HARN Adj. Wisconsin Sauk',NULL,'ESRI','107837','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104856','GCS_NAD_1983_HARN_Adj_WI_Sauk',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106837','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106838','D_NAD_1983_HARN_Adj_WI_SW','NAD 1983 HARN Adj. Wisconsin Sawyer',NULL,'ESRI','107838','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104857','GCS_NAD_1983_HARN_Adj_WI_Sawyer',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106838','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106839','D_NAD_1983_HARN_Adj_WI_SH','NAD 1983 HARN Adj. Wisconsin Shawano',NULL,'ESRI','107839','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104858','GCS_NAD_1983_HARN_Adj_WI_Shawano',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106839','EPSG','1418',NULL,1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104859','GCS_NAD_1983_HARN_Adj_WI_Sheboygan',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106858','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106840','D_NAD_1983_HARN_Adj_WI_TA','NAD 1983 HARN Adj. Wisconsin Taylor',NULL,'ESRI','107840','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104860','GCS_NAD_1983_HARN_Adj_WI_Taylor',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106840','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106841','D_NAD_1983_HARN_Adj_WI_TR','NAD 1983 HARN Adj. Wisconsin Trempealeau',NULL,'ESRI','107841','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104861','GCS_NAD_1983_HARN_Adj_WI_Trempealeau',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106841','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106842','D_NAD_1983_HARN_Adj_WI_VR','NAD 1983 HARN Adj. Wisconsin Vernon',NULL,'ESRI','107842','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104862','GCS_NAD_1983_HARN_Adj_WI_Vernon',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106842','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106843','D_NAD_1983_HARN_Adj_WI_VI','NAD 1983 HARN Adj. Wisconsin Vilas',NULL,'ESRI','107843','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104863','GCS_NAD_1983_HARN_Adj_WI_Vilas',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106843','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106844','D_NAD_1983_HARN_Adj_WI_WW','NAD 1983 HARN Adj. Wisconsin Walworth',NULL,'ESRI','107844','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104864','GCS_NAD_1983_HARN_Adj_WI_Walworth',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106844','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106845','D_NAD_1983_HARN_Adj_WI_WB','NAD 1983 HARN Adj. Wisconsin Washburn',NULL,'ESRI','107845','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104865','GCS_NAD_1983_HARN_Adj_WI_Washburn',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106845','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106846','D_NAD_1983_HARN_Adj_WI_WA','NAD 1983 HARN Adj. Wisconsin Washington',NULL,'ESRI','107846','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104866','GCS_NAD_1983_HARN_Adj_WI_Washington',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106846','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106847','D_NAD_1983_HARN_Adj_WI_WK','NAD 1983 HARN Adj. Wisconsin Waukesha',NULL,'ESRI','107847','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104867','GCS_NAD_1983_HARN_Adj_WI_Waukesha',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106847','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106848','D_NAD_1983_HARN_Adj_WI_WP','NAD 1983 HARN Adj. Wisconsin Waupaca',NULL,'ESRI','107848','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104868','GCS_NAD_1983_HARN_Adj_WI_Waupaca',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106848','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106849','D_NAD_1983_HARN_Adj_WI_WS','NAD 1983 HARN Adj. Wisconsin Waushara',NULL,'ESRI','107849','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104869','GCS_NAD_1983_HARN_Adj_WI_Waushara',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106849','EPSG','1418',NULL,1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104870','GCS_NAD_1983_HARN_Adj_WI_Winnebago',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106856','EPSG','1418',NULL,1); +INSERT INTO "geodetic_datum" VALUES('ESRI','106850','D_NAD_1983_HARN_Adj_WI_WD','NAD 1983 HARN Adj. Wisconsin Wood',NULL,'ESRI','107850','EPSG','8901','EPSG','1418',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104871','GCS_NAD_1983_HARN_Adj_WI_Wood',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106850','EPSG','1418',NULL,1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104896','GCS_ITRF_2005',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6896','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106900','D_Mercury_2000','Mercury',NULL,'ESRI','107900','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104900','GCS_Mercury_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106900','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106901','D_Venus_1985','Venus 1985',NULL,'ESRI','107901','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104901','GCS_Venus_1985',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106901','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106902','D_Venus_2000','Venus 2000',NULL,'ESRI','107902','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104902','GCS_Venus_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106902','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106903','D_Moon_2000','The Moon',NULL,'ESRI','107903','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104903','GCS_Moon_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106903','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106904','D_Mars_1979','Mars 1979',NULL,'ESRI','107904','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104904','GCS_Mars_1979',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106904','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106905','D_Mars_2000','Mars 2000',NULL,'ESRI','107905','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104905','GCS_Mars_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106905','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106906','D_Deimos_2000','Mars - Deimos',NULL,'ESRI','107906','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104906','GCS_Deimos_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106906','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106907','D_Phobos_2000','Mars - Phobos',NULL,'ESRI','107907','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104907','GCS_Phobos_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106907','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106908','D_Jupiter_2000','Jupiter',NULL,'ESRI','107908','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104908','GCS_Jupiter_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106908','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106909','D_Adrastea_2000','Jupiter - Adrastea',NULL,'ESRI','107909','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104909','GCS_Adrastea_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106909','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106910','D_Amalthea_2000','Jupiter - Amalthea',NULL,'ESRI','107910','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104910','GCS_Amalthea_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106910','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106911','D_Ananke_2000','Jupiter - Ananke',NULL,'ESRI','107911','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104911','GCS_Ananke_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106911','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106912','D_Callisto_2000','Jupiter - Callisto',NULL,'ESRI','107912','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104912','GCS_Callisto_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106912','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106913','D_Carme_2000','Jupiter - Carme',NULL,'ESRI','107913','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104913','GCS_Carme_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106913','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106914','D_Elara_2000','Jupiter - Elara',NULL,'ESRI','107914','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104914','GCS_Elara_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106914','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106915','D_Europa_2000','Jupiter - Europa',NULL,'ESRI','107915','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104915','GCS_Europa_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106915','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106916','D_Ganymede_2000','Jupiter - Ganymede',NULL,'ESRI','107916','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104916','GCS_Ganymede_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106916','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106917','D_Himalia_2000','Jupiter - Himalia',NULL,'ESRI','107917','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104917','GCS_Himalia_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106917','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106918','D_Io_2000','Jupiter - Io',NULL,'ESRI','107918','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104918','GCS_Io_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106918','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106919','D_Leda_2000','Jupiter - Leda',NULL,'ESRI','107919','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104919','GCS_Leda_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106919','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106920','D_Lysithea_2000','Jupiter - Lysithea',NULL,'ESRI','107920','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104920','GCS_Lysithea_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106920','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106921','D_Metis_2000','Jupiter - Metis',NULL,'ESRI','107921','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104921','GCS_Metis_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106921','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106922','D_Pasiphae_2000','Jupiter - Pasiphae',NULL,'ESRI','107922','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104922','GCS_Pasiphae_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106922','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106923','D_Sinope_2000','Jupiter - Sinope',NULL,'ESRI','107923','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104923','GCS_Sinope_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106923','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106924','D_Thebe_2000','Jupiter - Thebe',NULL,'ESRI','107924','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104924','GCS_Thebe_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106924','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106925','D_Saturn_2000','Saturn',NULL,'ESRI','107925','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104925','GCS_Saturn_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106925','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106926','D_Atlas_2000','Saturn - Atlas',NULL,'ESRI','107926','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104926','GCS_Atlas_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106926','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106927','D_Calypso_2000','Saturn - Calypso',NULL,'ESRI','107927','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104927','GCS_Calypso_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106927','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106928','D_Dione_2000','Saturn - Dione',NULL,'ESRI','107928','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104928','GCS_Dione_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106928','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106929','D_Enceladus_2000','Saturn - Enceladus',NULL,'ESRI','107929','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104929','GCS_Enceladus_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106929','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106930','D_Epimetheus_2000','Saturn - Epimetheus',NULL,'ESRI','107930','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104930','GCS_Epimetheus_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106930','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106931','D_Helene_2000','Saturn - Helene',NULL,'ESRI','107931','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104931','GCS_Helene_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106931','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106932','D_Hyperion_2000','Saturn - Hyperion',NULL,'ESRI','107932','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104932','GCS_Hyperion_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106932','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106933','D_Iapetus_2000','Saturn - Iapetus',NULL,'ESRI','107933','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104933','GCS_Iapetus_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106933','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106934','D_Janus_2000','Saturn - Janus',NULL,'ESRI','107934','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104934','GCS_Janus_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106934','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106935','D_Mimas_2000','Saturn - Mimas',NULL,'ESRI','107935','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104935','GCS_Mimas_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106935','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106936','D_Pan_2000','Saturn - Pan',NULL,'ESRI','107936','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104936','GCS_Pan_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106936','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106937','D_Pandora_2000','Saturn - Pandora',NULL,'ESRI','107937','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104937','GCS_Pandora_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106937','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106938','D_Phoebe_2000','Saturn - Phoebe',NULL,'ESRI','107938','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104938','GCS_Phoebe_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106938','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106939','D_Prometheus_2000','Saturn - Prometheus',NULL,'ESRI','107939','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104939','GCS_Prometheus_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106939','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106940','D_Rhea_2000','Saturn - Rhea',NULL,'ESRI','107940','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104940','GCS_Rhea_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106940','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106941','D_Telesto_2000','Saturn - Telesto',NULL,'ESRI','107941','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104941','GCS_Telesto_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106941','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106942','D_Tethys_2000','Saturn - Tethys',NULL,'ESRI','107942','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104942','GCS_Tethys_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106942','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106943','D_Titan_2000','Saturn - Titan',NULL,'ESRI','107943','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104943','GCS_Titan_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106943','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106944','D_Uranus_2000','Uranus',NULL,'ESRI','107944','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104944','GCS_Uranus_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106944','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106945','D_Ariel_2000','Uranus - Ariel',NULL,'ESRI','107945','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104945','GCS_Ariel_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106945','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106946','D_Belinda_2000','Uranus - Belinda',NULL,'ESRI','107946','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104946','GCS_Belinda_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106946','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106947','D_Bianca_2000','Uranus - Bianca',NULL,'ESRI','107947','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104947','GCS_Bianca_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106947','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106948','D_Cordelia_2000','Uranus - Cordelia',NULL,'ESRI','107948','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104948','GCS_Cordelia_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106948','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106949','D_Cressida_2000','Uranus - Cressida',NULL,'ESRI','107949','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104949','GCS_Cressida_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106949','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106950','D_Desdemona_2000','Uranus - Desdemona',NULL,'ESRI','107950','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104950','GCS_Desdemona_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106950','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106951','D_Juliet_2000','Uranus - Juliet',NULL,'ESRI','107951','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104951','GCS_Juliet_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106951','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106952','D_Miranda_2000','Uranus - Miranda',NULL,'ESRI','107952','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104952','GCS_Miranda_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106952','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106953','D_Oberon_2000','Uranus - Oberon',NULL,'ESRI','107953','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104953','GCS_Oberon_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106953','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106954','D_Ophelia_2000','Uranus - Ophelia',NULL,'ESRI','107954','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104954','GCS_Ophelia_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106954','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106955','D_Portia_2000','Uranus - Portia',NULL,'ESRI','107955','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104955','GCS_Portia_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106955','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106956','D_Puck_2000','Uranus - Puck',NULL,'ESRI','107956','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104956','GCS_Puck_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106956','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106957','D_Rosalind_2000','Uranus - Rosalind',NULL,'ESRI','107957','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104957','GCS_Rosalind_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106957','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106958','D_Titania_2000','Uranus - Titania',NULL,'ESRI','107958','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104958','GCS_Titania_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106958','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106959','D_Umbriel_2000','Uranus - Umbriel',NULL,'ESRI','107959','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104959','GCS_Umbriel_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106959','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106960','D_Neptune_2000','Neptune',NULL,'ESRI','107960','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104960','GCS_Neptune_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106960','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106961','D_Despina_2000','Neptune - Despina',NULL,'ESRI','107961','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104961','GCS_Despina_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106961','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106962','D_Galatea_2000','Neptune - Galatea',NULL,'ESRI','107962','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104962','GCS_Galatea_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106962','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106963','D_Larissa_2000','Neptune - Larissa',NULL,'ESRI','107963','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104963','GCS_Larissa_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106963','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106964','D_Naiad_2000','Neptune - Naiad',NULL,'ESRI','107964','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104964','GCS_Naiad_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106964','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106965','D_Nereid_2000','Neptune - Nereid',NULL,'ESRI','107965','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104965','GCS_Nereid_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106965','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106966','D_Proteus_2000','Neptune - Proteus',NULL,'ESRI','107966','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104966','GCS_Proteus_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106966','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106967','D_Thalassa_2000','Neptune - Thalassa',NULL,'ESRI','107967','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104967','GCS_Thalassa_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106967','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106968','D_Triton_2000','Neptune - Triton',NULL,'ESRI','107968','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104968','GCS_Triton_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106968','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106969','D_Pluto_2000','Pluto',NULL,'ESRI','107969','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104969','GCS_Pluto_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106969','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106970','D_Charon_2000','Pluto - Charon',NULL,'ESRI','107970','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104970','GCS_Charon_2000',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106970','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106971','Mars_2000_(Sphere)','Mars 2000 (Sphere)',NULL,'ESRI','107971','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104971','Mars_2000_(Sphere)',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106971','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106972','1_Ceres_2015','1 Ceres 2015',NULL,'ESRI','107972','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104972','1_Ceres_2015',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106972','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106973','4_Vesta_2015','4 Vesta 2015',NULL,'ESRI','107973','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104973','4_Vesta_2015',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106973','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','106974','Mercury_2015','Mercury 2015',NULL,'ESRI','107974','ESRI','108900','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('ESRI','104974','Mercury_2015',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','106974','EPSG','1262',NULL,0); +INSERT INTO "geodetic_datum" VALUES('ESRI','1024','D_Hungarian_Datum_1909','Hungarian Datum 1909',NULL,'EPSG','7004','EPSG','8901','EPSG','1119',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104990','GCS_HD1909',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1024','EPSG','1119',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104990','EPSG','3819','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','1029','D_Iraqi_Geospatial_Reference_System','Iraqi Geospatial Reference System',NULL,'EPSG','7019','EPSG','8901','EPSG','1124',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104991','GCS_IGRS',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1029','EPSG','1124',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104991','EPSG','3889','ESRI'); +INSERT INTO "geodetic_datum" VALUES('ESRI','1031','D_MGI_1901','MGI 1901',NULL,'EPSG','7004','EPSG','8901','EPSG','2370',1); +INSERT INTO "geodetic_crs" VALUES('ESRI','104992','GCS_MGI_1901',NULL,NULL,'geographic 2D','EPSG','6422','ESRI','1031','EPSG','2370',NULL,1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','104992','EPSG','3906','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2000','Anguilla_1957_British_West_Indies_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2001','Antigua_1943_British_West_Indies_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2002','Dominica_1945_British_West_Indies_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2003','Grenada_1953_British_West_Indies_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2004','Montserrat_1958_British_West_Indies_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2005','St_Kitts_1955_British_West_Indies_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2006','St_Lucia_1955_British_West_Indies_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2007','St_Vincent_1945_British_West_Indies_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2008','NAD_1927_CGQ77_MTM_2_SCoPQ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2009','NAD_1927_CGQ77_MTM_3_SCoPQ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2010','NAD_1927_CGQ77_MTM_4_SCoPQ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2011','NAD_1927_CGQ77_MTM_5_SCoPQ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2012','NAD_1927_CGQ77_MTM_6_SCoPQ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2013','NAD_1927_CGQ77_MTM_7_SCoPQ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2014','NAD_1927_CGQ77_MTM_8_SCoPQ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2015','NAD_1927_CGQ77_MTM_9_SCoPQ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2016','NAD_1927_CGQ77_MTM_10_SCoPQ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2017','NAD_1927_DEF_1976_MTM_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2018','NAD_1927_DEF_1976_MTM_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2019','NAD_1927_DEF_1976_MTM_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2020','NAD_1927_DEF_1976_MTM_11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2021','NAD_1927_DEF_1976_MTM_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2022','NAD_1927_DEF_1976_MTM_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2023','NAD_1927_DEF_1976_MTM_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2024','NAD_1927_DEF_1976_MTM_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2025','NAD_1927_DEF_1976_MTM_16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2026','NAD_1927_DEF_1976_MTM_17','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2027','NAD_1927_DEF_1976_UTM_Zone_15N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2028','NAD_1927_DEF_1976_UTM_Zone_16N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2029','NAD_1927_DEF_1976_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2030','NAD_1927_DEF_1976_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2031','NAD_1927_CGQ77_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2032','NAD_1927_CGQ77_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2033','NAD_1927_CGQ77_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2034','NAD_1927_CGQ77_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2035','NAD_1927_CGQ77_UTM_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2953','NAD_1983_CSRS_New_Brunswick_Stereographic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2960','NAD_1983_CSRS_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2961','NAD_1983_CSRS_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2039','Israel_TM_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2040','Locodjo_1965_UTM_Zone_30N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2041','Abidjan_1987_UTM_Zone_30N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2042','Locodjo_1965_UTM_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2043','Abidjan_1987_UTM_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2044','Hanoi_1972_GK_Zone_18','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2045','Hanoi_1972_GK_Zone_19','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2056','CH1903+_LV95','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2057','Rassadiran_Nakhl_e_Taqi','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2058','ED_1950_ED77_UTM_Zone_38N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2059','ED_1950_ED77_UTM_Zone_39N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2060','ED_1950_ED77_UTM_Zone_40N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2061','ED_1950_ED77_UTM_Zone_41N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2062','Madrid_1870_Madrid_Spain','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3461','Dabola_1981_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3462','Dabola_1981_UTM_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2065','S-JTSK_Ferro_Krovak','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2066','Mount_Dillon_Tobago_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2067','Naparima_1955_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2068','ELD_1979_Libya_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2069','ELD_1979_Libya_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2070','ELD_1979_Libya_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2071','ELD_1979_Libya_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2072','ELD_1979_Libya_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2073','ELD_1979_Libya_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2074','ELD_1979_Libya_11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2075','ELD_1979_Libya_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2076','ELD_1979_Libya_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2077','ELD_1979_UTM_Zone_32N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2078','ELD_1979_UTM_Zone_33N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2079','ELD_1979_UTM_Zone_34N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2080','ELD_1979_UTM_Zone_35N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2081','Chos_Malal_1914_Argentina_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2082','Pampa_del_Castillo_Argentina_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2083','Hito_XVIII_1963_Argentina_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2084','Hito_XVIII_1963_UTM_19S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2085','NAD_1927_Cuba_Norte','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2086','NAD_1927_Cuba_Sur','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2087','ELD_1979_TM_12_NE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2088','Carthage_TM_11_NE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2089','Yemen_NGN_1996_UTM_Zone_38N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2090','Yemen_NGN_1996_UTM_Zone_39N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2395','South_Yemen_GK_Zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2396','South_Yemen_GK_Zone_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2093','Hanoi_1972_GK_106_NE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2094','WGS_1972_BE_TM_106_NE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2095','Bissau_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2096','Korean_1985_Korea_East_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2097','Korean_1985_Korea_Central_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2098','Korean_1985_Korea_West_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2099','Qatar_1948_Qatar_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2100','Greek_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2101','Lake_Maracaibo_Grid_M1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2102','Lake_Maracaibo_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2103','Lake_Maracaibo_Grid_M3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2104','Lake_Maracaibo_La_Rosa_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2105','NZGD_2000_Mount_Eden_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2106','NZGD_2000_Bay_of_Plenty_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2107','NZGD_2000_Poverty_Bay_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2108','NZGD_2000_Hawkes_Bay_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2109','NZGD_2000_Taranaki_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2110','NZGD_2000_Tuhirangi_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2111','NZGD_2000_Wanganui_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2112','NZGD_2000_Wairarapa_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2113','NZGD_2000_Wellington_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2114','NZGD_2000_Collingwood_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2115','NZGD_2000_Nelson_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2116','NZGD_2000_Karamea_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2117','NZGD_2000_Buller_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2118','NZGD_2000_Grey_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2119','NZGD_2000_Amuri_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2120','NZGD_2000_Marlborough_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2121','NZGD_2000_Hokitika_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2122','NZGD_2000_Okarito_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2123','NZGD_2000_Jacksons_Bay_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2124','NZGD_2000_Mount_Pleasant_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2125','NZGD_2000_Gawler_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2126','NZGD_2000_Timaru_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2127','NZGD_2000_Lindis_Peak_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2128','NZGD_2000_Mount_Nicholas_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2129','NZGD_2000_Mount_York_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2130','NZGD_2000_Observation_Point_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2131','NZGD_2000_North_Taieri_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2132','NZGD_2000_Bluff_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2133','NZGD_2000_UTM_Zone_58S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2134','NZGD_2000_UTM_Zone_59S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2135','NZGD_2000_UTM_Zone_60S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2136','Accra_Ghana_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2137','Accra_TM_1_NW','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2138','NAD_1927_CGQ77_Quebec_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2944','NAD_1983_CSRS_MTM_2_SCoPQ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2945','NAD_1983_CSRS_MTM_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2946','NAD_1983_CSRS_MTM_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2947','NAD_1983_CSRS_MTM_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2948','NAD_1983_CSRS_MTM_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2949','NAD_1983_CSRS_MTM_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2950','NAD_1983_CSRS_MTM_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2951','NAD_1983_CSRS_MTM_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2952','NAD_1983_CSRS_MTM_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2962','NAD_1983_CSRS_UTM_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2959','NAD_1983_CSRS_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2958','NAD_1983_CSRS_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2957','NAD_1983_CSRS_UTM_Zone_13N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2956','NAD_1983_CSRS_UTM_Zone_12N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2955','NAD_1983_CSRS_UTM_Zone_11N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2154','RGF_1993_Lambert_93','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3102','Samoa_1962_Samoa_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2157','IRENET95_Irish_Transverse_Mercator','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2158','IRENET95_UTM_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2159','Sierra_Leone_1924_New_Colony_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2160','Sierra_Leone_1924_New_War_Office_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2161','Sierra_Leone_1968_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2162','Sierra_Leone_1968_UTM_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2163','US_National_Atlas_Equal_Area','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2164','Locodjo_1965_TM_5_NW','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2165','Abidjan_1987_TM_5_NW','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2397','Pulkovo_1942_Adj_1983_3_Degree_GK_Zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2398','Pulkovo_1942_Adj_1983_3_Degree_GK_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2399','Pulkovo_1942_Adj_1983_3_Degree_GK_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2169','Luxembourg_1930_Gauss','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2170','MGI_Slovenia_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2172','Pulkovo_1942_Adj_1958_Poland_Zone_II','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2173','Pulkovo_1942_Adj_1958_Poland_Zone_III','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2174','Pulkovo_1942_Adj_1958_Poland_Zone_IV','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2175','Pulkovo_1942_Adj_1958_Poland_Zone_V','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2176','ETRS_1989_Poland_CS2000_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2177','ETRS_1989_Poland_CS2000_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2178','ETRS_1989_Poland_CS2000_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2179','ETRS_1989_Poland_CS2000_Zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2180','ETRS_1989_Poland_CS92','ESRI'); +INSERT INTO "projected_crs" VALUES('ESRI','2181','ED_1950_Turkey_9',NULL,NULL,NULL,NULL,'EPSG','4230',NULL,NULL,'EPSG','1524','PROJCS["ED_1950_Turkey_9",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",9500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",27.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','2182','ED_1950_Turkey_10',NULL,NULL,NULL,NULL,'EPSG','4230',NULL,NULL,'EPSG','1525','PROJCS["ED_1950_Turkey_10",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",10500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",30.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','2183','ED_1950_Turkey_11',NULL,NULL,NULL,NULL,'EPSG','4230',NULL,NULL,'EPSG','1526','PROJCS["ED_1950_Turkey_11",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",11500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",33.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','2184','ED_1950_Turkey_12',NULL,NULL,NULL,NULL,'EPSG','4230',NULL,NULL,'EPSG','1527','PROJCS["ED_1950_Turkey_12",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",12500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",36.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','2185','ED_1950_Turkey_13',NULL,NULL,NULL,NULL,'EPSG','4230',NULL,NULL,'EPSG','1528','PROJCS["ED_1950_Turkey_13",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",13500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",39.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','2186','ED_1950_Turkey_14',NULL,NULL,NULL,NULL,'EPSG','4230',NULL,NULL,'EPSG','1529','PROJCS["ED_1950_Turkey_14",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",14500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",42.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','2187','ED_1950_Turkey_15',NULL,NULL,NULL,NULL,'EPSG','4230',NULL,NULL,'EPSG','1530','PROJCS["ED_1950_Turkey_15",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",15500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",45.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2188','Azores_Occidental_1939_UTM_Zone_25N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2189','Azores_Central_1948_UTM_Zone_26N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2190','Azores_Oriental_1940_UTM_Zone_26N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2191','Madeira_1936_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2192','ED_1950_France_EuroLambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2193','NZGD_2000_New_Zealand_Transverse_Mercator','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2195','NAD_1983_HARN_UTM_Zone_2S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2196','ETRS_1989_Kp2000_Jutland','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2197','ETRS_1989_Kp2000_Zealand','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2198','ETRS_1989_Kp2000_Bornholm','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2200','ATS_1977_New_Brunswick_Stereographic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2201','REGVEN_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2202','REGVEN_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2203','REGVEN_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2204','NAD_1927_StatePlane_Tennessee_FIPS_4100','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2205','NAD_1983_StatePlane_Kentucky_North_FIPS_1601','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2206','ED_1950_3_Degree_GK_Zone_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2207','ED_1950_3_Degree_GK_Zone_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2208','ED_1950_3_Degree_GK_Zone_11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2209','ED_1950_3_Degree_GK_Zone_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2210','ED_1950_3_Degree_GK_Zone_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2211','ED_1950_3_Degree_GK_Zone_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2212','ED_1950_3_Degree_GK_Zone_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2213','ETRS_1989_TM_30_NE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3119','Douala_1948_AEF_West','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2215','Manoca_1962_UTM_Zone_32N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2216','Qornoq_1927_UTM_Zone_22N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2217','Qornoq_1927_UTM_Zone_23N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2219','ATS_1977_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2220','ATS_1977_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2222','NAD_1983_StatePlane_Arizona_East_FIPS_0201_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2223','NAD_1983_StatePlane_Arizona_Central_FIPS_0202_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2224','NAD_1983_StatePlane_Arizona_West_FIPS_0203_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2225','NAD_1983_StatePlane_California_I_FIPS_0401_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2226','NAD_1983_StatePlane_California_II_FIPS_0402_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2227','NAD_1983_StatePlane_California_III_FIPS_0403_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2228','NAD_1983_StatePlane_California_IV_FIPS_0404_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2229','NAD_1983_StatePlane_California_V_FIPS_0405_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2230','NAD_1983_StatePlane_California_VI_FIPS_0406_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2231','NAD_1983_StatePlane_Colorado_North_FIPS_0501_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2232','NAD_1983_StatePlane_Colorado_Central_FIPS_0502_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2233','NAD_1983_StatePlane_Colorado_South_FIPS_0503_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2234','NAD_1983_StatePlane_Connecticut_FIPS_0600_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2235','NAD_1983_StatePlane_Delaware_FIPS_0700_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2236','NAD_1983_StatePlane_Florida_East_FIPS_0901_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2237','NAD_1983_StatePlane_Florida_West_FIPS_0902_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2238','NAD_1983_StatePlane_Florida_North_FIPS_0903_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2239','NAD_1983_StatePlane_Georgia_East_FIPS_1001_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2240','NAD_1983_StatePlane_Georgia_West_FIPS_1002_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2241','NAD_1983_StatePlane_Idaho_East_FIPS_1101_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2242','NAD_1983_StatePlane_Idaho_Central_FIPS_1102_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2243','NAD_1983_StatePlane_Idaho_West_FIPS_1103_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2965','NAD_1983_StatePlane_Indiana_East_FIPS_1301_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2966','NAD_1983_StatePlane_Indiana_West_FIPS_1302_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2246','NAD_1983_StatePlane_Kentucky_North_FIPS_1601_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2247','NAD_1983_StatePlane_Kentucky_South_FIPS_1602_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2248','NAD_1983_StatePlane_Maryland_FIPS_1900_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2249','NAD_1983_StatePlane_Massachusetts_Mainland_FIPS_2001_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2250','NAD_1983_StatePlane_Massachusetts_Island_FIPS_2002_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2251','NAD_1983_StatePlane_Michigan_North_FIPS_2111_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2252','NAD_1983_StatePlane_Michigan_Central_FIPS_2112_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2253','NAD_1983_StatePlane_Michigan_South_FIPS_2113_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2254','NAD_1983_StatePlane_Mississippi_East_FIPS_2301_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2255','NAD_1983_StatePlane_Mississippi_West_FIPS_2302_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2256','NAD_1983_StatePlane_Montana_FIPS_2500_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2257','NAD_1983_StatePlane_New_Mexico_East_FIPS_3001_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2258','NAD_1983_StatePlane_New_Mexico_Central_FIPS_3002_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2259','NAD_1983_StatePlane_New_Mexico_West_FIPS_3003_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2260','NAD_1983_StatePlane_New_York_East_FIPS_3101_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2261','NAD_1983_StatePlane_New_York_Central_FIPS_3102_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2262','NAD_1983_StatePlane_New_York_West_FIPS_3103_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2263','NAD_1983_StatePlane_New_York_Long_Island_FIPS_3104_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2264','NAD_1983_StatePlane_North_Carolina_FIPS_3200_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2265','NAD_1983_StatePlane_North_Dakota_North_FIPS_3301_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2266','NAD_1983_StatePlane_North_Dakota_South_FIPS_3302_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2267','NAD_1983_StatePlane_Oklahoma_North_FIPS_3501_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2268','NAD_1983_StatePlane_Oklahoma_South_FIPS_3502_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2269','NAD_1983_StatePlane_Oregon_North_FIPS_3601_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2270','NAD_1983_StatePlane_Oregon_South_FIPS_3602_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2271','NAD_1983_StatePlane_Pennsylvania_North_FIPS_3701_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2272','NAD_1983_StatePlane_Pennsylvania_South_FIPS_3702_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2273','NAD_1983_StatePlane_South_Carolina_FIPS_3900_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2274','NAD_1983_StatePlane_Tennessee_FIPS_4100_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2275','NAD_1983_StatePlane_Texas_North_FIPS_4201_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2276','NAD_1983_StatePlane_Texas_North_Central_FIPS_4202_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2277','NAD_1983_StatePlane_Texas_Central_FIPS_4203_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2278','NAD_1983_StatePlane_Texas_South_Central_FIPS_4204_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2279','NAD_1983_StatePlane_Texas_South_FIPS_4205_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2280','NAD_1983_StatePlane_Utah_North_FIPS_4301_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2281','NAD_1983_StatePlane_Utah_Central_FIPS_4302_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2282','NAD_1983_StatePlane_Utah_South_FIPS_4303_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2283','NAD_1983_StatePlane_Virginia_North_FIPS_4501_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2284','NAD_1983_StatePlane_Virginia_South_FIPS_4502_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2285','NAD_1983_StatePlane_Washington_North_FIPS_4601_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2286','NAD_1983_StatePlane_Washington_South_FIPS_4602_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2287','NAD_1983_StatePlane_Wisconsin_North_FIPS_4801_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2288','NAD_1983_StatePlane_Wisconsin_Central_FIPS_4802_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2289','NAD_1983_StatePlane_Wisconsin_South_FIPS_4803_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2290','Prince_Edward_Island_Stereographic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2954','NAD_1983_CSRS_Prince_Edward_Island','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2954','NAD_1983_CSRS_Prince_Edward_Island','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2294','ATS_1977_MTM_4_Nova_Scotia','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2295','ATS_1977_MTM_5_Nova_Scotia','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2308','Batavia_TM_109_SE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2309','WGS_1984_TM_116_SE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2310','WGS_1984_TM_132_SE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2311','WGS_1984_TM_6_NE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2312','Garoua_UTM_Zone_33N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2313','Kousseri_UTM_Zone_33N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2314','Trinidad_1903_Trinidad_Grid_Feet_Clarke','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2315','Campo_Inchauspe_UTM_19S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2316','Campo_Inchauspe_UTM_20S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2317','PSAD_1956_ICN_Regional','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2318','Ain_el_Abd_Aramco_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2319','ED_1950_TM27','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2320','ED_1950_TM30','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2321','ED_1950_TM33','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2322','ED_1950_TM36','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2323','ED_1950_TM39','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2324','ED_1950_TM42','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2325','ED_1950_TM45','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2326','Hong_Kong_1980_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2327','Xian_1980_GK_Zone_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2328','Xian_1980_GK_Zone_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2329','Xian_1980_GK_Zone_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2330','Xian_1980_GK_Zone_16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2331','Xian_1980_GK_Zone_17','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2332','Xian_1980_GK_Zone_18','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2333','Xian_1980_GK_Zone_19','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2334','Xian_1980_GK_Zone_20','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2335','Xian_1980_GK_Zone_21','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2336','Xian_1980_GK_Zone_22','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2337','Xian_1980_GK_Zone_23','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2338','Xian_1980_GK_CM_75E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2339','Xian_1980_GK_CM_81E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2340','Xian_1980_GK_CM_87E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2341','Xian_1980_GK_CM_93E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2342','Xian_1980_GK_CM_99E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2343','Xian_1980_GK_CM_105E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2344','Xian_1980_GK_CM_111E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2345','Xian_1980_GK_CM_117E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2346','Xian_1980_GK_CM_123E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2347','Xian_1980_GK_CM_129E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2348','Xian_1980_GK_CM_135E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2349','Xian_1980_3_Degree_GK_Zone_25','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2350','Xian_1980_3_Degree_GK_Zone_26','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2351','Xian_1980_3_Degree_GK_Zone_27','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2352','Xian_1980_3_Degree_GK_Zone_28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2353','Xian_1980_3_Degree_GK_Zone_29','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2354','Xian_1980_3_Degree_GK_Zone_30','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2355','Xian_1980_3_Degree_GK_Zone_31','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2356','Xian_1980_3_Degree_GK_Zone_32','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2357','Xian_1980_3_Degree_GK_Zone_33','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2358','Xian_1980_3_Degree_GK_Zone_34','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2359','Xian_1980_3_Degree_GK_Zone_35','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2360','Xian_1980_3_Degree_GK_Zone_36','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2361','Xian_1980_3_Degree_GK_Zone_37','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2362','Xian_1980_3_Degree_GK_Zone_38','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2363','Xian_1980_3_Degree_GK_Zone_39','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2364','Xian_1980_3_Degree_GK_Zone_40','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2365','Xian_1980_3_Degree_GK_Zone_41','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2366','Xian_1980_3_Degree_GK_Zone_42','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2367','Xian_1980_3_Degree_GK_Zone_43','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2368','Xian_1980_3_Degree_GK_Zone_44','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2369','Xian_1980_3_Degree_GK_Zone_45','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2370','Xian_1980_3_Degree_GK_CM_75E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2371','Xian_1980_3_Degree_GK_CM_78E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2372','Xian_1980_3_Degree_GK_CM_81E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2373','Xian_1980_3_Degree_GK_CM_84E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2374','Xian_1980_3_Degree_GK_CM_87E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2375','Xian_1980_3_Degree_GK_CM_90E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2376','Xian_1980_3_Degree_GK_CM_93E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2377','Xian_1980_3_Degree_GK_CM_96E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2378','Xian_1980_3_Degree_GK_CM_99E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2379','Xian_1980_3_Degree_GK_CM_102E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2380','Xian_1980_3_Degree_GK_CM_105E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2381','Xian_1980_3_Degree_GK_CM_108E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2382','Xian_1980_3_Degree_GK_CM_111E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2383','Xian_1980_3_Degree_GK_CM_114E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2384','Xian_1980_3_Degree_GK_CM_117E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2385','Xian_1980_3_Degree_GK_CM_120E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2386','Xian_1980_3_Degree_GK_CM_123E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2387','Xian_1980_3_Degree_GK_CM_126E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2388','Xian_1980_3_Degree_GK_CM_129E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2389','Xian_1980_3_Degree_GK_CM_132E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2390','Xian_1980_3_Degree_GK_CM_135E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2391','Finland_Zone_1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2392','Finland_Zone_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2393','Finland_Zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2394','Finland_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2395','South_Yemen_GK_Zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2396','South_Yemen_GK_Zone_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2397','Pulkovo_1942_Adj_1983_3_Degree_GK_Zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2398','Pulkovo_1942_Adj_1983_3_Degree_GK_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2399','Pulkovo_1942_Adj_1983_3_Degree_GK_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2400','RT90_25_gon_W','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2401','Beijing_1954_3_Degree_GK_Zone_25','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2402','Beijing_1954_3_Degree_GK_Zone_26','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2403','Beijing_1954_3_Degree_GK_Zone_27','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2404','Beijing_1954_3_Degree_GK_Zone_28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2405','Beijing_1954_3_Degree_GK_Zone_29','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2406','Beijing_1954_3_Degree_GK_Zone_30','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2407','Beijing_1954_3_Degree_GK_Zone_31','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2408','Beijing_1954_3_Degree_GK_Zone_32','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2409','Beijing_1954_3_Degree_GK_Zone_33','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2410','Beijing_1954_3_Degree_GK_Zone_34','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2411','Beijing_1954_3_Degree_GK_Zone_35','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2412','Beijing_1954_3_Degree_GK_Zone_36','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2413','Beijing_1954_3_Degree_GK_Zone_37','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2414','Beijing_1954_3_Degree_GK_Zone_38','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2415','Beijing_1954_3_Degree_GK_Zone_39','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2416','Beijing_1954_3_Degree_GK_Zone_40','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2417','Beijing_1954_3_Degree_GK_Zone_41','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2418','Beijing_1954_3_Degree_GK_Zone_42','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2419','Beijing_1954_3_Degree_GK_Zone_43','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2420','Beijing_1954_3_Degree_GK_Zone_44','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2421','Beijing_1954_3_Degree_GK_Zone_45','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2422','Beijing_1954_3_Degree_GK_CM_75E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2423','Beijing_1954_3_Degree_GK_CM_78E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2424','Beijing_1954_3_Degree_GK_CM_81E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2425','Beijing_1954_3_Degree_GK_CM_84E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2426','Beijing_1954_3_Degree_GK_CM_87E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2427','Beijing_1954_3_Degree_GK_CM_90E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2428','Beijing_1954_3_Degree_GK_CM_93E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2429','Beijing_1954_3_Degree_GK_CM_96E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2430','Beijing_1954_3_Degree_GK_CM_99E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2431','Beijing_1954_3_Degree_GK_CM_102E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2432','Beijing_1954_3_Degree_GK_CM_105E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2433','Beijing_1954_3_Degree_GK_CM_108E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2434','Beijing_1954_3_Degree_GK_CM_111E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2435','Beijing_1954_3_Degree_GK_CM_114E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2436','Beijing_1954_3_Degree_GK_CM_117E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2437','Beijing_1954_3_Degree_GK_CM_120E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2438','Beijing_1954_3_Degree_GK_CM_123E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2439','Beijing_1954_3_Degree_GK_CM_126E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2440','Beijing_1954_3_Degree_GK_CM_129E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2441','Beijing_1954_3_Degree_GK_CM_132E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2442','Beijing_1954_3_Degree_GK_CM_135E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2443','JGD_2000_Japan_Zone_1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2444','JGD_2000_Japan_Zone_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2445','JGD_2000_Japan_Zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2446','JGD_2000_Japan_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2447','JGD_2000_Japan_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2448','JGD_2000_Japan_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2449','JGD_2000_Japan_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2450','JGD_2000_Japan_Zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2451','JGD_2000_Japan_Zone_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2452','JGD_2000_Japan_Zone_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2453','JGD_2000_Japan_Zone_11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2454','JGD_2000_Japan_Zone_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2455','JGD_2000_Japan_Zone_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2456','JGD_2000_Japan_Zone_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2457','JGD_2000_Japan_Zone_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2458','JGD_2000_Japan_Zone_16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2459','JGD_2000_Japan_Zone_17','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2460','JGD_2000_Japan_Zone_18','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2461','JGD_2000_Japan_Zone_19','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2462','Albanian_1987_GK_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2463','Pulkovo_1995_Gauss-Kruger_CM_21E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2464','Pulkovo_1995_Gauss-Kruger_CM_27E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2465','Pulkovo_1995_Gauss-Kruger_CM_33E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2466','Pulkovo_1995_Gauss-Kruger_CM_39E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2467','Pulkovo_1995_Gauss-Kruger_CM_45E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2468','Pulkovo_1995_Gauss-Kruger_CM_51E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2469','Pulkovo_1995_Gauss-Kruger_CM_57E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2470','Pulkovo_1995_Gauss-Kruger_CM_63E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2471','Pulkovo_1995_Gauss-Kruger_CM_69E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2472','Pulkovo_1995_Gauss-Kruger_CM_75E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2473','Pulkovo_1995_Gauss-Kruger_CM_81E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2474','Pulkovo_1995_Gauss-Kruger_CM_87E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2475','Pulkovo_1995_Gauss-Kruger_CM_93E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2476','Pulkovo_1995_Gauss-Kruger_CM_99E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2477','Pulkovo_1995_Gauss-Kruger_CM_105E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2478','Pulkovo_1995_Gauss-Kruger_CM_111E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2479','Pulkovo_1995_Gauss-Kruger_CM_117E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2480','Pulkovo_1995_Gauss-Kruger_CM_123E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2481','Pulkovo_1995_Gauss-Kruger_CM_129E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2482','Pulkovo_1995_Gauss-Kruger_CM_135E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2483','Pulkovo_1995_Gauss-Kruger_CM_141E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2484','Pulkovo_1995_Gauss-Kruger_CM_147E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2485','Pulkovo_1995_Gauss-Kruger_CM_153E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2486','Pulkovo_1995_Gauss-Kruger_CM_159E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2487','Pulkovo_1995_Gauss-Kruger_CM_165E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2488','Pulkovo_1995_Gauss-Kruger_CM_171E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2489','Pulkovo_1995_Gauss-Kruger_CM_177E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2490','Pulkovo_1995_Gauss-Kruger_CM_177W','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2491','Pulkovo_1995_Gauss-Kruger_CM_171W','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2494','Pulkovo_1942_Gauss-Kruger_CM_21E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2495','Pulkovo_1942_Gauss-Kruger_CM_27E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2496','Pulkovo_1942_Gauss-Kruger_CM_33E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2497','Pulkovo_1942_Gauss-Kruger_CM_39E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2498','Pulkovo_1942_Gauss-Kruger_CM_45E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2499','Pulkovo_1942_Gauss-Kruger_CM_51E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2500','Pulkovo_1942_Gauss-Kruger_CM_57E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2501','Pulkovo_1942_Gauss-Kruger_CM_63E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2502','Pulkovo_1942_Gauss-Kruger_CM_69E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2503','Pulkovo_1942_Gauss-Kruger_CM_75E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2504','Pulkovo_1942_Gauss-Kruger_CM_81E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2505','Pulkovo_1942_Gauss-Kruger_CM_87E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2506','Pulkovo_1942_Gauss-Kruger_CM_93E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2507','Pulkovo_1942_Gauss-Kruger_CM_99E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2508','Pulkovo_1942_Gauss-Kruger_CM_105E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2509','Pulkovo_1942_Gauss-Kruger_CM_111E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2510','Pulkovo_1942_Gauss-Kruger_CM_117E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2511','Pulkovo_1942_Gauss-Kruger_CM_123E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2512','Pulkovo_1942_Gauss-Kruger_CM_129E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2513','Pulkovo_1942_Gauss-Kruger_CM_135E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2514','Pulkovo_1942_Gauss-Kruger_CM_141E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2515','Pulkovo_1942_Gauss-Kruger_CM_147E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2516','Pulkovo_1942_Gauss-Kruger_CM_153E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2517','Pulkovo_1942_Gauss-Kruger_CM_159E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2518','Pulkovo_1942_Gauss-Kruger_CM_165E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2519','Pulkovo_1942_Gauss-Kruger_CM_171E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2520','Pulkovo_1942_Gauss-Kruger_CM_177E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2521','Pulkovo_1942_Gauss-Kruger_CM_177W','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2522','Pulkovo_1942_Gauss-Kruger_CM_171W','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2523','Pulkovo_1942_3_Degree_GK_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2524','Pulkovo_1942_3_Degree_GK_Zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2525','Pulkovo_1942_3_Degree_GK_Zone_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2526','Pulkovo_1942_3_Degree_GK_Zone_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2527','Pulkovo_1942_3_Degree_GK_Zone_11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2528','Pulkovo_1942_3_Degree_GK_Zone_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2529','Pulkovo_1942_3_Degree_GK_Zone_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2530','Pulkovo_1942_3_Degree_GK_Zone_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2531','Pulkovo_1942_3_Degree_GK_Zone_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2532','Pulkovo_1942_3_Degree_GK_Zone_16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2533','Pulkovo_1942_3_Degree_GK_Zone_17','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2534','Pulkovo_1942_3_Degree_GK_Zone_18','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2535','Pulkovo_1942_3_Degree_GK_Zone_19','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2536','Pulkovo_1942_3_Degree_GK_Zone_20','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2537','Pulkovo_1942_3_Degree_GK_Zone_21','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2538','Pulkovo_1942_3_Degree_GK_Zone_22','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2539','Pulkovo_1942_3_Degree_GK_Zone_23','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2540','Pulkovo_1942_3_Degree_GK_Zone_24','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2541','Pulkovo_1942_3_Degree_GK_Zone_25','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2542','Pulkovo_1942_3_Degree_GK_Zone_26','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2543','Pulkovo_1942_3_Degree_GK_Zone_27','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2544','Pulkovo_1942_3_Degree_GK_Zone_28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2545','Pulkovo_1942_3_Degree_GK_Zone_29','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2546','Pulkovo_1942_3_Degree_GK_Zone_30','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2547','Pulkovo_1942_3_Degree_GK_Zone_31','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2548','Pulkovo_1942_3_Degree_GK_Zone_32','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2549','Pulkovo_1942_3_Degree_GK_Zone_33','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2550','Samboja_UTM_Zone_50S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2551','Pulkovo_1942_3_Degree_GK_Zone_34','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2552','Pulkovo_1942_3_Degree_GK_Zone_35','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2553','Pulkovo_1942_3_Degree_GK_Zone_36','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2554','Pulkovo_1942_3_Degree_GK_Zone_37','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2555','Pulkovo_1942_3_Degree_GK_Zone_38','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2556','Pulkovo_1942_3_Degree_GK_Zone_39','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2557','Pulkovo_1942_3_Degree_GK_Zone_40','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2558','Pulkovo_1942_3_Degree_GK_Zone_41','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2559','Pulkovo_1942_3_Degree_GK_Zone_42','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2560','Pulkovo_1942_3_Degree_GK_Zone_43','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2561','Pulkovo_1942_3_Degree_GK_Zone_44','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2562','Pulkovo_1942_3_Degree_GK_Zone_45','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2563','Pulkovo_1942_3_Degree_GK_Zone_46','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2564','Pulkovo_1942_3_Degree_GK_Zone_47','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2565','Pulkovo_1942_3_Degree_GK_Zone_48','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2566','Pulkovo_1942_3_Degree_GK_Zone_49','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2567','Pulkovo_1942_3_Degree_GK_Zone_50','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2568','Pulkovo_1942_3_Degree_GK_Zone_51','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2569','Pulkovo_1942_3_Degree_GK_Zone_52','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2570','Pulkovo_1942_3_Degree_GK_Zone_53','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2571','Pulkovo_1942_3_Degree_GK_Zone_54','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2572','Pulkovo_1942_3_Degree_GK_Zone_55','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2573','Pulkovo_1942_3_Degree_GK_Zone_56','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2574','Pulkovo_1942_3_Degree_GK_Zone_57','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2575','Pulkovo_1942_3_Degree_GK_Zone_58','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2576','Pulkovo_1942_3_Degree_GK_Zone_59','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3389','Pulkovo_1942_3_Degree_GK_Zone_60','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2578','Pulkovo_1942_3_Degree_GK_Zone_61','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2579','Pulkovo_1942_3_Degree_GK_Zone_62','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2580','Pulkovo_1942_3_Degree_GK_Zone_63','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2581','Pulkovo_1942_3_Degree_GK_Zone_64','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2582','Pulkovo_1942_3_Degree_GK_CM_21E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2583','Pulkovo_1942_3_Degree_GK_CM_24E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2584','Pulkovo_1942_3_Degree_GK_CM_27E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2585','Pulkovo_1942_3_Degree_GK_CM_30E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2586','Pulkovo_1942_3_Degree_GK_CM_33E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2587','Pulkovo_1942_3_Degree_GK_CM_36E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2588','Pulkovo_1942_3_Degree_GK_CM_39E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2589','Pulkovo_1942_3_Degree_GK_CM_42E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2590','Pulkovo_1942_3_Degree_GK_CM_45E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2591','Pulkovo_1942_3_Degree_GK_CM_48E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2592','Pulkovo_1942_3_Degree_GK_CM_51E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2593','Pulkovo_1942_3_Degree_GK_CM_54E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2594','Pulkovo_1942_3_Degree_GK_CM_57E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2595','Pulkovo_1942_3_Degree_GK_CM_60E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2596','Pulkovo_1942_3_Degree_GK_CM_63E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2597','Pulkovo_1942_3_Degree_GK_CM_66E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2598','Pulkovo_1942_3_Degree_GK_CM_69E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2599','Pulkovo_1942_3_Degree_GK_CM_72E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3346','LKS_1994_Lithuania_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2601','Pulkovo_1942_3_Degree_GK_CM_75E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2602','Pulkovo_1942_3_Degree_GK_CM_78E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2603','Pulkovo_1942_3_Degree_GK_CM_81E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2604','Pulkovo_1942_3_Degree_GK_CM_84E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2605','Pulkovo_1942_3_Degree_GK_CM_87E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2606','Pulkovo_1942_3_Degree_GK_CM_90E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2607','Pulkovo_1942_3_Degree_GK_CM_93E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2608','Pulkovo_1942_3_Degree_GK_CM_96E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2609','Pulkovo_1942_3_Degree_GK_CM_99E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2610','Pulkovo_1942_3_Degree_GK_CM_102E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2611','Pulkovo_1942_3_Degree_GK_CM_105E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2612','Pulkovo_1942_3_Degree_GK_CM_108E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2613','Pulkovo_1942_3_Degree_GK_CM_111E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2614','Pulkovo_1942_3_Degree_GK_CM_114E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2615','Pulkovo_1942_3_Degree_GK_CM_117E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2616','Pulkovo_1942_3_Degree_GK_CM_120E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2617','Pulkovo_1942_3_Degree_GK_CM_123E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2618','Pulkovo_1942_3_Degree_GK_CM_126E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2619','Pulkovo_1942_3_Degree_GK_CM_129E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2620','Pulkovo_1942_3_Degree_GK_CM_132E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2621','Pulkovo_1942_3_Degree_GK_CM_135E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2622','Pulkovo_1942_3_Degree_GK_CM_138E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2623','Pulkovo_1942_3_Degree_GK_CM_141E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2624','Pulkovo_1942_3_Degree_GK_CM_144E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2625','Pulkovo_1942_3_Degree_GK_CM_147E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2626','Pulkovo_1942_3_Degree_GK_CM_150E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2627','Pulkovo_1942_3_Degree_GK_CM_153E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2628','Pulkovo_1942_3_Degree_GK_CM_156E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2629','Pulkovo_1942_3_Degree_GK_CM_159E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2630','Pulkovo_1942_3_Degree_GK_CM_162E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2631','Pulkovo_1942_3_Degree_GK_CM_165E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2632','Pulkovo_1942_3_Degree_GK_CM_168E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2633','Pulkovo_1942_3_Degree_GK_CM_171E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2634','Pulkovo_1942_3_Degree_GK_CM_174E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2635','Pulkovo_1942_3_Degree_GK_CM_177E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2636','Pulkovo_1942_3_Degree_GK_CM_180E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2637','Pulkovo_1942_3_Degree_GK_CM_177W','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2638','Pulkovo_1942_3_Degree_GK_CM_174W','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2639','Pulkovo_1942_3_Degree_GK_CM_171W','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2640','Pulkovo_1942_3_Degree_GK_CM_168W','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2641','Pulkovo_1995_3_Degree_GK_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2642','Pulkovo_1995_3_Degree_GK_Zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2643','Pulkovo_1995_3_Degree_GK_Zone_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2644','Pulkovo_1995_3_Degree_GK_Zone_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2645','Pulkovo_1995_3_Degree_GK_Zone_11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2646','Pulkovo_1995_3_Degree_GK_Zone_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2647','Pulkovo_1995_3_Degree_GK_Zone_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2648','Pulkovo_1995_3_Degree_GK_Zone_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2649','Pulkovo_1995_3_Degree_GK_Zone_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2650','Pulkovo_1995_3_Degree_GK_Zone_16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2651','Pulkovo_1995_3_Degree_GK_Zone_17','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2652','Pulkovo_1995_3_Degree_GK_Zone_18','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2653','Pulkovo_1995_3_Degree_GK_Zone_19','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2654','Pulkovo_1995_3_Degree_GK_Zone_20','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2655','Pulkovo_1995_3_Degree_GK_Zone_21','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2656','Pulkovo_1995_3_Degree_GK_Zone_22','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2657','Pulkovo_1995_3_Degree_GK_Zone_23','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2658','Pulkovo_1995_3_Degree_GK_Zone_24','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2659','Pulkovo_1995_3_Degree_GK_Zone_25','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2660','Pulkovo_1995_3_Degree_GK_Zone_26','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2661','Pulkovo_1995_3_Degree_GK_Zone_27','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2662','Pulkovo_1995_3_Degree_GK_Zone_28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2663','Pulkovo_1995_3_Degree_GK_Zone_29','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2664','Pulkovo_1995_3_Degree_GK_Zone_30','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2665','Pulkovo_1995_3_Degree_GK_Zone_31','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2666','Pulkovo_1995_3_Degree_GK_Zone_32','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2667','Pulkovo_1995_3_Degree_GK_Zone_33','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2668','Pulkovo_1995_3_Degree_GK_Zone_34','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2669','Pulkovo_1995_3_Degree_GK_Zone_35','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2670','Pulkovo_1995_3_Degree_GK_Zone_36','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2671','Pulkovo_1995_3_Degree_GK_Zone_37','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2672','Pulkovo_1995_3_Degree_GK_Zone_38','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2673','Pulkovo_1995_3_Degree_GK_Zone_39','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2674','Pulkovo_1995_3_Degree_GK_Zone_40','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2675','Pulkovo_1995_3_Degree_GK_Zone_41','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2676','Pulkovo_1995_3_Degree_GK_Zone_42','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2677','Pulkovo_1995_3_Degree_GK_Zone_43','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2678','Pulkovo_1995_3_Degree_GK_Zone_44','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2679','Pulkovo_1995_3_Degree_GK_Zone_45','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2680','Pulkovo_1995_3_Degree_GK_Zone_46','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2681','Pulkovo_1995_3_Degree_GK_Zone_47','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2682','Pulkovo_1995_3_Degree_GK_Zone_48','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2683','Pulkovo_1995_3_Degree_GK_Zone_49','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2684','Pulkovo_1995_3_Degree_GK_Zone_50','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2685','Pulkovo_1995_3_Degree_GK_Zone_51','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2686','Pulkovo_1995_3_Degree_GK_Zone_52','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2687','Pulkovo_1995_3_Degree_GK_Zone_53','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2688','Pulkovo_1995_3_Degree_GK_Zone_54','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2689','Pulkovo_1995_3_Degree_GK_Zone_55','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2690','Pulkovo_1995_3_Degree_GK_Zone_56','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2691','Pulkovo_1995_3_Degree_GK_Zone_57','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2692','Pulkovo_1995_3_Degree_GK_Zone_58','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2693','Pulkovo_1995_3_Degree_GK_Zone_59','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3390','Pulkovo_1995_3_Degree_GK_Zone_60','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2695','Pulkovo_1995_3_Degree_GK_Zone_61','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2696','Pulkovo_1995_3_Degree_GK_Zone_62','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2697','Pulkovo_1995_3_Degree_GK_Zone_63','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2698','Pulkovo_1995_3_Degree_GK_Zone_64','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2699','Pulkovo_1995_3_Degree_GK_CM_21E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2700','Pulkovo_1995_3_Degree_GK_CM_24E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2701','Pulkovo_1995_3_Degree_GK_CM_27E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2702','Pulkovo_1995_3_Degree_GK_CM_30E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2703','Pulkovo_1995_3_Degree_GK_CM_33E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2704','Pulkovo_1995_3_Degree_GK_CM_36E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2705','Pulkovo_1995_3_Degree_GK_CM_39E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2706','Pulkovo_1995_3_Degree_GK_CM_42E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2707','Pulkovo_1995_3_Degree_GK_CM_45E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2708','Pulkovo_1995_3_Degree_GK_CM_48E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2709','Pulkovo_1995_3_Degree_GK_CM_51E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2710','Pulkovo_1995_3_Degree_GK_CM_54E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2711','Pulkovo_1995_3_Degree_GK_CM_57E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2712','Pulkovo_1995_3_Degree_GK_CM_60E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2713','Pulkovo_1995_3_Degree_GK_CM_63E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2714','Pulkovo_1995_3_Degree_GK_CM_66E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2715','Pulkovo_1995_3_Degree_GK_CM_69E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2716','Pulkovo_1995_3_Degree_GK_CM_72E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2717','Pulkovo_1995_3_Degree_GK_CM_75E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2718','Pulkovo_1995_3_Degree_GK_CM_78E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2719','Pulkovo_1995_3_Degree_GK_CM_81E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2720','Pulkovo_1995_3_Degree_GK_CM_84E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2721','Pulkovo_1995_3_Degree_GK_CM_87E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2722','Pulkovo_1995_3_Degree_GK_CM_90E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2723','Pulkovo_1995_3_Degree_GK_CM_93E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2724','Pulkovo_1995_3_Degree_GK_CM_96E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2725','Pulkovo_1995_3_Degree_GK_CM_99E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2726','Pulkovo_1995_3_Degree_GK_CM_102E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2727','Pulkovo_1995_3_Degree_GK_CM_105E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2728','Pulkovo_1995_3_Degree_GK_CM_108E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2729','Pulkovo_1995_3_Degree_GK_CM_111E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2730','Pulkovo_1995_3_Degree_GK_CM_114E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2731','Pulkovo_1995_3_Degree_GK_CM_117E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2732','Pulkovo_1995_3_Degree_GK_CM_120E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2733','Pulkovo_1995_3_Degree_GK_CM_123E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2734','Pulkovo_1995_3_Degree_GK_CM_126E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2735','Pulkovo_1995_3_Degree_GK_CM_129E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2736','Tete_UTM_Zone_36S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2737','Tete_UTM_Zone_37S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2738','Pulkovo_1995_3_Degree_GK_CM_132E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2739','Pulkovo_1995_3_Degree_GK_CM_135E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2740','Pulkovo_1995_3_Degree_GK_CM_138E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2741','Pulkovo_1995_3_Degree_GK_CM_141E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2742','Pulkovo_1995_3_Degree_GK_CM_144E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2743','Pulkovo_1995_3_Degree_GK_CM_147E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2744','Pulkovo_1995_3_Degree_GK_CM_150E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2745','Pulkovo_1995_3_Degree_GK_CM_153E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2746','Pulkovo_1995_3_Degree_GK_CM_156E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2747','Pulkovo_1995_3_Degree_GK_CM_159E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2748','Pulkovo_1995_3_Degree_GK_CM_162E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2749','Pulkovo_1995_3_Degree_GK_CM_165E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2750','Pulkovo_1995_3_Degree_GK_CM_168E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2751','Pulkovo_1995_3_Degree_GK_CM_171E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2752','Pulkovo_1995_3_Degree_GK_CM_174E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2753','Pulkovo_1995_3_Degree_GK_CM_177E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2754','Pulkovo_1995_3_Degree_GK_CM_180E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2755','Pulkovo_1995_3_Degree_GK_CM_177W','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2756','Pulkovo_1995_3_Degree_GK_CM_174W','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2757','Pulkovo_1995_3_Degree_GK_CM_171W','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2758','Pulkovo_1995_3_Degree_GK_CM_168W','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2759','NAD_1983_HARN_StatePlane_Alabama_East_FIPS_0101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2760','NAD_1983_HARN_StatePlane_Alabama_West_FIPS_0102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2761','NAD_1983_HARN_StatePlane_Arizona_East_FIPS_0201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2762','NAD_1983_HARN_StatePlane_Arizona_Central_FIPS_0202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2763','NAD_1983_HARN_StatePlane_Arizona_West_FIPS_0203','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2764','NAD_1983_HARN_StatePlane_Arkansas_North_FIPS_0301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2765','NAD_1983_HARN_StatePlane_Arkansas_South_FIPS_0302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2766','NAD_1983_HARN_StatePlane_California_I_FIPS_0401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2767','NAD_1983_HARN_StatePlane_California_II_FIPS_0402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2768','NAD_1983_HARN_StatePlane_California_III_FIPS_0403','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2769','NAD_1983_HARN_StatePlane_California_IV_FIPS_0404','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2770','NAD_1983_HARN_StatePlane_California_V_FIPS_0405','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2771','NAD_1983_HARN_StatePlane_California_VI_FIPS_0406','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2772','NAD_1983_HARN_StatePlane_Colorado_North_FIPS_0501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2773','NAD_1983_HARN_StatePlane_Colorado_Central_FIPS_0502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2774','NAD_1983_HARN_StatePlane_Colorado_South_FIPS_0503','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2775','NAD_1983_HARN_StatePlane_Connecticut_FIPS_0600','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2776','NAD_1983_HARN_StatePlane_Delaware_FIPS_0700','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2777','NAD_1983_HARN_StatePlane_Florida_East_FIPS_0901','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2778','NAD_1983_HARN_StatePlane_Florida_West_FIPS_0902','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2779','NAD_1983_HARN_StatePlane_Florida_North_FIPS_0903','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2780','NAD_1983_HARN_StatePlane_Georgia_East_FIPS_1001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2781','NAD_1983_HARN_StatePlane_Georgia_West_FIPS_1002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2782','NAD_1983_HARN_StatePlane_Hawaii_1_FIPS_5101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2783','NAD_1983_HARN_StatePlane_Hawaii_2_FIPS_5102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2784','NAD_1983_HARN_StatePlane_Hawaii_3_FIPS_5103','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2785','NAD_1983_HARN_StatePlane_Hawaii_4_FIPS_5104','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2786','NAD_1983_HARN_StatePlane_Hawaii_5_FIPS_5105','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2787','NAD_1983_HARN_StatePlane_Idaho_East_FIPS_1101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2788','NAD_1983_HARN_StatePlane_Idaho_Central_FIPS_1102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2789','NAD_1983_HARN_StatePlane_Idaho_West_FIPS_1103','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2790','NAD_1983_HARN_StatePlane_Illinois_East_FIPS_1201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2791','NAD_1983_HARN_StatePlane_Illinois_West_FIPS_1202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2792','NAD_1983_HARN_StatePlane_Indiana_East_FIPS_1301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2793','NAD_1983_HARN_StatePlane_Indiana_West_FIPS_1302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2794','NAD_1983_HARN_StatePlane_Iowa_North_FIPS_1401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2795','NAD_1983_HARN_StatePlane_Iowa_South_FIPS_1402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2796','NAD_1983_HARN_StatePlane_Kansas_North_FIPS_1501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2797','NAD_1983_HARN_StatePlane_Kansas_South_FIPS_1502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2798','NAD_1983_HARN_StatePlane_Kentucky_North_FIPS_1601','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2799','NAD_1983_HARN_StatePlane_Kentucky_South_FIPS_1602','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2800','NAD_1983_HARN_StatePlane_Louisiana_North_FIPS_1701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2801','NAD_1983_HARN_StatePlane_Louisiana_South_FIPS_1702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2802','NAD_1983_HARN_StatePlane_Maine_East_FIPS_1801','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2803','NAD_1983_HARN_StatePlane_Maine_West_FIPS_1802','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2804','NAD_1983_HARN_StatePlane_Maryland_FIPS_1900','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2805','NAD_1983_HARN_StatePlane_Massachusetts_Mainland_FIPS_2001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2806','NAD_1983_HARN_StatePlane_Massachusetts_Island_FIPS_2002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2807','NAD_1983_HARN_StatePlane_Michigan_North_FIPS_2111','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2808','NAD_1983_HARN_StatePlane_Michigan_Central_FIPS_2112','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2809','NAD_1983_HARN_StatePlane_Michigan_South_FIPS_2113','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2810','NAD_1983_HARN_StatePlane_Minnesota_North_FIPS_2201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2811','NAD_1983_HARN_StatePlane_Minnesota_Central_FIPS_2202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2812','NAD_1983_HARN_StatePlane_Minnesota_South_FIPS_2203','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2813','NAD_1983_HARN_StatePlane_Mississippi_East_FIPS_2301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2814','NAD_1983_HARN_StatePlane_Mississippi_West_FIPS_2302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2815','NAD_1983_HARN_StatePlane_Missouri_East_FIPS_2401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2816','NAD_1983_HARN_StatePlane_Missouri_Central_FIPS_2402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2817','NAD_1983_HARN_StatePlane_Missouri_West_FIPS_2403','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2818','NAD_1983_HARN_StatePlane_Montana_FIPS_2500','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2819','NAD_1983_HARN_StatePlane_Nebraska_FIPS_2600','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2820','NAD_1983_HARN_StatePlane_Nevada_East_FIPS_2701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2821','NAD_1983_HARN_StatePlane_Nevada_Central_FIPS_2702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2822','NAD_1983_HARN_StatePlane_Nevada_West_FIPS_2703','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2823','NAD_1983_HARN_StatePlane_New_Hampshire_FIPS_2800','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2824','NAD_1983_HARN_StatePlane_New_Jersey_FIPS_2900','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2825','NAD_1983_HARN_StatePlane_New_Mexico_East_FIPS_3001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2826','NAD_1983_HARN_StatePlane_New_Mexico_Central_FIPS_3002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2827','NAD_1983_HARN_StatePlane_New_Mexico_West_FIPS_3003','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2828','NAD_1983_HARN_StatePlane_New_York_East_FIPS_3101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2829','NAD_1983_HARN_StatePlane_New_York_Central_FIPS_3102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2830','NAD_1983_HARN_StatePlane_New_York_West_FIPS_3103','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2831','NAD_1983_HARN_StatePlane_New_York_Long_Island_FIPS_3104','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2832','NAD_1983_HARN_StatePlane_North_Dakota_North_FIPS_3301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2833','NAD_1983_HARN_StatePlane_North_Dakota_South_FIPS_3302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2834','NAD_1983_HARN_StatePlane_Ohio_North_FIPS_3401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2835','NAD_1983_HARN_StatePlane_Ohio_South_FIPS_3402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2836','NAD_1983_HARN_StatePlane_Oklahoma_North_FIPS_3501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2837','NAD_1983_HARN_StatePlane_Oklahoma_South_FIPS_3502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2838','NAD_1983_HARN_StatePlane_Oregon_North_FIPS_3601','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2839','NAD_1983_HARN_StatePlane_Oregon_South_FIPS_3602','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2840','NAD_1983_HARN_StatePlane_Rhode_Island_FIPS_3800','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2841','NAD_1983_HARN_StatePlane_South_Dakota_North_FIPS_4001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2842','NAD_1983_HARN_StatePlane_South_Dakota_South_FIPS_4002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2843','NAD_1983_HARN_StatePlane_Tennessee_FIPS_4100','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2844','NAD_1983_HARN_StatePlane_Texas_North_FIPS_4201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2845','NAD_1983_HARN_StatePlane_Texas_North_Central_FIPS_4202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2846','NAD_1983_HARN_StatePlane_Texas_Central_FIPS_4203','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2847','NAD_1983_HARN_StatePlane_Texas_South_Central_FIPS_4204','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2848','NAD_1983_HARN_StatePlane_Texas_South_FIPS_4205','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2849','NAD_1983_HARN_StatePlane_Utah_North_FIPS_4301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2850','NAD_1983_HARN_StatePlane_Utah_Central_FIPS_4302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2851','NAD_1983_HARN_StatePlane_Utah_South_FIPS_4303','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2852','NAD_1983_HARN_StatePlane_Vermont_FIPS_4400','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2853','NAD_1983_HARN_StatePlane_Virginia_North_FIPS_4501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2854','NAD_1983_HARN_StatePlane_Virginia_South_FIPS_4502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2855','NAD_1983_HARN_StatePlane_Washington_North_FIPS_4601','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2856','NAD_1983_HARN_StatePlane_Washington_South_FIPS_4602','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2857','NAD_1983_HARN_StatePlane_West_Virginia_North_FIPS_4701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2858','NAD_1983_HARN_StatePlane_West_Virginia_South_FIPS_4702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2859','NAD_1983_HARN_StatePlane_Wisconsin_North_FIPS_4801','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2860','NAD_1983_HARN_StatePlane_Wisconsin_Central_FIPS_4802','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2861','NAD_1983_HARN_StatePlane_Wisconsin_South_FIPS_4803','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2862','NAD_1983_HARN_StatePlane_Wyoming_East_FIPS_4901','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2863','NAD_1983_HARN_StatePlane_Wyoming_East_Central_FIPS_4902','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2864','NAD_1983_HARN_StatePlane_Wyoming_West_Central_FIPS_4903','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2865','NAD_1983_HARN_StatePlane_Wyoming_West_FIPS_4904','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2866','NAD_1983_HARN_StatePlane_Puerto_Rico_Virgin_Islands_FIPS_5200','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2867','NAD_1983_HARN_StatePlane_Arizona_East_FIPS_0201_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2868','NAD_1983_HARN_StatePlane_Arizona_Central_FIPS_0202_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2869','NAD_1983_HARN_StatePlane_Arizona_West_FIPS_0203_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2870','NAD_1983_HARN_StatePlane_California_I_FIPS_0401_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2871','NAD_1983_HARN_StatePlane_California_II_FIPS_0402_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2872','NAD_1983_HARN_StatePlane_California_III_FIPS_0403_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2873','NAD_1983_HARN_StatePlane_California_IV_FIPS_0404_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2874','NAD_1983_HARN_StatePlane_California_V_FIPS_0405_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2875','NAD_1983_HARN_StatePlane_California_VI_FIPS_0406_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2876','NAD_1983_HARN_StatePlane_Colorado_North_FIPS_0501_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2877','NAD_1983_HARN_StatePlane_Colorado_Central_FIPS_0502_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2878','NAD_1983_HARN_StatePlane_Colorado_South_FIPS_0503_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2879','NAD_1983_HARN_StatePlane_Connecticut_FIPS_0600_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2880','NAD_1983_HARN_StatePlane_Delaware_FIPS_0700_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2881','NAD_1983_HARN_StatePlane_Florida_East_FIPS_0901_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2882','NAD_1983_HARN_StatePlane_Florida_West_FIPS_0902_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2883','NAD_1983_HARN_StatePlane_Florida_North_FIPS_0903_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2884','NAD_1983_HARN_StatePlane_Georgia_East_FIPS_1001_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2885','NAD_1983_HARN_StatePlane_Georgia_West_FIPS_1002_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2886','NAD_1983_HARN_StatePlane_Idaho_East_FIPS_1101_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2887','NAD_1983_HARN_StatePlane_Idaho_Central_FIPS_1102_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2888','NAD_1983_HARN_StatePlane_Idaho_West_FIPS_1103_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2891','NAD_1983_HARN_StatePlane_Kentucky_North_FIPS_1601_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2892','NAD_1983_HARN_StatePlane_Kentucky_South_FIPS_1602_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2893','NAD_1983_HARN_StatePlane_Maryland_FIPS_1900_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2894','NAD_1983_HARN_StatePlane_Massachusetts_Mainland_FIPS_2001_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2895','NAD_1983_HARN_StatePlane_Massachusetts_Island_FIPS_2002_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2896','NAD_1983_HARN_StatePlane_Michigan_North_FIPS_2111_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2897','NAD_1983_HARN_StatePlane_Michigan_Central_FIPS_2112_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2898','NAD_1983_HARN_StatePlane_Michigan_South_FIPS_2113_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2899','NAD_1983_HARN_StatePlane_Mississippi_East_FIPS_2301_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2900','NAD_1983_HARN_StatePlane_Mississippi_West_FIPS_2302_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2901','NAD_1983_HARN_StatePlane_Montana_FIPS_2500_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2902','NAD_1983_HARN_StatePlane_New_Mexico_East_FIPS_3001_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2903','NAD_1983_HARN_StatePlane_New_Mexico_Central_FIPS_3002_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2904','NAD_1983_HARN_StatePlane_New_Mexico_West_FIPS_3003_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2905','NAD_1983_HARN_StatePlane_New_York_East_FIPS_3101_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2906','NAD_1983_HARN_StatePlane_New_York_Central_FIPS_3102_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2907','NAD_1983_HARN_StatePlane_New_York_West_FIPS_3103_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2908','NAD_1983_HARN_StatePlane_New_York_Long_Island_FIPS_3104_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2909','NAD_1983_HARN_StatePlane_North_Dakota_North_FIPS_3301_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2910','NAD_1983_HARN_StatePlane_North_Dakota_South_FIPS_3302_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2911','NAD_1983_HARN_StatePlane_Oklahoma_North_FIPS_3501_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2912','NAD_1983_HARN_StatePlane_Oklahoma_South_FIPS_3502_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2913','NAD_1983_HARN_StatePlane_Oregon_North_FIPS_3601_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2914','NAD_1983_HARN_StatePlane_Oregon_South_FIPS_3602_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2915','NAD_1983_HARN_StatePlane_Tennessee_FIPS_4100_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2916','NAD_1983_HARN_StatePlane_Texas_North_FIPS_4201_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2917','NAD_1983_HARN_StatePlane_Texas_North_Central_FIPS_4202_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2918','NAD_1983_HARN_StatePlane_Texas_Central_FIPS_4203_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2919','NAD_1983_HARN_StatePlane_Texas_South_Central_FIPS_4204_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2920','NAD_1983_HARN_StatePlane_Texas_South_FIPS_4205_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2921','NAD_1983_HARN_StatePlane_Utah_North_FIPS_4301_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2922','NAD_1983_HARN_StatePlane_Utah_Central_FIPS_4302_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2923','NAD_1983_HARN_StatePlane_Utah_South_FIPS_4303_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2924','NAD_1983_HARN_StatePlane_Virginia_North_FIPS_4501_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2925','NAD_1983_HARN_StatePlane_Virginia_South_FIPS_4502_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2926','NAD_1983_HARN_StatePlane_Washington_North_FIPS_4601_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2927','NAD_1983_HARN_StatePlane_Washington_South_FIPS_4602_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2928','NAD_1983_HARN_StatePlane_Wisconsin_North_FIPS_4801_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2929','NAD_1983_HARN_StatePlane_Wisconsin_Central_FIPS_4802_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2930','NAD_1983_HARN_StatePlane_Wisconsin_South_FIPS_4803_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2931','Beduaram_TM_13_NE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2932','QND_1995_Qatar_National_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2933','Gunung_Segara_UTM_Zone_50S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5329','Gunung_Segara_Jakarta_NEIEZ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2935','Pulkovo_1942_CS63_Zone_A1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2936','Pulkovo_1942_CS63_Zone_A2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2937','Pulkovo_1942_CS63_Zone_A3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2938','Pulkovo_1942_CS63_Zone_A4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2939','Pulkovo_1942_CS63_Zone_K2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2940','Pulkovo_1942_CS63_Zone_K3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2941','Pulkovo_1942_CS63_Zone_K4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2942','Porto_Santo_1936_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2943','Selvagem_Grande_1938_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2944','NAD_1983_CSRS_MTM_2_SCoPQ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2945','NAD_1983_CSRS_MTM_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2946','NAD_1983_CSRS_MTM_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2947','NAD_1983_CSRS_MTM_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2948','NAD_1983_CSRS_MTM_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2949','NAD_1983_CSRS_MTM_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2950','NAD_1983_CSRS_MTM_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2951','NAD_1983_CSRS_MTM_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2952','NAD_1983_CSRS_MTM_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2953','NAD_1983_CSRS_New_Brunswick_Stereographic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2954','NAD_1983_CSRS_Prince_Edward_Island','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2955','NAD_1983_CSRS_UTM_Zone_11N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2956','NAD_1983_CSRS_UTM_Zone_12N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2957','NAD_1983_CSRS_UTM_Zone_13N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2958','NAD_1983_CSRS_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2959','NAD_1983_CSRS_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2960','NAD_1983_CSRS_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2961','NAD_1983_CSRS_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2962','NAD_1983_CSRS_UTM_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2964','NAD_1927_Alaska_Albers_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2965','NAD_1983_StatePlane_Indiana_East_FIPS_1301_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2966','NAD_1983_StatePlane_Indiana_West_FIPS_1302_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2967','NAD_1983_HARN_StatePlane_Indiana_East_FIPS_1301_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2968','NAD_1983_HARN_StatePlane_Indiana_West_FIPS_1302_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2969','Fort_Marigot_UTM_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2970','Sainte_Anne_UTM_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2971','CSG_1967_UTM_22N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2972','RGFG_1995_UTM_22N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2973','Fort_Desaix_UTM_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2975','RGR_1992_UTM_40S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2976','Tahiti_1952_UTM_6S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2977','Tahaa_1954_UTM_5S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2978','IGN72_Nuku_Hiva_UTM_7S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3336','Kerguelen_Island_1949_UTM_42S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2980','Combani_1950_UTM_38S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2981','IGN56_Lifou_UTM_58S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3060','IGN72_Grande_Terre_UTM_58S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2984','RGNC_1991_Lambert_New_Caledonia','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2985','Petrels_1972_Terre_Adelie_Polar_Stereographic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2986','Perroud_1950_Terre_Adelie_Polar_Stereographic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2987','Saint_Pierre_et_Miquelon_1950_UTM_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2988','MOP78_UTM_1S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2991','NAD_1983_Oregon_Statewide_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2992','NAD_1983_Oregon_Statewide_Lambert_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2993','NAD_1983_HARN_Oregon_Statewide_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2994','NAD_1983_HARN_Oregon_Statewide_Lambert_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2995','IGN53_Mare_UTM_58S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2996','ST84_Ile_des_Pins_UTM_58S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2997','ST71_Belep_UTM_58S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2998','NEA74_Noumea_UTM_58S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2999','Grand_Comoros_UTM_38S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3000','Gunung_Segara_NEIEZ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3001','Batavia_NEIEZ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3002','Makassar_NEIEZ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3003','Monte_Mario_Italy_1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3004','Monte_Mario_Italy_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3005','NAD_1983_BC_Environment_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3006','SWEREF99_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3007','SWEREF99_12_00','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3008','SWEREF99_13_30','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3009','SWEREF99_15_00','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3010','SWEREF99_16_30','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3011','SWEREF99_18_00','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3012','SWEREF99_14_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3013','SWEREF99_15_45','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3014','SWEREF99_17_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3015','SWEREF99_18_45','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3016','SWEREF99_20_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3017','SWEREF99_21_45','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3018','SWEREF99_23_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3019','RT90_75_gon_V','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3020','RT90_5_gon_V','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3021','RT90_25_gon_V','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3022','RT90_0_gon','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3023','RT90_25_gon_O','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3024','RT90_5_gon_O','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3025','RT38_75_gon_V','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3026','RT38_5_gon_V','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3027','RT38_25_gon_V','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3028','RT38_0_gon','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3029','RT38_25_gon_O','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3030','RT38_5_gon_O','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3031','WGS_1984_Antarctic_Polar_Stereographic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3032','WGS_1984_Australian_Antarctic_Polar_Stereographic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3033','WGS_1984_Australian_Antarctic_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3034','ETRS_1989_LCC','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3035','ETRS_1989_LAEA','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3036','Moznet_UTM_Zone_36S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3037','Moznet_UTM_Zone_37S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3038','ETRS_1989_ETRS-TM26','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3039','ETRS_1989_ETRS-TM27','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3040','ETRS_1989_ETRS-TM28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3041','ETRS_1989_ETRS-TM29','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3042','ETRS_1989_ETRS-TM30','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3043','ETRS_1989_ETRS-TM31','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3044','ETRS_1989_ETRS-TM32','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3045','ETRS_1989_ETRS-TM33','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3046','ETRS_1989_ETRS-TM34','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3047','ETRS_1989_ETRS-TM35','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3048','ETRS_1989_ETRS-TM36','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3049','ETRS_1989_ETRS-TM37','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3050','ETRS_1989_ETRS-TM38','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3051','ETRS_1989_ETRS-TM39','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3054','Hjorsey_1955_UTM_Zone_26N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3055','Hjorsey_1955_UTM_Zone_27N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3056','Hjorsey_1955_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3057','ISN_1993_Lambert_1993','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3058','Helle_1954_Jan_Mayen_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3059','LKS_1992_Latvia_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3060','IGN72_Grande_Terre_UTM_58S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3061','Porto_Santo_1995_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3062','Azores_Oriental_1995_UTM_Zone_26N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3063','Azores_Central_1995_UTM_Zone_26N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3064','IGM_1995_UTM_Zone_32N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3065','IGM_1995_UTM_Zone_33N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3066','ED_1950_Jordan_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3067','EUREF_FIN_TM35FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3068','DHDN_Soldner_Berlin','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3069','NAD_1927_Wisconsin_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3070','NAD_1983_Wisconsin_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3071','NAD_1983_HARN_Wisconsin_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3072','NAD_1983_Maine_2000_East_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3463','NAD_1983_Maine_2000_Central_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3074','NAD_1983_Maine_2000_West_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3075','NAD_1983_HARN_Maine_2000_East_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3464','NAD_1983_HARN_Maine_2000_Central_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3077','NAD_1983_HARN_Maine_2000_West_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3078','NAD_1983_Michigan_GeoRef_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3079','NAD_1983_HARN_Michigan_GeoRef_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3080','NAD_1927_Texas_Statewide_Mapping_System','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3081','NAD_1983_Texas_Statewide_Mapping_System','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3082','NAD_1983_Texas_Centric_Mapping_System_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3083','NAD_1983_Texas_Centric_Mapping_System_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3084','NAD_1983_HARN_Texas_Centric_Mapping_System_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3085','NAD_1983_HARN_Texas_Centric_Mapping_System_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3086','NAD_1983_Florida_GDL_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3087','NAD_1983_HARN_Florida_GDL_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3088','NAD_1983_StatePlane_Kentucky_FIPS_1600','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3089','NAD_1983_StatePlane_Kentucky_FIPS_1600_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3090','NAD_1983_HARN_StatePlane_Kentucky_FIPS_1600','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3091','NAD_1983_HARN_StatePlane_Kentucky_FIPS_1600_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3092','Tokyo_UTM_Zone_51N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3093','Tokyo_UTM_Zone_52N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3094','Tokyo_UTM_Zone_53N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3095','Tokyo_UTM_Zone_54N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3096','Tokyo_UTM_Zone_55N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3097','JGD_2000_UTM_Zone_51N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3098','JGD_2000_UTM_Zone_52N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3099','JGD_2000_UTM_Zone_53N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3100','JGD_2000_UTM_Zone_54N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3101','JGD_2000_UTM_Zone_55N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3102','Samoa_1962_Samoa_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3106','Gulshan_303_Bangladesh_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3107','GDA_1994_South_Australia_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3108','ETRS_1989_Guernsey_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3109','ETRS_1989_Jersey_Transverse_Mercator','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3110','AGD_1966_VICGRID','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3111','GDA_1994_VICGRID94','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3112','GDA_1994_Geoscience_Australia_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3113','GDA_1994_BCSG02','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3114','MAGNA_Colombia_Oeste_Oeste','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3115','MAGNA_Colombia_Oeste','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3116','MAGNA_Colombia_Bogota','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3117','MAGNA_Colombia_Este','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3118','MAGNA_Colombia_Este_Este','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3119','Douala_1948_AEF_West','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3120','Pulkovo_1942_Adj_1958_Poland_Zone_I','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3121','PRS_1992_Philippines_Zone_I','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3122','PRS_1992_Philippines_Zone_II','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3123','PRS_1992_Philippines_Zone_III','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3124','PRS_1992_Philippines_Zone_IV','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3125','PRS_1992_Philippines_Zone_V','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3126','ETRS_1989_ETRS-GK19FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3127','ETRS_1989_ETRS-GK20FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3128','ETRS_1989_ETRS-GK21FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3129','ETRS_1989_ETRS-GK22FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3130','ETRS_1989_ETRS-GK23FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3131','ETRS_1989_ETRS-GK24FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3132','ETRS_1989_ETRS-GK25FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3133','ETRS_1989_ETRS-GK26FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3134','ETRS_1989_ETRS-GK27FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3135','ETRS_1989_ETRS-GK28FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3136','ETRS_1989_ETRS-GK29FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3137','ETRS_1989_ETRS-GK30FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3138','ETRS_1989_ETRS-GK31FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3141','Fiji_1956_UTM_Zone_60S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3142','Fiji_1956_UTM_Zone_1S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3146','Pulkovo_1942_3_Degree_GK_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3147','Pulkovo_1942_3_Degree_GK_CM_18E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3148','Indian_1960_UTM_Zone_48N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3149','Indian_1960_UTM_Zone_49N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3150','Pulkovo_1995_3_Degree_GK_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3151','Pulkovo_1995_3_Degree_GK_CM_18E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3153','NAD_1983_CSRS_BC_Environment_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3154','NAD_1983_CSRS_UTM_Zone_7N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3155','NAD_1983_CSRS_UTM_Zone_8N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3156','NAD_1983_CSRS_UTM_Zone_9N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3157','NAD_1983_CSRS_UTM_Zone_10N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3158','NAD_1983_CSRS_UTM_Zone_14N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3159','NAD_1983_CSRS_UTM_Zone_15N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3160','NAD_1983_CSRS_UTM_Zone_16N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3161','NAD_1983_Ontario_MNR_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3162','NAD_1983_CSRS_Ontario_MNR_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3163','RGNC_1991_93_Lambert_New_Caledonia','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3164','ST87_Ouvea_UTM_58S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3165','NEA74_Noumea_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3166','NEA74_Noumea_Lambert_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3167','Kertau_RSO_RSO_Malaya_ChSears1922trunc','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3168','Kertau_RSO_RSO_Malaya','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3169','RGNC_1991-93_UTM_Zone_57S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3170','RGNC_1991-93_UTM_Zone_58S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3171','RGNC_1991-93_UTM_Zone_59S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3172','IGN53_Mare_UTM_Zone_59S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3174','NAD_1983_Great_Lakes_Basin_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3175','NAD_1983_Great_Lakes_and_St_Lawrence_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3176','Indian_1960_TM_106NE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3177','LGD2006_Libya_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3178','Greenland_1996_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3179','Greenland_1996_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3180','Greenland_1996_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3181','Greenland_1996_UTM_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3182','Greenland_1996_UTM_Zone_22N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3183','Greenland_1996_UTM_Zone_23N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3184','Greenland_1996_UTM_Zone_24N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3185','Greenland_1996_UTM_Zone_25N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3186','Greenland_1996_UTM_Zone_26N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3187','Greenland_1996_UTM_Zone_27N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3188','Greenland_1996_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3189','Greenland_1996_UTM_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3190','LGD2006_Libya_TM_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3191','LGD2006_Libya_TM_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3192','LGD2006_Libya_TM_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3193','LGD2006_Libya_TM_Zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3194','LGD2006_Libya_TM_Zone_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3195','LGD2006_Libya_TM_Zone_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3196','LGD2006_Libya_TM_Zone_11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3197','LGD2006_Libya_TM_Zone_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3198','LGD2006_Libya_TM_Zone_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3199','LGD2006_UTM_Zone_32N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3200','FD_1958_Iraq','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3201','LGD2006_UTM_Zone_33N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3202','LGD2006_UTM_Zone_34N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3203','LGD2006_UTM_Zone_35N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3294','WGS_1984_USGS_Transantarctic_Mountains','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3295','Guam_1963_Yap_Islands','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3296','RGPF_UTM_Zone_5S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3297','RGPF_UTM_Zone_6S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3298','RGPF_UTM_Zone_7S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3299','RGPF_UTM_Zone_8S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3300','Estonian_Coordinate_System_of_1992','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3301','Estonia_1997_Estonia_National_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3302','IGN63_Hiva_Oa_UTM_Zone_7S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3303','Fatu_Iva_1972_UTM_Zone_7S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3304','Tahiti_1979_UTM_Zone_6S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3305','Moorea_1987_UTM_Zone_6S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3306','Maupiti_1983_UTM_Zone_5S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3307','Nakhl-e_Ghanem_UTM_Zone_39N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3308','GDA_1994_NSW_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3309','NAD_1927_California_Teale_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3310','NAD_1983_California_Teale_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3311','NAD_1983_HARN_California_Teale_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3312','CSG_1967_UTM_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3313','RGFG_1995_UTM_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3315','Katanga_1955_Katanga_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3316','Kasai_1953_Congo_TM_Zone_22','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3317','Kasai_1953_Congo_TM_Zone_24','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3318','IGC_1962_Congo_TM_Zone_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3319','IGC_1962_Congo_TM_Zone_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3320','IGC_1962_Congo_TM_Zone_16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3321','IGC_1962_Congo_TM_Zone_18','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3322','IGC_1962_Congo_TM_Zone_20','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3323','IGC_1962_Congo_TM_Zone_22','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3324','IGC_1962_Congo_TM_Zone_24','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3325','IGC_1962_Congo_TM_Zone_26','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3326','IGC_1962_Congo_TM_Zone_28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3327','IGC_1962_Congo_TM_Zone_30','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3328','Pulkovo_1942_Adj_1958_GUGiK-80','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3329','Pulkovo_1942_Adj_1958_3_Degree_GK_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3330','Pulkovo_1942_Adj_1958_3_Degree_GK_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3331','Pulkovo_1942_Adj_1958_3_Degree_GK_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3332','Pulkovo_1942_Adj_1958_3_Degree_GK_Zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3333','Pulkovo_1942_Adj_1958_GK_Zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3334','Pulkovo_1942_Adj_1958_GK_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3335','Pulkovo_1942_Adj_1958_GK_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3336','Kerguelen_Island_1949_UTM_42S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3337','Le_Pouce_1934_Mauritius_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3338','NAD_1983_Alaska_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3339','IGCB_1955_Congo_TM_Zone_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3340','IGCB_1955_Congo_TM_Zone_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3341','IGCB_1955_Congo_TM_Zone_16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3342','IGCB_1955_UTM_Zone_33S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3343','Mauritania_1999_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3344','Mauritania_1999_UTM_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3345','Mauritania_1999_UTM_Zone_30N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3346','LKS_1994_Lithuania_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3347','NAD_1983_Statistics_Canada_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3348','NAD_1983_CSRS_Statistics_Canada_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3350','Pulkovo_1942_CS63_Zone_C0','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3351','Pulkovo_1942_CS63_Zone_C1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3352','Pulkovo_1942_CS63_Zone_C2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3353','Mhast_Onshore_UTM_Zone_32S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3354','Mhast_Offshore_UTM_Zone_32S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3355','Egypt_Gulf_of_Suez_S-650_TL_Red_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3356','Grand_Cayman_1959_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3357','Little_Cayman_1961_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3358','NAD_1983_HARN_StatePlane_North_Carolina_FIPS_3200','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3404','NAD_1983_HARN_StatePlane_North_Carolina_FIPS_3200_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3360','NAD_1983_HARN_StatePlane_South_Carolina_FIPS_3900','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3361','NAD_1983_HARN_StatePlane_South_Carolina_FIPS_3900_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3362','NAD_1983_HARN_StatePlane_Pennsylvania_North_FIPS_3701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3363','NAD_1983_HARN_StatePlane_Pennsylvania_North_FIPS_3701_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3364','NAD_1983_HARN_StatePlane_Pennsylvania_South_FIPS_3702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3365','NAD_1983_HARN_StatePlane_Pennsylvania_South_FIPS_3702_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3407','Hong_Kong_1963_Grid_System','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3367','IGN_Astro_1960_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3368','IGN_Astro_1960_UTM_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3369','IGN_Astro_1960_UTM_Zone_30N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3370','NAD_1927_UTM_Zone_59N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3371','NAD_1927_UTM_Zone_60N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3372','NAD_1983_UTM_Zone_59N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3373','NAD_1983_UTM_Zone_60N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3374','FD_1954_UTM_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3375','GDM_2000_MRSO_Peninsular_Malaysia','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3376','GDM_2000_BRSO_East_Malaysia','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3377','GDM_2000_State_Cassini_Johor','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3378','GDM_2000_State_Cassini_Negeri_Sembilan_and_Melaka','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3379','GDM_2000_State_Cassini_Pahang','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3380','GDM_2000_State_Cassini_Selangor','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3381','GDM_2000_State_Cassini_Terengganu','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3382','GDM_2000_State_Cassini_Pulau_Pinang_and_Seberang_Perai','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3383','GDM_2000_State_Cassini_Perlis','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3384','GDM_2000_State_Cassini_Perak','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3385','GDM_2000_State_Cassini_Kelantan','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3386','KKJ_Finland_Zone_0','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3387','KKJ_Finland_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3388','Pulkovo_1942_Caspian_Sea_Mercator','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3389','Pulkovo_1942_3_Degree_GK_Zone_60','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3390','Pulkovo_1995_3_Degree_GK_Zone_60','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3391','Karbala_1979_Polservice_UTM_Zone_37N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3392','Karbala_1979_Polservice_UTM_Zone_38N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3393','Karbala_1979_Polservice_UTM_Zone_39N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3394','Nahrwan_1934_Iraq_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3395','WGS_1984_World_Mercator','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3396','PD/83_GK_Zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3397','PD/83_GK_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3398','RD/83_GK_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3399','RD/83_GK_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3400','NAD_1983_10TM_AEP_Forest','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3401','NAD_1983_10TM_AEP_Resource','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3402','NAD_1983_CSRS_10TM_AEP_Forest','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3403','NAD_1983_CSRS_10TM_AEP_Resource','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3404','NAD_1983_HARN_StatePlane_North_Carolina_FIPS_3200_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3405','VN_2000_UTM_Zone_48N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3406','VN_2000_UTM_Zone_49N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3407','Hong_Kong_1963_Grid_System','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3408','NSIDC_EASE_Grid_North','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3409','NSIDC_EASE_Grid_South','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3410','NSIDC_EASE_Grid_Global','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3411','NSIDC_Sea_Ice_Polar_Stereographic_North','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3412','NSIDC_Sea_Ice_Polar_Stereographic_South','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3413','WGS_1984_NSIDC_Sea_Ice_Polar_Stereographic_North','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3414','SVY21_Singapore_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3415','WGS_1972_BE_South_China_Sea_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3416','ETRS_1989_Austria_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3417','NAD_1983_StatePlane_Iowa_North_FIPS_1401_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3418','NAD_1983_StatePlane_Iowa_South_FIPS_1402_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3419','NAD_1983_StatePlane_Kansas_North_FIPS_1501_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3420','NAD_1983_StatePlane_Kansas_South_FIPS_1502_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3421','NAD_1983_StatePlane_Nevada_East_FIPS_2701_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3422','NAD_1983_StatePlane_Nevada_Central_FIPS_2702_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3423','NAD_1983_StatePlane_Nevada_West_FIPS_2703_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3424','NAD_1983_StatePlane_New_Jersey_FIPS_2900_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3425','NAD_1983_HARN_StatePlane_Iowa_North_FIPS_1401_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3426','NAD_1983_HARN_StatePlane_Iowa_South_FIPS_1402_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3427','NAD_1983_HARN_StatePlane_Kansas_North_FIPS_1501_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3428','NAD_1983_HARN_StatePlane_Kansas_South_FIPS_1502_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3429','NAD_1983_HARN_StatePlane_Nevada_East_FIPS_2701_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3430','NAD_1983_HARN_StatePlane_Nevada_Central_FIPS_2702_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3431','NAD_1983_HARN_StatePlane_Nevada_West_FIPS_2703_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3432','NAD_1983_HARN_StatePlane_New_Jersey_FIPS_2900_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3433','NAD_1983_StatePlane_Arkansas_North_FIPS_0301_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3434','NAD_1983_StatePlane_Arkansas_South_FIPS_0302_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3435','NAD_1983_StatePlane_Illinois_East_FIPS_1201_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3436','NAD_1983_StatePlane_Illinois_West_FIPS_1202_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3437','NAD_1983_StatePlane_New_Hampshire_FIPS_2800_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3438','NAD_1983_StatePlane_Rhode_Island_FIPS_3800_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3439','PDO_1993_UTM_Zone_39N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3440','PDO_1993_UTM_Zone_40N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3441','NAD_1983_HARN_StatePlane_Arkansas_North_FIPS_0301_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3442','NAD_1983_HARN_StatePlane_Arkansas_South_FIPS_0302_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3443','NAD_1983_HARN_StatePlane_Illinois_East_FIPS_1201_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3444','NAD_1983_HARN_StatePlane_Illinois_West_FIPS_1202_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3445','NAD_1983_HARN_StatePlane_New_Hampshire_FIPS_2800_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3446','NAD_1983_HARN_StatePlane_Rhode_Island_FIPS_3800_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3447','Belge_Lambert_2005','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3448','JAD_2001_Jamaica_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3449','JAD_2001_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3450','JAD_2001_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3451','NAD_1983_StatePlane_Louisiana_North_FIPS_1701_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3452','NAD_1983_StatePlane_Louisiana_South_FIPS_1702_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3453','NAD_1983_StatePlane_Louisiana_Offshore_FIPS_1703_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4457','NAD_1983_StatePlane_South_Dakota_North_FIPS_4001_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3455','NAD_1983_StatePlane_South_Dakota_South_FIPS_4002_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3456','NAD_1983_HARN_StatePlane_Louisiana_North_FIPS_1701_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3457','NAD_1983_HARN_StatePlane_Louisiana_South_FIPS_1702_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3458','NAD_1983_HARN_StatePlane_South_Dakota_North_FIPS_4001_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3459','NAD_1983_HARN_StatePlane_South_Dakota_South_FIPS_4002_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3460','Fiji_1986_Fiji_Map_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3461','Dabola_1981_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3462','Dabola_1981_UTM_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3463','NAD_1983_Maine_2000_Central_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3464','NAD_1983_HARN_Maine_2000_Central_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3465','NAD_1983_NSRS2007_StatePlane_Alabama_East_FIPS_0101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3466','NAD_1983_NSRS2007_StatePlane_Alabama_West_FIPS_0102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3467','NAD_1983_NSRS2007_Alaska_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3468','NAD_1983_NSRS2007_StatePlane_Alaska_1_FIPS_5001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3469','NAD_1983_NSRS2007_StatePlane_Alaska_2_FIPS_5002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3470','NAD_1983_NSRS2007_StatePlane_Alaska_3_FIPS_5003','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3471','NAD_1983_NSRS2007_StatePlane_Alaska_4_FIPS_5004','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3472','NAD_1983_NSRS2007_StatePlane_Alaska_5_FIPS_5005','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3473','NAD_1983_NSRS2007_StatePlane_Alaska_6_FIPS_5006','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3474','NAD_1983_NSRS2007_StatePlane_Alaska_7_FIPS_5007','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3475','NAD_1983_NSRS2007_StatePlane_Alaska_8_FIPS_5008','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3476','NAD_1983_NSRS2007_StatePlane_Alaska_9_FIPS_5009','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3477','NAD_1983_NSRS2007_StatePlane_Alaska_10_FIPS_5010','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3478','NAD_1983_NSRS2007_StatePlane_Arizona_Central_FIPS_0202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3479','NAD_1983_NSRS2007_StatePlane_Arizona_Central_FIPS_0202_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3480','NAD_1983_NSRS2007_StatePlane_Arizona_East_FIPS_0201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3481','NAD_1983_NSRS2007_StatePlane_Arizona_East_FIPS_0201_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3482','NAD_1983_NSRS2007_StatePlane_Arizona_West_FIPS_0203','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3483','NAD_1983_NSRS2007_StatePlane_Arizona_West_FIPS_0203_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3484','NAD_1983_NSRS2007_StatePlane_Arkansas_North_FIPS_0301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3485','NAD_1983_NSRS2007_StatePlane_Arkansas_North_FIPS_0301_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3486','NAD_1983_NSRS2007_StatePlane_Arkansas_South_FIPS_0302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3487','NAD_1983_NSRS2007_StatePlane_Arkansas_South_FIPS_0302_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3488','NAD_1983_NSRS2007_California_Teale_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3489','NAD_1983_NSRS2007_StatePlane_California_I_FIPS_0401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3490','NAD_1983_NSRS2007_StatePlane_California_I_FIPS_0401_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3491','NAD_1983_NSRS2007_StatePlane_California_II_FIPS_0402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3492','NAD_1983_NSRS2007_StatePlane_California_II_FIPS_0402_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3493','NAD_1983_NSRS2007_StatePlane_California_III_FIPS_0403','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3494','NAD_1983_NSRS2007_StatePlane_California_III_FIPS_0403_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3495','NAD_1983_NSRS2007_StatePlane_California_IV_FIPS_0404','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3496','NAD_1983_NSRS2007_StatePlane_California_IV_FIPS_0404_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3497','NAD_1983_NSRS2007_StatePlane_California_V_FIPS_0405','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3498','NAD_1983_NSRS2007_StatePlane_California_V_FIPS_0405_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3499','NAD_1983_NSRS2007_StatePlane_California_VI_FIPS_0406','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3500','NAD_1983_NSRS2007_StatePlane_California_VI_FIPS_0406_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3501','NAD_1983_NSRS2007_StatePlane_Colorado_Central_FIPS_0502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3502','NAD_1983_NSRS2007_StatePlane_Colorado_Central_FIPS_0502_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3503','NAD_1983_NSRS2007_StatePlane_Colorado_North_FIPS_0501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3504','NAD_1983_NSRS2007_StatePlane_Colorado_North_FIPS_0501_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3505','NAD_1983_NSRS2007_StatePlane_Colorado_South_FIPS_0503','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3506','NAD_1983_NSRS2007_StatePlane_Colorado_South_FIPS_0503_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3507','NAD_1983_NSRS2007_StatePlane_Connecticut_FIPS_0600','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3508','NAD_1983_NSRS2007_StatePlane_Connecticut_FIPS_0600_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3509','NAD_1983_NSRS2007_StatePlane_Delaware_FIPS_0700','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3510','NAD_1983_NSRS2007_StatePlane_Delaware_FIPS_0700_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3511','NAD_1983_NSRS2007_StatePlane_Florida_East_FIPS_0901','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3512','NAD_1983_NSRS2007_StatePlane_Florida_East_FIPS_0901_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3513','NAD_1983_NSRS2007_Florida_GDL_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3514','NAD_1983_NSRS2007_StatePlane_Florida_North_FIPS_0903','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3515','NAD_1983_NSRS2007_StatePlane_Florida_North_FIPS_0903_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3516','NAD_1983_NSRS2007_StatePlane_Florida_West_FIPS_0902','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3517','NAD_1983_NSRS2007_StatePlane_Florida_West_FIPS_0902_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3518','NAD_1983_NSRS2007_StatePlane_Georgia_East_FIPS_1001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3519','NAD_1983_NSRS2007_StatePlane_Georgia_East_FIPS_1001_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3520','NAD_1983_NSRS2007_StatePlane_Georgia_West_FIPS_1002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3521','NAD_1983_NSRS2007_StatePlane_Georgia_West_FIPS_1002_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3522','NAD_1983_NSRS2007_StatePlane_Idaho_Central_FIPS_1102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3523','NAD_1983_NSRS2007_StatePlane_Idaho_Central_FIPS_1102_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3524','NAD_1983_NSRS2007_StatePlane_Idaho_East_FIPS_1101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3525','NAD_1983_NSRS2007_StatePlane_Idaho_East_FIPS_1101_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3526','NAD_1983_NSRS2007_StatePlane_Idaho_West_FIPS_1103','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3527','NAD_1983_NSRS2007_StatePlane_Idaho_West_FIPS_1103_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3528','NAD_1983_NSRS2007_StatePlane_Illinois_East_FIPS_1201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3529','NAD_1983_NSRS2007_StatePlane_Illinois_East_FIPS_1201_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3530','NAD_1983_NSRS2007_StatePlane_Illinois_West_FIPS_1202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3531','NAD_1983_NSRS2007_StatePlane_Illinois_West_FIPS_1202_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3532','NAD_1983_NSRS2007_StatePlane_Indiana_East_FIPS_1301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3533','NAD_1983_NSRS2007_StatePlane_Indiana_East_FIPS_1301_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3534','NAD_1983_NSRS2007_StatePlane_Indiana_West_FIPS_1302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3535','NAD_1983_NSRS2007_StatePlane_Indiana_West_FIPS_1302_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3536','NAD_1983_NSRS2007_StatePlane_Iowa_North_FIPS_1401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3537','NAD_1983_NSRS2007_StatePlane_Iowa_North_FIPS_1401_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3538','NAD_1983_NSRS2007_StatePlane_Iowa_South_FIPS_1402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3539','NAD_1983_NSRS2007_StatePlane_Iowa_South_FIPS_1402_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3540','NAD_1983_NSRS2007_StatePlane_Kansas_North_FIPS_1501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3541','NAD_1983_NSRS2007_StatePlane_Kansas_North_FIPS_1501_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3542','NAD_1983_NSRS2007_StatePlane_Kansas_South_FIPS_1502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3543','NAD_1983_NSRS2007_StatePlane_Kansas_South_FIPS_1502_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3544','NAD_1983_NSRS2007_StatePlane_Kentucky_North_FIPS_1601','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3545','NAD_1983_NSRS2007_StatePlane_Kentucky_North_FIPS_1601_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3546','NAD_1983_NSRS2007_StatePlane_Kentucky_FIPS_1600','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3547','NAD_1983_NSRS2007_StatePlane_Kentucky_FIPS_1600_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3548','NAD_1983_NSRS2007_StatePlane_Kentucky_South_FIPS_1602','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3549','NAD_1983_NSRS2007_StatePlane_Kentucky_South_FIPS_1602_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3550','NAD_1983_NSRS2007_StatePlane_Louisiana_North_FIPS_1701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3551','NAD_1983_NSRS2007_StatePlane_Louisiana_North_FIPS_1701_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3552','NAD_1983_NSRS2007_StatePlane_Louisiana_South_FIPS_1702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3553','NAD_1983_NSRS2007_StatePlane_Louisiana_South_FIPS_1702_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3554','NAD_1983_NSRS2007_Maine_2000_Central_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3555','NAD_1983_NSRS2007_Maine_2000_East_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3556','NAD_1983_NSRS2007_Maine_2000_West_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3557','NAD_1983_NSRS2007_StatePlane_Maine_East_FIPS_1801','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3558','NAD_1983_NSRS2007_StatePlane_Maine_West_FIPS_1802','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3559','NAD_1983_NSRS2007_StatePlane_Maryland_FIPS_1900','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3560','NAD_1983_StatePlane_Utah_North_FIPS_4301_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3561','Old_Hawaiian_StatePlane_Hawaii_1_FIPS_5101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3562','Old_Hawaiian_StatePlane_Hawaii_2_FIPS_5102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3563','Old_Hawaiian_StatePlane_Hawaii_3_FIPS_5103','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3564','Old_Hawaiian_StatePlane_Hawaii_4_FIPS_5104','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3565','Old_Hawaiian_StatePlane_Hawaii_5_FIPS_5105','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3566','NAD_1983_StatePlane_Utah_Central_FIPS_4302_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3567','NAD_1983_StatePlane_Utah_South_FIPS_4303_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3568','NAD_1983_HARN_StatePlane_Utah_North_FIPS_4301_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3569','NAD_1983_HARN_StatePlane_Utah_Central_FIPS_4302_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3570','NAD_1983_HARN_StatePlane_Utah_South_FIPS_4303_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3571','WGS_1984_North_Pole_LAEA_Bering_Sea','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3572','WGS_1984_North_Pole_LAEA_Alaska','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3573','WGS_1984_North_Pole_LAEA_Canada','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3574','WGS_1984_North_Pole_LAEA_Atlantic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3575','WGS_1984_North_Pole_LAEA_Europe','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3576','WGS_1984_North_Pole_LAEA_Russia','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3577','GDA_1994_Australia_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3578','NAD_1983_Yukon_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3579','NAD_1983_CSRS_Yukon_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3580','NAD_1983_Northwest_Territories_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3581','NAD_1983_CSRS_Northwest_Territories_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3582','NAD_1983_NSRS2007_StatePlane_Maryland_FIPS_1900_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3583','NAD_1983_NSRS2007_StatePlane_Massachusetts_Island_FIPS_2002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3584','NAD_1983_NSRS2007_StatePlane_Massachusetts_Isl_FIPS_2002_FtUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3585','NAD_1983_NSRS2007_StatePlane_Massachusetts_Mainland_FIPS_2001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3586','NAD_1983_NSRS2007_StatePlane_Massachusetts_Mnld_FIPS_2001_FtUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3587','NAD_1983_NSRS2007_StatePlane_Michigan_Central_FIPS_2112','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3588','NAD_1983_NSRS2007_StatePlane_Michigan_Central_FIPS_2112_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3589','NAD_1983_NSRS2007_StatePlane_Michigan_North_FIPS_2111','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3590','NAD_1983_NSRS2007_StatePlane_Michigan_North_FIPS_2111_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3591','NAD_1983_NSRS2007_Michigan_GeoRef_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3592','NAD_1983_NSRS2007_StatePlane_Michigan_South_FIPS_2113','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3593','NAD_1983_NSRS2007_StatePlane_Michigan_South_FIPS_2113_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3594','NAD_1983_NSRS2007_StatePlane_Minnesota_Central_FIPS_2202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3595','NAD_1983_NSRS2007_StatePlane_Minnesota_North_FIPS_2201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3596','NAD_1983_NSRS2007_StatePlane_Minnesota_South_FIPS_2203','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3597','NAD_1983_NSRS2007_StatePlane_Mississippi_East_FIPS_2301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3598','NAD_1983_NSRS2007_StatePlane_Mississippi_East_FIPS_2301_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3599','NAD_1983_NSRS2007_StatePlane_Mississippi_West_FIPS_2302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3600','NAD_1983_NSRS2007_StatePlane_Mississippi_West_FIPS_2302_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3601','NAD_1983_NSRS2007_StatePlane_Missouri_Central_FIPS_2402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3602','NAD_1983_NSRS2007_StatePlane_Missouri_East_FIPS_2401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3603','NAD_1983_NSRS2007_StatePlane_Missouri_West_FIPS_2403','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3604','NAD_1983_NSRS2007_StatePlane_Montana_FIPS_2500','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3605','NAD_1983_NSRS2007_StatePlane_Montana_FIPS_2500_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3606','NAD_1983_NSRS2007_StatePlane_Nebraska_FIPS_2600','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3607','NAD_1983_NSRS2007_StatePlane_Nevada_Central_FIPS_2702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3608','NAD_1983_NSRS2007_StatePlane_Nevada_Central_FIPS_2702_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3609','NAD_1983_NSRS2007_StatePlane_Nevada_East_FIPS_2701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3610','NAD_1983_NSRS2007_StatePlane_Nevada_East_FIPS_2701_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3611','NAD_1983_NSRS2007_StatePlane_Nevada_West_FIPS_2703','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3612','NAD_1983_NSRS2007_StatePlane_Nevada_West_FIPS_2703_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3613','NAD_1983_NSRS2007_StatePlane_New_Hampshire_FIPS_2800','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3614','NAD_1983_NSRS2007_StatePlane_New_Hampshire_FIPS_2800_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3615','NAD_1983_NSRS2007_StatePlane_New_Jersey_FIPS_2900','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3616','NAD_1983_NSRS2007_StatePlane_New_Jersey_FIPS_2900_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3617','NAD_1983_NSRS2007_StatePlane_New_Mexico_Central_FIPS_3002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3618','NAD_1983_NSRS2007_StatePlane_New_Mexico_Central_FIPS_3002_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3619','NAD_1983_NSRS2007_StatePlane_New_Mexico_East_FIPS_3001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3620','NAD_1983_NSRS2007_StatePlane_New_Mexico_East_FIPS_3001_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3621','NAD_1983_NSRS2007_StatePlane_New_Mexico_West_FIPS_3003','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3622','NAD_1983_NSRS2007_StatePlane_New_Mexico_West_FIPS_3003_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3623','NAD_1983_NSRS2007_StatePlane_New_York_Central_FIPS_3102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3624','NAD_1983_NSRS2007_StatePlane_New_York_Central_FIPS_3102_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3625','NAD_1983_NSRS2007_StatePlane_New_York_East_FIPS_3101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3626','NAD_1983_NSRS2007_StatePlane_New_York_East_FIPS_3101_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3627','NAD_1983_NSRS2007_StatePlane_New_York_Long_Island_FIPS_3104','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3628','NAD_1983_NSRS2007_StatePlane_New_York_Long_Isl_FIPS_3104_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3629','NAD_1983_NSRS2007_StatePlane_New_York_West_FIPS_3103','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3630','NAD_1983_NSRS2007_StatePlane_New_York_West_FIPS_3103_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3631','NAD_1983_NSRS2007_StatePlane_North_Carolina_FIPS_3200','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3632','NAD_1983_NSRS2007_StatePlane_North_Carolina_FIPS_3200_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3633','NAD_1983_NSRS2007_StatePlane_North_Dakota_North_FIPS_3301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3634','NAD_1983_NSRS2007_StatePlane_North_Dakota_North_FIPS_3301_FtI','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3635','NAD_1983_NSRS2007_StatePlane_North_Dakota_South_FIPS_3302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3636','NAD_1983_NSRS2007_StatePlane_North_Dakota_South_FIPS_3302_FtI','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3637','NAD_1983_NSRS2007_StatePlane_Ohio_North_FIPS_3401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3638','NAD_1983_NSRS2007_StatePlane_Ohio_South_FIPS_3402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3639','NAD_1983_NSRS2007_StatePlane_Oklahoma_North_FIPS_3501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3640','NAD_1983_NSRS2007_StatePlane_Oklahoma_North_FIPS_3501_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3641','NAD_1983_NSRS2007_StatePlane_Oklahoma_South_FIPS_3502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3642','NAD_1983_NSRS2007_StatePlane_Oklahoma_South_FIPS_3502_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3643','NAD_1983_NSRS2007_Oregon_Statewide_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3644','NAD_1983_NSRS2007_Oregon_Statewide_Lambert_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3645','NAD_1983_NSRS2007_StatePlane_Oregon_North_FIPS_3601','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3646','NAD_1983_NSRS2007_StatePlane_Oregon_North_FIPS_3601_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3647','NAD_1983_NSRS2007_StatePlane_Oregon_South_FIPS_3602','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3648','NAD_1983_NSRS2007_StatePlane_Oregon_South_FIPS_3602_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3649','NAD_1983_NSRS2007_StatePlane_Pennsylvania_North_FIPS_3701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3650','NAD_1983_NSRS2007_StatePlane_Pennsylvania_North_FIPS_3701_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3651','NAD_1983_NSRS2007_StatePlane_Pennsylvania_South_FIPS_3702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3652','NAD_1983_NSRS2007_StatePlane_Pennsylvania_South_FIPS_3702_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3653','NAD_1983_NSRS2007_StatePlane_Rhode_Island_FIPS_3800','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3654','NAD_1983_NSRS2007_StatePlane_Rhode_Island_FIPS_3800_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3655','NAD_1983_NSRS2007_StatePlane_South_Carolina_FIPS_3900','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3656','NAD_1983_NSRS2007_StatePlane_South_Carolina_FIPS_3900_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3657','NAD_1983_NSRS2007_StatePlane_South_Dakota_North_FIPS_4001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3658','NAD_1983_NSRS2007_StatePlane_South_Dakota_North_FIPS_4001_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3659','NAD_1983_NSRS2007_StatePlane_South_Dakota_South_FIPS_4002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3660','NAD_1983_NSRS2007_StatePlane_South_Dakota_South_FIPS_4002_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3661','NAD_1983_NSRS2007_StatePlane_Tennessee_FIPS_4100','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3662','NAD_1983_NSRS2007_StatePlane_Tennessee_FIPS_4100_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3663','NAD_1983_NSRS2007_StatePlane_Texas_Central_FIPS_4203','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3664','NAD_1983_NSRS2007_StatePlane_Texas_Central_FIPS_4203_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3665','NAD_1983_NSRS2007_Texas_Centric_Mapping_System_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3666','NAD_1983_NSRS2007_Texas_Centric_Mapping_System_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3667','NAD_1983_NSRS2007_StatePlane_Texas_North_FIPS_4201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3668','NAD_1983_NSRS2007_StatePlane_Texas_North_FIPS_4201_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3669','NAD_1983_NSRS2007_StatePlane_Texas_North_Central_FIPS_4202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3670','NAD_1983_NSRS2007_StatePlane_Texas_North_Central_FIPS_4202_FtUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3671','NAD_1983_NSRS2007_StatePlane_Texas_South_FIPS_4205','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3672','NAD_1983_NSRS2007_StatePlane_Texas_South_FIPS_4205_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3673','NAD_1983_NSRS2007_StatePlane_Texas_South_Central_FIPS_4204','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3674','NAD_1983_NSRS2007_StatePlane_Texas_South_Central_FIPS_4204_FtUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3675','NAD_1983_NSRS2007_StatePlane_Utah_Central_FIPS_4302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3676','NAD_1983_NSRS2007_StatePlane_Utah_Central_FIPS_4302_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3677','NAD_1983_NSRS2007_StatePlane_Utah_Central_FIPS_4302_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3678','NAD_1983_NSRS2007_StatePlane_Utah_North_FIPS_4301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3679','NAD_1983_NSRS2007_StatePlane_Utah_North_FIPS_4301_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3680','NAD_1983_NSRS2007_StatePlane_Utah_North_FIPS_4301_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3681','NAD_1983_NSRS2007_StatePlane_Utah_South_FIPS_4303','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3682','NAD_1983_NSRS2007_StatePlane_Utah_South_FIPS_4303_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3683','NAD_1983_NSRS2007_StatePlane_Utah_South_FIPS_4303_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3684','NAD_1983_NSRS2007_StatePlane_Vermont_FIPS_4400','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3685','NAD_1983_NSRS2007_StatePlane_Virginia_North_FIPS_4501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3686','NAD_1983_NSRS2007_StatePlane_Virginia_North_FIPS_4501_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3687','NAD_1983_NSRS2007_StatePlane_Virginia_South_FIPS_4502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3688','NAD_1983_NSRS2007_StatePlane_Virginia_South_FIPS_4502_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3689','NAD_1983_NSRS2007_StatePlane_Washington_North_FIPS_4601','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3690','NAD_1983_NSRS2007_StatePlane_Washington_North_FIPS_4601_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3691','NAD_1983_NSRS2007_StatePlane_Washington_South_FIPS_4602','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3692','NAD_1983_NSRS2007_StatePlane_Washington_South_FIPS_4602_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3693','NAD_1983_NSRS2007_StatePlane_West_Virginia_North_FIPS_4701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3694','NAD_1983_NSRS2007_StatePlane_West_Virginia_South_FIPS_4702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3695','NAD_1983_NSRS2007_StatePlane_Wisconsin_Central_FIPS_4802','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3696','NAD_1983_NSRS2007_StatePlane_Wisconsin_Central_FIPS_4802_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3697','NAD_1983_NSRS2007_StatePlane_Wisconsin_North_FIPS_4801','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3698','NAD_1983_NSRS2007_StatePlane_Wisconsin_North_FIPS_4801_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3699','NAD_1983_NSRS2007_StatePlane_Wisconsin_South_FIPS_4803','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3700','NAD_1983_NSRS2007_StatePlane_Wisconsin_South_FIPS_4803_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3701','NAD_1983_NSRS2007_Wisconsin_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3702','NAD_1983_NSRS2007_StatePlane_Wyoming_East_FIPS_4901','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3703','NAD_1983_NSRS2007_StatePlane_Wyoming_East_Central_FIPS_4902','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3704','NAD_1983_NSRS2007_StatePlane_Wyoming_West_Central_FIPS_4903','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3705','NAD_1983_NSRS2007_StatePlane_Wyoming_West_FIPS_4904','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3706','NAD_1983_NSRS2007_UTM_Zone_59N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3707','NAD_1983_NSRS2007_UTM_Zone_60N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3708','NAD_1983_NSRS2007_UTM_Zone_1N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3709','NAD_1983_NSRS2007_UTM_Zone_2N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3710','NAD_1983_NSRS2007_UTM_Zone_3N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3711','NAD_1983_NSRS2007_UTM_Zone_4N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3712','NAD_1983_NSRS2007_UTM_Zone_5N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3713','NAD_1983_NSRS2007_UTM_Zone_6N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3714','NAD_1983_NSRS2007_UTM_Zone_7N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3715','NAD_1983_NSRS2007_UTM_Zone_8N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3716','NAD_1983_NSRS2007_UTM_Zone_9N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3717','NAD_1983_NSRS2007_UTM_Zone_10N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3718','NAD_1983_NSRS2007_UTM_Zone_11N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3719','NAD_1983_NSRS2007_UTM_Zone_12N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3720','NAD_1983_NSRS2007_UTM_Zone_13N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3721','NAD_1983_NSRS2007_UTM_Zone_14N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3722','NAD_1983_NSRS2007_UTM_Zone_15N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3723','NAD_1983_NSRS2007_UTM_Zone_16N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3724','NAD_1983_NSRS2007_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3725','NAD_1983_NSRS2007_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3726','NAD_1983_NSRS2007_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3727','Reunion_1947_TM_Reunion','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3728','NAD_1983_NSRS2007_StatePlane_Ohio_North_FIPS_3401_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3729','NAD_1983_NSRS2007_StatePlane_Ohio_South_FIPS_3402_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3730','NAD_1983_NSRS2007_StatePlane_Wyoming_East_FIPS_4901_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3731','NAD_1983_NSRS2007_StatePlane_Wyoming_E_Central_FIPS_4902_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3732','NAD_1983_NSRS2007_StatePlane_Wyoming_W_Central_FIPS_4903_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3733','NAD_1983_NSRS2007_StatePlane_Wyoming_West_FIPS_4904_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3734','NAD_1983_StatePlane_Ohio_North_FIPS_3401_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3735','NAD_1983_StatePlane_Ohio_South_FIPS_3402_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3736','NAD_1983_StatePlane_Wyoming_East_FIPS_4901_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3737','NAD_1983_StatePlane_Wyoming_East_Central_FIPS_4902_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3738','NAD_1983_StatePlane_Wyoming_West_Central_FIPS_4903_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3739','NAD_1983_StatePlane_Wyoming_West_FIPS_4904_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3740','NAD_1983_HARN_UTM_Zone_10N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3741','NAD_1983_HARN_UTM_Zone_11N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3742','NAD_1983_HARN_UTM_Zone_12N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3743','NAD_1983_HARN_UTM_Zone_13N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3744','NAD_1983_HARN_UTM_Zone_14N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3745','NAD_1983_HARN_UTM_Zone_15N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3746','NAD_1983_HARN_UTM_Zone_16N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3747','NAD_1983_HARN_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3748','NAD_1983_HARN_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3749','NAD_1983_HARN_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3750','NAD_1983_HARN_UTM_Zone_4N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3751','NAD_1983_HARN_UTM_Zone_5N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3753','NAD_1983_HARN_StatePlane_Ohio_North_FIPS_3401_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3754','NAD_1983_HARN_StatePlane_Ohio_South_FIPS_3402_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3755','NAD_1983_HARN_StatePlane_Wyoming_East_FIPS_4901_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3756','NAD_1983_HARN_StatePlane_Wyoming_East_Central_FIPS_4902_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3757','NAD_1983_HARN_StatePlane_Wyoming_West_Central_FIPS_4903_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3758','NAD_1983_HARN_StatePlane_Wyoming_West_FIPS_4904_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3759','NAD_1983_StatePlane_Hawaii_3_FIPS_5103_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3760','NAD_1983_HARN_StatePlane_Hawaii_3_FIPS_5103_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3761','NAD_1983_CSRS_UTM_Zone_22N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3762','WGS_1984_South_Georgia_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3763','ETRS_1989_Portugal_TM06','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3764','NZGD_2000_Chatham_Island_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3765','HTRS96_Croatia_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3766','HTRS96_Croatia_LCC','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3767','HTRS96_UTM_Zone_33N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3768','HTRS96_UTM_Zone_34N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3769','Bermuda_1957_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3770','Bermuda_2000_National_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3771','NAD_1927_3TM_111','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3772','NAD_1927_3TM_114','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3773','NAD_1927_3TM_117','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3775','NAD_1983_3TM_111','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3776','NAD_1983_3TM_114','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3777','NAD_1983_3TM_117','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3779','NAD_1983_CSRS_3TM_111','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3780','NAD_1983_CSRS_3TM_114','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3781','NAD_1983_CSRS_3TM_117','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3783','Pitcairn_2006_Pitcairn_TM_2006','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3784','Pitcairn_1967_UTM_Zone_9S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3785','WGS_1984_Web_Mercator','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3788','NZGD_2000_Auckland_Islands_TM_2000','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3789','NZGD_2000_Campbell_Island_TM_2000','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3790','NZGD_2000_Antipodes_Islands_TM_2000','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3791','NZGD_2000_Raoul_Island_TM_2000','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3793','NZGD_2000_Chatham_Islands_TM_2000','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3794','Slovenia_1996_Slovene_National_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3797','NAD_1927_MTQ_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3798','NAD_1983_MTQ_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3799','NAD_1983_CSRS_MTQ_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3800','NAD_1927_3TM_120','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3801','NAD_1983_3TM_120','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3802','NAD_1983_CSRS_3TM_120','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3812','Belge_Lambert_2008','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3814','NAD_1983_Mississippi_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3815','NAD_1983_HARN_Mississippi_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3816','NAD_1983_NSRS2007_Mississippi_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3825','TWD_1997_TM_Penghu','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3826','TWD_1997_TM_Taiwan','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3827','TWD_1967_TM_Penghu','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3828','TWD_1967_TM_Taiwan','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3829','Hu_Tzu_Shan_UTM_Zone_51N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3832','WGS_1984_PDC_Mercator','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3833','Pulkovo_1942_Adj_1958_GK_Zone_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3834','Pulkovo_1942_Adj_1983_GK_Zone_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3835','Pulkovo_1942_Adj_1983_GK_Zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3836','Pulkovo_1942_Adj_1983_GK_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3837','Pulkovo_1942_Adj_1958_3_Degree_GK_Zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3838','Pulkovo_1942_Adj_1958_3_Degree_GK_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3839','Pulkovo_1942_Adj_1958_3_Degree_GK_Zone_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3840','Pulkovo_1942_Adj_1958_3_Degree_GK_Zone_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3841','Pulkovo_1942_Adj_1983_3_Degree_GK_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3844','Pulkovo_1942_Adj_58_Stereo_70','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3845','SWEREF99_RT90_7.5_gon_V_emulation','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3846','SWEREF99_RT90_5_gon_V_emulation','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3847','SWEREF99_RT90_2.5_gon_V_emulation','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3848','SWEREF99_RT90_0_gon_emulation','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3849','SWEREF99_RT90_2.5_gon_O_emulation','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3850','SWEREF99_RT90_5_gon_O_emulation','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3851','NZGD_2000_NZ_Continental_Shelf_2000','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3852','RSRGD2000_DGLC2000','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3854','SWEREF99_County_ST74','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3857','WGS_1984_Web_Mercator_Auxiliary_Sphere','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3873','ETRS_1989_GK19FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3874','ETRS_1989_GK20FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3875','ETRS_1989_GK21FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3876','ETRS_1989_GK22FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3877','ETRS_1989_GK23FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3878','ETRS_1989_GK24FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3879','ETRS_1989_GK25FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3880','ETRS_1989_GK26FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3881','ETRS_1989_GK27FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3882','ETRS_1989_GK28FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3883','ETRS_1989_GK29FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3884','ETRS_1989_GK30FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3885','ETRS_1989_GK31FIN','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3890','IGRS_UTM_Zone_37N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3891','IGRS_UTM_Zone_38N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3892','IGRS_UTM_Zone_39N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3893','ED_1950_Iraq_National_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3907','MGI_1901_Balkans_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3908','MGI_1901_Balkans_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3909','MGI_1901_Balkans_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3910','MGI_1901_Balkans_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3911','MGI_1901_Slovenia_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3912','MGI_1901_Slovene_National_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3920','Puerto_Rico_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3942','RGF_1993_CC42','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3943','RGF_1993_CC43','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3944','RGF_1993_CC44','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3945','RGF_1993_CC45','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3946','RGF_1993_CC46','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3947','RGF_1993_CC47','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3948','RGF_1993_CC48','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3949','RGF_1993_CC49','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3950','RGF_1993_CC50','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3968','NAD_1983_Virginia_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3969','NAD_1983_HARN_Virginia_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3970','NAD_1983_NSRS2007_Virginia_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3973','WGS_1984_EASE_Grid_North','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3974','WGS_1984_EASE_Grid_South','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3975','WGS_1984_EASE_Grid_Global','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3976','WGS_1984_NSIDC_Sea_Ice_Polar_Stereographic_South','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3978','NAD_1983_Canada_Atlas_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3979','NAD_1983_CSRS_Canada_Atlas_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3986','Katanga_1955_Katanga_Gauss_Zone_A','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3987','Katanga_1955_Katanga_Gauss_Zone_B','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3988','Katanga_1955_Katanga_Gauss_Zone_C','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3989','Katanga_1955_Katanga_Gauss_Zone_D','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3991','Puerto_Rico_StatePlane_Puerto_Rico_FIPS_5201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3992','Puerto_Rico_StatePlane_Virgin_Islands_St_Croix_FIPS_5202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3994','WGS_1984_Mercator_41','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3995','WGS_1984_Arctic_Polar_Stereographic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3996','WGS_1984_IBCAO_Polar_Stereographic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','3997','WGS_1984_Dubai_Local_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4026','MOLDREF99_Moldova_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4037','WGS_1984_TMzn35N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4038','WGS_1984_TMzn36N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4048','RGRDC_2005_Congo_TM_Zone_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4049','RGRDC_2005_Congo_TM_Zone_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4050','RGRDC_2005_Congo_TM_Zone_16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4051','RGRDC_2005_Congo_TM_Zone_18','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4056','RGRDC_2005_Congo_TM_Zone_20','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4057','RGRDC_2005_Congo_TM_Zone_22','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4058','RGRDC_2005_Congo_TM_Zone_24','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4059','RGRDC_2005_Congo_TM_Zone_26','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4060','RGRDC_2005_Congo_TM_Zone_28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4061','RGRDC_2005_UTM_Zone_33S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4062','RGRDC_2005_UTM_Zone_34S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4063','RGRDC_2005_UTM_Zone_35S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4071','Chua_UTM_Zone_23S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4082','REGCAN95_UTM_Zone_27N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4083','REGCAN95_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4087','WGS_1984_World_Equidistant_Cylindrical','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4088','World_Equidistant_Cylindrical_(Sphere)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4093','ETRS_1989_DKTM1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4094','ETRS_1989_DKTM2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4095','ETRS_1989_DKTM3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4096','ETRS_1989_DKTM4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4217','NAD_1983_BLM_Zone_59N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4390','Kertau_1968_Johor_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4391','Kertau_1968_Sembilan_and_Melaka_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4392','Kertau_1968_Pahang_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4393','Kertau_1968_Selangor_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4394','Kertau_1968_Terengganu_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4395','Kertau_1968_Pinang_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4396','Kertau_1968_Kedah_and_Perlis_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4397','Kertau_1968_Perak_Revised_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4398','Kertau_1968_Kelantan_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4399','NAD_1927_BLM_Zone_59N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4400','NAD_1927_BLM_Zone_60N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4401','NAD_1927_BLM_Zone_1N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4402','NAD_1927_BLM_Zone_2N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4403','NAD_1927_BLM_Zone_3N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4404','NAD_1927_BLM_Zone_4N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4405','NAD_1927_BLM_Zone_5N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4406','NAD_1927_BLM_Zone_6N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4407','NAD_1927_BLM_Zone_7N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4408','NAD_1927_BLM_Zone_8N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4409','NAD_1927_BLM_Zone_9N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4410','NAD_1927_BLM_Zone_10N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4411','NAD_1927_BLM_Zone_11N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4412','NAD_1927_BLM_Zone_12N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4413','NAD_1927_BLM_Zone_13N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4414','NAD_1983_HARN_Guam_Map_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4415','Katanga_1955_Katanga_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4417','Pulkovo_1942_Adj_1983_3_Degree_GK_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4418','NAD_1927_BLM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4419','NAD_1927_BLM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4420','NAD_1983_BLM_Zone_60N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4421','NAD_1983_BLM_Zone_1N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4422','NAD_1983_BLM_Zone_2N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4423','NAD_1983_BLM_Zone_3N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4424','NAD_1983_BLM_Zone_4N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4425','NAD_1983_BLM_Zone_5N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4426','NAD_1983_BLM_Zone_6N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4427','NAD_1983_BLM_Zone_7N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4428','NAD_1983_BLM_Zone_8N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4429','NAD_1983_BLM_Zone_9N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4430','NAD_1983_BLM_Zone_10N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4431','NAD_1983_BLM_Zone_11N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4432','NAD_1983_BLM_Zone_12N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4433','NAD_1983_BLM_Zone_13N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4434','Pulkovo_1942_Adj_1983_3_Degree_GK_Zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4437','NAD_1983_NSRS2007_StatePlane_Puerto_Rico_Virgin_Isls_FIPS_5200','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4438','NAD_1983_BLM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4439','NAD_1983_BLM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4455','NAD_1927_StatePlane_Pennsylvania_South_FIPS_3702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4456','NAD_1927_StatePlane_New_York_Long_Island_FIPS_3104','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4457','NAD_1983_StatePlane_South_Dakota_North_FIPS_4001_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4462','WGS_1984_Australian_Centre_for_Remote_Sensing_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4467','RGSPM_2006_UTM_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4471','RGM_2004_UTM_Zone_38S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5879','Cadastre_1997_UTM_Zone_38S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4484','Mexican_Datum_1993_UTM_Zone_11N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4485','Mexican_Datum_1993_UTM_Zone_12N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4486','Mexican_Datum_1993_UTM_Zone_13N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4487','Mexican_Datum_1993_UTM_Zone_14N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4488','Mexican_Datum_1993_UTM_Zone_15N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4489','Mexican_Datum_1993_UTM_Zone_16N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4491','CGCS2000_GK_Zone_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4492','CGCS2000_GK_Zone_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4493','CGCS2000_GK_Zone_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4494','CGCS2000_GK_Zone_16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4495','CGCS2000_GK_Zone_17','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4496','CGCS2000_GK_Zone_18','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4497','CGCS2000_GK_Zone_19','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4498','CGCS2000_GK_Zone_20','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4499','CGCS2000_GK_Zone_21','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4500','CGCS2000_GK_Zone_22','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4501','CGCS2000_GK_Zone_23','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4502','CGCS2000_GK_CM_75E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4503','CGCS2000_GK_CM_81E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4504','CGCS2000_GK_CM_87E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4505','CGCS2000_GK_CM_93E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4506','CGCS2000_GK_CM_99E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4507','CGCS2000_GK_CM_105E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4508','CGCS2000_GK_CM_111E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4509','CGCS2000_GK_CM_117E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4510','CGCS2000_GK_CM_123E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4511','CGCS2000_GK_CM_129E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4512','CGCS2000_GK_CM_135E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4513','CGCS2000_3_Degree_GK_Zone_25','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4514','CGCS2000_3_Degree_GK_Zone_26','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4515','CGCS2000_3_Degree_GK_Zone_27','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4516','CGCS2000_3_Degree_GK_Zone_28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4517','CGCS2000_3_Degree_GK_Zone_29','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4518','CGCS2000_3_Degree_GK_Zone_30','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4519','CGCS2000_3_Degree_GK_Zone_31','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4520','CGCS2000_3_Degree_GK_Zone_32','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4521','CGCS2000_3_Degree_GK_Zone_33','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4522','CGCS2000_3_Degree_GK_Zone_34','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4523','CGCS2000_3_Degree_GK_Zone_35','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4524','CGCS2000_3_Degree_GK_Zone_36','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4525','CGCS2000_3_Degree_GK_Zone_37','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4526','CGCS2000_3_Degree_GK_Zone_38','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4527','CGCS2000_3_Degree_GK_Zone_39','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4528','CGCS2000_3_Degree_GK_Zone_40','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4529','CGCS2000_3_Degree_GK_Zone_41','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4530','CGCS2000_3_Degree_GK_Zone_42','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4531','CGCS2000_3_Degree_GK_Zone_43','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4532','CGCS2000_3_Degree_GK_Zone_44','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4533','CGCS2000_3_Degree_GK_Zone_45','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4534','CGCS2000_3_Degree_GK_CM_75E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4535','CGCS2000_3_Degree_GK_CM_78E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4536','CGCS2000_3_Degree_GK_CM_81E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4537','CGCS2000_3_Degree_GK_CM_84E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4538','CGCS2000_3_Degree_GK_CM_87E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4539','CGCS2000_3_Degree_GK_CM_90E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4540','CGCS2000_3_Degree_GK_CM_93E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4541','CGCS2000_3_Degree_GK_CM_96E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4542','CGCS2000_3_Degree_GK_CM_99E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4543','CGCS2000_3_Degree_GK_CM_102E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4544','CGCS2000_3_Degree_GK_CM_105E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4545','CGCS2000_3_Degree_GK_CM_108E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4546','CGCS2000_3_Degree_GK_CM_111E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4547','CGCS2000_3_Degree_GK_CM_114E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4548','CGCS2000_3_Degree_GK_CM_117E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4549','CGCS2000_3_Degree_GK_CM_120E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4550','CGCS2000_3_Degree_GK_CM_123E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4551','CGCS2000_3_Degree_GK_CM_126E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4552','CGCS2000_3_Degree_GK_CM_129E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4553','CGCS2000_3_Degree_GK_CM_132E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4554','CGCS2000_3_Degree_GK_CM_135E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4559','RRAF_1991_UTM_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4568','New_Beijing_Gauss_Kruger_Zone_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4569','New_Beijing_Gauss_Kruger_Zone_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4570','New_Beijing_Gauss_Kruger_Zone_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4571','New_Beijing_Gauss_Kruger_Zone_16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4572','New_Beijing_Gauss_Kruger_Zone_17','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4573','New_Beijing_Gauss_Kruger_Zone_18','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4574','New_Beijing_Gauss_Kruger_Zone_19','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4575','New_Beijing_Gauss_Kruger_Zone_20','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4576','New_Beijing_Gauss_Kruger_Zone_21','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4577','New_Beijing_Gauss_Kruger_Zone_22','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4578','New_Beijing_Gauss_Kruger_Zone_23','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4579','New_Beijing_Gauss_Kruger_CM_75E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4580','New_Beijing_Gauss_Kruger_CM_81E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4581','New_Beijing_Gauss_Kruger_CM_87E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4582','New_Beijing_Gauss_Kruger_CM_93E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4583','New_Beijing_Gauss_Kruger_CM_99E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4584','New_Beijing_Gauss_Kruger_CM_105E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4585','New_Beijing_Gauss_Kruger_CM_111E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4586','New_Beijing_Gauss_Kruger_CM_117E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4587','New_Beijing_Gauss_Kruger_CM_123E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4588','New_Beijing_Gauss_Kruger_CM_129E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4589','New_Beijing_Gauss_Kruger_CM_135E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4647','ETRS_1989_UTM_Zone_N32','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4652','New_Beijing_3_Degree_Gauss_Kruger_Zone_25','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4653','New_Beijing_3_Degree_Gauss_Kruger_Zone_26','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4654','New_Beijing_3_Degree_Gauss_Kruger_Zone_27','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4655','New_Beijing_3_Degree_Gauss_Kruger_Zone_28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4656','New_Beijing_3_Degree_Gauss_Kruger_Zone_29','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4766','New_Beijing_3_Degree_Gauss_Kruger_Zone_30','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4767','New_Beijing_3_Degree_Gauss_Kruger_Zone_31','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4768','New_Beijing_3_Degree_Gauss_Kruger_Zone_32','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4769','New_Beijing_3_Degree_Gauss_Kruger_Zone_33','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4770','New_Beijing_3_Degree_Gauss_Kruger_Zone_34','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4771','New_Beijing_3_Degree_Gauss_Kruger_Zone_35','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4772','New_Beijing_3_Degree_Gauss_Kruger_Zone_36','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4773','New_Beijing_3_Degree_Gauss_Kruger_Zone_37','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4774','New_Beijing_3_Degree_Gauss_Kruger_Zone_38','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4775','New_Beijing_3_Degree_Gauss_Kruger_Zone_39','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4776','New_Beijing_3_Degree_Gauss_Kruger_Zone_40','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4777','New_Beijing_3_Degree_Gauss_Kruger_Zone_41','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4778','New_Beijing_3_Degree_Gauss_Kruger_Zone_42','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4779','New_Beijing_3_Degree_Gauss_Kruger_Zone_43','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4780','New_Beijing_3_Degree_Gauss_Kruger_Zone_44','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4781','New_Beijing_3_Degree_Gauss_Kruger_Zone_45','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4782','New_Beijing_3_Degree_Gauss_Kruger_CM_75E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4783','New_Beijing_3_Degree_Gauss_Kruger_CM_78E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4784','New_Beijing_3_Degree_Gauss_Kruger_CM_81E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4785','New_Beijing_3_Degree_Gauss_Kruger_CM_84E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4786','New_Beijing_3_Degree_Gauss_Kruger_CM_87E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4787','New_Beijing_3_Degree_Gauss_Kruger_CM_90E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4788','New_Beijing_3_Degree_Gauss_Kruger_CM_93E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4789','New_Beijing_3_Degree_Gauss_Kruger_CM_96E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4790','New_Beijing_3_Degree_Gauss_Kruger_CM_99E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4791','New_Beijing_3_Degree_Gauss_Kruger_CM_102E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4792','New_Beijing_3_Degree_Gauss_Kruger_CM_105E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4793','New_Beijing_3_Degree_Gauss_Kruger_CM_108E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4794','New_Beijing_3_Degree_Gauss_Kruger_CM_111E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4795','New_Beijing_3_Degree_Gauss_Kruger_CM_114E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4796','New_Beijing_3_Degree_Gauss_Kruger_CM_117E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4797','New_Beijing_3_Degree_Gauss_Kruger_CM_120E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4798','New_Beijing_3_Degree_Gauss_Kruger_CM_123E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4799','New_Beijing_3_Degree_Gauss_Kruger_CM_126E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4800','New_Beijing_3_Degree_Gauss_Kruger_CM_129E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4822','New_Beijing_3_Degree_Gauss_Kruger_CM_135E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4826','WGS_1984_Cape_Verde_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4839','ETRS_1989_LCC_Germany_N-E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5014','PTRA08_UTM_Zone_25N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5015','PTRA08_UTM_Zone_26N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5016','PTRA08_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5018','Lisbon_Portuguese_Grid_New','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5048','ETRS_1989_TM35FIN_NE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5069','NAD_1927_Contiguous_USA_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5070','NAD_1983_Contiguous_USA_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5071','NAD_1983_HARN_Contiguous_USA_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5072','NAD_1983_NSRS2007_Contiguous_USA_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5105','ETRS_1989_NTM_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5106','ETRS_1989_NTM_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5107','ETRS_1989_NTM_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5108','ETRS_1989_NTM_Zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5109','ETRS_1989_NTM_Zone_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5110','ETRS_1989_NTM_Zone_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5111','ETRS_1989_NTM_Zone_11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5112','ETRS_1989_NTM_Zone_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5113','ETRS_1989_NTM_Zone_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5114','ETRS_1989_NTM_Zone_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5115','ETRS_1989_NTM_Zone_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5116','ETRS_1989_NTM_Zone_16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5117','ETRS_1989_NTM_Zone_17','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5118','ETRS_1989_NTM_Zone_18','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5119','ETRS_1989_NTM_Zone_19','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5120','ETRS_1989_NTM_Zone_20','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5121','ETRS_1989_NTM_Zone_21','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5122','ETRS_1989_NTM_Zone_22','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5123','ETRS_1989_NTM_Zone_23','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5124','ETRS_1989_NTM_Zone_24','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5125','ETRS_1989_NTM_Zone_25','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5126','ETRS_1989_NTM_Zone_26','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5127','ETRS_1989_NTM_Zone_27','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5128','ETRS_1989_NTM_Zone_28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5129','ETRS_1989_NTM_Zone_29','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5130','ETRS_1989_NTM_Zone_30','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5167','Korean_1985_Korea_East_Sea_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5168','Korean_1985_Korea_Central_Belt_Jeju','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5173','Korean_1985_Modified_Korea_West_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5174','Korean_1985_Modified_Korea_Central_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5175','Korean_1985_Modified_Korea_Central_Belt_Jeju','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5176','Korean_1985_Modified_Korea_East_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5177','Korean_1985_Modified_Korea_East_Sea_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5178','Korean_1985_Korea_Unified_Coordinate_System','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5179','Korea_2000_Korea_Unified_Coordinate_System','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5180','Korea_2000_Korea_West_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5181','Korea_2000_Korea_Central_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5182','Korea_2000_Korea_Central_Belt_Jeju','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5183','Korea_2000_Korea_East_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5184','Korea_2000_Korea_East_Sea_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5185','Korea_2000_Korea_West_Belt_2010','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5186','Korea_2000_Korea_Central_Belt_2010','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5187','Korea_2000_Korea_East_Belt_2010','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5188','Korea_2000_Korea_East_Sea_Belt_2010','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5221','S-JTSK_Ferro_Krovak_East_North','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5223','WGS_1984_UTM_Gabon_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5234','Kandawala_Sri_Lanka_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5235','SLD99_Sri_Lanka_Grid_1999','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5243','ETRS_1989_LCC_Germany_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5247','GDBD2009_GEORSO','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5253','TUREF_TM27','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5254','TUREF_TM30','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5255','TUREF_TM33','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5256','TUREF_TM36','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5257','TUREF_TM39','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5258','TUREF_TM42','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5259','TUREF_TM45','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5266','DRUKREF_03_Bhutan_National_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5269','TUREF_3_Degree_GK_Zone_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5270','TUREF_3_Degree_GK_Zone_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5271','TUREF_3_Degree_GK_Zone_11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5272','TUREF_3_Degree_GK_Zone_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5273','TUREF_3_Degree_GK_Zone_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5274','TUREF_3_Degree_GK_Zone_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5275','TUREF_3_Degree_GK_Zone_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5292','DRUKREF_03_Bumthang_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5293','DRUKREF_03_Chhukha_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5294','DRUKREF_03_Dagana_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5295','DRUKREF_03_Gasa_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5296','DRUKREF_03_Ha_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5297','DRUKREF_03_Lhuentse_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5298','DRUKREF_03_Mongar_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5299','DRUKREF_03_Paro_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5300','DRUKREF_03_Pemagatshel_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5301','DRUKREF_03_Punakha_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5302','DRUKREF_03_Samdrup_Jongkhar_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5303','DRUKREF_03_Samtse_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5304','DRUKREF_03_Sarpang_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5305','DRUKREF_03_Thimphu_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5306','DRUKREF_03_Trashigang_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5307','DRUKREF_03_Trongsa_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5308','DRUKREF_03_Tsirang_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5309','DRUKREF_03_Wangdue_Phodrang_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5310','DRUKREF_03_Yangtse_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5311','DRUKREF_03_Zhemgang_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5316','ETRS_1989_FAROE_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5320','NAD_1983_Teranet_Ontario_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5321','NAD_1983_CSRS_Teranet_Ontario_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5325','ISN_2004_Lambert_2004','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5329','Gunung_Segara_Jakarta_NEIEZ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5330','Batavia_Jakarta_NEIEZ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5331','Makassar_Jakarta_NEIEZ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5337','Aratu_UTM_Zone_25S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5343','POSGAR_2007_Argentina_Zone_1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5344','POSGAR_2007_Argentina_Zone_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5345','POSGAR_2007_Argentina_Zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5346','POSGAR_2007_Argentina_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5347','POSGAR_2007_Argentina_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5348','POSGAR_2007_Argentina_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5349','POSGAR_2007_Argentina_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5355','MARGEN_UTM_Zone_20S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5356','MARGEN_UTM_Zone_19S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5357','MARGEN_UTM_Zone_21S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5361','SIRGAS-Chile_UTM_Zone_19S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5362','SIRGAS-Chile_UTM_Zone_18S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5367','CRTM05','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5382','SIRGAS-ROU98_UTM_Zone_21S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5383','SIRGAS-ROU98_UTM_Zone_22S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5387','Peru96_UTM_Zone_18S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5839','Peru96_UTM_Zone_17S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5389','Peru96_UTM_Zone_19S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5396','SIRGAS_2000_UTM_Zone_26S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5456','Ocotepeque_1935_Costa_Rica_Norte','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5457','Ocotepeque_1935_Costa_Rica_Sur','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5459','Ocotepeque_1935_Guatemala_Sur','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5460','Ocotepeque_1935_El_Salvador_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5461','Ocotepeque_1935_Nicaragua_Norte','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5462','Ocotepeque_1935_Nicaragua_Sur','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5463','SAD_1969_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5469','Panama-Colon_1911_Panama_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5472','Panama-Colon_1911_Panama_Polyconic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5479','RSRGD2000_MSLC2000','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5480','RSRGD2000_BCLC2000','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5481','RSRGD2000_PCLC2000','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5482','RSRGD2000_RSPS2000','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5490','RGAF09_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5513','S-JTSK_Krovak','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5514','S-JTSK_Krovak_East_North','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5518','Chatham_Island_1971_Map_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5519','Chatham_Islands_1979_Map_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5520','DHDN_3_Degree_Gauss_Zone_1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5523','WGS_1984_UTM_Gabon_TM_2011','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5530','SAD_1969_96_Brazil_Polyconic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5531','SAD_1969_96_UTM_Zone_21S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5858','SAD_1969_96_UTM_Zone_22S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5533','SAD_1969_96_UTM_Zone_23S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5534','SAD_1969_96_UTM_Zone_24S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5535','SAD_1969_96_UTM_Zone_25S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5536','Corrego_Alegre_1961_UTM_Zone_21S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5537','Corrego_Alegre_1961_UTM_Zone_22S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5538','Corrego_Alegre_1961_UTM_Zone_23S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5539','Corrego_Alegre_1961_UTM_Zone_24S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5550','PNG94_PNGMG94_Zone_54','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5551','PNG94_PNGMG94_Zone_55','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5552','PNG94_PNGMG94_Zone_56','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5559','Ocotepeque_1935_Guatemala_Norte','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5562','Ukraine_2000_GK_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5563','Ukraine_2000_GK_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5564','Ukraine_2000_GK_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5565','Ukraine_2000_GK_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5566','Ukraine_2000_GK_CM_21E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5567','Ukraine_2000_GK_CM_27E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5568','Ukraine_2000_GK_CM_33E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5569','Ukraine_2000_GK_CM_39E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5570','Ukraine_2000_3_Degree_GK_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5571','Ukraine_2000_3_Degree_GK_Zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5572','Ukraine_2000_3_Degree_GK_Zone_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5573','Ukraine_2000_3_Degree_GK_Zone_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5574','Ukraine_2000_3_Degree_GK_Zone_11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5575','Ukraine_2000_3_Degree_GK_Zone_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5576','Ukraine_2000_3_Degree_GK_Zone_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5577','Ukraine_2000_3_Degree_GK_CM_21E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5578','Ukraine_2000_3_Degree_GK_CM_24E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5579','Ukraine_2000_3_Degree_GK_CM_27E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5580','Ukraine_2000_3_Degree_GK_CM_30E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5581','Ukraine_2000_3_Degree_GK_CM_33E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5582','Ukraine_2000_3_Degree_GK_CM_36E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5583','Ukraine_2000_3_Degree_GK_CM_39E','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5588','NAD_1927_New_Brunswick_Stereographic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5589','Sibun_Gorge_1922_Colony_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5596','FEH2010_Fehmarnbelt_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5623','NAD_1927_StatePlane_Michigan_East_Old_FIPS_2101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5624','NAD_1927_StatePlane_Michigan_Central_Old_FIPS_2102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5625','NAD_1927_StatePlane_Michigan_West_Old_FIPS_2103','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5627','ED_1950_TM_6_NE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5629','Moznet_UTM_Zone_38S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5631','Pulkovo_1942_Adj_1958_GK_Zone_2_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5632','PTRA08_LCC_Europe','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5633','PTRA08_LAEA_Europe','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5634','REGCAN95_LCC_Europe','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5635','REGCAN95_LAEA_Europe','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5636','TUREF_LAEA_Europe','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5637','TUREF_LCC_Europe','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5638','ISN_2004_LAEA_Europe','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5639','ISN_2004_LCC_Europe','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5641','SIRGAS_2000_Brazil_Mercator','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5643','ED_1950_Southern_Permian_Basin_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5644','RGR_1992_UTM_39S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5646','NAD_1983_StatePlane_Vermont_FIPS_4400_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5649','ETRS_1989_UTM_Zone_31N_zE-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5650','ETRS_1989_UTM_Zone_33N_zE-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5651','ETRS_1989_UTM_Zone_31N_N-zE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5652','ETRS_1989_UTM_Zone_32N_N-zE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5653','ETRS_1989_UTM_Zone_33N_N-zE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5654','NAD_1983_HARN_StatePlane_Vermont_FIPS_4400_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5655','NAD_1983_NSRS2007_StatePlane_Vermont_FIPS_4400_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5659','Monte_Mario_TM_Emilia-Romagna','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5663','Pulkovo_1942_Adj_1958_GK_Zone_3_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5664','Pulkovo_1942_Adj_1983_GK_Zone_2_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5665','Pulkovo_1942_Adj_1983_GK_Zone_3_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5666','PD/83_3_Degree_GK_Zone_3_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5667','PD/83_3_Degree_GK_Zone_4_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5668','RD/83_3_Degree_GK_Zone_4_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5669','RD/83_3_Degree_GK_Zone_5_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5670','Pulkovo_1942_Adj_1958_3_Degree_GK_Zone_3_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5671','Pulkovo_1942_Adj_1958_3_Degree_GK_Zone_4_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5672','Pulkovo_1942_Adj_1958_3_Degree_GK_Zone_5_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5673','Pulkovo_1942_Adj_1983_3_Degree_GK_Zone_3_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5674','Pulkovo_1942_Adj_1983_3_Degree_GK_Zone_4_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5675','Pulkovo_1942_Adj_1983_3_Degree_GK_Zone_5_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5676','DHDN_3_Degree_GK_Zone_2_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5677','DHDN_3_Degree_GK_Zone_3_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5678','DHDN_3_Degree_GK_Zone_4_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5679','DHDN_3_Degree_GK_Zone_5_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5680','DHDN_3_Degree_GK_Zone_1_E-N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5682','DB_REF_3-Degree_GK_Zone_2_(E-N)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5683','DB_REF_3-Degree_GK_Zone_3_(E-N)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5684','DB_REF_3-Degree_GK_Zone_4_(E-N)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5685','DB_REF_3-Degree_GK_Zone_5_(E-N)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5700','NZGD_2000_UTM_Zone_1S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5825','AGD_1966_ACT_Standard_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5836','Yemen_NGN_1996_UTM_Zone_37N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5837','Yemen_NGN_1996_UTM_Zone_40N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5839','Peru96_UTM_Zone_17S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5842','WGS_1984_TM_12_SE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5844','RGRDC_2005_Congo_TM_Zone_30','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5858','SAD_1969_96_UTM_Zone_22S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5875','SAD_1969_96_UTM_Zone_18S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5876','SAD_1969_96_UTM_Zone_19S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5877','SAD_1969_96_UTM_Zone_20S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5879','Cadastre_1997_UTM_Zone_38S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5880','SIRGAS_2000_Brazil_Polyconic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5887','TGD2005_Tonga_Map_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5890','JAXA_Snow_Depth_Polar_Stereographic_North','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5921','WGS_1984_EPSG_Arctic_Regional_zone_A1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5922','WGS_1984_EPSG_Arctic_Regional_zone_A2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5923','WGS_1984_EPSG_Arctic_Regional_zone_A3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5924','WGS_1984_EPSG_Arctic_Regional_zone_A4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5925','WGS_1984_EPSG_Arctic_Regional_zone_A5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5926','WGS_1984_EPSG_Arctic_Regional_zone_B1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5927','WGS_1984_EPSG_Arctic_Regional_zone_B2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5928','WGS_1984_EPSG_Arctic_Regional_zone_B3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5929','WGS_1984_EPSG_Arctic_Regional_zone_B4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5930','WGS_1984_EPSG_Arctic_Regional_zone_B5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5931','WGS_1984_EPSG_Arctic_Regional_zone_C1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5932','WGS_1984_EPSG_Arctic_Regional_zone_C2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5933','WGS_1984_EPSG_Arctic_Regional_zone_C3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5934','WGS_1984_EPSG_Arctic_Regional_zone_C4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5935','WGS_1984_EPSG_Arctic_Regional_zone_C5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5936','WGS_1984_EPSG_Alaska_Polar_Stereographic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5937','WGS_1984_EPSG_Canada_Polar_Stereographic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5938','WGS_1984_EPSG_Greenland_Polar_Stereographic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5939','WGS_1984_EPSG_Norway_Polar_Stereographic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5940','WGS_1984_EPSG_Russia_Polar_Stereographic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6050','GR96_EPSG_Arctic_zone_1-25','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6051','GR96_EPSG_Arctic_zone_2-18','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6052','GR96_EPSG_Arctic_zone_2-20','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6053','GR96_EPSG_Arctic_zone_3-29','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6054','GR96_EPSG_Arctic_zone_3-31','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6055','GR96_EPSG_Arctic_zone_3-33','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6056','GR96_EPSG_Arctic_zone_4-20','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6057','GR96_EPSG_Arctic_zone_4-22','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6058','GR96_EPSG_Arctic_zone_4-24','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6059','GR96_EPSG_Arctic_zone_5-41','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6060','GR96_EPSG_Arctic_zone_5-43','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6061','GR96_EPSG_Arctic_zone_5-45','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6062','GR96_EPSG_Arctic_zone_6-26','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6063','GR96_EPSG_Arctic_zone_6-28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6064','GR96_EPSG_Arctic_zone_6-30','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6065','GR96_EPSG_Arctic_zone_7-11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6066','GR96_EPSG_Arctic_zone_7-13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6067','GR96_EPSG_Arctic_zone_8-20','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6068','GR96_EPSG_Arctic_zone_8-22','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6069','ETRS_1989_EPSG_Arctic_zone_2-22','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6070','ETRS_1989_EPSG_Arctic_zone_3-11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6071','ETRS_1989_EPSG_Arctic_zone_4-26','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6072','ETRS_1989_EPSG_Arctic_zone_4-28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6073','ETRS_1989_EPSG_Arctic_zone_5-11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6074','ETRS_1989_EPSG_Arctic_zone_5-13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6075','WGS_1984_EPSG_Arctic_zone_2-24','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6076','WGS_1984_EPSG_Arctic_zone_2-26','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6077','WGS_1984_EPSG_Arctic_zone_3-13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6078','WGS_1984_EPSG_Arctic_zone_3-15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6079','WGS_1984_EPSG_Arctic_zone_3-17','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6080','WGS_1984_EPSG_Arctic_zone_3-19','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6081','WGS_1984_EPSG_Arctic_zone_4-30','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6082','WGS_1984_EPSG_Arctic_zone_4-32','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6083','WGS_1984_EPSG_Arctic_zone_4-34','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6084','WGS_1984_EPSG_Arctic_zone_4-36','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6085','WGS_1984_EPSG_Arctic_zone_4-38','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6086','WGS_1984_EPSG_Arctic_zone_4-40','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6087','WGS_1984_EPSG_Arctic_zone_5-15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6088','WGS_1984_EPSG_Arctic_zone_5-17','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6089','WGS_1984_EPSG_Arctic_zone_5-19','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6090','WGS_1984_EPSG_Arctic_zone_5-21','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6091','WGS_1984_EPSG_Arctic_zone_5-23','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6092','WGS_1984_EPSG_Arctic_zone_5-25','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6093','WGS_1984_EPSG_Arctic_zone_5-27','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6094','NAD_1983_NSRS2007_EPSG_Arctic_zone_5-29','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6095','NAD_1983_NSRS2007_EPSG_Arctic_zone_5-31','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6096','NAD_1983_NSRS2007_EPSG_Arctic_zone_6-14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6097','NAD_1983_NSRS2007_EPSG_Arctic_zone_6-16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6098','NAD_1983_CSRS_EPSG_Arctic_zone_1-23','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6099','NAD_1983_CSRS_EPSG_Arctic_zone_2-14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6100','NAD_1983_CSRS_EPSG_Arctic_zone_2-16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6101','NAD_1983_CSRS_EPSG_Arctic_zone_3-25','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6102','NAD_1983_CSRS_EPSG_Arctic_zone_3-27','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6103','NAD_1983_CSRS_EPSG_Arctic_zone_3-29','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6104','NAD_1983_CSRS_EPSG_Arctic_zone_4-14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6105','NAD_1983_CSRS_EPSG_Arctic_zone_4-16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6106','NAD_1983_CSRS_EPSG_Arctic_zone_4-18','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6107','NAD_1983_CSRS_EPSG_Arctic_zone_5-33','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6108','NAD_1983_CSRS_EPSG_Arctic_zone_5-35','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6109','NAD_1983_CSRS_EPSG_Arctic_zone_5-37','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6110','NAD_1983_CSRS_EPSG_Arctic_zone_5-39','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6111','NAD_1983_CSRS_EPSG_Arctic_zone_6-18','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6112','NAD_1983_CSRS_EPSG_Arctic_zone_6-20','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6113','NAD_1983_CSRS_EPSG_Arctic_zone_6-22','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6114','NAD_1983_CSRS_EPSG_Arctic_zone_6-24','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6115','WGS_1984_EPSG_Arctic_zone_1-27','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6116','WGS_1984_EPSG_Arctic_zone_1-29','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6117','WGS_1984_EPSG_Arctic_zone_1-31','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6118','WGS_1984_EPSG_Arctic_zone_1-21','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6119','WGS_1984_EPSG_Arctic_zone_2-28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6120','WGS_1984_EPSG_Arctic_zone_2-10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6121','WGS_1984_EPSG_Arctic_zone_2-12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6122','WGS_1984_EPSG_Arctic_zone_3-21','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6123','WGS_1984_EPSG_Arctic_zone_3-23','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6124','WGS_1984_EPSG_Arctic_zone_4-12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6125','ETRS_1989_EPSG_Arctic_zone_5-47','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6128','Grand_Cayman_National_Grid_1959','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6129','Sister_Islands_National_Grid_1961','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6391','Cayman_Islands_National_Grid_2011','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6204','Macedonian_State_Coordinate_System','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6210','SIRGAS_2000_UTM_Zone_23N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6211','SIRGAS_2000_UTM_Zone_24N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6244','MAGNA_Arauca_2007','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6245','MAGNA_Armenia_Quindio_2006','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6246','MAGNA_Barranquilla_Atlantico_1997','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6247','MAGNA_Bogota_DC_2005','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6248','MAGNA_Bucaramanga_Santander_2008','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6249','MAGNA_Cali_Valle_del_Cauca_2009','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6250','MAGNA_Cartagena_Bolivar_2005','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6251','MAGNA_Cucuta_Norte_de_Santander_2011','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6252','MAGNA_Florencia_Caqueta_2007','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6253','MAGNA_Ibague_Tolima_2007','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6254','MAGNA_Inirida_Guainia_2008','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6255','MAGNA_Leticia_Amazonas_1994','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6256','MAGNA_Manizales_Caldas_2011','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6257','MAGNA_Medellin_Antioquia_2010','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6258','MAGNA_Mitu_Vaupes_2011','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6259','MAGNA_Mocoa_Putumayo_2011','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6260','MAGNA_Monteria_Cordoba_2006','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6261','MAGNA_Neiva_Huila_2006','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6262','MAGNA_Pasto_Narino_2008','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6263','MAGNA_Pereira_Risaralda_2007','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6264','MAGNA_Popayan_Cauca_2006','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6265','MAGNA_Puerto_Carreno_Vichada_2011','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6266','MAGNA_Quibdo_Choco_2011','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6267','MAGNA_Riohacha_La_Guajira_2006','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6268','MAGNA_San_Andres_2007','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6269','MAGNA_San_Jose_del_Guaviare_2011','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6270','MAGNA_Santa_Marta_Magdalena_2007','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6271','MAGNA_Sucre_2006','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6272','MAGNA_Tunja_Boyaca_1997','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6273','MAGNA_Valledupar_Cesar_2011','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6274','MAGNA_Villavicencio_Meta_2011','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6275','MAGNA_Yopal_Casanare_2006','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6307','NAD_1983_CORS96_SPCS_Puerto_Rico_and_Virgin_Islands','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6312','CGRS_1993_Cyprus_Local_Transverse_Mercator','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6316','Macedonia_State_Coordinate_System_zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6328','NAD_1983_2011_UTM_Zone_59N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6329','NAD_1983_2011_UTM_Zone_60N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6330','NAD_1983_2011_UTM_Zone_1N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6331','NAD_1983_2011_UTM_Zone_2N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6332','NAD_1983_2011_UTM_Zone_3N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6333','NAD_1983_2011_UTM_Zone_4N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6334','NAD_1983_2011_UTM_Zone_5N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6335','NAD_1983_2011_UTM_Zone_6N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6336','NAD_1983_2011_UTM_Zone_7N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6337','NAD_1983_2011_UTM_Zone_8N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6338','NAD_1983_2011_UTM_Zone_9N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6339','NAD_1983_2011_UTM_Zone_10N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6340','NAD_1983_2011_UTM_Zone_11N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6341','NAD_1983_2011_UTM_Zone_12N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6342','NAD_1983_2011_UTM_Zone_13N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6343','NAD_1983_2011_UTM_Zone_14N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6344','NAD_1983_2011_UTM_Zone_15N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6345','NAD_1983_2011_UTM_Zone_16N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6346','NAD_1983_2011_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6347','NAD_1983_2011_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6348','NAD_1983_2011_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6350','NAD_1983_2011_Contiguous_USA_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6351','NAD_1983_2011_EPSG_Arctic_zone_5-29','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6352','NAD_1983_2011_EPSG_Arctic_zone_5-31','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6353','NAD_1983_2011_EPSG_Arctic_zone_6-14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6354','NAD_1983_2011_EPSG_Arctic_zone_6-16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6355','NAD_1983_2011_StatePlane_Alabama_East_FIPS_0101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6356','NAD_1983_2011_StatePlane_Alabama_West_FIPS_0102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6362','Mexico_ITRF92_LCC','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6366','Mexico_ITRF2008_UTM_Zone_11N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6367','Mexico_ITRF2008_UTM_Zone_12N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6368','Mexico_ITRF2008_UTM_Zone_13N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6369','Mexico_ITRF2008_UTM_Zone_14N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6370','Mexico_ITRF2008_UTM_Zone_15N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6371','Mexico_ITRF2008_UTM_Zone_16N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6372','Mexico_ITRF2008_LCC','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6381','Ukraine_2000_TM_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6382','Ukraine_2000_TM_Zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6383','Ukraine_2000_TM_Zone_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6384','Ukraine_2000_TM_Zone_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6385','Ukraine_2000_TM_Zone_11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6386','Ukraine_2000_TM_Zone_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6387','Ukraine_2000_TM_Zone_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6391','Cayman_Islands_National_Grid_2011','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6393','NAD_1983_2011_Alaska_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6394','NAD_1983_2011_StatePlane_Alaska_1_FIPS_5001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6395','NAD_1983_2011_StatePlane_Alaska_2_FIPS_5002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6396','NAD_1983_2011_StatePlane_Alaska_3_FIPS_5003','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6397','NAD_1983_2011_StatePlane_Alaska_4_FIPS_5004','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6398','NAD_1983_2011_StatePlane_Alaska_5_FIPS_5005','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6399','NAD_1983_2011_StatePlane_Alaska_6_FIPS_5006','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6400','NAD_1983_2011_StatePlane_Alaska_7_FIPS_5007','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6401','NAD_1983_2011_StatePlane_Alaska_8_FIPS_5008','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6402','NAD_1983_2011_StatePlane_Alaska_9_FIPS_5009','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6403','NAD_1983_2011_StatePlane_Alaska_10_FIPS_5010','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6404','NAD_1983_2011_StatePlane_Arizona_Central_FIPS_0202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6405','NAD_1983_2011_StatePlane_Arizona_Central_FIPS_0202_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6406','NAD_1983_2011_StatePlane_Arizona_East_FIPS_0201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6407','NAD_1983_2011_StatePlane_Arizona_East_FIPS_0201_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6408','NAD_1983_2011_StatePlane_Arizona_West_FIPS_0203','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6409','NAD_1983_2011_StatePlane_Arizona_West_FIPS_0203_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6410','NAD_1983_2011_StatePlane_Arkansas_North_FIPS_0301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6411','NAD_1983_2011_StatePlane_Arkansas_North_FIPS_0301_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6412','NAD_1983_2011_StatePlane_Arkansas_South_FIPS_0302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6413','NAD_1983_2011_StatePlane_Arkansas_South_FIPS_0302_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6414','NAD_1983_2011_California_Teale_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6415','NAD_1983_2011_StatePlane_California_I_FIPS_0401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6416','NAD_1983_2011_StatePlane_California_I_FIPS_0401_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6417','NAD_1983_2011_StatePlane_California_II_FIPS_0402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6418','NAD_1983_2011_StatePlane_California_II_FIPS_0402_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6419','NAD_1983_2011_StatePlane_California_III_FIPS_0403','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6420','NAD_1983_2011_StatePlane_California_III_FIPS_0403_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6421','NAD_1983_2011_StatePlane_California_IV_FIPS_0404','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6422','NAD_1983_2011_StatePlane_California_IV_FIPS_0404_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6423','NAD_1983_2011_StatePlane_California_V_FIPS_0405','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6424','NAD_1983_2011_StatePlane_California_V_FIPS_0405_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6425','NAD_1983_2011_StatePlane_California_VI_FIPS_0406','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6426','NAD_1983_2011_StatePlane_California_VI_FIPS_0406_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6427','NAD_1983_2011_StatePlane_Colorado_Central_FIPS_0502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6428','NAD_1983_2011_StatePlane_Colorado_Central_FIPS_0502_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6429','NAD_1983_2011_StatePlane_Colorado_North_FIPS_0501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6430','NAD_1983_2011_StatePlane_Colorado_North_FIPS_0501_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6431','NAD_1983_2011_StatePlane_Colorado_South_FIPS_0503','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6432','NAD_1983_2011_StatePlane_Colorado_South_FIPS_0503_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6433','NAD_1983_2011_StatePlane_Connecticut_FIPS_0600','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6434','NAD_1983_2011_StatePlane_Connecticut_FIPS_0600_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6435','NAD_1983_2011_StatePlane_Delaware_FIPS_0700','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6436','NAD_1983_2011_StatePlane_Delaware_FIPS_0700_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6437','NAD_1983_2011_StatePlane_Florida_East_FIPS_0901','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6438','NAD_1983_2011_StatePlane_Florida_East_FIPS_0901_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6439','NAD_1983_2011_Florida_GDL_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6440','NAD_1983_2011_StatePlane_Florida_North_FIPS_0903','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6441','NAD_1983_2011_StatePlane_Florida_North_FIPS_0903_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6442','NAD_1983_2011_StatePlane_Florida_West_FIPS_0902','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6443','NAD_1983_2011_StatePlane_Florida_West_FIPS_0902_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6444','NAD_1983_2011_StatePlane_Georgia_East_FIPS_1001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6445','NAD_1983_2011_StatePlane_Georgia_East_FIPS_1001_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6446','NAD_1983_2011_StatePlane_Georgia_West_FIPS_1002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6447','NAD_1983_2011_StatePlane_Georgia_West_FIPS_1002_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6448','NAD_1983_2011_StatePlane_Idaho_Central_FIPS_1102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6449','NAD_1983_2011_StatePlane_Idaho_Central_FIPS_1102_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6450','NAD_1983_2011_StatePlane_Idaho_East_FIPS_1101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6451','NAD_1983_2011_StatePlane_Idaho_East_FIPS_1101_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6452','NAD_1983_2011_StatePlane_Idaho_West_FIPS_1103','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6453','NAD_1983_2011_StatePlane_Idaho_West_FIPS_1103_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6454','NAD_1983_2011_StatePlane_Illinois_East_FIPS_1201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6455','NAD_1983_2011_StatePlane_Illinois_East_FIPS_1201_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6456','NAD_1983_2011_StatePlane_Illinois_West_FIPS_1202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6457','NAD_1983_2011_StatePlane_Illinois_West_FIPS_1202_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6458','NAD_1983_2011_StatePlane_Indiana_East_FIPS_1301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6459','NAD_1983_2011_StatePlane_Indiana_East_FIPS_1301_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6460','NAD_1983_2011_StatePlane_Indiana_West_FIPS_1302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6461','NAD_1983_2011_StatePlane_Indiana_West_FIPS_1302_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6462','NAD_1983_2011_StatePlane_Iowa_North_FIPS_1401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6463','NAD_1983_2011_StatePlane_Iowa_North_FIPS_1401_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6464','NAD_1983_2011_StatePlane_Iowa_South_FIPS_1402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6465','NAD_1983_2011_StatePlane_Iowa_South_FIPS_1402_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6466','NAD_1983_2011_StatePlane_Kansas_North_FIPS_1501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6467','NAD_1983_2011_StatePlane_Kansas_North_FIPS_1501_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6468','NAD_1983_2011_StatePlane_Kansas_South_FIPS_1502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6469','NAD_1983_2011_StatePlane_Kansas_South_FIPS_1502_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6470','NAD_1983_2011_StatePlane_Kentucky_North_FIPS_1601','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6471','NAD_1983_2011_StatePlane_Kentucky_North_FIPS_1601_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6472','NAD_1983_2011_StatePlane_Kentucky_FIPS_1600','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6473','NAD_1983_2011_StatePlane_Kentucky_FIPS_1600_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6474','NAD_1983_2011_StatePlane_Kentucky_South_FIPS_1602','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6475','NAD_1983_2011_StatePlane_Kentucky_South_FIPS_1602_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6476','NAD_1983_2011_StatePlane_Louisiana_North_FIPS_1701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6477','NAD_1983_2011_StatePlane_Louisiana_North_FIPS_1701_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6478','NAD_1983_2011_StatePlane_Louisiana_South_FIPS_1702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6479','NAD_1983_2011_StatePlane_Louisiana_South_FIPS_1702_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6480','NAD_1983_2011_Maine_2000_Central_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6481','NAD_1983_2011_Maine_2000_East_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6482','NAD_1983_2011_Maine_2000_West_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6483','NAD_1983_2011_StatePlane_Maine_East_FIPS_1801','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6484','NAD_1983_2011_StatePlane_Maine_East_FIPS_1801_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6485','NAD_1983_2011_StatePlane_Maine_West_FIPS_1802','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6486','NAD_1983_2011_StatePlane_Maine_West_FIPS_1802_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6487','NAD_1983_2011_StatePlane_Maryland_FIPS_1900','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6488','NAD_1983_2011_StatePlane_Maryland_FIPS_1900_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6489','NAD_1983_2011_StatePlane_Massachusetts_Island_FIPS_2002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6490','NAD_1983_2011_StatePlane_Massachusetts_Isl_FIPS_2002_FtUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6491','NAD_1983_2011_StatePlane_Massachusetts_Mainland_FIPS_2001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6492','NAD_1983_2011_StatePlane_Massachusetts_Mnld_FIPS_2001_FtUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6493','NAD_1983_2011_StatePlane_Michigan_Central_FIPS_2112','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6494','NAD_1983_2011_StatePlane_Michigan_Central_FIPS_2112_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6495','NAD_1983_2011_StatePlane_Michigan_North_FIPS_2111','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6496','NAD_1983_2011_StatePlane_Michigan_North_FIPS_2111_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6497','NAD_1983_2011_Michigan_GeoRef_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6498','NAD_1983_2011_StatePlane_Michigan_South_FIPS_2113','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6499','NAD_1983_2011_StatePlane_Michigan_South_FIPS_2113_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6500','NAD_1983_2011_StatePlane_Minnesota_Central_FIPS_2202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6501','NAD_1983_2011_StatePlane_Minnesota_Central_FIPS_2202_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6502','NAD_1983_2011_StatePlane_Minnesota_North_FIPS_2201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6503','NAD_1983_2011_StatePlane_Minnesota_North_FIPS_2201_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6504','NAD_1983_2011_StatePlane_Minnesota_South_FIPS_2203','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6505','NAD_1983_2011_StatePlane_Minnesota_South_FIPS_2203_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6506','NAD_1983_2011_StatePlane_Mississippi_East_FIPS_2301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6507','NAD_1983_2011_StatePlane_Mississippi_East_FIPS_2301_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6508','NAD_1983_2011_Mississippi_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6509','NAD_1983_2011_StatePlane_Mississippi_West_FIPS_2302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6510','NAD_1983_2011_StatePlane_Mississippi_West_FIPS_2302_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6511','NAD_1983_2011_StatePlane_Missouri_Central_FIPS_2402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6512','NAD_1983_2011_StatePlane_Missouri_East_FIPS_2401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6513','NAD_1983_2011_StatePlane_Missouri_West_FIPS_2403','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6514','NAD_1983_2011_StatePlane_Montana_FIPS_2500','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6515','NAD_1983_2011_StatePlane_Montana_FIPS_2500_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6516','NAD_1983_2011_StatePlane_Nebraska_FIPS_2600','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6518','NAD_1983_2011_StatePlane_Nevada_Central_FIPS_2702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6519','NAD_1983_2011_StatePlane_Nevada_Central_FIPS_2702_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6520','NAD_1983_2011_StatePlane_Nevada_East_FIPS_2701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6521','NAD_1983_2011_StatePlane_Nevada_East_FIPS_2701_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6522','NAD_1983_2011_StatePlane_Nevada_West_FIPS_2703','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6523','NAD_1983_2011_StatePlane_Nevada_West_FIPS_2703_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6524','NAD_1983_2011_StatePlane_New_Hampshire_FIPS_2800','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6525','NAD_1983_2011_StatePlane_New_Hampshire_FIPS_2800_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6526','NAD_1983_2011_StatePlane_New_Jersey_FIPS_2900','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6527','NAD_1983_2011_StatePlane_New_Jersey_FIPS_2900_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6528','NAD_1983_2011_StatePlane_New_Mexico_Central_FIPS_3002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6529','NAD_1983_2011_StatePlane_New_Mexico_Central_FIPS_3002_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6530','NAD_1983_2011_StatePlane_New_Mexico_East_FIPS_3001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6531','NAD_1983_2011_StatePlane_New_Mexico_East_FIPS_3001_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6532','NAD_1983_2011_StatePlane_New_Mexico_West_FIPS_3003','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6533','NAD_1983_2011_StatePlane_New_Mexico_West_FIPS_3003_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6534','NAD_1983_2011_StatePlane_New_York_Central_FIPS_3102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6535','NAD_1983_2011_StatePlane_New_York_Central_FIPS_3102_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6536','NAD_1983_2011_StatePlane_New_York_East_FIPS_3101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6537','NAD_1983_2011_StatePlane_New_York_East_FIPS_3101_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6538','NAD_1983_2011_StatePlane_New_York_Long_Island_FIPS_3104','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6539','NAD_1983_2011_StatePlane_New_York_Long_Isl_FIPS_3104_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6540','NAD_1983_2011_StatePlane_New_York_West_FIPS_3103','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6541','NAD_1983_2011_StatePlane_New_York_West_FIPS_3103_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6542','NAD_1983_2011_StatePlane_North_Carolina_FIPS_3200','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6543','NAD_1983_2011_StatePlane_North_Carolina_FIPS_3200_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6544','NAD_1983_2011_StatePlane_North_Dakota_North_FIPS_3301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6545','NAD_1983_2011_StatePlane_North_Dakota_North_FIPS_3301_FtI','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6546','NAD_1983_2011_StatePlane_North_Dakota_South_FIPS_3302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6547','NAD_1983_2011_StatePlane_North_Dakota_South_FIPS_3302_FtI','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6548','NAD_1983_2011_StatePlane_Ohio_North_FIPS_3401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6549','NAD_1983_2011_StatePlane_Ohio_North_FIPS_3401_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6550','NAD_1983_2011_StatePlane_Ohio_South_FIPS_3402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6551','NAD_1983_2011_StatePlane_Ohio_South_FIPS_3402_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6552','NAD_1983_2011_StatePlane_Oklahoma_North_FIPS_3501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6553','NAD_1983_2011_StatePlane_Oklahoma_North_FIPS_3501_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6554','NAD_1983_2011_StatePlane_Oklahoma_South_FIPS_3502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6555','NAD_1983_2011_StatePlane_Oklahoma_South_FIPS_3502_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6556','NAD_1983_2011_Oregon_Statewide_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6557','NAD_1983_2011_Oregon_Statewide_Lambert_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6558','NAD_1983_2011_StatePlane_Oregon_North_FIPS_3601','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6559','NAD_1983_2011_StatePlane_Oregon_North_FIPS_3601_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6560','NAD_1983_2011_StatePlane_Oregon_South_FIPS_3602','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6561','NAD_1983_2011_StatePlane_Oregon_South_FIPS_3602_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6562','NAD_1983_2011_StatePlane_Pennsylvania_North_FIPS_3701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6563','NAD_1983_2011_StatePlane_Pennsylvania_North_FIPS_3701_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6564','NAD_1983_2011_StatePlane_Pennsylvania_South_FIPS_3702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6565','NAD_1983_2011_StatePlane_Pennsylvania_South_FIPS_3702_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6566','NAD_1983_2011_StatePlane_Puerto_Rico_Virgin_Isls_FIPS_5200','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6567','NAD_1983_2011_StatePlane_Rhode_Island_FIPS_3800','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6568','NAD_1983_2011_StatePlane_Rhode_Island_FIPS_3800_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6569','NAD_1983_2011_StatePlane_South_Carolina_FIPS_3900','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6570','NAD_1983_2011_StatePlane_South_Carolina_FIPS_3900_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6571','NAD_1983_2011_StatePlane_South_Dakota_North_FIPS_4001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6572','NAD_1983_2011_StatePlane_South_Dakota_North_FIPS_4001_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6573','NAD_1983_2011_StatePlane_South_Dakota_South_FIPS_4002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6574','NAD_1983_2011_StatePlane_South_Dakota_South_FIPS_4002_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6575','NAD_1983_2011_StatePlane_Tennessee_FIPS_4100','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6576','NAD_1983_2011_StatePlane_Tennessee_FIPS_4100_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6577','NAD_1983_2011_StatePlane_Texas_Central_FIPS_4203','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6578','NAD_1983_2011_StatePlane_Texas_Central_FIPS_4203_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6579','NAD_1983_2011_Texas_Centric_Mapping_System_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6580','NAD_1983_2011_Texas_Centric_Mapping_System_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6581','NAD_1983_2011_StatePlane_Texas_North_FIPS_4201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6582','NAD_1983_2011_StatePlane_Texas_North_FIPS_4201_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6583','NAD_1983_2011_StatePlane_Texas_North_Central_FIPS_4202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6584','NAD_1983_2011_StatePlane_Texas_North_Central_FIPS_4202_FtUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6585','NAD_1983_2011_StatePlane_Texas_South_FIPS_4205','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6586','NAD_1983_2011_StatePlane_Texas_South_FIPS_4205_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6587','NAD_1983_2011_StatePlane_Texas_South_Central_FIPS_4204','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6588','NAD_1983_2011_StatePlane_Texas_South_Central_FIPS_4204_FtUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6589','NAD_1983_2011_StatePlane_Vermont_FIPS_4400','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6590','NAD_1983_2011_StatePlane_Vermont_FIPS_4400_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6591','NAD_1983_2011_Virginia_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6592','NAD_1983_2011_StatePlane_Virginia_North_FIPS_4501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6593','NAD_1983_2011_StatePlane_Virginia_North_FIPS_4501_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6594','NAD_1983_2011_StatePlane_Virginia_South_FIPS_4502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6595','NAD_1983_2011_StatePlane_Virginia_South_FIPS_4502_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6596','NAD_1983_2011_StatePlane_Washington_North_FIPS_4601','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6597','NAD_1983_2011_StatePlane_Washington_North_FIPS_4601_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6598','NAD_1983_2011_StatePlane_Washington_South_FIPS_4602','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6599','NAD_1983_2011_StatePlane_Washington_South_FIPS_4602_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6600','NAD_1983_2011_StatePlane_West_Virginia_North_FIPS_4701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6601','NAD_1983_2011_StatePlane_West_Virginia_North_FIPS_4701_FtUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6602','NAD_1983_2011_StatePlane_West_Virginia_South_FIPS_4702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6603','NAD_1983_2011_StatePlane_West_Virginia_South_FIPS_4702_FtUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6605','NAD_1983_2011_StatePlane_Wisconsin_Central_FIPS_4802_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6606','NAD_1983_2011_StatePlane_Wisconsin_North_FIPS_4801','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6607','NAD_1983_2011_StatePlane_Wisconsin_North_FIPS_4801_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6608','NAD_1983_2011_StatePlane_Wisconsin_South_FIPS_4803','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6609','NAD_1983_2011_StatePlane_Wisconsin_South_FIPS_4803_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6610','NAD_1983_2011_Wisconsin_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6611','NAD_1983_2011_StatePlane_Wyoming_East_FIPS_4901','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6612','NAD_1983_2011_StatePlane_Wyoming_East_FIPS_4901_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6613','NAD_1983_2011_StatePlane_Wyoming_East_Central_FIPS_4902','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6614','NAD_1983_2011_StatePlane_Wyoming_E_Central_FIPS_4902_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6615','NAD_1983_2011_StatePlane_Wyoming_West_FIPS_4904','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6616','NAD_1983_2011_StatePlane_Wyoming_West_FIPS_4904_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6617','NAD_1983_2011_StatePlane_Wyoming_West_Central_FIPS_4903','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6618','NAD_1983_2011_StatePlane_Wyoming_W_Central_FIPS_4903_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6619','NAD_1983_2011_StatePlane_Utah_Central_FIPS_4302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6620','NAD_1983_2011_StatePlane_Utah_North_FIPS_4301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6621','NAD_1983_2011_StatePlane_Utah_South_FIPS_4303','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6622','NAD_1983_CSRS_Quebec_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6623','NAD_1983_Quebec_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6624','NAD_1983_CSRS_Quebec_Albers','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6625','NAD_1983_2011_StatePlane_Utah_Central_FIPS_4302_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6626','NAD_1983_2011_StatePlane_Utah_North_FIPS_4301_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6627','NAD_1983_2011_StatePlane_Utah_South_FIPS_4303_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6628','NAD_1983_PA11_StatePlane_Hawaii_1_FIPS_5101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6629','NAD_1983_PA11_StatePlane_Hawaii_2_FIPS_5102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6630','NAD_1983_PA11_StatePlane_Hawaii_3_FIPS_5103','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6631','NAD_1983_PA11_StatePlane_Hawaii_4_FIPS_5104','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6632','NAD_1983_PA11_StatePlane_Hawaii_5_FIPS_5105','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6633','NAD_1983_PA11_StatePlane_Hawaii_3_FIPS_5103_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6634','NAD_1983_PA11_UTM_Zone_4N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6635','NAD_1983_PA11_UTM_Zone_5N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6636','NAD_1983_PA11_UTM_Zone_2S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6637','NAD_1983_MA11_Guam_Map_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6646','Karbala_1979_Iraq_National_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6669','JGD_2011_Japan_Zone_1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6670','JGD_2011_Japan_Zone_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6671','JGD_2011_Japan_Zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6672','JGD_2011_Japan_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6673','JGD_2011_Japan_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6674','JGD_2011_Japan_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6675','JGD_2011_Japan_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6676','JGD_2011_Japan_Zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6677','JGD_2011_Japan_Zone_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6678','JGD_2011_Japan_Zone_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6679','JGD_2011_Japan_Zone_11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6680','JGD_2011_Japan_Zone_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6681','JGD_2011_Japan_Zone_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6682','JGD_2011_Japan_Zone_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6683','JGD_2011_Japan_Zone_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6684','JGD_2011_Japan_Zone_16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6685','JGD_2011_Japan_Zone_17','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6686','JGD_2011_Japan_Zone_18','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6687','JGD_2011_Japan_Zone_19','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6688','JGD_2011_UTM_Zone_51N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6689','JGD_2011_UTM_Zone_52N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6690','JGD_2011_UTM_Zone_53N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6691','JGD_2011_UTM_Zone_54N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6692','JGD_2011_UTM_Zone_55N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6703','WGS_1984_TM_60_SW','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6707','RDN2008_TM32','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6708','RDN2008_TM33','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6709','RDN2008_TM34','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6720','WGS_1984_CIG92','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6721','GDA_1994_CIG94','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6722','WGS_1984_CKIG92','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6723','GDA_1994_CKIG94','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6732','GDA_1994_MGA_zone_41','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6733','GDA_1994_MGA_zone_42','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6734','GDA_1994_MGA_zone_43','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6735','GDA_1994_MGA_zone_44','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6736','GDA_1994_MGA_Zone_46','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6737','GDA_1994_MGA_Zone_47','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6738','GDA_1994_MGA_Zone_59','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6784','OCRS_Baker_NAD_1983_CORS96_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6785','OCRS_Baker_NAD_1983_CORS96_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6786','OCRS_Baker_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6787','OCRS_Baker_NAD_1983_2011_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6788','OCRS_Bend-Klamath_Falls_NAD_1983_CORS96_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6789','OCRS_Bend-Klamath_Falls_NAD_1983_CORS96_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6790','OCRS_Bend-Klamath_Falls_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6791','OCRS_Bend-Klamath_Falls_NAD_1983_2011_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6792','OCRS_Bend-Redmond-Prineville_NAD_1983_CORS96_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6793','OCRS_Bend-Redmond-Prineville_NAD_1983_CORS96_LCC_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6794','OCRS_Bend-Redmond-Prineville_NAD_1983_2011_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6795','OCRS_Bend-Redmond-Prineville_NAD_1983_2011_LCC_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6796','OCRS_Bend-Burns_NAD_1983_CORS96_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6797','OCRS_Bend-Burns_NAD_1983_CORS96_LCC_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6798','OCRS_Bend-Burns_NAD_1983_2011_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6799','OCRS_Bend-Burns_NAD_1983_2011_LCC_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6800','OCRS_Canyonville-Grants_Pass_NAD_1983_CORS96_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6801','OCRS_Canyonville-Grants_Pass_NAD_1983_CORS96_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6802','OCRS_Canyonville-Grants_Pass_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6803','OCRS_Canyonville-Grants_Pass_NAD_1983_2011_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6804','OCRS_Columbia_River_East_NAD_1983_CORS96_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6805','OCRS_Columbia_River_East_NAD_1983_CORS96_LCC_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6806','OCRS_Columbia_River_East_NAD_1983_2011_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6807','OCRS_Columbia_River_East_NAD_1983_2011_LCC_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6808','OCRS_Columbia_River_West_NAD_1983_CORS96_OM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6809','OCRS_Columbia_River_West_NAD_1983_CORS96_OM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6810','OCRS_Columbia_River_West_NAD_1983_2011_OM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6811','OCRS_Columbia_River_West_NAD_1983_2011_OM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6812','OCRS_Cottage_Grove-Canyonville_NAD_1983_CORS96_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6813','OCRS_Cottage_Grove-Canyonville_NAD_1983_CORS96_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6814','OCRS_Cottage_Grove-Canyonville_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6815','OCRS_Cottage_Grove-Canyonville_NAD_1983_2011_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6816','OCRS_Dufur-Madras_NAD_1983_CORS96_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6817','OCRS_Dufur-Madras_NAD_1983_CORS96_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6818','OCRS_Dufur-Madras_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6819','OCRS_Dufur-Madras_NAD_1983_2011_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6820','OCRS_Eugene_NAD_1983_CORS96_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6821','OCRS_Eugene_NAD_1983_CORS96_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6822','OCRS_Eugene_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6823','OCRS_Eugene_NAD_1983_2011_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6824','OCRS_Grants_Pass-Ashland_NAD_1983_CORS96_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6825','OCRS_Grants_Pass-Ashland_NAD_1983_CORS96_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6826','OCRS_Grants_Pass-Ashland_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6827','OCRS_Grants_Pass-Ashland_NAD_1983_2011_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6828','OCRS_Gresham-Warm_Springs_NAD_1983_CORS96_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6829','OCRS_Gresham-Warm_Springs_NAD_1983_CORS96_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6830','OCRS_Gresham-Warm_Springs_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6831','OCRS_Gresham-Warm_Springs_NAD_1983_2011_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6832','OCRS_La_Grande_NAD_1983_CORS96_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6833','OCRS_La_Grande_NAD_1983_CORS96_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6834','OCRS_La_Grande_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6835','OCRS_La_Grande_NAD_1983_2011_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6836','OCRS_Ontario_NAD_1983_CORS96_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6837','OCRS_Ontario_NAD_1983_CORS96_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6838','OCRS_Ontario_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6839','OCRS_Ontario_NAD_1983_2011_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6840','OCRS_Oregon_Coast_NAD_1983_CORS96_OM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6841','OCRS_Oregon_Coast_NAD_1983_CORS96_OM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6842','OCRS_Oregon_Coast_NAD_1983_2011_OM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6843','OCRS_Oregon_Coast_NAD_1983_2011_OM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6844','OCRS_Pendleton_NAD_1983_CORS96_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6845','OCRS_Pendleton_NAD_1983_CORS96_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6846','OCRS_Pendleton_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6847','OCRS_Pendleton_NAD_1983_2011_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6848','OCRS_Pendleton-La_Grande_NAD_1983_CORS96_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6849','OCRS_Pendleton-La_Grande_NAD_1983_CORS96_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6850','OCRS_Pendleton-La_Grande_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6851','OCRS_Pendleton-La_Grande_NAD_1983_2011_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6852','OCRS_Portland_NAD_1983_CORS96_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6853','OCRS_Portland_NAD_1983_CORS96_LCC_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6854','OCRS_Portland_NAD_1983_2011_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6855','OCRS_Portland_NAD_1983_2011_LCC_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6856','OCRS_Salem_NAD_1983_CORS96_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6857','OCRS_Salem_NAD_1983_CORS96_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6858','OCRS_Salem_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6859','OCRS_Salem_NAD_1983_2011_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6860','OCRS_Santiam_Pass_NAD_1983_CORS96_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6861','OCRS_Santiam_Pass_NAD_1983_CORS96_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6862','OCRS_Santiam_Pass_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6863','OCRS_Santiam_Pass_NAD_1983_2011_TM_Feet_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6867','NAD_1983_CORS96_Oregon_Statewide_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6868','NAD_1983_CORS96_Oregon_Statewide_Lambert_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6870','ETRS_1989_Albania_2010','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6875','RDN2008_Italy_zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6876','RDN2008_Zone_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6879','NAD_1983_2011_StatePlane_Wisconsin_Central_FIPS_4802','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6880','NAD_1983_2011_StatePlane_Nebraska_FIPS_2600_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6884','NAD_1983_CORS96_StatePlane_Oregon_North_FIPS_3601','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6885','NAD_1983_CORS96_StatePlane_Oregon_North_FIPS_3601_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6886','NAD_1983_CORS96_StatePlane_Oregon_South_FIPS_3602','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6887','NAD_1983_CORS96_StatePlane_Oregon_South_FIPS_3602_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6915','South_East_Island_1943_UTM_Zone_40N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6922','NAD_1983_Kansas_LCC','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6923','NAD_1983_Kansas_LCC_ftUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6924','NAD_1983_2011_Kansas_LCC','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6925','NAD_1983_2011_Kansas_LCC_ftUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6931','WGS_1984_EASE-Grid_2.0_North','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6932','WGS_1984_EASE-Grid_2.0_South','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6933','WGS_1984_EASE-Grid_2.0_Global','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6956','VN_2000_TM-3_zone_481','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6957','VN_2000_TM-3_zone_482','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6958','VN_2000_TM-3_zone_491','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6959','VN_2000_TM-3_Da_Nang_zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6962','ETRS_1989_Albania_LCC_2010','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6984','Israeli_Grid_05','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','6991','Israeli_Grid_05-12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7005','Nahrwan_1934_UTM_zone_37N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7006','Nahrwan_1934_UTM_zone_38N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7007','Nahrwan_1934_UTM_zone_39N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7057','NAD_1983_(2011)_IaRCS_zone_1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7058','NAD_1983_(2011)_IaRCS_zone_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7059','NAD_1983_(2011)_IaRCS_zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7060','NAD_1983_(2011)_IaRCS_zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7061','NAD_1983_(2011)_IaRCS_zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7062','NAD_1983_(2011)_IaRCS_zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7063','NAD_1983_(2011)_IaRCS_zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7064','NAD_1983_(2011)_IaRCS_zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7065','NAD_1983_(2011)_IaRCS_zone_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7066','NAD_1983_(2011)_IaRCS_zone_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7067','NAD_1983_(2011)_IaRCS_zone_11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7068','NAD_1983_(2011)_IaRCS_zone_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7069','NAD_1983_(2011)_IaRCS_zone_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7070','NAD_1983_(2011)_IaRCS_zone_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7074','RGTAAF07_UTM_zone_37S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7075','RGTAAF07_UTM_zone_38S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7076','RGTAAF07_UTM_zone_39S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7077','RGTAAF07_UTM_zone_40S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7078','RGTAAF07_UTM_zone_41S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7079','RGTAAF07_UTM_zone_42S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7080','RGTAAF07_UTM_zone_43S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7081','RGTAAF07_UTM_zone_44S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7082','RGTAAF07_Terre_Adelie_Polar_Stereographic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7109','NAD_1983_2011_RMTCRS_St_Mary_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7110','NAD_1983_2011_RMTCRS_Blackfeet_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7111','NAD_1983_2011_RMTCRS_Milk_River_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7112','NAD_1983_2011_RMTCRS_Fort_Belknap_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7113','NAD_1983_2011_RMTCRS_Fort_Peck_Assiniboine_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7114','NAD_1983_2011_RMTCRS_Fort_Peck_Sioux_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7115','NAD_1983_2011_RMTCRS_Crow_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7116','NAD_1983_2011_RMTCRS_Bobcat_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7117','NAD_1983_2011_RMTCRS_Billings_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7118','NAD_1983_2011_RMTCRS_Wind_River_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7119','NAD_1983_2011_RMTCRS_St_Mary_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7120','NAD_1983_2011_RMTCRS_Blackfeet_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7121','NAD_1983_2011_RMTCRS_Milk_River_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7122','NAD_1983_2011_RMTCRS_Fort_Belknap_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7123','NAD_1983_2011_RMTCRS_Fort_Peck_Assiniboine_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7124','NAD_1983_2011_RMTCRS_Fort_Peck_Sioux_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7125','NAD_1983_2011_RMTCRS_Crow_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7126','NAD_1983_2011_RMTCRS_Bobcat_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7127','NAD_1983_2011_RMTCRS_Billings_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7128','NAD_1983_2011_RMTCRS_Wind_River_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7131','NAD_1983_2011_San_Francisco_CS13_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7132','NAD_1983_2011_San_Francisco_CS13_ftUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7142','Palestine_1923_Palestine_Grid_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7257','NAD_1983_2011_InGCS_Adams_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7258','NAD_1983_2011_InGCS_Adams_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7259','NAD_1983_2011_InGCS_Allen_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7260','NAD_1983_2011_InGCS_Allen_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7261','NAD_1983_2011_InGCS_Bartholomew_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7262','NAD_1983_2011_InGCS_Bartholomew_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7263','NAD_1983_2011_InGCS_Benton_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7264','NAD_1983_2011_InGCS_Benton_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7265','NAD_1983_2011_InGCS_Blackford-Delaware_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7266','NAD_1983_2011_InGCS_Blackford-Delaware_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7267','NAD_1983_2011_InGCS_Boone-Hendricks_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7268','NAD_1983_2011_InGCS_Boone-Hendricks_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7269','NAD_1983_2011_InGCS_Brown_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7270','NAD_1983_2011_InGCS_Brown_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7271','NAD_1983_2011_InGCS_Carroll_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7272','NAD_1983_2011_InGCS_Carroll_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7273','NAD_1983_2011_InGCS_Cass_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7274','NAD_1983_2011_InGCS_Cass_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7275','NAD_1983_2011_InGCS_Clark-Floyd-Scott_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7276','NAD_1983_2011_InGCS_Clark-Floyd-Scott_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7277','NAD_1983_2011_InGCS_Clay_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7278','NAD_1983_2011_InGCS_Clay_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7279','NAD_1983_2011_InGCS_Clinton_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7280','NAD_1983_2011_InGCS_Clinton_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7281','NAD_1983_2011_InGCS_Crawford-Lawrence-Orange_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7282','NAD_1983_2011_InGCS_Crawford-Lawrence-Orange_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7283','NAD_1983_2011_InGCS_Daviess-Greene_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7284','NAD_1983_2011_InGCS_Daviess-Greene_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7285','NAD_1983_2011_InGCS_Dearborn-Ohio-Switzerland_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7286','NAD_1983_2011_InGCS_Dearborn-Ohio-Switzerland_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7287','NAD_1983_2011_InGCS_Decatur-Rush_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7288','NAD_1983_2011_InGCS_Decatur-Rush_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7289','NAD_1983_2011_InGCS_DeKalb_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7290','NAD_1983_2011_InGCS_DeKalb_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7291','NAD_1983_2011_InGCS_Dubois-Martin_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7292','NAD_1983_2011_InGCS_Dubois-Martin_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7293','NAD_1983_2011_InGCS_Elkhart-Kosciusko-Wabash_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7294','NAD_1983_2011_InGCS_Elkhart-Kosciusko-Wabash_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7295','NAD_1983_2011_InGCS_Fayette-Franklin-Union_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7296','NAD_1983_2011_InGCS_Fayette-Franklin-Union_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7297','NAD_1983_2011_InGCS_Fountain-Warren_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7298','NAD_1983_2011_InGCS_Fountain-Warren_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7299','NAD_1983_2011_InGCS_Fulton-Marshall-St_Joseph_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7300','NAD_1983_2011_InGCS_Fulton-Marshall-St_Joseph_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7301','NAD_1983_2011_InGCS_Gibson_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7302','NAD_1983_2011_InGCS_Gibson_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7303','NAD_1983_2011_InGCS_Grant_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7304','NAD_1983_2011_InGCS_Grant_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7305','NAD_1983_2011_InGCS_Hamilton-Tipton_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7306','NAD_1983_2011_InGCS_Hamilton-Tipton_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7307','NAD_1983_2011_InGCS_Hancock-Madison_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7308','NAD_1983_2011_InGCS_Hancock-Madison_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7309','NAD_1983_2011_InGCS_Harrison-Washington_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7310','NAD_1983_2011_InGCS_Harrison-Washington_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7311','NAD_1983_2011_InGCS_Henry_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7312','NAD_1983_2011_InGCS_Henry_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7313','NAD_1983_2011_InGCS_Howard-Miami_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7314','NAD_1983_2011_InGCS_Howard-Miami_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7315','NAD_1983_2011_InGCS_Huntington-Whitley_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7316','NAD_1983_2011_InGCS_Huntington-Whitley_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7317','NAD_1983_2011_InGCS_Jackson_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7318','NAD_1983_2011_InGCS_Jackson_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7319','NAD_1983_2011_InGCS_Jasper-Porter_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7320','NAD_1983_2011_InGCS_Jasper-Porter_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7321','NAD_1983_2011_InGCS_Jay_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7322','NAD_1983_2011_InGCS_Jay_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7323','NAD_1983_2011_InGCS_Jefferson_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7324','NAD_1983_2011_InGCS_Jefferson_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7325','NAD_1983_2011_InGCS_Jennings_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7326','NAD_1983_2011_InGCS_Jennings_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7327','NAD_1983_2011_InGCS_Johnson-Marion_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7328','NAD_1983_2011_InGCS_Johnson-Marion_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7329','NAD_1983_2011_InGCS_Knox_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7330','NAD_1983_2011_InGCS_Knox_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7331','NAD_1983_2011_InGCS_LaGrange-Noble_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7332','NAD_1983_2011_InGCS_LaGrange-Noble_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7333','NAD_1983_2011_InGCS_Lake-Newton_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7334','NAD_1983_2011_InGCS_Lake-Newton_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7335','NAD_1983_2011_InGCS_LaPorte-Pulaski-Starke_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7336','NAD_1983_2011_InGCS_LaPorte-Pulaski-Starke_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7337','NAD_1983_2011_InGCS_Monroe-Morgan_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7338','NAD_1983_2011_InGCS_Monroe-Morgan_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7339','NAD_1983_2011_InGCS_Montgomery-Putnam_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7340','NAD_1983_2011_InGCS_Montgomery-Putnam_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7341','NAD_1983_2011_InGCS_Owen_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7342','NAD_1983_2011_InGCS_Owen_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7343','NAD_1983_2011_InGCS_Parke-Vermillion_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7344','NAD_1983_2011_InGCS_Parke-Vermillion_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7345','NAD_1983_2011_InGCS_Perry_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7346','NAD_1983_2011_InGCS_Perry_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7347','NAD_1983_2011_InGCS_Pike-Warrick_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7348','NAD_1983_2011_InGCS_Pike-Warrick_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7349','NAD_1983_2011_InGCS_Posey_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7350','NAD_1983_2011_InGCS_Posey_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7351','NAD_1983_2011_InGCS_Randolph-Wayne_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7352','NAD_1983_2011_InGCS_Randolph-Wayne_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7353','NAD_1983_2011_InGCS_Ripley_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7354','NAD_1983_2011_InGCS_Ripley_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7355','NAD_1983_2011_InGCS_Shelby_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7356','NAD_1983_2011_InGCS_Shelby_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7357','NAD_1983_2011_InGCS_Spencer_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7358','NAD_1983_2011_InGCS_Spencer_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7359','NAD_1983_2011_InGCS_Steuben_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7360','NAD_1983_2011_InGCS_Steuben_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7361','NAD_1983_2011_InGCS_Sullivan_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7362','NAD_1983_2011_InGCS_Sullivan_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7363','NAD_1983_2011_InGCS_Tippecanoe-White_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7364','NAD_1983_2011_InGCS_Tippecanoe-White_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7365','NAD_1983_2011_InGCS_Vanderburgh_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7366','NAD_1983_2011_InGCS_Vanderburgh_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7367','NAD_1983_2011_InGCS_Vigo_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7368','NAD_1983_2011_InGCS_Vigo_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7369','NAD_1983_2011_InGCS_Wells_(m)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7370','NAD_1983_2011_InGCS_Wells_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7374','ONGD14_UTM_Zone_39N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7375','ONGD14_UTM_Zone_40N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7376','ONGD14_UTM_Zone_41N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7528','NAD_1983_2011_WISCRS_Adams_and_Juneau_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7529','NAD_1983_2011_WISCRS_Ashland_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7530','NAD_1983_2011_WISCRS_Barron_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7531','NAD_1983_2011_WISCRS_Bayfield_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7532','NAD_1983_2011_WISCRS_Brown_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7533','NAD_1983_2011_WISCRS_Buffalo_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7534','NAD_1983_2011_WISCRS_Burnett_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7535','NAD_1983_2011_WISCRS_Calumet_Fond_du_Lac_Outagamie_Winnebago_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7536','NAD_1983_2011_WISCRS_Chippewa_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7537','NAD_1983_2011_WISCRS_Clark_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7538','NAD_1983_2011_WISCRS_Columbia_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7539','NAD_1983_2011_WISCRS_Crawford_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7540','NAD_1983_2011_WISCRS_Dane_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7541','NAD_1983_2011_WISCRS_Dodge_and_Jefferson_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7542','NAD_1983_2011_WISCRS_Door_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7543','NAD_1983_2011_WISCRS_Douglas_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7544','NAD_1983_2011_WISCRS_Dunn_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7545','NAD_1983_2011_WISCRS_EauClaire_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7546','NAD_1983_2011_WISCRS_Florence_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7547','NAD_1983_2011_WISCRS_Forest_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7548','NAD_1983_2011_WISCRS_Grant_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7549','NAD_1983_2011_WISCRS_Green_and_Lafayette_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7550','NAD_1983_2011_WISCRS_Green_Lake_and_Marquette_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7551','NAD_1983_2011_WISCRS_Iowa_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7552','NAD_1983_2011_WISCRS_Iron_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7553','NAD_1983_2011_WISCRS_Jackson_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7554','NAD_1983_2011_WISCRS_Kenosha_Milwaukee_Ozaukee_Racine_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7555','NAD_1983_2011_WISCRS_Kewaunee_Manitowoc_Sheboygan_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7556','NAD_1983_2011_WISCRS_La_Crosse_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7557','NAD_1983_2011_WISCRS_Langlade_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7558','NAD_1983_2011_WISCRS_Lincoln_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7559','NAD_1983_2011_WISCRS_Marathon_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7560','NAD_1983_2011_WISCRS_Marinette_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7561','NAD_1983_2011_WISCRS_Menominee_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7562','NAD_1983_2011_WISCRS_Monroe_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7563','NAD_1983_2011_WISCRS_Oconto_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7564','NAD_1983_2011_WISCRS_Oneida_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7565','NAD_1983_2011_WISCRS_Pepin_and_Pierce_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7566','NAD_1983_2011_WISCRS_Polk_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7567','NAD_1983_2011_WISCRS_Portage_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7568','NAD_1983_2011_WISCRS_Price_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7569','NAD_1983_2011_WISCRS_Richland_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7570','NAD_1983_2011_WISCRS_Rock_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7571','NAD_1983_2011_WISCRS_Rusk_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7572','NAD_1983_2011_WISCRS_Sauk_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7573','NAD_1983_2011_WISCRS_Sawyer_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7574','NAD_1983_2011_WISCRS_Shawano_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7575','NAD_1983_2011_WISCRS_St_Croix_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7576','NAD_1983_2011_WISCRS_Taylor_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7577','NAD_1983_2011_WISCRS_Trempealeau_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7578','NAD_1983_2011_WISCRS_Vernon_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7579','NAD_1983_2011_WISCRS_Vilas_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7580','NAD_1983_2011_WISCRS_Walworth_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7581','NAD_1983_2011_WISCRS_Washburn_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7582','NAD_1983_2011_WISCRS_Washington_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7583','NAD_1983_2011_WISCRS_Waukesha_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7584','NAD_1983_2011_WISCRS_Waupaca_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7585','NAD_1983_2011_WISCRS_Waushara_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7586','NAD_1983_2011_WISCRS_Wood_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7587','NAD_1983_2011_WISCRS_Adams_and_Juneau_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7588','NAD_1983_2011_WISCRS_Ashland_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7589','NAD_1983_2011_WISCRS_Barron_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7590','NAD_1983_2011_WISCRS_Bayfield_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7591','NAD_1983_2011_WISCRS_Brown_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7592','NAD_1983_2011_WISCRS_Buffalo_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7593','NAD_1983_2011_WISCRS_Burnett_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7594','NAD_1983_2011_WISCRS_Calumet_Fond_du_Lac_Outagamie_Winnebago_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7595','NAD_1983_2011_WISCRS_Chippewa_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7596','NAD_1983_2011_WISCRS_Clark_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7597','NAD_1983_2011_WISCRS_Columbia_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7598','NAD_1983_2011_WISCRS_Crawford_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7599','NAD_1983_2011_WISCRS_Dane_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7600','NAD_1983_2011_WISCRS_Dodge_and_Jefferson_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7601','NAD_1983_2011_WISCRS_Door_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7602','NAD_1983_2011_WISCRS_Douglas_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7603','NAD_1983_2011_WISCRS_Dunn_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7604','NAD_1983_2011_WISCRS_Eau_Claire_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7605','NAD_1983_2011_WISCRS_Florence_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7606','NAD_1983_2011_WISCRS_Forest_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7607','NAD_1983_2011_WISCRS_Grant_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7608','NAD_1983_2011_WISCRS_Green_and_Lafayette_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7609','NAD_1983_2011_WISCRS_Green_Lake_and_Marquette_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7610','NAD_1983_2011_WISCRS_Iowa_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7611','NAD_1983_2011_WISCRS_Iron_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7612','NAD_1983_2011_WISCRS_Jackson_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7613','NAD_1983_2011_WISCRS_Kenosha_Milwaukee_Ozaukee_Racine_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7614','NAD_1983_2011_WISCRS_Kewaunee_Manitowoc_Sheboygan_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7615','NAD_1983_2011_WISCRS_La_Crosse_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7616','NAD_1983_2011_WISCRS_Langlade_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7617','NAD_1983_2011_WISCRS_Lincoln_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7618','NAD_1983_2011_WISCRS_Marathon_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7619','NAD_1983_2011_WISCRS_Marinette_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7620','NAD_1983_2011_WISCRS_Menominee_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7621','NAD_1983_2011_WISCRS_Monroe_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7622','NAD_1983_2011_WISCRS_Oconto_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7623','NAD_1983_2011_WISCRS_Oneida_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7624','NAD_1983_2011_WISCRS_Pepin_and_Pierce_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7625','NAD_1983_2011_WISCRS_Polk_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7626','NAD_1983_2011_WISCRS_Portage_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7627','NAD_1983_2011_WISCRS_Price_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7628','NAD_1983_2011_WISCRS_Richland_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7629','NAD_1983_2011_WISCRS_Rock_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7630','NAD_1983_2011_WISCRS_Rusk_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7631','NAD_1983_2011_WISCRS_Sauk_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7632','NAD_1983_2011_WISCRS_Sawyer_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7633','NAD_1983_2011_WISCRS_Shawano_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7634','NAD_1983_2011_WISCRS_St_Croix_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7635','NAD_1983_2011_WISCRS_Taylor_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7636','NAD_1983_2011_WISCRS_Trempealeau_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7637','NAD_1983_2011_WISCRS_Vernon_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7638','NAD_1983_2011_WISCRS_Vilas_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7639','NAD_1983_2011_WISCRS_Walworth_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7640','NAD_1983_2011_WISCRS_Washburn_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7641','NAD_1983_2011_WISCRS_Washington_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7642','NAD_1983_2011_WISCRS_Waukesha_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7643','NAD_1983_2011_WISCRS_Waupaca_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7644','NAD_1983_2011_WISCRS_Waushara_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7645','NAD_1983_2011_WISCRS_Wood_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7755','WGS_1984_India_NSF_LCC','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7756','WGS_1984_Andhra_Pradesh','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7757','WGS_1984_Arunachal_Pradesh','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7758','WGS_1984_Assam','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7759','WGS_1984_Bihar','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7760','WGS_1984_Delhi','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7761','WGS_1984_Gujarat','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7762','WGS_1984_Haryana','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7763','WGS_1984_Himachal_Pradesh','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7764','WGS_1984_Jammu_and_Kashmir','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7765','WGS_1984_Jharkhand','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7766','WGS_1984_Madhya_Pradesh','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7767','WGS_1984_Maharashtra','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7768','WGS_1984_Manipur','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7769','WGS_1984_Meghalaya','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7770','WGS_1984_Nagaland','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7771','WGS_1984_India_Northeast','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7772','WGS_1984_Orissa','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7773','WGS_1984_Punjab','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7774','WGS_1984_Rajasthan','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7775','WGS_1984_Uttar_Pradesh','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7776','WGS_1984_Uttaranchal','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7777','WGS_1984_Andaman_and_Nicobar_Islands','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7778','WGS_1984_Chhattisgarh','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7779','WGS_1984_Goa','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7780','WGS_1984_Karnataka','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7781','WGS_1984_Kerala','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7782','WGS_1984_Lakshadweep','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7783','WGS_1984_Mizoram','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7784','WGS_1984_Sikkim','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7785','WGS_1984_Tamil_Nadu','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7786','WGS_1984_Tripura','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7787','WGS_1984_West_Bengal','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7791','RDN2008_UTM_zone_32N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7792','RDN2008_UTM_zone_33N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7793','RDN2008_UTM_zone_34N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7794','RDN2008_Italy_zone_(E-N)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7795','RDN2008_Zone_12_(E-N)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7799','BGS2005_UTM_zone_34N_(N-E)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7800','BGS2005_UTM_zone_35N_(N-E)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7801','BGS2005_CCS2005','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7803','BGS2005_UTM_zone_34N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7804','BGS2005_UTM_zone_35N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7805','BGS2005_UTM_zone_36N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7825','Pulkovo_1942_CS63_zone_X1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7826','Pulkovo_1942_CS63_zone_X2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7827','Pulkovo_1942_CS63_zone_X3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7828','Pulkovo_1942_CS63_zone_X4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7829','Pulkovo_1942_CS63_zone_X5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7830','Pulkovo_1942_CS63_zone_X6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7831','Pulkovo_1942_CS63_zone_X7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7845','GDA2020_GA_LCC','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7846','GDA2020_MGA_Zone_46','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7847','GDA2020_MGA_Zone_47','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7848','GDA2020_MGA_Zone_48','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7849','GDA2020_MGA_Zone_49','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7850','GDA2020_MGA_Zone_50','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7851','GDA2020_MGA_Zone_51','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7852','GDA2020_MGA_Zone_52','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7853','GDA2020_MGA_Zone_53','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7854','GDA2020_MGA_Zone_54','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7855','GDA2020_MGA_Zone_55','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7856','GDA2020_MGA_Zone_56','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7857','GDA2020_MGA_Zone_57','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7858','GDA2020_MGA_Zone_58','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7859','GDA2020_MGA_Zone_59','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7877','Astro_DOS_71_4_SHLG71','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7878','Astro_DOS_71_4_UTM_zone_30S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7882','St_Helena_Tritan_SHLG(Tritan)','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7883','St_Helena_Tritan_UTM_zone_30S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7899','GDA2020_Vicgrid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7991','NAD27_MTM_zone_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','7992','Malongo_1987_UTM_zone_33S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8013','GDA2020_ALB2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8014','GDA2020_BIO2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8015','GDA2020_BRO2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8016','GDA2020_BCG2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8017','GDA2020_CARN2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8018','GDA2020_CIG2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8019','GDA2020_CKIG2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8020','GDA2020_COL2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8021','GDA2020_ESP2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8022','GDA2020_EXM2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8023','GDA2020_GCG2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8024','GDA2020_GOLD2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8025','GDA2020_JCG2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8026','GDA2020_KALB2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8027','GDA2020_KAR2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8028','GDA2020_KUN2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8029','GDA2020_LCG2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8030','GDA2020_MRCG2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8031','GDA2020_PCG2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8032','GDA2020_PHG2020','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8058','GDA2020_NSW_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8059','GDA2020_South_Australia_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8311','OCRS_Burns-Harper_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8312','OCRS_Burns-Harper_NAD_1983_2011_TM_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8313','OCRS_Canyon_City-Burns_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8314','OCRS_Canyon_City-Burns_NAD_1983_2011_TM_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8315','OCRS_Coast_Range_North_NAD_1983_2011_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8316','OCRS_Coast_Range_North_NAD_1983_2011_LCC_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8317','OCRS_Dayville-Prairie_City_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8318','OCRS_Dayville-Prairie_City_NAD_1983_2011_TM_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8319','OCRS_Denio-Burns_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8320','OCRS_Denio-Burns_NAD_1983_2011_TM_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8321','OCRS_Halfway_NAD_1983_2011_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8322','OCRS_Halfway_NAD_1983_2011_LCC_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8323','OCRS_Medford-Diamond_Lake_NAD_1983_2011_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8324','OCRS_Medford-Diamond_Lake_NAD_1983_2011_LCC_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8325','OCRS_Mitchell_NAD_1983_2011_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8326','OCRS_Mitchell_NAD_1983_2011_LCC_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8327','OCRS_North_Central_NAD_1983_2011_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8328','OCRS_North_Central_NAD_1983_2011_LCC_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8329','OCRS_Ochoco_Summit_NAD_1983_2011_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8330','OCRS_Ochoco_Summit_NAD_1983_2011_LCC_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8331','OCRS_Owyhee_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8332','OCRS_Owyhee_NAD_1983_2011_TM_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8333','OCRS_Pilot_Rock-Ukiah_NAD_1983_2011_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8334','OCRS_Pilot_Rock-Ukiah_NAD_1983_2011_LCC_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8335','OCRS_Prairie_City-Brogan_NAD_1983_2011_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8336','OCRS_Prairie_City-Brogan_NAD_1983_2011_LCC_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8337','OCRS_Riley-Lakeview_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8338','OCRS_Riley-Lakeview_NAD_1983_2011_TM_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8339','OCRS_Siskiyou_Pass_NAD_1983_2011_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8340','OCRS_Siskiyou_Pass_NAD_1983_2011_LCC_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8341','OCRS_Ukiah-Fox_NAD_1983_2011_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8342','OCRS_Ukiah-Fox_NAD_1983_2011_LCC_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8343','OCRS_Wallowa_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8344','OCRS_Wallowa_NAD_1983_2011_TM_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8345','OCRS_Warner_Highway_NAD_1983_2011_LCC_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8346','OCRS_Warner_Highway_NAD_1983_2011_LCC_Ft_Intl','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8347','OCRS_Willamette_Pass_NAD_1983_2011_TM_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','8348','OCRS_Willamette_Pass_NAD_1983_2011_TM_Ft_Intl','ESRI'); +INSERT INTO "projected_crs" VALUES('ESRI','20002','Pulkovo_1995_GK_Zone_2',NULL,NULL,NULL,NULL,'EPSG','4200',NULL,NULL,'EPSG','1805','PROJCS["Pulkovo_1995_GK_Zone_2",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245.0,298.3]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",2500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','20003','Pulkovo_1995_GK_Zone_3',NULL,NULL,NULL,NULL,'EPSG','4200',NULL,NULL,'EPSG','1792','PROJCS["Pulkovo_1995_GK_Zone_3",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245.0,298.3]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",3500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20004','Pulkovo_1995_GK_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20005','Pulkovo_1995_GK_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20006','Pulkovo_1995_GK_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20007','Pulkovo_1995_GK_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20008','Pulkovo_1995_GK_Zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20009','Pulkovo_1995_GK_Zone_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20010','Pulkovo_1995_GK_Zone_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20011','Pulkovo_1995_GK_Zone_11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20012','Pulkovo_1995_GK_Zone_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20013','Pulkovo_1995_GK_Zone_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20014','Pulkovo_1995_GK_Zone_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20015','Pulkovo_1995_GK_Zone_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20016','Pulkovo_1995_GK_Zone_16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20017','Pulkovo_1995_GK_Zone_17','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20018','Pulkovo_1995_GK_Zone_18','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20019','Pulkovo_1995_GK_Zone_19','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20020','Pulkovo_1995_GK_Zone_20','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20021','Pulkovo_1995_GK_Zone_21','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20022','Pulkovo_1995_GK_Zone_22','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20023','Pulkovo_1995_GK_Zone_23','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20024','Pulkovo_1995_GK_Zone_24','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20025','Pulkovo_1995_GK_Zone_25','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20026','Pulkovo_1995_GK_Zone_26','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20027','Pulkovo_1995_GK_Zone_27','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20028','Pulkovo_1995_GK_Zone_28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20029','Pulkovo_1995_GK_Zone_29','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20030','Pulkovo_1995_GK_Zone_30','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20031','Pulkovo_1995_GK_Zone_31','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20032','Pulkovo_1995_GK_Zone_32','ESRI'); +INSERT INTO "projected_crs" VALUES('ESRI','20062','Pulkovo_1995_GK_Zone_2N',NULL,NULL,NULL,NULL,'EPSG','4200',NULL,NULL,'EPSG','1805','PROJCS["Pulkovo_1995_GK_Zone_2N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245.0,298.3]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','20063','Pulkovo_1995_GK_Zone_3N',NULL,NULL,NULL,NULL,'EPSG','4200',NULL,NULL,'EPSG','1792','PROJCS["Pulkovo_1995_GK_Zone_3N",GEOGCS["GCS_Pulkovo_1995",DATUM["D_Pulkovo_1995",SPHEROID["Krasovsky_1940",6378245.0,298.3]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20064','Pulkovo_1995_GK_Zone_4N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20065','Pulkovo_1995_GK_Zone_5N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20066','Pulkovo_1995_GK_Zone_6N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20067','Pulkovo_1995_GK_Zone_7N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20068','Pulkovo_1995_GK_Zone_8N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20069','Pulkovo_1995_GK_Zone_9N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20070','Pulkovo_1995_GK_Zone_10N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20071','Pulkovo_1995_GK_Zone_11N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20072','Pulkovo_1995_GK_Zone_12N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20073','Pulkovo_1995_GK_Zone_13N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20074','Pulkovo_1995_GK_Zone_14N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20075','Pulkovo_1995_GK_Zone_15N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20076','Pulkovo_1995_GK_Zone_16N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20077','Pulkovo_1995_GK_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20078','Pulkovo_1995_GK_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20079','Pulkovo_1995_GK_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20080','Pulkovo_1995_GK_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20081','Pulkovo_1995_GK_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20082','Pulkovo_1995_GK_Zone_22N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20083','Pulkovo_1995_GK_Zone_23N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20084','Pulkovo_1995_GK_Zone_24N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20085','Pulkovo_1995_GK_Zone_25N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20086','Pulkovo_1995_GK_Zone_26N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20087','Pulkovo_1995_GK_Zone_27N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20088','Pulkovo_1995_GK_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20089','Pulkovo_1995_GK_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20090','Pulkovo_1995_GK_Zone_30N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20091','Pulkovo_1995_GK_Zone_31N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20092','Pulkovo_1995_GK_Zone_32N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20135','Adindan_UTM_Zone_35N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20136','Adindan_UTM_Zone_36N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20137','Adindan_UTM_Zone_37N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20138','Adindan_UTM_Zone_38N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20248','AGD_1966_AMG_Zone_48','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20249','AGD_1966_AMG_Zone_49','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20250','AGD_1966_AMG_Zone_50','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20251','AGD_1966_AMG_Zone_51','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20252','AGD_1966_AMG_Zone_52','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20253','AGD_1966_AMG_Zone_53','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20254','AGD_1966_AMG_Zone_54','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20255','AGD_1966_AMG_Zone_55','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20256','AGD_1966_AMG_Zone_56','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20257','AGD_1966_AMG_Zone_57','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20258','AGD_1966_AMG_Zone_58','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20348','AGD_1984_AMG_Zone_48','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20349','AGD_1984_AMG_Zone_49','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20350','AGD_1984_AMG_Zone_50','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20351','AGD_1984_AMG_Zone_51','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20352','AGD_1984_AMG_Zone_52','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20353','AGD_1984_AMG_Zone_53','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20354','AGD_1984_AMG_Zone_54','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20355','AGD_1984_AMG_Zone_55','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20356','AGD_1984_AMG_Zone_56','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20357','AGD_1984_AMG_Zone_57','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20358','AGD_1984_AMG_Zone_58','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20436','Ain_el_Abd_UTM_Zone_36N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20437','Ain_el_Abd_UTM_Zone_37N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20438','Ain_el_Abd_UTM_Zone_38N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20439','Ain_el_Abd_UTM_Zone_39N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20440','Ain_el_Abd_UTM_Zone_40N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20499','Bahrain_State_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20538','Afgooye_UTM_Zone_38N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20539','Afgooye_UTM_Zone_39N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20790','Portuguese_National_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20791','Lisbon_Lisbon_Portuguese_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20822','Aratu_UTM_Zone_22S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20823','Aratu_UTM_Zone_23S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20824','Aratu_UTM_Zone_24S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20934','Arc_1950_UTM_Zone_34S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20935','Arc_1950_UTM_Zone_35S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','20936','Arc_1950_UTM_Zone_36S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21035','Arc_1960_UTM_Zone_35S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21036','Arc_1960_UTM_Zone_36S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21037','Arc_1960_UTM_Zone_37S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21095','Arc_1960_UTM_Zone_35N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21096','Arc_1960_UTM_Zone_36N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21097','Arc_1960_UTM_Zone_37N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21148','Batavia_UTM_Zone_48S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21149','Batavia_UTM_Zone_49S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21150','Batavia_UTM_Zone_50S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21291','Barbados_1938_British_West_Indies_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21292','Barbados_1938_Barbados_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21413','Beijing_1954_GK_Zone_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21414','Beijing_1954_GK_Zone_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21415','Beijing_1954_GK_Zone_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21416','Beijing_1954_GK_Zone_16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21417','Beijing_1954_GK_Zone_17','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21418','Beijing_1954_GK_Zone_18','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21419','Beijing_1954_GK_Zone_19','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21420','Beijing_1954_GK_Zone_20','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21421','Beijing_1954_GK_Zone_21','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21422','Beijing_1954_GK_Zone_22','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21423','Beijing_1954_GK_Zone_23','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21473','Beijing_1954_GK_Zone_13N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21474','Beijing_1954_GK_Zone_14N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21475','Beijing_1954_GK_Zone_15N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21476','Beijing_1954_GK_Zone_16N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21477','Beijing_1954_GK_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21478','Beijing_1954_GK_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21479','Beijing_1954_GK_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21480','Beijing_1954_GK_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21481','Beijing_1954_GK_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21482','Beijing_1954_GK_Zone_22N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21483','Beijing_1954_GK_Zone_23N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21500','Belge_Lambert_1950','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21780','Bern_1898_Bern_LV03C','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21781','CH1903_LV03','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21782','CH1903_LV03C-G','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21817','Bogota_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21818','Bogota_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21896','Colombia_West_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21897','Colombia_Bogota_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21898','Colombia_East_Central_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21899','Colombia_East_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21896','Colombia_West_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21897','Colombia_Bogota_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21898','Colombia_East_Central_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','21899','Colombia_East_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22032','Camacupa_UTM_Zone_32S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22033','Camacupa_UTM_Zone_33S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22091','Camacupa_TM_11_30_SE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22092','Camacupa_TM_12_SE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22171','POSGAR_1998_Argentina_Zone_1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22172','POSGAR_1998_Argentina_Zone_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22173','POSGAR_1998_Argentina_Zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22174','POSGAR_1998_Argentina_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22175','POSGAR_1998_Argentina_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22176','POSGAR_1998_Argentina_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22177','POSGAR_1998_Argentina_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22181','POSGAR_1994_Argentina_Zone_1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22182','POSGAR_1994_Argentina_Zone_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22183','POSGAR_1994_Argentina_Zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22184','POSGAR_1994_Argentina_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22185','POSGAR_1994_Argentina_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22186','POSGAR_1994_Argentina_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22187','POSGAR_1994_Argentina_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22191','Argentina_Zone_1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22192','Argentina_Zone_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22193','Argentina_Zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22194','Argentina_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22195','Argentina_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22196','Argentina_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22197','Argentina_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22234','Cape_UTM_Zone_34S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22235','Cape_UTM_Zone_35S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22236','Cape_UTM_Zone_36S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22332','Carthage_UTM_Zone_32N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22391','Nord_Tunisie','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22392','Sud_Tunisie','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22521','Corrego_Alegre_UTM_Zone_21S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22522','Corrego_Alegre_UTM_Zone_22S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22523','Corrego_Alegre_UTM_Zone_23S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22524','Corrego_Alegre_UTM_Zone_24S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22525','Corrego_Alegre_UTM_Zone_25S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22700','Deir_ez_Zor_Levant_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22770','Deir_ez_Zor_Syria_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22780','Deir_ez_Zor_Levant_Stereographic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22832','Douala_UTM_Zone_32N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22991','Egypt_Blue_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22992','Egypt_Red_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22993','Egypt_Purple_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','22994','Egypt_Extended_Purple_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23028','ED_1950_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23029','ED_1950_UTM_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23030','ED_1950_UTM_Zone_30N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23031','ED_1950_UTM_Zone_31N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23032','ED_1950_UTM_Zone_32N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23033','ED_1950_UTM_Zone_33N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23034','ED_1950_UTM_Zone_34N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23035','ED_1950_UTM_Zone_35N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23036','ED_1950_UTM_Zone_36N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23037','ED_1950_UTM_Zone_37N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23038','ED_1950_UTM_Zone_38N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23090','ED_1950_TM_0_N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23095','ED_1950_TM_5_NE','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23239','Fahud_UTM_Zone_39N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23240','Fahud_UTM_Zone_40N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2312','Garoua_UTM_Zone_33N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23700','Hungarian_1972_Egyseges_Orszagos_Vetuleti','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23830','DGN_1995_Indonesia_TM-3_Zone_46.2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23831','DGN_1995_Indonesia_TM-3_Zone_47.1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23832','DGN_1995_Indonesia_TM-3_Zone_47.2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23833','DGN_1995_Indonesia_TM-3_Zone_48.1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23834','DGN_1995_Indonesia_TM-3_Zone_48.2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23835','DGN_1995_Indonesia_TM-3_Zone_49.1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23836','DGN_1995_Indonesia_TM-3_Zone_49.2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23837','DGN_1995_Indonesia_TM-3_Zone_50.1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23838','DGN_1995_Indonesia_TM-3_Zone_50.2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23839','DGN_1995_Indonesia_TM-3_Zone_51.1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23840','DGN_1995_Indonesia_TM-3_Zone_51.2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23841','DGN_1995_Indonesia_TM-3_Zone_52.1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23842','DGN_1995_Indonesia_TM-3_Zone_52.2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23843','DGN_1995_Indonesia_TM-3_Zone_53.1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23844','DGN_1995_Indonesia_TM-3_Zone_53.2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23845','DGN_1995_Indonesia_TM-3_Zone_54.1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23846','Indonesian_1974_UTM_Zone_46N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23847','Indonesian_1974_UTM_Zone_47N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23848','Indonesian_1974_UTM_Zone_48N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23849','Indonesian_1974_UTM_Zone_49N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23850','Indonesian_1974_UTM_Zone_50N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23851','Indonesian_1974_UTM_Zone_51N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23852','Indonesian_1974_UTM_Zone_52N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23853','Indonesian_1974_UTM_Zone_53N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23866','DGN_1995_UTM_Zone_46N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23867','DGN_1995_UTM_Zone_47N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23868','DGN_1995_UTM_Zone_48N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23869','DGN_1995_UTM_Zone_49N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23870','DGN_1995_UTM_Zone_50N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23871','DGN_1995_UTM_Zone_51N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23872','DGN_1995_UTM_Zone_52N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23877','DGN_1995_UTM_Zone_47S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23878','DGN_1995_UTM_Zone_48S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23879','DGN_1995_UTM_Zone_49S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23880','DGN_1995_UTM_Zone_50S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23881','DGN_1995_UTM_Zone_51S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23882','DGN_1995_UTM_Zone_52S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23883','DGN_1995_UTM_Zone_53S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23884','DGN_1995_UTM_Zone_54S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23886','Indonesian_1974_UTM_Zone_46S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23887','Indonesian_1974_UTM_Zone_47S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23888','Indonesian_1974_UTM_Zone_48S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23889','Indonesian_1974_UTM_Zone_49S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23890','Indonesian_1974_UTM_Zone_50S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23891','Indonesian_1974_UTM_Zone_51S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23892','Indonesian_1974_UTM_Zone_52S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23893','Indonesian_1974_UTM_Zone_53S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23894','Indonesian_1974_UTM_Zone_54S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23946','Indian_1954_UTM_Zone_46N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23947','Indian_1954_UTM_Zone_47N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','23948','Indian_1954_UTM_Zone_48N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24047','Indian_1975_UTM_Zone_47N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24048','Indian_1975_UTM_Zone_48N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24100','Jamaica_1875_Old_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24200','Jamaica_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24305','Kalianpur_1937_UTM_Zone_45N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24306','Kalianpur_1937_UTM_Zone_46N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24311','Kalianpur_1962_UTM_Zone_41N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24312','Kalianpur_1962_UTM_Zone_42N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24313','Kalianpur_1962_UTM_Zone_43N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24342','Kalianpur_1975_UTM_Zone_42N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24343','Kalianpur_1975_UTM_Zone_43N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24344','Kalianpur_1975_UTM_Zone_44N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24345','Kalianpur_1975_UTM_Zone_45N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24346','Kalianpur_1975_UTM_Zone_46N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24347','Kalianpur_1975_UTM_Zone_47N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24370','Kalianpur_1880_India_Zone_0','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24371','Kalianpur_1880_India_Zone_I','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24372','Kalianpur_1880_India_Zone_IIa','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24373','Kalianpur_1880_India_Zone_III','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24374','Kalianpur_1880_India_Zone_IV','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24375','Kalianpur_1937_India_Zone_IIb','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24376','Kalianpur_1962_India_Zone_I','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24377','Kalianpur_1962_India_Zone_IIa','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24378','Kalianpur_1975_India_Zone_I','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24379','Kalianpur_1975_India_Zone_IIa','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24380','Kalianpur_1975_India_Zone_IIb','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24381','Kalianpur_1975_India_Zone_III','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24382','Kalianpur_1880_India_Zone_IIb','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24383','Kalianpur_1975_India_Zone_IV','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24500','Kertau_Singapore_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24547','Kertau_UTM_Zone_47N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24548','Kertau_UTM_Zone_48N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24571','Kertau_RSO_Malaya_Chains','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24600','KOC_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24718','La_Canoa_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24719','La_Canoa_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24720','La_Canoa_UTM_Zone_20N','ESRI'); +INSERT INTO "area" VALUES('ESRI','2','Venezuela - east of 60~W, N hemisphere','Venezuela - east of 60~W, N hemisphere',7.6,10.0,-61.0,-58.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','24721','La_Canoa_UTM_Zone_21N',NULL,NULL,NULL,NULL,'EPSG','4247',NULL,NULL,'ESRI','2','PROJCS["La_Canoa_UTM_Zone_21N",GEOGCS["GCS_La_Canoa",DATUM["D_La_Canoa",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-57.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24817','PSAD_1956_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24818','PSAD_1956_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24819','PSAD_1956_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24820','PSAD_1956_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24821','PSAD_1956_UTM_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24877','PSAD_1956_UTM_Zone_17S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24878','PSAD_1956_UTM_Zone_18S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24879','PSAD_1956_UTM_Zone_19S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24880','PSAD_1956_UTM_Zone_20S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24881','PSAD_1956_UTM_Zone_21S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24882','PSAD_1956_UTM_Zone_22S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24891','Peru_West_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24892','Peru_Central_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','24893','Peru_East_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25000','Ghana_Metre_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25231','Lome_UTM_Zone_31N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25391','Philippines_Zone_I','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25392','Philippines_Zone_II','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25393','Philippines_Zone_III','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25394','Philippines_Zone_IV','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25395','Philippines_Zone_V','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25828','ETRS_1989_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25829','ETRS_1989_UTM_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25830','ETRS_1989_UTM_Zone_30N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25831','ETRS_1989_UTM_Zone_31N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25832','ETRS_1989_UTM_Zone_32N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25833','ETRS_1989_UTM_Zone_33N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25834','ETRS_1989_UTM_Zone_34N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25835','ETRS_1989_UTM_Zone_35N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25836','ETRS_1989_UTM_Zone_36N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25837','ETRS_1989_UTM_Zone_37N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25838','ETRS_1989_UTM_Zone_38N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25884','ETRS_1989_TM_Baltic_1993','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','25932','Malongo_1987_UTM_Zone_32S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26191','Nord_Maroc','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26192','Sud_Maroc','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26193','Sahara','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26194','Merchich_Sahara_Nord','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26195','Merchich_Sahara_Sud','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26237','Massawa_UTM_Zone_37N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26331','Minna_UTM_Zone_31N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26332','Minna_UTM_Zone_32N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26391','Nigeria_West_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26392','Nigeria_Mid_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26393','Nigeria_East_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26432','Mhast_UTM_Zone_32S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26591','Monte_Mario_Rome_Italy_1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26592','Monte_Mario_Rome_Italy_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26632','Mporaloko_UTM_Zone_32N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26692','Mporaloko_UTM_Zone_32S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26701','NAD_1927_UTM_Zone_1N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26702','NAD_1927_UTM_Zone_2N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26703','NAD_1927_UTM_Zone_3N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26704','NAD_1927_UTM_Zone_4N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26705','NAD_1927_UTM_Zone_5N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26706','NAD_1927_UTM_Zone_6N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26707','NAD_1927_UTM_Zone_7N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26708','NAD_1927_UTM_Zone_8N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26709','NAD_1927_UTM_Zone_9N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26710','NAD_1927_UTM_Zone_10N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26711','NAD_1927_UTM_Zone_11N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26712','NAD_1927_UTM_Zone_12N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26713','NAD_1927_UTM_Zone_13N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26714','NAD_1927_UTM_Zone_14N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26715','NAD_1927_UTM_Zone_15N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26716','NAD_1927_UTM_Zone_16N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26717','NAD_1927_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26718','NAD_1927_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26719','NAD_1927_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26720','NAD_1927_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26721','NAD_1927_UTM_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26722','NAD_1927_UTM_Zone_22N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26729','NAD_1927_StatePlane_Alabama_East_FIPS_0101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26730','NAD_1927_StatePlane_Alabama_West_FIPS_0102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26731','NAD_1927_StatePlane_Alaska_1_FIPS_5001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26732','NAD_1927_StatePlane_Alaska_2_FIPS_5002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26733','NAD_1927_StatePlane_Alaska_3_FIPS_5003','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26734','NAD_1927_StatePlane_Alaska_4_FIPS_5004','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26735','NAD_1927_StatePlane_Alaska_5_FIPS_5005','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26736','NAD_1927_StatePlane_Alaska_6_FIPS_5006','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26737','NAD_1927_StatePlane_Alaska_7_FIPS_5007','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26738','NAD_1927_StatePlane_Alaska_8_FIPS_5008','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26739','NAD_1927_StatePlane_Alaska_9_FIPS_5009','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26740','NAD_1927_StatePlane_Alaska_10_FIPS_5010','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26741','NAD_1927_StatePlane_California_I_FIPS_0401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26742','NAD_1927_StatePlane_California_II_FIPS_0402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26743','NAD_1927_StatePlane_California_III_FIPS_0403','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26744','NAD_1927_StatePlane_California_IV_FIPS_0404','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26745','NAD_1927_StatePlane_California_V_FIPS_0405','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26746','NAD_1927_StatePlane_California_VI_FIPS_0406','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26799','NAD_1927_StatePlane_California_VII_FIPS_0407','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26748','NAD_1927_StatePlane_Arizona_East_FIPS_0201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26749','NAD_1927_StatePlane_Arizona_Central_FIPS_0202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26750','NAD_1927_StatePlane_Arizona_West_FIPS_0203','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26751','NAD_1927_StatePlane_Arkansas_North_FIPS_0301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26752','NAD_1927_StatePlane_Arkansas_South_FIPS_0302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26753','NAD_1927_StatePlane_Colorado_North_FIPS_0501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26754','NAD_1927_StatePlane_Colorado_Central_FIPS_0502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26755','NAD_1927_StatePlane_Colorado_South_FIPS_0503','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26756','NAD_1927_StatePlane_Connecticut_FIPS_0600','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26757','NAD_1927_StatePlane_Delaware_FIPS_0700','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26758','NAD_1927_StatePlane_Florida_East_FIPS_0901','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26759','NAD_1927_StatePlane_Florida_West_FIPS_0902','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26760','NAD_1927_StatePlane_Florida_North_FIPS_0903','ESRI'); +INSERT INTO "projected_crs" VALUES('ESRI','26761','NAD_1927_StatePlane_Hawaii_1_FIPS_5101',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','1546','PROJCS["NAD_1927_StatePlane_Hawaii_1_FIPS_5101",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-155.5],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",18.83333333333333],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','26762','NAD_1927_StatePlane_Hawaii_2_FIPS_5102',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','1547','PROJCS["NAD_1927_StatePlane_Hawaii_2_FIPS_5102",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-156.6666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",20.33333333333333],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','26763','NAD_1927_StatePlane_Hawaii_3_FIPS_5103',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','1548','PROJCS["NAD_1927_StatePlane_Hawaii_3_FIPS_5103",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-158.0],PARAMETER["Scale_Factor",0.99999],PARAMETER["Latitude_Of_Origin",21.16666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','26764','NAD_1927_StatePlane_Hawaii_4_FIPS_5104',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','1549','PROJCS["NAD_1927_StatePlane_Hawaii_4_FIPS_5104",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-159.5],PARAMETER["Scale_Factor",0.99999],PARAMETER["Latitude_Of_Origin",21.83333333333333],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','26765','NAD_1927_StatePlane_Hawaii_5_FIPS_5105',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','1550','PROJCS["NAD_1927_StatePlane_Hawaii_5_FIPS_5105",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-160.1666666666667],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",21.66666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26766','NAD_1927_StatePlane_Georgia_East_FIPS_1001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26767','NAD_1927_StatePlane_Georgia_West_FIPS_1002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26768','NAD_1927_StatePlane_Idaho_East_FIPS_1101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26769','NAD_1927_StatePlane_Idaho_Central_FIPS_1102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26770','NAD_1927_StatePlane_Idaho_West_FIPS_1103','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26771','NAD_1927_StatePlane_Illinois_East_FIPS_1201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26772','NAD_1927_StatePlane_Illinois_West_FIPS_1202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26773','NAD_1927_StatePlane_Indiana_East_FIPS_1301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26774','NAD_1927_StatePlane_Indiana_West_FIPS_1302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26775','NAD_1927_StatePlane_Iowa_North_FIPS_1401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26776','NAD_1927_StatePlane_Iowa_South_FIPS_1402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26777','NAD_1927_StatePlane_Kansas_North_FIPS_1501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26778','NAD_1927_StatePlane_Kansas_South_FIPS_1502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26779','NAD_1927_StatePlane_Kentucky_North_FIPS_1601','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26780','NAD_1927_StatePlane_Kentucky_South_FIPS_1602','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26781','NAD_1927_StatePlane_Louisiana_North_FIPS_1701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26782','NAD_1927_StatePlane_Louisiana_South_FIPS_1702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26783','NAD_1927_StatePlane_Maine_East_FIPS_1801','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26784','NAD_1927_StatePlane_Maine_West_FIPS_1802','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26785','NAD_1927_StatePlane_Maryland_FIPS_1900','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26786','NAD_1927_StatePlane_Massachusetts_Mainland_FIPS_2001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26787','NAD_1927_StatePlane_Massachusetts_Island_FIPS_2002','ESRI'); +INSERT INTO "projected_crs" VALUES('ESRI','26788','NAD_1927_StatePlane_Michigan_North_FIPS_2111',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','1723','PROJCS["NAD_1927_StatePlane_Michigan_North_FIPS_2111",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.0],PARAMETER["Standard_Parallel_1",45.48333333333333],PARAMETER["Standard_Parallel_2",47.08333333333334],PARAMETER["Latitude_Of_Origin",44.78333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','26789','NAD_1927_StatePlane_Michigan_Central_FIPS_2112',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','1724','PROJCS["NAD_1927_StatePlane_Michigan_Central_FIPS_2112",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.33333333333333],PARAMETER["Standard_Parallel_1",44.18333333333333],PARAMETER["Standard_Parallel_2",45.7],PARAMETER["Latitude_Of_Origin",43.31666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','26790','NAD_1927_StatePlane_Michigan_South_FIPS_2113',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','1725','PROJCS["NAD_1927_StatePlane_Michigan_South_FIPS_2113",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.33333333333333],PARAMETER["Standard_Parallel_1",42.1],PARAMETER["Standard_Parallel_2",43.66666666666666],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26791','NAD_1927_StatePlane_Minnesota_North_FIPS_2201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26792','NAD_1927_StatePlane_Minnesota_Central_FIPS_2202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26793','NAD_1927_StatePlane_Minnesota_South_FIPS_2203','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26794','NAD_1927_StatePlane_Mississippi_East_FIPS_2301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26795','NAD_1927_StatePlane_Mississippi_West_FIPS_2302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26796','NAD_1927_StatePlane_Missouri_East_FIPS_2401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26797','NAD_1927_StatePlane_Missouri_Central_FIPS_2402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26798','NAD_1927_StatePlane_Missouri_West_FIPS_2403','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26799','NAD_1927_StatePlane_California_VII_FIPS_0407','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26801','NAD_Michigan_StatePlane_Michigan_East_Old_FIPS_2101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26802','NAD_Michigan_StatePlane_Michigan_Central_Old_FIPS_2102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26803','NAD_Michigan_StatePlane_Michigan_West_Old_FIPS_2103','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26811','NAD_Michigan_StatePlane_Michigan_North_FIPS_2111','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26812','NAD_Michigan_StatePlane_Michigan_Central_FIPS_2112','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26813','NAD_Michigan_StatePlane_Michigan_South_FIPS_2113','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26847','NAD_1983_StatePlane_Maine_East_FIPS_1801_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26848','NAD_1983_StatePlane_Maine_West_FIPS_1802_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26849','NAD_1983_StatePlane_Minnesota_North_FIPS_2201_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26850','NAD_1983_StatePlane_Minnesota_Central_FIPS_2202_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26851','NAD_1983_StatePlane_Minnesota_South_FIPS_2203_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26852','NAD_1983_StatePlane_Nebraska_FIPS_2600_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26853','NAD_1983_StatePlane_West_Virginia_North_FIPS_4701_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26854','NAD_1983_StatePlane_West_Virginia_South_FIPS_4702_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26855','NAD_1983_HARN_StatePlane_Maine_East_FIPS_1801_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26856','NAD_1983_HARN_StatePlane_Maine_West_FIPS_1802_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26857','NAD_1983_HARN_StatePlane_Minnesota_North_FIPS_2201_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26858','NAD_1983_HARN_StatePlane_Minnesota_Central_FIPS_2202_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26859','NAD_1983_HARN_StatePlane_Minnesota_South_FIPS_2203_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26860','NAD_1983_HARN_StatePlane_Nebraska_FIPS_2600_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26861','NAD_1983_HARN_StatePlane_West_Virginia_North_FIPS_4701_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26862','NAD_1983_HARN_StatePlane_West_Virginia_South_FIPS_4702_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26863','NAD_1983_NSRS2007_StatePlane_Maine_East_FIPS_1801_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26864','NAD_1983_NSRS2007_StatePlane_Maine_West_FIPS_1802_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26865','NAD_1983_NSRS2007_StatePlane_Minnesota_North_FIPS_2201_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26866','NAD_1983_NSRS2007_StatePlane_Minnesota_Central_FIPS_2202_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26867','NAD_1983_NSRS2007_StatePlane_Minnesota_South_FIPS_2203_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26868','NAD_1983_NSRS2007_StatePlane_Nebraska_FIPS_2600_Ft_US','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26869','NAD_1983_NSRS2007_StatePlane_West_Virginia_North_FIPS_4701_FtUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26870','NAD_1983_NSRS2007_StatePlane_West_Virginia_South_FIPS_4702_FtUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26891','NAD_1983_CSRS_MTM_11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26892','NAD_1983_CSRS_MTM_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26893','NAD_1983_CSRS_MTM_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26894','NAD_1983_CSRS_MTM_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26895','NAD_1983_CSRS_MTM_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26896','NAD_1983_CSRS_MTM_16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26897','NAD_1983_CSRS_MTM_17','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26898','NAD_1983_CSRS_MTM_1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26899','NAD_1983_CSRS_MTM_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26901','NAD_1983_UTM_Zone_1N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26902','NAD_1983_UTM_Zone_2N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26903','NAD_1983_UTM_Zone_3N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26904','NAD_1983_UTM_Zone_4N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26905','NAD_1983_UTM_Zone_5N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26906','NAD_1983_UTM_Zone_6N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26907','NAD_1983_UTM_Zone_7N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26908','NAD_1983_UTM_Zone_8N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26909','NAD_1983_UTM_Zone_9N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26910','NAD_1983_UTM_Zone_10N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26911','NAD_1983_UTM_Zone_11N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26912','NAD_1983_UTM_Zone_12N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26913','NAD_1983_UTM_Zone_13N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26914','NAD_1983_UTM_Zone_14N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26915','NAD_1983_UTM_Zone_15N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26916','NAD_1983_UTM_Zone_16N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26917','NAD_1983_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26918','NAD_1983_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26919','NAD_1983_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26920','NAD_1983_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26921','NAD_1983_UTM_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26922','NAD_1983_UTM_Zone_22N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26923','NAD_1983_UTM_Zone_23N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26929','NAD_1983_StatePlane_Alabama_East_FIPS_0101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26930','NAD_1983_StatePlane_Alabama_West_FIPS_0102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26931','NAD_1983_StatePlane_Alaska_1_FIPS_5001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26932','NAD_1983_StatePlane_Alaska_2_FIPS_5002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26933','NAD_1983_StatePlane_Alaska_3_FIPS_5003','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26934','NAD_1983_StatePlane_Alaska_4_FIPS_5004','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26935','NAD_1983_StatePlane_Alaska_5_FIPS_5005','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26936','NAD_1983_StatePlane_Alaska_6_FIPS_5006','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26937','NAD_1983_StatePlane_Alaska_7_FIPS_5007','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26938','NAD_1983_StatePlane_Alaska_8_FIPS_5008','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26939','NAD_1983_StatePlane_Alaska_9_FIPS_5009','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26940','NAD_1983_StatePlane_Alaska_10_FIPS_5010','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26941','NAD_1983_StatePlane_California_I_FIPS_0401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26942','NAD_1983_StatePlane_California_II_FIPS_0402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26943','NAD_1983_StatePlane_California_III_FIPS_0403','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26944','NAD_1983_StatePlane_California_IV_FIPS_0404','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26945','NAD_1983_StatePlane_California_V_FIPS_0405','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26946','NAD_1983_StatePlane_California_VI_FIPS_0406','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26948','NAD_1983_StatePlane_Arizona_East_FIPS_0201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26949','NAD_1983_StatePlane_Arizona_Central_FIPS_0202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26950','NAD_1983_StatePlane_Arizona_West_FIPS_0203','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26951','NAD_1983_StatePlane_Arkansas_North_FIPS_0301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26952','NAD_1983_StatePlane_Arkansas_South_FIPS_0302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26953','NAD_1983_StatePlane_Colorado_North_FIPS_0501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26954','NAD_1983_StatePlane_Colorado_Central_FIPS_0502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26955','NAD_1983_StatePlane_Colorado_South_FIPS_0503','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26956','NAD_1983_StatePlane_Connecticut_FIPS_0600','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26957','NAD_1983_StatePlane_Delaware_FIPS_0700','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26958','NAD_1983_StatePlane_Florida_East_FIPS_0901','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26959','NAD_1983_StatePlane_Florida_West_FIPS_0902','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26960','NAD_1983_StatePlane_Florida_North_FIPS_0903','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26961','NAD_1983_StatePlane_Hawaii_1_FIPS_5101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26962','NAD_1983_StatePlane_Hawaii_2_FIPS_5102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26963','NAD_1983_StatePlane_Hawaii_3_FIPS_5103','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26964','NAD_1983_StatePlane_Hawaii_4_FIPS_5104','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26965','NAD_1983_StatePlane_Hawaii_5_FIPS_5105','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26966','NAD_1983_StatePlane_Georgia_East_FIPS_1001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26967','NAD_1983_StatePlane_Georgia_West_FIPS_1002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26968','NAD_1983_StatePlane_Idaho_East_FIPS_1101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26969','NAD_1983_StatePlane_Idaho_Central_FIPS_1102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26970','NAD_1983_StatePlane_Idaho_West_FIPS_1103','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26971','NAD_1983_StatePlane_Illinois_East_FIPS_1201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26972','NAD_1983_StatePlane_Illinois_West_FIPS_1202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26973','NAD_1983_StatePlane_Indiana_East_FIPS_1301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26974','NAD_1983_StatePlane_Indiana_West_FIPS_1302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26975','NAD_1983_StatePlane_Iowa_North_FIPS_1401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26976','NAD_1983_StatePlane_Iowa_South_FIPS_1402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26977','NAD_1983_StatePlane_Kansas_North_FIPS_1501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26978','NAD_1983_StatePlane_Kansas_South_FIPS_1502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2205','NAD_1983_StatePlane_Kentucky_North_FIPS_1601','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26980','NAD_1983_StatePlane_Kentucky_South_FIPS_1602','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26981','NAD_1983_StatePlane_Louisiana_North_FIPS_1701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26982','NAD_1983_StatePlane_Louisiana_South_FIPS_1702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26983','NAD_1983_StatePlane_Maine_East_FIPS_1801','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26984','NAD_1983_StatePlane_Maine_West_FIPS_1802','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26985','NAD_1983_StatePlane_Maryland_FIPS_1900','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26986','NAD_1983_StatePlane_Massachusetts_Mainland_FIPS_2001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26987','NAD_1983_StatePlane_Massachusetts_Island_FIPS_2002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26988','NAD_1983_StatePlane_Michigan_North_FIPS_2111','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26989','NAD_1983_StatePlane_Michigan_Central_FIPS_2112','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26990','NAD_1983_StatePlane_Michigan_South_FIPS_2113','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26991','NAD_1983_StatePlane_Minnesota_North_FIPS_2201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26992','NAD_1983_StatePlane_Minnesota_Central_FIPS_2202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26993','NAD_1983_StatePlane_Minnesota_South_FIPS_2203','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26994','NAD_1983_StatePlane_Mississippi_East_FIPS_2301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26995','NAD_1983_StatePlane_Mississippi_West_FIPS_2302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26996','NAD_1983_StatePlane_Missouri_East_FIPS_2401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26997','NAD_1983_StatePlane_Missouri_Central_FIPS_2402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','26998','NAD_1983_StatePlane_Missouri_West_FIPS_2403','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27037','Nahrwan_1967_UTM_Zone_37N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27038','Nahrwan_1967_UTM_Zone_38N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27039','Nahrwan_1967_UTM_Zone_39N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27040','Nahrwan_1967_UTM_Zone_40N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27120','Naparima_1972_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27200','GD_1949_New_Zealand_Map_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27205','NZGD_1949_Mount_Eden_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27206','NZGD_1949_Bay_of_Plenty_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27207','NZGD_1949_Poverty_Bay_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27208','NZGD_1949_Hawkes_Bay_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27209','NZGD_1949_Taranaki_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27210','NZGD_1949_Tuhirangi_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27211','NZGD_1949_Wanganui_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27212','NZGD_1949_Wairarapa_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27213','NZGD_1949_Wellington_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27214','NZGD_1949_Collingwood_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27215','NZGD_1949_Nelson_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27216','NZGD_1949_Karamea_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27217','NZGD_1949_Buller_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27218','NZGD_1949_Grey_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27219','NZGD_1949_Amuri_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27220','NZGD_1949_Marlborough_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27221','NZGD_1949_Hokitika_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27222','NZGD_1949_Okarito_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27223','NZGD_1949_Jacksons_Bay_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27224','NZGD_1949_Mount_Pleasant_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27225','NZGD_1949_Gawler_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27226','NZGD_1949_Timaru_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27227','NZGD_1949_Lindis_Peak_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27228','NZGD_1949_Mount_Nicholas_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27229','NZGD_1949_Mount_York_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27230','NZGD_1949_Observation_Point_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27231','NZGD_1949_North_Taieri_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27232','NZGD_1949_Bluff_Circuit','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27258','NZGD_1949_UTM_Zone_58S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27259','NZGD_1949_UTM_Zone_59S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27260','NZGD_1949_UTM_Zone_60S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27291','New_Zealand_North_Island','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27292','New_Zealand_South_Island','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27391','NGO_1948_Oslo_Norway_Zone_1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27392','NGO_1948_Oslo_Norway_Zone_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27393','NGO_1948_Oslo_Norway_Zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27394','NGO_1948_Oslo_Norway_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27395','NGO_1948_Oslo_Norway_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27396','NGO_1948_Oslo_Norway_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27397','NGO_1948_Oslo_Norway_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27398','NGO_1948_Oslo_Norway_Zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27429','Datum_73_UTM_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27493','Datum_73_Modified_Portuguese_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27493','Datum_73_Modified_Portuguese_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27500','Nord_de_Guerre','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27561','NTF_Paris_Lambert_Nord_France','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27562','NTF_Paris_Lambert_Centre_France','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27563','NTF_Paris_Lambert_Sud_France','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27564','NTF_Paris_Lambert_Corse','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27571','NTF_Paris_Lambert_Zone_I','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27572','NTF_Paris_Lambert_Zone_II','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27573','NTF_Paris_Lambert_Zone_III','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27574','NTF_Paris_Lambert_Zone_IV','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27581','NTF_Paris_France_I','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27582','NTF_Paris_France_II','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27583','NTF_Paris_France_III','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27584','NTF_Paris_France_IV','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27591','NTF_Paris_Nord_France','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27592','NTF_Paris_Centre_France','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27593','NTF_Paris_Sud_France','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27594','NTF_Paris_Corse','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','27700','British_National_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28191','Palestine_1923_Palestine_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28192','Palestine_1923_Palestine_Belt','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28193','Palestine_1923_Israel_CS_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28232','Pointe_Noire_UTM_Zone_32S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28348','GDA_1994_MGA_Zone_48','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28349','GDA_1994_MGA_Zone_49','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28350','GDA_1994_MGA_Zone_50','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28351','GDA_1994_MGA_Zone_51','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28352','GDA_1994_MGA_Zone_52','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28353','GDA_1994_MGA_Zone_53','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28354','GDA_1994_MGA_Zone_54','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28355','GDA_1994_MGA_Zone_55','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28356','GDA_1994_MGA_Zone_56','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28357','GDA_1994_MGA_Zone_57','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28358','GDA_1994_MGA_Zone_58','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28402','Pulkovo_1942_GK_Zone_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28403','Pulkovo_1942_GK_Zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28404','Pulkovo_1942_GK_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28405','Pulkovo_1942_GK_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28406','Pulkovo_1942_GK_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28407','Pulkovo_1942_GK_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28408','Pulkovo_1942_GK_Zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28409','Pulkovo_1942_GK_Zone_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28410','Pulkovo_1942_GK_Zone_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28411','Pulkovo_1942_GK_Zone_11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28412','Pulkovo_1942_GK_Zone_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28413','Pulkovo_1942_GK_Zone_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28414','Pulkovo_1942_GK_Zone_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28415','Pulkovo_1942_GK_Zone_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28416','Pulkovo_1942_GK_Zone_16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28417','Pulkovo_1942_GK_Zone_17','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28418','Pulkovo_1942_GK_Zone_18','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28419','Pulkovo_1942_GK_Zone_19','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28420','Pulkovo_1942_GK_Zone_20','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28421','Pulkovo_1942_GK_Zone_21','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28422','Pulkovo_1942_GK_Zone_22','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28423','Pulkovo_1942_GK_Zone_23','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28424','Pulkovo_1942_GK_Zone_24','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28425','Pulkovo_1942_GK_Zone_25','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28426','Pulkovo_1942_GK_Zone_26','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28427','Pulkovo_1942_GK_Zone_27','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28428','Pulkovo_1942_GK_Zone_28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28429','Pulkovo_1942_GK_Zone_29','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28430','Pulkovo_1942_GK_Zone_30','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28431','Pulkovo_1942_GK_Zone_31','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28432','Pulkovo_1942_GK_Zone_32','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28462','Pulkovo_1942_GK_Zone_2N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28463','Pulkovo_1942_GK_Zone_3N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28464','Pulkovo_1942_GK_Zone_4N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28465','Pulkovo_1942_GK_Zone_5N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28466','Pulkovo_1942_GK_Zone_6N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28467','Pulkovo_1942_GK_Zone_7N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28468','Pulkovo_1942_GK_Zone_8N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28469','Pulkovo_1942_GK_Zone_9N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28470','Pulkovo_1942_GK_Zone_10N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28471','Pulkovo_1942_GK_Zone_11N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28472','Pulkovo_1942_GK_Zone_12N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28473','Pulkovo_1942_GK_Zone_13N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28474','Pulkovo_1942_GK_Zone_14N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28475','Pulkovo_1942_GK_Zone_15N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28476','Pulkovo_1942_GK_Zone_16N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28477','Pulkovo_1942_GK_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28478','Pulkovo_1942_GK_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28479','Pulkovo_1942_GK_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28480','Pulkovo_1942_GK_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28481','Pulkovo_1942_GK_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28482','Pulkovo_1942_GK_Zone_22N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28483','Pulkovo_1942_GK_Zone_23N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28484','Pulkovo_1942_GK_Zone_24N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28485','Pulkovo_1942_GK_Zone_25N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28486','Pulkovo_1942_GK_Zone_26N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28487','Pulkovo_1942_GK_Zone_27N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28488','Pulkovo_1942_GK_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28489','Pulkovo_1942_GK_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28490','Pulkovo_1942_GK_Zone_30N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28491','Pulkovo_1942_GK_Zone_31N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28492','Pulkovo_1942_GK_Zone_32N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28600','Qatar_National_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28991','RD_Old','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','28992','RD_New','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29101','SAD_1969_Brazil_Polyconic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29101','SAD_1969_Brazil_Polyconic','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29168','SAD_1969_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29169','SAD_1969_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29170','SAD_1969_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29171','SAD_1969_UTM_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29172','SAD_1969_UTM_Zone_22N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29168','SAD_1969_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29169','SAD_1969_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29170','SAD_1969_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29171','SAD_1969_UTM_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29172','SAD_1969_UTM_Zone_22N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29187','SAD_1969_UTM_Zone_17S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29188','SAD_1969_UTM_Zone_18S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29189','SAD_1969_UTM_Zone_19S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29190','SAD_1969_UTM_Zone_20S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29191','SAD_1969_UTM_Zone_21S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29192','SAD_1969_UTM_Zone_22S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29193','SAD_1969_UTM_Zone_23S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29194','SAD_1969_UTM_Zone_24S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29195','SAD_1969_UTM_Zone_25S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29187','SAD_1969_UTM_Zone_17S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29188','SAD_1969_UTM_Zone_18S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29189','SAD_1969_UTM_Zone_19S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29190','SAD_1969_UTM_Zone_20S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29191','SAD_1969_UTM_Zone_21S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29192','SAD_1969_UTM_Zone_22S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29193','SAD_1969_UTM_Zone_23S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29194','SAD_1969_UTM_Zone_24S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29195','SAD_1969_UTM_Zone_25S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29220','Sapper_Hill_1943_UTM_Zone_20S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29221','Sapper_Hill_1943_UTM_Zone_21S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29333','Schwarzeck_UTM_Zone_33S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29635','Sudan_UTM_Zone_35N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29636','Sudan_UTM_Zone_36N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29701','Tananarive_1925_Paris_Laborde_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29738','Tananarive_1925_UTM_Zone_38S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29739','Tananarive_1925_UTM_Zone_39S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29849','Timbalai_1948_UTM_Zone_49N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29850','Timbalai_1948_UTM_Zone_50N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29871','Timbalai_1948_RSO_Borneo_Chains','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29872','Timbalai_1948_RSO_Borneo_Feet','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29873','Timbalai_1948_RSO_Borneo_Meters','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29902','TM65_Irish_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29901','OSNI_1952_Irish_National_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29902','TM65_Irish_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','29903','TM75_Irish_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30161','Japan_Zone_1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30162','Japan_Zone_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30163','Japan_Zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30164','Japan_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30165','Japan_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30166','Japan_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30167','Japan_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30168','Japan_Zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30169','Japan_Zone_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30170','Japan_Zone_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30171','Japan_Zone_11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30172','Japan_Zone_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30173','Japan_Zone_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30174','Japan_Zone_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30175','Japan_Zone_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30176','Japan_Zone_16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30177','Japan_Zone_17','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30178','Japan_Zone_18','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30179','Japan_Zone_19','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30200','Trinidad_1903_Trinidad_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30339','TC_1948_UTM_Zone_39N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30340','TC_1948_UTM_Zone_40N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30491','Nord_Algerie_Ancienne','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30492','Sud_Algerie_Ancienne','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30493','Voirol_1879_Nord_Algerie_Ancienne','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30494','Voirol_1879_Sud_Algerie_Ancienne','ESRI'); +INSERT INTO "projected_crs" VALUES('ESRI','30591','Nord_Algerie',NULL,NULL,NULL,NULL,'ESRI','4305',NULL,NULL,'EPSG','1728','PROJCS["Nord_Algerie",GEOGCS["GCS_Voirol_Unifie_1960",DATUM["D_Voirol_Unifie_1960",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0.0],UNIT["Grad",0.01570796326794897]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500135.0],PARAMETER["False_Northing",300090.0],PARAMETER["Central_Meridian",3.0],PARAMETER["Standard_Parallel_1",40.0],PARAMETER["Scale_Factor",0.999625544],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','30592','Sud_Algerie',NULL,NULL,NULL,NULL,'ESRI','4305',NULL,NULL,'EPSG','1729','PROJCS["Sud_Algerie",GEOGCS["GCS_Voirol_Unifie_1960",DATUM["D_Voirol_Unifie_1960",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0.0],UNIT["Grad",0.01570796326794897]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500135.0],PARAMETER["False_Northing",300090.0],PARAMETER["Central_Meridian",3.0],PARAMETER["Standard_Parallel_1",37.0],PARAMETER["Scale_Factor",0.999625769],PARAMETER["Latitude_Of_Origin",37.0],UNIT["Meter",1.0]]',0); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30729','Nord_Sahara_1959_UTM_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30730','Nord_Sahara_1959_UTM_Zone_30N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30731','Nord_Sahara_1959_UTM_Zone_31N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30732','Nord_Sahara_1959_UTM_Zone_32N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30791','Nord_Sahara_1959_Voirol_Unifie_Nord','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30792','Nord_Sahara_1959_Voirol_Unifie_Sud','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','30800','Swedish_National_Grid','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31028','Yoff_1972_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31121','Zanderij_1972_UTM_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31154','Zanderij_TM_54_NW','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31170','Zanderij_Suriname_Old_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31171','Zanderij_Suriname_TM','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31251','MGI_Ferro_Austria_GK_West','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31252','MGI_Ferro_Austria_GK_Central','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31253','MGI_Ferro_Austria_GK_East','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31254','MGI_Austria_GK_West','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31255','MGI_Austria_GK_Central','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31256','MGI_Austria_GK_East','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31257','MGI_Austria_GK_M28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31258','MGI_Austria_GK_M31','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31259','MGI_Austria_GK_M34','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31265','MGI_3_Degree_Gauss_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31266','MGI_3_Degree_Gauss_Zone_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31267','MGI_3_Degree_Gauss_Zone_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31268','MGI_3_Degree_Gauss_Zone_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31275','MGI_Balkans_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31276','MGI_Balkans_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31277','MGI_Balkans_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31279','MGI_Balkans_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31279','MGI_Balkans_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31281','Austria_West_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31282','Austria_Central_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31283','Austria_East_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31284','MGI_M28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31285','MGI_M31','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31286','MGI_M34','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31287','MGI_Austria_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31288','MGI_Ferro_M28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31289','MGI_Ferro_M31','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31290','MGI_Ferro_M34','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31281','Austria_West_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31282','Austria_Central_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31283','Austria_East_Zone','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31284','MGI_M28','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31285','MGI_M31','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31286','MGI_M34','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31287','MGI_Austria_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31370','Belge_Lambert_1972','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','5520','DHDN_3_Degree_Gauss_Zone_1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31466','DHDN_3_Degree_Gauss_Zone_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31467','DHDN_3_Degree_Gauss_Zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31468','DHDN_3_Degree_Gauss_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31469','DHDN_3_Degree_Gauss_Zone_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31466','DHDN_3_Degree_Gauss_Zone_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31467','DHDN_3_Degree_Gauss_Zone_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31468','DHDN_3_Degree_Gauss_Zone_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31469','DHDN_3_Degree_Gauss_Zone_5','ESRI'); +INSERT INTO "projected_crs" VALUES('ESRI','31491','Germany_Zone_1',NULL,NULL,NULL,NULL,'EPSG','4314',NULL,NULL,'EPSG','3892','PROJCS["Germany_Zone_1",GEOGCS["GCS_Deutsches_Hauptdreiecksnetz",DATUM["D_Deutsches_Hauptdreiecksnetz",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",3.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','31492','Germany_Zone_2',NULL,NULL,NULL,NULL,'EPSG','4314',NULL,NULL,'EPSG','1624','PROJCS["Germany_Zone_2",GEOGCS["GCS_Deutsches_Hauptdreiecksnetz",DATUM["D_Deutsches_Hauptdreiecksnetz",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",6.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','31493','Germany_Zone_3',NULL,NULL,NULL,NULL,'EPSG','4314',NULL,NULL,'EPSG','1625','PROJCS["Germany_Zone_3",GEOGCS["GCS_Deutsches_Hauptdreiecksnetz",DATUM["D_Deutsches_Hauptdreiecksnetz",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",3500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','31494','Germany_Zone_4',NULL,NULL,NULL,NULL,'EPSG','4314',NULL,NULL,'EPSG','1626','PROJCS["Germany_Zone_4",GEOGCS["GCS_Deutsches_Hauptdreiecksnetz",DATUM["D_Deutsches_Hauptdreiecksnetz",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",4500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",12.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','31495','Germany_Zone_5',NULL,NULL,NULL,NULL,'EPSG','4314',NULL,NULL,'EPSG','1627','PROJCS["Germany_Zone_5",GEOGCS["GCS_Deutsches_Hauptdreiecksnetz",DATUM["D_Deutsches_Hauptdreiecksnetz",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",5500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31528','Conakry_1905_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31529','Conakry_1905_UTM_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31600','Stereo_33','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31700','Stereo_70','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31838','NGN_UTM_Zone_38N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31839','NGN_UTM_Zone_39N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31901','KUDAMS_KTM','ESRI'); +INSERT INTO "projected_crs" VALUES('ESRI','31917','SIRGAS_UTM_Zone_17N',NULL,NULL,NULL,NULL,'EPSG','4170',NULL,NULL,'EPSG','1823','PROJCS["SIRGAS_UTM_Zone_17N",GEOGCS["GCS_SIRGAS",DATUM["D_SIRGAS",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','31918','SIRGAS_UTM_Zone_18N',NULL,NULL,NULL,NULL,'EPSG','4170',NULL,NULL,'EPSG','1825','PROJCS["SIRGAS_UTM_Zone_18N",GEOGCS["GCS_SIRGAS",DATUM["D_SIRGAS",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-75.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','31919','SIRGAS_UTM_Zone_19N',NULL,NULL,NULL,NULL,'EPSG','4170',NULL,NULL,'EPSG','1827','PROJCS["SIRGAS_UTM_Zone_19N",GEOGCS["GCS_SIRGAS",DATUM["D_SIRGAS",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-69.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','31920','SIRGAS_UTM_Zone_20N',NULL,NULL,NULL,NULL,'EPSG','4170',NULL,NULL,'EPSG','1829','PROJCS["SIRGAS_UTM_Zone_20N",GEOGCS["GCS_SIRGAS",DATUM["D_SIRGAS",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-63.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','31921','SIRGAS_UTM_Zone_21N',NULL,NULL,NULL,NULL,'EPSG','4170',NULL,NULL,'EPSG','1831','PROJCS["SIRGAS_UTM_Zone_21N",GEOGCS["GCS_SIRGAS",DATUM["D_SIRGAS",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-57.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','31922','SIRGAS_UTM_Zone_22N',NULL,NULL,NULL,NULL,'EPSG','4170',NULL,NULL,'EPSG','1833','PROJCS["SIRGAS_UTM_Zone_22N",GEOGCS["GCS_SIRGAS",DATUM["D_SIRGAS",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-51.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31965','SIRGAS_2000_UTM_Zone_11N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31966','SIRGAS_2000_UTM_Zone_12N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31967','SIRGAS_2000_UTM_Zone_13N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31968','SIRGAS_2000_UTM_Zone_14N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31969','SIRGAS_2000_UTM_Zone_15N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31970','SIRGAS_2000_UTM_Zone_16N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31971','SIRGAS_2000_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31972','SIRGAS_2000_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31973','SIRGAS_2000_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31974','SIRGAS_2000_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31975','SIRGAS_2000_UTM_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31976','SIRGAS_2000_UTM_Zone_22N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31977','SIRGAS_2000_UTM_Zone_17S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31978','SIRGAS_2000_UTM_Zone_18S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31979','SIRGAS_2000_UTM_Zone_19S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31980','SIRGAS_2000_UTM_Zone_20S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31981','SIRGAS_2000_UTM_Zone_21S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31982','SIRGAS_2000_UTM_Zone_22S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31983','SIRGAS_2000_UTM_Zone_23S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31984','SIRGAS_2000_UTM_Zone_24S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31985','SIRGAS_2000_UTM_Zone_25S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31986','SIRGAS_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31987','SIRGAS_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31988','SIRGAS_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31989','SIRGAS_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31990','SIRGAS_UTM_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31991','SIRGAS_UTM_Zone_22N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31992','SIRGAS_UTM_Zone_17S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31993','SIRGAS_UTM_Zone_18S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31994','SIRGAS_UTM_Zone_19S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31995','SIRGAS_UTM_Zone_20S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31996','SIRGAS_UTM_Zone_21S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31997','SIRGAS_UTM_Zone_22S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31998','SIRGAS_UTM_Zone_23S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','31999','SIRGAS_UTM_Zone_24S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32000','SIRGAS_UTM_Zone_25S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32001','NAD_1927_StatePlane_Montana_North_FIPS_2501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32002','NAD_1927_StatePlane_Montana_Central_FIPS_2502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32003','NAD_1927_StatePlane_Montana_South_FIPS_2503','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32005','NAD_1927_StatePlane_Nebraska_North_FIPS_2601','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32006','NAD_1927_StatePlane_Nebraska_South_FIPS_2602','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32007','NAD_1927_StatePlane_Nevada_East_FIPS_2701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32008','NAD_1927_StatePlane_Nevada_Central_FIPS_2702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32009','NAD_1927_StatePlane_Nevada_West_FIPS_2703','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32010','NAD_1927_StatePlane_New_Hampshire_FIPS_2800','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32011','NAD_1927_StatePlane_New_Jersey_FIPS_2900','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32012','NAD_1927_StatePlane_New_Mexico_East_FIPS_3001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32013','NAD_1927_StatePlane_New_Mexico_Central_FIPS_3002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32014','NAD_1927_StatePlane_New_Mexico_West_FIPS_3003','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32015','NAD_1927_StatePlane_New_York_East_FIPS_3101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32016','NAD_1927_StatePlane_New_York_Central_FIPS_3102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32017','NAD_1927_StatePlane_New_York_West_FIPS_3103','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4456','NAD_1927_StatePlane_New_York_Long_Island_FIPS_3104','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32019','NAD_1927_StatePlane_North_Carolina_FIPS_3200','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32020','NAD_1927_StatePlane_North_Dakota_North_FIPS_3301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32021','NAD_1927_StatePlane_North_Dakota_South_FIPS_3302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32022','NAD_1927_StatePlane_Ohio_North_FIPS_3401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32023','NAD_1927_StatePlane_Ohio_South_FIPS_3402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32024','NAD_1927_StatePlane_Oklahoma_North_FIPS_3501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32025','NAD_1927_StatePlane_Oklahoma_South_FIPS_3502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32026','NAD_1927_StatePlane_Oregon_North_FIPS_3601','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32027','NAD_1927_StatePlane_Oregon_South_FIPS_3602','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32028','NAD_1927_StatePlane_Pennsylvania_North_FIPS_3701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','4455','NAD_1927_StatePlane_Pennsylvania_South_FIPS_3702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32030','NAD_1927_StatePlane_Rhode_Island_FIPS_3800','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32031','NAD_1927_StatePlane_South_Carolina_North_FIPS_3901','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32033','NAD_1927_StatePlane_South_Carolina_South_FIPS_3902','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32034','NAD_1927_StatePlane_South_Dakota_North_FIPS_4001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32035','NAD_1927_StatePlane_South_Dakota_South_FIPS_4002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','2204','NAD_1927_StatePlane_Tennessee_FIPS_4100','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32037','NAD_1927_StatePlane_Texas_North_FIPS_4201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32038','NAD_1927_StatePlane_Texas_North_Central_FIPS_4202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32039','NAD_1927_StatePlane_Texas_Central_FIPS_4203','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32040','NAD_1927_StatePlane_Texas_South_Central_FIPS_4204','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32041','NAD_1927_StatePlane_Texas_South_FIPS_4205','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32042','NAD_1927_StatePlane_Utah_North_FIPS_4301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32043','NAD_1927_StatePlane_Utah_Central_FIPS_4302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32044','NAD_1927_StatePlane_Utah_South_FIPS_4303','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32045','NAD_1927_StatePlane_Vermont_FIPS_4400','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32046','NAD_1927_StatePlane_Virginia_North_FIPS_4501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32047','NAD_1927_StatePlane_Virginia_South_FIPS_4502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32048','NAD_1927_StatePlane_Washington_North_FIPS_4601','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32049','NAD_1927_StatePlane_Washington_South_FIPS_4602','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32050','NAD_1927_StatePlane_West_Virginia_North_FIPS_4701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32051','NAD_1927_StatePlane_West_Virginia_South_FIPS_4702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32052','NAD_1927_StatePlane_Wisconsin_North_FIPS_4801','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32053','NAD_1927_StatePlane_Wisconsin_Central_FIPS_4802','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32054','NAD_1927_StatePlane_Wisconsin_South_FIPS_4803','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32055','NAD_1927_StatePlane_Wyoming_East_FIPS_4901','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32056','NAD_1927_StatePlane_Wyoming_East_Central_FIPS_4902','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32057','NAD_1927_StatePlane_Wyoming_West_Central_FIPS_4903','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32058','NAD_1927_StatePlane_Wyoming_West_FIPS_4904','ESRI'); +INSERT INTO "projected_crs" VALUES('ESRI','32059','NAD_1927_StatePlane_Puerto_Rico_FIPS_5201',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','1194','PROJCS["NAD_1927_StatePlane_Puerto_Rico_FIPS_5201",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-66.43333333333334],PARAMETER["Standard_Parallel_1",18.03333333333333],PARAMETER["Standard_Parallel_2",18.43333333333333],PARAMETER["Latitude_Of_Origin",17.83333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','32060','NAD_1927_StatePlane_Virgin_Islands_St_Croix_FIPS_5202',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','1254','PROJCS["NAD_1927_StatePlane_Virgin_Islands_St_Croix_FIPS_5202",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-66.43333333333334],PARAMETER["Standard_Parallel_1",18.03333333333333],PARAMETER["Standard_Parallel_2",18.43333333333333],PARAMETER["Latitude_Of_Origin",17.83333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32061','NAD_1927_Guatemala_Norte','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32062','NAD_1927_Guatemala_Sur','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32064','NAD_1927_BLM_Zone_14N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32065','NAD_1927_BLM_Zone_15N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32066','NAD_1927_BLM_Zone_16N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32067','NAD_1927_BLM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32064','NAD_1927_BLM_Zone_14N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32065','NAD_1927_BLM_Zone_15N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32066','NAD_1927_BLM_Zone_16N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32067','NAD_1927_BLM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32081','NAD_1927_MTM_1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32082','NAD_1927_MTM_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32083','NAD_1927_MTM_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32084','NAD_1927_MTM_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32085','NAD_1927_MTM_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32086','NAD_1927_MTM_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32098','NAD_1927_Quebec_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32099','NAD_1927_StatePlane_Louisiana_Offshore_FIPS_1703','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32100','NAD_1983_StatePlane_Montana_FIPS_2500','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32104','NAD_1983_StatePlane_Nebraska_FIPS_2600','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32107','NAD_1983_StatePlane_Nevada_East_FIPS_2701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32108','NAD_1983_StatePlane_Nevada_Central_FIPS_2702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32109','NAD_1983_StatePlane_Nevada_West_FIPS_2703','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32110','NAD_1983_StatePlane_New_Hampshire_FIPS_2800','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32111','NAD_1983_StatePlane_New_Jersey_FIPS_2900','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32112','NAD_1983_StatePlane_New_Mexico_East_FIPS_3001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32113','NAD_1983_StatePlane_New_Mexico_Central_FIPS_3002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32114','NAD_1983_StatePlane_New_Mexico_West_FIPS_3003','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32115','NAD_1983_StatePlane_New_York_East_FIPS_3101','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32116','NAD_1983_StatePlane_New_York_Central_FIPS_3102','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32117','NAD_1983_StatePlane_New_York_West_FIPS_3103','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32118','NAD_1983_StatePlane_New_York_Long_Island_FIPS_3104','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32119','NAD_1983_StatePlane_North_Carolina_FIPS_3200','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32120','NAD_1983_StatePlane_North_Dakota_North_FIPS_3301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32121','NAD_1983_StatePlane_North_Dakota_South_FIPS_3302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32122','NAD_1983_StatePlane_Ohio_North_FIPS_3401','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32123','NAD_1983_StatePlane_Ohio_South_FIPS_3402','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32124','NAD_1983_StatePlane_Oklahoma_North_FIPS_3501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32125','NAD_1983_StatePlane_Oklahoma_South_FIPS_3502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32126','NAD_1983_StatePlane_Oregon_North_FIPS_3601','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32127','NAD_1983_StatePlane_Oregon_South_FIPS_3602','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32128','NAD_1983_StatePlane_Pennsylvania_North_FIPS_3701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32129','NAD_1983_StatePlane_Pennsylvania_South_FIPS_3702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32130','NAD_1983_StatePlane_Rhode_Island_FIPS_3800','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32133','NAD_1983_StatePlane_South_Carolina_FIPS_3900','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32134','NAD_1983_StatePlane_South_Dakota_North_FIPS_4001','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32135','NAD_1983_StatePlane_South_Dakota_South_FIPS_4002','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32136','NAD_1983_StatePlane_Tennessee_FIPS_4100','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32137','NAD_1983_StatePlane_Texas_North_FIPS_4201','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32138','NAD_1983_StatePlane_Texas_North_Central_FIPS_4202','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32139','NAD_1983_StatePlane_Texas_Central_FIPS_4203','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32140','NAD_1983_StatePlane_Texas_South_Central_FIPS_4204','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32141','NAD_1983_StatePlane_Texas_South_FIPS_4205','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32142','NAD_1983_StatePlane_Utah_North_FIPS_4301','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32143','NAD_1983_StatePlane_Utah_Central_FIPS_4302','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32144','NAD_1983_StatePlane_Utah_South_FIPS_4303','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32145','NAD_1983_StatePlane_Vermont_FIPS_4400','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32146','NAD_1983_StatePlane_Virginia_North_FIPS_4501','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32147','NAD_1983_StatePlane_Virginia_South_FIPS_4502','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32148','NAD_1983_StatePlane_Washington_North_FIPS_4601','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32149','NAD_1983_StatePlane_Washington_South_FIPS_4602','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32150','NAD_1983_StatePlane_West_Virginia_North_FIPS_4701','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32151','NAD_1983_StatePlane_West_Virginia_South_FIPS_4702','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32152','NAD_1983_StatePlane_Wisconsin_North_FIPS_4801','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32153','NAD_1983_StatePlane_Wisconsin_Central_FIPS_4802','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32154','NAD_1983_StatePlane_Wisconsin_South_FIPS_4803','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32155','NAD_1983_StatePlane_Wyoming_East_FIPS_4901','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32156','NAD_1983_StatePlane_Wyoming_East_Central_FIPS_4902','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32157','NAD_1983_StatePlane_Wyoming_West_Central_FIPS_4903','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32158','NAD_1983_StatePlane_Wyoming_West_FIPS_4904','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32161','NAD_1983_StatePlane_Puerto_Rico_Virgin_Islands_FIPS_5200','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32164','NAD_1983_BLM_Zone_14N_ftUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32165','NAD_1983_BLM_Zone_15N_ftUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32166','NAD_1983_BLM_Zone_16N_ftUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32167','NAD_1983_BLM_Zone_17N_ftUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32180','NAD_1983_MTM_2_SCoPQ','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32181','NAD_1983_MTM_1','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32182','NAD_1983_MTM_2','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32183','NAD_1983_MTM_3','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32184','NAD_1983_MTM_4','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32185','NAD_1983_MTM_5','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32186','NAD_1983_MTM_6','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32187','NAD_1983_MTM_7','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32188','NAD_1983_MTM_8','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32189','NAD_1983_MTM_9','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32190','NAD_1983_MTM_10','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32191','NAD_1983_MTM_11','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32192','NAD_1983_MTM_12','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32193','NAD_1983_MTM_13','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32194','NAD_1983_MTM_14','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32195','NAD_1983_MTM_15','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32196','NAD_1983_MTM_16','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32197','NAD_1983_MTM_17','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32198','NAD_1983_Quebec_Lambert','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32199','NAD_1983_StatePlane_Louisiana_Offshore_FIPS_1703','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32201','WGS_1972_UTM_Zone_1N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32202','WGS_1972_UTM_Zone_2N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32203','WGS_1972_UTM_Zone_3N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32204','WGS_1972_UTM_Zone_4N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32205','WGS_1972_UTM_Zone_5N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32206','WGS_1972_UTM_Zone_6N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32207','WGS_1972_UTM_Zone_7N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32208','WGS_1972_UTM_Zone_8N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32209','WGS_1972_UTM_Zone_9N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32210','WGS_1972_UTM_Zone_10N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32211','WGS_1972_UTM_Zone_11N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32212','WGS_1972_UTM_Zone_12N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32213','WGS_1972_UTM_Zone_13N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32214','WGS_1972_UTM_Zone_14N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32215','WGS_1972_UTM_Zone_15N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32216','WGS_1972_UTM_Zone_16N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32217','WGS_1972_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32218','WGS_1972_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32219','WGS_1972_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32220','WGS_1972_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32221','WGS_1972_UTM_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32222','WGS_1972_UTM_Zone_22N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32223','WGS_1972_UTM_Zone_23N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32224','WGS_1972_UTM_Zone_24N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32225','WGS_1972_UTM_Zone_25N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32226','WGS_1972_UTM_Zone_26N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32227','WGS_1972_UTM_Zone_27N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32228','WGS_1972_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32229','WGS_1972_UTM_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32230','WGS_1972_UTM_Zone_30N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32231','WGS_1972_UTM_Zone_31N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32232','WGS_1972_UTM_Zone_32N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32233','WGS_1972_UTM_Zone_33N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32234','WGS_1972_UTM_Zone_34N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32235','WGS_1972_UTM_Zone_35N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32236','WGS_1972_UTM_Zone_36N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32237','WGS_1972_UTM_Zone_37N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32238','WGS_1972_UTM_Zone_38N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32239','WGS_1972_UTM_Zone_39N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32240','WGS_1972_UTM_Zone_40N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32241','WGS_1972_UTM_Zone_41N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32242','WGS_1972_UTM_Zone_42N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32243','WGS_1972_UTM_Zone_43N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32244','WGS_1972_UTM_Zone_44N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32245','WGS_1972_UTM_Zone_45N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32246','WGS_1972_UTM_Zone_46N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32247','WGS_1972_UTM_Zone_47N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32248','WGS_1972_UTM_Zone_48N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32249','WGS_1972_UTM_Zone_49N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32250','WGS_1972_UTM_Zone_50N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32251','WGS_1972_UTM_Zone_51N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32252','WGS_1972_UTM_Zone_52N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32253','WGS_1972_UTM_Zone_53N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32254','WGS_1972_UTM_Zone_54N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32255','WGS_1972_UTM_Zone_55N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32256','WGS_1972_UTM_Zone_56N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32257','WGS_1972_UTM_Zone_57N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32258','WGS_1972_UTM_Zone_58N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32259','WGS_1972_UTM_Zone_59N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32260','WGS_1972_UTM_Zone_60N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32301','WGS_1972_UTM_Zone_1S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32302','WGS_1972_UTM_Zone_2S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32303','WGS_1972_UTM_Zone_3S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32304','WGS_1972_UTM_Zone_4S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32305','WGS_1972_UTM_Zone_5S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32306','WGS_1972_UTM_Zone_6S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32307','WGS_1972_UTM_Zone_7S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32308','WGS_1972_UTM_Zone_8S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32309','WGS_1972_UTM_Zone_9S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32310','WGS_1972_UTM_Zone_10S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32311','WGS_1972_UTM_Zone_11S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32312','WGS_1972_UTM_Zone_12S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32313','WGS_1972_UTM_Zone_13S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32314','WGS_1972_UTM_Zone_14S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32315','WGS_1972_UTM_Zone_15S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32316','WGS_1972_UTM_Zone_16S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32317','WGS_1972_UTM_Zone_17S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32318','WGS_1972_UTM_Zone_18S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32319','WGS_1972_UTM_Zone_19S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32320','WGS_1972_UTM_Zone_20S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32321','WGS_1972_UTM_Zone_21S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32322','WGS_1972_UTM_Zone_22S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32323','WGS_1972_UTM_Zone_23S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32324','WGS_1972_UTM_Zone_24S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32325','WGS_1972_UTM_Zone_25S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32326','WGS_1972_UTM_Zone_26S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32327','WGS_1972_UTM_Zone_27S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32328','WGS_1972_UTM_Zone_28S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32329','WGS_1972_UTM_Zone_29S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32330','WGS_1972_UTM_Zone_30S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32331','WGS_1972_UTM_Zone_31S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32332','WGS_1972_UTM_Zone_32S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32333','WGS_1972_UTM_Zone_33S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32334','WGS_1972_UTM_Zone_34S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32335','WGS_1972_UTM_Zone_35S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32336','WGS_1972_UTM_Zone_36S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32337','WGS_1972_UTM_Zone_37S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32338','WGS_1972_UTM_Zone_38S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32339','WGS_1972_UTM_Zone_39S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32340','WGS_1972_UTM_Zone_40S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32341','WGS_1972_UTM_Zone_41S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32342','WGS_1972_UTM_Zone_42S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32343','WGS_1972_UTM_Zone_43S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32344','WGS_1972_UTM_Zone_44S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32345','WGS_1972_UTM_Zone_45S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32346','WGS_1972_UTM_Zone_46S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32347','WGS_1972_UTM_Zone_47S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32348','WGS_1972_UTM_Zone_48S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32349','WGS_1972_UTM_Zone_49S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32350','WGS_1972_UTM_Zone_50S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32351','WGS_1972_UTM_Zone_51S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32352','WGS_1972_UTM_Zone_52S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32353','WGS_1972_UTM_Zone_53S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32354','WGS_1972_UTM_Zone_54S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32355','WGS_1972_UTM_Zone_55S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32356','WGS_1972_UTM_Zone_56S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32357','WGS_1972_UTM_Zone_57S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32358','WGS_1972_UTM_Zone_58S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32359','WGS_1972_UTM_Zone_59S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32360','WGS_1972_UTM_Zone_60S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32601','WGS_1984_UTM_Zone_1N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32602','WGS_1984_UTM_Zone_2N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32603','WGS_1984_UTM_Zone_3N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32604','WGS_1984_UTM_Zone_4N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32605','WGS_1984_UTM_Zone_5N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32606','WGS_1984_UTM_Zone_6N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32607','WGS_1984_UTM_Zone_7N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32608','WGS_1984_UTM_Zone_8N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32609','WGS_1984_UTM_Zone_9N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32610','WGS_1984_UTM_Zone_10N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32611','WGS_1984_UTM_Zone_11N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32612','WGS_1984_UTM_Zone_12N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32613','WGS_1984_UTM_Zone_13N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32614','WGS_1984_UTM_Zone_14N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32615','WGS_1984_UTM_Zone_15N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32616','WGS_1984_UTM_Zone_16N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32617','WGS_1984_UTM_Zone_17N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32618','WGS_1984_UTM_Zone_18N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32619','WGS_1984_UTM_Zone_19N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32620','WGS_1984_UTM_Zone_20N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32621','WGS_1984_UTM_Zone_21N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32622','WGS_1984_UTM_Zone_22N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32623','WGS_1984_UTM_Zone_23N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32624','WGS_1984_UTM_Zone_24N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32625','WGS_1984_UTM_Zone_25N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32626','WGS_1984_UTM_Zone_26N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32627','WGS_1984_UTM_Zone_27N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32628','WGS_1984_UTM_Zone_28N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32629','WGS_1984_UTM_Zone_29N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32630','WGS_1984_UTM_Zone_30N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32631','WGS_1984_UTM_Zone_31N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32632','WGS_1984_UTM_Zone_32N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32633','WGS_1984_UTM_Zone_33N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32634','WGS_1984_UTM_Zone_34N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32635','WGS_1984_UTM_Zone_35N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32636','WGS_1984_UTM_Zone_36N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32637','WGS_1984_UTM_Zone_37N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32638','WGS_1984_UTM_Zone_38N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32639','WGS_1984_UTM_Zone_39N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32640','WGS_1984_UTM_Zone_40N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32641','WGS_1984_UTM_Zone_41N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32642','WGS_1984_UTM_Zone_42N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32643','WGS_1984_UTM_Zone_43N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32644','WGS_1984_UTM_Zone_44N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32645','WGS_1984_UTM_Zone_45N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32646','WGS_1984_UTM_Zone_46N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32647','WGS_1984_UTM_Zone_47N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32648','WGS_1984_UTM_Zone_48N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32649','WGS_1984_UTM_Zone_49N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32650','WGS_1984_UTM_Zone_50N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32651','WGS_1984_UTM_Zone_51N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32652','WGS_1984_UTM_Zone_52N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32653','WGS_1984_UTM_Zone_53N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32654','WGS_1984_UTM_Zone_54N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32655','WGS_1984_UTM_Zone_55N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32656','WGS_1984_UTM_Zone_56N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32657','WGS_1984_UTM_Zone_57N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32658','WGS_1984_UTM_Zone_58N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32659','WGS_1984_UTM_Zone_59N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32660','WGS_1984_UTM_Zone_60N','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32661','UPS_North','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32662','WGS_1984_Plate_Carree','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32664','WGS_1984_BLM_Zone_14N_ftUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32665','WGS_1984_BLM_Zone_15N_ftUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32666','WGS_1984_BLM_Zone_16N_ftUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32667','WGS_1984_BLM_Zone_17N_ftUS','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32701','WGS_1984_UTM_Zone_1S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32702','WGS_1984_UTM_Zone_2S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32703','WGS_1984_UTM_Zone_3S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32704','WGS_1984_UTM_Zone_4S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32705','WGS_1984_UTM_Zone_5S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32706','WGS_1984_UTM_Zone_6S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32707','WGS_1984_UTM_Zone_7S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32708','WGS_1984_UTM_Zone_8S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32709','WGS_1984_UTM_Zone_9S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32710','WGS_1984_UTM_Zone_10S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32711','WGS_1984_UTM_Zone_11S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32712','WGS_1984_UTM_Zone_12S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32713','WGS_1984_UTM_Zone_13S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32714','WGS_1984_UTM_Zone_14S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32715','WGS_1984_UTM_Zone_15S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32716','WGS_1984_UTM_Zone_16S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32717','WGS_1984_UTM_Zone_17S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32718','WGS_1984_UTM_Zone_18S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32719','WGS_1984_UTM_Zone_19S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32720','WGS_1984_UTM_Zone_20S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32721','WGS_1984_UTM_Zone_21S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32722','WGS_1984_UTM_Zone_22S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32723','WGS_1984_UTM_Zone_23S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32724','WGS_1984_UTM_Zone_24S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32725','WGS_1984_UTM_Zone_25S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32726','WGS_1984_UTM_Zone_26S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32727','WGS_1984_UTM_Zone_27S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32728','WGS_1984_UTM_Zone_28S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32729','WGS_1984_UTM_Zone_29S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32730','WGS_1984_UTM_Zone_30S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32731','WGS_1984_UTM_Zone_31S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32732','WGS_1984_UTM_Zone_32S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32733','WGS_1984_UTM_Zone_33S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32734','WGS_1984_UTM_Zone_34S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32735','WGS_1984_UTM_Zone_35S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32736','WGS_1984_UTM_Zone_36S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32737','WGS_1984_UTM_Zone_37S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32738','WGS_1984_UTM_Zone_38S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32739','WGS_1984_UTM_Zone_39S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32740','WGS_1984_UTM_Zone_40S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32741','WGS_1984_UTM_Zone_41S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32742','WGS_1984_UTM_Zone_42S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32743','WGS_1984_UTM_Zone_43S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32744','WGS_1984_UTM_Zone_44S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32745','WGS_1984_UTM_Zone_45S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32746','WGS_1984_UTM_Zone_46S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32747','WGS_1984_UTM_Zone_47S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32748','WGS_1984_UTM_Zone_48S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32749','WGS_1984_UTM_Zone_49S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32750','WGS_1984_UTM_Zone_50S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32751','WGS_1984_UTM_Zone_51S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32752','WGS_1984_UTM_Zone_52S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32753','WGS_1984_UTM_Zone_53S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32754','WGS_1984_UTM_Zone_54S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32755','WGS_1984_UTM_Zone_55S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32756','WGS_1984_UTM_Zone_56S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32757','WGS_1984_UTM_Zone_57S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32758','WGS_1984_UTM_Zone_58S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32759','WGS_1984_UTM_Zone_59S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32760','WGS_1984_UTM_Zone_60S','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32761','UPS_South','ESRI'); +INSERT INTO alias_name VALUES('projected_crs','EPSG','32766','WGS_1984_TM_36_SE','ESRI'); +INSERT INTO "projected_crs" VALUES('ESRI','53001','Sphere_Plate_Carree',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Plate_Carree",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Plate_Carree"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53002','Sphere_Equidistant_Cylindrical',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Equidistant_Cylindrical",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",60.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53003','Sphere_Miller_Cylindrical',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Miller_Cylindrical",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Miller_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53004','Sphere_Mercator',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Mercator",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53008','Sphere_Sinusoidal',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Sinusoidal",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Sinusoidal"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53009','Sphere_Mollweide',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Mollweide",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Mollweide"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53010','Sphere_Eckert_VI',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Eckert_VI",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Eckert_VI"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53011','Sphere_Eckert_V',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Eckert_V",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Eckert_V"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53012','Sphere_Eckert_IV',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Eckert_IV",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Eckert_IV"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53013','Sphere_Eckert_III',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Eckert_III",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Eckert_III"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53014','Sphere_Eckert_II',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Eckert_II",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Eckert_II"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53015','Sphere_Eckert_I',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Eckert_I",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Eckert_I"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53016','Sphere_Gall_Stereographic',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Gall_Stereographic",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gall_Stereographic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53017','Sphere_Behrmann',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Behrmann",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Behrmann"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53018','Sphere_Winkel_I',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Winkel_I",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Winkel_I"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",50.45977625218981],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53019','Sphere_Winkel_II',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Winkel_II",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Winkel_II"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",50.45977625218981],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53021','Sphere_Polyconic',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Polyconic",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Polyconic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53022','Sphere_Quartic_Authalic',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Quartic_Authalic",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Quartic_Authalic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53023','Sphere_Loximuthal',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Loximuthal",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Loximuthal"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Central_Parallel",40.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53024','Sphere_Bonne',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Bonne",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Bonne"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",60.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53025','Sphere_Hotine',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Hotine",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Two_Point_Natural_Origin"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Latitude_Of_1st_Point",0.0],PARAMETER["Latitude_Of_2nd_Point",60.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Longitude_Of_1st_Point",0.0],PARAMETER["Longitude_Of_2nd_Point",60.0],PARAMETER["Latitude_Of_Center",40.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53026','Sphere_Stereographic',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Stereographic",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Stereographic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53027','Sphere_Equidistant_Conic',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Equidistant_Conic",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",60.0],PARAMETER["Standard_Parallel_2",60.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53028','Sphere_Cassini',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Cassini",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Cassini"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53029','Sphere_Van_der_Grinten_I',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Van_der_Grinten_I",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Van_der_Grinten_I"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53030','Sphere_Robinson',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Robinson",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Robinson"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53031','Sphere_Two_Point_Equidistant',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Two_Point_Equidistant",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Two_Point_Equidistant"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Latitude_Of_1st_Point",0.0],PARAMETER["Latitude_Of_2nd_Point",60.0],PARAMETER["Longitude_Of_1st_Point",0.0],PARAMETER["Longitude_Of_2nd_Point",60.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53032','Sphere_Azimuthal_Equidistant',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Azimuthal_Equidistant",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Azimuthal_Equidistant"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53034','Sphere_Cylindrical_Equal_Area',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Cylindrical_Equal_Area",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Cylindrical_Equal_Area"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53042','Sphere_Winkel_Tripel_NGS',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Winkel_Tripel_NGS",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Winkel_Tripel"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",50.467],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53043','Sphere_Aitoff',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Aitoff",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Aitoff"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53044','Sphere_Hammer_Aitoff',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Hammer_Aitoff",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hammer_Aitoff"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53045','Sphere_Flat_Polar_Quartic',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Flat_Polar_Quartic",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Flat_Polar_Quartic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53046','Sphere_Craster_Parabolic',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Craster_Parabolic",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Craster_Parabolic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53048','Sphere_Times',NULL,NULL,NULL,NULL,'EPSG','4035',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Times",GEOGCS["GCS_Sphere",DATUM["D_Sphere",SPHEROID["Sphere",6371000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Times"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53049','Sphere_Vertical_Perspective',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Vertical_Perspective",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Vertical_Near_Side_Perspective"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Longitude_Of_Center",0.0],PARAMETER["Latitude_Of_Center",0.0],PARAMETER["Height",35800000.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53074','Sphere_Wagner_IV',NULL,NULL,NULL,NULL,'EPSG','4047',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Wagner_IV",GEOGCS["GCS_Sphere_GRS_1980_Authalic",DATUM["D_Sphere_GRS_1980_Authalic",SPHEROID["Sphere_GRS_1980_Authalic",6371007.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Wagner_IV"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53075','Sphere_Wagner_V',NULL,NULL,NULL,NULL,'ESRI','104047',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Wagner_V",GEOGCS["GCS_Sphere_GRS_1980_Mean_Radius",DATUM["D_Sphere_GRS_1980_Mean_Radius",SPHEROID["Sphere_GRS_1980_Mean_Radius",6371008.7714,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Wagner_V"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53076','Sphere_Wagner_VII',NULL,NULL,NULL,NULL,'EPSG','4047',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Wagner_VII",GEOGCS["GCS_Sphere_GRS_1980_Authalic",DATUM["D_Sphere_GRS_1980_Authalic",SPHEROID["Sphere_GRS_1980_Authalic",6371007.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Wagner_VII"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53077','Sphere_Natural_Earth',NULL,NULL,NULL,NULL,'ESRI','104047',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Natural_Earth",GEOGCS["GCS_Sphere_GRS_1980_Mean_Radius",DATUM["D_Sphere_GRS_1980_Mean_Radius",SPHEROID["Sphere_GRS_1980_Mean_Radius",6371008.7714,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Natural_Earth"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53078','Sphere_Natural_Earth_II',NULL,NULL,NULL,NULL,'ESRI','104047',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Natural_Earth_II",GEOGCS["GCS_Sphere_GRS_1980_Mean_Radius",DATUM["D_Sphere_GRS_1980_Mean_Radius",SPHEROID["Sphere_GRS_1980_Mean_Radius",6371008.7714,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Natural_Earth_II"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53079','Sphere_Patterson',NULL,NULL,NULL,NULL,'ESRI','104047',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Patterson",GEOGCS["GCS_Sphere_GRS_1980_Mean_Radius",DATUM["D_Sphere_GRS_1980_Mean_Radius",SPHEROID["Sphere_GRS_1980_Mean_Radius",6371008.7714,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Patterson"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','53080','Sphere_Compact_Miller',NULL,NULL,NULL,NULL,'ESRI','104047',NULL,NULL,'EPSG','1262','PROJCS["Sphere_Compact_Miller",GEOGCS["GCS_Sphere_GRS_1980_Mean_Radius",DATUM["D_Sphere_GRS_1980_Mean_Radius",SPHEROID["Sphere_GRS_1980_Mean_Radius",6371008.7714,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Compact_Miller"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54001','World_Plate_Carree',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Plate_Carree",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Plate_Carree"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54002','World_Equidistant_Cylindrical',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Equidistant_Cylindrical",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",60.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54003','World_Miller_Cylindrical',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Miller_Cylindrical",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Miller_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54004','World_Mercator',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Mercator",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54008','World_Sinusoidal',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Sinusoidal",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Sinusoidal"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54009','World_Mollweide',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Mollweide",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Mollweide"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54010','World_Eckert_VI',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Eckert_VI",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Eckert_VI"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54011','World_Eckert_V',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Eckert_V",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Eckert_V"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54012','World_Eckert_IV',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Eckert_IV",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Eckert_IV"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54013','World_Eckert_III',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Eckert_III",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Eckert_III"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54014','World_Eckert_II',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Eckert_II",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Eckert_II"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54015','World_Eckert_I',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Eckert_I",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Eckert_I"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54016','World_Gall_Stereographic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Gall_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gall_Stereographic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54017','World_Behrmann',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Behrmann",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Behrmann"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54018','World_Winkel_I',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Winkel_I",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Winkel_I"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",50.45977625218981],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54019','World_Winkel_II',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Winkel_II",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Winkel_II"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",50.45977625218981],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54021','World_Polyconic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Polyconic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Polyconic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54022','World_Quartic_Authalic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Quartic_Authalic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Quartic_Authalic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54023','World_Loximuthal',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Loximuthal",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Loximuthal"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Central_Parallel",40.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54024','World_Bonne',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Bonne",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Bonne"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",60.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54025','World_Hotine',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Hotine",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Two_Point_Natural_Origin"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Latitude_Of_1st_Point",0.0],PARAMETER["Latitude_Of_2nd_Point",60.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Longitude_Of_1st_Point",0.0],PARAMETER["Longitude_Of_2nd_Point",60.0],PARAMETER["Latitude_Of_Center",40.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54026','World_Stereographic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Stereographic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54027','World_Equidistant_Conic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Equidistant_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",60.0],PARAMETER["Standard_Parallel_2",60.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54028','World_Cassini',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Cassini",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Cassini"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54029','World_Van_der_Grinten_I',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Van_der_Grinten_I",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Van_der_Grinten_I"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54030','World_Robinson',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Robinson",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Robinson"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54031','World_Two_Point_Equidistant',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Two_Point_Equidistant",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Two_Point_Equidistant"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Latitude_Of_1st_Point",0.0],PARAMETER["Latitude_Of_2nd_Point",60.0],PARAMETER["Longitude_Of_1st_Point",0.0],PARAMETER["Longitude_Of_2nd_Point",60.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54032','World_Azimuthal_Equidistant',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Azimuthal_Equidistant",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Azimuthal_Equidistant"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54034','World_Cylindrical_Equal_Area',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Cylindrical_Equal_Area",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Cylindrical_Equal_Area"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54042','World_Winkel_Tripel_NGS',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Winkel_Tripel_NGS",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Winkel_Tripel"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",50.467],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54043','World_Aitoff',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Aitoff",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Aitoff"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54044','World_Hammer_Aitoff',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Hammer_Aitoff",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hammer_Aitoff"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54045','World_Flat_Polar_Quartic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Flat_Polar_Quartic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Flat_Polar_Quartic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54046','World_Craster_Parabolic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Craster_Parabolic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Craster_Parabolic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54048','World_Times',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Times",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Times"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54049','World_Vertical_Perspective',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Vertical_Perspective",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Vertical_Near_Side_Perspective"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Longitude_Of_Center",0.0],PARAMETER["Latitude_Of_Center",0.0],PARAMETER["Height",35800000.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54050','World_Fuller',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Fuller",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Fuller"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Option",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54051','World_Cube',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Cube",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Cube"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Option",1.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54052','World_Goode_Homolosine_Land',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Goode_Homolosine_Land",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Goode_Homolosine"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Option",1.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54053','World_Goode_Homolosine_Ocean',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Goode_Homolosine_Ocean",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Goode_Homolosine"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-160.0],PARAMETER["Option",2.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54074','World_Wagner_IV',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Wagner_IV",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Wagner_IV"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54075','World_Wagner_V',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Wagner_V",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Wagner_V"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54076','World_Wagner_VII',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Wagner_VII",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Wagner_VII"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54077','World_Natural_Earth',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Natural_Earth",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Natural_Earth"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54078','World_Natural_Earth_II',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Natural_Earth_II",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Natural_Earth_II"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54079','World_Patterson',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Patterson",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Patterson"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','54080','World_Compact_Miller',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["World_Compact_Miller",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Compact_Miller"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','65061','NAD_1927_StatePlane_Guam_FIPS_5400',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','1110','PROJCS["NAD_1927_StatePlane_Guam_FIPS_5400",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Polyconic"],PARAMETER["False_Easting",164041.6666666667],PARAMETER["False_Northing",164041.6666666667],PARAMETER["Central_Meridian",144.7487507055556],PARAMETER["Latitude_Of_Origin",13.47246635277778],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','65062','American_Samoa_1962_StatePlane_American_Samoa_FIPS_5300',NULL,NULL,NULL,NULL,'EPSG','4169',NULL,NULL,'EPSG','1027','PROJCS["American_Samoa_1962_StatePlane_American_Samoa_FIPS_5300",GEOGCS["GCS_American_Samoa_1962",DATUM["D_American_Samoa_1962",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",312234.65],PARAMETER["Central_Meridian",-170.0],PARAMETER["Standard_Parallel_1",-14.26666666666667],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",-14.26666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','65161','NAD_1983_StatePlane_Guam_FIPS_5400',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1110','PROJCS["NAD_1983_StatePlane_Guam_FIPS_5400",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Polyconic"],PARAMETER["False_Easting",50000.0],PARAMETER["False_Northing",50000.0],PARAMETER["Central_Meridian",144.7487507055556],PARAMETER["Latitude_Of_Origin",13.47246635277778],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','65163','NAD_1983_StatePlane_Kentucky_FIPS_1600',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1386','PROJCS["NAD_1983_StatePlane_Kentucky_FIPS_1600",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1500000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-85.75],PARAMETER["Standard_Parallel_1",37.08333333333334],PARAMETER["Standard_Parallel_2",38.66666666666666],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102001','Canada_Albers_Equal_Area_Conic',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1061','PROJCS["Canada_Albers_Equal_Area_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-96.0],PARAMETER["Standard_Parallel_1",50.0],PARAMETER["Standard_Parallel_2",70.0],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102002','Canada_Lambert_Conformal_Conic',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1061','PROJCS["Canada_Lambert_Conformal_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-96.0],PARAMETER["Standard_Parallel_1",50.0],PARAMETER["Standard_Parallel_2",70.0],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102003','USA_Contiguous_Albers_Equal_Area_Conic',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1323','PROJCS["USA_Contiguous_Albers_Equal_Area_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-96.0],PARAMETER["Standard_Parallel_1",29.5],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102004','USA_Contiguous_Lambert_Conformal_Conic',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1323','PROJCS["USA_Contiguous_Lambert_Conformal_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-96.0],PARAMETER["Standard_Parallel_1",33.0],PARAMETER["Standard_Parallel_2",45.0],PARAMETER["Latitude_Of_Origin",39.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102005','USA_Contiguous_Equidistant_Conic',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1323','PROJCS["USA_Contiguous_Equidistant_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-96.0],PARAMETER["Standard_Parallel_1",33.0],PARAMETER["Standard_Parallel_2",45.0],PARAMETER["Latitude_Of_Origin",39.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102006','NAD_1983_Alaska_Albers',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1330','PROJCS["NAD_1983_Alaska_Albers",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-154.0],PARAMETER["Standard_Parallel_1",55.0],PARAMETER["Standard_Parallel_2",65.0],PARAMETER["Latitude_Of_Origin",50.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102007','Hawaii_Albers_Equal_Area_Conic',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1334','PROJCS["Hawaii_Albers_Equal_Area_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-157.0],PARAMETER["Standard_Parallel_1",8.0],PARAMETER["Standard_Parallel_2",18.0],PARAMETER["Latitude_Of_Origin",13.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102008','North_America_Albers_Equal_Area_Conic',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1325','PROJCS["North_America_Albers_Equal_Area_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-96.0],PARAMETER["Standard_Parallel_1",20.0],PARAMETER["Standard_Parallel_2",60.0],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102009','North_America_Lambert_Conformal_Conic',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1325','PROJCS["North_America_Lambert_Conformal_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-96.0],PARAMETER["Standard_Parallel_1",20.0],PARAMETER["Standard_Parallel_2",60.0],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102010','North_America_Equidistant_Conic',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1325','PROJCS["North_America_Equidistant_Conic",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-96.0],PARAMETER["Standard_Parallel_1",20.0],PARAMETER["Standard_Parallel_2",60.0],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','3','Africa','Africa',-35.0,39.0,-25.0,55.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102011','Africa_Sinusoidal',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','3','PROJCS["Africa_Sinusoidal",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Sinusoidal"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','4','Asia','Asia',-10.0,85.0,25.0,-175.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102012','Asia_Lambert_Conformal_Conic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','4','PROJCS["Asia_Lambert_Conformal_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",105.0],PARAMETER["Standard_Parallel_1",30.0],PARAMETER["Standard_Parallel_2",62.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','5','Europe','Europe',34.0,85.0,-30.0,50.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102013','Europe_Albers_Equal_Area_Conic',NULL,NULL,NULL,NULL,'EPSG','4230',NULL,NULL,'ESRI','5','PROJCS["Europe_Albers_Equal_Area_Conic",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",10.0],PARAMETER["Standard_Parallel_1",43.0],PARAMETER["Standard_Parallel_2",62.0],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102014','Europe_Lambert_Conformal_Conic',NULL,NULL,NULL,NULL,'EPSG','4230',NULL,NULL,'ESRI','5','PROJCS["Europe_Lambert_Conformal_Conic",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",10.0],PARAMETER["Standard_Parallel_1",43.0],PARAMETER["Standard_Parallel_2",62.0],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','6','South America','South America',-60.0,15.0,-90.0,-30.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102015','South_America_Lambert_Conformal_Conic',NULL,NULL,NULL,NULL,'EPSG','4618',NULL,NULL,'ESRI','6','PROJCS["South_America_Lambert_Conformal_Conic",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160.0,298.25]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-60.0],PARAMETER["Standard_Parallel_1",-5.0],PARAMETER["Standard_Parallel_2",-42.0],PARAMETER["Latitude_Of_Origin",-32.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102016','North_Pole_Azimuthal_Equidistant',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','3475','PROJCS["North_Pole_Azimuthal_Equidistant",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Azimuthal_Equidistant"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Latitude_Of_Origin",90.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102017','North_Pole_Lambert_Azimuthal_Equal_Area',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','3475','PROJCS["North_Pole_Lambert_Azimuthal_Equal_Area",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Azimuthal_Equal_Area"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Latitude_Of_Origin",90.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102018','North_Pole_Stereographic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','3475','PROJCS["North_Pole_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Stereographic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",90.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102019','South_Pole_Azimuthal_Equidistant',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','3474','PROJCS["South_Pole_Azimuthal_Equidistant",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Azimuthal_Equidistant"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Latitude_Of_Origin",-90.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102020','South_Pole_Lambert_Azimuthal_Equal_Area',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','3474','PROJCS["South_Pole_Lambert_Azimuthal_Equal_Area",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Azimuthal_Equal_Area"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Latitude_Of_Origin",-90.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102021','South_Pole_Stereographic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','3474','PROJCS["South_Pole_Stereographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Stereographic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",-90.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102022','Africa_Albers_Equal_Area_Conic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','3','PROJCS["Africa_Albers_Equal_Area_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",25.0],PARAMETER["Standard_Parallel_1",20.0],PARAMETER["Standard_Parallel_2",-23.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102023','Africa_Equidistant_Conic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','3','PROJCS["Africa_Equidistant_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",25.0],PARAMETER["Standard_Parallel_1",20.0],PARAMETER["Standard_Parallel_2",-23.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102024','Africa_Lambert_Conformal_Conic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','3','PROJCS["Africa_Lambert_Conformal_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",25.0],PARAMETER["Standard_Parallel_1",20.0],PARAMETER["Standard_Parallel_2",-23.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','7','Asia - North','Asia - North',10.0,85.0,25.0,-175.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102025','Asia_North_Albers_Equal_Area_Conic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','7','PROJCS["Asia_North_Albers_Equal_Area_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",95.0],PARAMETER["Standard_Parallel_1",15.0],PARAMETER["Standard_Parallel_2",65.0],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102026','Asia_North_Equidistant_Conic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','7','PROJCS["Asia_North_Equidistant_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",95.0],PARAMETER["Standard_Parallel_1",15.0],PARAMETER["Standard_Parallel_2",65.0],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102027','Asia_North_Lambert_Conformal_Conic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','7','PROJCS["Asia_North_Lambert_Conformal_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",95.0],PARAMETER["Standard_Parallel_1",15.0],PARAMETER["Standard_Parallel_2",65.0],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','8','Asia - South','Asia - South',-10.0,30.0,25.0,165.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102028','Asia_South_Albers_Equal_Area_Conic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','8','PROJCS["Asia_South_Albers_Equal_Area_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",125.0],PARAMETER["Standard_Parallel_1",7.0],PARAMETER["Standard_Parallel_2",-32.0],PARAMETER["Latitude_Of_Origin",-15.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102029','Asia_South_Equidistant_Conic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','8','PROJCS["Asia_South_Equidistant_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",125.0],PARAMETER["Standard_Parallel_1",7.0],PARAMETER["Standard_Parallel_2",-32.0],PARAMETER["Latitude_Of_Origin",-15.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102030','Asia_South_Lambert_Conformal_Conic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','8','PROJCS["Asia_South_Lambert_Conformal_Conic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",125.0],PARAMETER["Standard_Parallel_1",7.0],PARAMETER["Standard_Parallel_2",-32.0],PARAMETER["Latitude_Of_Origin",-15.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102031','Europe_Equidistant_Conic',NULL,NULL,NULL,NULL,'EPSG','4230',NULL,NULL,'ESRI','5','PROJCS["Europe_Equidistant_Conic",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",10.0],PARAMETER["Standard_Parallel_1",43.0],PARAMETER["Standard_Parallel_2",62.0],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102032','South_America_Equidistant_Conic',NULL,NULL,NULL,NULL,'EPSG','4618',NULL,NULL,'ESRI','6','PROJCS["South_America_Equidistant_Conic",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160.0,298.25]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-60.0],PARAMETER["Standard_Parallel_1",-5.0],PARAMETER["Standard_Parallel_2",-42.0],PARAMETER["Latitude_Of_Origin",-32.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102033','South_America_Albers_Equal_Area_Conic',NULL,NULL,NULL,NULL,'EPSG','4618',NULL,NULL,'ESRI','6','PROJCS["South_America_Albers_Equal_Area_Conic",GEOGCS["GCS_South_American_1969",DATUM["D_South_American_1969",SPHEROID["GRS_1967_Truncated",6378160.0,298.25]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-60.0],PARAMETER["Standard_Parallel_1",-5.0],PARAMETER["Standard_Parallel_2",-42.0],PARAMETER["Latitude_Of_Origin",-32.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102034','North_Pole_Gnomonic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','3475','PROJCS["North_Pole_Gnomonic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gnomonic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Longitude_Of_Center",0.0],PARAMETER["Latitude_Of_Center",90.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102035','North_Pole_Orthographic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','3475','PROJCS["North_Pole_Orthographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Orthographic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Longitude_Of_Center",0.0],PARAMETER["Latitude_Of_Center",90.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102036','South_Pole_Gnomonic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','3474','PROJCS["South_Pole_Gnomonic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gnomonic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Longitude_Of_Center",0.0],PARAMETER["Latitude_Of_Center",-90.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102037','South_Pole_Orthographic',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','3474','PROJCS["South_Pole_Orthographic",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Orthographic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Longitude_Of_Center",0.0],PARAMETER["Latitude_Of_Center",-90.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102038','The_World_From_Space',NULL,NULL,NULL,NULL,'ESRI','37008',NULL,NULL,'EPSG','1262','PROJCS["The_World_From_Space",GEOGCS["GCS_Sphere_ARC_INFO",DATUM["D_Sphere_ARC_INFO",SPHEROID["Sphere_ARC_INFO",6370997.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Orthographic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Longitude_Of_Center",-72.5333333334],PARAMETER["Latitude_Of_Center",42.5333333333],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102039','USA_Contiguous_Albers_Equal_Area_Conic_USGS_version',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1323','PROJCS["USA_Contiguous_Albers_Equal_Area_Conic_USGS_version",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-96.0],PARAMETER["Standard_Parallel_1",29.5],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",23.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102040','Korean_1985_Korea_Unified_Coordinate_System',NULL,NULL,NULL,NULL,'EPSG','4162',NULL,NULL,'EPSG','3266','PROJCS["Korean_1985_Korea_Unified_Coordinate_System",GEOGCS["GCS_Korean_Datum_1985",DATUM["D_Korean_Datum_1985",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1000000.0],PARAMETER["False_Northing",2000000.0],PARAMETER["Central_Meridian",127.5],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','9','USA - Washington - Bellevue','USA - Washington - Bellevue',47.5,47.69,-122.26,-122.06,0); +INSERT INTO "projected_crs" VALUES('ESRI','102041','COB_NAD83_2007',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'ESRI','9','PROJCS["COB_NAD83_2007",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.896666667],PARAMETER["False_Northing",0.24],PARAMETER["Central_Meridian",-120.8333333333333],PARAMETER["Standard_Parallel_1",47.5],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "area" VALUES('ESRI','10','USA - USFS - Eastern Region','USA - USFS - Eastern Region',35.9,49.5,-97.3,-66.8,0); +INSERT INTO "projected_crs" VALUES('ESRI','102042','NAD_1983_USFS_R9_Albers',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'ESRI','10','PROJCS["NAD_1983_USFS_R9_Albers",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.25],PARAMETER["Standard_Parallel_1",38.25],PARAMETER["Standard_Parallel_2",47.25],PARAMETER["Latitude_Of_Origin",35.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102043','NAD_1983_CORS96_UTM_Zone_20N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2251','PROJCS["NAD_1983_CORS96_UTM_Zone_20N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-63.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102044','NAD_1983_NSRS2007_UTM_Zone_20N',NULL,NULL,NULL,NULL,'EPSG','4759',NULL,NULL,'EPSG','2251','PROJCS["NAD_1983_NSRS2007_UTM_Zone_20N",GEOGCS["GCS_NAD_1983_NSRS2007",DATUM["D_NAD_1983_NSRS2007",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-63.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102045','NAD_1983_2011_UTM_Zone_20N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2251','PROJCS["NAD_1983_2011_UTM_Zone_20N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-63.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102046','NAD_1983_2011_UTM_Zone_59N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','3372','PROJCS["NAD_1983_2011_UTM_Zone_59N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",171.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102047','NAD_1983_2011_UTM_Zone_60N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','3373','PROJCS["NAD_1983_2011_UTM_Zone_60N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",177.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102048','NAD_1983_2011_UTM_Zone_1N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','3374','PROJCS["NAD_1983_2011_UTM_Zone_1N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-177.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102049','NAD_1983_2011_UTM_Zone_2N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','3375','PROJCS["NAD_1983_2011_UTM_Zone_2N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-171.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102050','NAD_1983_2011_UTM_Zone_3N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2133','PROJCS["NAD_1983_2011_UTM_Zone_3N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-165.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102051','NAD_1983_2011_UTM_Zone_4N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2134','PROJCS["NAD_1983_2011_UTM_Zone_4N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-159.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102052','NAD_1983_2011_UTM_Zone_5N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2135','PROJCS["NAD_1983_2011_UTM_Zone_5N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-153.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102053','NAD_1983_2011_UTM_Zone_6N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2136','PROJCS["NAD_1983_2011_UTM_Zone_6N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-147.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102054','NAD_1983_2011_UTM_Zone_7N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','3494','PROJCS["NAD_1983_2011_UTM_Zone_7N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-141.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102055','NAD_1983_2011_UTM_Zone_8N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','3495','PROJCS["NAD_1983_2011_UTM_Zone_8N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-135.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102056','NAD_1983_2011_UTM_Zone_9N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','3496','PROJCS["NAD_1983_2011_UTM_Zone_9N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-129.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102057','NAD_1983_2011_UTM_Zone_10N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','3497','PROJCS["NAD_1983_2011_UTM_Zone_10N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-123.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102058','NAD_1983_2011_UTM_Zone_11N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','3498','PROJCS["NAD_1983_2011_UTM_Zone_11N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-117.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102059','NAD_1983_2011_UTM_Zone_12N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','3499','PROJCS["NAD_1983_2011_UTM_Zone_12N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-111.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102060','D48_Slovenia_TM',NULL,NULL,NULL,NULL,'ESRI','104131',NULL,NULL,'EPSG','1212','PROJCS["D48_Slovenia_TM",GEOGCS["GCS_D48",DATUM["D_D48",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",-5000000.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102061','Everest_Modified_1969_RSO_Malaya_Meters',NULL,NULL,NULL,NULL,'ESRI','37006',NULL,NULL,'EPSG','1690','PROJCS["Everest_Modified_1969_RSO_Malaya_Meters",GEOGCS["GCS_Everest_Modified_1969",DATUM["D_Everest_Modified_1969",SPHEROID["Everest_Modified_1969",6377295.664,300.8017]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Rectified_Skew_Orthomorphic_Natural_Origin"],PARAMETER["False_Easting",804670.24],PARAMETER["False_Northing",0.0],PARAMETER["Scale_Factor",0.99984],PARAMETER["Azimuth",-36.97420943711801],PARAMETER["Longitude_Of_Center",102.25],PARAMETER["Latitude_Of_Center",4.0],PARAMETER["XY_Plane_Rotation",-36.86989764584402],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102062','Kertau_RSO_Malaya_Meters',NULL,NULL,NULL,NULL,'EPSG','4245',NULL,NULL,'EPSG','1690','PROJCS["Kertau_RSO_Malaya_Meters",GEOGCS["GCS_Kertau",DATUM["D_Kertau",SPHEROID["Everest_1830_Modified",6377304.063,300.8017]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Rectified_Skew_Orthomorphic_Natural_Origin"],PARAMETER["False_Easting",804671.299775],PARAMETER["False_Northing",0.0],PARAMETER["Scale_Factor",0.99984],PARAMETER["Azimuth",-36.97420943711801],PARAMETER["Longitude_Of_Center",102.25],PARAMETER["Latitude_Of_Center",4.0],PARAMETER["XY_Plane_Rotation",-36.86989764584402],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102063','Kandawala_Ceylon_Belt_Meters',NULL,NULL,NULL,NULL,'EPSG','4244',NULL,NULL,'EPSG','1218','PROJCS["Kandawala_Ceylon_Belt_Meters",GEOGCS["GCS_Kandawala",DATUM["D_Kandawala",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",160933.56048],PARAMETER["False_Northing",160933.56048],PARAMETER["Central_Meridian",80.77171111111112],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",7.000480277777778],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102064','Kandawala_Ceylon_Belt_Indian_Yards_1937',NULL,NULL,NULL,NULL,'EPSG','4244',NULL,NULL,'EPSG','1218','PROJCS["Kandawala_Ceylon_Belt_Indian_Yards_1937",GEOGCS["GCS_Kandawala",DATUM["D_Kandawala",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",176000.0],PARAMETER["False_Northing",176000.0],PARAMETER["Central_Meridian",80.77171111111112],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",7.000480277777778],UNIT["Yard_Indian_1937",0.91439523]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102065','S-JTSK_Krovak',NULL,NULL,NULL,NULL,'EPSG','4156',NULL,NULL,'EPSG','1306','PROJCS["S-JTSK_Krovak",GEOGCS["GCS_S_JTSK",DATUM["D_S_JTSK",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Krovak"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Pseudo_Standard_Parallel_1",78.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",30.28813975277778],PARAMETER["Longitude_Of_Center",24.83333333333333],PARAMETER["Latitude_Of_Center",49.5],PARAMETER["X_Scale",1.0],PARAMETER["Y_Scale",1.0],PARAMETER["XY_Plane_Rotation",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102066','S-JTSK_Ferro_Krovak_East_North',NULL,NULL,NULL,NULL,'EPSG','4818',NULL,NULL,'EPSG','1306','PROJCS["S-JTSK_Ferro_Krovak_East_North",GEOGCS["GCS_S_JTSK_Ferro",DATUM["D_S_JTSK",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Ferro",-17.66666666666667],UNIT["Degree",0.0174532925199433]],PROJECTION["Krovak"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Pseudo_Standard_Parallel_1",78.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",30.28813975277778],PARAMETER["Longitude_Of_Center",42.5],PARAMETER["Latitude_Of_Center",49.5],PARAMETER["X_Scale",-1.0],PARAMETER["Y_Scale",1.0],PARAMETER["XY_Plane_Rotation",90.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102067','S-JTSK_Krovak_East_North',NULL,NULL,NULL,NULL,'EPSG','4156',NULL,NULL,'EPSG','1306','PROJCS["S-JTSK_Krovak_East_North",GEOGCS["GCS_S_JTSK",DATUM["D_S_JTSK",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Krovak"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Pseudo_Standard_Parallel_1",78.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",30.28813975277778],PARAMETER["Longitude_Of_Center",24.83333333333333],PARAMETER["Latitude_Of_Center",49.5],PARAMETER["X_Scale",-1.0],PARAMETER["Y_Scale",1.0],PARAMETER["XY_Plane_Rotation",90.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102068','EMEP_50_Kilometer_Grid',NULL,NULL,NULL,NULL,'ESRI','104128',NULL,NULL,'ESRI','5','PROJCS["EMEP_50_Kilometer_Grid",GEOGCS["GCS_Sphere_EMEP",DATUM["D_Sphere_EMEP",SPHEROID["Sphere_EMEP",6370000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Stereographic_North_Pole"],PARAMETER["False_Easting",8.0],PARAMETER["False_Northing",110.0],PARAMETER["Central_Meridian",-32.0],PARAMETER["Standard_Parallel_1",60.0],UNIT["50_Kilometers",50000.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102069','EMEP_150_Kilometer_Grid',NULL,NULL,NULL,NULL,'ESRI','104128',NULL,NULL,'ESRI','5','PROJCS["EMEP_150_Kilometer_Grid",GEOGCS["GCS_Sphere_EMEP",DATUM["D_Sphere_EMEP",SPHEROID["Sphere_EMEP",6370000.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Stereographic_North_Pole"],PARAMETER["False_Easting",3.0],PARAMETER["False_Northing",37.0],PARAMETER["Central_Meridian",-32.0],PARAMETER["Standard_Parallel_1",60.0],UNIT["150_Kilometers",150000.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102070','Guernsey_Grid',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','2989','PROJCS["Guernsey_Grid",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",47000.0],PARAMETER["False_Northing",50000.0],PARAMETER["Central_Meridian",-2.416666666666667],PARAMETER["Scale_Factor",0.999997],PARAMETER["Latitude_Of_Origin",49.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102071','AGD_1966_ACT_Grid_AGC_Zone',NULL,NULL,NULL,NULL,'EPSG','4202',NULL,NULL,'EPSG','2283','PROJCS["AGD_1966_ACT_Grid_AGC_Zone",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160.0,298.25]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",4510193.4939],PARAMETER["Central_Meridian",149.0092948333333],PARAMETER["Scale_Factor",1.000086],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102072','AGD_1966_ISG_54_2',NULL,NULL,NULL,NULL,'EPSG','4202',NULL,NULL,'EPSG','1562','PROJCS["AGD_1966_ISG_54_2",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160.0,298.25]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",5000000.0],PARAMETER["Central_Meridian",141.0],PARAMETER["Scale_Factor",0.99994],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102073','AGD_1966_ISG_54_3',NULL,NULL,NULL,NULL,'EPSG','4202',NULL,NULL,'EPSG','1562','PROJCS["AGD_1966_ISG_54_3",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160.0,298.25]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",5000000.0],PARAMETER["Central_Meridian",143.0],PARAMETER["Scale_Factor",0.99994],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102074','AGD_1966_ISG_55_1',NULL,NULL,NULL,NULL,'EPSG','4202',NULL,NULL,'EPSG','1563','PROJCS["AGD_1966_ISG_55_1",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160.0,298.25]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",5000000.0],PARAMETER["Central_Meridian",145.0],PARAMETER["Scale_Factor",0.99994],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102075','AGD_1966_ISG_55_2',NULL,NULL,NULL,NULL,'EPSG','4202',NULL,NULL,'EPSG','1563','PROJCS["AGD_1966_ISG_55_2",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160.0,298.25]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",5000000.0],PARAMETER["Central_Meridian",147.0],PARAMETER["Scale_Factor",0.99994],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102076','AGD_1966_ISG_55_3',NULL,NULL,NULL,NULL,'EPSG','4202',NULL,NULL,'EPSG','1563','PROJCS["AGD_1966_ISG_55_3",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160.0,298.25]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",5000000.0],PARAMETER["Central_Meridian",149.0],PARAMETER["Scale_Factor",0.99994],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102077','AGD_1966_ISG_56_1',NULL,NULL,NULL,NULL,'EPSG','4202',NULL,NULL,'EPSG','1564','PROJCS["AGD_1966_ISG_56_1",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160.0,298.25]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",5000000.0],PARAMETER["Central_Meridian",151.0],PARAMETER["Scale_Factor",0.99994],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102078','AGD_1966_ISG_56_2',NULL,NULL,NULL,NULL,'EPSG','4202',NULL,NULL,'EPSG','1564','PROJCS["AGD_1966_ISG_56_2",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160.0,298.25]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",5000000.0],PARAMETER["Central_Meridian",153.0],PARAMETER["Scale_Factor",0.99994],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102079','AGD_1966_ISG_56_3',NULL,NULL,NULL,NULL,'EPSG','4202',NULL,NULL,'EPSG','1564','PROJCS["AGD_1966_ISG_56_3",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160.0,298.25]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",5000000.0],PARAMETER["Central_Meridian",155.0],PARAMETER["Scale_Factor",0.99994],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102080','Korea_2000_Korea_Unified_Coordinate_System',NULL,NULL,NULL,NULL,'EPSG','4737',NULL,NULL,'EPSG','1135','PROJCS["Korea_2000_Korea_Unified_Coordinate_System",GEOGCS["GCS_Korea_2000",DATUM["D_Korea_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1000000.0],PARAMETER["False_Northing",2000000.0],PARAMETER["Central_Meridian",127.5],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102081','Korea_2000_Korea_West_Belt_2010',NULL,NULL,NULL,NULL,'EPSG','4737',NULL,NULL,'EPSG','1498','PROJCS["Korea_2000_Korea_West_Belt_2010",GEOGCS["GCS_Korea_2000",DATUM["D_Korea_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",600000.0],PARAMETER["Central_Meridian",125.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102082','Korea_2000_Korea_Central_Belt_2010',NULL,NULL,NULL,NULL,'EPSG','4737',NULL,NULL,'EPSG','1497','PROJCS["Korea_2000_Korea_Central_Belt_2010",GEOGCS["GCS_Korea_2000",DATUM["D_Korea_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",600000.0],PARAMETER["Central_Meridian",127.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102083','Korea_2000_Korea_East_Belt_2010',NULL,NULL,NULL,NULL,'EPSG','4737',NULL,NULL,'EPSG','1496','PROJCS["Korea_2000_Korea_East_Belt_2010",GEOGCS["GCS_Korea_2000",DATUM["D_Korea_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",600000.0],PARAMETER["Central_Meridian",129.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102084','Korea_2000_Korea_East_Sea_Belt_2010',NULL,NULL,NULL,NULL,'EPSG','4737',NULL,NULL,'EPSG','3720','PROJCS["Korea_2000_Korea_East_Sea_Belt_2010",GEOGCS["GCS_Korea_2000",DATUM["D_Korea_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",600000.0],PARAMETER["Central_Meridian",131.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102085','Korean_1985_Modified_Korea_West_Belt',NULL,NULL,NULL,NULL,'EPSG','4162',NULL,NULL,'EPSG','1498','PROJCS["Korean_1985_Modified_Korea_West_Belt",GEOGCS["GCS_Korean_Datum_1985",DATUM["D_Korean_Datum_1985",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",125.0028902777778],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102086','Korean_1985_Modified_Korea_Central_Belt',NULL,NULL,NULL,NULL,'EPSG','4162',NULL,NULL,'EPSG','3730','PROJCS["Korean_1985_Modified_Korea_Central_Belt",GEOGCS["GCS_Korean_Datum_1985",DATUM["D_Korean_Datum_1985",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",127.0028902777778],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102087','Korean_1985_Modified_Korea_Central_Belt_Jeju',NULL,NULL,NULL,NULL,'EPSG','4162',NULL,NULL,'EPSG','3721','PROJCS["Korean_1985_Modified_Korea_Central_Belt_Jeju",GEOGCS["GCS_Korean_Datum_1985",DATUM["D_Korean_Datum_1985",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",550000.0],PARAMETER["Central_Meridian",127.0028902777778],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102088','Korean_1985_Modified_Korea_East_Belt',NULL,NULL,NULL,NULL,'EPSG','4162',NULL,NULL,'EPSG','1496','PROJCS["Korean_1985_Modified_Korea_East_Belt",GEOGCS["GCS_Korean_Datum_1985",DATUM["D_Korean_Datum_1985",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",129.0028902777778],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102089','Korean_1985_Modified_Korea_East_Sea_Belt',NULL,NULL,NULL,NULL,'EPSG','4162',NULL,NULL,'EPSG','3720','PROJCS["Korean_1985_Modified_Korea_East_Sea_Belt",GEOGCS["GCS_Korean_Datum_1985",DATUM["D_Korean_Datum_1985",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",131.0028902777778],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102090','Bermuda_2000_National_Grid',NULL,NULL,NULL,NULL,'EPSG','4762',NULL,NULL,'EPSG','1047','PROJCS["Bermuda_2000_National_Grid",GEOGCS["GCS_Bermuda_2000",DATUM["D_Bermuda_2000",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",550000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-64.75],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",32.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102091','Monte_Mario_Italy_1',NULL,NULL,NULL,NULL,'EPSG','4265',NULL,NULL,'EPSG','1718','PROJCS["Monte_Mario_Italy_1",GEOGCS["GCS_Monte_Mario",DATUM["D_Monte_Mario",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102092','Monte_Mario_Italy_2',NULL,NULL,NULL,NULL,'EPSG','4265',NULL,NULL,'EPSG','1719','PROJCS["Monte_Mario_Italy_2",GEOGCS["GCS_Monte_Mario",DATUM["D_Monte_Mario",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2520000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102093','Roma_1940_Gauss_Boaga_Est',NULL,NULL,NULL,NULL,'ESRI','104127',NULL,NULL,'EPSG','1719','PROJCS["Roma_1940_Gauss_Boaga_Est",GEOGCS["GCS_Roma_1940",DATUM["D_Roma_1940",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2520000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102094','Roma_1940_Gauss_Boaga_Ovest',NULL,NULL,NULL,NULL,'ESRI','104127',NULL,NULL,'EPSG','1718','PROJCS["Roma_1940_Gauss_Boaga_Ovest",GEOGCS["GCS_Roma_1940",DATUM["D_Roma_1940",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102095','JAD_2001_Jamaica_Grid',NULL,NULL,NULL,NULL,'EPSG','4758',NULL,NULL,'EPSG','3342','PROJCS["JAD_2001_Jamaica_Grid",GEOGCS["GCS_JAD_2001",DATUM["D_Jamaica_2001",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",750000.0],PARAMETER["False_Northing",650000.0],PARAMETER["Central_Meridian",-77.0],PARAMETER["Standard_Parallel_1",18.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",18.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102096','Bab_South_Palau_Azimuthal_Equidistant',NULL,NULL,NULL,NULL,'ESRI','104112',NULL,NULL,'EPSG','1185','PROJCS["Bab_South_Palau_Azimuthal_Equidistant",GEOGCS["GCS_Bab_South",DATUM["D_Bab_South",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Azimuthal_Equidistant"],PARAMETER["False_Easting",50000.0],PARAMETER["False_Northing",150000.0],PARAMETER["Central_Meridian",134.4504448611111],PARAMETER["Latitude_Of_Origin",7.35122211111111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102097','ETRS_1989_UTM_Zone_26N',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'EPSG','2855','PROJCS["ETRS_1989_UTM_Zone_26N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-27.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102098','ETRS_1989_UTM_Zone_27N',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'EPSG','2856','PROJCS["ETRS_1989_UTM_Zone_27N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-21.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102099','ETRS_1989_UTM_Zone_39N',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'EPSG','2868','PROJCS["ETRS_1989_UTM_Zone_39N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",51.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102100','WGS_1984_Web_Mercator_Auxiliary_Sphere',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','3544','PROJCS["WGS_1984_Web_Mercator_Auxiliary_Sphere",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Mercator_Auxiliary_Sphere"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",0.0],PARAMETER["Auxiliary_Sphere_Type",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102101','NGO_1948_Norway_Zone_1',NULL,NULL,NULL,NULL,'EPSG','4273',NULL,NULL,'EPSG','1741','PROJCS["NGO_1948_Norway_Zone_1",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",6.05625],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",58.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102102','NGO_1948_Norway_Zone_2',NULL,NULL,NULL,NULL,'EPSG','4273',NULL,NULL,'EPSG','1742','PROJCS["NGO_1948_Norway_Zone_2",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",8.389583333333333],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",58.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102103','NGO_1948_Norway_Zone_3',NULL,NULL,NULL,NULL,'EPSG','4273',NULL,NULL,'EPSG','1743','PROJCS["NGO_1948_Norway_Zone_3",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",10.72291666666667],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",58.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102104','NGO_1948_Norway_Zone_4',NULL,NULL,NULL,NULL,'EPSG','4273',NULL,NULL,'EPSG','1744','PROJCS["NGO_1948_Norway_Zone_4",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",13.22291666666667],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",58.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102105','NGO_1948_Norway_Zone_5',NULL,NULL,NULL,NULL,'EPSG','4273',NULL,NULL,'EPSG','1745','PROJCS["NGO_1948_Norway_Zone_5",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",16.88958333333333],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",58.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102106','NGO_1948_Norway_Zone_6',NULL,NULL,NULL,NULL,'EPSG','4273',NULL,NULL,'EPSG','1746','PROJCS["NGO_1948_Norway_Zone_6",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",20.88958333333333],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",58.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102107','NGO_1948_Norway_Zone_7',NULL,NULL,NULL,NULL,'EPSG','4273',NULL,NULL,'EPSG','1747','PROJCS["NGO_1948_Norway_Zone_7",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",24.88958333333333],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",58.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102108','NGO_1948_Norway_Zone_8',NULL,NULL,NULL,NULL,'EPSG','4273',NULL,NULL,'EPSG','1748','PROJCS["NGO_1948_Norway_Zone_8",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",29.05625],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",58.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102109','ETRS_1989_Slovenia_TM',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'EPSG','1212','PROJCS["ETRS_1989_Slovenia_TM",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",-5000000.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102110','RGF_1993_Lambert_93',NULL,NULL,NULL,NULL,'EPSG','4171',NULL,NULL,'EPSG','1096','PROJCS["RGF_1993_Lambert_93",GEOGCS["GCS_RGF_1993",DATUM["D_RGF_1993",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",6600000.0],PARAMETER["Central_Meridian",3.0],PARAMETER["Standard_Parallel_1",44.0],PARAMETER["Standard_Parallel_2",49.0],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102111','Chatham_Islands_1979_Map_Grid',NULL,NULL,NULL,NULL,'EPSG','4673',NULL,NULL,'EPSG','2889','PROJCS["Chatham_Islands_1979_Map_Grid",GEOGCS["GCS_Chatham_Islands_1979",DATUM["D_Chatham_Islands_1979",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",350000.0],PARAMETER["False_Northing",650000.0],PARAMETER["Central_Meridian",-176.5],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",-44.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102112','NZGD_2000_Chatham_Island_Circuit',NULL,NULL,NULL,NULL,'EPSG','4167',NULL,NULL,'EPSG','2889','PROJCS["NZGD_2000_Chatham_Island_Circuit",GEOGCS["GCS_NZGD_2000",DATUM["D_NZGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",800000.0],PARAMETER["Central_Meridian",-176.5],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",-44.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102113','WGS_1984_Web_Mercator',NULL,NULL,NULL,NULL,'EPSG','4055',NULL,NULL,'EPSG','3544','PROJCS["WGS_1984_Web_Mercator",GEOGCS["GCS_WGS_1984_Major_Auxiliary_Sphere",DATUM["D_WGS_1984_Major_Auxiliary_Sphere",SPHEROID["WGS_1984_Major_Auxiliary_Sphere",6378137.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102114','Old_Hawaiian_UTM_Zone_4N',NULL,NULL,NULL,NULL,'EPSG','4135',NULL,NULL,'EPSG','3488','PROJCS["Old_Hawaiian_UTM_Zone_4N",GEOGCS["GCS_Old_Hawaiian",DATUM["D_Old_Hawaiian",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-159.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102115','Old_Hawaiian_UTM_Zone_5N',NULL,NULL,NULL,NULL,'EPSG','4135',NULL,NULL,'EPSG','3491','PROJCS["Old_Hawaiian_UTM_Zone_5N",GEOGCS["GCS_Old_Hawaiian",DATUM["D_Old_Hawaiian",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-153.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102116','American_Samoa_1962_UTM_Zone_2S',NULL,NULL,NULL,NULL,'EPSG','4169',NULL,NULL,'EPSG','1027','PROJCS["American_Samoa_1962_UTM_Zone_2S",GEOGCS["GCS_American_Samoa_1962",DATUM["D_American_Samoa_1962",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",10000000.0],PARAMETER["Central_Meridian",-171.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102117','NAD_1927_Alaska_Albers_Meters',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','1330','PROJCS["NAD_1927_Alaska_Albers_Meters",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-154.0],PARAMETER["Standard_Parallel_1",55.0],PARAMETER["Standard_Parallel_2",65.0],PARAMETER["Latitude_Of_Origin",50.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102118','NAD_1927_Georgia_Statewide_Albers',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','1380','PROJCS["NAD_1927_Georgia_Statewide_Albers",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-83.5],PARAMETER["Standard_Parallel_1",29.5],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",23.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102119','NAD_1927_Texas_Statewide_Mapping_System',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','1412','PROJCS["NAD_1927_Texas_Statewide_Mapping_System",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000.0],PARAMETER["False_Northing",3000000.0],PARAMETER["Central_Meridian",-100.0],PARAMETER["Standard_Parallel_1",27.41666666666667],PARAMETER["Standard_Parallel_2",34.91666666666666],PARAMETER["Latitude_Of_Origin",31.16666666666667],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102120','NAD_1927_Michigan_GeoRef_Feet_US',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','1391','PROJCS["NAD_1927_Michigan_GeoRef_Feet_US",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",8355401.583],PARAMETER["False_Northing",-14284780.538],PARAMETER["Scale_Factor",0.9996],PARAMETER["Azimuth",337.25556],PARAMETER["Longitude_Of_Center",-86.0],PARAMETER["Latitude_Of_Center",45.30916666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102121','NAD_1983_Michigan_GeoRef_Feet_US',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1391','PROJCS["NAD_1983_Michigan_GeoRef_Feet_US",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",8355401.583],PARAMETER["False_Northing",-14284780.538],PARAMETER["Scale_Factor",0.9996],PARAMETER["Azimuth",337.25556],PARAMETER["Longitude_Of_Center",-86.0],PARAMETER["Latitude_Of_Center",45.30916666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102122','NAD_1927_Michigan_GeoRef_Meters',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','1391','PROJCS["NAD_1927_Michigan_GeoRef_Meters",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",2546731.496],PARAMETER["False_Northing",-4354009.816],PARAMETER["Scale_Factor",0.9996],PARAMETER["Azimuth",337.25556],PARAMETER["Longitude_Of_Center",-86.0],PARAMETER["Latitude_Of_Center",45.30916666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102123','NAD_1983_Michigan_GeoRef_Meters',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1391','PROJCS["NAD_1983_Michigan_GeoRef_Meters",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",2546731.496],PARAMETER["False_Northing",-4354009.816],PARAMETER["Scale_Factor",0.9996],PARAMETER["Azimuth",337.25556],PARAMETER["Longitude_Of_Center",-86.0],PARAMETER["Latitude_Of_Center",45.30916666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102124','NAD_1927_UTM_Zone_1N',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','3374','PROJCS["NAD_1927_UTM_Zone_1N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-177.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102125','NAD_1927_UTM_Zone_2N',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','3375','PROJCS["NAD_1927_UTM_Zone_2N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-171.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102126','NAD_1927_UTM_Zone_59N',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','3372','PROJCS["NAD_1927_UTM_Zone_59N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",171.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102127','NAD_1927_UTM_Zone_60N',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','3373','PROJCS["NAD_1927_UTM_Zone_60N",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",177.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102128','NAD_1983_UTM_Zone_1N',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','3374','PROJCS["NAD_1983_UTM_Zone_1N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-177.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102129','NAD_1983_UTM_Zone_2N',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','3375','PROJCS["NAD_1983_UTM_Zone_2N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-171.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102130','NAD_1983_UTM_Zone_59N',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','3372','PROJCS["NAD_1983_UTM_Zone_59N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",171.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102131','NAD_1983_UTM_Zone_60N',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','3373','PROJCS["NAD_1983_UTM_Zone_60N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",177.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102132','NGO_1948_UTM_Zone_32N',NULL,NULL,NULL,NULL,'EPSG','4273',NULL,NULL,'EPSG','2062','PROJCS["NGO_1948_UTM_Zone_32N",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102133','NGO_1948_UTM_Zone_33N',NULL,NULL,NULL,NULL,'EPSG','4273',NULL,NULL,'EPSG','2064','PROJCS["NGO_1948_UTM_Zone_33N",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102134','NGO_1948_UTM_Zone_34N',NULL,NULL,NULL,NULL,'EPSG','4273',NULL,NULL,'EPSG','2066','PROJCS["NGO_1948_UTM_Zone_34N",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",21.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102135','NGO_1948_UTM_Zone_35N',NULL,NULL,NULL,NULL,'EPSG','4273',NULL,NULL,'EPSG','2068','PROJCS["NGO_1948_UTM_Zone_35N",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",27.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','11','Norway - Baerum Kommune','Norway - Baerum Kommune',59.8254,60.0366,10.3371,10.6725,0); +INSERT INTO "projected_crs" VALUES('ESRI','102136','NGO_1948_Baerum_Kommune',NULL,NULL,NULL,NULL,'EPSG','4273',NULL,NULL,'ESRI','11','PROJCS["NGO_1948_Baerum_Kommune",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",19999.32],PARAMETER["False_Northing",-202977.79],PARAMETER["Central_Meridian",10.72291666666667],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",58.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','12','Norway - Bergenhalvoen Kommune','Norway - Bergenhalvoen Kommune',60.1651,60.5437,5.1374,5.6993,0); +INSERT INTO "projected_crs" VALUES('ESRI','102137','NGO_1948_Bergenhalvoen',NULL,NULL,NULL,NULL,'EPSG','4273',NULL,NULL,'ESRI','12','PROJCS["NGO_1948_Bergenhalvoen",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",100000.0],PARAMETER["False_Northing",-200000.0],PARAMETER["Central_Meridian",6.05625],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",58.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','13','Norway - Oslo Kommune','Norway - Oslo Kommune',59.81,60.14,10.48,10.97,0); +INSERT INTO "projected_crs" VALUES('ESRI','102138','NGO_1948_Oslo_Kommune',NULL,NULL,NULL,NULL,'EPSG','4273',NULL,NULL,'ESRI','13','PROJCS["NGO_1948_Oslo_Kommune",GEOGCS["GCS_NGO_1948",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",-212979.18],PARAMETER["Central_Meridian",10.72291666666667],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",58.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102139','EUREF_FIN_TM35FIN',NULL,NULL,NULL,NULL,'ESRI','104129',NULL,NULL,'EPSG','1095','PROJCS["EUREF_FIN_TM35FIN",GEOGCS["GCS_EUREF_FIN",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",27.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102140','Hong_Kong_1980_Grid',NULL,NULL,NULL,NULL,'EPSG','4611',NULL,NULL,'EPSG','1118','PROJCS["Hong_Kong_1980_Grid",GEOGCS["GCS_Hong_Kong_1980",DATUM["D_Hong_Kong_1980",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",836694.05],PARAMETER["False_Northing",819069.8],PARAMETER["Central_Meridian",114.1785555555556],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",22.31213333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102141','Hong_Kong_1980_UTM_Zone_49N',NULL,NULL,NULL,NULL,'EPSG','4611',NULL,NULL,'EPSG','1118','PROJCS["Hong_Kong_1980_UTM_Zone_49N",GEOGCS["GCS_Hong_Kong_1980",DATUM["D_Hong_Kong_1980",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",111.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102142','Hong_Kong_1980_UTM_Zone_50N',NULL,NULL,NULL,NULL,'EPSG','4611',NULL,NULL,'EPSG','1118','PROJCS["Hong_Kong_1980_UTM_Zone_50N",GEOGCS["GCS_Hong_Kong_1980",DATUM["D_Hong_Kong_1980",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",117.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102143','QND_1995_UTM_39N',NULL,NULL,NULL,NULL,'EPSG','4614',NULL,NULL,'EPSG','1195','PROJCS["QND_1995_UTM_39N",GEOGCS["GCS_QND_1995",DATUM["D_QND_1995",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",51.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102144','Merchich_Degree_UTM_Zone_28N',NULL,NULL,NULL,NULL,'ESRI','104261',NULL,NULL,'EPSG','1256','PROJCS["Merchich_Degree_UTM_Zone_28N",GEOGCS["GCS_Merchich_Degree",DATUM["D_Merchich",SPHEROID["Clarke_1880_IGN",6378249.2,293.4660212936265]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102145','JGD_2000_UTM_Zone_51N',NULL,NULL,NULL,NULL,'EPSG','4612',NULL,NULL,'EPSG','3959','PROJCS["JGD_2000_UTM_Zone_51N",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",123.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102146','JGD_2000_UTM_Zone_52N',NULL,NULL,NULL,NULL,'EPSG','4612',NULL,NULL,'EPSG','3960','PROJCS["JGD_2000_UTM_Zone_52N",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",129.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102147','JGD_2000_UTM_Zone_53N',NULL,NULL,NULL,NULL,'EPSG','4612',NULL,NULL,'EPSG','3961','PROJCS["JGD_2000_UTM_Zone_53N",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",135.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102148','JGD_2000_UTM_Zone_54N',NULL,NULL,NULL,NULL,'EPSG','4612',NULL,NULL,'EPSG','3962','PROJCS["JGD_2000_UTM_Zone_54N",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",141.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102149','JGD_2000_UTM_Zone_55N',NULL,NULL,NULL,NULL,'EPSG','4612',NULL,NULL,'EPSG','3963','PROJCS["JGD_2000_UTM_Zone_55N",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",147.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102150','JGD_2000_UTM_Zone_56N',NULL,NULL,NULL,NULL,'EPSG','4612',NULL,NULL,'EPSG','1983','PROJCS["JGD_2000_UTM_Zone_56N",GEOGCS["GCS_JGD_2000",DATUM["D_JGD_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",153.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102151','Tokyo_UTM_Zone_51N',NULL,NULL,NULL,NULL,'EPSG','4301',NULL,NULL,'EPSG','2951','PROJCS["Tokyo_UTM_Zone_51N",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",123.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102152','Tokyo_UTM_Zone_52N',NULL,NULL,NULL,NULL,'EPSG','4301',NULL,NULL,'EPSG','2952','PROJCS["Tokyo_UTM_Zone_52N",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",129.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102153','Tokyo_UTM_Zone_53N',NULL,NULL,NULL,NULL,'EPSG','4301',NULL,NULL,'EPSG','2953','PROJCS["Tokyo_UTM_Zone_53N",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",135.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102154','Tokyo_UTM_Zone_54N',NULL,NULL,NULL,NULL,'EPSG','4301',NULL,NULL,'EPSG','2954','PROJCS["Tokyo_UTM_Zone_54N",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",141.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102155','Tokyo_UTM_Zone_55N',NULL,NULL,NULL,NULL,'EPSG','4301',NULL,NULL,'EPSG','2955','PROJCS["Tokyo_UTM_Zone_55N",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",147.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102156','Tokyo_UTM_Zone_56N',NULL,NULL,NULL,NULL,'EPSG','4301',NULL,NULL,'EPSG','1983','PROJCS["Tokyo_UTM_Zone_56N",GEOGCS["GCS_Tokyo",DATUM["D_Tokyo",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",153.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102157','ETRS_1989_Kosovo_Grid',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'EPSG','3534','PROJCS["ETRS_1989_Kosovo_Grid",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",7500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",21.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102158','Jordan_JTM',NULL,NULL,NULL,NULL,'ESRI','104130',NULL,NULL,'EPSG','1130','PROJCS["Jordan_JTM",GEOGCS["GCS_Jordan",DATUM["D_Jordan",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",-3000000.0],PARAMETER["Central_Meridian",37.0],PARAMETER["Scale_Factor",0.9998],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102159','Observatorio_Meteorologico_1965_Macau_Grid',NULL,NULL,NULL,NULL,'ESRI','104126',NULL,NULL,'EPSG','1147','PROJCS["Observatorio_Meteorologico_1965_Macau_Grid",GEOGCS["GCS_Observatorio_Meteorologico_1965",DATUM["D_Observatorio_Meteorologico_1965",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",20000.0],PARAMETER["False_Northing",20000.0],PARAMETER["Central_Meridian",113.5364694444444],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",22.21239722222222],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102160','Datum_73_Hayford_Gauss_IGeoE',NULL,NULL,NULL,NULL,'EPSG','4274',NULL,NULL,'EPSG','1193','PROJCS["Datum_73_Hayford_Gauss_IGeoE",GEOGCS["GCS_Datum_73",DATUM["D_Datum_73",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200180.598],PARAMETER["False_Northing",299913.01],PARAMETER["Central_Meridian",-8.131906111111112],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102161','Datum_73_Hayford_Gauss_IPCC',NULL,NULL,NULL,NULL,'EPSG','4274',NULL,NULL,'EPSG','1193','PROJCS["Datum_73_Hayford_Gauss_IPCC",GEOGCS["GCS_Datum_73",DATUM["D_Datum_73",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",180.598],PARAMETER["False_Northing",-86.99],PARAMETER["Central_Meridian",-8.131906111111112],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102162','Graciosa_Base_SW_1948_UTM_Zone_26N',NULL,NULL,NULL,NULL,'ESRI','37241',NULL,NULL,'EPSG','1301','PROJCS["Graciosa_Base_SW_1948_UTM_Zone_26N",GEOGCS["GCS_Graciosa_Base_SW_1948",DATUM["D_Graciosa_Base_SW_1948",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-27.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102163','Lisboa_Bessel_Bonne',NULL,NULL,NULL,NULL,'ESRI','104105',NULL,NULL,'EPSG','1193','PROJCS["Lisboa_Bessel_Bonne",GEOGCS["GCS_Datum_Lisboa_Bessel",DATUM["D_Datum_Lisboa_Bessel",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Bonne"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-8.131906111111112],PARAMETER["Standard_Parallel_1",39.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102164','Lisboa_Hayford_Gauss_IGeoE',NULL,NULL,NULL,NULL,'ESRI','104106',NULL,NULL,'EPSG','1193','PROJCS["Lisboa_Hayford_Gauss_IGeoE",GEOGCS["GCS_Datum_Lisboa_Hayford",DATUM["D_Datum_Lisboa_Hayford",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",300000.0],PARAMETER["Central_Meridian",-8.131906111111112],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102165','Lisboa_Hayford_Gauss_IPCC',NULL,NULL,NULL,NULL,'ESRI','104106',NULL,NULL,'EPSG','1193','PROJCS["Lisboa_Hayford_Gauss_IPCC",GEOGCS["GCS_Datum_Lisboa_Hayford",DATUM["D_Datum_Lisboa_Hayford",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-8.131906111111112],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102166','Observatorio_Meteorologico_1939_UTM_Zone_25N',NULL,NULL,NULL,NULL,'ESRI','37245',NULL,NULL,'EPSG','1344','PROJCS["Observatorio_Meteorologico_1939_UTM_Zone_25N",GEOGCS["GCS_Observatorio_Meteorologico_1939",DATUM["D_Observatorio_Meteorologico_1939",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-33.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102167','Porto_Santo_1936_UTM_Zone_28N',NULL,NULL,NULL,NULL,'EPSG','4615',NULL,NULL,'EPSG','1314','PROJCS["Porto_Santo_1936_UTM_Zone_28N",GEOGCS["GCS_Porto_Santo_1936",DATUM["D_Porto_Santo_1936",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102168','Sao_Braz_UTM_Zone_26N',NULL,NULL,NULL,NULL,'ESRI','37249',NULL,NULL,'EPSG','1345','PROJCS["Sao_Braz_UTM_Zone_26N",GEOGCS["GCS_Sao_Braz",DATUM["D_Sao_Braz",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-27.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102169','Selvagem_Grande_1938_UTM_Zone_28N',NULL,NULL,NULL,NULL,'EPSG','4616',NULL,NULL,'EPSG','2779','PROJCS["Selvagem_Grande_1938_UTM_Zone_28N",GEOGCS["GCS_Selvagem_Grande_1938",DATUM["D_Selvagem_Grande_1938",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102170','AGD_1966_VICGRID',NULL,NULL,NULL,NULL,'EPSG','4202',NULL,NULL,'EPSG','2285','PROJCS["AGD_1966_VICGRID",GEOGCS["GCS_Australian_1966",DATUM["D_Australian_1966",SPHEROID["Australian",6378160.0,298.25]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2500000.0],PARAMETER["False_Northing",4500000.0],PARAMETER["Central_Meridian",145.0],PARAMETER["Standard_Parallel_1",-36.0],PARAMETER["Standard_Parallel_2",-38.0],PARAMETER["Latitude_Of_Origin",-37.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102171','GDA_1994_VICGRID94',NULL,NULL,NULL,NULL,'EPSG','4283',NULL,NULL,'EPSG','2285','PROJCS["GDA_1994_VICGRID94",GEOGCS["GCS_GDA_1994",DATUM["D_GDA_1994",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2500000.0],PARAMETER["False_Northing",2500000.0],PARAMETER["Central_Meridian",145.0],PARAMETER["Standard_Parallel_1",-36.0],PARAMETER["Standard_Parallel_2",-38.0],PARAMETER["Latitude_Of_Origin",-37.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102172','GDA_1994_South_Australia_Lambert',NULL,NULL,NULL,NULL,'EPSG','4283',NULL,NULL,'EPSG','2986','PROJCS["GDA_1994_South_Australia_Lambert",GEOGCS["GCS_GDA_1994",DATUM["D_GDA_1994",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1000000.0],PARAMETER["False_Northing",2000000.0],PARAMETER["Central_Meridian",135.0],PARAMETER["Standard_Parallel_1",-28.0],PARAMETER["Standard_Parallel_2",-36.0],PARAMETER["Latitude_Of_Origin",-32.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102173','ETRS_1989_UWPP_1992',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'EPSG','1192','PROJCS["ETRS_1989_UWPP_1992",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",-5300000.0],PARAMETER["Central_Meridian",19.0],PARAMETER["Scale_Factor",0.9993],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102174','ETRS_1989_UWPP_2000_PAS_5',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'EPSG','1520','PROJCS["ETRS_1989_UWPP_2000_PAS_5",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",5500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.999923],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102175','ETRS_1989_UWPP_2000_PAS_6',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'EPSG','1521','PROJCS["ETRS_1989_UWPP_2000_PAS_6",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",6500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",18.0],PARAMETER["Scale_Factor",0.999923],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102176','ETRS_1989_UWPP_2000_PAS_7',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'EPSG','1522','PROJCS["ETRS_1989_UWPP_2000_PAS_7",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",7500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",21.0],PARAMETER["Scale_Factor",0.999923],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102177','ETRS_1989_UWPP_2000_PAS_8',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'EPSG','1523','PROJCS["ETRS_1989_UWPP_2000_PAS_8",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",8500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",24.0],PARAMETER["Scale_Factor",0.999923],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102178','NAD_1927_10TM_AEP_Forest',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','2376','PROJCS["NAD_1927_10TM_AEP_Forest",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-115.0],PARAMETER["Scale_Factor",0.9992],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102179','NAD_1927_10TM_AEP_Resource',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','2376','PROJCS["NAD_1927_10TM_AEP_Resource",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-115.0],PARAMETER["Scale_Factor",0.9992],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102180','NAD_1927_3TM_111',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','3543','PROJCS["NAD_1927_3TM_111",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-111.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102181','NAD_1927_3TM_114',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','3542','PROJCS["NAD_1927_3TM_114",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-114.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102182','NAD_1927_3TM_117',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','3541','PROJCS["NAD_1927_3TM_117",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-117.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102183','NAD_1927_3TM_120',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','3540','PROJCS["NAD_1927_3TM_120",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102184','NAD_1983_10TM_AEP_Forest',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2376','PROJCS["NAD_1983_10TM_AEP_Forest",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-115.0],PARAMETER["Scale_Factor",0.9992],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102185','NAD_1983_10TM_AEP_Resource',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2376','PROJCS["NAD_1983_10TM_AEP_Resource",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-115.0],PARAMETER["Scale_Factor",0.9992],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102186','NAD_1983_3TM_111',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','3543','PROJCS["NAD_1983_3TM_111",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-111.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102187','NAD_1983_3TM_114',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','3542','PROJCS["NAD_1983_3TM_114",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-114.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102188','NAD_1983_3TM_117',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','3541','PROJCS["NAD_1983_3TM_117",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-117.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102189','NAD_1983_3TM_120',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','3540','PROJCS["NAD_1983_3TM_120",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102190','NAD_1983_BC_Environment_Albers',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2832','PROJCS["NAD_1983_BC_Environment_Albers",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",1000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-126.0],PARAMETER["Standard_Parallel_1",50.0],PARAMETER["Standard_Parallel_2",58.5],PARAMETER["Latitude_Of_Origin",45.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102191','Nord_Maroc_Degree',NULL,NULL,NULL,NULL,'ESRI','104261',NULL,NULL,'EPSG','1703','PROJCS["Nord_Maroc_Degree",GEOGCS["GCS_Merchich_Degree",DATUM["D_Merchich",SPHEROID["Clarke_1880_IGN",6378249.2,293.4660212936265]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",300000.0],PARAMETER["Central_Meridian",-5.4],PARAMETER["Standard_Parallel_1",33.3],PARAMETER["Scale_Factor",0.999625769],PARAMETER["Latitude_Of_Origin",33.3],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102192','Sud_Maroc_Degree',NULL,NULL,NULL,NULL,'ESRI','104261',NULL,NULL,'EPSG','2787','PROJCS["Sud_Maroc_Degree",GEOGCS["GCS_Merchich_Degree",DATUM["D_Merchich",SPHEROID["Clarke_1880_IGN",6378249.2,293.4660212936265]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",300000.0],PARAMETER["Central_Meridian",-5.4],PARAMETER["Standard_Parallel_1",29.7],PARAMETER["Scale_Factor",0.999615596],PARAMETER["Latitude_Of_Origin",29.7],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102193','Sahara_Degree',NULL,NULL,NULL,NULL,'ESRI','104261',NULL,NULL,'EPSG','1705','PROJCS["Sahara_Degree",GEOGCS["GCS_Merchich_Degree",DATUM["D_Merchich",SPHEROID["Clarke_1880_IGN",6378249.2,293.4660212936265]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1200000.0],PARAMETER["False_Northing",400000.0],PARAMETER["Central_Meridian",-5.4],PARAMETER["Standard_Parallel_1",26.1],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",26.1],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102194','UWPP_1992',NULL,NULL,NULL,NULL,'ESRI','104258',NULL,NULL,'EPSG','1192','PROJCS["UWPP_1992",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",-5300000.0],PARAMETER["Central_Meridian",19.0],PARAMETER["Scale_Factor",0.9993],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102195','UWPP_2000_PAS_5',NULL,NULL,NULL,NULL,'ESRI','104258',NULL,NULL,'EPSG','1520','PROJCS["UWPP_2000_PAS_5",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",5500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.999923],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102196','UWPP_2000_PAS_6',NULL,NULL,NULL,NULL,'ESRI','104258',NULL,NULL,'EPSG','1521','PROJCS["UWPP_2000_PAS_6",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",6500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",18.0],PARAMETER["Scale_Factor",0.999923],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102197','UWPP_2000_PAS_7',NULL,NULL,NULL,NULL,'ESRI','104258',NULL,NULL,'EPSG','1522','PROJCS["UWPP_2000_PAS_7",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",7500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",21.0],PARAMETER["Scale_Factor",0.999923],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102198','UWPP_2000_PAS_8',NULL,NULL,NULL,NULL,'ESRI','104258',NULL,NULL,'EPSG','1523','PROJCS["UWPP_2000_PAS_8",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",8500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",24.0],PARAMETER["Scale_Factor",0.999923],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102199','Belge_Lambert_2008',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'EPSG','1347','PROJCS["Belge_Lambert_2008",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",649328.0],PARAMETER["False_Northing",665262.0],PARAMETER["Central_Meridian",4.359215833333333],PARAMETER["Standard_Parallel_1",49.83333333333334],PARAMETER["Standard_Parallel_2",51.16666666666666],PARAMETER["Latitude_Of_Origin",50.797815],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102200','NAD_1983_HARN_UTM_Zone_2S',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','3110','PROJCS["NAD_1983_HARN_UTM_Zone_2S",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",10000000.0],PARAMETER["Central_Meridian",-171.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102201','NAD_1983_HARN_Guam_Map_Grid',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','3255','PROJCS["NAD_1983_HARN_Guam_Map_Grid",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",100000.0],PARAMETER["False_Northing",200000.0],PARAMETER["Central_Meridian",144.75],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",13.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102202','NAD_1983_HARN_UTM_Zone_4N',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','3488','PROJCS["NAD_1983_HARN_UTM_Zone_4N",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-159.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102203','NAD_1983_HARN_UTM_Zone_5N',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','3491','PROJCS["NAD_1983_HARN_UTM_Zone_5N",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-153.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102204','Ain_el_Abd_1970_Aramco_Lambert_2',NULL,NULL,NULL,NULL,'EPSG','4204',NULL,NULL,'EPSG','3303','PROJCS["Ain_el_Abd_1970_Aramco_Lambert_2",GEOGCS["GCS_Ain_el_Abd_1970",DATUM["D_Ain_el_Abd_1970",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1000000.0],PARAMETER["False_Northing",3000000.0],PARAMETER["Central_Meridian",45.0],PARAMETER["Standard_Parallel_1",21.0],PARAMETER["Standard_Parallel_2",27.0],PARAMETER["Latitude_Of_Origin",24.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102205','NAD_1983_HARN_UTM_Zone_11N',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','3852','PROJCS["NAD_1983_HARN_UTM_Zone_11N",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-117.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102206','NAD_1983_HARN_UTM_Zone_12N',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','3499','PROJCS["NAD_1983_HARN_UTM_Zone_12N",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-111.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102207','NAD_1983_HARN_UTM_Zone_13N',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','3500','PROJCS["NAD_1983_HARN_UTM_Zone_13N",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-105.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102208','NAD_1983_HARN_Maine_2000_East_Zone',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2960','PROJCS["NAD_1983_HARN_Maine_2000_East_Zone",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-67.875],PARAMETER["Scale_Factor",0.99998],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102209','NAD_1983_HARN_Maine_2000_Central_Zone',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2959','PROJCS["NAD_1983_HARN_Maine_2000_Central_Zone",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-69.125],PARAMETER["Scale_Factor",0.99998],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102210','NAD_1983_HARN_Maine_2000_West_Zone',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2958','PROJCS["NAD_1983_HARN_Maine_2000_West_Zone",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-70.375],PARAMETER["Scale_Factor",0.99998],PARAMETER["Latitude_Of_Origin",42.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102211','NAD_1983_HARN_UTM_Zone_18N',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','3868','PROJCS["NAD_1983_HARN_UTM_Zone_18N",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-75.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102212','NAD_1983_WyLAM',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1419','PROJCS["NAD_1983_WyLAM",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",200000.0],PARAMETER["Central_Meridian",-107.5],PARAMETER["Standard_Parallel_1",41.0],PARAMETER["Standard_Parallel_2",45.0],PARAMETER["Latitude_Of_Origin",41.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102213','NAD_1983_UTM_Zone_58N',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2116','PROJCS["NAD_1983_UTM_Zone_58N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",165.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102214','WGS_1984_Cape_Verde_Grid',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1062','PROJCS["WGS_1984_Cape_Verde_Grid",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",161587.83],PARAMETER["False_Northing",128511.202],PARAMETER["Central_Meridian",-24.0],PARAMETER["Standard_Parallel_1",15.0],PARAMETER["Standard_Parallel_2",16.66666666666667],PARAMETER["Latitude_Of_Origin",15.83333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102215','WGS_1984_Canada_Atlas_LCC',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1061','PROJCS["WGS_1984_Canada_Atlas_LCC",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",-8000000.0],PARAMETER["Central_Meridian",-95.0],PARAMETER["Standard_Parallel_1",49.0],PARAMETER["Standard_Parallel_2",77.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','14','Australia - Perth Coast','Australia - Perth Coast',-33.41666666666666,-31.33333333333333,115.4416666666667,116.0833333333333,0); +INSERT INTO "projected_crs" VALUES('ESRI','102216','GDA_1994_Perth_Coastal_Grid_1994',NULL,NULL,NULL,NULL,'EPSG','4283',NULL,NULL,'ESRI','14','PROJCS["GDA_1994_Perth_Coastal_Grid_1994",GEOGCS["GCS_GDA_1994",DATUM["D_GDA_1994",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",50000.0],PARAMETER["False_Northing",3800000.0],PARAMETER["Central_Meridian",115.8166666666667],PARAMETER["Scale_Factor",0.99999906],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102217','NAD_1983_NSRS2007_Wisconsin_TM_US_Ft',NULL,NULL,NULL,NULL,'EPSG','4759',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_NSRS2007_Wisconsin_TM_US_Ft",GEOGCS["GCS_NAD_1983_NSRS2007",DATUM["D_NAD_1983_NSRS2007",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1706033.333333333],PARAMETER["False_Northing",-14698133.33333333],PARAMETER["Central_Meridian",-90.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102218','NAD_1983_USFS_R6_Albers',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2381','PROJCS["NAD_1983_USFS_R6_Albers",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.0],PARAMETER["Standard_Parallel_1",43.0],PARAMETER["Standard_Parallel_2",48.0],PARAMETER["Latitude_Of_Origin",34.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102219','NAD_1983_Wisconsin_TM_US_Ft',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_Wisconsin_TM_US_Ft",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1706033.333333333],PARAMETER["False_Northing",-14698133.33333333],PARAMETER["Central_Meridian",-90.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102220','NAD_1983_HARN_Wisconsin_TM_US_Ft',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Wisconsin_TM_US_Ft",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1706033.333333333],PARAMETER["False_Northing",-14698133.33333333],PARAMETER["Central_Meridian",-90.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102221','Ocotepeque_1935_Costa_Rica_Lambert_Norte',NULL,NULL,NULL,NULL,'EPSG','5451',NULL,NULL,'EPSG','1074','PROJCS["Ocotepeque_1935_Costa_Rica_Lambert_Norte",GEOGCS["GCS_Ocotepeque_1935",DATUM["D_Ocotepeque_1935",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",271820.522],PARAMETER["Central_Meridian",-84.33333333333333],PARAMETER["Standard_Parallel_1",9.933333333333334],PARAMETER["Standard_Parallel_2",11.0],PARAMETER["Latitude_Of_Origin",10.46666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102222','Ocotepeque_1935_Costa_Rica_Lambert_Sur',NULL,NULL,NULL,NULL,'EPSG','5451',NULL,NULL,'EPSG','1074','PROJCS["Ocotepeque_1935_Costa_Rica_Lambert_Sur",GEOGCS["GCS_Ocotepeque_1935",DATUM["D_Ocotepeque_1935",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",327987.436],PARAMETER["Central_Meridian",-83.66666666666667],PARAMETER["Standard_Parallel_1",8.466666666666667],PARAMETER["Standard_Parallel_2",9.533333333333333],PARAMETER["Latitude_Of_Origin",9.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102223','WGS_1984_Costa_Rica_TM_90',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1074','PROJCS["WGS_1984_Costa_Rica_TM_90",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102224','MONREF_1997_UTM_Zone_46N',NULL,NULL,NULL,NULL,'ESRI','104134',NULL,NULL,'EPSG','1164','PROJCS["MONREF_1997_UTM_Zone_46N",GEOGCS["GCS_MONREF_1997",DATUM["D_ITRF_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",93.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102225','MONREF_1997_UTM_Zone_47N',NULL,NULL,NULL,NULL,'ESRI','104134',NULL,NULL,'EPSG','1164','PROJCS["MONREF_1997_UTM_Zone_47N",GEOGCS["GCS_MONREF_1997",DATUM["D_ITRF_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",99.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102226','MONREF_1997_UTM_Zone_48N',NULL,NULL,NULL,NULL,'ESRI','104134',NULL,NULL,'EPSG','1164','PROJCS["MONREF_1997_UTM_Zone_48N",GEOGCS["GCS_MONREF_1997",DATUM["D_ITRF_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",105.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102227','MONREF_1997_UTM_Zone_49N',NULL,NULL,NULL,NULL,'ESRI','104134',NULL,NULL,'EPSG','1164','PROJCS["MONREF_1997_UTM_Zone_49N",GEOGCS["GCS_MONREF_1997",DATUM["D_ITRF_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",111.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102228','MONREF_1997_UTM_Zone_50N',NULL,NULL,NULL,NULL,'ESRI','104134',NULL,NULL,'EPSG','1164','PROJCS["MONREF_1997_UTM_Zone_50N",GEOGCS["GCS_MONREF_1997",DATUM["D_ITRF_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",117.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102229','NAD_1983_HARN_StatePlane_Alabama_East_FIPS_0101',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2154','PROJCS["NAD_1983_HARN_StatePlane_Alabama_East_FIPS_0101",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-85.83333333333333],PARAMETER["Scale_Factor",0.99996],PARAMETER["Latitude_Of_Origin",30.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102230','NAD_1983_HARN_StatePlane_Alabama_West_FIPS_0102',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2155','PROJCS["NAD_1983_HARN_StatePlane_Alabama_West_FIPS_0102",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102231','Colombia_West_West_Zone',NULL,NULL,NULL,NULL,'EPSG','4218',NULL,NULL,'EPSG','3091','PROJCS["Colombia_West_West_Zone",GEOGCS["GCS_Bogota",DATUM["D_Bogota",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1000000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-80.08091666666667],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",4.599047222222222],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102232','Bogota_Ciudad_Bogota',NULL,NULL,NULL,NULL,'EPSG','4218',NULL,NULL,'EPSG','3089','PROJCS["Bogota_Ciudad_Bogota",GEOGCS["GCS_Bogota",DATUM["D_Bogota",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",92334.879],PARAMETER["False_Northing",109320.965],PARAMETER["Central_Meridian",-74.15],PARAMETER["Scale_Factor",1.000399787532524],PARAMETER["Latitude_Of_Origin",4.683333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102233','MAGNA_Ciudad_Bogota',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'EPSG','3089','PROJCS["MAGNA_Ciudad_Bogota",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",92334.879],PARAMETER["False_Northing",109320.965],PARAMETER["Central_Meridian",-74.14659166666668],PARAMETER["Scale_Factor",1.000399803265436],PARAMETER["Latitude_Of_Origin",4.680486111111112],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102234','NAD_1983_CSRS_UTM_Zone_14N',NULL,NULL,NULL,NULL,'EPSG','4617',NULL,NULL,'EPSG','3413','PROJCS["NAD_1983_CSRS_UTM_Zone_14N",GEOGCS["GCS_North_American_1983_CSRS",DATUM["D_North_American_1983_CSRS",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-99.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102235','NAD_1983_CSRS_UTM_Zone_15N',NULL,NULL,NULL,NULL,'EPSG','4617',NULL,NULL,'EPSG','3414','PROJCS["NAD_1983_CSRS_UTM_Zone_15N",GEOGCS["GCS_North_American_1983_CSRS",DATUM["D_North_American_1983_CSRS",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-93.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102236','NAD_1983_CSRS_UTM_Zone_16N',NULL,NULL,NULL,NULL,'EPSG','4617',NULL,NULL,'EPSG','3415','PROJCS["NAD_1983_CSRS_UTM_Zone_16N",GEOGCS["GCS_North_American_1983_CSRS",DATUM["D_North_American_1983_CSRS",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102237','Pohnpei_Az_Eq_1971',NULL,NULL,NULL,NULL,'ESRI','104109',NULL,NULL,'EPSG','1161','PROJCS["Pohnpei_Az_Eq_1971",GEOGCS["GCS_Pohnpei",DATUM["D_Pohnpei",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Azimuthal_Equidistant"],PARAMETER["False_Easting",80122.82],PARAMETER["False_Northing",80747.24],PARAMETER["Central_Meridian",158.2092992222222],PARAMETER["Latitude_Of_Origin",6.965075694444445],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102238','Saipan_Az_Eq_1969',NULL,NULL,NULL,NULL,'EPSG','4675',NULL,NULL,'EPSG','1181','PROJCS["Saipan_Az_Eq_1969",GEOGCS["GCS_Guam_1963",DATUM["D_Guam_1963",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Azimuthal_Equidistant"],PARAMETER["False_Easting",50000.0],PARAMETER["False_Northing",50000.0],PARAMETER["Central_Meridian",145.7112869444444],PARAMETER["Latitude_Of_Origin",15.16755722222222],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102239','Guam_Geodetic_Triangulation_Network_1963',NULL,NULL,NULL,NULL,'EPSG','4675',NULL,NULL,'EPSG','1110','PROJCS["Guam_Geodetic_Triangulation_Network_1963",GEOGCS["GCS_Guam_1963",DATUM["D_Guam_1963",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Azimuthal_Equidistant"],PARAMETER["False_Easting",50000.0],PARAMETER["False_Northing",50000.0],PARAMETER["Central_Meridian",144.7487507055556],PARAMETER["Latitude_Of_Origin",13.47246635277778],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102240','Guam_Geodetic_Network_1993',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1110','PROJCS["Guam_Geodetic_Network_1993",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",100000.0],PARAMETER["False_Northing",200000.0],PARAMETER["Central_Meridian",144.75],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",13.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102241','NAD_1983_HARN_StatePlane_California_I_FIPS_0401',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2175','PROJCS["NAD_1983_HARN_StatePlane_California_I_FIPS_0401",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-122.0],PARAMETER["Standard_Parallel_1",40.0],PARAMETER["Standard_Parallel_2",41.66666666666666],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102242','NAD_1983_HARN_StatePlane_California_II_FIPS_0402',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2176','PROJCS["NAD_1983_HARN_StatePlane_California_II_FIPS_0402",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-122.0],PARAMETER["Standard_Parallel_1",38.33333333333334],PARAMETER["Standard_Parallel_2",39.83333333333334],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102243','NAD_1983_HARN_StatePlane_California_III_FIPS_0403',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2177','PROJCS["NAD_1983_HARN_StatePlane_California_III_FIPS_0403",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",37.06666666666667],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102244','NAD_1983_HARN_StatePlane_California_IV_FIPS_0404',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2178','PROJCS["NAD_1983_HARN_StatePlane_California_IV_FIPS_0404",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-119.0],PARAMETER["Standard_Parallel_1",36.0],PARAMETER["Standard_Parallel_2",37.25],PARAMETER["Latitude_Of_Origin",35.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102245','NAD_1983_HARN_StatePlane_California_V_FIPS_0405',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2182','PROJCS["NAD_1983_HARN_StatePlane_California_V_FIPS_0405",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-118.0],PARAMETER["Standard_Parallel_1",34.03333333333333],PARAMETER["Standard_Parallel_2",35.46666666666667],PARAMETER["Latitude_Of_Origin",33.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102246','NAD_1983_HARN_StatePlane_California_VI_FIPS_0406',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2180','PROJCS["NAD_1983_HARN_StatePlane_California_VI_FIPS_0406",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-116.25],PARAMETER["Standard_Parallel_1",32.78333333333333],PARAMETER["Standard_Parallel_2",33.88333333333333],PARAMETER["Latitude_Of_Origin",32.16666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102247','NAD_1983_CORS96_Alaska_Albers',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1330','PROJCS["NAD_1983_CORS96_Alaska_Albers",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-154.0],PARAMETER["Standard_Parallel_1",55.0],PARAMETER["Standard_Parallel_2",65.0],PARAMETER["Latitude_Of_Origin",50.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102248','NAD_1983_HARN_StatePlane_Arizona_East_FIPS_0201',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2167','PROJCS["NAD_1983_HARN_StatePlane_Arizona_East_FIPS_0201",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",213360.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-110.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102249','NAD_1983_HARN_StatePlane_Arizona_Central_FIPS_0202',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2166','PROJCS["NAD_1983_HARN_StatePlane_Arizona_Central_FIPS_0202",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",213360.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-111.9166666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102250','NAD_1983_HARN_StatePlane_Arizona_West_FIPS_0203',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2168','PROJCS["NAD_1983_HARN_StatePlane_Arizona_West_FIPS_0203",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",213360.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-113.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102251','NAD_1983_HARN_StatePlane_Arkansas_North_FIPS_0301',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2169','PROJCS["NAD_1983_HARN_StatePlane_Arkansas_North_FIPS_0301",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.0],PARAMETER["Standard_Parallel_1",34.93333333333333],PARAMETER["Standard_Parallel_2",36.23333333333333],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102252','NAD_1983_HARN_StatePlane_Arkansas_South_FIPS_0302',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2170','PROJCS["NAD_1983_HARN_StatePlane_Arkansas_South_FIPS_0302",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",400000.0],PARAMETER["Central_Meridian",-92.0],PARAMETER["Standard_Parallel_1",33.3],PARAMETER["Standard_Parallel_2",34.76666666666667],PARAMETER["Latitude_Of_Origin",32.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102253','NAD_1983_HARN_StatePlane_Colorado_North_FIPS_0501',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2184','PROJCS["NAD_1983_HARN_StatePlane_Colorado_North_FIPS_0501",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",914401.8289],PARAMETER["False_Northing",304800.6096],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",39.71666666666667],PARAMETER["Standard_Parallel_2",40.78333333333333],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102254','NAD_1983_HARN_StatePlane_Colorado_Central_FIPS_0502',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2183','PROJCS["NAD_1983_HARN_StatePlane_Colorado_Central_FIPS_0502",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",914401.8289],PARAMETER["False_Northing",304800.6096],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",38.45],PARAMETER["Standard_Parallel_2",39.75],PARAMETER["Latitude_Of_Origin",37.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102255','NAD_1983_HARN_StatePlane_Colorado_South_FIPS_0503',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2185','PROJCS["NAD_1983_HARN_StatePlane_Colorado_South_FIPS_0503",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",914401.8289],PARAMETER["False_Northing",304800.6096],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",37.23333333333333],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102256','NAD_1983_HARN_StatePlane_Connecticut_FIPS_0600',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1377','PROJCS["NAD_1983_HARN_StatePlane_Connecticut_FIPS_0600",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",304800.6096],PARAMETER["False_Northing",152400.3048],PARAMETER["Central_Meridian",-72.75],PARAMETER["Standard_Parallel_1",41.2],PARAMETER["Standard_Parallel_2",41.86666666666667],PARAMETER["Latitude_Of_Origin",40.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102257','NAD_1983_HARN_StatePlane_Delaware_FIPS_0700',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1378','PROJCS["NAD_1983_HARN_StatePlane_Delaware_FIPS_0700",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-75.41666666666667],PARAMETER["Scale_Factor",0.999995],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102258','NAD_1983_HARN_StatePlane_Florida_East_FIPS_0901',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2186','PROJCS["NAD_1983_HARN_StatePlane_Florida_East_FIPS_0901",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102259','NAD_1983_HARN_StatePlane_Florida_West_FIPS_0902',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2188','PROJCS["NAD_1983_HARN_StatePlane_Florida_West_FIPS_0902",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.0],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102260','NAD_1983_HARN_StatePlane_Florida_North_FIPS_0903',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2187','PROJCS["NAD_1983_HARN_StatePlane_Florida_North_FIPS_0903",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.5],PARAMETER["Standard_Parallel_1",29.58333333333333],PARAMETER["Standard_Parallel_2",30.75],PARAMETER["Latitude_Of_Origin",29.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102261','NAD_1983_HARN_StatePlane_Hawaii_1_FIPS_5101',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1546','PROJCS["NAD_1983_HARN_StatePlane_Hawaii_1_FIPS_5101",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-155.5],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",18.83333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102262','NAD_1983_HARN_StatePlane_Hawaii_2_FIPS_5102',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1547','PROJCS["NAD_1983_HARN_StatePlane_Hawaii_2_FIPS_5102",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-156.6666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",20.33333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102263','NAD_1983_HARN_StatePlane_Hawaii_3_FIPS_5103',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1548','PROJCS["NAD_1983_HARN_StatePlane_Hawaii_3_FIPS_5103",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-158.0],PARAMETER["Scale_Factor",0.99999],PARAMETER["Latitude_Of_Origin",21.16666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102264','NAD_1983_HARN_StatePlane_Hawaii_4_FIPS_5104',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1549','PROJCS["NAD_1983_HARN_StatePlane_Hawaii_4_FIPS_5104",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-159.5],PARAMETER["Scale_Factor",0.99999],PARAMETER["Latitude_Of_Origin",21.83333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102265','NAD_1983_HARN_StatePlane_Hawaii_5_FIPS_5105',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1550','PROJCS["NAD_1983_HARN_StatePlane_Hawaii_5_FIPS_5105",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-160.1666666666667],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",21.66666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102266','NAD_1983_HARN_StatePlane_Georgia_East_FIPS_1001',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2189','PROJCS["NAD_1983_HARN_StatePlane_Georgia_East_FIPS_1001",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102267','NAD_1983_HARN_StatePlane_Georgia_West_FIPS_1002',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2190','PROJCS["NAD_1983_HARN_StatePlane_Georgia_West_FIPS_1002",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102268','NAD_1983_HARN_StatePlane_Idaho_East_FIPS_1101',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2192','PROJCS["NAD_1983_HARN_StatePlane_Idaho_East_FIPS_1101",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-112.1666666666667],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102269','NAD_1983_HARN_StatePlane_Idaho_Central_FIPS_1102',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2191','PROJCS["NAD_1983_HARN_StatePlane_Idaho_Central_FIPS_1102",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-114.0],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102270','NAD_1983_HARN_StatePlane_Idaho_West_FIPS_1103',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2193','PROJCS["NAD_1983_HARN_StatePlane_Idaho_West_FIPS_1103",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-115.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102271','NAD_1983_HARN_StatePlane_Illinois_East_FIPS_1201',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2194','PROJCS["NAD_1983_HARN_StatePlane_Illinois_East_FIPS_1201",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.33333333333333],PARAMETER["Scale_Factor",0.999975],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102272','NAD_1983_HARN_StatePlane_Illinois_West_FIPS_1202',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2195','PROJCS["NAD_1983_HARN_StatePlane_Illinois_West_FIPS_1202",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.16666666666667],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102273','NAD_1983_HARN_StatePlane_Indiana_East_FIPS_1301',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2196','PROJCS["NAD_1983_HARN_StatePlane_Indiana_East_FIPS_1301",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",100000.0],PARAMETER["False_Northing",250000.0],PARAMETER["Central_Meridian",-85.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102274','NAD_1983_HARN_StatePlane_Indiana_West_FIPS_1302',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2197','PROJCS["NAD_1983_HARN_StatePlane_Indiana_West_FIPS_1302",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",900000.0],PARAMETER["False_Northing",250000.0],PARAMETER["Central_Meridian",-87.08333333333333],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102275','NAD_1983_HARN_StatePlane_Iowa_North_FIPS_1401',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2198','PROJCS["NAD_1983_HARN_StatePlane_Iowa_North_FIPS_1401",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1500000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-93.5],PARAMETER["Standard_Parallel_1",42.06666666666667],PARAMETER["Standard_Parallel_2",43.26666666666667],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102276','NAD_1983_HARN_StatePlane_Iowa_South_FIPS_1402',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2199','PROJCS["NAD_1983_HARN_StatePlane_Iowa_South_FIPS_1402",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-93.5],PARAMETER["Standard_Parallel_1",40.61666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102277','NAD_1983_HARN_StatePlane_Kansas_North_FIPS_1501',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2200','PROJCS["NAD_1983_HARN_StatePlane_Kansas_North_FIPS_1501",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-98.0],PARAMETER["Standard_Parallel_1",38.71666666666667],PARAMETER["Standard_Parallel_2",39.78333333333333],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102278','NAD_1983_HARN_StatePlane_Kansas_South_FIPS_1502',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2201','PROJCS["NAD_1983_HARN_StatePlane_Kansas_South_FIPS_1502",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",400000.0],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",37.26666666666667],PARAMETER["Standard_Parallel_2",38.56666666666667],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102279','NAD_1983_HARN_StatePlane_Kentucky_North_FIPS_1601',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2202','PROJCS["NAD_1983_HARN_StatePlane_Kentucky_North_FIPS_1601",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.25],PARAMETER["Standard_Parallel_1",37.96666666666667],PARAMETER["Standard_Parallel_2",38.96666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102280','NAD_1983_HARN_StatePlane_Kentucky_South_FIPS_1602',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2203','PROJCS["NAD_1983_HARN_StatePlane_Kentucky_South_FIPS_1602",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-85.75],PARAMETER["Standard_Parallel_1",36.73333333333333],PARAMETER["Standard_Parallel_2",37.93333333333333],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102281','NAD_1983_HARN_StatePlane_Louisiana_North_FIPS_1701',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2204','PROJCS["NAD_1983_HARN_StatePlane_Louisiana_North_FIPS_1701",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.5],PARAMETER["Standard_Parallel_1",31.16666666666667],PARAMETER["Standard_Parallel_2",32.66666666666666],PARAMETER["Latitude_Of_Origin",30.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102282','NAD_1983_HARN_StatePlane_Louisiana_South_FIPS_1702',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2529','PROJCS["NAD_1983_HARN_StatePlane_Louisiana_South_FIPS_1702",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.33333333333333],PARAMETER["Standard_Parallel_1",29.3],PARAMETER["Standard_Parallel_2",30.7],PARAMETER["Latitude_Of_Origin",28.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102283','NAD_1983_HARN_StatePlane_Maine_East_FIPS_1801',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2206','PROJCS["NAD_1983_HARN_StatePlane_Maine_East_FIPS_1801",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-68.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102284','NAD_1983_HARN_StatePlane_Maine_West_FIPS_1802',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2207','PROJCS["NAD_1983_HARN_StatePlane_Maine_West_FIPS_1802",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",900000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-70.16666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102285','NAD_1983_HARN_StatePlane_Maryland_FIPS_1900',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1389','PROJCS["NAD_1983_HARN_StatePlane_Maryland_FIPS_1900",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-77.0],PARAMETER["Standard_Parallel_1",38.3],PARAMETER["Standard_Parallel_2",39.45],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102286','NAD_1983_HARN_StatePlane_Massachusetts_Mainland_FIPS_2001',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2209','PROJCS["NAD_1983_HARN_StatePlane_Massachusetts_Mainland_FIPS_2001",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",750000.0],PARAMETER["Central_Meridian",-71.5],PARAMETER["Standard_Parallel_1",41.71666666666667],PARAMETER["Standard_Parallel_2",42.68333333333333],PARAMETER["Latitude_Of_Origin",41.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102287','NAD_1983_HARN_StatePlane_Massachusetts_Island_FIPS_2002',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2208','PROJCS["NAD_1983_HARN_StatePlane_Massachusetts_Island_FIPS_2002",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-70.5],PARAMETER["Standard_Parallel_1",41.28333333333333],PARAMETER["Standard_Parallel_2",41.48333333333333],PARAMETER["Latitude_Of_Origin",41.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102288','NAD_1983_HARN_StatePlane_Michigan_North_FIPS_2111',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1723','PROJCS["NAD_1983_HARN_StatePlane_Michigan_North_FIPS_2111",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",8000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.0],PARAMETER["Standard_Parallel_1",45.48333333333333],PARAMETER["Standard_Parallel_2",47.08333333333334],PARAMETER["Latitude_Of_Origin",44.78333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102289','NAD_1983_HARN_StatePlane_Michigan_Central_FIPS_2112',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1724','PROJCS["NAD_1983_HARN_StatePlane_Michigan_Central_FIPS_2112",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.36666666666666],PARAMETER["Standard_Parallel_1",44.18333333333333],PARAMETER["Standard_Parallel_2",45.7],PARAMETER["Latitude_Of_Origin",43.31666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102290','NAD_1983_HARN_StatePlane_Michigan_South_FIPS_2113',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1725','PROJCS["NAD_1983_HARN_StatePlane_Michigan_South_FIPS_2113",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",4000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.36666666666666],PARAMETER["Standard_Parallel_1",42.1],PARAMETER["Standard_Parallel_2",43.66666666666666],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102291','NAD_1983_HARN_StatePlane_Minnesota_North_FIPS_2201',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2214','PROJCS["NAD_1983_HARN_StatePlane_Minnesota_North_FIPS_2201",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.1],PARAMETER["Standard_Parallel_1",47.03333333333333],PARAMETER["Standard_Parallel_2",48.63333333333333],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102292','NAD_1983_HARN_StatePlane_Minnesota_Central_FIPS_2202',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2213','PROJCS["NAD_1983_HARN_StatePlane_Minnesota_Central_FIPS_2202",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.25],PARAMETER["Standard_Parallel_1",45.61666666666667],PARAMETER["Standard_Parallel_2",47.05],PARAMETER["Latitude_Of_Origin",45.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102293','NAD_1983_HARN_StatePlane_Minnesota_South_FIPS_2203',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2215','PROJCS["NAD_1983_HARN_StatePlane_Minnesota_South_FIPS_2203",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.0],PARAMETER["Standard_Parallel_1",43.78333333333333],PARAMETER["Standard_Parallel_2",45.21666666666667],PARAMETER["Latitude_Of_Origin",43.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102294','NAD_1983_HARN_StatePlane_Mississippi_East_FIPS_2301',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2216','PROJCS["NAD_1983_HARN_StatePlane_Mississippi_East_FIPS_2301",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.83333333333333],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",29.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102295','NAD_1983_HARN_StatePlane_Mississippi_West_FIPS_2302',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2217','PROJCS["NAD_1983_HARN_StatePlane_Mississippi_West_FIPS_2302",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.33333333333333],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",29.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102296','NAD_1983_HARN_StatePlane_Missouri_East_FIPS_2401',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2219','PROJCS["NAD_1983_HARN_StatePlane_Missouri_East_FIPS_2401",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",250000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",35.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102297','NAD_1983_HARN_StatePlane_Missouri_Central_FIPS_2402',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2218','PROJCS["NAD_1983_HARN_StatePlane_Missouri_Central_FIPS_2402",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",35.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102298','NAD_1983_HARN_StatePlane_Missouri_West_FIPS_2403',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2220','PROJCS["NAD_1983_HARN_StatePlane_Missouri_West_FIPS_2403",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",850000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-94.5],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",36.16666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102299','Berghaus_Star_AAG',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1262','PROJCS["Berghaus_Star_AAG",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Berghaus_Star"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-52.0],PARAMETER["Latitude_Of_Origin",90.0],PARAMETER["XY_Plane_Rotation",36.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102300','NAD_1983_HARN_StatePlane_Montana_FIPS_2500',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1395','PROJCS["NAD_1983_HARN_StatePlane_Montana_FIPS_2500",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-109.5],PARAMETER["Standard_Parallel_1",45.0],PARAMETER["Standard_Parallel_2",49.0],PARAMETER["Latitude_Of_Origin",44.25],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102304','NAD_1983_HARN_StatePlane_Nebraska_FIPS_2600',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1396','PROJCS["NAD_1983_HARN_StatePlane_Nebraska_FIPS_2600",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.0],PARAMETER["Standard_Parallel_1",40.0],PARAMETER["Standard_Parallel_2",43.0],PARAMETER["Latitude_Of_Origin",39.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102305','CRTM05',NULL,NULL,NULL,NULL,'EPSG','5365',NULL,NULL,'EPSG','3849','PROJCS["CRTM05",GEOGCS["GCS_CR05",DATUM["D_Costa_Rica_2005",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102306','Nepal_Nagarkot_TM',NULL,NULL,NULL,NULL,'EPSG','6207',NULL,NULL,'EPSG','1171','PROJCS["Nepal_Nagarkot_TM",GEOGCS["GCS_Nepal_Nagarkot",DATUM["D_Nepal_Nagarkot",SPHEROID["Everest_Adjustment_1937",6377276.345,300.8017]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",84.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102307','NAD_1983_HARN_StatePlane_Nevada_East_FIPS_2701',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2224','PROJCS["NAD_1983_HARN_StatePlane_Nevada_East_FIPS_2701",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",8000000.0],PARAMETER["Central_Meridian",-115.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102308','NAD_1983_HARN_StatePlane_Nevada_Central_FIPS_2702',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2223','PROJCS["NAD_1983_HARN_StatePlane_Nevada_Central_FIPS_2702",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",6000000.0],PARAMETER["Central_Meridian",-116.6666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102309','NAD_1983_HARN_StatePlane_Nevada_West_FIPS_2703',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2225','PROJCS["NAD_1983_HARN_StatePlane_Nevada_West_FIPS_2703",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",4000000.0],PARAMETER["Central_Meridian",-118.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102310','NAD_1983_HARN_StatePlane_New_Hampshire_FIPS_2800',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1398','PROJCS["NAD_1983_HARN_StatePlane_New_Hampshire_FIPS_2800",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-71.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102311','NAD_1983_HARN_StatePlane_New_Jersey_FIPS_2900',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1399','PROJCS["NAD_1983_HARN_StatePlane_New_Jersey_FIPS_2900",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",150000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102312','NAD_1983_HARN_StatePlane_New_Mexico_East_FIPS_3001',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2228','PROJCS["NAD_1983_HARN_StatePlane_New_Mexico_East_FIPS_3001",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",165000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-104.3333333333333],PARAMETER["Scale_Factor",0.9999090909090909],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102313','NAD_1983_HARN_StatePlane_New_Mexico_Central_FIPS_3002',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2231','PROJCS["NAD_1983_HARN_StatePlane_New_Mexico_Central_FIPS_3002",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-106.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102314','NAD_1983_HARN_StatePlane_New_Mexico_West_FIPS_3003',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2232','PROJCS["NAD_1983_HARN_StatePlane_New_Mexico_West_FIPS_3003",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",830000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-107.8333333333333],PARAMETER["Scale_Factor",0.9999166666666667],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102315','NAD_1983_HARN_StatePlane_New_York_East_FIPS_3101',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2234','PROJCS["NAD_1983_HARN_StatePlane_New_York_East_FIPS_3101",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",150000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102316','NAD_1983_HARN_StatePlane_New_York_Central_FIPS_3102',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2233','PROJCS["NAD_1983_HARN_StatePlane_New_York_Central_FIPS_3102",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",250000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-76.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102317','NAD_1983_HARN_StatePlane_New_York_West_FIPS_3103',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2236','PROJCS["NAD_1983_HARN_StatePlane_New_York_West_FIPS_3103",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",350000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-78.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102318','NAD_1983_HARN_StatePlane_New_York_Long_Island_FIPS_3104',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2235','PROJCS["NAD_1983_HARN_StatePlane_New_York_Long_Island_FIPS_3104",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.0],PARAMETER["Standard_Parallel_1",40.66666666666666],PARAMETER["Standard_Parallel_2",41.03333333333333],PARAMETER["Latitude_Of_Origin",40.16666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102319','CGRS_1993_LTM',NULL,NULL,NULL,NULL,'EPSG','6311',NULL,NULL,'EPSG','3236','PROJCS["CGRS_1993_LTM",GEOGCS["GCS_CGRS_1993",DATUM["D_Cyprus_Geodetic_Reference_System_1993",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",-3500000.0],PARAMETER["Central_Meridian",33.0],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102320','NAD_1983_HARN_StatePlane_North_Dakota_North_FIPS_3301',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2237','PROJCS["NAD_1983_HARN_StatePlane_North_Dakota_North_FIPS_3301",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",47.43333333333333],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102321','NAD_1983_HARN_StatePlane_North_Dakota_South_FIPS_3302',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2238','PROJCS["NAD_1983_HARN_StatePlane_North_Dakota_South_FIPS_3302",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",46.18333333333333],PARAMETER["Standard_Parallel_2",47.48333333333333],PARAMETER["Latitude_Of_Origin",45.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102322','NAD_1983_HARN_StatePlane_Ohio_North_FIPS_3401',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2239','PROJCS["NAD_1983_HARN_StatePlane_Ohio_North_FIPS_3401",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",40.43333333333333],PARAMETER["Standard_Parallel_2",41.7],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102323','NAD_1983_HARN_StatePlane_Ohio_South_FIPS_3402',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2240','PROJCS["NAD_1983_HARN_StatePlane_Ohio_South_FIPS_3402",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",38.73333333333333],PARAMETER["Standard_Parallel_2",40.03333333333333],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102324','NAD_1983_HARN_StatePlane_Oklahoma_North_FIPS_3501',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2241','PROJCS["NAD_1983_HARN_StatePlane_Oklahoma_North_FIPS_3501",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-98.0],PARAMETER["Standard_Parallel_1",35.56666666666667],PARAMETER["Standard_Parallel_2",36.76666666666667],PARAMETER["Latitude_Of_Origin",35.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102325','NAD_1983_HARN_StatePlane_Oklahoma_South_FIPS_3502',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2242','PROJCS["NAD_1983_HARN_StatePlane_Oklahoma_South_FIPS_3502",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-98.0],PARAMETER["Standard_Parallel_1",33.93333333333333],PARAMETER["Standard_Parallel_2",35.23333333333333],PARAMETER["Latitude_Of_Origin",33.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102326','NAD_1983_HARN_StatePlane_Oregon_North_FIPS_3601',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2243','PROJCS["NAD_1983_HARN_StatePlane_Oregon_North_FIPS_3601",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",44.33333333333334],PARAMETER["Standard_Parallel_2",46.0],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102327','NAD_1983_HARN_StatePlane_Oregon_South_FIPS_3602',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2244','PROJCS["NAD_1983_HARN_StatePlane_Oregon_South_FIPS_3602",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",42.33333333333334],PARAMETER["Standard_Parallel_2",44.0],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','15','Germany - west of 12~E','Germany - west of 12~E',47.27,55.9,5.5,12.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102328','ETRS_1989_UTM_Zone_32N_7stellen',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'ESRI','15','PROJCS["ETRS_1989_UTM_Zone_32N_7stellen",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102329','ETRS_1989_UTM_Zone_32N_8stellen',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'EPSG','2862','PROJCS["ETRS_1989_UTM_Zone_32N_8stellen",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",32500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102330','NAD_1983_HARN_StatePlane_Rhode_Island_FIPS_3800',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1408','PROJCS["NAD_1983_HARN_StatePlane_Rhode_Island_FIPS_3800",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",100000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-71.5],PARAMETER["Scale_Factor",0.99999375],PARAMETER["Latitude_Of_Origin",41.08333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102331','PTRA08_UTM_Zone_25N',NULL,NULL,NULL,NULL,'EPSG','5013',NULL,NULL,'EPSG','3682','PROJCS["PTRA08_UTM_Zone_25N",GEOGCS["GCS_PTRA08",DATUM["D_PTRA08",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-33.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102332','PTRA08_UTM_Zone_26N',NULL,NULL,NULL,NULL,'EPSG','5013',NULL,NULL,'EPSG','3677','PROJCS["PTRA08_UTM_Zone_26N",GEOGCS["GCS_PTRA08",DATUM["D_PTRA08",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-27.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102333','PTRA08_UTM_Zone_28N',NULL,NULL,NULL,NULL,'EPSG','5013',NULL,NULL,'EPSG','3678','PROJCS["PTRA08_UTM_Zone_28N",GEOGCS["GCS_PTRA08",DATUM["D_PTRA08",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102334','NAD_1983_HARN_StatePlane_South_Dakota_North_FIPS_4001',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2249','PROJCS["NAD_1983_HARN_StatePlane_South_Dakota_North_FIPS_4001",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.0],PARAMETER["Standard_Parallel_1",44.41666666666666],PARAMETER["Standard_Parallel_2",45.68333333333333],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102335','NAD_1983_HARN_StatePlane_South_Dakota_South_FIPS_4002',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2250','PROJCS["NAD_1983_HARN_StatePlane_South_Dakota_South_FIPS_4002",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",42.83333333333334],PARAMETER["Standard_Parallel_2",44.4],PARAMETER["Latitude_Of_Origin",42.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102336','NAD_1983_HARN_StatePlane_Tennessee_FIPS_4100',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1411','PROJCS["NAD_1983_HARN_StatePlane_Tennessee_FIPS_4100",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-86.0],PARAMETER["Standard_Parallel_1",35.25],PARAMETER["Standard_Parallel_2",36.41666666666666],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102337','NAD_1983_HARN_StatePlane_Texas_North_FIPS_4201',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2253','PROJCS["NAD_1983_HARN_StatePlane_Texas_North_FIPS_4201",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-101.5],PARAMETER["Standard_Parallel_1",34.65],PARAMETER["Standard_Parallel_2",36.18333333333333],PARAMETER["Latitude_Of_Origin",34.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102338','NAD_1983_HARN_StatePlane_Texas_North_Central_FIPS_4202',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2254','PROJCS["NAD_1983_HARN_StatePlane_Texas_North_Central_FIPS_4202",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",2000000.0],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",32.13333333333333],PARAMETER["Standard_Parallel_2",33.96666666666667],PARAMETER["Latitude_Of_Origin",31.66666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102339','NAD_1983_HARN_StatePlane_Texas_Central_FIPS_4203',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2252','PROJCS["NAD_1983_HARN_StatePlane_Texas_Central_FIPS_4203",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",3000000.0],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",30.11666666666667],PARAMETER["Standard_Parallel_2",31.88333333333333],PARAMETER["Latitude_Of_Origin",29.66666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102340','NAD_1983_HARN_StatePlane_Texas_South_Central_FIPS_4204',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2527','PROJCS["NAD_1983_HARN_StatePlane_Texas_South_Central_FIPS_4204",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",4000000.0],PARAMETER["Central_Meridian",-99.0],PARAMETER["Standard_Parallel_1",28.38333333333333],PARAMETER["Standard_Parallel_2",30.28333333333333],PARAMETER["Latitude_Of_Origin",27.83333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102341','NAD_1983_HARN_StatePlane_Texas_South_FIPS_4205',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2528','PROJCS["NAD_1983_HARN_StatePlane_Texas_South_FIPS_4205",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",5000000.0],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",26.16666666666667],PARAMETER["Standard_Parallel_2",27.83333333333333],PARAMETER["Latitude_Of_Origin",25.66666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102342','NAD_1983_HARN_StatePlane_Utah_North_FIPS_4301',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2258','PROJCS["NAD_1983_HARN_StatePlane_Utah_North_FIPS_4301",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",40.71666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102343','NAD_1983_HARN_StatePlane_Utah_Central_FIPS_4302',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2257','PROJCS["NAD_1983_HARN_StatePlane_Utah_Central_FIPS_4302",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",2000000.0],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",39.01666666666667],PARAMETER["Standard_Parallel_2",40.65],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102344','NAD_1983_HARN_StatePlane_Utah_South_FIPS_4303',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2259','PROJCS["NAD_1983_HARN_StatePlane_Utah_South_FIPS_4303",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",3000000.0],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",37.21666666666667],PARAMETER["Standard_Parallel_2",38.35],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102345','NAD_1983_HARN_StatePlane_Vermont_FIPS_4400',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1414','PROJCS["NAD_1983_HARN_StatePlane_Vermont_FIPS_4400",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-72.5],PARAMETER["Scale_Factor",0.9999642857142857],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102346','NAD_1983_HARN_StatePlane_Virginia_North_FIPS_4501',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2260','PROJCS["NAD_1983_HARN_StatePlane_Virginia_North_FIPS_4501",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3500000.0],PARAMETER["False_Northing",2000000.0],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",38.03333333333333],PARAMETER["Standard_Parallel_2",39.2],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102347','NAD_1983_HARN_StatePlane_Virginia_South_FIPS_4502',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2261','PROJCS["NAD_1983_HARN_StatePlane_Virginia_South_FIPS_4502",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3500000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",36.76666666666667],PARAMETER["Standard_Parallel_2",37.96666666666667],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102348','NAD_1983_HARN_StatePlane_Washington_North_FIPS_4601',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2273','PROJCS["NAD_1983_HARN_StatePlane_Washington_North_FIPS_4601",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.8333333333333],PARAMETER["Standard_Parallel_1",47.5],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102349','NAD_1983_HARN_StatePlane_Washington_South_FIPS_4602',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2274','PROJCS["NAD_1983_HARN_StatePlane_Washington_South_FIPS_4602",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",45.83333333333334],PARAMETER["Standard_Parallel_2",47.33333333333334],PARAMETER["Latitude_Of_Origin",45.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102350','NAD_1983_HARN_StatePlane_West_Virginia_North_FIPS_4701',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2264','PROJCS["NAD_1983_HARN_StatePlane_West_Virginia_North_FIPS_4701",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-79.5],PARAMETER["Standard_Parallel_1",39.0],PARAMETER["Standard_Parallel_2",40.25],PARAMETER["Latitude_Of_Origin",38.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102351','NAD_1983_HARN_StatePlane_West_Virginia_South_FIPS_4702',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2265','PROJCS["NAD_1983_HARN_StatePlane_West_Virginia_South_FIPS_4702",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Standard_Parallel_1",37.48333333333333],PARAMETER["Standard_Parallel_2",38.88333333333333],PARAMETER["Latitude_Of_Origin",37.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102352','NAD_1983_HARN_StatePlane_Wisconsin_North_FIPS_4801',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2267','PROJCS["NAD_1983_HARN_StatePlane_Wisconsin_North_FIPS_4801",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",45.56666666666667],PARAMETER["Standard_Parallel_2",46.76666666666667],PARAMETER["Latitude_Of_Origin",45.16666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102353','NAD_1983_HARN_StatePlane_Wisconsin_Central_FIPS_4802',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2266','PROJCS["NAD_1983_HARN_StatePlane_Wisconsin_Central_FIPS_4802",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",44.25],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102354','NAD_1983_HARN_StatePlane_Wisconsin_South_FIPS_4803',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2268','PROJCS["NAD_1983_HARN_StatePlane_Wisconsin_South_FIPS_4803",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",42.73333333333333],PARAMETER["Standard_Parallel_2",44.06666666666667],PARAMETER["Latitude_Of_Origin",42.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102355','NAD_1983_HARN_StatePlane_Wyoming_East_FIPS_4901',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2269','PROJCS["NAD_1983_HARN_StatePlane_Wyoming_East_FIPS_4901",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-105.1666666666667],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102356','NAD_1983_HARN_StatePlane_Wyoming_East_Central_FIPS_4902',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2270','PROJCS["NAD_1983_HARN_StatePlane_Wyoming_East_Central_FIPS_4902",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-107.3333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102357','NAD_1983_HARN_StatePlane_Wyoming_West_Central_FIPS_4903',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2272','PROJCS["NAD_1983_HARN_StatePlane_Wyoming_West_Central_FIPS_4903",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-108.75],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102358','NAD_1983_HARN_StatePlane_Wyoming_West_FIPS_4904',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2271','PROJCS["NAD_1983_HARN_StatePlane_Wyoming_West_FIPS_4904",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-110.0833333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102359','ETRS_1989_UTM_Zone_33N_7stellen',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'ESRI','15','PROJCS["ETRS_1989_UTM_Zone_33N_7stellen",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",3500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102360','ETRS_1989_UTM_Zone_33N_8stellen',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'EPSG','2862','PROJCS["ETRS_1989_UTM_Zone_33N_8stellen",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",33500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102361','NAD_1983_HARN_StatePlane_Puerto_Rico_Virgin_Islands_FIPS_5200',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','3634','PROJCS["NAD_1983_HARN_StatePlane_Puerto_Rico_Virgin_Islands_FIPS_5200",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",200000.0],PARAMETER["Central_Meridian",-66.43333333333334],PARAMETER["Standard_Parallel_1",18.03333333333333],PARAMETER["Standard_Parallel_2",18.43333333333333],PARAMETER["Latitude_Of_Origin",17.83333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102362','ETRS_1989_UTM_Zone_N32',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'EPSG','2861','PROJCS["ETRS_1989_UTM_Zone_N32",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",32500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102363','NAD_1983_HARN_StatePlane_Kentucky_FIPS_1600',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1386','PROJCS["NAD_1983_HARN_StatePlane_Kentucky_FIPS_1600",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1500000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-85.75],PARAMETER["Standard_Parallel_1",37.08333333333334],PARAMETER["Standard_Parallel_2",38.66666666666666],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102364','NAD_1983_CORS96_UTM_Zone_59N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','3372','PROJCS["NAD_1983_CORS96_UTM_Zone_59N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",171.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102365','NAD_1983_CORS96_UTM_Zone_60N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','3373','PROJCS["NAD_1983_CORS96_UTM_Zone_60N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",177.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102366','NAD_1983_CORS96_StatePlane_Alaska_1_FIPS_5001',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2156','PROJCS["NAD_1983_CORS96_StatePlane_Alaska_1_FIPS_5001",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",5000000.0],PARAMETER["False_Northing",-5000000.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",-36.86989764583333],PARAMETER["Longitude_Of_Center",-133.6666666666667],PARAMETER["Latitude_Of_Center",57.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102367','NAD_1983_CORS96_StatePlane_Alaska_2_FIPS_5002',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2158','PROJCS["NAD_1983_CORS96_StatePlane_Alaska_2_FIPS_5002",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-142.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102368','NAD_1983_CORS96_StatePlane_Alaska_3_FIPS_5003',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2159','PROJCS["NAD_1983_CORS96_StatePlane_Alaska_3_FIPS_5003",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-146.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102369','NAD_1983_CORS96_StatePlane_Alaska_4_FIPS_5004',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2160','PROJCS["NAD_1983_CORS96_StatePlane_Alaska_4_FIPS_5004",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-150.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102370','NAD_1983_CORS96_StatePlane_Alaska_5_FIPS_5005',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2161','PROJCS["NAD_1983_CORS96_StatePlane_Alaska_5_FIPS_5005",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-154.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102371','NAD_1983_CORS96_StatePlane_Alaska_6_FIPS_5006',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2162','PROJCS["NAD_1983_CORS96_StatePlane_Alaska_6_FIPS_5006",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-158.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102372','NAD_1983_CORS96_StatePlane_Alaska_7_FIPS_5007',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2163','PROJCS["NAD_1983_CORS96_StatePlane_Alaska_7_FIPS_5007",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-162.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102373','NAD_1983_CORS96_StatePlane_Alaska_8_FIPS_5008',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2164','PROJCS["NAD_1983_CORS96_StatePlane_Alaska_8_FIPS_5008",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-166.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102374','NAD_1983_CORS96_StatePlane_Alaska_9_FIPS_5009',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2165','PROJCS["NAD_1983_CORS96_StatePlane_Alaska_9_FIPS_5009",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-170.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102375','NAD_1983_CORS96_StatePlane_Alaska_10_FIPS_5010',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2157','PROJCS["NAD_1983_CORS96_StatePlane_Alaska_10_FIPS_5010",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-176.0],PARAMETER["Standard_Parallel_1",51.83333333333334],PARAMETER["Standard_Parallel_2",53.83333333333334],PARAMETER["Latitude_Of_Origin",51.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102376','NAD_1983_CORS96_StatePlane_Oregon_North_FIPS_3601',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2243','PROJCS["NAD_1983_CORS96_StatePlane_Oregon_North_FIPS_3601",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",44.33333333333334],PARAMETER["Standard_Parallel_2",46.0],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102377','NAD_1983_CORS96_StatePlane_Oregon_South_FIPS_3602',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2244','PROJCS["NAD_1983_CORS96_StatePlane_Oregon_South_FIPS_3602",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",42.33333333333334],PARAMETER["Standard_Parallel_2",44.0],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102378','NAD_1983_CORS96_StatePlane_Oregon_North_FIPS_3601_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2243','PROJCS["NAD_1983_CORS96_StatePlane_Oregon_North_FIPS_3601_Ft_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",8202099.737532808],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",44.33333333333334],PARAMETER["Standard_Parallel_2",46.0],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102379','NAD_1983_CORS96_StatePlane_Oregon_South_FIPS_3602_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2244','PROJCS["NAD_1983_CORS96_StatePlane_Oregon_South_FIPS_3602_Ft_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",4921259.842519685],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",42.33333333333334],PARAMETER["Standard_Parallel_2",44.0],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102380','NAD_1983_CORS96_Oregon_Statewide_Lambert',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1406','PROJCS["NAD_1983_CORS96_Oregon_Statewide_Lambert",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",43.0],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",41.75],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102381','NAD_1983_CORS96_Oregon_Statewide_Lambert_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1406','PROJCS["NAD_1983_CORS96_Oregon_Statewide_Lambert_Ft_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312335.958005249],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",43.0],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",41.75],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102382','NAD_1983_2011_UTM_Zone_13N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','3500','PROJCS["NAD_1983_2011_UTM_Zone_13N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-105.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102383','NAD_1983_2011_UTM_Zone_14N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','3501','PROJCS["NAD_1983_2011_UTM_Zone_14N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-99.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102384','NAD_1983_2011_UTM_Zone_15N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','3502','PROJCS["NAD_1983_2011_UTM_Zone_15N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-93.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102385','NAD_1983_2011_UTM_Zone_16N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','3503','PROJCS["NAD_1983_2011_UTM_Zone_16N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102386','NAD_1983_2011_UTM_Zone_17N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','3504','PROJCS["NAD_1983_2011_UTM_Zone_17N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102387','NAD_1983_2011_UTM_Zone_18N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','3505','PROJCS["NAD_1983_2011_UTM_Zone_18N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-75.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102388','NAD_1983_2011_UTM_Zone_19N',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','3506','PROJCS["NAD_1983_2011_UTM_Zone_19N",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-69.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','16','USA - North Dakota - Fargo','USA - North Dakota - Fargo',46.7,47.0,-96.93,-96.75,0); +INSERT INTO "projected_crs" VALUES('ESRI','102389','NAD_1983_Fargo_Ground_Coordinate_System',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'ESRI','16','PROJCS["NAD_1983_Fargo_Ground_Coordinate_System",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Rectified_Skew_Orthomorphic_Natural_Origin"],PARAMETER["False_Easting",2869344.93],PARAMETER["False_Northing",-16657672.6488],PARAMETER["Scale_Factor",1.000038773618],PARAMETER["Azimuth",2.63389226],PARAMETER["Longitude_Of_Center",-96.88886388888889],PARAMETER["Latitude_Of_Center",46.99163611111111],PARAMETER["XY_Plane_Rotation",0.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102390','NAD_1983_HARN_Fargo_Ground_Coordinate_System',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'ESRI','16','PROJCS["NAD_1983_HARN_Fargo_Ground_Coordinate_System",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Rectified_Skew_Orthomorphic_Natural_Origin"],PARAMETER["False_Easting",2869344.93],PARAMETER["False_Northing",-16657672.6488],PARAMETER["Scale_Factor",1.000038773618],PARAMETER["Azimuth",2.63389226],PARAMETER["Longitude_Of_Center",-96.88886388888889],PARAMETER["Latitude_Of_Center",46.99163611111111],PARAMETER["XY_Plane_Rotation",0.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102391','NAD_1983_2011_Fargo_Ground_Coordinate_System',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'ESRI','16','PROJCS["NAD_1983_2011_Fargo_Ground_Coordinate_System",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Rectified_Skew_Orthomorphic_Natural_Origin"],PARAMETER["False_Easting",2869344.93],PARAMETER["False_Northing",-16657672.6488],PARAMETER["Scale_Factor",1.000038773618],PARAMETER["Azimuth",2.63389226],PARAMETER["Longitude_Of_Center",-96.88886388888889],PARAMETER["Latitude_Of_Center",46.99163611111111],PARAMETER["XY_Plane_Rotation",0.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102392','NAD_1983_2011_StatePlane_Alaska_4_FIPS_5004_Feet',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2160','PROJCS["NAD_1983_2011_StatePlane_Alaska_4_FIPS_5004_Feet",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-150.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102393','NAD_1983_2011_StatePlane_Alaska_5_FIPS_5005_Feet',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2161','PROJCS["NAD_1983_2011_StatePlane_Alaska_5_FIPS_5005_Feet",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-154.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102394','NAD_1983_2011_StatePlane_Alaska_6_FIPS_5006_Feet',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2162','PROJCS["NAD_1983_2011_StatePlane_Alaska_6_FIPS_5006_Feet",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-158.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102395','NAD_1983_2011_StatePlane_Alaska_7_FIPS_5007_Feet',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2163','PROJCS["NAD_1983_2011_StatePlane_Alaska_7_FIPS_5007_Feet",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-162.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102396','NAD_1983_2011_StatePlane_Alaska_8_FIPS_5008_Feet',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2164','PROJCS["NAD_1983_2011_StatePlane_Alaska_8_FIPS_5008_Feet",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-166.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102397','NAD_1983_2011_StatePlane_Alaska_9_FIPS_5009_Feet',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2165','PROJCS["NAD_1983_2011_StatePlane_Alaska_9_FIPS_5009_Feet",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-170.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102398','NAD_1983_2011_StatePlane_Alaska_10_FIPS_5010_Feet',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2157','PROJCS["NAD_1983_2011_StatePlane_Alaska_10_FIPS_5010_Feet",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3280833.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-176.0],PARAMETER["Standard_Parallel_1",51.83333333333334],PARAMETER["Standard_Parallel_2",53.83333333333334],PARAMETER["Latitude_Of_Origin",51.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "area" VALUES('ESRI','17','USA - Montana, North Dakota, and South Dakota','USA - Montana, North Dakota, and South Dakota',44.3,49.1,-116.1,-96.3,0); +INSERT INTO "projected_crs" VALUES('ESRI','102399','NAD_1983_Albers_BLM_MT_ND_SD',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'ESRI','17','PROJCS["NAD_1983_Albers_BLM_MT_ND_SD",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-106.0],PARAMETER["Standard_Parallel_1",43.5],PARAMETER["Standard_Parallel_2",48.0],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102400','London_Survey_Grid',NULL,NULL,NULL,NULL,'ESRI','104050',NULL,NULL,'ESRI','1','PROJCS["London_Survey_Grid",GEOGCS["GCS_Xrail84",DATUM["D_Xrail84",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",78250.0],PARAMETER["False_Northing",-2800.0],PARAMETER["Central_Meridian",-0.158333333333333],PARAMETER["Scale_Factor",0.9999999],PARAMETER["Latitude_Of_Origin",51.1666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102401','NAD_1983_CORS96_UTM_Zone_1N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','3374','PROJCS["NAD_1983_CORS96_UTM_Zone_1N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-177.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102402','NAD_1983_CORS96_UTM_Zone_2N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','3375','PROJCS["NAD_1983_CORS96_UTM_Zone_2N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-171.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102403','NAD_1983_CORS96_UTM_Zone_3N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2133','PROJCS["NAD_1983_CORS96_UTM_Zone_3N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-165.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102404','NAD_1983_CORS96_UTM_Zone_4N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2133','PROJCS["NAD_1983_CORS96_UTM_Zone_4N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-159.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102405','NAD_1983_CORS96_UTM_Zone_5N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2135','PROJCS["NAD_1983_CORS96_UTM_Zone_5N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-153.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102406','NAD_1983_CORS96_UTM_Zone_6N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2136','PROJCS["NAD_1983_CORS96_UTM_Zone_6N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-147.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102407','NAD_1983_CORS96_UTM_Zone_7N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','3494','PROJCS["NAD_1983_CORS96_UTM_Zone_7N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-141.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102408','NAD_1983_CORS96_UTM_Zone_8N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','3495','PROJCS["NAD_1983_CORS96_UTM_Zone_8N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-135.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102409','NAD_1983_CORS96_UTM_Zone_9N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','3496','PROJCS["NAD_1983_CORS96_UTM_Zone_9N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-129.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102410','NAD_1983_CORS96_UTM_Zone_10N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','3497','PROJCS["NAD_1983_CORS96_UTM_Zone_10N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-123.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102411','NAD_1983_CORS96_UTM_Zone_11N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','3498','PROJCS["NAD_1983_CORS96_UTM_Zone_11N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-117.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102412','NAD_1983_CORS96_UTM_Zone_12N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','3499','PROJCS["NAD_1983_CORS96_UTM_Zone_12N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-111.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102413','NAD_1983_CORS96_UTM_Zone_13N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','3500','PROJCS["NAD_1983_CORS96_UTM_Zone_13N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-105.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102414','NAD_1983_CORS96_UTM_Zone_14N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','3501','PROJCS["NAD_1983_CORS96_UTM_Zone_14N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-99.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102415','NAD_1983_CORS96_UTM_Zone_15N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','3502','PROJCS["NAD_1983_CORS96_UTM_Zone_15N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-93.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102416','NAD_1983_CORS96_UTM_Zone_16N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','3503','PROJCS["NAD_1983_CORS96_UTM_Zone_16N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102417','NAD_1983_CORS96_UTM_Zone_17N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','3504','PROJCS["NAD_1983_CORS96_UTM_Zone_17N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102418','NAD_1983_CORS96_UTM_Zone_18N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','3505','PROJCS["NAD_1983_CORS96_UTM_Zone_18N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-75.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102419','NAD_1983_CORS96_UTM_Zone_19N',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','3506','PROJCS["NAD_1983_CORS96_UTM_Zone_19N",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-69.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102420','ISN_2004_Lambert_2004',NULL,NULL,NULL,NULL,'EPSG','5324',NULL,NULL,'EPSG','1120','PROJCS["ISN_2004_Lambert_2004",GEOGCS["GCS_ISN_2004",DATUM["D_Islands_Network_2004",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1700000.0],PARAMETER["False_Northing",300000.0],PARAMETER["Central_Meridian",-19.0],PARAMETER["Standard_Parallel_1",64.25],PARAMETER["Standard_Parallel_2",65.75],PARAMETER["Latitude_Of_Origin",65.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','18','ARC System - Zone 1','ARC System - Zone 1',0.0,32.0,-180.0,180.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102421','WGS_1984_ARC_System_Zone_01',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','18','PROJCS["WGS_1984_ARC_System_Zone_01",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",22.94791772],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','19','ARC System - Zone 2','ARC System - Zone 2',32.0,48.0,-180.0,180.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102422','WGS_1984_ARC_System_Zone_02',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','19','PROJCS["WGS_1984_ARC_System_Zone_02",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",41.12682127],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','20','ARC System - Zone 3','ARC System - Zone 3',48.0,56.0,-180.0,180.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102423','WGS_1984_ARC_System_Zone_03',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','20','PROJCS["WGS_1984_ARC_System_Zone_03",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",52.28859923],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','21','ARC System - Zone 4','ARC System - Zone 4',56.0,64.0,-180.0,180.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102424','WGS_1984_ARC_System_Zone_04',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','21','PROJCS["WGS_1984_ARC_System_Zone_04",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",60.32378942],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','22','ARC System - Zone 5','ARC System - Zone 5',64.0,68.0,-180.0,180.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102425','WGS_1984_ARC_System_Zone_05',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','22','PROJCS["WGS_1984_ARC_System_Zone_05",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",66.09421768],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','23','ARC System - Zone 6','ARC System - Zone 6',68.0,72.0,-180.0,180.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102426','WGS_1984_ARC_System_Zone_06',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','23','PROJCS["WGS_1984_ARC_System_Zone_06",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",70.10896259],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','24','ARC System - Zone 7','ARC System - Zone 7',72.0,76.0,-180.0,180.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102427','WGS_1984_ARC_System_Zone_07',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','24','PROJCS["WGS_1984_ARC_System_Zone_07",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",74.13230145],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','25','ARC System - Zone 8','ARC System - Zone 8',76.0,80.0,-180.0,180.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102428','WGS_1984_ARC_System_Zone_08',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','25','PROJCS["WGS_1984_ARC_System_Zone_08",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",78.1728375],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','26','ARC System - Zone 9','ARC System - Zone 9',80.0,90.0,-180.0,180.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102429','WGS_1984_ARC_System_Zone_09',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','26','PROJCS["WGS_1984_ARC_System_Zone_09",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Azimuthal_Equidistant"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Latitude_Of_Origin",90.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','27','ARC System - Zone 10','ARC System - Zone 10',-32.0,0.0,-180.0,180.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102430','WGS_1984_ARC_System_Zone_10',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','27','PROJCS["WGS_1984_ARC_System_Zone_10",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",-22.94791772],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','28','ARC System - Zone 11','ARC System - Zone 11',-48.0,-32.0,-180.0,180.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102431','WGS_1984_ARC_System_Zone_11',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','28','PROJCS["WGS_1984_ARC_System_Zone_11",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",-41.12682127],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','29','ARC System - Zone 12','ARC System - Zone 12',-56.0,-48.0,-180.0,180.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102432','WGS_1984_ARC_System_Zone_12',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','29','PROJCS["WGS_1984_ARC_System_Zone_12",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",-52.28859923],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','30','ARC System - Zone 13','ARC System - Zone 13',-64.0,-56.0,-180.0,180.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102433','WGS_1984_ARC_System_Zone_13',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','30','PROJCS["WGS_1984_ARC_System_Zone_13",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",-60.32378942],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','31','ARC System - Zone 14','ARC System - Zone 14',-68.0,-64.0,-180.0,180.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102434','WGS_1984_ARC_System_Zone_14',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','31','PROJCS["WGS_1984_ARC_System_Zone_14",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",-66.09421768],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','32','ARC System - Zone 15','ARC System - Zone 15',-72.0,-68.0,-180.0,180.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102435','WGS_1984_ARC_System_Zone_15',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','32','PROJCS["WGS_1984_ARC_System_Zone_15",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",-70.10896259],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','33','ARC System - Zone 16','ARC System - Zone 16',-76.0,-72.0,-180.0,180.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102436','WGS_1984_ARC_System_Zone_16',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','33','PROJCS["WGS_1984_ARC_System_Zone_16",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",-74.13230145],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','34','ARC System - Zone 17','ARC System - Zone 17',-80.0,-76.0,-180.0,180.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102437','WGS_1984_ARC_System_Zone_17',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','34','PROJCS["WGS_1984_ARC_System_Zone_17",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Equidistant_Cylindrical"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",-78.1728375],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','35','ARC System - Zone 18','ARC System - Zone 18',-90.0,-80.0,-180.0,180.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102438','WGS_1984_ARC_System_Zone_18',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'ESRI','35','PROJCS["WGS_1984_ARC_System_Zone_18",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Azimuthal_Equidistant"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Latitude_Of_Origin",-90.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102439','WGS_1984_Australian_Centre_for_Remote_Sensing_Lambert',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','2575','PROJCS["WGS_1984_Australian_Centre_for_Remote_Sensing_Lambert",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",132.0],PARAMETER["Standard_Parallel_1",-18.0],PARAMETER["Standard_Parallel_2",-36.0],PARAMETER["Latitude_Of_Origin",-27.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102440','LKS_1992_Latvia_TM_0',NULL,NULL,NULL,NULL,'EPSG','4661',NULL,NULL,'EPSG','1139','PROJCS["LKS_1992_Latvia_TM_0",GEOGCS["GCS_LKS_1992",DATUM["D_Latvia_1992",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",24.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102441','TWD_1967_TM_Taiwan',NULL,NULL,NULL,NULL,'EPSG','3821',NULL,NULL,'EPSG','3982','PROJCS["TWD_1967_TM_Taiwan",GEOGCS["GCS_TWD_1967",DATUM["D_TWD_1967",SPHEROID["GRS_1967_Truncated",6378160.0,298.25]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",250000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",121.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102442','TWD_1967_TM_Penghu',NULL,NULL,NULL,NULL,'EPSG','3821',NULL,NULL,'EPSG','3591','PROJCS["TWD_1967_TM_Penghu",GEOGCS["GCS_TWD_1967",DATUM["D_TWD_1967",SPHEROID["GRS_1967_Truncated",6378160.0,298.25]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",250000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",119.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102443','TWD_1997_TM_Taiwan',NULL,NULL,NULL,NULL,'EPSG','3824',NULL,NULL,'EPSG','3562','PROJCS["TWD_1997_TM_Taiwan",GEOGCS["GCS_TWD_1997",DATUM["D_TWD_1997",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",250000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",121.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102444','TWD_1997_TM_Penghu',NULL,NULL,NULL,NULL,'EPSG','3824',NULL,NULL,'EPSG','3563','PROJCS["TWD_1997_TM_Penghu",GEOGCS["GCS_TWD_1997",DATUM["D_TWD_1997",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",250000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",119.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102445','NAD_1983_2011_StatePlane_Alaska_1_FIPS_5001_Feet',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2156','PROJCS["NAD_1983_2011_StatePlane_Alaska_1_FIPS_5001_Feet",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",16404166.66666666],PARAMETER["False_Northing",-16404166.66666666],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",-36.86989764583333],PARAMETER["Longitude_Of_Center",-133.6666666666667],PARAMETER["Latitude_Of_Center",57.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102446','NAD_1983_2011_StatePlane_Alaska_2_FIPS_5002_Feet',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2158','PROJCS["NAD_1983_2011_StatePlane_Alaska_2_FIPS_5002_Feet",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-142.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102447','NAD_1983_2011_StatePlane_Alaska_3_FIPS_5003_Feet',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2159','PROJCS["NAD_1983_2011_StatePlane_Alaska_3_FIPS_5003_Feet",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-146.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "area" VALUES('ESRI','36','Macao','Macao',22.1,22.22,113.52,113.6,0); +INSERT INTO "projected_crs" VALUES('ESRI','102448','Macao_2008_Macao_Grid',NULL,NULL,NULL,NULL,'ESRI','104248',NULL,NULL,'ESRI','36','PROJCS["Macao_2008_Macao_Grid",GEOGCS["GCS_MACAO_2008",DATUM["D_MACAO_2008",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",20000.0],PARAMETER["False_Northing",20000.0],PARAMETER["Central_Meridian",113.5364694444444],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",22.21239722222222],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102449','NAD_1983_MA11_UTM_Zone_55N',NULL,NULL,NULL,NULL,'EPSG','6325',NULL,NULL,'EPSG','4167','PROJCS["NAD_1983_MA11_UTM_Zone_55N",GEOGCS["GCS_NAD_1983_MA11",DATUM["D_NAD_1983_MA11",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",147.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102450','NGO_1948_Oslo_Baerum_Kommune',NULL,NULL,NULL,NULL,'EPSG','4817',NULL,NULL,'ESRI','11','PROJCS["NGO_1948_Oslo_Baerum_Kommune",GEOGCS["GCS_NGO_1948_Oslo",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Oslo",10.72291666666667],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",19999.32],PARAMETER["False_Northing",-202977.79],PARAMETER["Central_Meridian",0.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",58.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102451','NGO_1948_Oslo_Bergenhalvoen',NULL,NULL,NULL,NULL,'EPSG','4817',NULL,NULL,'ESRI','12','PROJCS["NGO_1948_Oslo_Bergenhalvoen",GEOGCS["GCS_NGO_1948_Oslo",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Oslo",10.72291666666667],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",100000.0],PARAMETER["False_Northing",-200000.0],PARAMETER["Central_Meridian",-4.666666666666667],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",58.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102452','NGO_1948_Oslo_Oslo_Kommune',NULL,NULL,NULL,NULL,'EPSG','4817',NULL,NULL,'ESRI','13','PROJCS["NGO_1948_Oslo_Oslo_Kommune",GEOGCS["GCS_NGO_1948_Oslo",DATUM["D_NGO_1948",SPHEROID["Bessel_Modified",6377492.018,299.1528128]],PRIMEM["Oslo",10.72291666666667],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",-212979.18],PARAMETER["Central_Meridian",0.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",58.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','37','Philippines - West of 120~E, N hemisphere','Philippines - West of 120~E, N hemisphere',3.0,22.0,114.0,120.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102453','Luzon_1911_UTM_Zone_50N',NULL,NULL,NULL,NULL,'EPSG','4253',NULL,NULL,'ESRI','37','PROJCS["Luzon_1911_UTM_Zone_50N",GEOGCS["GCS_Luzon_1911",DATUM["D_Luzon_1911",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",117.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','38','Philippines - 120~E to 126~E, N hemisphere','Philippines - 120~E to 126~E, N hemisphere',3.0,24.0,120.0,126.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102454','Luzon_1911_UTM_Zone_51N',NULL,NULL,NULL,NULL,'EPSG','4253',NULL,NULL,'ESRI','38','PROJCS["Luzon_1911_UTM_Zone_51N",GEOGCS["GCS_Luzon_1911",DATUM["D_Luzon_1911",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",123.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','39','Philippines - East of 126~E, N hemisphere','Philippines - East of 126~E, N hemisphere',4.0,20.0,126.0,132.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102455','Luzon_1911_UTM_Zone_52N',NULL,NULL,NULL,NULL,'EPSG','4253',NULL,NULL,'ESRI','39','PROJCS["Luzon_1911_UTM_Zone_52N",GEOGCS["GCS_Luzon_1911",DATUM["D_Luzon_1911",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",129.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102456','PRS_1992_UTM_Zone_50N',NULL,NULL,NULL,NULL,'EPSG','4683',NULL,NULL,'ESRI','37','PROJCS["PRS_1992_UTM_Zone_50N",GEOGCS["GCS_PRS_1992",DATUM["D_Philippine_Reference_System_1992",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",117.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102457','PRS_1992_UTM_Zone_51N',NULL,NULL,NULL,NULL,'EPSG','4683',NULL,NULL,'ESRI','38','PROJCS["PRS_1992_UTM_Zone_51N",GEOGCS["GCS_PRS_1992",DATUM["D_Philippine_Reference_System_1992",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",123.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102458','PRS_1992_UTM_Zone_52N',NULL,NULL,NULL,NULL,'EPSG','4683',NULL,NULL,'ESRI','39','PROJCS["PRS_1992_UTM_Zone_52N",GEOGCS["GCS_PRS_1992",DATUM["D_Philippine_Reference_System_1992",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",129.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','40','Idaho - Ada County','Idaho - Ada County',43.0,43.85,-116.6,-115.94,0); +INSERT INTO "projected_crs" VALUES('ESRI','102459','NAD_1983_Idaho-Ada_County',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'ESRI','40','PROJCS["NAD_1983_Idaho-Ada_County",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2625138.996430666],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-115.75],PARAMETER["Scale_Factor",1.00011328],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "area" VALUES('ESRI','41','HJAIA - Hartsfield-Jackson Atlanta Intl Airport','HJAIA - Hartsfield-Jackson Atlanta Intl Airport',33.590879,33.68427937,-84.502368,-84.351204,0); +INSERT INTO "projected_crs" VALUES('ESRI','102460','HJAIA_AirportGrid_2Mar10',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'ESRI','41','PROJCS["HJAIA_AirportGrid_2Mar10",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Local"],PARAMETER["False_Easting",11233.741],PARAMETER["False_Northing",3076.34],PARAMETER["Scale_Factor",1.000047],PARAMETER["Azimuth",-0.01935],PARAMETER["Longitude_Of_Center",-84.4306922136],PARAMETER["Latitude_Of_Center",33.6340844042],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102461','NAD_1983_HARN_StatePlane_Hawaii_1_FIPS_5101_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1546','PROJCS["NAD_1983_HARN_StatePlane_Hawaii_1_FIPS_5101_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-155.5],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",18.83333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102462','NAD_1983_HARN_StatePlane_Hawaii_2_FIPS_5102_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1547','PROJCS["NAD_1983_HARN_StatePlane_Hawaii_2_FIPS_5102_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-156.6666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",20.33333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102463','NAD_1983_HARN_StatePlane_Hawaii_3_FIPS_5103_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1548','PROJCS["NAD_1983_HARN_StatePlane_Hawaii_3_FIPS_5103_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-158.0],PARAMETER["Scale_Factor",0.99999],PARAMETER["Latitude_Of_Origin",21.16666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102464','NAD_1983_HARN_StatePlane_Hawaii_4_FIPS_5104_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1549','PROJCS["NAD_1983_HARN_StatePlane_Hawaii_4_FIPS_5104_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-159.5],PARAMETER["Scale_Factor",0.99999],PARAMETER["Latitude_Of_Origin",21.83333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102465','NAD_1983_HARN_StatePlane_Hawaii_5_FIPS_5105_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1550','PROJCS["NAD_1983_HARN_StatePlane_Hawaii_5_FIPS_5105_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-160.1666666666667],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",21.66666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102466','NAD_1983_HARN_StatePlane_Minnesota_North_FIPS_2201_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2214','PROJCS["NAD_1983_HARN_StatePlane_Minnesota_North_FIPS_2201_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-93.1],PARAMETER["Standard_Parallel_1",47.03333333333333],PARAMETER["Standard_Parallel_2",48.63333333333333],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102467','NAD_1983_HARN_StatePlane_Minnesota_Central_FIPS_2202_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2213','PROJCS["NAD_1983_HARN_StatePlane_Minnesota_Central_FIPS_2202_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-94.25],PARAMETER["Standard_Parallel_1",45.61666666666667],PARAMETER["Standard_Parallel_2",47.05],PARAMETER["Latitude_Of_Origin",45.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102468','NAD_1983_HARN_StatePlane_Minnesota_South_FIPS_2203_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','2215','PROJCS["NAD_1983_HARN_StatePlane_Minnesota_South_FIPS_2203_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-94.0],PARAMETER["Standard_Parallel_1",43.78333333333333],PARAMETER["Standard_Parallel_2",45.21666666666667],PARAMETER["Latitude_Of_Origin",43.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102469','NAD_1983_HARN_Mississippi_TM',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1393','PROJCS["NAD_1983_HARN_Mississippi_TM",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",1300000.0],PARAMETER["Central_Meridian",-89.75],PARAMETER["Scale_Factor",0.9998335],PARAMETER["Latitude_Of_Origin",32.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102470','Cape_Lo15',NULL,NULL,NULL,NULL,'EPSG','4222',NULL,NULL,'EPSG','1454','PROJCS["Cape_Lo15",GEOGCS["GCS_Cape",DATUM["D_Cape",SPHEROID["Clarke_1880_Arc",6378249.145,293.466307656]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102471','Cape_Lo17',NULL,NULL,NULL,NULL,'EPSG','4222',NULL,NULL,'EPSG','1455','PROJCS["Cape_Lo17",GEOGCS["GCS_Cape",DATUM["D_Cape",SPHEROID["Clarke_1880_Arc",6378249.145,293.466307656]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",17.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102472','Cape_Lo19',NULL,NULL,NULL,NULL,'EPSG','4222',NULL,NULL,'EPSG','1456','PROJCS["Cape_Lo19",GEOGCS["GCS_Cape",DATUM["D_Cape",SPHEROID["Clarke_1880_Arc",6378249.145,293.466307656]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",19.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102473','Cape_Lo21',NULL,NULL,NULL,NULL,'EPSG','4222',NULL,NULL,'EPSG','1457','PROJCS["Cape_Lo21",GEOGCS["GCS_Cape",DATUM["D_Cape",SPHEROID["Clarke_1880_Arc",6378249.145,293.466307656]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",21.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102474','Cape_Lo23',NULL,NULL,NULL,NULL,'EPSG','4222',NULL,NULL,'EPSG','1458','PROJCS["Cape_Lo23",GEOGCS["GCS_Cape",DATUM["D_Cape",SPHEROID["Clarke_1880_Arc",6378249.145,293.466307656]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",23.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102475','Cape_Lo25',NULL,NULL,NULL,NULL,'EPSG','4222',NULL,NULL,'EPSG','1459','PROJCS["Cape_Lo25",GEOGCS["GCS_Cape",DATUM["D_Cape",SPHEROID["Clarke_1880_Arc",6378249.145,293.466307656]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",25.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102476','Cape_Lo27',NULL,NULL,NULL,NULL,'EPSG','4222',NULL,NULL,'EPSG','1460','PROJCS["Cape_Lo27",GEOGCS["GCS_Cape",DATUM["D_Cape",SPHEROID["Clarke_1880_Arc",6378249.145,293.466307656]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",27.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102477','Cape_Lo29',NULL,NULL,NULL,NULL,'EPSG','4222',NULL,NULL,'EPSG','1461','PROJCS["Cape_Lo29",GEOGCS["GCS_Cape",DATUM["D_Cape",SPHEROID["Clarke_1880_Arc",6378249.145,293.466307656]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",29.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102478','Cape_Lo31',NULL,NULL,NULL,NULL,'EPSG','4222',NULL,NULL,'EPSG','1462','PROJCS["Cape_Lo31",GEOGCS["GCS_Cape",DATUM["D_Cape",SPHEROID["Clarke_1880_Arc",6378249.145,293.466307656]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",31.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102479','Cape_Lo33',NULL,NULL,NULL,NULL,'EPSG','4222',NULL,NULL,'EPSG','1463','PROJCS["Cape_Lo33",GEOGCS["GCS_Cape",DATUM["D_Cape",SPHEROID["Clarke_1880_Arc",6378249.145,293.466307656]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",33.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102480','Hartebeesthoek94_Lo15',NULL,NULL,NULL,NULL,'EPSG','4148',NULL,NULL,'EPSG','1454','PROJCS["Hartebeesthoek94_Lo15",GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102481','Hartebeesthoek94_Lo17',NULL,NULL,NULL,NULL,'EPSG','4148',NULL,NULL,'EPSG','1455','PROJCS["Hartebeesthoek94_Lo17",GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",17.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102482','Hartebeesthoek94_Lo19',NULL,NULL,NULL,NULL,'EPSG','4148',NULL,NULL,'EPSG','1456','PROJCS["Hartebeesthoek94_Lo19",GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",19.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102483','Hartebeesthoek94_Lo21',NULL,NULL,NULL,NULL,'EPSG','4148',NULL,NULL,'EPSG','1457','PROJCS["Hartebeesthoek94_Lo21",GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",21.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102484','Hartebeesthoek94_Lo23',NULL,NULL,NULL,NULL,'EPSG','4148',NULL,NULL,'EPSG','1458','PROJCS["Hartebeesthoek94_Lo23",GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",23.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102485','Hartebeesthoek94_Lo25',NULL,NULL,NULL,NULL,'EPSG','4148',NULL,NULL,'EPSG','1459','PROJCS["Hartebeesthoek94_Lo25",GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",25.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102486','Hartebeesthoek94_Lo27',NULL,NULL,NULL,NULL,'EPSG','4148',NULL,NULL,'EPSG','1460','PROJCS["Hartebeesthoek94_Lo27",GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",27.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102487','Hartebeesthoek94_Lo29',NULL,NULL,NULL,NULL,'EPSG','4148',NULL,NULL,'EPSG','1461','PROJCS["Hartebeesthoek94_Lo29",GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",29.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102488','Hartebeesthoek94_Lo31',NULL,NULL,NULL,NULL,'EPSG','4148',NULL,NULL,'EPSG','1462','PROJCS["Hartebeesthoek94_Lo31",GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",31.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102489','Hartebeesthoek94_Lo33',NULL,NULL,NULL,NULL,'EPSG','4148',NULL,NULL,'EPSG','1463','PROJCS["Hartebeesthoek94_Lo33",GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",33.0],PARAMETER["Scale_Factor",-1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102490','GDBD2009_GEORSO',NULL,NULL,NULL,NULL,'EPSG','5246',NULL,NULL,'EPSG','1055','PROJCS["GDBD2009_GEORSO",GEOGCS["GCS_GDBD2009",DATUM["D_GDBD2009",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Rectified_Skew_Orthomorphic_Natural_Origin"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Scale_Factor",0.99984],PARAMETER["Azimuth",53.31580995],PARAMETER["Longitude_Of_Center",115.0],PARAMETER["Latitude_Of_Center",4.0],PARAMETER["XY_Plane_Rotation",53.13010235415598],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102491','Nord_Algerie_Ancienne_Degree',NULL,NULL,NULL,NULL,'EPSG','4304',NULL,NULL,'EPSG','1026','PROJCS["Nord_Algerie_Ancienne_Degree",GEOGCS["GCS_Voirol_1875",DATUM["D_Voirol_1875",SPHEROID["Clarke_1880_IGN",6378249.2,293.4660212936265]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",300000.0],PARAMETER["Central_Meridian",2.7],PARAMETER["Standard_Parallel_1",36.0],PARAMETER["Scale_Factor",0.999625544],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102492','Sud_Algerie_Ancienne_Degree',NULL,NULL,NULL,NULL,'EPSG','4304',NULL,NULL,'EPSG','1026','PROJCS["Sud_Algerie_Ancienne_Degree",GEOGCS["GCS_Voirol_1875",DATUM["D_Voirol_1875",SPHEROID["Clarke_1880_IGN",6378249.2,293.4660212936265]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",300000.0],PARAMETER["Central_Meridian",2.7],PARAMETER["Standard_Parallel_1",33.3],PARAMETER["Scale_Factor",0.999625769],PARAMETER["Latitude_Of_Origin",33.3],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102493','NAD_1983_PA11_UTM_Zone_4N',NULL,NULL,NULL,NULL,'EPSG','6322',NULL,NULL,'EPSG','3488','PROJCS["NAD_1983_PA11_UTM_Zone_4N",GEOGCS["GCS_NAD_1983_PA11",DATUM["D_NAD_1983_PA11",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-159.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102494','NAD_1983_PA11_UTM_Zone_5N',NULL,NULL,NULL,NULL,'EPSG','6322',NULL,NULL,'EPSG','3491','PROJCS["NAD_1983_PA11_UTM_Zone_5N",GEOGCS["GCS_NAD_1983_PA11",DATUM["D_NAD_1983_PA11",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-153.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102495','NAD_1983_MA11_Guam_Map_Grid',NULL,NULL,NULL,NULL,'EPSG','6325',NULL,NULL,'EPSG','3255','PROJCS["NAD_1983_MA11_Guam_Map_Grid",GEOGCS["GCS_NAD_1983_MA11",DATUM["D_NAD_1983_MA11",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",100000.0],PARAMETER["False_Northing",200000.0],PARAMETER["Central_Meridian",144.75],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",13.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102496','NAD_1983_PA11_UTM_Zone_2S',NULL,NULL,NULL,NULL,'EPSG','6322',NULL,NULL,'EPSG','3110','PROJCS["NAD_1983_PA11_UTM_Zone_2S",GEOGCS["GCS_NAD_1983_PA11",DATUM["D_NAD_1983_PA11",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",10000000.0],PARAMETER["Central_Meridian",-171.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','42','GOES-16 East Full disk','GOES-16 East Full disk',-81.3282,81.3282,-156.2995,6.2995,0); +INSERT INTO "projected_crs" VALUES('ESRI','102497','GOES-16_East_ABI_Fixed_Grid_ITRF2000',NULL,NULL,NULL,NULL,'ESRI','104124',NULL,NULL,'ESRI','42','PROJCS["GOES-16_East_ABI_Fixed_Grid_ITRF2000",GEOGCS["GCS_ITRF_2000",DATUM["D_ITRF_2000",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Geostationary_Satellite"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Longitude_Of_Center",-75.0],PARAMETER["Height",35786023.0],PARAMETER["Option",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102500','OCRS_Baker_NAD_1983_CORS96_TM_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4180','PROJCS["OCRS_Baker_NAD_1983_CORS96_TM_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",131233.5958005249],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-117.8333333333333],PARAMETER["Scale_Factor",1.00016],PARAMETER["Latitude_Of_Origin",44.5],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102501','OCRS_Bend-Burns_NAD_1983_CORS96_LCC_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4182','PROJCS["OCRS_Bend-Burns_NAD_1983_CORS96_LCC_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",393700.7874015748],PARAMETER["False_Northing",196850.3937007874],PARAMETER["Central_Meridian",-119.75],PARAMETER["Standard_Parallel_1",43.66666666666666],PARAMETER["Scale_Factor",1.0002],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102502','OCRS_Bend-Klamath_Falls_NAD_1983_CORS96_TM_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4192','PROJCS["OCRS_Bend-Klamath_Falls_NAD_1983_CORS96_TM_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",262467.1916010499],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-121.75],PARAMETER["Scale_Factor",1.0002],PARAMETER["Latitude_Of_Origin",41.75],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102503','OCRS_Bend-Redmond-Prineville_NAD_1983_CORS96_LCC_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4195','PROJCS["OCRS_Bend-Redmond-Prineville_NAD_1983_CORS96_LCC_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",262467.1916010499],PARAMETER["False_Northing",426509.186351706],PARAMETER["Central_Meridian",-121.25],PARAMETER["Standard_Parallel_1",44.66666666666666],PARAMETER["Scale_Factor",1.00012],PARAMETER["Latitude_Of_Origin",44.66666666666666],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102504','OCRS_Canyonville-Grants_Pass_NAD_1983_CORS96_TM_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4199','PROJCS["OCRS_Canyonville-Grants_Pass_NAD_1983_CORS96_TM_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",131233.5958005249],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-123.3333333333333],PARAMETER["Scale_Factor",1.00007],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102505','OCRS_Columbia_River_East_NAD_1983_CORS96_LCC_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4200','PROJCS["OCRS_Columbia_River_East_NAD_1983_CORS96_LCC_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",492125.9842519685],PARAMETER["False_Northing",98425.1968503937],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",45.66666666666666],PARAMETER["Scale_Factor",1.000008],PARAMETER["Latitude_Of_Origin",45.66666666666666],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102506','OCRS_Columbia_River_West_NAD_1983_CORS96_OM_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4202','PROJCS["OCRS_Columbia_River_West_NAD_1983_CORS96_OM_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",22965879.26509186],PARAMETER["False_Northing",-9842519.685039369],PARAMETER["Scale_Factor",1.0],PARAMETER["Azimuth",-65.0],PARAMETER["Longitude_Of_Center",-123.0],PARAMETER["Latitude_Of_Center",45.91666666666666],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102507','OCRS_Cottage_Grove-Canyonville_NAD_1983_CORS96_TM_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4203','PROJCS["OCRS_Cottage_Grove-Canyonville_NAD_1983_CORS96_TM_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",164041.9947506562],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-123.3333333333333],PARAMETER["Scale_Factor",1.000023],PARAMETER["Latitude_Of_Origin",42.83333333333334],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102508','OCRS_Dufur-Madras_NAD_1983_CORS96_TM_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4204','PROJCS["OCRS_Dufur-Madras_NAD_1983_CORS96_TM_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",262467.1916010499],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-121.0],PARAMETER["Scale_Factor",1.00011],PARAMETER["Latitude_Of_Origin",44.5],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102509','OCRS_Eugene_NAD_1983_CORS96_TM_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4197','PROJCS["OCRS_Eugene_NAD_1983_CORS96_TM_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",164041.9947506562],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-123.1666666666667],PARAMETER["Scale_Factor",1.000015],PARAMETER["Latitude_Of_Origin",43.75],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102510','OCRS_Grants_Pass-Ashland_NAD_1983_CORS96_TM_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4198','PROJCS["OCRS_Grants_Pass-Ashland_NAD_1983_CORS96_TM_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",164041.9947506562],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-123.3333333333333],PARAMETER["Scale_Factor",1.000043],PARAMETER["Latitude_Of_Origin",41.75],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102511','OCRS_Gresham-Warm_Springs_NAD_1983_CORS96_TM_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4201','PROJCS["OCRS_Gresham-Warm_Springs_NAD_1983_CORS96_TM_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",32808.39895013123],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-122.3333333333333],PARAMETER["Scale_Factor",1.00005],PARAMETER["Latitude_Of_Origin",45.0],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102512','OCRS_La_Grande_NAD_1983_CORS96_TM_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4206','PROJCS["OCRS_La_Grande_NAD_1983_CORS96_TM_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",131233.5958005249],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-118.0],PARAMETER["Scale_Factor",1.00013],PARAMETER["Latitude_Of_Origin",45.0],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102513','OCRS_Ontario_NAD_1983_CORS96_TM_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4207','PROJCS["OCRS_Ontario_NAD_1983_CORS96_TM_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",262467.1916010499],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-117.0],PARAMETER["Scale_Factor",1.0001],PARAMETER["Latitude_Of_Origin",43.25],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102514','OCRS_Oregon_Coast_NAD_1983_CORS96_OM_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4208','PROJCS["OCRS_Oregon_Coast_NAD_1983_CORS96_OM_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",-984251.968503937],PARAMETER["False_Northing",-15091863.51706037],PARAMETER["Scale_Factor",1.0],PARAMETER["Azimuth",5.0],PARAMETER["Longitude_Of_Center",-124.05],PARAMETER["Latitude_Of_Center",44.75],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102515','OCRS_Pendleton-La_Grande_NAD_1983_CORS96_TM_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4210','PROJCS["OCRS_Pendleton-La_Grande_NAD_1983_CORS96_TM_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",98425.1968503937],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-118.3333333333333],PARAMETER["Scale_Factor",1.000175],PARAMETER["Latitude_Of_Origin",45.08333333333334],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102516','OCRS_Pendleton_NAD_1983_CORS96_TM_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4209','PROJCS["OCRS_Pendleton_NAD_1983_CORS96_TM_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",196850.3937007874],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-119.1666666666667],PARAMETER["Scale_Factor",1.000045],PARAMETER["Latitude_Of_Origin",45.25],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102517','OCRS_Portland_NAD_1983_CORS96_LCC_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4211','PROJCS["OCRS_Portland_NAD_1983_CORS96_LCC_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",328083.9895013123],PARAMETER["False_Northing",164041.9947506562],PARAMETER["Central_Meridian",-122.75],PARAMETER["Standard_Parallel_1",45.5],PARAMETER["Scale_Factor",1.000002],PARAMETER["Latitude_Of_Origin",45.5],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102518','OCRS_Salem_NAD_1983_CORS96_TM_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4212','PROJCS["OCRS_Salem_NAD_1983_CORS96_TM_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",164041.9947506562],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-123.0833333333333],PARAMETER["Scale_Factor",1.00001],PARAMETER["Latitude_Of_Origin",44.33333333333334],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102519','OCRS_Santiam_Pass_NAD_1983_CORS96_TM_Feet_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4213','PROJCS["OCRS_Santiam_Pass_NAD_1983_CORS96_TM_Feet_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-122.5],PARAMETER["Scale_Factor",1.000155],PARAMETER["Latitude_Of_Origin",44.08333333333334],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102520','NAD_1983_PA11_StatePlane_Hawaii_1_FIPS_5101',NULL,NULL,NULL,NULL,'EPSG','6322',NULL,NULL,'EPSG','1546','PROJCS["NAD_1983_PA11_StatePlane_Hawaii_1_FIPS_5101",GEOGCS["GCS_NAD_1983_PA11",DATUM["D_NAD_1983_PA11",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-155.5],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",18.83333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102521','NAD_1983_PA11_StatePlane_Hawaii_2_FIPS_5102',NULL,NULL,NULL,NULL,'EPSG','6322',NULL,NULL,'EPSG','1547','PROJCS["NAD_1983_PA11_StatePlane_Hawaii_2_FIPS_5102",GEOGCS["GCS_NAD_1983_PA11",DATUM["D_NAD_1983_PA11",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-156.6666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",20.33333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102522','NAD_1983_PA11_StatePlane_Hawaii_3_FIPS_5103',NULL,NULL,NULL,NULL,'EPSG','6322',NULL,NULL,'EPSG','1548','PROJCS["NAD_1983_PA11_StatePlane_Hawaii_3_FIPS_5103",GEOGCS["GCS_NAD_1983_PA11",DATUM["D_NAD_1983_PA11",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-158.0],PARAMETER["Scale_Factor",0.99999],PARAMETER["Latitude_Of_Origin",21.16666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102523','NAD_1983_PA11_StatePlane_Hawaii_4_FIPS_5104',NULL,NULL,NULL,NULL,'EPSG','6322',NULL,NULL,'EPSG','1549','PROJCS["NAD_1983_PA11_StatePlane_Hawaii_4_FIPS_5104",GEOGCS["GCS_NAD_1983_PA11",DATUM["D_NAD_1983_PA11",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-159.5],PARAMETER["Scale_Factor",0.99999],PARAMETER["Latitude_Of_Origin",21.83333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102524','NAD_1983_PA11_StatePlane_Hawaii_5_FIPS_5105',NULL,NULL,NULL,NULL,'EPSG','6322',NULL,NULL,'EPSG','1550','PROJCS["NAD_1983_PA11_StatePlane_Hawaii_5_FIPS_5105",GEOGCS["GCS_NAD_1983_PA11",DATUM["D_NAD_1983_PA11",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-160.1666666666667],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",21.66666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102525','NAD_1983_PA11_StatePlane_Hawaii_1_FIPS_5101_Feet',NULL,NULL,NULL,NULL,'EPSG','6322',NULL,NULL,'EPSG','1546','PROJCS["NAD_1983_PA11_StatePlane_Hawaii_1_FIPS_5101_Feet",GEOGCS["GCS_NAD_1983_PA11",DATUM["D_NAD_1983_PA11",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-155.5],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",18.83333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102526','NAD_1983_PA11_StatePlane_Hawaii_2_FIPS_5102_Feet',NULL,NULL,NULL,NULL,'EPSG','6322',NULL,NULL,'EPSG','1547','PROJCS["NAD_1983_PA11_StatePlane_Hawaii_2_FIPS_5102_Feet",GEOGCS["GCS_NAD_1983_PA11",DATUM["D_NAD_1983_PA11",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-156.6666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",20.33333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102527','NAD_1983_PA11_StatePlane_Hawaii_3_FIPS_5103_Feet',NULL,NULL,NULL,NULL,'EPSG','6322',NULL,NULL,'EPSG','1548','PROJCS["NAD_1983_PA11_StatePlane_Hawaii_3_FIPS_5103_Feet",GEOGCS["GCS_NAD_1983_PA11",DATUM["D_NAD_1983_PA11",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-158.0],PARAMETER["Scale_Factor",0.99999],PARAMETER["Latitude_Of_Origin",21.16666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102528','NAD_1983_PA11_StatePlane_Hawaii_4_FIPS_5104_Feet',NULL,NULL,NULL,NULL,'EPSG','6322',NULL,NULL,'EPSG','1549','PROJCS["NAD_1983_PA11_StatePlane_Hawaii_4_FIPS_5104_Feet",GEOGCS["GCS_NAD_1983_PA11",DATUM["D_NAD_1983_PA11",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-159.5],PARAMETER["Scale_Factor",0.99999],PARAMETER["Latitude_Of_Origin",21.83333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102529','NAD_1983_PA11_StatePlane_Hawaii_5_FIPS_5105_Feet',NULL,NULL,NULL,NULL,'EPSG','6322',NULL,NULL,'EPSG','1550','PROJCS["NAD_1983_PA11_StatePlane_Hawaii_5_FIPS_5105_Feet",GEOGCS["GCS_NAD_1983_PA11",DATUM["D_NAD_1983_PA11",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-160.1666666666667],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",21.66666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102530','OCRS_Baker_NAD_1983_CORS96_TM_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4180','PROJCS["OCRS_Baker_NAD_1983_CORS96_TM_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",40000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-117.8333333333333],PARAMETER["Scale_Factor",1.00016],PARAMETER["Latitude_Of_Origin",44.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102531','OCRS_Bend-Burns_NAD_1983_CORS96_LCC_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4182','PROJCS["OCRS_Bend-Burns_NAD_1983_CORS96_LCC_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",120000.0],PARAMETER["False_Northing",60000.0],PARAMETER["Central_Meridian",-119.75],PARAMETER["Standard_Parallel_1",43.66666666666666],PARAMETER["Scale_Factor",1.0002],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102532','OCRS_Bend-Klamath_Falls_NAD_1983_CORS96_TM_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4192','PROJCS["OCRS_Bend-Klamath_Falls_NAD_1983_CORS96_TM_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",80000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-121.75],PARAMETER["Scale_Factor",1.0002],PARAMETER["Latitude_Of_Origin",41.75],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102533','OCRS_Bend-Redmond-Prineville_NAD_1983_CORS96_LCC_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4195','PROJCS["OCRS_Bend-Redmond-Prineville_NAD_1983_CORS96_LCC_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",80000.0],PARAMETER["False_Northing",130000.0],PARAMETER["Central_Meridian",-121.25],PARAMETER["Standard_Parallel_1",44.66666666666666],PARAMETER["Scale_Factor",1.00012],PARAMETER["Latitude_Of_Origin",44.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102534','OCRS_Canyonville-Grants_Pass_NAD_1983_CORS96_TM_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4199','PROJCS["OCRS_Canyonville-Grants_Pass_NAD_1983_CORS96_TM_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",40000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-123.3333333333333],PARAMETER["Scale_Factor",1.00007],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102535','OCRS_Columbia_River_East_NAD_1983_CORS96_LCC_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4200','PROJCS["OCRS_Columbia_River_East_NAD_1983_CORS96_LCC_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",150000.0],PARAMETER["False_Northing",30000.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",45.66666666666666],PARAMETER["Scale_Factor",1.000008],PARAMETER["Latitude_Of_Origin",45.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102536','OCRS_Columbia_River_West_NAD_1983_CORS96_OM_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4202','PROJCS["OCRS_Columbia_River_West_NAD_1983_CORS96_OM_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",7000000.0],PARAMETER["False_Northing",-3000000.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Azimuth",-65.0],PARAMETER["Longitude_Of_Center",-123.0],PARAMETER["Latitude_Of_Center",45.91666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102537','OCRS_Cottage_Grove-Canyonville_NAD_1983_CORS96_TM_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4203','PROJCS["OCRS_Cottage_Grove-Canyonville_NAD_1983_CORS96_TM_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",50000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-123.3333333333333],PARAMETER["Scale_Factor",1.000023],PARAMETER["Latitude_Of_Origin",42.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102538','OCRS_Dufur-Madras_NAD_1983_CORS96_TM_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4204','PROJCS["OCRS_Dufur-Madras_NAD_1983_CORS96_TM_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",80000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-121.0],PARAMETER["Scale_Factor",1.00011],PARAMETER["Latitude_Of_Origin",44.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102539','OCRS_Eugene_NAD_1983_CORS96_TM_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4197','PROJCS["OCRS_Eugene_NAD_1983_CORS96_TM_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",50000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-123.1666666666667],PARAMETER["Scale_Factor",1.000015],PARAMETER["Latitude_Of_Origin",43.75],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102540','OCRS_Grants_Pass-Ashland_NAD_1983_CORS96_TM_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4198','PROJCS["OCRS_Grants_Pass-Ashland_NAD_1983_CORS96_TM_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",50000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-123.3333333333333],PARAMETER["Scale_Factor",1.000043],PARAMETER["Latitude_Of_Origin",41.75],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102541','OCRS_Gresham-Warm_Springs_NAD_1983_CORS96_TM_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4201','PROJCS["OCRS_Gresham-Warm_Springs_NAD_1983_CORS96_TM_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",10000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-122.3333333333333],PARAMETER["Scale_Factor",1.00005],PARAMETER["Latitude_Of_Origin",45.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102542','OCRS_La_Grande_NAD_1983_CORS96_TM_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4206','PROJCS["OCRS_La_Grande_NAD_1983_CORS96_TM_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",40000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-118.0],PARAMETER["Scale_Factor",1.00013],PARAMETER["Latitude_Of_Origin",45.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102543','OCRS_Ontario_NAD_1983_CORS96_TM_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4207','PROJCS["OCRS_Ontario_NAD_1983_CORS96_TM_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",80000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-117.0],PARAMETER["Scale_Factor",1.0001],PARAMETER["Latitude_Of_Origin",43.25],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102544','OCRS_Oregon_Coast_NAD_1983_CORS96_OM_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4208','PROJCS["OCRS_Oregon_Coast_NAD_1983_CORS96_OM_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",-300000.0],PARAMETER["False_Northing",-4600000.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Azimuth",5.0],PARAMETER["Longitude_Of_Center",-124.05],PARAMETER["Latitude_Of_Center",44.75],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102545','OCRS_Pendleton-La_Grande_NAD_1983_CORS96_TM_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4210','PROJCS["OCRS_Pendleton-La_Grande_NAD_1983_CORS96_TM_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",30000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-118.3333333333333],PARAMETER["Scale_Factor",1.000175],PARAMETER["Latitude_Of_Origin",45.08333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102546','OCRS_Pendleton_NAD_1983_CORS96_TM_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4209','PROJCS["OCRS_Pendleton_NAD_1983_CORS96_TM_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",60000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-119.1666666666667],PARAMETER["Scale_Factor",1.000045],PARAMETER["Latitude_Of_Origin",45.25],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102547','OCRS_Portland_NAD_1983_CORS96_LCC_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4211','PROJCS["OCRS_Portland_NAD_1983_CORS96_LCC_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",100000.0],PARAMETER["False_Northing",50000.0],PARAMETER["Central_Meridian",-122.75],PARAMETER["Standard_Parallel_1",45.5],PARAMETER["Scale_Factor",1.000002],PARAMETER["Latitude_Of_Origin",45.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102548','OCRS_Salem_NAD_1983_CORS96_TM_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4212','PROJCS["OCRS_Salem_NAD_1983_CORS96_TM_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",50000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-123.0833333333333],PARAMETER["Scale_Factor",1.00001],PARAMETER["Latitude_Of_Origin",44.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102549','OCRS_Santiam_Pass_NAD_1983_CORS96_TM_Meters',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','4213','PROJCS["OCRS_Santiam_Pass_NAD_1983_CORS96_TM_Meters",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-122.5],PARAMETER["Scale_Factor",1.000155],PARAMETER["Latitude_Of_Origin",44.08333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102550','ED_1950_Turkey_9',NULL,NULL,NULL,NULL,'EPSG','4230',NULL,NULL,'EPSG','1524','PROJCS["ED_1950_Turkey_9",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",9500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",27.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102551','ED_1950_Turkey_10',NULL,NULL,NULL,NULL,'EPSG','4230',NULL,NULL,'EPSG','1525','PROJCS["ED_1950_Turkey_10",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",10500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",30.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102552','ED_1950_Turkey_11',NULL,NULL,NULL,NULL,'EPSG','4230',NULL,NULL,'EPSG','1526','PROJCS["ED_1950_Turkey_11",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",11500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",33.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102553','ED_1950_Turkey_12',NULL,NULL,NULL,NULL,'EPSG','4230',NULL,NULL,'EPSG','1527','PROJCS["ED_1950_Turkey_12",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",12500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",36.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102554','ED_1950_Turkey_13',NULL,NULL,NULL,NULL,'EPSG','4230',NULL,NULL,'EPSG','1528','PROJCS["ED_1950_Turkey_13",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",13500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",39.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102555','ED_1950_Turkey_14',NULL,NULL,NULL,NULL,'EPSG','4230',NULL,NULL,'EPSG','1529','PROJCS["ED_1950_Turkey_14",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",14500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",42.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102556','ED_1950_Turkey_15',NULL,NULL,NULL,NULL,'EPSG','4230',NULL,NULL,'EPSG','1530','PROJCS["ED_1950_Turkey_15",GEOGCS["GCS_European_1950",DATUM["D_European_1950",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",15500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",45.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','43','Kyrgyz Republic - 67~01''E to 70~01''E','Kyrgyz Republic - 67~01''E to 70~01''E',39.4,40.3,67.0166667,70.0166667,0); +INSERT INTO "projected_crs" VALUES('ESRI','102557','Kyrg-06_TM_Zone_1',NULL,NULL,NULL,NULL,'ESRI','104009',NULL,NULL,'ESRI','43','PROJCS["Kyrg-06_TM_Zone_1",GEOGCS["GCS_Kyrg-06",DATUM["D_Kyrgyz_Republic_2006",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1300000.0],PARAMETER["False_Northing",14743.5],PARAMETER["Central_Meridian",68.51666666666667],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','44','Kyrgyz Republic - 70~01''E to 73~01''E','Kyrgyz Republic - 70~01''E to 73~01''E',39.1333333,42.9,70.0166667,73.0166667,0); +INSERT INTO "projected_crs" VALUES('ESRI','102558','Kyrg-06_TM_Zone_2',NULL,NULL,NULL,NULL,'ESRI','104009',NULL,NULL,'ESRI','44','PROJCS["Kyrg-06_TM_Zone_2",GEOGCS["GCS_Kyrg-06",DATUM["D_Kyrgyz_Republic_2006",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2300000.0],PARAMETER["False_Northing",14743.5],PARAMETER["Central_Meridian",71.51666666666667],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','45','Kyrgyz Republic - 73~01''E to 76~01''E','Kyrgyz Republic - 73~01''E to 76~01''E',39.25,43.3333333,73.0166667,76.0166667,0); +INSERT INTO "projected_crs" VALUES('ESRI','102559','Kyrg-06_TM_Zone_3',NULL,NULL,NULL,NULL,'ESRI','104009',NULL,NULL,'ESRI','45','PROJCS["Kyrg-06_TM_Zone_3",GEOGCS["GCS_Kyrg-06",DATUM["D_Kyrgyz_Republic_2006",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",3300000.0],PARAMETER["False_Northing",14743.5],PARAMETER["Central_Meridian",74.51666666666667],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','46','Kyrgyz Republic - 76~01''E to 79~01''E','Kyrgyz Republic - 76~01''E to 79~01''E',40.1666667,43.0,76.0166667,79.0166667,0); +INSERT INTO "projected_crs" VALUES('ESRI','102560','Kyrg-06_TM_Zone_4',NULL,NULL,NULL,NULL,'ESRI','104009',NULL,NULL,'ESRI','46','PROJCS["Kyrg-06_TM_Zone_4",GEOGCS["GCS_Kyrg-06",DATUM["D_Kyrgyz_Republic_2006",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",4300000.0],PARAMETER["False_Northing",14743.5],PARAMETER["Central_Meridian",77.51666666666667],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','47','Kyrgyz Republic - 79~01''E to 82~01''E','Kyrgyz Republic - 79~01''E to 82~01''E',41.5,43.0,79.0166667,82.0166667,0); +INSERT INTO "projected_crs" VALUES('ESRI','102561','Kyrg-06_TM_Zone_5',NULL,NULL,NULL,NULL,'ESRI','104009',NULL,NULL,'ESRI','47','PROJCS["Kyrg-06_TM_Zone_5",GEOGCS["GCS_Kyrg-06",DATUM["D_Kyrgyz_Republic_2006",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",5300000.0],PARAMETER["False_Northing",14743.5],PARAMETER["Central_Meridian",80.51666666666667],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102562','Hartebeesthoek94_Lo19_(E-N)',NULL,NULL,NULL,NULL,'EPSG','4148',NULL,NULL,'EPSG','1456','PROJCS["Hartebeesthoek94_Lo19_(E-N)",GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",19.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102563','Hartebeesthoek94_Lo21_(E-N)',NULL,NULL,NULL,NULL,'EPSG','4148',NULL,NULL,'EPSG','1457','PROJCS["Hartebeesthoek94_Lo21_(E-N)",GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",21.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102564','Hartebeesthoek94_Lo23_(E-N)',NULL,NULL,NULL,NULL,'EPSG','4148',NULL,NULL,'EPSG','1458','PROJCS["Hartebeesthoek94_Lo23_(E-N)",GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",23.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102565','Hartebeesthoek94_Lo25_(E-N)',NULL,NULL,NULL,NULL,'EPSG','4148',NULL,NULL,'EPSG','1459','PROJCS["Hartebeesthoek94_Lo25_(E-N)",GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",25.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102566','Hartebeesthoek94_Lo27_(E-N)',NULL,NULL,NULL,NULL,'EPSG','4148',NULL,NULL,'EPSG','1460','PROJCS["Hartebeesthoek94_Lo27_(E-N)",GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",27.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102567','Hartebeesthoek94_Lo29_(E-N)',NULL,NULL,NULL,NULL,'EPSG','4148',NULL,NULL,'EPSG','1461','PROJCS["Hartebeesthoek94_Lo29_(E-N)",GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",29.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102568','Hartebeesthoek94_Lo31_(E-N)',NULL,NULL,NULL,NULL,'EPSG','4148',NULL,NULL,'EPSG','1462','PROJCS["Hartebeesthoek94_Lo31_(E-N)",GEOGCS["GCS_Hartebeesthoek_1994",DATUM["D_Hartebeesthoek_1994",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",31.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102570','WGS_1984_Complex_UTM_Zone_20N',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1911','PROJCS["WGS_1984_Complex_UTM_Zone_20N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator_Complex"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-63.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102571','WGS_1984_Complex_UTM_Zone_21N',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1913','PROJCS["WGS_1984_Complex_UTM_Zone_21N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator_Complex"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-57.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102572','WGS_1984_Complex_UTM_Zone_22N',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1915','PROJCS["WGS_1984_Complex_UTM_Zone_22N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator_Complex"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-51.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102573','WGS_1984_Complex_UTM_Zone_23N',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1917','PROJCS["WGS_1984_Complex_UTM_Zone_23N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator_Complex"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-45.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102574','WGS_1984_Complex_UTM_Zone_24N',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1919','PROJCS["WGS_1984_Complex_UTM_Zone_24N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator_Complex"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-39.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102575','WGS_1984_Complex_UTM_Zone_25N',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1921','PROJCS["WGS_1984_Complex_UTM_Zone_25N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator_Complex"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-33.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102576','WGS_1984_Complex_UTM_Zone_26N',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1923','PROJCS["WGS_1984_Complex_UTM_Zone_26N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator_Complex"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-27.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102577','WGS_1984_Complex_UTM_Zone_27N',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1925','PROJCS["WGS_1984_Complex_UTM_Zone_27N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator_Complex"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-21.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102578','WGS_1984_Complex_UTM_Zone_28N',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1927','PROJCS["WGS_1984_Complex_UTM_Zone_28N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator_Complex"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102579','WGS_1984_Complex_UTM_Zone_29N',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1929','PROJCS["WGS_1984_Complex_UTM_Zone_29N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator_Complex"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102580','WGS_1984_Complex_UTM_Zone_30N',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1931','PROJCS["WGS_1984_Complex_UTM_Zone_30N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator_Complex"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-3.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102581','NTF_France_I_degrees',NULL,NULL,NULL,NULL,'EPSG','4275',NULL,NULL,'EPSG','1731','PROJCS["NTF_France_I_degrees",GEOGCS["GCS_NTF",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.4660212936265]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",1200000.0],PARAMETER["Central_Meridian",2.337229166666667],PARAMETER["Standard_Parallel_1",49.5],PARAMETER["Scale_Factor",0.999877341],PARAMETER["Latitude_Of_Origin",49.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102582','NTF_France_II_degrees',NULL,NULL,NULL,NULL,'EPSG','4275',NULL,NULL,'EPSG','1734','PROJCS["NTF_France_II_degrees",GEOGCS["GCS_NTF",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.4660212936265]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",2200000.0],PARAMETER["Central_Meridian",2.337229166666667],PARAMETER["Standard_Parallel_1",46.8],PARAMETER["Scale_Factor",0.99987742],PARAMETER["Latitude_Of_Origin",46.8],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102583','NTF_France_III_degrees',NULL,NULL,NULL,NULL,'EPSG','4275',NULL,NULL,'EPSG','1733','PROJCS["NTF_France_III_degrees",GEOGCS["GCS_NTF",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.4660212936265]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",3200000.0],PARAMETER["Central_Meridian",2.337229166666667],PARAMETER["Standard_Parallel_1",44.1],PARAMETER["Scale_Factor",0.999877499],PARAMETER["Latitude_Of_Origin",44.1],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102584','NTF_France_IV_degrees',NULL,NULL,NULL,NULL,'EPSG','4275',NULL,NULL,'EPSG','1327','PROJCS["NTF_France_IV_degrees",GEOGCS["GCS_NTF",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.4660212936265]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",234.358],PARAMETER["False_Northing",4185861.369],PARAMETER["Central_Meridian",2.337229166666667],PARAMETER["Standard_Parallel_1",42.165],PARAMETER["Scale_Factor",0.99994471],PARAMETER["Latitude_Of_Origin",42.165],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102585','NTF_Lambert_Zone_I',NULL,NULL,NULL,NULL,'EPSG','4275',NULL,NULL,'EPSG','1731','PROJCS["NTF_Lambert_Zone_I",GEOGCS["GCS_NTF",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.4660212936265]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",1200000.0],PARAMETER["Central_Meridian",2.337229166666667],PARAMETER["Standard_Parallel_1",49.5],PARAMETER["Scale_Factor",0.999877341],PARAMETER["Latitude_Of_Origin",49.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102586','NTF_Lambert_Zone_II',NULL,NULL,NULL,NULL,'EPSG','4275',NULL,NULL,'EPSG','1734','PROJCS["NTF_Lambert_Zone_II",GEOGCS["GCS_NTF",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.4660212936265]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",2200000.0],PARAMETER["Central_Meridian",2.337229166666667],PARAMETER["Standard_Parallel_1",46.8],PARAMETER["Scale_Factor",0.99987742],PARAMETER["Latitude_Of_Origin",46.8],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102587','NTF_Lambert_Zone_III',NULL,NULL,NULL,NULL,'EPSG','4275',NULL,NULL,'EPSG','1733','PROJCS["NTF_Lambert_Zone_III",GEOGCS["GCS_NTF",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.4660212936265]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",3200000.0],PARAMETER["Central_Meridian",2.337229166666667],PARAMETER["Standard_Parallel_1",44.1],PARAMETER["Scale_Factor",0.999877499],PARAMETER["Latitude_Of_Origin",44.1],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102588','NTF_Lambert_Zone_IV',NULL,NULL,NULL,NULL,'EPSG','4275',NULL,NULL,'EPSG','1327','PROJCS["NTF_Lambert_Zone_IV",GEOGCS["GCS_NTF",DATUM["D_NTF",SPHEROID["Clarke_1880_IGN",6378249.2,293.4660212936265]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",234.358],PARAMETER["False_Northing",4185861.369],PARAMETER["Central_Meridian",2.337229166666667],PARAMETER["Standard_Parallel_1",42.165],PARAMETER["Scale_Factor",0.99994471],PARAMETER["Latitude_Of_Origin",42.165],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','48','USA - Contiguous US','USA - Contiguous US',20.0,50.0,-125.0,-65.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102589','Panhandle_Energy_Albers',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'ESRI','48','PROJCS["Panhandle_Energy_Albers",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-86.0],PARAMETER["Standard_Parallel_1",31.0],PARAMETER["Standard_Parallel_2",41.0],PARAMETER["Latitude_Of_Origin",25.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102590','Tananarive_1925_Laborde_Grid',NULL,NULL,NULL,NULL,'EPSG','4297',NULL,NULL,'EPSG','3273','PROJCS["Tananarive_1925_Laborde_Grid",GEOGCS["GCS_Tananarive_1925",DATUM["D_Tananarive_1925",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Laborde_Oblique_Mercator"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",800000.0],PARAMETER["Scale_Factor",0.9995],PARAMETER["Azimuth",18.9],PARAMETER["Longitude_Of_Center",46.43722916666667],PARAMETER["Latitude_Of_Center",-18.9],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102591','Nord_Algerie_Degree',NULL,NULL,NULL,NULL,'ESRI','104305',NULL,NULL,'EPSG','1026','PROJCS["Nord_Algerie_Degree",GEOGCS["GCS_Voirol_Unifie_1960_Degree",DATUM["D_Voirol_Unifie_1960",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500135.0],PARAMETER["False_Northing",300090.0],PARAMETER["Central_Meridian",2.7],PARAMETER["Standard_Parallel_1",36.0],PARAMETER["Scale_Factor",0.999625544],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102592','Sud_Algerie_Degree',NULL,NULL,NULL,NULL,'ESRI','104305',NULL,NULL,'EPSG','1026','PROJCS["Sud_Algerie_Degree",GEOGCS["GCS_Voirol_Unifie_1960_Degree",DATUM["D_Voirol_Unifie_1960",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500135.0],PARAMETER["False_Northing",300090.0],PARAMETER["Central_Meridian",2.7],PARAMETER["Standard_Parallel_1",33.3],PARAMETER["Scale_Factor",0.999625769],PARAMETER["Latitude_Of_Origin",33.3],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102593','JGD_2011_UTM_Zone_51N',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','3959','PROJCS["JGD_2011_UTM_Zone_51N",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",123.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102594','JGD_2011_UTM_Zone_52N',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','3960','PROJCS["JGD_2011_UTM_Zone_52N",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",129.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102595','JGD_2011_UTM_Zone_53N',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','3961','PROJCS["JGD_2011_UTM_Zone_53N",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",135.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102596','JGD_2011_UTM_Zone_54N',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','3962','PROJCS["JGD_2011_UTM_Zone_54N",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",141.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102597','JGD_2011_UTM_Zone_55N',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','3963','PROJCS["JGD_2011_UTM_Zone_55N",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",147.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102598','JGD_2011_UTM_Zone_56N',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1983','PROJCS["JGD_2011_UTM_Zone_56N",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",153.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102599','WGS_1984_California_Teale_Albers_FtUS',NULL,NULL,NULL,NULL,'EPSG','4326',NULL,NULL,'EPSG','1375','PROJCS["WGS_1984_California_Teale_Albers_FtUS",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",-4000000.0],PARAMETER["Central_Meridian",-120.0],PARAMETER["Standard_Parallel_1",34.0],PARAMETER["Standard_Parallel_2",40.5],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102600','NAD_1983_California_Teale_Albers_FtUS',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1375','PROJCS["NAD_1983_California_Teale_Albers_FtUS",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",-4000000.0],PARAMETER["Central_Meridian",-120.0],PARAMETER["Standard_Parallel_1",34.0],PARAMETER["Standard_Parallel_2",40.5],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102601','NAD_1983_Texas_Centric_Mapping_System_Albers',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1412','PROJCS["NAD_1983_Texas_Centric_Mapping_System_Albers",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",1500000.0],PARAMETER["False_Northing",6000000.0],PARAMETER["Central_Meridian",-100.0],PARAMETER["Standard_Parallel_1",27.5],PARAMETER["Standard_Parallel_2",35.0],PARAMETER["Latitude_Of_Origin",18.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102602','NAD_1983_Texas_Centric_Mapping_System_Lambert',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1412','PROJCS["NAD_1983_Texas_Centric_Mapping_System_Lambert",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1500000.0],PARAMETER["False_Northing",5000000.0],PARAMETER["Central_Meridian",-100.0],PARAMETER["Standard_Parallel_1",27.5],PARAMETER["Standard_Parallel_2",35.0],PARAMETER["Latitude_Of_Origin",18.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102603','NAD_1983_Texas_Statewide_Mapping_System',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1412','PROJCS["NAD_1983_Texas_Statewide_Mapping_System",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1000000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-100.0],PARAMETER["Standard_Parallel_1",27.41666666666667],PARAMETER["Standard_Parallel_2",34.91666666666666],PARAMETER["Latitude_Of_Origin",31.16666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102604','NAD_1983_Georgia_Statewide_Lambert',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1380','PROJCS["NAD_1983_Georgia_Statewide_Lambert",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-83.5],PARAMETER["Standard_Parallel_1",31.41666666666667],PARAMETER["Standard_Parallel_2",34.28333333333333],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102605','NAD_1983_Idaho_TM',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1381','PROJCS["NAD_1983_Idaho_TM",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2500000.0],PARAMETER["False_Northing",1200000.0],PARAMETER["Central_Meridian",-114.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",42.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102606','NAD_1983_Maine_2000_East_Zone',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2960','PROJCS["NAD_1983_Maine_2000_East_Zone",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-67.875],PARAMETER["Scale_Factor",0.99998],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102607','NAD_1983_Maine_2000_Central_Zone',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2959','PROJCS["NAD_1983_Maine_2000_Central_Zone",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-69.125],PARAMETER["Scale_Factor",0.99998],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102608','NAD_1983_Maine_2000_West_Zone',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2958','PROJCS["NAD_1983_Maine_2000_West_Zone",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-70.375],PARAMETER["Scale_Factor",0.99998],PARAMETER["Latitude_Of_Origin",42.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102609','NAD_1983_Mississippi_TM',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1393','PROJCS["NAD_1983_Mississippi_TM",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",1300000.0],PARAMETER["Central_Meridian",-89.75],PARAMETER["Scale_Factor",0.9998335],PARAMETER["Latitude_Of_Origin",32.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102610','JGD_2011_Japan_Zone_1',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1854','PROJCS["JGD_2011_Japan_Zone_1",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",129.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",33.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102611','JGD_2011_Japan_Zone_2',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1855','PROJCS["JGD_2011_Japan_Zone_2",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",131.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",33.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102612','JGD_2011_Japan_Zone_3',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1856','PROJCS["JGD_2011_Japan_Zone_3",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",132.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102613','JGD_2011_Japan_Zone_4',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1857','PROJCS["JGD_2011_Japan_Zone_4",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",133.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",33.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102614','JGD_2011_Japan_Zone_5',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1858','PROJCS["JGD_2011_Japan_Zone_5",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",134.3333333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102615','JGD_2011_Japan_Zone_6',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1859','PROJCS["JGD_2011_Japan_Zone_6",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",136.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102616','JGD_2011_Japan_Zone_7',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1860','PROJCS["JGD_2011_Japan_Zone_7",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",137.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102617','JGD_2011_Japan_Zone_8',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1861','PROJCS["JGD_2011_Japan_Zone_8",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",138.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102618','JGD_2011_Japan_Zone_9',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1862','PROJCS["JGD_2011_Japan_Zone_9",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",139.8333333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",36.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102619','JGD_2011_Japan_Zone_10',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1863','PROJCS["JGD_2011_Japan_Zone_10",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",140.8333333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102620','JGD_2011_Japan_Zone_11',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1864','PROJCS["JGD_2011_Japan_Zone_11",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",140.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",44.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102621','JGD_2011_Japan_Zone_12',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1865','PROJCS["JGD_2011_Japan_Zone_12",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",142.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",44.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102622','JGD_2011_Japan_Zone_13',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1866','PROJCS["JGD_2011_Japan_Zone_13",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",144.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",44.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102623','JGD_2011_Japan_Zone_14',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1867','PROJCS["JGD_2011_Japan_Zone_14",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",142.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102624','JGD_2011_Japan_Zone_15',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1868','PROJCS["JGD_2011_Japan_Zone_15",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",127.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102625','JGD_2011_Japan_Zone_16',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1869','PROJCS["JGD_2011_Japan_Zone_16",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",124.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102626','JGD_2011_Japan_Zone_17',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1870','PROJCS["JGD_2011_Japan_Zone_17",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",131.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102627','JGD_2011_Japan_Zone_18',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1871','PROJCS["JGD_2011_Japan_Zone_18",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",136.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",20.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102628','JGD_2011_Japan_Zone_19',NULL,NULL,NULL,NULL,'EPSG','6668',NULL,NULL,'EPSG','1872','PROJCS["JGD_2011_Japan_Zone_19",GEOGCS["GCS_JGD_2011",DATUM["D_JGD_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",154.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",26.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102629','NAD_1983_StatePlane_Alabama_East_FIPS_0101_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2154','PROJCS["NAD_1983_StatePlane_Alabama_East_FIPS_0101_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-85.83333333333333],PARAMETER["Scale_Factor",0.99996],PARAMETER["Latitude_Of_Origin",30.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102630','NAD_1983_StatePlane_Alabama_West_FIPS_0102_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2155','PROJCS["NAD_1983_StatePlane_Alabama_West_FIPS_0102_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102631','NAD_1983_StatePlane_Alaska_1_FIPS_5001_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2156','PROJCS["NAD_1983_StatePlane_Alaska_1_FIPS_5001_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",16404166.66666666],PARAMETER["False_Northing",-16404166.66666666],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",-36.86989764583333],PARAMETER["Longitude_Of_Center",-133.6666666666667],PARAMETER["Latitude_Of_Center",57.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102632','NAD_1983_StatePlane_Alaska_2_FIPS_5002_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2158','PROJCS["NAD_1983_StatePlane_Alaska_2_FIPS_5002_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-142.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102633','NAD_1983_StatePlane_Alaska_3_FIPS_5003_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2159','PROJCS["NAD_1983_StatePlane_Alaska_3_FIPS_5003_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-146.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102634','NAD_1983_StatePlane_Alaska_4_FIPS_5004_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2160','PROJCS["NAD_1983_StatePlane_Alaska_4_FIPS_5004_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-150.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102635','NAD_1983_StatePlane_Alaska_5_FIPS_5005_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2161','PROJCS["NAD_1983_StatePlane_Alaska_5_FIPS_5005_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-154.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102636','NAD_1983_StatePlane_Alaska_6_FIPS_5006_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2162','PROJCS["NAD_1983_StatePlane_Alaska_6_FIPS_5006_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-158.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102637','NAD_1983_StatePlane_Alaska_7_FIPS_5007_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2163','PROJCS["NAD_1983_StatePlane_Alaska_7_FIPS_5007_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-162.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102638','NAD_1983_StatePlane_Alaska_8_FIPS_5008_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2164','PROJCS["NAD_1983_StatePlane_Alaska_8_FIPS_5008_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-166.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102639','NAD_1983_StatePlane_Alaska_9_FIPS_5009_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2165','PROJCS["NAD_1983_StatePlane_Alaska_9_FIPS_5009_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-170.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102640','NAD_1983_StatePlane_Alaska_10_FIPS_5010_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2157','PROJCS["NAD_1983_StatePlane_Alaska_10_FIPS_5010_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3280833.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-176.0],PARAMETER["Standard_Parallel_1",51.83333333333334],PARAMETER["Standard_Parallel_2",53.83333333333334],PARAMETER["Latitude_Of_Origin",51.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102641','NAD_1983_StatePlane_California_I_FIPS_0401_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2175','PROJCS["NAD_1983_StatePlane_California_I_FIPS_0401_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-122.0],PARAMETER["Standard_Parallel_1",40.0],PARAMETER["Standard_Parallel_2",41.66666666666666],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102642','NAD_1983_StatePlane_California_II_FIPS_0402_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2176','PROJCS["NAD_1983_StatePlane_California_II_FIPS_0402_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-122.0],PARAMETER["Standard_Parallel_1",38.33333333333334],PARAMETER["Standard_Parallel_2",39.83333333333334],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102643','NAD_1983_StatePlane_California_III_FIPS_0403_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2177','PROJCS["NAD_1983_StatePlane_California_III_FIPS_0403_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",37.06666666666667],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102644','NAD_1983_StatePlane_California_IV_FIPS_0404_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2178','PROJCS["NAD_1983_StatePlane_California_IV_FIPS_0404_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-119.0],PARAMETER["Standard_Parallel_1",36.0],PARAMETER["Standard_Parallel_2",37.25],PARAMETER["Latitude_Of_Origin",35.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102645','NAD_1983_StatePlane_California_V_FIPS_0405_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2182','PROJCS["NAD_1983_StatePlane_California_V_FIPS_0405_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-118.0],PARAMETER["Standard_Parallel_1",34.03333333333333],PARAMETER["Standard_Parallel_2",35.46666666666667],PARAMETER["Latitude_Of_Origin",33.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102646','NAD_1983_StatePlane_California_VI_FIPS_0406_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2180','PROJCS["NAD_1983_StatePlane_California_VI_FIPS_0406_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-116.25],PARAMETER["Standard_Parallel_1",32.78333333333333],PARAMETER["Standard_Parallel_2",33.88333333333333],PARAMETER["Latitude_Of_Origin",32.16666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102647','NAD_1983_NSRS2007_StatePlane_Puerto_Rico_Virgin_Isls_FIPS_5200',NULL,NULL,NULL,NULL,'EPSG','4759',NULL,NULL,'EPSG','3634','PROJCS["NAD_1983_NSRS2007_StatePlane_Puerto_Rico_Virgin_Isls_FIPS_5200",GEOGCS["GCS_NAD_1983_NSRS2007",DATUM["D_NAD_1983_NSRS2007",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",200000.0],PARAMETER["Central_Meridian",-66.43333333333334],PARAMETER["Standard_Parallel_1",18.03333333333333],PARAMETER["Standard_Parallel_2",18.43333333333333],PARAMETER["Latitude_Of_Origin",17.83333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102648','NAD_1983_StatePlane_Arizona_East_FIPS_0201_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2167','PROJCS["NAD_1983_StatePlane_Arizona_East_FIPS_0201_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",699998.6],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-110.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102649','NAD_1983_StatePlane_Arizona_Central_FIPS_0202_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2166','PROJCS["NAD_1983_StatePlane_Arizona_Central_FIPS_0202_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",699998.6],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-111.9166666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102650','NAD_1983_StatePlane_Arizona_West_FIPS_0203_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2168','PROJCS["NAD_1983_StatePlane_Arizona_West_FIPS_0203_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",699998.6],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-113.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102651','NAD_1983_StatePlane_Arkansas_North_FIPS_0301_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2169','PROJCS["NAD_1983_StatePlane_Arkansas_North_FIPS_0301_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.0],PARAMETER["Standard_Parallel_1",34.93333333333333],PARAMETER["Standard_Parallel_2",36.23333333333333],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102652','NAD_1983_StatePlane_Arkansas_South_FIPS_0302_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2170','PROJCS["NAD_1983_StatePlane_Arkansas_South_FIPS_0302_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",1312333.333333333],PARAMETER["Central_Meridian",-92.0],PARAMETER["Standard_Parallel_1",33.3],PARAMETER["Standard_Parallel_2",34.76666666666667],PARAMETER["Latitude_Of_Origin",32.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102653','NAD_1983_StatePlane_Colorado_North_FIPS_0501_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2184','PROJCS["NAD_1983_StatePlane_Colorado_North_FIPS_0501_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000.000316083],PARAMETER["False_Northing",999999.999996],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",39.71666666666667],PARAMETER["Standard_Parallel_2",40.78333333333333],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102654','NAD_1983_StatePlane_Colorado_Central_FIPS_0502_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2183','PROJCS["NAD_1983_StatePlane_Colorado_Central_FIPS_0502_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000.000316083],PARAMETER["False_Northing",999999.999996],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",38.45],PARAMETER["Standard_Parallel_2",39.75],PARAMETER["Latitude_Of_Origin",37.83333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102655','NAD_1983_StatePlane_Colorado_South_FIPS_0503_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2185','PROJCS["NAD_1983_StatePlane_Colorado_South_FIPS_0503_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000.000316083],PARAMETER["False_Northing",999999.999996],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",37.23333333333333],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102656','NAD_1983_StatePlane_Connecticut_FIPS_0600_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1377','PROJCS["NAD_1983_StatePlane_Connecticut_FIPS_0600_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",999999.999996],PARAMETER["False_Northing",499999.999998],PARAMETER["Central_Meridian",-72.75],PARAMETER["Standard_Parallel_1",41.2],PARAMETER["Standard_Parallel_2",41.86666666666667],PARAMETER["Latitude_Of_Origin",40.83333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102657','NAD_1983_StatePlane_Delaware_FIPS_0700_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1378','PROJCS["NAD_1983_StatePlane_Delaware_FIPS_0700_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-75.41666666666667],PARAMETER["Scale_Factor",0.999995],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102658','NAD_1983_StatePlane_Florida_East_FIPS_0901_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2186','PROJCS["NAD_1983_StatePlane_Florida_East_FIPS_0901_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102659','NAD_1983_StatePlane_Florida_West_FIPS_0902_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2188','PROJCS["NAD_1983_StatePlane_Florida_West_FIPS_0902_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.0],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102660','NAD_1983_StatePlane_Florida_North_FIPS_0903_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2187','PROJCS["NAD_1983_StatePlane_Florida_North_FIPS_0903_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.5],PARAMETER["Standard_Parallel_1",29.58333333333333],PARAMETER["Standard_Parallel_2",30.75],PARAMETER["Latitude_Of_Origin",29.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102661','NAD_1983_StatePlane_Hawaii_1_FIPS_5101_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1546','PROJCS["NAD_1983_StatePlane_Hawaii_1_FIPS_5101_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-155.5],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",18.83333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102662','NAD_1983_StatePlane_Hawaii_2_FIPS_5102_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1547','PROJCS["NAD_1983_StatePlane_Hawaii_2_FIPS_5102_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-156.6666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",20.33333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102663','NAD_1983_StatePlane_Hawaii_3_FIPS_5103_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1548','PROJCS["NAD_1983_StatePlane_Hawaii_3_FIPS_5103_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-158.0],PARAMETER["Scale_Factor",0.99999],PARAMETER["Latitude_Of_Origin",21.16666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102664','NAD_1983_StatePlane_Hawaii_4_FIPS_5104_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1549','PROJCS["NAD_1983_StatePlane_Hawaii_4_FIPS_5104_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-159.5],PARAMETER["Scale_Factor",0.99999],PARAMETER["Latitude_Of_Origin",21.83333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102665','NAD_1983_StatePlane_Hawaii_5_FIPS_5105_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1550','PROJCS["NAD_1983_StatePlane_Hawaii_5_FIPS_5105_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-160.1666666666667],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",21.66666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102666','NAD_1983_StatePlane_Georgia_East_FIPS_1001_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2189','PROJCS["NAD_1983_StatePlane_Georgia_East_FIPS_1001_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102667','NAD_1983_StatePlane_Georgia_West_FIPS_1002_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2190','PROJCS["NAD_1983_StatePlane_Georgia_West_FIPS_1002_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2296583.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102668','NAD_1983_StatePlane_Idaho_East_FIPS_1101_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2192','PROJCS["NAD_1983_StatePlane_Idaho_East_FIPS_1101_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-112.1666666666667],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102669','NAD_1983_StatePlane_Idaho_Central_FIPS_1102_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2191','PROJCS["NAD_1983_StatePlane_Idaho_Central_FIPS_1102_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-114.0],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102670','NAD_1983_StatePlane_Idaho_West_FIPS_1103_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2193','PROJCS["NAD_1983_StatePlane_Idaho_West_FIPS_1103_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-115.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102671','NAD_1983_StatePlane_Illinois_East_FIPS_1201_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2194','PROJCS["NAD_1983_StatePlane_Illinois_East_FIPS_1201_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",984250.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.33333333333333],PARAMETER["Scale_Factor",0.999975],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102672','NAD_1983_StatePlane_Illinois_West_FIPS_1202_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2195','PROJCS["NAD_1983_StatePlane_Illinois_West_FIPS_1202_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2296583.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.16666666666667],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102673','NAD_1983_StatePlane_Indiana_East_FIPS_1301_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2196','PROJCS["NAD_1983_StatePlane_Indiana_East_FIPS_1301_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",328083.3333333333],PARAMETER["False_Northing",820208.3333333333],PARAMETER["Central_Meridian",-85.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102674','NAD_1983_StatePlane_Indiana_West_FIPS_1302_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2197','PROJCS["NAD_1983_StatePlane_Indiana_West_FIPS_1302_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2952750.0],PARAMETER["False_Northing",820208.3333333333],PARAMETER["Central_Meridian",-87.08333333333333],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102675','NAD_1983_StatePlane_Iowa_North_FIPS_1401_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2198','PROJCS["NAD_1983_StatePlane_Iowa_North_FIPS_1401_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",4921250.0],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-93.5],PARAMETER["Standard_Parallel_1",42.06666666666667],PARAMETER["Standard_Parallel_2",43.26666666666667],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102676','NAD_1983_StatePlane_Iowa_South_FIPS_1402_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2199','PROJCS["NAD_1983_StatePlane_Iowa_South_FIPS_1402_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-93.5],PARAMETER["Standard_Parallel_1",40.61666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102677','NAD_1983_StatePlane_Kansas_North_FIPS_1501_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2200','PROJCS["NAD_1983_StatePlane_Kansas_North_FIPS_1501_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-98.0],PARAMETER["Standard_Parallel_1",38.71666666666667],PARAMETER["Standard_Parallel_2",39.78333333333333],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102678','NAD_1983_StatePlane_Kansas_South_FIPS_1502_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2201','PROJCS["NAD_1983_StatePlane_Kansas_South_FIPS_1502_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",1312333.333333333],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",37.26666666666667],PARAMETER["Standard_Parallel_2",38.56666666666667],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102679','NAD_1983_StatePlane_Kentucky_North_FIPS_1601_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2202','PROJCS["NAD_1983_StatePlane_Kentucky_North_FIPS_1601_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.25],PARAMETER["Standard_Parallel_1",37.96666666666667],PARAMETER["Standard_Parallel_2",38.96666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102680','NAD_1983_StatePlane_Kentucky_South_FIPS_1602_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2203','PROJCS["NAD_1983_StatePlane_Kentucky_South_FIPS_1602_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-85.75],PARAMETER["Standard_Parallel_1",36.73333333333333],PARAMETER["Standard_Parallel_2",37.93333333333333],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102681','NAD_1983_StatePlane_Louisiana_North_FIPS_1701_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2204','PROJCS["NAD_1983_StatePlane_Louisiana_North_FIPS_1701_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3280833.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.5],PARAMETER["Standard_Parallel_1",31.16666666666667],PARAMETER["Standard_Parallel_2",32.66666666666666],PARAMETER["Latitude_Of_Origin",30.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102682','NAD_1983_StatePlane_Louisiana_South_FIPS_1702_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2529','PROJCS["NAD_1983_StatePlane_Louisiana_South_FIPS_1702_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3280833.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.33333333333333],PARAMETER["Standard_Parallel_1",29.3],PARAMETER["Standard_Parallel_2",30.7],PARAMETER["Latitude_Of_Origin",28.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102683','NAD_1983_StatePlane_Maine_East_FIPS_1801_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2206','PROJCS["NAD_1983_StatePlane_Maine_East_FIPS_1801_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",984250.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-68.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102684','NAD_1983_StatePlane_Maine_West_FIPS_1802_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2207','PROJCS["NAD_1983_StatePlane_Maine_West_FIPS_1802_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2952750.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-70.16666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.83333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102685','NAD_1983_StatePlane_Maryland_FIPS_1900_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1389','PROJCS["NAD_1983_StatePlane_Maryland_FIPS_1900_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-77.0],PARAMETER["Standard_Parallel_1",38.3],PARAMETER["Standard_Parallel_2",39.45],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102686','NAD_1983_StatePlane_Massachusetts_Mainland_FIPS_2001_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2209','PROJCS["NAD_1983_StatePlane_Massachusetts_Mainland_FIPS_2001_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",2460625.0],PARAMETER["Central_Meridian",-71.5],PARAMETER["Standard_Parallel_1",41.71666666666667],PARAMETER["Standard_Parallel_2",42.68333333333333],PARAMETER["Latitude_Of_Origin",41.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102687','NAD_1983_StatePlane_Massachusetts_Island_FIPS_2002_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2208','PROJCS["NAD_1983_StatePlane_Massachusetts_Island_FIPS_2002_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-70.5],PARAMETER["Standard_Parallel_1",41.28333333333333],PARAMETER["Standard_Parallel_2",41.48333333333333],PARAMETER["Latitude_Of_Origin",41.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102688','NAD_1983_StatePlane_Michigan_North_FIPS_2111_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1723','PROJCS["NAD_1983_StatePlane_Michigan_North_FIPS_2111_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",26246666.66666666],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.0],PARAMETER["Standard_Parallel_1",45.48333333333333],PARAMETER["Standard_Parallel_2",47.08333333333334],PARAMETER["Latitude_Of_Origin",44.78333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102689','NAD_1983_StatePlane_Michigan_Central_FIPS_2112_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1724','PROJCS["NAD_1983_StatePlane_Michigan_Central_FIPS_2112_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",19685000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.36666666666666],PARAMETER["Standard_Parallel_1",44.18333333333333],PARAMETER["Standard_Parallel_2",45.7],PARAMETER["Latitude_Of_Origin",43.31666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102690','NAD_1983_StatePlane_Michigan_South_FIPS_2113_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1725','PROJCS["NAD_1983_StatePlane_Michigan_South_FIPS_2113_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",13123333.33333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.36666666666666],PARAMETER["Standard_Parallel_1",42.1],PARAMETER["Standard_Parallel_2",43.66666666666666],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102691','NAD_1983_StatePlane_Minnesota_North_FIPS_2201_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2214','PROJCS["NAD_1983_StatePlane_Minnesota_North_FIPS_2201_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-93.1],PARAMETER["Standard_Parallel_1",47.03333333333333],PARAMETER["Standard_Parallel_2",48.63333333333333],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102692','NAD_1983_StatePlane_Minnesota_Central_FIPS_2202_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2213','PROJCS["NAD_1983_StatePlane_Minnesota_Central_FIPS_2202_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-94.25],PARAMETER["Standard_Parallel_1",45.61666666666667],PARAMETER["Standard_Parallel_2",47.05],PARAMETER["Latitude_Of_Origin",45.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102693','NAD_1983_StatePlane_Minnesota_South_FIPS_2203_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2215','PROJCS["NAD_1983_StatePlane_Minnesota_South_FIPS_2203_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-94.0],PARAMETER["Standard_Parallel_1",43.78333333333333],PARAMETER["Standard_Parallel_2",45.21666666666667],PARAMETER["Latitude_Of_Origin",43.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102694','NAD_1983_StatePlane_Mississippi_East_FIPS_2301_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2216','PROJCS["NAD_1983_StatePlane_Mississippi_East_FIPS_2301_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",984250.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.83333333333333],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",29.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102695','NAD_1983_StatePlane_Mississippi_West_FIPS_2302_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2217','PROJCS["NAD_1983_StatePlane_Mississippi_West_FIPS_2302_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2296583.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.33333333333333],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",29.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102696','NAD_1983_StatePlane_Missouri_East_FIPS_2401_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2219','PROJCS["NAD_1983_StatePlane_Missouri_East_FIPS_2401_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",820208.3333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",35.83333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102697','NAD_1983_StatePlane_Missouri_Central_FIPS_2402_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2218','PROJCS["NAD_1983_StatePlane_Missouri_Central_FIPS_2402_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",35.83333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102698','NAD_1983_StatePlane_Missouri_West_FIPS_2403_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2220','PROJCS["NAD_1983_StatePlane_Missouri_West_FIPS_2403_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2788708.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-94.5],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",36.16666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102699','NAD_1927_StatePlane_California_V_Ventura',NULL,NULL,NULL,NULL,'EPSG','4267',NULL,NULL,'EPSG','2179','PROJCS["NAD_1927_StatePlane_California_V_Ventura",GEOGCS["GCS_North_American_1927",DATUM["D_North_American_1927",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",408000.0],PARAMETER["False_Northing",-266000.0],PARAMETER["Central_Meridian",-118.0],PARAMETER["Standard_Parallel_1",34.03333333333333],PARAMETER["Standard_Parallel_2",35.46666666666667],PARAMETER["Latitude_Of_Origin",33.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102700','NAD_1983_StatePlane_Montana_FIPS_2500_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1395','PROJCS["NAD_1983_StatePlane_Montana_FIPS_2500_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-109.5],PARAMETER["Standard_Parallel_1",45.0],PARAMETER["Standard_Parallel_2",49.0],PARAMETER["Latitude_Of_Origin",44.25],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102701','NAD_1983_PACP00_UTM_Zone_4N',NULL,NULL,NULL,NULL,'ESRI','104259',NULL,NULL,'EPSG','3488','PROJCS["NAD_1983_PACP00_UTM_Zone_4N",GEOGCS["GCS_NAD_1983_PACP00",DATUM["D_NAD_1983_PACP00",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-159.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102702','NAD_1983_PACP00_UTM_Zone_5N',NULL,NULL,NULL,NULL,'ESRI','104259',NULL,NULL,'EPSG','3491','PROJCS["NAD_1983_PACP00_UTM_Zone_5N",GEOGCS["GCS_NAD_1983_PACP00",DATUM["D_NAD_1983_PACP00",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-153.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102703','NAD_1983_PACP00_UTM_Zone_2S',NULL,NULL,NULL,NULL,'ESRI','104259',NULL,NULL,'EPSG','3110','PROJCS["NAD_1983_PACP00_UTM_Zone_2S",GEOGCS["GCS_NAD_1983_PACP00",DATUM["D_NAD_1983_PACP00",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",10000000.0],PARAMETER["Central_Meridian",-171.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102704','NAD_1983_StatePlane_Nebraska_FIPS_2600_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1396','PROJCS["NAD_1983_StatePlane_Nebraska_FIPS_2600_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.0],PARAMETER["Standard_Parallel_1",40.0],PARAMETER["Standard_Parallel_2",43.0],PARAMETER["Latitude_Of_Origin",39.83333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "area" VALUES('ESRI','49','US - Nebraska - Lancaster County','US - Nebraska - Lancaster County',40.5,41.07,-96.93,-96.43,0); +INSERT INTO "projected_crs" VALUES('ESRI','102705','NAD_1983_Nebraska_Lancaster_County_FtUS',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'ESRI','49','PROJCS["NAD_1983_Nebraska_Lancaster_County_FtUS",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",164041.6666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-96.68805555555556],PARAMETER["Scale_Factor",1.000054615],PARAMETER["Latitude_Of_Origin",40.25],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102706','Palestine_1923_Palestine_Grid_TM',NULL,NULL,NULL,NULL,'EPSG','4281',NULL,NULL,'EPSG','1356','PROJCS["Palestine_1923_Palestine_Grid_TM",GEOGCS["GCS_Palestine_1923",DATUM["D_Palestine_1923",SPHEROID["Clarke_1880_Benoit",6378300.789,293.4663155389802]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",170251.555],PARAMETER["False_Northing",126867.909],PARAMETER["Central_Meridian",35.21208055555556],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",31.73409694444445],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102707','NAD_1983_StatePlane_Nevada_East_FIPS_2701_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2224','PROJCS["NAD_1983_StatePlane_Nevada_East_FIPS_2701_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",26246666.66666666],PARAMETER["Central_Meridian",-115.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102708','NAD_1983_StatePlane_Nevada_Central_FIPS_2702_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2223','PROJCS["NAD_1983_StatePlane_Nevada_Central_FIPS_2702_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",19685000.0],PARAMETER["Central_Meridian",-116.6666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102709','NAD_1983_StatePlane_Nevada_West_FIPS_2703_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2225','PROJCS["NAD_1983_StatePlane_Nevada_West_FIPS_2703_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",13123333.33333333],PARAMETER["Central_Meridian",-118.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102710','NAD_1983_StatePlane_New_Hampshire_FIPS_2800_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1398','PROJCS["NAD_1983_StatePlane_New_Hampshire_FIPS_2800_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",984250.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-71.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102711','NAD_1983_StatePlane_New_Jersey_FIPS_2900_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1399','PROJCS["NAD_1983_StatePlane_New_Jersey_FIPS_2900_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",492125.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102712','NAD_1983_StatePlane_New_Mexico_East_FIPS_3001_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2228','PROJCS["NAD_1983_StatePlane_New_Mexico_East_FIPS_3001_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",541337.5],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-104.3333333333333],PARAMETER["Scale_Factor",0.9999090909090909],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102713','NAD_1983_StatePlane_New_Mexico_Central_FIPS_3002_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2231','PROJCS["NAD_1983_StatePlane_New_Mexico_Central_FIPS_3002_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-106.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102714','NAD_1983_StatePlane_New_Mexico_West_FIPS_3003_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2232','PROJCS["NAD_1983_StatePlane_New_Mexico_West_FIPS_3003_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2723091.666666666],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-107.8333333333333],PARAMETER["Scale_Factor",0.9999166666666667],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102715','NAD_1983_StatePlane_New_York_East_FIPS_3101_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2234','PROJCS["NAD_1983_StatePlane_New_York_East_FIPS_3101_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",492125.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102716','NAD_1983_StatePlane_New_York_Central_FIPS_3102_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2233','PROJCS["NAD_1983_StatePlane_New_York_Central_FIPS_3102_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",820208.3333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-76.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102717','NAD_1983_StatePlane_New_York_West_FIPS_3103_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2236','PROJCS["NAD_1983_StatePlane_New_York_West_FIPS_3103_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1148291.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-78.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102718','NAD_1983_StatePlane_New_York_Long_Island_FIPS_3104_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2235','PROJCS["NAD_1983_StatePlane_New_York_Long_Island_FIPS_3104_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",984250.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.0],PARAMETER["Standard_Parallel_1",40.66666666666666],PARAMETER["Standard_Parallel_2",41.03333333333333],PARAMETER["Latitude_Of_Origin",40.16666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102719','NAD_1983_StatePlane_North_Carolina_FIPS_3200_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1402','PROJCS["NAD_1983_StatePlane_North_Carolina_FIPS_3200_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.002616666],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-79.0],PARAMETER["Standard_Parallel_1",34.33333333333334],PARAMETER["Standard_Parallel_2",36.16666666666666],PARAMETER["Latitude_Of_Origin",33.75],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102720','NAD_1983_StatePlane_North_Dakota_North_FIPS_3301_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2237','PROJCS["NAD_1983_StatePlane_North_Dakota_North_FIPS_3301_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",47.43333333333333],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102721','NAD_1983_StatePlane_North_Dakota_South_FIPS_3302_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2238','PROJCS["NAD_1983_StatePlane_North_Dakota_South_FIPS_3302_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",46.18333333333333],PARAMETER["Standard_Parallel_2",47.48333333333333],PARAMETER["Latitude_Of_Origin",45.66666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102722','NAD_1983_StatePlane_Ohio_North_FIPS_3401_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2239','PROJCS["NAD_1983_StatePlane_Ohio_North_FIPS_3401_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",40.43333333333333],PARAMETER["Standard_Parallel_2",41.7],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102723','NAD_1983_StatePlane_Ohio_South_FIPS_3402_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2240','PROJCS["NAD_1983_StatePlane_Ohio_South_FIPS_3402_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",38.73333333333333],PARAMETER["Standard_Parallel_2",40.03333333333333],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102724','NAD_1983_StatePlane_Oklahoma_North_FIPS_3501_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2241','PROJCS["NAD_1983_StatePlane_Oklahoma_North_FIPS_3501_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-98.0],PARAMETER["Standard_Parallel_1",35.56666666666667],PARAMETER["Standard_Parallel_2",36.76666666666667],PARAMETER["Latitude_Of_Origin",35.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102725','NAD_1983_StatePlane_Oklahoma_South_FIPS_3502_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2242','PROJCS["NAD_1983_StatePlane_Oklahoma_South_FIPS_3502_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-98.0],PARAMETER["Standard_Parallel_1",33.93333333333333],PARAMETER["Standard_Parallel_2",35.23333333333333],PARAMETER["Latitude_Of_Origin",33.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102726','NAD_1983_StatePlane_Oregon_North_FIPS_3601_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2243','PROJCS["NAD_1983_StatePlane_Oregon_North_FIPS_3601_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",8202083.333333332],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",44.33333333333334],PARAMETER["Standard_Parallel_2",46.0],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102727','NAD_1983_StatePlane_Oregon_South_FIPS_3602_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2244','PROJCS["NAD_1983_StatePlane_Oregon_South_FIPS_3602_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",4921250.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",42.33333333333334],PARAMETER["Standard_Parallel_2",44.0],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102728','NAD_1983_StatePlane_Pennsylvania_North_FIPS_3701_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2245','PROJCS["NAD_1983_StatePlane_Pennsylvania_North_FIPS_3701_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-77.75],PARAMETER["Standard_Parallel_1",40.88333333333333],PARAMETER["Standard_Parallel_2",41.95],PARAMETER["Latitude_Of_Origin",40.16666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102729','NAD_1983_StatePlane_Pennsylvania_South_FIPS_3702_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2246','PROJCS["NAD_1983_StatePlane_Pennsylvania_South_FIPS_3702_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-77.75],PARAMETER["Standard_Parallel_1",39.93333333333333],PARAMETER["Standard_Parallel_2",40.96666666666667],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102730','NAD_1983_StatePlane_Rhode_Island_FIPS_3800_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1408','PROJCS["NAD_1983_StatePlane_Rhode_Island_FIPS_3800_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",328083.3333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-71.5],PARAMETER["Scale_Factor",0.99999375],PARAMETER["Latitude_Of_Origin",41.08333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102733','NAD_1983_StatePlane_South_Carolina_FIPS_3900_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1409','PROJCS["NAD_1983_StatePlane_South_Carolina_FIPS_3900_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1999996.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Standard_Parallel_1",32.5],PARAMETER["Standard_Parallel_2",34.83333333333334],PARAMETER["Latitude_Of_Origin",31.83333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102734','NAD_1983_StatePlane_South_Dakota_North_FIPS_4001_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2249','PROJCS["NAD_1983_StatePlane_South_Dakota_North_FIPS_4001_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.0],PARAMETER["Standard_Parallel_1",44.41666666666666],PARAMETER["Standard_Parallel_2",45.68333333333333],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102735','NAD_1983_StatePlane_South_Dakota_South_FIPS_4002_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2250','PROJCS["NAD_1983_StatePlane_South_Dakota_South_FIPS_4002_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",42.83333333333334],PARAMETER["Standard_Parallel_2",44.4],PARAMETER["Latitude_Of_Origin",42.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102736','NAD_1983_StatePlane_Tennessee_FIPS_4100_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1411','PROJCS["NAD_1983_StatePlane_Tennessee_FIPS_4100_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-86.0],PARAMETER["Standard_Parallel_1",35.25],PARAMETER["Standard_Parallel_2",36.41666666666666],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102737','NAD_1983_StatePlane_Texas_North_FIPS_4201_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2253','PROJCS["NAD_1983_StatePlane_Texas_North_FIPS_4201_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-101.5],PARAMETER["Standard_Parallel_1",34.65],PARAMETER["Standard_Parallel_2",36.18333333333333],PARAMETER["Latitude_Of_Origin",34.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102738','NAD_1983_StatePlane_Texas_North_Central_FIPS_4202_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2254','PROJCS["NAD_1983_StatePlane_Texas_North_Central_FIPS_4202_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",6561666.666666666],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",32.13333333333333],PARAMETER["Standard_Parallel_2",33.96666666666667],PARAMETER["Latitude_Of_Origin",31.66666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102739','NAD_1983_StatePlane_Texas_Central_FIPS_4203_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2252','PROJCS["NAD_1983_StatePlane_Texas_Central_FIPS_4203_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2296583.333333333],PARAMETER["False_Northing",9842500.0],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",30.11666666666667],PARAMETER["Standard_Parallel_2",31.88333333333333],PARAMETER["Latitude_Of_Origin",29.66666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102740','NAD_1983_StatePlane_Texas_South_Central_FIPS_4204_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2527','PROJCS["NAD_1983_StatePlane_Texas_South_Central_FIPS_4204_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",13123333.33333333],PARAMETER["Central_Meridian",-99.0],PARAMETER["Standard_Parallel_1",28.38333333333333],PARAMETER["Standard_Parallel_2",30.28333333333333],PARAMETER["Latitude_Of_Origin",27.83333333333333],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102741','NAD_1983_StatePlane_Texas_South_FIPS_4205_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2528','PROJCS["NAD_1983_StatePlane_Texas_South_FIPS_4205_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",984250.0],PARAMETER["False_Northing",16404166.66666666],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",26.16666666666667],PARAMETER["Standard_Parallel_2",27.83333333333333],PARAMETER["Latitude_Of_Origin",25.66666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102742','NAD_1983_StatePlane_Utah_North_FIPS_4301_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2258','PROJCS["NAD_1983_StatePlane_Utah_North_FIPS_4301_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",40.71666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102743','NAD_1983_StatePlane_Utah_Central_FIPS_4302_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2257','PROJCS["NAD_1983_StatePlane_Utah_Central_FIPS_4302_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",6561666.666666666],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",39.01666666666667],PARAMETER["Standard_Parallel_2",40.65],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102744','NAD_1983_StatePlane_Utah_South_FIPS_4303_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2259','PROJCS["NAD_1983_StatePlane_Utah_South_FIPS_4303_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",9842500.0],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",37.21666666666667],PARAMETER["Standard_Parallel_2",38.35],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102745','NAD_1983_StatePlane_Vermont_FIPS_4400_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1414','PROJCS["NAD_1983_StatePlane_Vermont_FIPS_4400_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-72.5],PARAMETER["Scale_Factor",0.9999642857142857],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102746','NAD_1983_StatePlane_Virginia_North_FIPS_4501_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2260','PROJCS["NAD_1983_StatePlane_Virginia_North_FIPS_4501_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",11482916.66666666],PARAMETER["False_Northing",6561666.666666666],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",38.03333333333333],PARAMETER["Standard_Parallel_2",39.2],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102747','NAD_1983_StatePlane_Virginia_South_FIPS_4502_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2261','PROJCS["NAD_1983_StatePlane_Virginia_South_FIPS_4502_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",11482916.66666666],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",36.76666666666667],PARAMETER["Standard_Parallel_2",37.96666666666667],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102748','NAD_1983_StatePlane_Washington_North_FIPS_4601_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2273','PROJCS["NAD_1983_StatePlane_Washington_North_FIPS_4601_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.8333333333333],PARAMETER["Standard_Parallel_1",47.5],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102749','NAD_1983_StatePlane_Washington_South_FIPS_4602_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2274','PROJCS["NAD_1983_StatePlane_Washington_South_FIPS_4602_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",45.83333333333334],PARAMETER["Standard_Parallel_2",47.33333333333334],PARAMETER["Latitude_Of_Origin",45.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102750','NAD_1983_StatePlane_West_Virginia_North_FIPS_4701_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2264','PROJCS["NAD_1983_StatePlane_West_Virginia_North_FIPS_4701_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-79.5],PARAMETER["Standard_Parallel_1",39.0],PARAMETER["Standard_Parallel_2",40.25],PARAMETER["Latitude_Of_Origin",38.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102751','NAD_1983_StatePlane_West_Virginia_South_FIPS_4702_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2265','PROJCS["NAD_1983_StatePlane_West_Virginia_South_FIPS_4702_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Standard_Parallel_1",37.48333333333333],PARAMETER["Standard_Parallel_2",38.88333333333333],PARAMETER["Latitude_Of_Origin",37.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102752','NAD_1983_StatePlane_Wisconsin_North_FIPS_4801_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2267','PROJCS["NAD_1983_StatePlane_Wisconsin_North_FIPS_4801_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",45.56666666666667],PARAMETER["Standard_Parallel_2",46.76666666666667],PARAMETER["Latitude_Of_Origin",45.16666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102753','NAD_1983_StatePlane_Wisconsin_Central_FIPS_4802_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2266','PROJCS["NAD_1983_StatePlane_Wisconsin_Central_FIPS_4802_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",44.25],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102754','NAD_1983_StatePlane_Wisconsin_South_FIPS_4803_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2268','PROJCS["NAD_1983_StatePlane_Wisconsin_South_FIPS_4803_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",42.73333333333333],PARAMETER["Standard_Parallel_2",44.06666666666667],PARAMETER["Latitude_Of_Origin",42.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102755','NAD_1983_StatePlane_Wyoming_East_FIPS_4901_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2269','PROJCS["NAD_1983_StatePlane_Wyoming_East_FIPS_4901_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-105.1666666666667],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102756','NAD_1983_StatePlane_Wyoming_East_Central_FIPS_4902_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2270','PROJCS["NAD_1983_StatePlane_Wyoming_East_Central_FIPS_4902_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-107.3333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102757','NAD_1983_StatePlane_Wyoming_West_Central_FIPS_4903_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2272','PROJCS["NAD_1983_StatePlane_Wyoming_West_Central_FIPS_4903_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-108.75],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102758','NAD_1983_StatePlane_Wyoming_West_FIPS_4904_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2271','PROJCS["NAD_1983_StatePlane_Wyoming_West_FIPS_4904_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-110.0833333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102761','NAD_1983_StatePlane_Puerto_Rico_Virgin_Islands_FIPS_5200_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','2251','PROJCS["NAD_1983_StatePlane_Puerto_Rico_Virgin_Islands_FIPS_5200_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",656166.6666666665],PARAMETER["Central_Meridian",-66.43333333333334],PARAMETER["Standard_Parallel_1",18.03333333333333],PARAMETER["Standard_Parallel_2",18.43333333333333],PARAMETER["Latitude_Of_Origin",17.83333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102762','Katanga_1955_Katanga_Lambert',NULL,NULL,NULL,NULL,'EPSG','4695',NULL,NULL,'EPSG','3147','PROJCS["Katanga_1955_Katanga_Lambert",GEOGCS["GCS_Katanga_1955",DATUM["D_Katanga_1955",SPHEROID["Clarke_1866",6378206.4,294.9786982]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",26.0],PARAMETER["Standard_Parallel_1",-6.5],PARAMETER["Standard_Parallel_2",-11.5],PARAMETER["Latitude_Of_Origin",-9.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102763','NAD_1983_StatePlane_Kentucky_FIPS_1600_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1386','PROJCS["NAD_1983_StatePlane_Kentucky_FIPS_1600_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",4921250.0],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-85.75],PARAMETER["Standard_Parallel_1",37.08333333333334],PARAMETER["Standard_Parallel_2",38.66666666666666],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102764','Pulkovo_1942_Adj_1983_3_Degree_GK_Zone_7',NULL,NULL,NULL,NULL,'EPSG','4178',NULL,NULL,'EPSG','3584','PROJCS["Pulkovo_1942_Adj_1983_3_Degree_GK_Zone_7",GEOGCS["GCS_Pulkovo_1942_Adj_1983",DATUM["D_Pulkovo_1942_Adj_1983",SPHEROID["Krasovsky_1940",6378245.0,298.3]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",7500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",21.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102765','Pulkovo_1942_Adj_1983_3_Degree_GK_Zone_8',NULL,NULL,NULL,NULL,'EPSG','4178',NULL,NULL,'EPSG','3586','PROJCS["Pulkovo_1942_Adj_1983_3_Degree_GK_Zone_8",GEOGCS["GCS_Pulkovo_1942_Adj_1983",DATUM["D_Pulkovo_1942_Adj_1983",SPHEROID["Krasovsky_1940",6378245.0,298.3]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",8500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",24.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102766','NAD_1983_StatePlane_Guam_FIPS_5400_Feet',NULL,NULL,NULL,NULL,'EPSG','4269',NULL,NULL,'EPSG','1110','PROJCS["NAD_1983_StatePlane_Guam_FIPS_5400_Feet",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Polyconic"],PARAMETER["False_Easting",164041.6666666666],PARAMETER["False_Northing",164041.6666666666],PARAMETER["Central_Meridian",144.7487507055556],PARAMETER["Latitude_Of_Origin",13.47246635277778],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "area" VALUES('ESRI','50','Colombia - Leticia - Amazonas','Colombia - Leticia - Amazonas',-4.7,-3.683333333333334,-70.45,-69.43333333333334,0); +INSERT INTO "projected_crs" VALUES('ESRI','102767','MAGNA_Leticia_Amazonas_1994',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','50','PROJCS["MAGNA_Leticia_Amazonas_1994",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",25978.217],PARAMETER["False_Northing",27501.365],PARAMETER["Longitude_Of_Center",-69.94281105833333],PARAMETER["Latitude_Of_Center",-4.197684047222222],PARAMETER["Height",89.7],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','51','Colombia - Medellin - Antioquia','Colombia - Medellin - Antioquia',5.716666666666667,6.733333333333333,-76.06666666666666,-75.05,0); +INSERT INTO "projected_crs" VALUES('ESRI','102768','MAGNA_Medellin_Antioquia_2010',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','51','PROJCS["MAGNA_Medellin_Antioquia_2010",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",835378.647],PARAMETER["False_Northing",1180816.875],PARAMETER["Longitude_Of_Center",-75.56488694444444],PARAMETER["Latitude_Of_Center",6.229208888888889],PARAMETER["Height",1510.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','52','Colombia - Arauca - Arauca','Colombia - Arauca - Arauca',6.583333333333333,7.6,-71.26666666666667,-70.25,0); +INSERT INTO "projected_crs" VALUES('ESRI','102769','MAGNA_Arauca_2007',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','52','PROJCS["MAGNA_Arauca_2007",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1035263.443],PARAMETER["False_Northing",1275526.621],PARAMETER["Longitude_Of_Center",-70.75830965555555],PARAMETER["Latitude_Of_Center",7.087606391666666],PARAMETER["Height",100.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','53','Colombia - Barranquilla - Atlantico','Colombia - Barranquilla - Atlantico',10.41666666666667,11.43333333333333,-75.35,-74.33333333333333,0); +INSERT INTO "projected_crs" VALUES('ESRI','102770','MAGNA_Barranquilla_Atlantico_1997',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','53','PROJCS["MAGNA_Barranquilla_Atlantico_1997",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",917264.406],PARAMETER["False_Northing",1699839.935],PARAMETER["Longitude_Of_Center",-74.83433133333332],PARAMETER["Latitude_Of_Center",10.92318308333333],PARAMETER["Height",100.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','54','Colombia - Bogota D.C. - Bogota D.C.','Colombia - Bogota D.C. - Bogota D.C.',4.166666666666667,5.183333333333334,-74.65,-73.63333333333334,0); +INSERT INTO "projected_crs" VALUES('ESRI','102771','MAGNA_Bogota_DC_2005',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','54','PROJCS["MAGNA_Bogota_DC_2005",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",92334.879],PARAMETER["False_Northing",109320.965],PARAMETER["Longitude_Of_Center",-74.14659166666668],PARAMETER["Latitude_Of_Center",4.680486111111112],PARAMETER["Height",2550.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','55','Colombia - Cartagena_Bolivar','Colombia - Cartagena_Bolivar',9.883333333333333,10.9,-76.01666666666667,-75.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102772','MAGNA_Cartagena_Bolivar_2005',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','55','PROJCS["MAGNA_Cartagena_Bolivar_2005",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",842981.41],PARAMETER["False_Northing",1641887.09],PARAMETER["Longitude_Of_Center",-75.51120694444444],PARAMETER["Latitude_Of_Center",10.3970475],PARAMETER["Height",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','56','Colombia - Tunja - Boyaca','Colombia - Tunja - Boyaca',5.033333333333333,6.05,-73.86666666666666,-72.85,0); +INSERT INTO "projected_crs" VALUES('ESRI','102773','MAGNA_Tunja_Boyaca_1997',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','56','PROJCS["MAGNA_Tunja_Boyaca_1997",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1080514.91],PARAMETER["False_Northing",1103772.028],PARAMETER["Longitude_Of_Center",-73.3519389],PARAMETER["Latitude_Of_Center",5.534194738888889],PARAMETER["Height",2800.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','57','Colombia - Manizales - Caldas','Colombia - Manizales - Caldas',4.566666666666666,5.583333333333333,-76.01666666666667,-75.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102774','MAGNA_Manizales_Caldas_2011',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','57','PROJCS["MAGNA_Manizales_Caldas_2011",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1173727.04],PARAMETER["False_Northing",1052391.13],PARAMETER["Longitude_Of_Center",-75.51109472222223],PARAMETER["Latitude_Of_Center",5.068153888888888],PARAMETER["Height",2100.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','58','Colombia - Florencia - Caqueta','Colombia - Florencia - Caqueta',1.116666666666667,2.133333333333333,-76.13333333333334,-75.11666666666666,0); +INSERT INTO "projected_crs" VALUES('ESRI','102775','MAGNA_Florencia_Caqueta_2007',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','58','PROJCS["MAGNA_Florencia_Caqueta_2007",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1162300.348],PARAMETER["False_Northing",671068.716],PARAMETER["Longitude_Of_Center",-75.61911760277778],PARAMETER["Latitude_Of_Center",1.621012294444445],PARAMETER["Height",300.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','59','Colombia - Yopal - Casanare','Colombia - Yopal - Casanare',4.85,5.866666666666667,-72.93333333333334,-71.91666666666667,0); +INSERT INTO "projected_crs" VALUES('ESRI','102776','MAGNA_Yopal_Casanare_2006',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','59','PROJCS["MAGNA_Yopal_Casanare_2006",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",851184.177],PARAMETER["False_Northing",1083954.137],PARAMETER["Longitude_Of_Center",-72.42004027777779],PARAMETER["Latitude_Of_Center",5.353927222222222],PARAMETER["Height",300.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','60','Colombia - Popayan - Cauca','Colombia - Popayan - Cauca',2.95,2.966666666666667,-77.11666666666666,-76.1,0); +INSERT INTO "projected_crs" VALUES('ESRI','102777','MAGNA_Popayan_Cauca_2006',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','60','PROJCS["MAGNA_Popayan_Cauca_2006",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1052430.525],PARAMETER["False_Northing",763366.548],PARAMETER["Longitude_Of_Center",-76.6060916361111],PARAMETER["Latitude_Of_Center",2.456159883333334],PARAMETER["Height",1740.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','61','Colombia - Valledupar - Cesar','Colombia - Valledupar - Cesar',9.933333333333334,10.95,-73.58333333333333,-73.56666666666666,0); +INSERT INTO "projected_crs" VALUES('ESRI','102778','MAGNA_Valledupar_Cesar_2011',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','61','PROJCS["MAGNA_Valledupar_Cesar_2011",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1090979.66],PARAMETER["False_Northing",1647208.93],PARAMETER["Longitude_Of_Center",-73.2465713888889],PARAMETER["Latitude_Of_Center",10.44726111111111],PARAMETER["Height",200.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','62','Colombia - Quibdo - Choco','Colombia - Quibdo - Choco',5.183333333333334,6.2,-77.16666666666667,-76.15,0); +INSERT INTO "projected_crs" VALUES('ESRI','102779','MAGNA_Quibdo_Choco_2011',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','62','PROJCS["MAGNA_Quibdo_Choco_2011",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1047273.617],PARAMETER["False_Northing",1121443.09],PARAMETER["Longitude_Of_Center",-76.65075385833335],PARAMETER["Latitude_Of_Center",5.694247661111111],PARAMETER["Height",44.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','63','Colombia - Monteria - Cordoba','Colombia - Monteria - Cordoba',8.266666666666667,9.283333333333333,-76.38333333333334,-75.36666666666666,0); +INSERT INTO "projected_crs" VALUES('ESRI','102780','MAGNA_Monteria_Cordoba_2006',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','63','PROJCS["MAGNA_Monteria_Cordoba_2006",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1131814.934],PARAMETER["False_Northing",1462131.119],PARAMETER["Longitude_Of_Center",-75.87955333055555],PARAMETER["Latitude_Of_Center",8.773085755555556],PARAMETER["Height",15.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','64','Colombia - Inirida - Guainia','Colombia - Inirida - Guainia',3.333333333333333,4.35,-68.41666666666667,-67.4,0); +INSERT INTO "projected_crs" VALUES('ESRI','102781','MAGNA_Inirida_Guainia_2008',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','64','PROJCS["MAGNA_Inirida_Guainia_2008",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1019177.687],PARAMETER["False_Northing",491791.326],PARAMETER["Longitude_Of_Center",-67.90523208888889],PARAMETER["Latitude_Of_Center",3.845438183333334],PARAMETER["Height",96.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','65','Colombia - San Jose del Guaviare - Guaviare','Colombia - San Jose del Guaviare - Guaviare',2.05,3.066666666666667,-73.15,-72.13333333333334,0); +INSERT INTO "projected_crs" VALUES('ESRI','102782','MAGNA_San_Jose_del_Guaviare_2011',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','65','PROJCS["MAGNA_San_Jose_del_Guaviare_2011",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1159876.62],PARAMETER["False_Northing",775380.342],PARAMETER["Longitude_Of_Center",-72.640033325],PARAMETER["Latitude_Of_Center",2.564078941666666],PARAMETER["Height",185.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','66','Colombia - Neiva - Huila','Colombia - Neiva - Huila',2.433333333333334,3.45,-75.8,-74.78333333333333,0); +INSERT INTO "projected_crs" VALUES('ESRI','102783','MAGNA_Neiva_Huila_2006',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','66','PROJCS["MAGNA_Neiva_Huila_2006",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",864476.923],PARAMETER["False_Northing",817199.827],PARAMETER["Longitude_Of_Center",-75.29643672222223],PARAMETER["Latitude_Of_Center",2.942415055555556],PARAMETER["Height",430.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','67','Colombia - Riohacha - La Guajira','Colombia - Riohacha - La Guajira',11.03333333333333,12.05,-73.41666666666667,-72.4,0); +INSERT INTO "projected_crs" VALUES('ESRI','102784','MAGNA_Riohacha_La_Guajira_2006',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','67','PROJCS["MAGNA_Riohacha_La_Guajira_2006",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1128154.73],PARAMETER["False_Northing",1767887.914],PARAMETER["Longitude_Of_Center",-72.90276886944444],PARAMETER["Latitude_Of_Center",11.53691332777778],PARAMETER["Height",6.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','68','Colombia - Santa Marta - Magdalena','Colombia - Santa Marta - Magdalena',10.71666666666667,11.73333333333333,-74.73333333333333,-73.71666666666667,0); +INSERT INTO "projected_crs" VALUES('ESRI','102785','MAGNA_Santa_Marta_Magdalena_2007',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','68','PROJCS["MAGNA_Santa_Marta_Magdalena_2007",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",983892.409],PARAMETER["False_Northing",1732533.518],PARAMETER["Longitude_Of_Center",-74.22500527777778],PARAMETER["Latitude_Of_Center",11.21964305555556],PARAMETER["Height",29.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','69','Colombia - Villavicencio - Meta','Colombia - Villavicencio - Meta',3.65,4.666666666666667,-74.13333333333334,-73.11666666666666,0); +INSERT INTO "projected_crs" VALUES('ESRI','102786','MAGNA_Villavicencio_Meta_2011',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','69','PROJCS["MAGNA_Villavicencio_Meta_2011",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1050678.757],PARAMETER["False_Northing",950952.124],PARAMETER["Longitude_Of_Center",-73.62448598611111],PARAMETER["Latitude_Of_Center",4.1553751],PARAMETER["Height",427.19],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','70','Colombia - Pasto - Narino','Colombia - Pasto - Narino',0.7,1.716666666666667,-77.76666666666667,-76.75,0); +INSERT INTO "projected_crs" VALUES('ESRI','102787','MAGNA_Pasto_Narino_2008',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','70','PROJCS["MAGNA_Pasto_Narino_2008",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",980469.695],PARAMETER["False_Northing",624555.332],PARAMETER["Longitude_Of_Center",-77.25312563333334],PARAMETER["Latitude_Of_Center",1.200989513888889],PARAMETER["Height",2530.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','71','Colombia - Cucuta - Norte de Santander','Colombia - Cucuta - Norte de Santander',7.383333333333334,8.4,-73.01666666666667,-72.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102788','MAGNA_Cucuta_Norte_de_Santander_2011',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','71','PROJCS["MAGNA_Cucuta_Norte_de_Santander_2011",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",842805.406],PARAMETER["False_Northing",1364404.57],PARAMETER["Longitude_Of_Center",-72.50287095],PARAMETER["Latitude_Of_Center",7.888936736111111],PARAMETER["Height",308.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','72','Colombia - Mocoa - Putumayo','Colombia - Mocoa - Putumayo',0.6333333333333333,1.65,-77.16666666666667,-76.15,0); +INSERT INTO "projected_crs" VALUES('ESRI','102789','MAGNA_Mocoa_Putumayo_2011',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','72','PROJCS["MAGNA_Mocoa_Putumayo_2011",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1047467.388],PARAMETER["False_Northing",617828.474],PARAMETER["Longitude_Of_Center",-76.65102121944444],PARAMETER["Latitude_Of_Center",1.140023358333333],PARAMETER["Height",655.2],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','73','Colombia - Armenia - Quindio','Colombia - Armenia - Quindio',4.016666666666667,5.033333333333333,-76.18333333333334,-75.16666666666667,0); +INSERT INTO "projected_crs" VALUES('ESRI','102790','MAGNA_Armenia_Quindio_2006',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','73','PROJCS["MAGNA_Armenia_Quindio_2006",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1155824.666],PARAMETER["False_Northing",993087.465],PARAMETER["Longitude_Of_Center",-75.67348916666667],PARAMETER["Latitude_Of_Center",4.532325],PARAMETER["Height",1470.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','74','Colombia - Pereira - Risaralda','Colombia - Pereira - Risaralda',4.3,5.316666666666666,-76.2,-75.18333333333334,0); +INSERT INTO "projected_crs" VALUES('ESRI','102791','MAGNA_Pereira_Risaralda_2007',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','74','PROJCS["MAGNA_Pereira_Risaralda_2007",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1153492.012],PARAMETER["False_Northing",1024195.255],PARAMETER["Longitude_Of_Center",-75.69395138888889],PARAMETER["Latitude_Of_Center",4.813593611111111],PARAMETER["Height",1500.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','75','Colombia - San_Andres - San_Andres','Colombia - San_Andres - San_Andres',12.01666666666667,13.03333333333333,-82.23333333333333,-81.21666666666667,0); +INSERT INTO "projected_crs" VALUES('ESRI','102792','MAGNA_San_Andres_2007',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','75','PROJCS["MAGNA_San_Andres_2007",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",820439.298],PARAMETER["False_Northing",1877357.828],PARAMETER["Longitude_Of_Center",-81.72937595],PARAMETER["Latitude_Of_Center",12.523794325],PARAMETER["Height",6.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','76','Colombia - Bucaramanga - Santander','Colombia - Bucaramanga - Santander',6.566666666666666,7.583333333333333,-73.7,-72.68333333333334,0); +INSERT INTO "projected_crs" VALUES('ESRI','102793','MAGNA_Bucaramanga_Santander_2008',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','76','PROJCS["MAGNA_Bucaramanga_Santander_2008",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1097241.305],PARAMETER["False_Northing",1274642.278],PARAMETER["Longitude_Of_Center",-73.19734322222223],PARAMETER["Latitude_Of_Center",7.078887141666667],PARAMETER["Height",931.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','77','Colombia - Sucre - Sucre','Colombia - Sucre - Sucre',8.3,9.316666666666666,-75.23333333333333,-74.21666666666667,0); +INSERT INTO "projected_crs" VALUES('ESRI','102794','MAGNA_Sucre_2006',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','77','PROJCS["MAGNA_Sucre_2006",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",929043.607],PARAMETER["False_Northing",1466125.658],PARAMETER["Longitude_Of_Center",-74.722466825],PARAMETER["Latitude_Of_Center",8.810550366666668],PARAMETER["Height",20.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','78','Colombia - Ibague - Tolima','Colombia - Ibague - Tolima',3.916666666666667,4.933333333333334,-75.68333333333334,-74.66666666666667,0); +INSERT INTO "projected_crs" VALUES('ESRI','102795','MAGNA_Ibague_Tolima_2007',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','78','PROJCS["MAGNA_Ibague_Tolima_2007",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",877634.33],PARAMETER["False_Northing",980541.348],PARAMETER["Longitude_Of_Center",-75.17992593333334],PARAMETER["Latitude_Of_Center",4.419412827777778],PARAMETER["Height",1100.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','79','Colombia - Cali - Valle del Cauca','Colombia - Cali - Valle del Cauca',2.933333333333334,3.95,-77.03333333333333,-76.01666666666667,0); +INSERT INTO "projected_crs" VALUES('ESRI','102796','MAGNA_Cali_Valle_del_Cauca_2009',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','79','PROJCS["MAGNA_Cali_Valle_del_Cauca_2009",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1061900.18],PARAMETER["False_Northing",872364.63],PARAMETER["Longitude_Of_Center",-76.5205625],PARAMETER["Latitude_Of_Center",3.441883333333334],PARAMETER["Height",1000.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','80','Colombia - Mitu - Vaupes','Colombia - Mitu - Vaupes',0.7333333333333333,1.75,-70.75,-69.73333333333333,0); +INSERT INTO "projected_crs" VALUES('ESRI','102797','MAGNA_Mitu_Vaupes_2011',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','80','PROJCS["MAGNA_Mitu_Vaupes_2011",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1093717.398],PARAMETER["False_Northing",629997.236],PARAMETER["Longitude_Of_Center",-70.23546165555555],PARAMETER["Latitude_Of_Center",1.249969366666667],PARAMETER["Height",170.0],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','81','Colombia - Puerto - Carreno - Vichada','Colombia - Puerto - Carreno - Vichada',5.666666666666667,6.683333333333334,-68.01666666666667,-67.0,0); +INSERT INTO "projected_crs" VALUES('ESRI','102798','MAGNA_Puerto_Carreno_Vichada_2011',NULL,NULL,NULL,NULL,'EPSG','4686',NULL,NULL,'ESRI','81','PROJCS["MAGNA_Puerto_Carreno_Vichada_2011",GEOGCS["GCS_MAGNA",DATUM["D_MAGNA",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["IGAC_Plano_Cartesiano"],PARAMETER["False_Easting",1063834.703],PARAMETER["False_Northing",1175257.481],PARAMETER["Longitude_Of_Center",-67.50075024722223],PARAMETER["Latitude_Of_Center",6.18072141388889],PARAMETER["Height",51.58],UNIT["Meter",1.0]]',1); +INSERT INTO "area" VALUES('ESRI','82','UK - Highways England - A1','UK - Highways England - A1',50.1068,50.4249,-5.5482,-5.3991,0); +INSERT INTO "projected_crs" VALUES('ESRI','102799','OSGB36_Highways_England_A1H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','82','PROJCS["OSGB36_Highways_England_A1H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",261910.5587],PARAMETER["False_Northing",70975.76209],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.99926],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','83','UK - Highways England - A2','UK - Highways England - A2',50.1106,50.4286,-5.4217,-5.2734,0); +INSERT INTO "projected_crs" VALUES('ESRI','102800','OSGB36_Highways_England_A2H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','83','PROJCS["OSGB36_Highways_England_A2H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",252927.2844],PARAMETER["False_Northing",70979.59363],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999314],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','84','UK - Highways England - A3','UK - Highways England - A3',50.1142,50.4321,-5.2952,-5.1477,0); +INSERT INTO "projected_crs" VALUES('ESRI','102801','OSGB36_Highways_England_A3H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','84','PROJCS["OSGB36_Highways_England_A3H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",243942.3084],PARAMETER["False_Northing",70983.21269],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999365],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102802','OSGB36_Highways_England_A3H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','84','PROJCS["OSGB36_Highways_England_A3H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",243948.4072],PARAMETER["False_Northing",70984.98734],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.99939],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','85','UK - Highways England - A4','UK - Highways England - A4',50.2075,50.5253,-5.1747,-5.0277,0); +INSERT INTO "projected_crs" VALUES('ESRI','102803','OSGB36_Highways_England_A4H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','85','PROJCS["OSGB36_Highways_England_A4H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",234956.1813],PARAMETER["False_Northing",70986.76115],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999415],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','86','UK - Highways England - A5','UK - Highways England - A5',50.2109,50.5289,-5.0479,-4.8877,0); +INSERT INTO "projected_crs" VALUES('ESRI','102804','OSGB36_Highways_England_A5H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','86','PROJCS["OSGB36_Highways_England_A5H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",225969.1556],PARAMETER["False_Northing",70990.30995],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999465],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102805','OSGB36_Highways_England_A5H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','86','PROJCS["OSGB36_Highways_England_A5H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",225974.8051],PARAMETER["False_Northing",70992.08478],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.99949],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','87','UK - Highways England - A6','UK - Highways England - A6',50.2144,50.5323,-4.907,-4.7477,0); +INSERT INTO "projected_crs" VALUES('ESRI','102806','OSGB36_Highways_England_A6H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','87','PROJCS["OSGB36_Highways_England_A6H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",215981.5338],PARAMETER["False_Northing",70993.93011],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999516],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102807','OSGB36_Highways_England_A6H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','87','PROJCS["OSGB36_Highways_England_A6H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",215986.9336],PARAMETER["False_Northing",70995.70502],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999541],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','88','UK - Highways England - A7','UK - Highways England - A7',50.3975,50.5356,-4.766,-4.6175,0); +INSERT INTO "projected_crs" VALUES('ESRI','102808','OSGB36_Highways_England_A7H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','88','PROJCS["OSGB36_Highways_England_A7H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",205992.2754],PARAMETER["False_Northing",70997.33764],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999564],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102809','OSGB36_Highways_England_A7H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','88','PROJCS["OSGB36_Highways_England_A7H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",205997.4254],PARAMETER["False_Northing",70999.11264],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999589],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','89','UK - Highways England - A8','UK - Highways England - A8',50.221,50.7996,-4.6397,-4.4536,0); +INSERT INTO "projected_crs" VALUES('ESRI','102810','OSGB36_Highways_England_A8H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','89','PROJCS["OSGB36_Highways_England_A8H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",196002.254],PARAMETER["False_Northing",71000.81651],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999613],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102811','OSGB36_Highways_England_A8H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','89','PROJCS["OSGB36_Highways_England_A8H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",196007.1543],PARAMETER["False_Northing",71002.5916],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999638],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','90','UK - Highways England - A9','UK - Highways England - A9',50.2244,50.8031,-4.4837,-4.2855,0); +INSERT INTO "projected_crs" VALUES('ESRI','102812','OSGB36_Highways_England_A9H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','90','PROJCS["OSGB36_Highways_England_A9H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",185011.1931],PARAMETER["False_Northing",71004.29572],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999662],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102813','OSGB36_Highways_England_A9H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','90','PROJCS["OSGB36_Highways_England_A9H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",185015.8185],PARAMETER["False_Northing",71006.07089],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999687],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','91','UK - Highways England - A10','UK - Highways England - A10',50.2278,50.8069,-4.3136,-4.0893,0); +INSERT INTO "projected_crs" VALUES('ESRI','102814','OSGB36_Highways_England_A10H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','91','PROJCS["OSGB36_Highways_England_A10H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",173019.2914],PARAMETER["False_Northing",71007.91729],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999713],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102815','OSGB36_Highways_England_A10H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','91','PROJCS["OSGB36_Highways_England_A10H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",173023.6171],PARAMETER["False_Northing",71009.69256],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999738],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','92','UK - Highways England - A11','UK - Highways England - A11',50.2315,50.8105,-4.115,-3.8791,0); +INSERT INTO "projected_crs" VALUES('ESRI','102816','OSGB36_Highways_England_A11H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','92','PROJCS["OSGB36_Highways_England_A11H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",159026.3186],PARAMETER["False_Northing",71011.75231],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999767],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102817','OSGB36_Highways_England_A11H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','92','PROJCS["OSGB36_Highways_England_A11H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",159030.2944],PARAMETER["False_Northing",71013.52767],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999792],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102818','OSGB36_Highways_England_A11H3',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','92','PROJCS["OSGB36_Highways_England_A11H3",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",159034.2704],PARAMETER["False_Northing",71015.30312],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999817],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','93','UK - Highways England - A12','UK - Highways England - A12',50.2351,50.814,-3.9022,-3.6549,0); +INSERT INTO "projected_crs" VALUES('ESRI','102819','OSGB36_Highways_England_A12H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','93','PROJCS["OSGB36_Highways_England_A12H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",144031.0383],PARAMETER["False_Northing",71015.30362],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999817],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102820','OSGB36_Highways_England_A12H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','93','PROJCS["OSGB36_Highways_England_A12H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",144034.6392],PARAMETER["False_Northing",71017.07907],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999842],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102821','OSGB36_Highways_England_A12H3',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','93','PROJCS["OSGB36_Highways_England_A12H3",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",144038.2403],PARAMETER["False_Northing",71018.8546],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999867],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','94','UK - Highways England - A13','UK - Highways England - A13',50.4183,50.8981,-3.6781,-3.4219,0); +INSERT INTO "projected_crs" VALUES('ESRI','102822','OSGB36_Highways_England_A13H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','94','PROJCS["OSGB36_Highways_England_A13H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",128033.7365],PARAMETER["False_Northing",71018.71321],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999865],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102823','OSGB36_Highways_England_A13H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','94','PROJCS["OSGB36_Highways_England_A13H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",128036.9375],PARAMETER["False_Northing",71020.48874],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.99989],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','95','UK - Highways England - A14','UK - Highways England - A14',50.585,51.1984,-4.4468,-3.1023,0); +INSERT INTO "projected_crs" VALUES('ESRI','102824','OSGB36_Highways_England_A14H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','95','PROJCS["OSGB36_Highways_England_A14H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",111034.6979],PARAMETER["False_Northing",71022.19417],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999914],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102825','OSGB36_Highways_England_A14H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','95','PROJCS["OSGB36_Highways_England_A14H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",111037.4739],PARAMETER["False_Northing",71023.96979],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999939],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','96','UK - Highways England - A15','UK - Highways England - A15',50.6049,52.0473,-3.1375,-2.6218,0); +INSERT INTO "projected_crs" VALUES('ESRI','102826','OSGB36_Highways_England_A15H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','96','PROJCS["OSGB36_Highways_England_A15H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",88032.17537],PARAMETER["False_Northing",71025.95967],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999967],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102827','OSGB36_Highways_England_A15H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','96','PROJCS["OSGB36_Highways_England_A15H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",88034.37626],PARAMETER["False_Northing",71027.73539],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999992],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','97','UK - Highways England - A16','UK - Highways England - A16',50.6084,52.048,-2.6417,-1.5041,0); +INSERT INTO "projected_crs" VALUES('ESRI','102828','OSGB36_Highways_England_A16H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','97','PROJCS["OSGB36_Highways_England_A16H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",54022.17583],PARAMETER["False_Northing",71029.15712],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",1.000012],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102829','OSGB36_Highways_England_A16H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','97','PROJCS["OSGB36_Highways_England_A16H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",54023.52644],PARAMETER["False_Northing",71030.93291],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",1.000037],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','98','UK - Highways England - A17','UK - Highways England - A17',50.777,52.048,-1.5177,-1.0083,0); +INSERT INTO "projected_crs" VALUES('ESRI','102830','OSGB36_Highways_England_A17H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','98','PROJCS["OSGB36_Highways_England_A17H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-24009.11135],PARAMETER["False_Northing",71026.9544],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999981],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102831','OSGB36_Highways_England_A17H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','98','PROJCS["OSGB36_Highways_England_A17H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-24009.7116],PARAMETER["False_Northing",71028.73014],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",1.000006],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','99','UK - Highways England - A18','UK - Highways England - A18',50.7727,52.0448,-1.0355,-0.571,0); +INSERT INTO "projected_crs" VALUES('ESRI','102832','OSGB36_Highways_England_A18H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','99','PROJCS["OSGB36_Highways_England_A18H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-58018.94296],PARAMETER["False_Northing",71023.18879],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999928],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102833','OSGB36_Highways_England_A18H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','99','PROJCS["OSGB36_Highways_England_A18H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-58020.39349],PARAMETER["False_Northing",71024.96444],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999953],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','100','UK - Highways England - A19','UK - Highways England - A19',50.7696,52.0404,-0.6101,-0.3232,0); +INSERT INTO "projected_crs" VALUES('ESRI','102834','OSGB36_Highways_England_A19H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','100','PROJCS["OSGB36_Highways_England_A19H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-88023.98625],PARAMETER["False_Northing",71019.35254],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999874],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102835','OSGB36_Highways_England_A19H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','100','PROJCS["OSGB36_Highways_England_A19H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-88026.18693],PARAMETER["False_Northing",71021.12809],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999899],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','101','UK - Highways England - A20','UK - Highways England - A20',50.7659,52.0371,-0.369,-0.0755,0); +INSERT INTO "projected_crs" VALUES('ESRI','102836','OSGB36_Highways_England_A20H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','101','PROJCS["OSGB36_Highways_England_A20H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-105023.5775],PARAMETER["False_Northing",71015.94289],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999826],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102837','OSGB36_Highways_England_A20H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','101','PROJCS["OSGB36_Highways_England_A20H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-105026.2032],PARAMETER["False_Northing",71017.71836],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999851],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','102','UK - Highways England - A21','UK - Highways England - A21',50.7618,52.0333,-0.128,0.1722,0); +INSERT INTO "projected_crs" VALUES('ESRI','102838','OSGB36_Highways_England_A21H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','102','PROJCS["OSGB36_Highways_England_A21H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-122020.6823],PARAMETER["False_Northing",71012.0364],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999771],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102839','OSGB36_Highways_England_A21H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','102','PROJCS["OSGB36_Highways_England_A21H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-122023.7329],PARAMETER["False_Northing",71013.81177],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999796],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','103','UK - Highways England - A22','UK - Highways England - A22',50.7572,52.029,0.1129,0.4198,0); +INSERT INTO "projected_crs" VALUES('ESRI','102840','OSGB36_Highways_England_A22H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','103','PROJCS["OSGB36_Highways_England_A22H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-139014.8049],PARAMETER["False_Northing",71007.56222],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999708],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102841','OSGB36_Highways_England_A22H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','103','PROJCS["OSGB36_Highways_England_A22H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-139018.2804],PARAMETER["False_Northing",71009.33748],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999733],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','104','UK - Highways England - A23','UK - Highways England - A23',50.7546,52.0242,0.3537,0.5509,0); +INSERT INTO "projected_crs" VALUES('ESRI','102842','OSGB36_Highways_England_A23H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','104','PROJCS["OSGB36_Highways_England_A23H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-156008.5024],PARAMETER["False_Northing",71003.86967],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999656],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102843','OSGB36_Highways_England_A23H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','104','PROJCS["OSGB36_Highways_England_A23H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-156012.4027],PARAMETER["False_Northing",71005.64484],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999681],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','105','UK - Highways England - A24','UK - Highways England - A24',50.7511,52.0214,0.4812,0.711,0); +INSERT INTO "projected_crs" VALUES('ESRI','102844','OSGB36_Highways_England_A24H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','105','PROJCS["OSGB36_Highways_England_A24H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-165001.8975],PARAMETER["False_Northing",71000.81651],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999613],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102845','OSGB36_Highways_England_A24H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','105','PROJCS["OSGB36_Highways_England_A24H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-165006.0227],PARAMETER["False_Northing",71002.5916],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999638],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','106','UK - Highways England - A25','UK - Highways England - A25',50.7478,52.0178,0.637,0.8566,0); +INSERT INTO "projected_crs" VALUES('ESRI','102846','OSGB36_Highways_England_A25H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','106','PROJCS["OSGB36_Highways_England_A25H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-175993.5763],PARAMETER["False_Northing",70997.40864],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999565],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102847','OSGB36_Highways_England_A25H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','106','PROJCS["OSGB36_Highways_England_A25H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-175997.9763],PARAMETER["False_Northing",70999.18364],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.99959],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','107','UK - Highways England - A26','UK - Highways England - A26',50.7444,52.0144,0.7786,1.0021,0); +INSERT INTO "projected_crs" VALUES('ESRI','102848','OSGB36_Highways_England_A26H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','107','PROJCS["OSGB36_Highways_England_A26H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-185984.2846],PARAMETER["False_Northing",70994.00109],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999517],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102849','OSGB36_Highways_England_A26H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','107','PROJCS["OSGB36_Highways_England_A26H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-185988.9343],PARAMETER["False_Northing",70995.77601],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999542],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','108','UK - Highways England - A27','UK - Highways England - A27',50.9293,52.0108,0.932,1.1476,0); +INSERT INTO "projected_crs" VALUES('ESRI','102850','OSGB36_Highways_England_A27H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','108','PROJCS["OSGB36_Highways_England_A27H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-195973.6419],PARAMETER["False_Northing",70990.45191],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999467],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102851','OSGB36_Highways_England_A27H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','108','PROJCS["OSGB36_Highways_England_A27H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-195978.5414],PARAMETER["False_Northing",70992.22674],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999492],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','109','UK - Highways England - A28','UK - Highways England - A28',50.9259,52.007,1.0741,1.2785,0); +INSERT INTO "projected_crs" VALUES('ESRI','102852','OSGB36_Highways_England_A28H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','109','PROJCS["OSGB36_Highways_England_A28H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-205961.7946],PARAMETER["False_Northing",70986.83212],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999416],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102853','OSGB36_Highways_England_A28H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','109','PROJCS["OSGB36_Highways_England_A28H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-205966.9438],PARAMETER["False_Northing",70988.60686],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999441],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','110','UK - Highways England - A29','UK - Highways England - A29',50.9223,52.0034,1.202,1.4094,0); +INSERT INTO "projected_crs" VALUES('ESRI','102854','OSGB36_Highways_England_A29H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','110','PROJCS["OSGB36_Highways_England_A29H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-214949.3801],PARAMETER["False_Northing",70983.28366],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999366],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','111','UK - Highways England - A30','UK - Highways England - A30',50.9186,51.9997,1.3299,1.5403,0); +INSERT INTO "projected_crs" VALUES('ESRI','102855','OSGB36_Highways_England_A30H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','111','PROJCS["OSGB36_Highways_England_A30H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-223935.6193],PARAMETER["False_Northing",70979.59363],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999314],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','112','UK - Highways England - B15','UK - Highways England - B15',52.0434,53.9351,-3.1882,-2.6416,0); +INSERT INTO "projected_crs" VALUES('ESRI','102856','OSGB36_Highways_England_B15H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','112','PROJCS["OSGB36_Highways_England_B15H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",88032.17537],PARAMETER["False_Northing",111040.5848],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999967],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102857','OSGB36_Highways_England_B15H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','112','PROJCS["OSGB36_Highways_England_B15H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",88034.37626],PARAMETER["False_Northing",111043.361],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999992],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102858','OSGB36_Highways_England_B15H3',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','112','PROJCS["OSGB36_Highways_England_B15H3",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",88036.57726],PARAMETER["False_Northing",111046.1372],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",1.000017],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','113','UK - Highways England - B16','UK - Highways England - B16',52.0472,53.9359,-2.6703,-1.482,0); +INSERT INTO "projected_crs" VALUES('ESRI','102859','OSGB36_Highways_England_B16H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','113','PROJCS["OSGB36_Highways_England_B16H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",54022.17583],PARAMETER["False_Northing",111045.5837],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",1.000012],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102860','OSGB36_Highways_England_B16H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','113','PROJCS["OSGB36_Highways_England_B16H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",54023.52644],PARAMETER["False_Northing",111048.3599],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",1.000037],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102861','OSGB36_Highways_England_B16H3',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','113','PROJCS["OSGB36_Highways_England_B16H3",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",54024.87711],PARAMETER["False_Northing",111051.1363],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",1.000062],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102862','OSGB36_Highways_England_B16H4',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','113','PROJCS["OSGB36_Highways_England_B16H4",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",54026.22785],PARAMETER["False_Northing",111053.9128],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",1.000087],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','114','UK - Highways England - B17','UK - Highways England - B17',52.0447,53.9359,-1.5042,-0.9641,0); +INSERT INTO "projected_crs" VALUES('ESRI','102863','OSGB36_Highways_England_B17H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','114','PROJCS["OSGB36_Highways_England_B17H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-24009.11135],PARAMETER["False_Northing",111042.14],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999981],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102864','OSGB36_Highways_England_B17H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','114','PROJCS["OSGB36_Highways_England_B17H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-24009.7116],PARAMETER["False_Northing",111044.9161],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",1.000006],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','115','UK - Highways England - B18','UK - Highways England - B18',52.0403,53.9325,-1.0084,-0.5073,0); +INSERT INTO "projected_crs" VALUES('ESRI','102865','OSGB36_Highways_England_B18H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','115','PROJCS["OSGB36_Highways_England_B18H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-58018.94296],PARAMETER["False_Northing",111036.2529],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999928],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102866','OSGB36_Highways_England_B18H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','115','PROJCS["OSGB36_Highways_England_B18H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-58020.39349],PARAMETER["False_Northing",111039.0289],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999953],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','116','UK - Highways England - B19','UK - Highways England - B19',52.037,53.9277,-0.5711,-0.2485,0); +INSERT INTO "projected_crs" VALUES('ESRI','102867','OSGB36_Highways_England_B19H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','116','PROJCS["OSGB36_Highways_England_B19H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-88023.98625],PARAMETER["False_Northing",111030.2554],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999874],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','117','UK - Highways England - B20','UK - Highways England - B20',52.0332,53.9242,-0.3233,0.0103,0); +INSERT INTO "projected_crs" VALUES('ESRI','102868','OSGB36_Highways_England_B20H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','117','PROJCS["OSGB36_Highways_England_B20H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-105023.5775],PARAMETER["False_Northing",111024.9248],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999826],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','118','UK - Highways England - B21','UK - Highways England - B21',52.0289,52.8061,-0.0756,0.2105,0); +INSERT INTO "projected_crs" VALUES('ESRI','102869','OSGB36_Highways_England_B21H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','118','PROJCS["OSGB36_Highways_England_B21H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-122020.6823],PARAMETER["False_Northing",111018.8175],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999771],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','119','UK - Highways England - B22','UK - Highways England - B22',52.0241,52.8017,0.1721,0.4625,0); +INSERT INTO "projected_crs" VALUES('ESRI','102870','OSGB36_Highways_England_B22H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','119','PROJCS["OSGB36_Highways_England_B22H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-139014.9439],PARAMETER["False_Northing",111011.9337],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999709],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','120','UK - Highways England - B23','UK - Highways England - B23',52.0213,52.7967,0.4197,0.5958,0); +INSERT INTO "projected_crs" VALUES('ESRI','102871','OSGB36_Highways_England_B23H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','120','PROJCS["OSGB36_Highways_England_B23H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-156008.5024],PARAMETER["False_Northing",111006.0498],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999656],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','121','UK - Highways England - B24','UK - Highways England - B24',52.0177,52.7939,0.5508,0.7588,0); +INSERT INTO "projected_crs" VALUES('ESRI','102872','OSGB36_Highways_England_B24H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','121','PROJCS["OSGB36_Highways_England_B24H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-165002.0625],PARAMETER["False_Northing",111001.3875],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999614],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','122','UK - Highways England - B25','UK - Highways England - B25',52.0143,52.7902,0.7109,0.9069,0); +INSERT INTO "projected_crs" VALUES('ESRI','102873','OSGB36_Highways_England_B25H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','122','PROJCS["OSGB36_Highways_England_B25H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-175993.5763],PARAMETER["False_Northing",110995.9487],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999565],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','123','UK - Highways England - B26','UK - Highways England - B26',52.0107,52.7866,0.8565,1.055,0); +INSERT INTO "projected_crs" VALUES('ESRI','102874','OSGB36_Highways_England_B26H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','123','PROJCS["OSGB36_Highways_England_B26H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-185984.2846],PARAMETER["False_Northing",110990.6214],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999517],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','124','UK - Highways England - B27','UK - Highways England - B27',52.0069,52.7829,1.002,1.2031,0); +INSERT INTO "projected_crs" VALUES('ESRI','102875','OSGB36_Highways_England_B27H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','124','PROJCS["OSGB36_Highways_England_B27H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-195973.6419],PARAMETER["False_Northing",110985.0727],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999467],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','125','UK - Highways England - B28','UK - Highways England - B28',52.0033,52.779,1.1475,1.3363,0); +INSERT INTO "projected_crs" VALUES('ESRI','102876','OSGB36_Highways_England_B28H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','125','PROJCS["OSGB36_Highways_England_B28H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-205961.7946],PARAMETER["False_Northing",110979.4136],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999416],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','126','UK - Highways England - B29','UK - Highways England - B29',51.9996,52.7753,1.2784,1.4695,0); +INSERT INTO "projected_crs" VALUES('ESRI','102877','OSGB36_Highways_England_B29H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','126','PROJCS["OSGB36_Highways_England_B29H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-214949.595],PARAMETER["False_Northing",110973.9769],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999367],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','127','UK - Highways England - B30','UK - Highways England - B30',51.9957,52.7715,1.4093,1.6026,0); +INSERT INTO "projected_crs" VALUES('ESRI','102878','OSGB36_Highways_England_B30H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','127','PROJCS["OSGB36_Highways_England_B30H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-223935.8432],PARAMETER["False_Northing",110968.208],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999315],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','128','UK - Highways England - B31','UK - Highways England - B31',52.3416,52.7675,1.5681,1.7357,0); +INSERT INTO "projected_crs" VALUES('ESRI','102879','OSGB36_Highways_England_B31H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','128','PROJCS["OSGB36_Highways_England_B31H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-232920.6915],PARAMETER["False_Northing",110962.2179],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999261],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','129','UK - Highways England - B32','UK - Highways England - B32',52.3374,52.7634,1.6999,1.8688,0); +INSERT INTO "projected_crs" VALUES('ESRI','102880','OSGB36_Highways_England_B32H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','129','PROJCS["OSGB36_Highways_England_B32H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-241904.3281],PARAMETER["False_Northing",110956.1174],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999206],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','130','UK - Highways England - C13','UK - Highways England - C13',54.3636,54.7717,-3.8344,-3.5547,0); +INSERT INTO "projected_crs" VALUES('ESRI','102881','OSGB36_Highways_England_C13H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','130','PROJCS["OSGB36_Highways_England_C13H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",128033.8646],PARAMETER["False_Northing",126033.3354],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999866],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','131','UK - Highways England - C14','UK - Highways England - C14',54.0079,54.7758,-3.5703,-3.1904,0); +INSERT INTO "projected_crs" VALUES('ESRI','102882','OSGB36_Highways_England_C14H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','131','PROJCS["OSGB36_Highways_England_C14H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",111034.6979],PARAMETER["False_Northing",126039.3868],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999914],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102883','OSGB36_Highways_England_C14H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','131','PROJCS["OSGB36_Highways_England_C14H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",111037.4739],PARAMETER["False_Northing",126042.5379],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999939],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102884','OSGB36_Highways_England_C14H3',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','131','PROJCS["OSGB36_Highways_England_C14H3",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",111040.25],PARAMETER["False_Northing",126045.6892],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999964],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102885','OSGB36_Highways_England_C14H4',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','131','PROJCS["OSGB36_Highways_England_C14H4",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",111043.0263],PARAMETER["False_Northing",126048.8406],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999989],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','132','UK - Highways England - C15','UK - Highways England - C15',53.931,55.1394,-3.2237,-2.6702,0); +INSERT INTO "projected_crs" VALUES('ESRI','102886','OSGB36_Highways_England_C15H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','132','PROJCS["OSGB36_Highways_England_C15H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",88032.17537],PARAMETER["False_Northing",126046.0693],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999967],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102887','OSGB36_Highways_England_C15H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','132','PROJCS["OSGB36_Highways_England_C15H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",88034.37626],PARAMETER["False_Northing",126049.2206],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999992],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102888','OSGB36_Highways_England_C15H3',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','132','PROJCS["OSGB36_Highways_England_C15H3",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",88036.57726],PARAMETER["False_Northing",126052.372],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",1.000017],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102889','OSGB36_Highways_England_C15H4',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','132','PROJCS["OSGB36_Highways_England_C15H4",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",88038.77836],PARAMETER["False_Northing",126055.5236],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",1.000042],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102890','OSGB36_Highways_England_C15H5',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','132','PROJCS["OSGB36_Highways_England_C15H5",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",88040.97958],PARAMETER["False_Northing",126058.6753],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",1.000067],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','133','UK - Highways England - C16','UK - Highways England - C16',53.935,55.8321,-2.7026,-1.4571,0); +INSERT INTO "projected_crs" VALUES('ESRI','102891','OSGB36_Highways_England_C16H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','133','PROJCS["OSGB36_Highways_England_C16H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",54022.17583],PARAMETER["False_Northing",126051.7436],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",1.000012],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102892','OSGB36_Highways_England_C16H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','133','PROJCS["OSGB36_Highways_England_C16H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",54023.52644],PARAMETER["False_Northing",126054.895],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",1.000037],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102893','OSGB36_Highways_England_C16H3',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','133','PROJCS["OSGB36_Highways_England_C16H3",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",54024.87711],PARAMETER["False_Northing",126058.0466],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",1.000062],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102894','OSGB36_Highways_England_C16H4',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','133','PROJCS["OSGB36_Highways_England_C16H4",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",54026.22785],PARAMETER["False_Northing",126061.1983],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",1.000087],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','134','UK - Highways England - C17','UK - Highways England - C17',53.9324,55.5176,-1.4821,-0.923,0); +INSERT INTO "projected_crs" VALUES('ESRI','102895','OSGB36_Highways_England_C17H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','134','PROJCS["OSGB36_Highways_England_C17H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-24009.11135],PARAMETER["False_Northing",126047.8346],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999981],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102896','OSGB36_Highways_England_C17H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','134','PROJCS["OSGB36_Highways_England_C17H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-24009.7116],PARAMETER["False_Northing",126050.9859],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",1.000006],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','135','UK - Highways England - C18','UK - Highways England - C18',53.9276,54.3908,-0.9642,-0.4907,0); +INSERT INTO "projected_crs" VALUES('ESRI','102897','OSGB36_Highways_England_C18H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','135','PROJCS["OSGB36_Highways_England_C18H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-58018.94296],PARAMETER["False_Northing",126041.1519],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999928],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102898','OSGB36_Highways_England_C18H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','135','PROJCS["OSGB36_Highways_England_C18H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-58020.39349],PARAMETER["False_Northing",126044.3031],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999953],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "area" VALUES('ESRI','136','UK - Highways England - C19','UK - Highways England - C19',53.9241,54.3859,-0.5074,-0.229,0); +INSERT INTO "projected_crs" VALUES('ESRI','102899','OSGB36_Highways_England_C19H1',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','136','PROJCS["OSGB36_Highways_England_C19H1",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-88023.98625],PARAMETER["False_Northing",126034.3439],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999874],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102900','OSGB36_Highways_England_C19H2',NULL,NULL,NULL,NULL,'EPSG','4277',NULL,NULL,'ESRI','136','PROJCS["OSGB36_Highways_England_C19H2",GEOGCS["GCS_OSGB_1936",DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",-88026.18693],PARAMETER["False_Northing",126037.4949],PARAMETER["Central_Meridian",-2.0],PARAMETER["Scale_Factor",0.999899],PARAMETER["Latitude_Of_Origin",49.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102962','NAD_1983_2011_California_Teale_Albers',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1375','PROJCS["NAD_1983_2011_California_Teale_Albers",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",-4000000.0],PARAMETER["Central_Meridian",-120.0],PARAMETER["Standard_Parallel_1",34.0],PARAMETER["Standard_Parallel_2",40.5],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102963','NAD_1983_2011_Mississippi_TM',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1393','PROJCS["NAD_1983_2011_Mississippi_TM",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",1300000.0],PARAMETER["Central_Meridian",-89.75],PARAMETER["Scale_Factor",0.9998335],PARAMETER["Latitude_Of_Origin",32.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102965','NAD_1983_2011_Contiguous_USA_Albers',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1323','PROJCS["NAD_1983_2011_Contiguous_USA_Albers",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-96.0],PARAMETER["Standard_Parallel_1",29.5],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",23.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102966','NAD_1983_2011_Alaska_Albers',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1330','PROJCS["NAD_1983_2011_Alaska_Albers",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-154.0],PARAMETER["Standard_Parallel_1",55.0],PARAMETER["Standard_Parallel_2",65.0],PARAMETER["Latitude_Of_Origin",50.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102967','NAD_1983_2011_Florida_GDL_Albers',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1379','PROJCS["NAD_1983_2011_Florida_GDL_Albers",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.0],PARAMETER["Standard_Parallel_1",24.0],PARAMETER["Standard_Parallel_2",31.5],PARAMETER["Latitude_Of_Origin",24.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102968','NAD_1983_2011_Michigan_GeoRef_Meters',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1391','PROJCS["NAD_1983_2011_Michigan_GeoRef_Meters",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",2546731.496],PARAMETER["False_Northing",-4354009.816],PARAMETER["Scale_Factor",0.9996],PARAMETER["Azimuth",337.25556],PARAMETER["Longitude_Of_Center",-86.0],PARAMETER["Latitude_Of_Center",45.30916666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102969','NAD_1983_2011_Oregon_Statewide_Lambert',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1406','PROJCS["NAD_1983_2011_Oregon_Statewide_Lambert",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",43.0],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",41.75],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102970','NAD_1983_2011_Oregon_Statewide_Lambert_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1406','PROJCS["NAD_1983_2011_Oregon_Statewide_Lambert_Ft_Intl",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312335.958005249],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",43.0],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",41.75],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102971','NAD_1983_2011_Texas_Centric_Mapping_System_Albers',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1412','PROJCS["NAD_1983_2011_Texas_Centric_Mapping_System_Albers",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",1500000.0],PARAMETER["False_Northing",6000000.0],PARAMETER["Central_Meridian",-100.0],PARAMETER["Standard_Parallel_1",27.5],PARAMETER["Standard_Parallel_2",35.0],PARAMETER["Latitude_Of_Origin",18.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102972','NAD_1983_2011_Texas_Centric_Mapping_System_Lambert',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1412','PROJCS["NAD_1983_2011_Texas_Centric_Mapping_System_Lambert",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1500000.0],PARAMETER["False_Northing",5000000.0],PARAMETER["Central_Meridian",-100.0],PARAMETER["Standard_Parallel_1",27.5],PARAMETER["Standard_Parallel_2",35.0],PARAMETER["Latitude_Of_Origin",18.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102973','NAD_1983_2011_Wisconsin_TM',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_2011_Wisconsin_TM",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",520000.0],PARAMETER["False_Northing",-4480000.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102974','NAD_1983_2011_Wisconsin_TM_US_Ft',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_2011_Wisconsin_TM_US_Ft",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1706033.333333333],PARAMETER["False_Northing",-14698133.33333333],PARAMETER["Central_Meridian",-90.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','102975','NAD_1983_2011_StatePlane_Alabama_East_FIPS_0101',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2154','PROJCS["NAD_1983_2011_StatePlane_Alabama_East_FIPS_0101",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-85.83333333333333],PARAMETER["Scale_Factor",0.99996],PARAMETER["Latitude_Of_Origin",30.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102976','NAD_1983_2011_StatePlane_Alabama_West_FIPS_0102',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2155','PROJCS["NAD_1983_2011_StatePlane_Alabama_West_FIPS_0102",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102977','NAD_1983_2011_StatePlane_Alaska_1_FIPS_5001',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2156','PROJCS["NAD_1983_2011_StatePlane_Alaska_1_FIPS_5001",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],PARAMETER["False_Easting",5000000.0],PARAMETER["False_Northing",-5000000.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Azimuth",-36.86989764583333],PARAMETER["Longitude_Of_Center",-133.6666666666667],PARAMETER["Latitude_Of_Center",57.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102978','NAD_1983_2011_StatePlane_Alaska_2_FIPS_5002',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2158','PROJCS["NAD_1983_2011_StatePlane_Alaska_2_FIPS_5002",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-142.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102979','NAD_1983_2011_StatePlane_Alaska_3_FIPS_5003',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2159','PROJCS["NAD_1983_2011_StatePlane_Alaska_3_FIPS_5003",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-146.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102980','NAD_1983_2011_StatePlane_Alaska_4_FIPS_5004',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2160','PROJCS["NAD_1983_2011_StatePlane_Alaska_4_FIPS_5004",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-150.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102981','NAD_1983_2011_StatePlane_Alaska_5_FIPS_5005',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2161','PROJCS["NAD_1983_2011_StatePlane_Alaska_5_FIPS_5005",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-154.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102982','NAD_1983_2011_StatePlane_Alaska_6_FIPS_5006',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2162','PROJCS["NAD_1983_2011_StatePlane_Alaska_6_FIPS_5006",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-158.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102983','NAD_1983_2011_StatePlane_Alaska_7_FIPS_5007',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2163','PROJCS["NAD_1983_2011_StatePlane_Alaska_7_FIPS_5007",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-162.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102984','NAD_1983_2011_StatePlane_Alaska_8_FIPS_5008',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2164','PROJCS["NAD_1983_2011_StatePlane_Alaska_8_FIPS_5008",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-166.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102985','NAD_1983_2011_StatePlane_Alaska_9_FIPS_5009',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2165','PROJCS["NAD_1983_2011_StatePlane_Alaska_9_FIPS_5009",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-170.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",54.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102986','NAD_1983_2011_StatePlane_Alaska_10_FIPS_5010',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2157','PROJCS["NAD_1983_2011_StatePlane_Alaska_10_FIPS_5010",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-176.0],PARAMETER["Standard_Parallel_1",51.83333333333334],PARAMETER["Standard_Parallel_2",53.83333333333334],PARAMETER["Latitude_Of_Origin",51.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102987','NAD_1983_2011_StatePlane_Arizona_East_FIPS_0201',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2167','PROJCS["NAD_1983_2011_StatePlane_Arizona_East_FIPS_0201",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",213360.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-110.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102988','NAD_1983_2011_StatePlane_Arizona_Central_FIPS_0202',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2166','PROJCS["NAD_1983_2011_StatePlane_Arizona_Central_FIPS_0202",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",213360.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-111.9166666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102989','NAD_1983_2011_StatePlane_Arizona_West_FIPS_0203',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2168','PROJCS["NAD_1983_2011_StatePlane_Arizona_West_FIPS_0203",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",213360.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-113.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102990','NAD_1983_2011_StatePlane_Arizona_East_FIPS_0201_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2167','PROJCS["NAD_1983_2011_StatePlane_Arizona_East_FIPS_0201_Ft_Intl",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-110.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102991','NAD_1983_2011_StatePlane_Arizona_Central_FIPS_0202_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2166','PROJCS["NAD_1983_2011_StatePlane_Arizona_Central_FIPS_0202_Ft_Intl",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-111.9166666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102992','NAD_1983_2011_StatePlane_Arizona_West_FIPS_0203_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2168','PROJCS["NAD_1983_2011_StatePlane_Arizona_West_FIPS_0203_Ft_Intl",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-113.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102993','NAD_1983_2011_StatePlane_Arkansas_North_FIPS_0301',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2169','PROJCS["NAD_1983_2011_StatePlane_Arkansas_North_FIPS_0301",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.0],PARAMETER["Standard_Parallel_1",34.93333333333333],PARAMETER["Standard_Parallel_2",36.23333333333333],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102994','NAD_1983_2011_StatePlane_Arkansas_South_FIPS_0302',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2170','PROJCS["NAD_1983_2011_StatePlane_Arkansas_South_FIPS_0302",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",400000.0],PARAMETER["Central_Meridian",-92.0],PARAMETER["Standard_Parallel_1",33.3],PARAMETER["Standard_Parallel_2",34.76666666666667],PARAMETER["Latitude_Of_Origin",32.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102995','NAD_1983_2011_StatePlane_Arkansas_North_FIPS_0301_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2169','PROJCS["NAD_1983_2011_StatePlane_Arkansas_North_FIPS_0301_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.0],PARAMETER["Standard_Parallel_1",34.93333333333333],PARAMETER["Standard_Parallel_2",36.23333333333333],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102996','NAD_1983_2011_StatePlane_Arkansas_South_FIPS_0302_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2170','PROJCS["NAD_1983_2011_StatePlane_Arkansas_South_FIPS_0302_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",1312333.333333333],PARAMETER["Central_Meridian",-92.0],PARAMETER["Standard_Parallel_1",33.3],PARAMETER["Standard_Parallel_2",34.76666666666667],PARAMETER["Latitude_Of_Origin",32.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102997','NAD_1983_2011_StatePlane_California_I_FIPS_0401',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2175','PROJCS["NAD_1983_2011_StatePlane_California_I_FIPS_0401",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-122.0],PARAMETER["Standard_Parallel_1",40.0],PARAMETER["Standard_Parallel_2",41.66666666666666],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102998','NAD_1983_2011_StatePlane_California_II_FIPS_0402',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2176','PROJCS["NAD_1983_2011_StatePlane_California_II_FIPS_0402",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-122.0],PARAMETER["Standard_Parallel_1",38.33333333333334],PARAMETER["Standard_Parallel_2",39.83333333333334],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','102999','NAD_1983_2011_StatePlane_California_III_FIPS_0403',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2177','PROJCS["NAD_1983_2011_StatePlane_California_III_FIPS_0403",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",37.06666666666667],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103000','NAD_1983_2011_StatePlane_California_IV_FIPS_0404',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2178','PROJCS["NAD_1983_2011_StatePlane_California_IV_FIPS_0404",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-119.0],PARAMETER["Standard_Parallel_1",36.0],PARAMETER["Standard_Parallel_2",37.25],PARAMETER["Latitude_Of_Origin",35.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103001','NAD_1983_2011_StatePlane_California_V_FIPS_0405',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2182','PROJCS["NAD_1983_2011_StatePlane_California_V_FIPS_0405",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-118.0],PARAMETER["Standard_Parallel_1",34.03333333333333],PARAMETER["Standard_Parallel_2",35.46666666666667],PARAMETER["Latitude_Of_Origin",33.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103002','NAD_1983_2011_StatePlane_California_VI_FIPS_0406',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2180','PROJCS["NAD_1983_2011_StatePlane_California_VI_FIPS_0406",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-116.25],PARAMETER["Standard_Parallel_1",32.78333333333333],PARAMETER["Standard_Parallel_2",33.88333333333333],PARAMETER["Latitude_Of_Origin",32.16666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103003','NAD_1983_2011_StatePlane_California_I_FIPS_0401_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2175','PROJCS["NAD_1983_2011_StatePlane_California_I_FIPS_0401_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-122.0],PARAMETER["Standard_Parallel_1",40.0],PARAMETER["Standard_Parallel_2",41.66666666666666],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103004','NAD_1983_2011_StatePlane_California_II_FIPS_0402_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2176','PROJCS["NAD_1983_2011_StatePlane_California_II_FIPS_0402_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-122.0],PARAMETER["Standard_Parallel_1",38.33333333333334],PARAMETER["Standard_Parallel_2",39.83333333333334],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103005','NAD_1983_2011_StatePlane_California_III_FIPS_0403_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2177','PROJCS["NAD_1983_2011_StatePlane_California_III_FIPS_0403_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",37.06666666666667],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103006','NAD_1983_2011_StatePlane_California_IV_FIPS_0404_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2178','PROJCS["NAD_1983_2011_StatePlane_California_IV_FIPS_0404_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-119.0],PARAMETER["Standard_Parallel_1",36.0],PARAMETER["Standard_Parallel_2",37.25],PARAMETER["Latitude_Of_Origin",35.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103007','NAD_1983_2011_StatePlane_California_V_FIPS_0405_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2182','PROJCS["NAD_1983_2011_StatePlane_California_V_FIPS_0405_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-118.0],PARAMETER["Standard_Parallel_1",34.03333333333333],PARAMETER["Standard_Parallel_2",35.46666666666667],PARAMETER["Latitude_Of_Origin",33.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103008','NAD_1983_2011_StatePlane_California_VI_FIPS_0406_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2180','PROJCS["NAD_1983_2011_StatePlane_California_VI_FIPS_0406_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-116.25],PARAMETER["Standard_Parallel_1",32.78333333333333],PARAMETER["Standard_Parallel_2",33.88333333333333],PARAMETER["Latitude_Of_Origin",32.16666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103009','NAD_1983_2011_StatePlane_Colorado_North_FIPS_0501',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2184','PROJCS["NAD_1983_2011_StatePlane_Colorado_North_FIPS_0501",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",914401.8289],PARAMETER["False_Northing",304800.6096],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",39.71666666666667],PARAMETER["Standard_Parallel_2",40.78333333333333],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103010','NAD_1983_2011_StatePlane_Colorado_Central_FIPS_0502',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2183','PROJCS["NAD_1983_2011_StatePlane_Colorado_Central_FIPS_0502",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",914401.8289],PARAMETER["False_Northing",304800.6096],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",38.45],PARAMETER["Standard_Parallel_2",39.75],PARAMETER["Latitude_Of_Origin",37.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103011','NAD_1983_2011_StatePlane_Colorado_South_FIPS_0503',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2185','PROJCS["NAD_1983_2011_StatePlane_Colorado_South_FIPS_0503",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",914401.8289],PARAMETER["False_Northing",304800.6096],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",37.23333333333333],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103012','NAD_1983_2011_StatePlane_Colorado_North_FIPS_0501_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2184','PROJCS["NAD_1983_2011_StatePlane_Colorado_North_FIPS_0501_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000.000316083],PARAMETER["False_Northing",999999.999996],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",39.71666666666667],PARAMETER["Standard_Parallel_2",40.78333333333333],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103013','NAD_1983_2011_StatePlane_Colorado_Central_FIPS_0502_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2183','PROJCS["NAD_1983_2011_StatePlane_Colorado_Central_FIPS_0502_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000.000316083],PARAMETER["False_Northing",999999.999996],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",38.45],PARAMETER["Standard_Parallel_2",39.75],PARAMETER["Latitude_Of_Origin",37.83333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103014','NAD_1983_2011_StatePlane_Colorado_South_FIPS_0503_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2185','PROJCS["NAD_1983_2011_StatePlane_Colorado_South_FIPS_0503_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000.000316083],PARAMETER["False_Northing",999999.999996],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",37.23333333333333],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103015','NAD_1983_2011_StatePlane_Connecticut_FIPS_0600',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1377','PROJCS["NAD_1983_2011_StatePlane_Connecticut_FIPS_0600",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",304800.6096],PARAMETER["False_Northing",152400.3048],PARAMETER["Central_Meridian",-72.75],PARAMETER["Standard_Parallel_1",41.2],PARAMETER["Standard_Parallel_2",41.86666666666667],PARAMETER["Latitude_Of_Origin",40.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103016','NAD_1983_2011_StatePlane_Connecticut_FIPS_0600_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1377','PROJCS["NAD_1983_2011_StatePlane_Connecticut_FIPS_0600_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",999999.999996],PARAMETER["False_Northing",499999.999998],PARAMETER["Central_Meridian",-72.75],PARAMETER["Standard_Parallel_1",41.2],PARAMETER["Standard_Parallel_2",41.86666666666667],PARAMETER["Latitude_Of_Origin",40.83333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103017','NAD_1983_2011_StatePlane_Delaware_FIPS_0700',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1378','PROJCS["NAD_1983_2011_StatePlane_Delaware_FIPS_0700",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-75.41666666666667],PARAMETER["Scale_Factor",0.999995],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103018','NAD_1983_2011_StatePlane_Delaware_FIPS_0700_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1378','PROJCS["NAD_1983_2011_StatePlane_Delaware_FIPS_0700_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-75.41666666666667],PARAMETER["Scale_Factor",0.999995],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103019','NAD_1983_2011_StatePlane_Florida_East_FIPS_0901',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2186','PROJCS["NAD_1983_2011_StatePlane_Florida_East_FIPS_0901",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103020','NAD_1983_2011_StatePlane_Florida_West_FIPS_0902',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2188','PROJCS["NAD_1983_2011_StatePlane_Florida_West_FIPS_0902",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.0],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103021','NAD_1983_2011_StatePlane_Florida_North_FIPS_0903',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2187','PROJCS["NAD_1983_2011_StatePlane_Florida_North_FIPS_0903",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.5],PARAMETER["Standard_Parallel_1",29.58333333333333],PARAMETER["Standard_Parallel_2",30.75],PARAMETER["Latitude_Of_Origin",29.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103022','NAD_1983_2011_StatePlane_Florida_East_FIPS_0901_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2186','PROJCS["NAD_1983_2011_StatePlane_Florida_East_FIPS_0901_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103023','NAD_1983_2011_StatePlane_Florida_West_FIPS_0902_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2188','PROJCS["NAD_1983_2011_StatePlane_Florida_West_FIPS_0902_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.0],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103024','NAD_1983_2011_StatePlane_Florida_North_FIPS_0903_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2187','PROJCS["NAD_1983_2011_StatePlane_Florida_North_FIPS_0903_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.5],PARAMETER["Standard_Parallel_1",29.58333333333333],PARAMETER["Standard_Parallel_2",30.75],PARAMETER["Latitude_Of_Origin",29.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103025','NAD_1983_2011_StatePlane_Georgia_East_FIPS_1001',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2189','PROJCS["NAD_1983_2011_StatePlane_Georgia_East_FIPS_1001",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103026','NAD_1983_2011_StatePlane_Georgia_West_FIPS_1002',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2190','PROJCS["NAD_1983_2011_StatePlane_Georgia_West_FIPS_1002",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103027','NAD_1983_2011_StatePlane_Georgia_East_FIPS_1001_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2189','PROJCS["NAD_1983_2011_StatePlane_Georgia_East_FIPS_1001_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103028','NAD_1983_2011_StatePlane_Georgia_West_FIPS_1002_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2190','PROJCS["NAD_1983_2011_StatePlane_Georgia_West_FIPS_1002_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2296583.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103029','NAD_1983_2011_StatePlane_Idaho_East_FIPS_1101',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2192','PROJCS["NAD_1983_2011_StatePlane_Idaho_East_FIPS_1101",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-112.1666666666667],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103030','NAD_1983_2011_StatePlane_Idaho_Central_FIPS_1102',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2191','PROJCS["NAD_1983_2011_StatePlane_Idaho_Central_FIPS_1102",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-114.0],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103031','NAD_1983_2011_StatePlane_Idaho_West_FIPS_1103',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2193','PROJCS["NAD_1983_2011_StatePlane_Idaho_West_FIPS_1103",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-115.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103032','NAD_1983_2011_StatePlane_Idaho_East_FIPS_1101_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2192','PROJCS["NAD_1983_2011_StatePlane_Idaho_East_FIPS_1101_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-112.1666666666667],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103033','NAD_1983_2011_StatePlane_Idaho_Central_FIPS_1102_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2191','PROJCS["NAD_1983_2011_StatePlane_Idaho_Central_FIPS_1102_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-114.0],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103034','NAD_1983_2011_StatePlane_Idaho_West_FIPS_1103_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2193','PROJCS["NAD_1983_2011_StatePlane_Idaho_West_FIPS_1103_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-115.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103035','NAD_1983_2011_StatePlane_Illinois_East_FIPS_1201',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2194','PROJCS["NAD_1983_2011_StatePlane_Illinois_East_FIPS_1201",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.33333333333333],PARAMETER["Scale_Factor",0.999975],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103036','NAD_1983_2011_StatePlane_Illinois_West_FIPS_1202',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2195','PROJCS["NAD_1983_2011_StatePlane_Illinois_West_FIPS_1202",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.16666666666667],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103037','NAD_1983_2011_StatePlane_Illinois_East_FIPS_1201_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2194','PROJCS["NAD_1983_2011_StatePlane_Illinois_East_FIPS_1201_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",984250.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.33333333333333],PARAMETER["Scale_Factor",0.999975],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103038','NAD_1983_2011_StatePlane_Illinois_West_FIPS_1202_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2195','PROJCS["NAD_1983_2011_StatePlane_Illinois_West_FIPS_1202_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2296583.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.16666666666667],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103039','NAD_1983_2011_StatePlane_Indiana_East_FIPS_1301',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2196','PROJCS["NAD_1983_2011_StatePlane_Indiana_East_FIPS_1301",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",100000.0],PARAMETER["False_Northing",250000.0],PARAMETER["Central_Meridian",-85.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103040','NAD_1983_2011_StatePlane_Indiana_West_FIPS_1302',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2197','PROJCS["NAD_1983_2011_StatePlane_Indiana_West_FIPS_1302",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",900000.0],PARAMETER["False_Northing",250000.0],PARAMETER["Central_Meridian",-87.08333333333333],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103041','NAD_1983_2011_StatePlane_Indiana_East_FIPS_1301_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2196','PROJCS["NAD_1983_2011_StatePlane_Indiana_East_FIPS_1301_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",328083.3333333333],PARAMETER["False_Northing",820208.3333333333],PARAMETER["Central_Meridian",-85.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103042','NAD_1983_2011_StatePlane_Indiana_West_FIPS_1302_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2197','PROJCS["NAD_1983_2011_StatePlane_Indiana_West_FIPS_1302_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2952750.0],PARAMETER["False_Northing",820208.3333333333],PARAMETER["Central_Meridian",-87.08333333333333],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103043','NAD_1983_2011_StatePlane_Iowa_North_FIPS_1401',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2198','PROJCS["NAD_1983_2011_StatePlane_Iowa_North_FIPS_1401",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1500000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-93.5],PARAMETER["Standard_Parallel_1",42.06666666666667],PARAMETER["Standard_Parallel_2",43.26666666666667],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103044','NAD_1983_2011_StatePlane_Iowa_South_FIPS_1402',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2199','PROJCS["NAD_1983_2011_StatePlane_Iowa_South_FIPS_1402",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-93.5],PARAMETER["Standard_Parallel_1",40.61666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103045','NAD_1983_2011_StatePlane_Iowa_North_FIPS_1401_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2198','PROJCS["NAD_1983_2011_StatePlane_Iowa_North_FIPS_1401_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",4921250.0],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-93.5],PARAMETER["Standard_Parallel_1",42.06666666666667],PARAMETER["Standard_Parallel_2",43.26666666666667],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103046','NAD_1983_2011_StatePlane_Iowa_South_FIPS_1402_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2199','PROJCS["NAD_1983_2011_StatePlane_Iowa_South_FIPS_1402_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-93.5],PARAMETER["Standard_Parallel_1",40.61666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103047','NAD_1983_2011_StatePlane_Kansas_North_FIPS_1501',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2200','PROJCS["NAD_1983_2011_StatePlane_Kansas_North_FIPS_1501",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-98.0],PARAMETER["Standard_Parallel_1",38.71666666666667],PARAMETER["Standard_Parallel_2",39.78333333333333],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103048','NAD_1983_2011_StatePlane_Kansas_South_FIPS_1502',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2201','PROJCS["NAD_1983_2011_StatePlane_Kansas_South_FIPS_1502",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",400000.0],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",37.26666666666667],PARAMETER["Standard_Parallel_2",38.56666666666667],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103049','NAD_1983_2011_StatePlane_Kansas_North_FIPS_1501_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2200','PROJCS["NAD_1983_2011_StatePlane_Kansas_North_FIPS_1501_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-98.0],PARAMETER["Standard_Parallel_1",38.71666666666667],PARAMETER["Standard_Parallel_2",39.78333333333333],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103050','NAD_1983_2011_StatePlane_Kansas_South_FIPS_1502_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2201','PROJCS["NAD_1983_2011_StatePlane_Kansas_South_FIPS_1502_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",1312333.333333333],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",37.26666666666667],PARAMETER["Standard_Parallel_2",38.56666666666667],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103051','NAD_1983_2011_StatePlane_Kentucky_North_FIPS_1601',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2202','PROJCS["NAD_1983_2011_StatePlane_Kentucky_North_FIPS_1601",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.25],PARAMETER["Standard_Parallel_1",37.96666666666667],PARAMETER["Standard_Parallel_2",38.96666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103052','NAD_1983_2011_StatePlane_Kentucky_North_FIPS_1601_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2202','PROJCS["NAD_1983_2011_StatePlane_Kentucky_North_FIPS_1601_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.25],PARAMETER["Standard_Parallel_1",37.96666666666667],PARAMETER["Standard_Parallel_2",38.96666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103053','NAD_1983_2011_StatePlane_Kentucky_FIPS_1600',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1386','PROJCS["NAD_1983_2011_StatePlane_Kentucky_FIPS_1600",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1500000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-85.75],PARAMETER["Standard_Parallel_1",37.08333333333334],PARAMETER["Standard_Parallel_2",38.66666666666666],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103054','NAD_1983_2011_StatePlane_Kentucky_FIPS_1600_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1386','PROJCS["NAD_1983_2011_StatePlane_Kentucky_FIPS_1600_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",4921250.0],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-85.75],PARAMETER["Standard_Parallel_1",37.08333333333334],PARAMETER["Standard_Parallel_2",38.66666666666666],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103055','NAD_1983_2011_StatePlane_Kentucky_South_FIPS_1602',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2203','PROJCS["NAD_1983_2011_StatePlane_Kentucky_South_FIPS_1602",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-85.75],PARAMETER["Standard_Parallel_1",36.73333333333333],PARAMETER["Standard_Parallel_2",37.93333333333333],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103056','NAD_1983_2011_StatePlane_Kentucky_South_FIPS_1602_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2203','PROJCS["NAD_1983_2011_StatePlane_Kentucky_South_FIPS_1602_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-85.75],PARAMETER["Standard_Parallel_1",36.73333333333333],PARAMETER["Standard_Parallel_2",37.93333333333333],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103057','NAD_1983_2011_StatePlane_Louisiana_North_FIPS_1701',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2204','PROJCS["NAD_1983_2011_StatePlane_Louisiana_North_FIPS_1701",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.5],PARAMETER["Standard_Parallel_1",31.16666666666667],PARAMETER["Standard_Parallel_2",32.66666666666666],PARAMETER["Latitude_Of_Origin",30.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103058','NAD_1983_2011_StatePlane_Louisiana_South_FIPS_1702',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2529','PROJCS["NAD_1983_2011_StatePlane_Louisiana_South_FIPS_1702",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.33333333333333],PARAMETER["Standard_Parallel_1",29.3],PARAMETER["Standard_Parallel_2",30.7],PARAMETER["Latitude_Of_Origin",28.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103059','NAD_1983_2011_StatePlane_Louisiana_North_FIPS_1701_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2204','PROJCS["NAD_1983_2011_StatePlane_Louisiana_North_FIPS_1701_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3280833.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.5],PARAMETER["Standard_Parallel_1",31.16666666666667],PARAMETER["Standard_Parallel_2",32.66666666666666],PARAMETER["Latitude_Of_Origin",30.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103060','NAD_1983_2011_StatePlane_Louisiana_South_FIPS_1702_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2529','PROJCS["NAD_1983_2011_StatePlane_Louisiana_South_FIPS_1702_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3280833.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.33333333333333],PARAMETER["Standard_Parallel_1",29.3],PARAMETER["Standard_Parallel_2",30.7],PARAMETER["Latitude_Of_Origin",28.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103061','NAD_1983_2011_StatePlane_Maine_East_FIPS_1801',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2206','PROJCS["NAD_1983_2011_StatePlane_Maine_East_FIPS_1801",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-68.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103062','NAD_1983_2011_StatePlane_Maine_West_FIPS_1802',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2207','PROJCS["NAD_1983_2011_StatePlane_Maine_West_FIPS_1802",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",900000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-70.16666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103063','NAD_1983_2011_StatePlane_Maine_East_FIPS_1801_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2206','PROJCS["NAD_1983_2011_StatePlane_Maine_East_FIPS_1801_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",984250.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-68.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103064','NAD_1983_2011_StatePlane_Maine_West_FIPS_1802_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2207','PROJCS["NAD_1983_2011_StatePlane_Maine_West_FIPS_1802_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2952750.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-70.16666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.83333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103065','NAD_1983_2011_Maine_2000_East_Zone',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2960','PROJCS["NAD_1983_2011_Maine_2000_East_Zone",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-67.875],PARAMETER["Scale_Factor",0.99998],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103066','NAD_1983_2011_Maine_2000_Central_Zone',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2959','PROJCS["NAD_1983_2011_Maine_2000_Central_Zone",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-69.125],PARAMETER["Scale_Factor",0.99998],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103067','NAD_1983_2011_Maine_2000_West_Zone',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2958','PROJCS["NAD_1983_2011_Maine_2000_West_Zone",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-70.375],PARAMETER["Scale_Factor",0.99998],PARAMETER["Latitude_Of_Origin",42.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103068','NAD_1983_2011_StatePlane_Maryland_FIPS_1900',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1389','PROJCS["NAD_1983_2011_StatePlane_Maryland_FIPS_1900",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-77.0],PARAMETER["Standard_Parallel_1",38.3],PARAMETER["Standard_Parallel_2",39.45],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103069','NAD_1983_2011_StatePlane_Maryland_FIPS_1900_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1389','PROJCS["NAD_1983_2011_StatePlane_Maryland_FIPS_1900_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-77.0],PARAMETER["Standard_Parallel_1",38.3],PARAMETER["Standard_Parallel_2",39.45],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103070','NAD_1983_2011_StatePlane_Massachusetts_Mainland_FIPS_2001',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2209','PROJCS["NAD_1983_2011_StatePlane_Massachusetts_Mainland_FIPS_2001",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",750000.0],PARAMETER["Central_Meridian",-71.5],PARAMETER["Standard_Parallel_1",41.71666666666667],PARAMETER["Standard_Parallel_2",42.68333333333333],PARAMETER["Latitude_Of_Origin",41.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103071','NAD_1983_2011_StatePlane_Massachusetts_Island_FIPS_2002',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2208','PROJCS["NAD_1983_2011_StatePlane_Massachusetts_Island_FIPS_2002",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-70.5],PARAMETER["Standard_Parallel_1",41.28333333333333],PARAMETER["Standard_Parallel_2",41.48333333333333],PARAMETER["Latitude_Of_Origin",41.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103072','NAD_1983_2011_StatePlane_Massachusetts_Mnld_FIPS_2001_FtUS',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2209','PROJCS["NAD_1983_2011_StatePlane_Massachusetts_Mnld_FIPS_2001_FtUS",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",2460625.0],PARAMETER["Central_Meridian",-71.5],PARAMETER["Standard_Parallel_1",41.71666666666667],PARAMETER["Standard_Parallel_2",42.68333333333333],PARAMETER["Latitude_Of_Origin",41.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103073','NAD_1983_2011_StatePlane_Massachusetts_Isl_FIPS_2002_FtUS',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2208','PROJCS["NAD_1983_2011_StatePlane_Massachusetts_Isl_FIPS_2002_FtUS",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-70.5],PARAMETER["Standard_Parallel_1",41.28333333333333],PARAMETER["Standard_Parallel_2",41.48333333333333],PARAMETER["Latitude_Of_Origin",41.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103074','NAD_1983_2011_StatePlane_Michigan_North_FIPS_2111',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1723','PROJCS["NAD_1983_2011_StatePlane_Michigan_North_FIPS_2111",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",8000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.0],PARAMETER["Standard_Parallel_1",45.48333333333333],PARAMETER["Standard_Parallel_2",47.08333333333334],PARAMETER["Latitude_Of_Origin",44.78333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103075','NAD_1983_2011_StatePlane_Michigan_Central_FIPS_2112',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1724','PROJCS["NAD_1983_2011_StatePlane_Michigan_Central_FIPS_2112",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.36666666666666],PARAMETER["Standard_Parallel_1",44.18333333333333],PARAMETER["Standard_Parallel_2",45.7],PARAMETER["Latitude_Of_Origin",43.31666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103076','NAD_1983_2011_StatePlane_Michigan_South_FIPS_2113',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1725','PROJCS["NAD_1983_2011_StatePlane_Michigan_South_FIPS_2113",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",4000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.36666666666666],PARAMETER["Standard_Parallel_1",42.1],PARAMETER["Standard_Parallel_2",43.66666666666666],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103077','NAD_1983_2011_StatePlane_Michigan_North_FIPS_2111_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1723','PROJCS["NAD_1983_2011_StatePlane_Michigan_North_FIPS_2111_Ft_Intl",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",26246719.16010498],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.0],PARAMETER["Standard_Parallel_1",45.48333333333333],PARAMETER["Standard_Parallel_2",47.08333333333334],PARAMETER["Latitude_Of_Origin",44.78333333333333],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103078','NAD_1983_2011_StatePlane_Michigan_Central_FIPS_2112_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1724','PROJCS["NAD_1983_2011_StatePlane_Michigan_Central_FIPS_2112_Ft_Intl",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",19685039.37007874],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.36666666666666],PARAMETER["Standard_Parallel_1",44.18333333333333],PARAMETER["Standard_Parallel_2",45.7],PARAMETER["Latitude_Of_Origin",43.31666666666667],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103079','NAD_1983_2011_StatePlane_Michigan_South_FIPS_2113_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1725','PROJCS["NAD_1983_2011_StatePlane_Michigan_South_FIPS_2113_Ft_Intl",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",13123359.58005249],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.36666666666666],PARAMETER["Standard_Parallel_1",42.1],PARAMETER["Standard_Parallel_2",43.66666666666666],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103080','NAD_1983_2011_StatePlane_Minnesota_North_FIPS_2201',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2214','PROJCS["NAD_1983_2011_StatePlane_Minnesota_North_FIPS_2201",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.1],PARAMETER["Standard_Parallel_1",47.03333333333333],PARAMETER["Standard_Parallel_2",48.63333333333333],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103081','NAD_1983_2011_StatePlane_Minnesota_Central_FIPS_2202',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2213','PROJCS["NAD_1983_2011_StatePlane_Minnesota_Central_FIPS_2202",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.25],PARAMETER["Standard_Parallel_1",45.61666666666667],PARAMETER["Standard_Parallel_2",47.05],PARAMETER["Latitude_Of_Origin",45.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103082','NAD_1983_2011_StatePlane_Minnesota_South_FIPS_2203',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2215','PROJCS["NAD_1983_2011_StatePlane_Minnesota_South_FIPS_2203",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.0],PARAMETER["Standard_Parallel_1",43.78333333333333],PARAMETER["Standard_Parallel_2",45.21666666666667],PARAMETER["Latitude_Of_Origin",43.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103083','NAD_1983_2011_StatePlane_Minnesota_North_FIPS_2201_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2214','PROJCS["NAD_1983_2011_StatePlane_Minnesota_North_FIPS_2201_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-93.1],PARAMETER["Standard_Parallel_1",47.03333333333333],PARAMETER["Standard_Parallel_2",48.63333333333333],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103084','NAD_1983_2011_StatePlane_Minnesota_Central_FIPS_2202_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2213','PROJCS["NAD_1983_2011_StatePlane_Minnesota_Central_FIPS_2202_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-94.25],PARAMETER["Standard_Parallel_1",45.61666666666667],PARAMETER["Standard_Parallel_2",47.05],PARAMETER["Latitude_Of_Origin",45.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103085','NAD_1983_2011_StatePlane_Minnesota_South_FIPS_2203_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2215','PROJCS["NAD_1983_2011_StatePlane_Minnesota_South_FIPS_2203_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-94.0],PARAMETER["Standard_Parallel_1",43.78333333333333],PARAMETER["Standard_Parallel_2",45.21666666666667],PARAMETER["Latitude_Of_Origin",43.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103086','NAD_1983_2011_StatePlane_Mississippi_East_FIPS_2301',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2216','PROJCS["NAD_1983_2011_StatePlane_Mississippi_East_FIPS_2301",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.83333333333333],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",29.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103087','NAD_1983_2011_StatePlane_Mississippi_West_FIPS_2302',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2217','PROJCS["NAD_1983_2011_StatePlane_Mississippi_West_FIPS_2302",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.33333333333333],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",29.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103088','NAD_1983_2011_StatePlane_Mississippi_East_FIPS_2301_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2216','PROJCS["NAD_1983_2011_StatePlane_Mississippi_East_FIPS_2301_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",984250.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.83333333333333],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",29.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103089','NAD_1983_2011_StatePlane_Mississippi_West_FIPS_2302_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2217','PROJCS["NAD_1983_2011_StatePlane_Mississippi_West_FIPS_2302_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2296583.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.33333333333333],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",29.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103090','NAD_1983_2011_StatePlane_Missouri_East_FIPS_2401',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2219','PROJCS["NAD_1983_2011_StatePlane_Missouri_East_FIPS_2401",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",250000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",35.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103091','NAD_1983_2011_StatePlane_Missouri_Central_FIPS_2402',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2218','PROJCS["NAD_1983_2011_StatePlane_Missouri_Central_FIPS_2402",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",35.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103092','NAD_1983_2011_StatePlane_Missouri_West_FIPS_2403',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2220','PROJCS["NAD_1983_2011_StatePlane_Missouri_West_FIPS_2403",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",850000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-94.5],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",36.16666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103093','NAD_1983_2011_StatePlane_Montana_FIPS_2500',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1395','PROJCS["NAD_1983_2011_StatePlane_Montana_FIPS_2500",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-109.5],PARAMETER["Standard_Parallel_1",45.0],PARAMETER["Standard_Parallel_2",49.0],PARAMETER["Latitude_Of_Origin",44.25],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103094','NAD_1983_2011_StatePlane_Montana_FIPS_2500_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1395','PROJCS["NAD_1983_2011_StatePlane_Montana_FIPS_2500_Ft_Intl",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968503.937007874],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-109.5],PARAMETER["Standard_Parallel_1",45.0],PARAMETER["Standard_Parallel_2",49.0],PARAMETER["Latitude_Of_Origin",44.25],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103095','NAD_1983_2011_StatePlane_Nebraska_FIPS_2600',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1396','PROJCS["NAD_1983_2011_StatePlane_Nebraska_FIPS_2600",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.0],PARAMETER["Standard_Parallel_1",40.0],PARAMETER["Standard_Parallel_2",43.0],PARAMETER["Latitude_Of_Origin",39.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103096','NAD_1983_2011_StatePlane_Nebraska_FIPS_2600_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1396','PROJCS["NAD_1983_2011_StatePlane_Nebraska_FIPS_2600_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.0],PARAMETER["Standard_Parallel_1",40.0],PARAMETER["Standard_Parallel_2",43.0],PARAMETER["Latitude_Of_Origin",39.83333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103097','NAD_1983_2011_StatePlane_Nevada_East_FIPS_2701',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2224','PROJCS["NAD_1983_2011_StatePlane_Nevada_East_FIPS_2701",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",8000000.0],PARAMETER["Central_Meridian",-115.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103098','NAD_1983_2011_StatePlane_Nevada_Central_FIPS_2702',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2223','PROJCS["NAD_1983_2011_StatePlane_Nevada_Central_FIPS_2702",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",6000000.0],PARAMETER["Central_Meridian",-116.6666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103099','NAD_1983_2011_StatePlane_Nevada_West_FIPS_2703',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2225','PROJCS["NAD_1983_2011_StatePlane_Nevada_West_FIPS_2703",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",4000000.0],PARAMETER["Central_Meridian",-118.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103100','NAD_1983_2011_StatePlane_Nevada_East_FIPS_2701_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2224','PROJCS["NAD_1983_2011_StatePlane_Nevada_East_FIPS_2701_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",26246666.66666666],PARAMETER["Central_Meridian",-115.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103101','NAD_1983_2011_StatePlane_Nevada_Central_FIPS_2702_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2223','PROJCS["NAD_1983_2011_StatePlane_Nevada_Central_FIPS_2702_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",19685000.0],PARAMETER["Central_Meridian",-116.6666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103102','NAD_1983_2011_StatePlane_Nevada_West_FIPS_2703_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2225','PROJCS["NAD_1983_2011_StatePlane_Nevada_West_FIPS_2703_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",13123333.33333333],PARAMETER["Central_Meridian",-118.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103103','NAD_1983_2011_StatePlane_New_Hampshire_FIPS_2800',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1398','PROJCS["NAD_1983_2011_StatePlane_New_Hampshire_FIPS_2800",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-71.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103104','NAD_1983_2011_StatePlane_New_Hampshire_FIPS_2800_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1398','PROJCS["NAD_1983_2011_StatePlane_New_Hampshire_FIPS_2800_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",984250.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-71.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103105','NAD_1983_2011_StatePlane_New_Jersey_FIPS_2900',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1399','PROJCS["NAD_1983_2011_StatePlane_New_Jersey_FIPS_2900",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",150000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103106','NAD_1983_2011_StatePlane_New_Jersey_FIPS_2900_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1399','PROJCS["NAD_1983_2011_StatePlane_New_Jersey_FIPS_2900_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",492125.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103107','NAD_1983_2011_StatePlane_New_Mexico_East_FIPS_3001',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2228','PROJCS["NAD_1983_2011_StatePlane_New_Mexico_East_FIPS_3001",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",165000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-104.3333333333333],PARAMETER["Scale_Factor",0.9999090909090909],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103108','NAD_1983_2011_StatePlane_New_Mexico_Central_FIPS_3002',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2231','PROJCS["NAD_1983_2011_StatePlane_New_Mexico_Central_FIPS_3002",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-106.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103109','NAD_1983_2011_StatePlane_New_Mexico_West_FIPS_3003',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2232','PROJCS["NAD_1983_2011_StatePlane_New_Mexico_West_FIPS_3003",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",830000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-107.8333333333333],PARAMETER["Scale_Factor",0.9999166666666667],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103110','NAD_1983_2011_StatePlane_New_Mexico_East_FIPS_3001_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2228','PROJCS["NAD_1983_2011_StatePlane_New_Mexico_East_FIPS_3001_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",541337.5],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-104.3333333333333],PARAMETER["Scale_Factor",0.9999090909090909],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103111','NAD_1983_2011_StatePlane_New_Mexico_Central_FIPS_3002_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2231','PROJCS["NAD_1983_2011_StatePlane_New_Mexico_Central_FIPS_3002_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-106.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103112','NAD_1983_2011_StatePlane_New_Mexico_West_FIPS_3003_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2232','PROJCS["NAD_1983_2011_StatePlane_New_Mexico_West_FIPS_3003_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2723091.666666666],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-107.8333333333333],PARAMETER["Scale_Factor",0.9999166666666667],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103113','NAD_1983_2011_StatePlane_New_York_East_FIPS_3101',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2234','PROJCS["NAD_1983_2011_StatePlane_New_York_East_FIPS_3101",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",150000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103114','NAD_1983_2011_StatePlane_New_York_Central_FIPS_3102',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2233','PROJCS["NAD_1983_2011_StatePlane_New_York_Central_FIPS_3102",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",250000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-76.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103115','NAD_1983_2011_StatePlane_New_York_West_FIPS_3103',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2236','PROJCS["NAD_1983_2011_StatePlane_New_York_West_FIPS_3103",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",350000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-78.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103116','NAD_1983_2011_StatePlane_New_York_Long_Island_FIPS_3104',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2235','PROJCS["NAD_1983_2011_StatePlane_New_York_Long_Island_FIPS_3104",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.0],PARAMETER["Standard_Parallel_1",40.66666666666666],PARAMETER["Standard_Parallel_2",41.03333333333333],PARAMETER["Latitude_Of_Origin",40.16666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103117','NAD_1983_2011_StatePlane_New_York_East_FIPS_3101_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2234','PROJCS["NAD_1983_2011_StatePlane_New_York_East_FIPS_3101_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",492125.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103118','NAD_1983_2011_StatePlane_New_York_Central_FIPS_3102_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2233','PROJCS["NAD_1983_2011_StatePlane_New_York_Central_FIPS_3102_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",820208.3333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-76.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103119','NAD_1983_2011_StatePlane_New_York_West_FIPS_3103_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2236','PROJCS["NAD_1983_2011_StatePlane_New_York_West_FIPS_3103_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1148291.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-78.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103120','NAD_1983_2011_StatePlane_New_York_Long_Isl_FIPS_3104_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2235','PROJCS["NAD_1983_2011_StatePlane_New_York_Long_Isl_FIPS_3104_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",984250.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.0],PARAMETER["Standard_Parallel_1",40.66666666666666],PARAMETER["Standard_Parallel_2",41.03333333333333],PARAMETER["Latitude_Of_Origin",40.16666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103121','NAD_1983_2011_StatePlane_North_Carolina_FIPS_3200',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1402','PROJCS["NAD_1983_2011_StatePlane_North_Carolina_FIPS_3200",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",609601.2192024384],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-79.0],PARAMETER["Standard_Parallel_1",34.33333333333334],PARAMETER["Standard_Parallel_2",36.16666666666666],PARAMETER["Latitude_Of_Origin",33.75],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103122','NAD_1983_2011_StatePlane_North_Carolina_FIPS_3200_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1402','PROJCS["NAD_1983_2011_StatePlane_North_Carolina_FIPS_3200_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-79.0],PARAMETER["Standard_Parallel_1",34.33333333333334],PARAMETER["Standard_Parallel_2",36.16666666666666],PARAMETER["Latitude_Of_Origin",33.75],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103123','NAD_1983_2011_StatePlane_North_Dakota_North_FIPS_3301',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2237','PROJCS["NAD_1983_2011_StatePlane_North_Dakota_North_FIPS_3301",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",47.43333333333333],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103124','NAD_1983_2011_StatePlane_North_Dakota_South_FIPS_3302',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2238','PROJCS["NAD_1983_2011_StatePlane_North_Dakota_South_FIPS_3302",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",46.18333333333333],PARAMETER["Standard_Parallel_2",47.48333333333333],PARAMETER["Latitude_Of_Origin",45.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103125','NAD_1983_2011_StatePlane_North_Dakota_North_FIPS_3301_FtI',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2237','PROJCS["NAD_1983_2011_StatePlane_North_Dakota_North_FIPS_3301_FtI",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968503.937007874],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",47.43333333333333],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47.0],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103126','NAD_1983_2011_StatePlane_North_Dakota_South_FIPS_3302_FtI',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2238','PROJCS["NAD_1983_2011_StatePlane_North_Dakota_South_FIPS_3302_FtI",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968503.937007874],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",46.18333333333333],PARAMETER["Standard_Parallel_2",47.48333333333333],PARAMETER["Latitude_Of_Origin",45.66666666666666],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103127','NAD_1983_2011_StatePlane_Ohio_North_FIPS_3401',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2239','PROJCS["NAD_1983_2011_StatePlane_Ohio_North_FIPS_3401",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",40.43333333333333],PARAMETER["Standard_Parallel_2",41.7],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103128','NAD_1983_2011_StatePlane_Ohio_South_FIPS_3402',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2240','PROJCS["NAD_1983_2011_StatePlane_Ohio_South_FIPS_3402",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",38.73333333333333],PARAMETER["Standard_Parallel_2",40.03333333333333],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103129','NAD_1983_2011_StatePlane_Ohio_North_FIPS_3401_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2239','PROJCS["NAD_1983_2011_StatePlane_Ohio_North_FIPS_3401_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",40.43333333333333],PARAMETER["Standard_Parallel_2",41.7],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103130','NAD_1983_2011_StatePlane_Ohio_South_FIPS_3402_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2240','PROJCS["NAD_1983_2011_StatePlane_Ohio_South_FIPS_3402_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",38.73333333333333],PARAMETER["Standard_Parallel_2",40.03333333333333],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103131','NAD_1983_2011_StatePlane_Oklahoma_North_FIPS_3501',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2241','PROJCS["NAD_1983_2011_StatePlane_Oklahoma_North_FIPS_3501",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-98.0],PARAMETER["Standard_Parallel_1",35.56666666666667],PARAMETER["Standard_Parallel_2",36.76666666666667],PARAMETER["Latitude_Of_Origin",35.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103132','NAD_1983_2011_StatePlane_Oklahoma_South_FIPS_3502',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2242','PROJCS["NAD_1983_2011_StatePlane_Oklahoma_South_FIPS_3502",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-98.0],PARAMETER["Standard_Parallel_1",33.93333333333333],PARAMETER["Standard_Parallel_2",35.23333333333333],PARAMETER["Latitude_Of_Origin",33.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103133','NAD_1983_2011_StatePlane_Oklahoma_North_FIPS_3501_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2241','PROJCS["NAD_1983_2011_StatePlane_Oklahoma_North_FIPS_3501_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-98.0],PARAMETER["Standard_Parallel_1",35.56666666666667],PARAMETER["Standard_Parallel_2",36.76666666666667],PARAMETER["Latitude_Of_Origin",35.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103134','NAD_1983_2011_StatePlane_Oklahoma_South_FIPS_3502_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2242','PROJCS["NAD_1983_2011_StatePlane_Oklahoma_South_FIPS_3502_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-98.0],PARAMETER["Standard_Parallel_1",33.93333333333333],PARAMETER["Standard_Parallel_2",35.23333333333333],PARAMETER["Latitude_Of_Origin",33.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103135','NAD_1983_2011_StatePlane_Oregon_North_FIPS_3601',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2243','PROJCS["NAD_1983_2011_StatePlane_Oregon_North_FIPS_3601",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",44.33333333333334],PARAMETER["Standard_Parallel_2",46.0],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103136','NAD_1983_2011_StatePlane_Oregon_South_FIPS_3602',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2244','PROJCS["NAD_1983_2011_StatePlane_Oregon_South_FIPS_3602",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",42.33333333333334],PARAMETER["Standard_Parallel_2",44.0],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103137','NAD_1983_2011_StatePlane_Oregon_North_FIPS_3601_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2243','PROJCS["NAD_1983_2011_StatePlane_Oregon_North_FIPS_3601_Ft_Intl",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",8202099.737532808],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",44.33333333333334],PARAMETER["Standard_Parallel_2",46.0],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103138','NAD_1983_2011_StatePlane_Oregon_South_FIPS_3602_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2244','PROJCS["NAD_1983_2011_StatePlane_Oregon_South_FIPS_3602_Ft_Intl",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",4921259.842519685],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",42.33333333333334],PARAMETER["Standard_Parallel_2",44.0],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103139','NAD_1983_2011_StatePlane_Pennsylvania_North_FIPS_3701',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2245','PROJCS["NAD_1983_2011_StatePlane_Pennsylvania_North_FIPS_3701",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-77.75],PARAMETER["Standard_Parallel_1",40.88333333333333],PARAMETER["Standard_Parallel_2",41.95],PARAMETER["Latitude_Of_Origin",40.16666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103140','NAD_1983_2011_StatePlane_Pennsylvania_North_FIPS_3701_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2245','PROJCS["NAD_1983_2011_StatePlane_Pennsylvania_North_FIPS_3701_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-77.75],PARAMETER["Standard_Parallel_1",40.88333333333333],PARAMETER["Standard_Parallel_2",41.95],PARAMETER["Latitude_Of_Origin",40.16666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103141','NAD_1983_2011_StatePlane_Pennsylvania_South_FIPS_3702',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2246','PROJCS["NAD_1983_2011_StatePlane_Pennsylvania_South_FIPS_3702",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-77.75],PARAMETER["Standard_Parallel_1",39.93333333333333],PARAMETER["Standard_Parallel_2",40.96666666666667],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103142','NAD_1983_2011_StatePlane_Pennsylvania_South_FIPS_3702_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2246','PROJCS["NAD_1983_2011_StatePlane_Pennsylvania_South_FIPS_3702_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-77.75],PARAMETER["Standard_Parallel_1",39.93333333333333],PARAMETER["Standard_Parallel_2",40.96666666666667],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103143','NAD_1983_2011_StatePlane_Rhode_Island_FIPS_3800',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1408','PROJCS["NAD_1983_2011_StatePlane_Rhode_Island_FIPS_3800",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",100000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-71.5],PARAMETER["Scale_Factor",0.99999375],PARAMETER["Latitude_Of_Origin",41.08333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103144','NAD_1983_2011_StatePlane_Rhode_Island_FIPS_3800_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1408','PROJCS["NAD_1983_2011_StatePlane_Rhode_Island_FIPS_3800_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",328083.3333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-71.5],PARAMETER["Scale_Factor",0.99999375],PARAMETER["Latitude_Of_Origin",41.08333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103145','NAD_1983_2011_StatePlane_South_Carolina_FIPS_3900',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1409','PROJCS["NAD_1983_2011_StatePlane_South_Carolina_FIPS_3900",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",609600.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Standard_Parallel_1",32.5],PARAMETER["Standard_Parallel_2",34.83333333333334],PARAMETER["Latitude_Of_Origin",31.83333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103146','NAD_1983_2011_StatePlane_South_Carolina_FIPS_3900_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1409','PROJCS["NAD_1983_2011_StatePlane_South_Carolina_FIPS_3900_Ft_Intl",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Standard_Parallel_1",32.5],PARAMETER["Standard_Parallel_2",34.83333333333334],PARAMETER["Latitude_Of_Origin",31.83333333333333],UNIT["Foot",0.3048]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103147','NAD_1983_2011_StatePlane_South_Dakota_North_FIPS_4001',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2249','PROJCS["NAD_1983_2011_StatePlane_South_Dakota_North_FIPS_4001",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.0],PARAMETER["Standard_Parallel_1",44.41666666666666],PARAMETER["Standard_Parallel_2",45.68333333333333],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103148','NAD_1983_2011_StatePlane_South_Dakota_South_FIPS_4002',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2250','PROJCS["NAD_1983_2011_StatePlane_South_Dakota_South_FIPS_4002",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",42.83333333333334],PARAMETER["Standard_Parallel_2",44.4],PARAMETER["Latitude_Of_Origin",42.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103149','NAD_1983_2011_StatePlane_South_Dakota_North_FIPS_4001_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2249','PROJCS["NAD_1983_2011_StatePlane_South_Dakota_North_FIPS_4001_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.0],PARAMETER["Standard_Parallel_1",44.41666666666666],PARAMETER["Standard_Parallel_2",45.68333333333333],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103150','NAD_1983_2011_StatePlane_South_Dakota_South_FIPS_4002_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2250','PROJCS["NAD_1983_2011_StatePlane_South_Dakota_South_FIPS_4002_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",42.83333333333334],PARAMETER["Standard_Parallel_2",44.4],PARAMETER["Latitude_Of_Origin",42.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103151','NAD_1983_2011_StatePlane_Tennessee_FIPS_4100',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1411','PROJCS["NAD_1983_2011_StatePlane_Tennessee_FIPS_4100",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-86.0],PARAMETER["Standard_Parallel_1",35.25],PARAMETER["Standard_Parallel_2",36.41666666666666],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103152','NAD_1983_2011_StatePlane_Tennessee_FIPS_4100_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1411','PROJCS["NAD_1983_2011_StatePlane_Tennessee_FIPS_4100_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-86.0],PARAMETER["Standard_Parallel_1",35.25],PARAMETER["Standard_Parallel_2",36.41666666666666],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103153','NAD_1983_2011_StatePlane_Texas_North_FIPS_4201',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2253','PROJCS["NAD_1983_2011_StatePlane_Texas_North_FIPS_4201",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-101.5],PARAMETER["Standard_Parallel_1",34.65],PARAMETER["Standard_Parallel_2",36.18333333333333],PARAMETER["Latitude_Of_Origin",34.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103154','NAD_1983_2011_StatePlane_Texas_North_Central_FIPS_4202',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2254','PROJCS["NAD_1983_2011_StatePlane_Texas_North_Central_FIPS_4202",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",2000000.0],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",32.13333333333333],PARAMETER["Standard_Parallel_2",33.96666666666667],PARAMETER["Latitude_Of_Origin",31.66666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103155','NAD_1983_2011_StatePlane_Texas_Central_FIPS_4203',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2252','PROJCS["NAD_1983_2011_StatePlane_Texas_Central_FIPS_4203",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",3000000.0],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",30.11666666666667],PARAMETER["Standard_Parallel_2",31.88333333333333],PARAMETER["Latitude_Of_Origin",29.66666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103156','NAD_1983_2011_StatePlane_Texas_South_Central_FIPS_4204',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2527','PROJCS["NAD_1983_2011_StatePlane_Texas_South_Central_FIPS_4204",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",4000000.0],PARAMETER["Central_Meridian",-99.0],PARAMETER["Standard_Parallel_1",28.38333333333333],PARAMETER["Standard_Parallel_2",30.28333333333333],PARAMETER["Latitude_Of_Origin",27.83333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103157','NAD_1983_2011_StatePlane_Texas_South_FIPS_4205',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2528','PROJCS["NAD_1983_2011_StatePlane_Texas_South_FIPS_4205",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",5000000.0],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",26.16666666666667],PARAMETER["Standard_Parallel_2",27.83333333333333],PARAMETER["Latitude_Of_Origin",25.66666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103158','NAD_1983_2011_StatePlane_Texas_North_FIPS_4201_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2253','PROJCS["NAD_1983_2011_StatePlane_Texas_North_FIPS_4201_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-101.5],PARAMETER["Standard_Parallel_1",34.65],PARAMETER["Standard_Parallel_2",36.18333333333333],PARAMETER["Latitude_Of_Origin",34.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103159','NAD_1983_2011_StatePlane_Texas_North_Central_FIPS_4202_FtUS',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2254','PROJCS["NAD_1983_2011_StatePlane_Texas_North_Central_FIPS_4202_FtUS",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",6561666.666666666],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",32.13333333333333],PARAMETER["Standard_Parallel_2",33.96666666666667],PARAMETER["Latitude_Of_Origin",31.66666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103160','NAD_1983_2011_StatePlane_Texas_Central_FIPS_4203_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2252','PROJCS["NAD_1983_2011_StatePlane_Texas_Central_FIPS_4203_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2296583.333333333],PARAMETER["False_Northing",9842500.0],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",30.11666666666667],PARAMETER["Standard_Parallel_2",31.88333333333333],PARAMETER["Latitude_Of_Origin",29.66666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103161','NAD_1983_2011_StatePlane_Texas_South_Central_FIPS_4204_FtUS',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2527','PROJCS["NAD_1983_2011_StatePlane_Texas_South_Central_FIPS_4204_FtUS",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",13123333.33333333],PARAMETER["Central_Meridian",-99.0],PARAMETER["Standard_Parallel_1",28.38333333333333],PARAMETER["Standard_Parallel_2",30.28333333333333],PARAMETER["Latitude_Of_Origin",27.83333333333333],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103162','NAD_1983_2011_StatePlane_Texas_South_FIPS_4205_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2528','PROJCS["NAD_1983_2011_StatePlane_Texas_South_FIPS_4205_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",984250.0],PARAMETER["False_Northing",16404166.66666666],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",26.16666666666667],PARAMETER["Standard_Parallel_2",27.83333333333333],PARAMETER["Latitude_Of_Origin",25.66666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103163','NAD_1983_2011_StatePlane_Utah_North_FIPS_4301',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2258','PROJCS["NAD_1983_2011_StatePlane_Utah_North_FIPS_4301",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",40.71666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103164','NAD_1983_2011_StatePlane_Utah_Central_FIPS_4302',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2257','PROJCS["NAD_1983_2011_StatePlane_Utah_Central_FIPS_4302",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",2000000.0],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",39.01666666666667],PARAMETER["Standard_Parallel_2",40.65],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103165','NAD_1983_2011_StatePlane_Utah_South_FIPS_4303',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2259','PROJCS["NAD_1983_2011_StatePlane_Utah_South_FIPS_4303",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",3000000.0],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",37.21666666666667],PARAMETER["Standard_Parallel_2",38.35],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103166','NAD_1983_2011_StatePlane_Utah_North_FIPS_4301_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2258','PROJCS["NAD_1983_2011_StatePlane_Utah_North_FIPS_4301_Ft_Intl",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640419.947506561],PARAMETER["False_Northing",3280839.895013123],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",40.71666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40.33333333333334],UNIT["Foot",0.3048]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103167','NAD_1983_2011_StatePlane_Utah_Central_FIPS_4302_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2257','PROJCS["NAD_1983_2011_StatePlane_Utah_Central_FIPS_4302_Ft_Intl",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640419.947506561],PARAMETER["False_Northing",6561679.790026246],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",39.01666666666667],PARAMETER["Standard_Parallel_2",40.65],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Foot",0.3048]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103168','NAD_1983_2011_StatePlane_Utah_South_FIPS_4303_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2259','PROJCS["NAD_1983_2011_StatePlane_Utah_South_FIPS_4303_Ft_Intl",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640419.947506561],PARAMETER["False_Northing",9842519.685039369],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",37.21666666666667],PARAMETER["Standard_Parallel_2",38.35],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot",0.3048]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103169','NAD_1983_2011_StatePlane_Utah_North_FIPS_4301_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2258','PROJCS["NAD_1983_2011_StatePlane_Utah_North_FIPS_4301_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",40.71666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103170','NAD_1983_2011_StatePlane_Utah_Central_FIPS_4302_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2257','PROJCS["NAD_1983_2011_StatePlane_Utah_Central_FIPS_4302_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",6561666.666666666],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",39.01666666666667],PARAMETER["Standard_Parallel_2",40.65],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103171','NAD_1983_2011_StatePlane_Utah_South_FIPS_4303_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2259','PROJCS["NAD_1983_2011_StatePlane_Utah_South_FIPS_4303_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",9842500.0],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",37.21666666666667],PARAMETER["Standard_Parallel_2",38.35],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103172','NAD_1983_2011_StatePlane_Vermont_FIPS_4400',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1414','PROJCS["NAD_1983_2011_StatePlane_Vermont_FIPS_4400",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-72.5],PARAMETER["Scale_Factor",0.9999642857142857],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103173','NAD_1983_2011_StatePlane_Vermont_FIPS_4400_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','1414','PROJCS["NAD_1983_2011_StatePlane_Vermont_FIPS_4400_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-72.5],PARAMETER["Scale_Factor",0.9999642857142857],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103174','NAD_1983_2011_StatePlane_Virginia_North_FIPS_4501',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2260','PROJCS["NAD_1983_2011_StatePlane_Virginia_North_FIPS_4501",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3500000.0],PARAMETER["False_Northing",2000000.0],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",38.03333333333333],PARAMETER["Standard_Parallel_2",39.2],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103175','NAD_1983_2011_StatePlane_Virginia_South_FIPS_4502',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2261','PROJCS["NAD_1983_2011_StatePlane_Virginia_South_FIPS_4502",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3500000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",36.76666666666667],PARAMETER["Standard_Parallel_2",37.96666666666667],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103176','NAD_1983_2011_StatePlane_Virginia_North_FIPS_4501_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2260','PROJCS["NAD_1983_2011_StatePlane_Virginia_North_FIPS_4501_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",11482916.66666666],PARAMETER["False_Northing",6561666.666666666],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",38.03333333333333],PARAMETER["Standard_Parallel_2",39.2],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103177','NAD_1983_2011_StatePlane_Virginia_South_FIPS_4502_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2261','PROJCS["NAD_1983_2011_StatePlane_Virginia_South_FIPS_4502_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",11482916.66666666],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",36.76666666666667],PARAMETER["Standard_Parallel_2",37.96666666666667],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103178','NAD_1983_2011_StatePlane_Washington_North_FIPS_4601',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2273','PROJCS["NAD_1983_2011_StatePlane_Washington_North_FIPS_4601",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.8333333333333],PARAMETER["Standard_Parallel_1",47.5],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103179','NAD_1983_2011_StatePlane_Washington_South_FIPS_4602',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2274','PROJCS["NAD_1983_2011_StatePlane_Washington_South_FIPS_4602",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",45.83333333333334],PARAMETER["Standard_Parallel_2",47.33333333333334],PARAMETER["Latitude_Of_Origin",45.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103180','NAD_1983_2011_StatePlane_Washington_North_FIPS_4601_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2273','PROJCS["NAD_1983_2011_StatePlane_Washington_North_FIPS_4601_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.8333333333333],PARAMETER["Standard_Parallel_1",47.5],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103181','NAD_1983_2011_StatePlane_Washington_South_FIPS_4602_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2274','PROJCS["NAD_1983_2011_StatePlane_Washington_South_FIPS_4602_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",45.83333333333334],PARAMETER["Standard_Parallel_2",47.33333333333334],PARAMETER["Latitude_Of_Origin",45.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103182','NAD_1983_2011_StatePlane_West_Virginia_North_FIPS_4701',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2264','PROJCS["NAD_1983_2011_StatePlane_West_Virginia_North_FIPS_4701",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-79.5],PARAMETER["Standard_Parallel_1",39.0],PARAMETER["Standard_Parallel_2",40.25],PARAMETER["Latitude_Of_Origin",38.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103183','NAD_1983_2011_StatePlane_West_Virginia_South_FIPS_4702',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2265','PROJCS["NAD_1983_2011_StatePlane_West_Virginia_South_FIPS_4702",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Standard_Parallel_1",37.48333333333333],PARAMETER["Standard_Parallel_2",38.88333333333333],PARAMETER["Latitude_Of_Origin",37.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103184','NAD_1983_2011_StatePlane_West_Virginia_North_FIPS_4701_FtUS',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2264','PROJCS["NAD_1983_2011_StatePlane_West_Virginia_North_FIPS_4701_FtUS",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-79.5],PARAMETER["Standard_Parallel_1",39.0],PARAMETER["Standard_Parallel_2",40.25],PARAMETER["Latitude_Of_Origin",38.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103185','NAD_1983_2011_StatePlane_West_Virginia_South_FIPS_4702_FtUS',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2265','PROJCS["NAD_1983_2011_StatePlane_West_Virginia_South_FIPS_4702_FtUS",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Standard_Parallel_1",37.48333333333333],PARAMETER["Standard_Parallel_2",38.88333333333333],PARAMETER["Latitude_Of_Origin",37.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103186','NAD_1983_2011_StatePlane_Wisconsin_North_FIPS_4801',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2267','PROJCS["NAD_1983_2011_StatePlane_Wisconsin_North_FIPS_4801",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",45.56666666666667],PARAMETER["Standard_Parallel_2",46.76666666666667],PARAMETER["Latitude_Of_Origin",45.16666666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103187','NAD_1983_2011_StatePlane_Wisconsin_Central_FIPS_4802',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2266','PROJCS["NAD_1983_2011_StatePlane_Wisconsin_Central_FIPS_4802",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",44.25],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103188','NAD_1983_2011_StatePlane_Wisconsin_South_FIPS_4803',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2268','PROJCS["NAD_1983_2011_StatePlane_Wisconsin_South_FIPS_4803",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",42.73333333333333],PARAMETER["Standard_Parallel_2",44.06666666666667],PARAMETER["Latitude_Of_Origin",42.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103189','NAD_1983_2011_StatePlane_Wisconsin_North_FIPS_4801_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2267','PROJCS["NAD_1983_2011_StatePlane_Wisconsin_North_FIPS_4801_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",45.56666666666667],PARAMETER["Standard_Parallel_2",46.76666666666667],PARAMETER["Latitude_Of_Origin",45.16666666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103190','NAD_1983_2011_StatePlane_Wisconsin_Central_FIPS_4802_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2266','PROJCS["NAD_1983_2011_StatePlane_Wisconsin_Central_FIPS_4802_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",44.25],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103191','NAD_1983_2011_StatePlane_Wisconsin_South_FIPS_4803_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2268','PROJCS["NAD_1983_2011_StatePlane_Wisconsin_South_FIPS_4803_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",42.73333333333333],PARAMETER["Standard_Parallel_2",44.06666666666667],PARAMETER["Latitude_Of_Origin",42.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103192','NAD_1983_2011_StatePlane_Wyoming_East_FIPS_4901',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2269','PROJCS["NAD_1983_2011_StatePlane_Wyoming_East_FIPS_4901",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-105.1666666666667],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103193','NAD_1983_2011_StatePlane_Wyoming_East_Central_FIPS_4902',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2270','PROJCS["NAD_1983_2011_StatePlane_Wyoming_East_Central_FIPS_4902",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-107.3333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103194','NAD_1983_2011_StatePlane_Wyoming_West_Central_FIPS_4903',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2272','PROJCS["NAD_1983_2011_StatePlane_Wyoming_West_Central_FIPS_4903",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-108.75],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103195','NAD_1983_2011_StatePlane_Wyoming_West_FIPS_4904',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2271','PROJCS["NAD_1983_2011_StatePlane_Wyoming_West_FIPS_4904",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-110.0833333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103196','NAD_1983_2011_StatePlane_Wyoming_East_FIPS_4901_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2269','PROJCS["NAD_1983_2011_StatePlane_Wyoming_East_FIPS_4901_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-105.1666666666667],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103197','NAD_1983_2011_StatePlane_Wyoming_E_Central_FIPS_4902_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2270','PROJCS["NAD_1983_2011_StatePlane_Wyoming_E_Central_FIPS_4902_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-107.3333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103198','NAD_1983_2011_StatePlane_Wyoming_W_Central_FIPS_4903_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2272','PROJCS["NAD_1983_2011_StatePlane_Wyoming_W_Central_FIPS_4903_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-108.75],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103199','NAD_1983_2011_StatePlane_Wyoming_West_FIPS_4904_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','2271','PROJCS["NAD_1983_2011_StatePlane_Wyoming_West_FIPS_4904_Ft_US",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-110.0833333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103200','NAD_1983_2011_StatePlane_Puerto_Rico_Virgin_Isls_FIPS_5200',NULL,NULL,NULL,NULL,'EPSG','6318',NULL,NULL,'EPSG','3634','PROJCS["NAD_1983_2011_StatePlane_Puerto_Rico_Virgin_Isls_FIPS_5200",GEOGCS["GCS_NAD_1983_2011",DATUM["D_NAD_1983_2011",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",200000.0],PARAMETER["Central_Meridian",-66.43333333333334],PARAMETER["Standard_Parallel_1",18.03333333333333],PARAMETER["Standard_Parallel_2",18.43333333333333],PARAMETER["Latitude_Of_Origin",17.83333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103201','RGRDC_2005_Congo_TM_Zone_12',NULL,NULL,NULL,NULL,'EPSG','4046',NULL,NULL,'EPSG','3937','PROJCS["RGRDC_2005_Congo_TM_Zone_12",GEOGCS["GCS_RGRDC_2005",DATUM["D_Reseau_Geodesique_de_la_RDC_2005",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",10000000.0],PARAMETER["Central_Meridian",12.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103202','RGRDC_2005_Congo_TM_Zone_14',NULL,NULL,NULL,NULL,'EPSG','4046',NULL,NULL,'EPSG','3151','PROJCS["RGRDC_2005_Congo_TM_Zone_14",GEOGCS["GCS_RGRDC_2005",DATUM["D_Reseau_Geodesique_de_la_RDC_2005",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",10000000.0],PARAMETER["Central_Meridian",14.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103203','RGRDC_2005_Congo_TM_Zone_16',NULL,NULL,NULL,NULL,'EPSG','4046',NULL,NULL,'EPSG','3617','PROJCS["RGRDC_2005_Congo_TM_Zone_16",GEOGCS["GCS_RGRDC_2005",DATUM["D_Reseau_Geodesique_de_la_RDC_2005",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",10000000.0],PARAMETER["Central_Meridian",16.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103204','RGRDC_2005_Congo_TM_Zone_18',NULL,NULL,NULL,NULL,'EPSG','4046',NULL,NULL,'EPSG','3618','PROJCS["RGRDC_2005_Congo_TM_Zone_18",GEOGCS["GCS_RGRDC_2005",DATUM["D_Reseau_Geodesique_de_la_RDC_2005",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",10000000.0],PARAMETER["Central_Meridian",18.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103205','RGRDC_2005_Congo_TM_Zone_20',NULL,NULL,NULL,NULL,'EPSG','4046',NULL,NULL,'EPSG','3620','PROJCS["RGRDC_2005_Congo_TM_Zone_20",GEOGCS["GCS_RGRDC_2005",DATUM["D_Reseau_Geodesique_de_la_RDC_2005",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",10000000.0],PARAMETER["Central_Meridian",20.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103206','RGRDC_2005_Congo_TM_Zone_22',NULL,NULL,NULL,NULL,'EPSG','4046',NULL,NULL,'EPSG','3621','PROJCS["RGRDC_2005_Congo_TM_Zone_22",GEOGCS["GCS_RGRDC_2005",DATUM["D_Reseau_Geodesique_de_la_RDC_2005",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",10000000.0],PARAMETER["Central_Meridian",22.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103207','RGRDC_2005_Congo_TM_Zone_24',NULL,NULL,NULL,NULL,'EPSG','4046',NULL,NULL,'EPSG','3622','PROJCS["RGRDC_2005_Congo_TM_Zone_24",GEOGCS["GCS_RGRDC_2005",DATUM["D_Reseau_Geodesique_de_la_RDC_2005",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",10000000.0],PARAMETER["Central_Meridian",24.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103208','RGRDC_2005_Congo_TM_Zone_26',NULL,NULL,NULL,NULL,'EPSG','4046',NULL,NULL,'EPSG','3623','PROJCS["RGRDC_2005_Congo_TM_Zone_26",GEOGCS["GCS_RGRDC_2005",DATUM["D_Reseau_Geodesique_de_la_RDC_2005",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",10000000.0],PARAMETER["Central_Meridian",26.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103209','RGRDC_2005_Congo_TM_Zone_28',NULL,NULL,NULL,NULL,'EPSG','4046',NULL,NULL,'EPSG','3624','PROJCS["RGRDC_2005_Congo_TM_Zone_28",GEOGCS["GCS_RGRDC_2005",DATUM["D_Reseau_Geodesique_de_la_RDC_2005",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",10000000.0],PARAMETER["Central_Meridian",28.0],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103210','RGRDC_2005_UTM_Zone_33S',NULL,NULL,NULL,NULL,'EPSG','4046',NULL,NULL,'EPSG','3626','PROJCS["RGRDC_2005_UTM_Zone_33S",GEOGCS["GCS_RGRDC_2005",DATUM["D_Reseau_Geodesique_de_la_RDC_2005",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",10000000.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103211','RGRDC_2005_UTM_Zone_34S',NULL,NULL,NULL,NULL,'EPSG','4046',NULL,NULL,'EPSG','3627','PROJCS["RGRDC_2005_UTM_Zone_34S",GEOGCS["GCS_RGRDC_2005",DATUM["D_Reseau_Geodesique_de_la_RDC_2005",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",10000000.0],PARAMETER["Central_Meridian",21.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103212','RGRDC_2005_UTM_Zone_35S',NULL,NULL,NULL,NULL,'EPSG','4046',NULL,NULL,'EPSG','3628','PROJCS["RGRDC_2005_UTM_Zone_35S",GEOGCS["GCS_RGRDC_2005",DATUM["D_Reseau_Geodesique_de_la_RDC_2005",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",10000000.0],PARAMETER["Central_Meridian",27.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103213','Chua_UTM_Zone_23S',NULL,NULL,NULL,NULL,'EPSG','4224',NULL,NULL,'EPSG','3619','PROJCS["Chua_UTM_Zone_23S",GEOGCS["GCS_Chua",DATUM["D_Chua",SPHEROID["International_1924",6378388.0,297.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",10000000.0],PARAMETER["Central_Meridian",-45.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103214','REGCAN95_UTM_Zone_27N',NULL,NULL,NULL,NULL,'EPSG','4081',NULL,NULL,'EPSG','3629','PROJCS["REGCAN95_UTM_Zone_27N",GEOGCS["GCS_REGCAN95",DATUM["D_Red_Geodesica_de_Canarias_1995",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-21.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103215','REGCAN95_UTM_Zone_28N',NULL,NULL,NULL,NULL,'EPSG','4081',NULL,NULL,'EPSG','3630','PROJCS["REGCAN95_UTM_Zone_28N",GEOGCS["GCS_REGCAN95",DATUM["D_Red_Geodesica_de_Canarias_1995",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103216','ETRS_1989_DKTM1',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'EPSG','3631','PROJCS["ETRS_1989_DKTM1",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",-5000000.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.99998],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103217','ETRS_1989_DKTM2',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'EPSG','3632','PROJCS["ETRS_1989_DKTM2",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",-5000000.0],PARAMETER["Central_Meridian",10.0],PARAMETER["Scale_Factor",0.99998],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103218','ETRS_1989_DKTM3',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'EPSG','2532','PROJCS["ETRS_1989_DKTM3",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",-5000000.0],PARAMETER["Central_Meridian",11.75],PARAMETER["Scale_Factor",0.99998],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103219','ETRS_1989_DKTM4',NULL,NULL,NULL,NULL,'EPSG','4258',NULL,NULL,'EPSG','2533','PROJCS["ETRS_1989_DKTM4",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",-5000000.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103220','NAD_1983_CORS96_StatePlane_Alabama_East_FIPS_0101',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2154','PROJCS["NAD_1983_CORS96_StatePlane_Alabama_East_FIPS_0101",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-85.83333333333333],PARAMETER["Scale_Factor",0.99996],PARAMETER["Latitude_Of_Origin",30.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103221','NAD_1983_CORS96_StatePlane_Alabama_West_FIPS_0102',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2155','PROJCS["NAD_1983_CORS96_StatePlane_Alabama_West_FIPS_0102",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103222','NAD_1983_CORS96_StatePlane_Arizona_East_FIPS_0201',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2167','PROJCS["NAD_1983_CORS96_StatePlane_Arizona_East_FIPS_0201",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",213360.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-110.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103223','NAD_1983_CORS96_StatePlane_Arizona_Central_FIPS_0202',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2166','PROJCS["NAD_1983_CORS96_StatePlane_Arizona_Central_FIPS_0202",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",213360.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-111.9166666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103224','NAD_1983_CORS96_StatePlane_Arizona_West_FIPS_0203',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2168','PROJCS["NAD_1983_CORS96_StatePlane_Arizona_West_FIPS_0203",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",213360.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-113.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103225','NAD_1983_CORS96_StatePlane_Arizona_East_FIPS_0201_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2167','PROJCS["NAD_1983_CORS96_StatePlane_Arizona_East_FIPS_0201_Ft_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-110.1666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Foot",0.3048]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103226','NAD_1983_CORS96_StatePlane_Arizona_Central_FIPS_0202_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2166','PROJCS["NAD_1983_CORS96_StatePlane_Arizona_Central_FIPS_0202_Ft_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-111.9166666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Foot",0.3048]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103227','NAD_1983_CORS96_StatePlane_Arizona_West_FIPS_0203_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2168','PROJCS["NAD_1983_CORS96_StatePlane_Arizona_West_FIPS_0203_Ft_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-113.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Foot",0.3048]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103228','NAD_1983_CORS96_StatePlane_Arkansas_North_FIPS_0301',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2169','PROJCS["NAD_1983_CORS96_StatePlane_Arkansas_North_FIPS_0301",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.0],PARAMETER["Standard_Parallel_1",34.93333333333333],PARAMETER["Standard_Parallel_2",36.23333333333333],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103229','NAD_1983_CORS96_StatePlane_Arkansas_South_FIPS_0302',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2170','PROJCS["NAD_1983_CORS96_StatePlane_Arkansas_South_FIPS_0302",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",400000.0],PARAMETER["Central_Meridian",-92.0],PARAMETER["Standard_Parallel_1",33.3],PARAMETER["Standard_Parallel_2",34.76666666666667],PARAMETER["Latitude_Of_Origin",32.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103230','NAD_1983_CORS96_StatePlane_Arkansas_North_FIPS_0301_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2169','PROJCS["NAD_1983_CORS96_StatePlane_Arkansas_North_FIPS_0301_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.0],PARAMETER["Standard_Parallel_1",34.93333333333333],PARAMETER["Standard_Parallel_2",36.23333333333333],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103231','NAD_1983_CORS96_StatePlane_Arkansas_South_FIPS_0302_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2170','PROJCS["NAD_1983_CORS96_StatePlane_Arkansas_South_FIPS_0302_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",1312333.333333333],PARAMETER["Central_Meridian",-92.0],PARAMETER["Standard_Parallel_1",33.3],PARAMETER["Standard_Parallel_2",34.76666666666667],PARAMETER["Latitude_Of_Origin",32.66666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103232','NAD_1983_CORS96_StatePlane_California_I_FIPS_0401',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2175','PROJCS["NAD_1983_CORS96_StatePlane_California_I_FIPS_0401",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-122.0],PARAMETER["Standard_Parallel_1",40.0],PARAMETER["Standard_Parallel_2",41.66666666666666],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103233','NAD_1983_CORS96_StatePlane_California_II_FIPS_0402',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2176','PROJCS["NAD_1983_CORS96_StatePlane_California_II_FIPS_0402",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-122.0],PARAMETER["Standard_Parallel_1",38.33333333333334],PARAMETER["Standard_Parallel_2",39.83333333333334],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103234','NAD_1983_CORS96_StatePlane_California_III_FIPS_0403',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2177','PROJCS["NAD_1983_CORS96_StatePlane_California_III_FIPS_0403",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",37.06666666666667],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103235','NAD_1983_CORS96_StatePlane_California_IV_FIPS_0404',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2178','PROJCS["NAD_1983_CORS96_StatePlane_California_IV_FIPS_0404",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-119.0],PARAMETER["Standard_Parallel_1",36.0],PARAMETER["Standard_Parallel_2",37.25],PARAMETER["Latitude_Of_Origin",35.33333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103236','NAD_1983_CORS96_StatePlane_California_V_FIPS_0405',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2182','PROJCS["NAD_1983_CORS96_StatePlane_California_V_FIPS_0405",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-118.0],PARAMETER["Standard_Parallel_1",34.03333333333333],PARAMETER["Standard_Parallel_2",35.46666666666667],PARAMETER["Latitude_Of_Origin",33.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103237','NAD_1983_CORS96_StatePlane_California_VI_FIPS_0406',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2180','PROJCS["NAD_1983_CORS96_StatePlane_California_VI_FIPS_0406",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-116.25],PARAMETER["Standard_Parallel_1",32.78333333333333],PARAMETER["Standard_Parallel_2",33.88333333333333],PARAMETER["Latitude_Of_Origin",32.16666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103238','NAD_1983_CORS96_StatePlane_California_I_FIPS_0401_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2175','PROJCS["NAD_1983_CORS96_StatePlane_California_I_FIPS_0401_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-122.0],PARAMETER["Standard_Parallel_1",40.0],PARAMETER["Standard_Parallel_2",41.66666666666666],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103239','NAD_1983_CORS96_StatePlane_California_II_FIPS_0402_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2176','PROJCS["NAD_1983_CORS96_StatePlane_California_II_FIPS_0402_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-122.0],PARAMETER["Standard_Parallel_1",38.33333333333334],PARAMETER["Standard_Parallel_2",39.83333333333334],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103240','NAD_1983_CORS96_StatePlane_California_III_FIPS_0403_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2177','PROJCS["NAD_1983_CORS96_StatePlane_California_III_FIPS_0403_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",37.06666666666667],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103241','NAD_1983_CORS96_StatePlane_California_IV_FIPS_0404_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2178','PROJCS["NAD_1983_CORS96_StatePlane_California_IV_FIPS_0404_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-119.0],PARAMETER["Standard_Parallel_1",36.0],PARAMETER["Standard_Parallel_2",37.25],PARAMETER["Latitude_Of_Origin",35.33333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103242','NAD_1983_CORS96_StatePlane_California_V_FIPS_0405_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2182','PROJCS["NAD_1983_CORS96_StatePlane_California_V_FIPS_0405_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-118.0],PARAMETER["Standard_Parallel_1",34.03333333333333],PARAMETER["Standard_Parallel_2",35.46666666666667],PARAMETER["Latitude_Of_Origin",33.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103243','NAD_1983_CORS96_StatePlane_California_VI_FIPS_0406_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2180','PROJCS["NAD_1983_CORS96_StatePlane_California_VI_FIPS_0406_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6561666.666666666],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-116.25],PARAMETER["Standard_Parallel_1",32.78333333333333],PARAMETER["Standard_Parallel_2",33.88333333333333],PARAMETER["Latitude_Of_Origin",32.16666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103244','NAD_1983_CORS96_StatePlane_Colorado_North_FIPS_0501',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2184','PROJCS["NAD_1983_CORS96_StatePlane_Colorado_North_FIPS_0501",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",914401.8289],PARAMETER["False_Northing",304800.6096],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",39.71666666666667],PARAMETER["Standard_Parallel_2",40.78333333333333],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103245','NAD_1983_CORS96_StatePlane_Colorado_Central_FIPS_0502',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2183','PROJCS["NAD_1983_CORS96_StatePlane_Colorado_Central_FIPS_0502",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",914401.8289],PARAMETER["False_Northing",304800.6096],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",38.45],PARAMETER["Standard_Parallel_2",39.75],PARAMETER["Latitude_Of_Origin",37.83333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103246','NAD_1983_CORS96_StatePlane_Colorado_South_FIPS_0503',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2185','PROJCS["NAD_1983_CORS96_StatePlane_Colorado_South_FIPS_0503",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",914401.8289],PARAMETER["False_Northing",304800.6096],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",37.23333333333333],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103247','NAD_1983_CORS96_StatePlane_Colorado_North_FIPS_0501_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2184','PROJCS["NAD_1983_CORS96_StatePlane_Colorado_North_FIPS_0501_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000.000316083],PARAMETER["False_Northing",999999.999996],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",39.71666666666667],PARAMETER["Standard_Parallel_2",40.78333333333333],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103248','NAD_1983_CORS96_StatePlane_Colorado_Central_FIPS_0502_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2183','PROJCS["NAD_1983_CORS96_StatePlane_Colorado_Central_FIPS_0502_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000.000316083],PARAMETER["False_Northing",999999.999996],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",38.45],PARAMETER["Standard_Parallel_2",39.75],PARAMETER["Latitude_Of_Origin",37.83333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103249','NAD_1983_CORS96_StatePlane_Colorado_South_FIPS_0503_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2185','PROJCS["NAD_1983_CORS96_StatePlane_Colorado_South_FIPS_0503_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3000000.000316083],PARAMETER["False_Northing",999999.999996],PARAMETER["Central_Meridian",-105.5],PARAMETER["Standard_Parallel_1",37.23333333333333],PARAMETER["Standard_Parallel_2",38.43333333333333],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103250','NAD_1983_CORS96_StatePlane_Connecticut_FIPS_0600',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1377','PROJCS["NAD_1983_CORS96_StatePlane_Connecticut_FIPS_0600",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",304800.6096],PARAMETER["False_Northing",152400.3048],PARAMETER["Central_Meridian",-72.75],PARAMETER["Standard_Parallel_1",41.2],PARAMETER["Standard_Parallel_2",41.86666666666667],PARAMETER["Latitude_Of_Origin",40.83333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103251','NAD_1983_CORS96_StatePlane_Connecticut_FIPS_0600_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1377','PROJCS["NAD_1983_CORS96_StatePlane_Connecticut_FIPS_0600_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",999999.999996],PARAMETER["False_Northing",499999.999998],PARAMETER["Central_Meridian",-72.75],PARAMETER["Standard_Parallel_1",41.2],PARAMETER["Standard_Parallel_2",41.86666666666667],PARAMETER["Latitude_Of_Origin",40.83333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103252','NAD_1983_CORS96_StatePlane_Delaware_FIPS_0700',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1378','PROJCS["NAD_1983_CORS96_StatePlane_Delaware_FIPS_0700",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-75.41666666666667],PARAMETER["Scale_Factor",0.999995],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103253','NAD_1983_CORS96_StatePlane_Delaware_FIPS_0700_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1378','PROJCS["NAD_1983_CORS96_StatePlane_Delaware_FIPS_0700_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-75.41666666666667],PARAMETER["Scale_Factor",0.999995],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103254','NAD_1983_CORS96_StatePlane_Florida_East_FIPS_0901',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2186','PROJCS["NAD_1983_CORS96_StatePlane_Florida_East_FIPS_0901",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103255','NAD_1983_CORS96_StatePlane_Florida_West_FIPS_0902',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2188','PROJCS["NAD_1983_CORS96_StatePlane_Florida_West_FIPS_0902",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.0],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103256','NAD_1983_CORS96_StatePlane_Florida_North_FIPS_0903',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2187','PROJCS["NAD_1983_CORS96_StatePlane_Florida_North_FIPS_0903",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.5],PARAMETER["Standard_Parallel_1",29.58333333333333],PARAMETER["Standard_Parallel_2",30.75],PARAMETER["Latitude_Of_Origin",29.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103257','NAD_1983_CORS96_StatePlane_Florida_East_FIPS_0901_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2186','PROJCS["NAD_1983_CORS96_StatePlane_Florida_East_FIPS_0901_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103258','NAD_1983_CORS96_StatePlane_Florida_West_FIPS_0902_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2188','PROJCS["NAD_1983_CORS96_StatePlane_Florida_West_FIPS_0902_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.0],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",24.33333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103259','NAD_1983_CORS96_StatePlane_Florida_North_FIPS_0903_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2187','PROJCS["NAD_1983_CORS96_StatePlane_Florida_North_FIPS_0903_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.5],PARAMETER["Standard_Parallel_1",29.58333333333333],PARAMETER["Standard_Parallel_2",30.75],PARAMETER["Latitude_Of_Origin",29.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103260','NAD_1983_CORS96_StatePlane_Georgia_East_FIPS_1001',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2189','PROJCS["NAD_1983_CORS96_StatePlane_Georgia_East_FIPS_1001",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103261','NAD_1983_CORS96_StatePlane_Georgia_West_FIPS_1002',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2190','PROJCS["NAD_1983_CORS96_StatePlane_Georgia_West_FIPS_1002",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103262','NAD_1983_CORS96_StatePlane_Georgia_East_FIPS_1001_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2189','PROJCS["NAD_1983_CORS96_StatePlane_Georgia_East_FIPS_1001_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103263','NAD_1983_CORS96_StatePlane_Georgia_West_FIPS_1002_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2190','PROJCS["NAD_1983_CORS96_StatePlane_Georgia_West_FIPS_1002_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2296583.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.16666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",30.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103264','NAD_1983_CORS96_StatePlane_Idaho_East_FIPS_1101',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2192','PROJCS["NAD_1983_CORS96_StatePlane_Idaho_East_FIPS_1101",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-112.1666666666667],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103265','NAD_1983_CORS96_StatePlane_Idaho_Central_FIPS_1102',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2191','PROJCS["NAD_1983_CORS96_StatePlane_Idaho_Central_FIPS_1102",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-114.0],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103266','NAD_1983_CORS96_StatePlane_Idaho_West_FIPS_1103',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2193','PROJCS["NAD_1983_CORS96_StatePlane_Idaho_West_FIPS_1103",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-115.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103267','NAD_1983_CORS96_StatePlane_Idaho_East_FIPS_1101_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2192','PROJCS["NAD_1983_CORS96_StatePlane_Idaho_East_FIPS_1101_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-112.1666666666667],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103268','NAD_1983_CORS96_StatePlane_Idaho_Central_FIPS_1102_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2191','PROJCS["NAD_1983_CORS96_StatePlane_Idaho_Central_FIPS_1102_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-114.0],PARAMETER["Scale_Factor",0.9999473684210526],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103269','NAD_1983_CORS96_StatePlane_Idaho_West_FIPS_1103_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2193','PROJCS["NAD_1983_CORS96_StatePlane_Idaho_West_FIPS_1103_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-115.75],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",41.66666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103270','NAD_1983_CORS96_StatePlane_Illinois_East_FIPS_1201',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2194','PROJCS["NAD_1983_CORS96_StatePlane_Illinois_East_FIPS_1201",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.33333333333333],PARAMETER["Scale_Factor",0.999975],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103271','NAD_1983_CORS96_StatePlane_Illinois_West_FIPS_1202',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2195','PROJCS["NAD_1983_CORS96_StatePlane_Illinois_West_FIPS_1202",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.16666666666667],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103272','NAD_1983_CORS96_StatePlane_Illinois_East_FIPS_1201_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2194','PROJCS["NAD_1983_CORS96_StatePlane_Illinois_East_FIPS_1201_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",984250.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.33333333333333],PARAMETER["Scale_Factor",0.999975],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103273','NAD_1983_CORS96_StatePlane_Illinois_West_FIPS_1202_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2195','PROJCS["NAD_1983_CORS96_StatePlane_Illinois_West_FIPS_1202_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2296583.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.16666666666667],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103274','NAD_1983_CORS96_StatePlane_Indiana_East_FIPS_1301',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2196','PROJCS["NAD_1983_CORS96_StatePlane_Indiana_East_FIPS_1301",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",100000.0],PARAMETER["False_Northing",250000.0],PARAMETER["Central_Meridian",-85.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103275','NAD_1983_CORS96_StatePlane_Indiana_West_FIPS_1302',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2197','PROJCS["NAD_1983_CORS96_StatePlane_Indiana_West_FIPS_1302",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",900000.0],PARAMETER["False_Northing",250000.0],PARAMETER["Central_Meridian",-87.08333333333333],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103276','NAD_1983_CORS96_StatePlane_Indiana_East_FIPS_1301_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2196','PROJCS["NAD_1983_CORS96_StatePlane_Indiana_East_FIPS_1301_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",328083.3333333333],PARAMETER["False_Northing",820208.3333333333],PARAMETER["Central_Meridian",-85.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103277','NAD_1983_CORS96_StatePlane_Indiana_West_FIPS_1302_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2197','PROJCS["NAD_1983_CORS96_StatePlane_Indiana_West_FIPS_1302_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2952750.0],PARAMETER["False_Northing",820208.3333333333],PARAMETER["Central_Meridian",-87.08333333333333],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103278','NAD_1983_CORS96_StatePlane_Iowa_North_FIPS_1401',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2198','PROJCS["NAD_1983_CORS96_StatePlane_Iowa_North_FIPS_1401",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1500000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-93.5],PARAMETER["Standard_Parallel_1",42.06666666666667],PARAMETER["Standard_Parallel_2",43.26666666666667],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103279','NAD_1983_CORS96_StatePlane_Iowa_South_FIPS_1402',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2199','PROJCS["NAD_1983_CORS96_StatePlane_Iowa_South_FIPS_1402",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-93.5],PARAMETER["Standard_Parallel_1",40.61666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103280','NAD_1983_CORS96_StatePlane_Iowa_North_FIPS_1401_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2198','PROJCS["NAD_1983_CORS96_StatePlane_Iowa_North_FIPS_1401_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",4921250.0],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-93.5],PARAMETER["Standard_Parallel_1",42.06666666666667],PARAMETER["Standard_Parallel_2",43.26666666666667],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103281','NAD_1983_CORS96_StatePlane_Iowa_South_FIPS_1402_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2199','PROJCS["NAD_1983_CORS96_StatePlane_Iowa_South_FIPS_1402_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-93.5],PARAMETER["Standard_Parallel_1",40.61666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103282','NAD_1983_CORS96_StatePlane_Kansas_North_FIPS_1501',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2200','PROJCS["NAD_1983_CORS96_StatePlane_Kansas_North_FIPS_1501",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-98.0],PARAMETER["Standard_Parallel_1",38.71666666666667],PARAMETER["Standard_Parallel_2",39.78333333333333],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103283','NAD_1983_CORS96_StatePlane_Kansas_South_FIPS_1502',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2201','PROJCS["NAD_1983_CORS96_StatePlane_Kansas_South_FIPS_1502",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",400000.0],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",37.26666666666667],PARAMETER["Standard_Parallel_2",38.56666666666667],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103284','NAD_1983_CORS96_StatePlane_Kansas_North_FIPS_1501_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2200','PROJCS["NAD_1983_CORS96_StatePlane_Kansas_North_FIPS_1501_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-98.0],PARAMETER["Standard_Parallel_1",38.71666666666667],PARAMETER["Standard_Parallel_2",39.78333333333333],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103285','NAD_1983_CORS96_StatePlane_Kansas_South_FIPS_1502_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2201','PROJCS["NAD_1983_CORS96_StatePlane_Kansas_South_FIPS_1502_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",1312333.333333333],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",37.26666666666667],PARAMETER["Standard_Parallel_2",38.56666666666667],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103286','NAD_1983_CORS96_StatePlane_Kentucky_North_FIPS_1601',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2202','PROJCS["NAD_1983_CORS96_StatePlane_Kentucky_North_FIPS_1601",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.25],PARAMETER["Standard_Parallel_1",37.96666666666667],PARAMETER["Standard_Parallel_2",38.96666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103287','NAD_1983_CORS96_StatePlane_Kentucky_North_FIPS_1601_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2202','PROJCS["NAD_1983_CORS96_StatePlane_Kentucky_North_FIPS_1601_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.25],PARAMETER["Standard_Parallel_1",37.96666666666667],PARAMETER["Standard_Parallel_2",38.96666666666667],PARAMETER["Latitude_Of_Origin",37.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103288','NAD_1983_CORS96_StatePlane_Kentucky_FIPS_1600',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1386','PROJCS["NAD_1983_CORS96_StatePlane_Kentucky_FIPS_1600",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1500000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-85.75],PARAMETER["Standard_Parallel_1",37.08333333333334],PARAMETER["Standard_Parallel_2",38.66666666666666],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103289','NAD_1983_CORS96_StatePlane_Kentucky_FIPS_1600_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1386','PROJCS["NAD_1983_CORS96_StatePlane_Kentucky_FIPS_1600_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",4921250.0],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-85.75],PARAMETER["Standard_Parallel_1",37.08333333333334],PARAMETER["Standard_Parallel_2",38.66666666666666],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103290','NAD_1983_CORS96_StatePlane_Kentucky_South_FIPS_1602',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2203','PROJCS["NAD_1983_CORS96_StatePlane_Kentucky_South_FIPS_1602",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",500000.0],PARAMETER["Central_Meridian",-85.75],PARAMETER["Standard_Parallel_1",36.73333333333333],PARAMETER["Standard_Parallel_2",37.93333333333333],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103291','NAD_1983_CORS96_StatePlane_Kentucky_South_FIPS_1602_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2203','PROJCS["NAD_1983_CORS96_StatePlane_Kentucky_South_FIPS_1602_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",1640416.666666667],PARAMETER["Central_Meridian",-85.75],PARAMETER["Standard_Parallel_1",36.73333333333333],PARAMETER["Standard_Parallel_2",37.93333333333333],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103292','NAD_1983_CORS96_StatePlane_Louisiana_North_FIPS_1701',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2204','PROJCS["NAD_1983_CORS96_StatePlane_Louisiana_North_FIPS_1701",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.5],PARAMETER["Standard_Parallel_1",31.16666666666667],PARAMETER["Standard_Parallel_2",32.66666666666666],PARAMETER["Latitude_Of_Origin",30.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103293','NAD_1983_CORS96_StatePlane_Louisiana_South_FIPS_1702',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2529','PROJCS["NAD_1983_CORS96_StatePlane_Louisiana_South_FIPS_1702",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.33333333333333],PARAMETER["Standard_Parallel_1",29.3],PARAMETER["Standard_Parallel_2",30.7],PARAMETER["Latitude_Of_Origin",28.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103294','NAD_1983_CORS96_StatePlane_Louisiana_North_FIPS_1701_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2204','PROJCS["NAD_1983_CORS96_StatePlane_Louisiana_North_FIPS_1701_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3280833.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.5],PARAMETER["Standard_Parallel_1",31.16666666666667],PARAMETER["Standard_Parallel_2",32.66666666666666],PARAMETER["Latitude_Of_Origin",30.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103295','NAD_1983_CORS96_StatePlane_Louisiana_South_FIPS_1702_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2529','PROJCS["NAD_1983_CORS96_StatePlane_Louisiana_South_FIPS_1702_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3280833.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.33333333333333],PARAMETER["Standard_Parallel_1",29.3],PARAMETER["Standard_Parallel_2",30.7],PARAMETER["Latitude_Of_Origin",28.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103296','NAD_1983_CORS96_StatePlane_Maine_East_FIPS_1801',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2206','PROJCS["NAD_1983_CORS96_StatePlane_Maine_East_FIPS_1801",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-68.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103297','NAD_1983_CORS96_StatePlane_Maine_West_FIPS_1802',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2207','PROJCS["NAD_1983_CORS96_StatePlane_Maine_West_FIPS_1802",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",900000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-70.16666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.83333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103298','NAD_1983_CORS96_StatePlane_Maine_East_FIPS_1801_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2206','PROJCS["NAD_1983_CORS96_StatePlane_Maine_East_FIPS_1801_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",984250.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-68.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",43.66666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103299','NAD_1983_CORS96_StatePlane_Maine_West_FIPS_1802_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2207','PROJCS["NAD_1983_CORS96_StatePlane_Maine_West_FIPS_1802_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2952750.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-70.16666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.83333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103300','NAD_1983_HARN_WISCRS_Adams_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Adams_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",147218.6942],PARAMETER["False_Northing",0.0037],PARAMETER["Central_Meridian",-90.0],PARAMETER["Scale_Factor",1.0000365285],PARAMETER["Latitude_Of_Origin",43.36666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103301','NAD_1983_HARN_WISCRS_Ashland_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Ashland_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",172821.9461],PARAMETER["False_Northing",0.0017],PARAMETER["Central_Meridian",-90.62222222222222],PARAMETER["Scale_Factor",1.0000495683],PARAMETER["Latitude_Of_Origin",45.70611111111111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103302','NAD_1983_HARN_WISCRS_Barron_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Barron_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",93150.0],PARAMETER["False_Northing",0.0029],PARAMETER["Central_Meridian",-91.85],PARAMETER["Scale_Factor",1.0000486665],PARAMETER["Latitude_Of_Origin",45.13333333333333],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103303','NAD_1983_HARN_WISCRS_Bayfield_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Bayfield_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",228600.4575],PARAMETER["False_Northing",148551.4837],PARAMETER["Central_Meridian",-91.15277777777779],PARAMETER["Standard_Parallel_1",46.66964837722222],PARAMETER["Scale_Factor",1.0000331195],PARAMETER["Latitude_Of_Origin",46.66964837722222],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103304','NAD_1983_HARN_WISCRS_Brown_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Brown_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",31600.0],PARAMETER["False_Northing",4600.0],PARAMETER["Central_Meridian",-88.0],PARAMETER["Scale_Factor",1.00002],PARAMETER["Latitude_Of_Origin",43.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103305','NAD_1983_HARN_WISCRS_Buffalo_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Buffalo_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",175260.3502],PARAMETER["False_Northing",0.0048],PARAMETER["Central_Meridian",-91.79722222222222],PARAMETER["Scale_Factor",1.0000382778],PARAMETER["Latitude_Of_Origin",43.48138888888889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103306','NAD_1983_HARN_WISCRS_Burnett_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Burnett_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",64008.1276],PARAMETER["False_Northing",59445.9043],PARAMETER["Central_Meridian",-92.45777777777778],PARAMETER["Standard_Parallel_1",45.89871486583333],PARAMETER["Scale_Factor",1.0000383841],PARAMETER["Latitude_Of_Origin",45.89871486583333],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103307','NAD_1983_HARN_WISCRS_Calumet_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Calumet_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",244754.8893],PARAMETER["False_Northing",0.0049],PARAMETER["Central_Meridian",-88.5],PARAMETER["Scale_Factor",1.0000286569],PARAMETER["Latitude_Of_Origin",42.71944444444445],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103308','NAD_1983_HARN_WISCRS_Chippewa_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Chippewa_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",60045.72],PARAMETER["False_Northing",44091.4346],PARAMETER["Central_Meridian",-91.29444444444444],PARAMETER["Standard_Parallel_1",44.97785689861112],PARAMETER["Scale_Factor",1.0000391127],PARAMETER["Latitude_Of_Origin",44.97785689861112],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103309','NAD_1983_HARN_WISCRS_Clark_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Clark_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",199949.1989],PARAMETER["False_Northing",0.0086],PARAMETER["Central_Meridian",-90.70833333333334],PARAMETER["Scale_Factor",1.0000463003],PARAMETER["Latitude_Of_Origin",43.6],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103310','NAD_1983_HARN_WISCRS_Columbia_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Columbia_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",169164.3381],PARAMETER["False_Northing",111569.6134],PARAMETER["Central_Meridian",-89.39444444444445],PARAMETER["Standard_Parallel_1",43.46254664583333],PARAMETER["Scale_Factor",1.00003498],PARAMETER["Latitude_Of_Origin",43.46254664583333],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103311','NAD_1983_HARN_WISCRS_Crawford_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Crawford_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",113690.6274],PARAMETER["False_Northing",53703.1201],PARAMETER["Central_Meridian",-90.9388888888889],PARAMETER["Standard_Parallel_1",43.200055605],PARAMETER["Scale_Factor",1.0000349151],PARAMETER["Latitude_Of_Origin",43.200055605],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103312','NAD_1983_HARN_WISCRS_Dane_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Dane_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",247193.2944],PARAMETER["False_Northing",146591.9896],PARAMETER["Central_Meridian",-89.42222222222223],PARAMETER["Standard_Parallel_1",43.0695160375],PARAMETER["Scale_Factor",1.0000384786],PARAMETER["Latitude_Of_Origin",43.0695160375],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103313','NAD_1983_HARN_WISCRS_Dodge_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Dodge_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",263347.7263],PARAMETER["False_Northing",0.0076],PARAMETER["Central_Meridian",-88.775],PARAMETER["Scale_Factor",1.0000346418],PARAMETER["Latitude_Of_Origin",41.47222222222222],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103314','NAD_1983_HARN_WISCRS_Door_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Door_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",158801.1176],PARAMETER["False_Northing",0.0023],PARAMETER["Central_Meridian",-87.27222222222223],PARAMETER["Scale_Factor",1.0000187521],PARAMETER["Latitude_Of_Origin",44.4],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103315','NAD_1983_HARN_WISCRS_Douglas_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Douglas_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",59131.3183],PARAMETER["False_Northing",0.0041],PARAMETER["Central_Meridian",-91.91666666666667],PARAMETER["Scale_Factor",1.0000385418],PARAMETER["Latitude_Of_Origin",45.88333333333333],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103316','NAD_1983_HARN_WISCRS_Dunn_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Dunn_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",51816.104],PARAMETER["False_Northing",0.003],PARAMETER["Central_Meridian",-91.89444444444445],PARAMETER["Scale_Factor",1.0000410324],PARAMETER["Latitude_Of_Origin",44.40833333333333],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103317','NAD_1983_HARN_WISCRS_EauClaire_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_EauClaire_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",120091.4402],PARAMETER["False_Northing",91687.9239],PARAMETER["Central_Meridian",-91.28888888888889],PARAMETER["Standard_Parallel_1",44.87228112638889],PARAMETER["Scale_Factor",1.000035079],PARAMETER["Latitude_Of_Origin",44.87228112638889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103318','NAD_1983_HARN_WISCRS_Florence_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Florence_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",133502.6683],PARAMETER["False_Northing",0.0063],PARAMETER["Central_Meridian",-88.14166666666668],PARAMETER["Scale_Factor",1.0000552095],PARAMETER["Latitude_Of_Origin",45.43888888888888],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103319','NAD_1983_HARN_WISCRS_Fond_du_Lac_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Fond_du_Lac_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",244754.8893],PARAMETER["False_Northing",0.0049],PARAMETER["Central_Meridian",-88.5],PARAMETER["Scale_Factor",1.0000286569],PARAMETER["Latitude_Of_Origin",42.71944444444445],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103320','NAD_1983_HARN_WISCRS_Forest_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Forest_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",275844.5533],PARAMETER["False_Northing",0.0157],PARAMETER["Central_Meridian",-88.63333333333334],PARAMETER["Scale_Factor",1.0000673004],PARAMETER["Latitude_Of_Origin",44.00555555555555],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103321','NAD_1983_HARN_WISCRS_Grant_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Grant_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",242316.4841],PARAMETER["False_Northing",0.01],PARAMETER["Central_Meridian",-90.8],PARAMETER["Scale_Factor",1.0000349452],PARAMETER["Latitude_Of_Origin",41.41111111111111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103322','NAD_1983_HARN_WISCRS_Green_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Green_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",170078.7403],PARAMETER["False_Northing",45830.2947],PARAMETER["Central_Meridian",-89.83888888888889],PARAMETER["Standard_Parallel_1",42.63756227694444],PARAMETER["Scale_Factor",1.0000390487],PARAMETER["Latitude_Of_Origin",42.63756227694444],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103323','NAD_1983_HARN_WISCRS_GreenLake_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_GreenLake_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",150876.3018],PARAMETER["False_Northing",79170.7795],PARAMETER["Central_Meridian",-89.24166666666667],PARAMETER["Standard_Parallel_1",43.80700011777778],PARAMETER["Scale_Factor",1.0000344057],PARAMETER["Latitude_Of_Origin",43.80700011777778],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103324','NAD_1983_HARN_WISCRS_Iowa_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Iowa_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",113081.0261],PARAMETER["False_Northing",0.0045],PARAMETER["Central_Meridian",-90.16111111111111],PARAMETER["Scale_Factor",1.0000394961],PARAMETER["Latitude_Of_Origin",42.53888888888888],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103325','NAD_1983_HARN_WISCRS_Iron_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Iron_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",220980.4419],PARAMETER["False_Northing",0.0085],PARAMETER["Central_Meridian",-90.25555555555556],PARAMETER["Scale_Factor",1.0000677153],PARAMETER["Latitude_Of_Origin",45.43333333333333],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103326','NAD_1983_HARN_WISCRS_Jackson_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Jackson_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",27000.0],PARAMETER["False_Northing",25000.0],PARAMETER["Central_Meridian",-90.84429651944444],PARAMETER["Scale_Factor",1.0000353],PARAMETER["Latitude_Of_Origin",44.25333512777778],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103327','NAD_1983_HARN_WISCRS_Jefferson_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Jefferson_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",263347.7263],PARAMETER["False_Northing",0.0076],PARAMETER["Central_Meridian",-88.775],PARAMETER["Scale_Factor",1.0000346418],PARAMETER["Latitude_Of_Origin",41.47222222222222],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103328','NAD_1983_HARN_WISCRS_Juneau_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Juneau_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",147218.6942],PARAMETER["False_Northing",0.0037],PARAMETER["Central_Meridian",-90.0],PARAMETER["Scale_Factor",1.0000365285],PARAMETER["Latitude_Of_Origin",43.36666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103329','NAD_1983_HARN_WISCRS_Kenosha_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Kenosha_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",185928.3728],PARAMETER["False_Northing",0.0009],PARAMETER["Central_Meridian",-87.89444444444445],PARAMETER["Scale_Factor",1.0000260649],PARAMETER["Latitude_Of_Origin",42.21666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103330','NAD_1983_HARN_WISCRS_Kewaunee_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Kewaunee_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",79857.7614],PARAMETER["False_Northing",0.0012],PARAMETER["Central_Meridian",-87.55],PARAMETER["Scale_Factor",1.0000233704],PARAMETER["Latitude_Of_Origin",43.26666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103331','NAD_1983_HARN_WISCRS_LaCrosse_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_LaCrosse_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",130454.6598],PARAMETER["False_Northing",0.0033],PARAMETER["Central_Meridian",-91.31666666666666],PARAMETER["Scale_Factor",1.0000319985],PARAMETER["Latitude_Of_Origin",43.45111111111111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103332','NAD_1983_HARN_WISCRS_Lafayette_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Lafayette_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",170078.7403],PARAMETER["False_Northing",45830.2947],PARAMETER["Central_Meridian",-89.83888888888889],PARAMETER["Standard_Parallel_1",42.63756227694444],PARAMETER["Scale_Factor",1.0000390487],PARAMETER["Latitude_Of_Origin",42.63756227694444],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103333','NAD_1983_HARN_WISCRS_Langlade_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Langlade_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",198425.197],PARAMETER["False_Northing",105279.7829],PARAMETER["Central_Meridian",-89.03333333333333],PARAMETER["Standard_Parallel_1",45.15423710527778],PARAMETER["Scale_Factor",1.0000627024],PARAMETER["Latitude_Of_Origin",45.15423710527778],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103334','NAD_1983_HARN_WISCRS_Lincoln_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Lincoln_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",116129.0323],PARAMETER["False_Northing",0.0058],PARAMETER["Central_Meridian",-89.73333333333333],PARAMETER["Scale_Factor",1.0000599003],PARAMETER["Latitude_Of_Origin",44.84444444444445],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103335','NAD_1983_HARN_WISCRS_Manitowoc_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Manitowoc_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",79857.7614],PARAMETER["False_Northing",0.0012],PARAMETER["Central_Meridian",-87.55],PARAMETER["Scale_Factor",1.0000233704],PARAMETER["Latitude_Of_Origin",43.26666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103336','NAD_1983_HARN_WISCRS_Marathon_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Marathon_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",74676.1493],PARAMETER["False_Northing",55049.2669],PARAMETER["Central_Meridian",-89.77],PARAMETER["Standard_Parallel_1",44.90090442361111],PARAMETER["Scale_Factor",1.000053289],PARAMETER["Latitude_Of_Origin",44.90090442361111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103337','NAD_1983_HARN_WISCRS_Marinette_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Marinette_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",238658.8794],PARAMETER["False_Northing",0.0032],PARAMETER["Central_Meridian",-87.71111111111111],PARAMETER["Scale_Factor",1.0000234982],PARAMETER["Latitude_Of_Origin",44.69166666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103338','NAD_1983_HARN_WISCRS_Marquette_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Marquette_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",150876.3018],PARAMETER["False_Northing",79170.7795],PARAMETER["Central_Meridian",-89.24166666666667],PARAMETER["Standard_Parallel_1",43.80700011777778],PARAMETER["Scale_Factor",1.0000344057],PARAMETER["Latitude_Of_Origin",43.80700011777778],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103339','NAD_1983_HARN_WISCRS_Menominee_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Menominee_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",105461.0121],PARAMETER["False_Northing",0.0029],PARAMETER["Central_Meridian",-88.41666666666667],PARAMETER["Scale_Factor",1.0000362499],PARAMETER["Latitude_Of_Origin",44.71666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103340','NAD_1983_HARN_WISCRS_Milwaukee_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Milwaukee_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",185928.3728],PARAMETER["False_Northing",0.0009],PARAMETER["Central_Meridian",-87.89444444444445],PARAMETER["Scale_Factor",1.0000260649],PARAMETER["Latitude_Of_Origin",42.21666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103341','NAD_1983_HARN_WISCRS_Monroe_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Monroe_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",204521.209],PARAMETER["False_Northing",121923.9861],PARAMETER["Central_Meridian",-90.64166666666668],PARAMETER["Standard_Parallel_1",44.00007392861111],PARAMETER["Scale_Factor",1.0000434122],PARAMETER["Latitude_Of_Origin",44.00007392861111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103342','NAD_1983_HARN_WISCRS_Oconto_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Oconto_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",182880.3676],PARAMETER["False_Northing",0.0033],PARAMETER["Central_Meridian",-87.90833333333335],PARAMETER["Scale_Factor",1.0000236869],PARAMETER["Latitude_Of_Origin",44.39722222222222],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103343','NAD_1983_HARN_WISCRS_Oneida_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Oneida_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",70104.1401],PARAMETER["False_Northing",57588.0346],PARAMETER["Central_Meridian",-89.54444444444444],PARAMETER["Standard_Parallel_1",45.70422377027778],PARAMETER["Scale_Factor",1.0000686968],PARAMETER["Latitude_Of_Origin",45.70422377027778],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103344','NAD_1983_HARN_WISCRS_Outagamie_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Outagamie_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",244754.8893],PARAMETER["False_Northing",0.0049],PARAMETER["Central_Meridian",-88.5],PARAMETER["Scale_Factor",1.0000286569],PARAMETER["Latitude_Of_Origin",42.71944444444445],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103345','NAD_1983_HARN_WISCRS_Ozaukee_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Ozaukee_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",185928.3728],PARAMETER["False_Northing",0.0009],PARAMETER["Central_Meridian",-87.89444444444445],PARAMETER["Scale_Factor",1.0000260649],PARAMETER["Latitude_Of_Origin",42.21666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103346','NAD_1983_HARN_WISCRS_Pepin_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Pepin_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",167640.3354],PARAMETER["False_Northing",86033.0876],PARAMETER["Central_Meridian",-92.22777777777777],PARAMETER["Standard_Parallel_1",44.63614887194444],PARAMETER["Scale_Factor",1.0000362977],PARAMETER["Latitude_Of_Origin",44.63614887194444],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103347','NAD_1983_HARN_WISCRS_Pierce_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Pierce_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",167640.3354],PARAMETER["False_Northing",86033.0876],PARAMETER["Central_Meridian",-92.22777777777777],PARAMETER["Standard_Parallel_1",44.63614887194444],PARAMETER["Scale_Factor",1.0000362977],PARAMETER["Latitude_Of_Origin",44.63614887194444],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103348','NAD_1983_HARN_WISCRS_Polk_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Polk_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",141732.2823],PARAMETER["False_Northing",0.0059],PARAMETER["Central_Meridian",-92.63333333333334],PARAMETER["Scale_Factor",1.0000433849],PARAMETER["Latitude_Of_Origin",44.66111111111111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103349','NAD_1983_HARN_WISCRS_Portage_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Portage_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",56388.1128],PARAMETER["False_Northing",50022.1874],PARAMETER["Central_Meridian",-89.5],PARAMETER["Standard_Parallel_1",44.41682397527777],PARAMETER["Scale_Factor",1.000039936],PARAMETER["Latitude_Of_Origin",44.41682397527777],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103350','NAD_1983_HARN_WISCRS_Price_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Price_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",227990.8546],PARAMETER["False_Northing",0.0109],PARAMETER["Central_Meridian",-90.48888888888889],PARAMETER["Scale_Factor",1.0000649554],PARAMETER["Latitude_Of_Origin",44.55555555555555],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103351','NAD_1983_HARN_WISCRS_Racine_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Racine_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",185928.3728],PARAMETER["False_Northing",0.0009],PARAMETER["Central_Meridian",-87.89444444444445],PARAMETER["Scale_Factor",1.0000260649],PARAMETER["Latitude_Of_Origin",42.21666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103352','NAD_1983_HARN_WISCRS_Richland_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Richland_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",202387.6048],PARAMETER["False_Northing",134255.4253],PARAMETER["Central_Meridian",-90.43055555555556],PARAMETER["Standard_Parallel_1",43.3223129275],PARAMETER["Scale_Factor",1.0000375653],PARAMETER["Latitude_Of_Origin",43.3223129275],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103353','NAD_1983_HARN_WISCRS_Rock_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Rock_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",146304.2926],PARAMETER["False_Northing",0.0068],PARAMETER["Central_Meridian",-89.07222222222222],PARAMETER["Scale_Factor",1.0000337311],PARAMETER["Latitude_Of_Origin",41.94444444444444],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103354','NAD_1983_HARN_WISCRS_Rusk_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Rusk_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",250546.1013],PARAMETER["False_Northing",0.0234],PARAMETER["Central_Meridian",-91.06666666666666],PARAMETER["Scale_Factor",1.0000495976],PARAMETER["Latitude_Of_Origin",43.91944444444444],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103355','NAD_1983_HARN_WISCRS_Sauk_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Sauk_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",185623.5716],PARAMETER["False_Northing",0.0051],PARAMETER["Central_Meridian",-89.9],PARAMETER["Scale_Factor",1.0000373868],PARAMETER["Latitude_Of_Origin",42.81944444444445],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103356','NAD_1983_HARN_WISCRS_Sawyer_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Sawyer_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",216713.2336],PARAMETER["False_Northing",120734.1631],PARAMETER["Central_Meridian",-91.11666666666666],PARAMETER["Standard_Parallel_1",45.90009913138888],PARAMETER["Scale_Factor",1.0000573461],PARAMETER["Latitude_Of_Origin",45.90009913138888],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103357','NAD_1983_HARN_WISCRS_Shawano_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Shawano_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",262433.3253],PARAMETER["False_Northing",0.0096],PARAMETER["Central_Meridian",-88.60555555555555],PARAMETER["Scale_Factor",1.000032144],PARAMETER["Latitude_Of_Origin",44.03611111111111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103358','NAD_1983_HARN_WISCRS_Sheboygan_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Sheboygan_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",79857.7614],PARAMETER["False_Northing",0.0012],PARAMETER["Central_Meridian",-87.55],PARAMETER["Scale_Factor",1.0000233704],PARAMETER["Latitude_Of_Origin",43.26666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103359','NAD_1983_HARN_WISCRS_St_Croix_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_St_Croix_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",165506.7302],PARAMETER["False_Northing",0.0103],PARAMETER["Central_Meridian",-92.63333333333334],PARAMETER["Scale_Factor",1.0000381803],PARAMETER["Latitude_Of_Origin",44.03611111111111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103360','NAD_1983_HARN_WISCRS_Taylor_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Taylor_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",187147.5744],PARAMETER["False_Northing",107746.7522],PARAMETER["Central_Meridian",-90.48333333333333],PARAMETER["Standard_Parallel_1",45.17782208583333],PARAMETER["Scale_Factor",1.0000597566],PARAMETER["Latitude_Of_Origin",45.17782208583333],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103361','NAD_1983_HARN_WISCRS_Trempealeau_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Trempealeau_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",256946.9138],PARAMETER["False_Northing",0.0041],PARAMETER["Central_Meridian",-91.36666666666666],PARAMETER["Scale_Factor",1.0000361538],PARAMETER["Latitude_Of_Origin",43.16111111111111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103362','NAD_1983_HARN_WISCRS_Vernon_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Vernon_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",222504.4451],PARAMETER["False_Northing",47532.0602],PARAMETER["Central_Meridian",-90.78333333333333],PARAMETER["Standard_Parallel_1",43.57503293972223],PARAMETER["Scale_Factor",1.0000408158],PARAMETER["Latitude_Of_Origin",43.57503293972223],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103363','NAD_1983_HARN_WISCRS_Vilas_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Vilas_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",134417.0689],PARAMETER["False_Northing",50337.1092],PARAMETER["Central_Meridian",-89.48888888888889],PARAMETER["Standard_Parallel_1",46.07784409055556],PARAMETER["Scale_Factor",1.0000730142],PARAMETER["Latitude_Of_Origin",46.07784409055556],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103364','NAD_1983_HARN_WISCRS_Walworth_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Walworth_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",232562.8651],PARAMETER["False_Northing",111088.2224],PARAMETER["Central_Meridian",-88.54166666666667],PARAMETER["Standard_Parallel_1",42.66946209694444],PARAMETER["Scale_Factor",1.0000367192],PARAMETER["Latitude_Of_Origin",42.66946209694444],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103365','NAD_1983_HARN_WISCRS_Washburn_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Washburn_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",234086.8682],PARAMETER["False_Northing",188358.6058],PARAMETER["Central_Meridian",-91.78333333333333],PARAMETER["Standard_Parallel_1",45.96121983333334],PARAMETER["Scale_Factor",1.0000475376],PARAMETER["Latitude_Of_Origin",45.96121983333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103366','NAD_1983_HARN_WISCRS_Washington_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Washington_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",120091.4415],PARAMETER["False_Northing",0.003],PARAMETER["Central_Meridian",-88.06388888888888],PARAMETER["Scale_Factor",1.00003738],PARAMETER["Latitude_Of_Origin",42.91805555555555],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103367','NAD_1983_HARN_WISCRS_Waukesha_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Waukesha_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",208788.418],PARAMETER["False_Northing",0.0034],PARAMETER["Central_Meridian",-88.225],PARAMETER["Scale_Factor",1.0000346179],PARAMETER["Latitude_Of_Origin",42.56944444444445],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103368','NAD_1983_HARN_WISCRS_Waupaca_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Waupaca_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",185013.9709],PARAMETER["False_Northing",0.007],PARAMETER["Central_Meridian",-88.81666666666666],PARAMETER["Scale_Factor",1.0000333645],PARAMETER["Latitude_Of_Origin",43.42027777777778],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103369','NAD_1983_HARN_WISCRS_Waushara_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Waushara_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",120091.4402],PARAMETER["False_Northing",45069.7587],PARAMETER["Central_Meridian",-89.24166666666667],PARAMETER["Standard_Parallel_1",44.11394404583334],PARAMETER["Scale_Factor",1.0000392096],PARAMETER["Latitude_Of_Origin",44.11394404583334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103370','NAD_1983_HARN_WISCRS_Winnebago_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Winnebago_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",244754.8893],PARAMETER["False_Northing",0.0049],PARAMETER["Central_Meridian",-88.5],PARAMETER["Scale_Factor",1.0000286569],PARAMETER["Latitude_Of_Origin",42.71944444444445],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103371','NAD_1983_HARN_WISCRS_Wood_County_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Wood_County_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",208483.6173],PARAMETER["False_Northing",134589.754],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",44.36259546944444],PARAMETER["Scale_Factor",1.0000421209],PARAMETER["Latitude_Of_Origin",44.36259546944444],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103372','NAD_1983_CORS96_Maine_2000_East_Zone',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2960','PROJCS["NAD_1983_CORS96_Maine_2000_East_Zone",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-67.875],PARAMETER["Scale_Factor",0.99998],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103373','NAD_1983_CORS96_Maine_2000_Central_Zone',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2959','PROJCS["NAD_1983_CORS96_Maine_2000_Central_Zone",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-69.125],PARAMETER["Scale_Factor",0.99998],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103374','NAD_1983_CORS96_Maine_2000_West_Zone',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2958','PROJCS["NAD_1983_CORS96_Maine_2000_West_Zone",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-70.375],PARAMETER["Scale_Factor",0.99998],PARAMETER["Latitude_Of_Origin",42.83333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103375','NAD_1983_CORS96_StatePlane_Maryland_FIPS_1900',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1389','PROJCS["NAD_1983_CORS96_StatePlane_Maryland_FIPS_1900",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-77.0],PARAMETER["Standard_Parallel_1",38.3],PARAMETER["Standard_Parallel_2",39.45],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103376','NAD_1983_CORS96_StatePlane_Maryland_FIPS_1900_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1389','PROJCS["NAD_1983_CORS96_StatePlane_Maryland_FIPS_1900_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-77.0],PARAMETER["Standard_Parallel_1",38.3],PARAMETER["Standard_Parallel_2",39.45],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103377','NAD_1983_CORS96_StatePlane_Massachusetts_Mainland_FIPS_2001',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2209','PROJCS["NAD_1983_CORS96_StatePlane_Massachusetts_Mainland_FIPS_2001",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",750000.0],PARAMETER["Central_Meridian",-71.5],PARAMETER["Standard_Parallel_1",41.71666666666667],PARAMETER["Standard_Parallel_2",42.68333333333333],PARAMETER["Latitude_Of_Origin",41.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103378','NAD_1983_CORS96_StatePlane_Massachusetts_Island_FIPS_2002',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2208','PROJCS["NAD_1983_CORS96_StatePlane_Massachusetts_Island_FIPS_2002",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-70.5],PARAMETER["Standard_Parallel_1",41.28333333333333],PARAMETER["Standard_Parallel_2",41.48333333333333],PARAMETER["Latitude_Of_Origin",41.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103379','NAD_1983_CORS96_StatePlane_Massachusetts_Mnld_FIPS_2001_FtUS',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2209','PROJCS["NAD_1983_CORS96_StatePlane_Massachusetts_Mnld_FIPS_2001_FtUS",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",2460625.0],PARAMETER["Central_Meridian",-71.5],PARAMETER["Standard_Parallel_1",41.71666666666667],PARAMETER["Standard_Parallel_2",42.68333333333333],PARAMETER["Latitude_Of_Origin",41.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103380','NAD_1983_CORS96_StatePlane_Massachusetts_Isl_FIPS_2002_FtUS',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2208','PROJCS["NAD_1983_CORS96_StatePlane_Massachusetts_Isl_FIPS_2002_FtUS",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-70.5],PARAMETER["Standard_Parallel_1",41.28333333333333],PARAMETER["Standard_Parallel_2",41.48333333333333],PARAMETER["Latitude_Of_Origin",41.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103381','NAD_1983_CORS96_StatePlane_Michigan_North_FIPS_2111',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1723','PROJCS["NAD_1983_CORS96_StatePlane_Michigan_North_FIPS_2111",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",8000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.0],PARAMETER["Standard_Parallel_1",45.48333333333333],PARAMETER["Standard_Parallel_2",47.08333333333334],PARAMETER["Latitude_Of_Origin",44.78333333333333],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103382','NAD_1983_CORS96_StatePlane_Michigan_Central_FIPS_2112',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1724','PROJCS["NAD_1983_CORS96_StatePlane_Michigan_Central_FIPS_2112",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",6000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.36666666666666],PARAMETER["Standard_Parallel_1",44.18333333333333],PARAMETER["Standard_Parallel_2",45.7],PARAMETER["Latitude_Of_Origin",43.31666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103383','NAD_1983_CORS96_StatePlane_Michigan_South_FIPS_2113',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1725','PROJCS["NAD_1983_CORS96_StatePlane_Michigan_South_FIPS_2113",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",4000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.36666666666666],PARAMETER["Standard_Parallel_1",42.1],PARAMETER["Standard_Parallel_2",43.66666666666666],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103384','NAD_1983_CORS96_StatePlane_Michigan_North_FIPS_2111_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1723','PROJCS["NAD_1983_CORS96_StatePlane_Michigan_North_FIPS_2111_Ft_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",26246719.16010498],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.0],PARAMETER["Standard_Parallel_1",45.48333333333333],PARAMETER["Standard_Parallel_2",47.08333333333334],PARAMETER["Latitude_Of_Origin",44.78333333333333],UNIT["Foot",0.3048]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103385','NAD_1983_CORS96_StatePlane_Michigan_Central_FIPS_2112_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1724','PROJCS["NAD_1983_CORS96_StatePlane_Michigan_Central_FIPS_2112_Ft_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",19685039.37007874],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.36666666666666],PARAMETER["Standard_Parallel_1",44.18333333333333],PARAMETER["Standard_Parallel_2",45.7],PARAMETER["Latitude_Of_Origin",43.31666666666667],UNIT["Foot",0.3048]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103386','NAD_1983_CORS96_StatePlane_Michigan_South_FIPS_2113_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1725','PROJCS["NAD_1983_CORS96_StatePlane_Michigan_South_FIPS_2113_Ft_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",13123359.58005249],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-84.36666666666666],PARAMETER["Standard_Parallel_1",42.1],PARAMETER["Standard_Parallel_2",43.66666666666666],PARAMETER["Latitude_Of_Origin",41.5],UNIT["Foot",0.3048]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103387','NAD_1983_CORS96_StatePlane_Minnesota_North_FIPS_2201',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2214','PROJCS["NAD_1983_CORS96_StatePlane_Minnesota_North_FIPS_2201",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.1],PARAMETER["Standard_Parallel_1",47.03333333333333],PARAMETER["Standard_Parallel_2",48.63333333333333],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103388','NAD_1983_CORS96_StatePlane_Minnesota_Central_FIPS_2202',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2213','PROJCS["NAD_1983_CORS96_StatePlane_Minnesota_Central_FIPS_2202",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.25],PARAMETER["Standard_Parallel_1",45.61666666666667],PARAMETER["Standard_Parallel_2",47.05],PARAMETER["Latitude_Of_Origin",45.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103389','NAD_1983_CORS96_StatePlane_Minnesota_South_FIPS_2203',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2215','PROJCS["NAD_1983_CORS96_StatePlane_Minnesota_South_FIPS_2203",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.0],PARAMETER["Standard_Parallel_1",43.78333333333333],PARAMETER["Standard_Parallel_2",45.21666666666667],PARAMETER["Latitude_Of_Origin",43.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103390','NAD_1983_CORS96_StatePlane_Minnesota_North_FIPS_2201_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2214','PROJCS["NAD_1983_CORS96_StatePlane_Minnesota_North_FIPS_2201_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-93.1],PARAMETER["Standard_Parallel_1",47.03333333333333],PARAMETER["Standard_Parallel_2",48.63333333333333],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103391','NAD_1983_CORS96_StatePlane_Minnesota_Central_FIPS_2202_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2213','PROJCS["NAD_1983_CORS96_StatePlane_Minnesota_Central_FIPS_2202_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-94.25],PARAMETER["Standard_Parallel_1",45.61666666666667],PARAMETER["Standard_Parallel_2",47.05],PARAMETER["Latitude_Of_Origin",45.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103392','NAD_1983_CORS96_StatePlane_Minnesota_South_FIPS_2203_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2215','PROJCS["NAD_1983_CORS96_StatePlane_Minnesota_South_FIPS_2203_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-94.0],PARAMETER["Standard_Parallel_1",43.78333333333333],PARAMETER["Standard_Parallel_2",45.21666666666667],PARAMETER["Latitude_Of_Origin",43.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103393','NAD_1983_CORS96_StatePlane_Mississippi_East_FIPS_2301',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2216','PROJCS["NAD_1983_CORS96_StatePlane_Mississippi_East_FIPS_2301",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.83333333333333],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",29.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103394','NAD_1983_CORS96_StatePlane_Mississippi_West_FIPS_2302',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2217','PROJCS["NAD_1983_CORS96_StatePlane_Mississippi_West_FIPS_2302",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.33333333333333],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",29.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103395','NAD_1983_CORS96_StatePlane_Mississippi_East_FIPS_2301_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2216','PROJCS["NAD_1983_CORS96_StatePlane_Mississippi_East_FIPS_2301_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",984250.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.83333333333333],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",29.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103396','NAD_1983_CORS96_StatePlane_Mississippi_West_FIPS_2302_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2217','PROJCS["NAD_1983_CORS96_StatePlane_Mississippi_West_FIPS_2302_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2296583.333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.33333333333333],PARAMETER["Scale_Factor",0.99995],PARAMETER["Latitude_Of_Origin",29.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103397','NAD_1983_CORS96_StatePlane_Missouri_East_FIPS_2401',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2219','PROJCS["NAD_1983_CORS96_StatePlane_Missouri_East_FIPS_2401",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",250000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",35.83333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103398','NAD_1983_CORS96_StatePlane_Missouri_Central_FIPS_2402',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2218','PROJCS["NAD_1983_CORS96_StatePlane_Missouri_Central_FIPS_2402",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.5],PARAMETER["Scale_Factor",0.9999333333333333],PARAMETER["Latitude_Of_Origin",35.83333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103399','NAD_1983_CORS96_StatePlane_Missouri_West_FIPS_2403',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2220','PROJCS["NAD_1983_CORS96_StatePlane_Missouri_West_FIPS_2403",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",850000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-94.5],PARAMETER["Scale_Factor",0.9999411764705882],PARAMETER["Latitude_Of_Origin",36.16666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103400','NAD_1983_HARN_WISCRS_Adams_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Adams_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",482999.999],PARAMETER["False_Northing",0.012],PARAMETER["Central_Meridian",-90.0],PARAMETER["Scale_Factor",1.0000365285],PARAMETER["Latitude_Of_Origin",43.36666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103401','NAD_1983_HARN_WISCRS_Ashland_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Ashland_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",567000.001],PARAMETER["False_Northing",0.006],PARAMETER["Central_Meridian",-90.62222222222222],PARAMETER["Scale_Factor",1.0000495683],PARAMETER["Latitude_Of_Origin",45.70611111111111],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103402','NAD_1983_HARN_WISCRS_Barron_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Barron_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",305609.625],PARAMETER["False_Northing",0.01],PARAMETER["Central_Meridian",-91.85],PARAMETER["Scale_Factor",1.0000486665],PARAMETER["Latitude_Of_Origin",45.13333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103403','NAD_1983_HARN_WISCRS_Bayfield_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Bayfield_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",750000.001],PARAMETER["False_Northing",487372.659],PARAMETER["Central_Meridian",-91.15277777777779],PARAMETER["Standard_Parallel_1",46.66964837722222],PARAMETER["Scale_Factor",1.0000331195],PARAMETER["Latitude_Of_Origin",46.66964837722222],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103404','NAD_1983_HARN_WISCRS_Brown_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Brown_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",103674.333],PARAMETER["False_Northing",15091.833],PARAMETER["Central_Meridian",-88.0],PARAMETER["Scale_Factor",1.00002],PARAMETER["Latitude_Of_Origin",43.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103405','NAD_1983_HARN_WISCRS_Buffalo_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Buffalo_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",574999.999],PARAMETER["False_Northing",0.016],PARAMETER["Central_Meridian",-91.79722222222222],PARAMETER["Scale_Factor",1.0000382778],PARAMETER["Latitude_Of_Origin",43.48138888888889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103406','NAD_1983_HARN_WISCRS_Burnett_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Burnett_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",209999.999],PARAMETER["False_Northing",195032.104],PARAMETER["Central_Meridian",-92.45777777777778],PARAMETER["Standard_Parallel_1",45.89871486583333],PARAMETER["Scale_Factor",1.0000383841],PARAMETER["Latitude_Of_Origin",45.89871486583333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103407','NAD_1983_HARN_WISCRS_Calumet_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Calumet_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",802999.999],PARAMETER["False_Northing",0.016],PARAMETER["Central_Meridian",-88.5],PARAMETER["Scale_Factor",1.0000286569],PARAMETER["Latitude_Of_Origin",42.71944444444445],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103408','NAD_1983_HARN_WISCRS_Chippewa_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Chippewa_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",197000.0],PARAMETER["False_Northing",144656.648],PARAMETER["Central_Meridian",-91.29444444444444],PARAMETER["Standard_Parallel_1",44.97785689861112],PARAMETER["Scale_Factor",1.0000391127],PARAMETER["Latitude_Of_Origin",44.97785689861112],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103409','NAD_1983_HARN_WISCRS_Clark_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Clark_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",655999.997],PARAMETER["False_Northing",0.028],PARAMETER["Central_Meridian",-90.70833333333334],PARAMETER["Scale_Factor",1.0000463003],PARAMETER["Latitude_Of_Origin",43.6],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103410','NAD_1983_HARN_WISCRS_Columbia_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Columbia_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",554999.999],PARAMETER["False_Northing",366041.307],PARAMETER["Central_Meridian",-89.39444444444445],PARAMETER["Standard_Parallel_1",43.46254664583333],PARAMETER["Scale_Factor",1.00003498],PARAMETER["Latitude_Of_Origin",43.46254664583333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103411','NAD_1983_HARN_WISCRS_Crawford_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Crawford_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",373000.0],PARAMETER["False_Northing",176190.987],PARAMETER["Central_Meridian",-90.9388888888889],PARAMETER["Standard_Parallel_1",43.200055605],PARAMETER["Scale_Factor",1.0000349151],PARAMETER["Latitude_Of_Origin",43.200055605],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103412','NAD_1983_HARN_WISCRS_Dane_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Dane_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",811000.0],PARAMETER["False_Northing",480943.886],PARAMETER["Central_Meridian",-89.42222222222223],PARAMETER["Standard_Parallel_1",43.0695160375],PARAMETER["Scale_Factor",1.0000384786],PARAMETER["Latitude_Of_Origin",43.0695160375],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103413','NAD_1983_HARN_WISCRS_Dodge_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Dodge_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",863999.999],PARAMETER["False_Northing",0.025],PARAMETER["Central_Meridian",-88.775],PARAMETER["Scale_Factor",1.0000346418],PARAMETER["Latitude_Of_Origin",41.47222222222222],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103414','NAD_1983_HARN_WISCRS_Door_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Door_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",521000.0],PARAMETER["False_Northing",0.008],PARAMETER["Central_Meridian",-87.27222222222223],PARAMETER["Scale_Factor",1.0000187521],PARAMETER["Latitude_Of_Origin",44.4],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103415','NAD_1983_HARN_WISCRS_Douglas_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Douglas_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",194000.0],PARAMETER["False_Northing",0.013],PARAMETER["Central_Meridian",-91.91666666666667],PARAMETER["Scale_Factor",1.0000385418],PARAMETER["Latitude_Of_Origin",45.88333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103416','NAD_1983_HARN_WISCRS_Dunn_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Dunn_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",170000.001],PARAMETER["False_Northing",0.01],PARAMETER["Central_Meridian",-91.89444444444445],PARAMETER["Scale_Factor",1.0000410324],PARAMETER["Latitude_Of_Origin",44.40833333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103417','NAD_1983_HARN_WISCRS_EauClaire_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_EauClaire_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",394000.0],PARAMETER["False_Northing",300812.797],PARAMETER["Central_Meridian",-91.28888888888889],PARAMETER["Standard_Parallel_1",44.87228112638889],PARAMETER["Scale_Factor",1.000035079],PARAMETER["Latitude_Of_Origin",44.87228112638889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103418','NAD_1983_HARN_WISCRS_Florence_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Florence_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",438000.004],PARAMETER["False_Northing",0.021],PARAMETER["Central_Meridian",-88.14166666666668],PARAMETER["Scale_Factor",1.0000552095],PARAMETER["Latitude_Of_Origin",45.43888888888888],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103419','NAD_1983_HARN_WISCRS_Fond_du_Lac_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Fond_du_Lac_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",802999.999],PARAMETER["False_Northing",0.016],PARAMETER["Central_Meridian",-88.5],PARAMETER["Scale_Factor",1.0000286569],PARAMETER["Latitude_Of_Origin",42.71944444444445],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103420','NAD_1983_HARN_WISCRS_Forest_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Forest_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",905000.005],PARAMETER["False_Northing",0.052],PARAMETER["Central_Meridian",-88.63333333333334],PARAMETER["Scale_Factor",1.0000673004],PARAMETER["Latitude_Of_Origin",44.00555555555555],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103421','NAD_1983_HARN_WISCRS_Grant_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Grant_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",794999.998],PARAMETER["False_Northing",0.033],PARAMETER["Central_Meridian",-90.8],PARAMETER["Scale_Factor",1.0000349452],PARAMETER["Latitude_Of_Origin",41.41111111111111],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103422','NAD_1983_HARN_WISCRS_Green_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Green_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",558000.0],PARAMETER["False_Northing",150361.559],PARAMETER["Central_Meridian",-89.83888888888889],PARAMETER["Standard_Parallel_1",42.63756227694444],PARAMETER["Scale_Factor",1.0000390487],PARAMETER["Latitude_Of_Origin",42.63756227694444],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103423','NAD_1983_HARN_WISCRS_GreenLake_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_GreenLake_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",495000.0],PARAMETER["False_Northing",259746.132],PARAMETER["Central_Meridian",-89.24166666666667],PARAMETER["Standard_Parallel_1",43.80700011777778],PARAMETER["Scale_Factor",1.0000344057],PARAMETER["Latitude_Of_Origin",43.80700011777778],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103424','NAD_1983_HARN_WISCRS_Iowa_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Iowa_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",371000.0],PARAMETER["False_Northing",0.015],PARAMETER["Central_Meridian",-90.16111111111111],PARAMETER["Scale_Factor",1.0000394961],PARAMETER["Latitude_Of_Origin",42.53888888888888],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103425','NAD_1983_HARN_WISCRS_Iron_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Iron_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",725000.0],PARAMETER["False_Northing",0.028],PARAMETER["Central_Meridian",-90.25555555555556],PARAMETER["Scale_Factor",1.0000677153],PARAMETER["Latitude_Of_Origin",45.43333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103426','NAD_1983_HARN_WISCRS_Jackson_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Jackson_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",88582.5],PARAMETER["False_Northing",82020.833],PARAMETER["Central_Meridian",-90.84429651944444],PARAMETER["Scale_Factor",1.0000353],PARAMETER["Latitude_Of_Origin",44.25333512777778],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103427','NAD_1983_HARN_WISCRS_Jefferson_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Jefferson_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",863999.999],PARAMETER["False_Northing",0.025],PARAMETER["Central_Meridian",-88.775],PARAMETER["Scale_Factor",1.0000346418],PARAMETER["Latitude_Of_Origin",41.47222222222222],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103428','NAD_1983_HARN_WISCRS_Juneau_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Juneau_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",482999.999],PARAMETER["False_Northing",0.012],PARAMETER["Central_Meridian",-90.0],PARAMETER["Scale_Factor",1.0000365285],PARAMETER["Latitude_Of_Origin",43.36666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103429','NAD_1983_HARN_WISCRS_Kenosha_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Kenosha_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",610000.003],PARAMETER["False_Northing",0.003],PARAMETER["Central_Meridian",-87.89444444444445],PARAMETER["Scale_Factor",1.0000260649],PARAMETER["Latitude_Of_Origin",42.21666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103430','NAD_1983_HARN_WISCRS_Kewaunee_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Kewaunee_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",262000.006],PARAMETER["False_Northing",0.004],PARAMETER["Central_Meridian",-87.55],PARAMETER["Scale_Factor",1.0000233704],PARAMETER["Latitude_Of_Origin",43.26666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103431','NAD_1983_HARN_WISCRS_LaCrosse_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_LaCrosse_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",427999.996],PARAMETER["False_Northing",0.011],PARAMETER["Central_Meridian",-91.31666666666666],PARAMETER["Scale_Factor",1.0000319985],PARAMETER["Latitude_Of_Origin",43.45111111111111],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103432','NAD_1983_HARN_WISCRS_Lafayette_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Lafayette_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",558000.0],PARAMETER["False_Northing",150361.559],PARAMETER["Central_Meridian",-89.83888888888889],PARAMETER["Standard_Parallel_1",42.63756227694444],PARAMETER["Scale_Factor",1.0000390487],PARAMETER["Latitude_Of_Origin",42.63756227694444],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103433','NAD_1983_HARN_WISCRS_Langlade_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Langlade_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",651000.0],PARAMETER["False_Northing",345405.421],PARAMETER["Central_Meridian",-89.03333333333333],PARAMETER["Standard_Parallel_1",45.15423710527778],PARAMETER["Scale_Factor",1.0000627024],PARAMETER["Latitude_Of_Origin",45.15423710527778],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103434','NAD_1983_HARN_WISCRS_Lincoln_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Lincoln_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",381000.0],PARAMETER["False_Northing",0.019],PARAMETER["Central_Meridian",-89.73333333333333],PARAMETER["Scale_Factor",1.0000599003],PARAMETER["Latitude_Of_Origin",44.84444444444445],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103435','NAD_1983_HARN_WISCRS_Manitowoc_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Manitowoc_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",262000.006],PARAMETER["False_Northing",0.004],PARAMETER["Central_Meridian",-87.55],PARAMETER["Scale_Factor",1.0000233704],PARAMETER["Latitude_Of_Origin",43.26666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103436','NAD_1983_HARN_WISCRS_Marathon_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Marathon_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",245000.0],PARAMETER["False_Northing",180607.47],PARAMETER["Central_Meridian",-89.77],PARAMETER["Standard_Parallel_1",44.90090442361111],PARAMETER["Scale_Factor",1.000053289],PARAMETER["Latitude_Of_Origin",44.90090442361111],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103437','NAD_1983_HARN_WISCRS_Marinette_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Marinette_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",783000.007],PARAMETER["False_Northing",0.01],PARAMETER["Central_Meridian",-87.71111111111111],PARAMETER["Scale_Factor",1.0000234982],PARAMETER["Latitude_Of_Origin",44.69166666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103438','NAD_1983_HARN_WISCRS_Marquette_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Marquette_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",495000.0],PARAMETER["False_Northing",259746.132],PARAMETER["Central_Meridian",-89.24166666666667],PARAMETER["Standard_Parallel_1",43.80700011777778],PARAMETER["Scale_Factor",1.0000344057],PARAMETER["Latitude_Of_Origin",43.80700011777778],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103439','NAD_1983_HARN_WISCRS_Menominee_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Menominee_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",346000.004],PARAMETER["False_Northing",0.01],PARAMETER["Central_Meridian",-88.41666666666667],PARAMETER["Scale_Factor",1.0000362499],PARAMETER["Latitude_Of_Origin",44.71666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103440','NAD_1983_HARN_WISCRS_Milwaukee_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Milwaukee_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",610000.003],PARAMETER["False_Northing",0.003],PARAMETER["Central_Meridian",-87.89444444444445],PARAMETER["Scale_Factor",1.0000260649],PARAMETER["Latitude_Of_Origin",42.21666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103441','NAD_1983_HARN_WISCRS_Monroe_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Monroe_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",671000.0],PARAMETER["False_Northing",400012.278],PARAMETER["Central_Meridian",-90.64166666666668],PARAMETER["Standard_Parallel_1",44.00007392861111],PARAMETER["Scale_Factor",1.0000434122],PARAMETER["Latitude_Of_Origin",44.00007392861111],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103442','NAD_1983_HARN_WISCRS_Oconto_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Oconto_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",600000.006],PARAMETER["False_Northing",0.011],PARAMETER["Central_Meridian",-87.90833333333335],PARAMETER["Scale_Factor",1.0000236869],PARAMETER["Latitude_Of_Origin",44.39722222222222],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103443','NAD_1983_HARN_WISCRS_Oneida_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Oneida_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",230000.0],PARAMETER["False_Northing",188936.744],PARAMETER["Central_Meridian",-89.54444444444444],PARAMETER["Standard_Parallel_1",45.70422377027778],PARAMETER["Scale_Factor",1.0000686968],PARAMETER["Latitude_Of_Origin",45.70422377027778],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103444','NAD_1983_HARN_WISCRS_Outagamie_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Outagamie_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",802999.999],PARAMETER["False_Northing",0.016],PARAMETER["Central_Meridian",-88.5],PARAMETER["Scale_Factor",1.0000286569],PARAMETER["Latitude_Of_Origin",42.71944444444445],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103445','NAD_1983_HARN_WISCRS_Ozaukee_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Ozaukee_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",610000.003],PARAMETER["False_Northing",0.003],PARAMETER["Central_Meridian",-87.89444444444445],PARAMETER["Scale_Factor",1.0000260649],PARAMETER["Latitude_Of_Origin",42.21666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103446','NAD_1983_HARN_WISCRS_Pepin_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Pepin_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",550000.0],PARAMETER["False_Northing",282260.222],PARAMETER["Central_Meridian",-92.22777777777777],PARAMETER["Standard_Parallel_1",44.63614887194444],PARAMETER["Scale_Factor",1.0000362977],PARAMETER["Latitude_Of_Origin",44.63614887194444],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103447','NAD_1983_HARN_WISCRS_Pierce_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Pierce_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",550000.0],PARAMETER["False_Northing",282260.222],PARAMETER["Central_Meridian",-92.22777777777777],PARAMETER["Standard_Parallel_1",44.63614887194444],PARAMETER["Scale_Factor",1.0000362977],PARAMETER["Latitude_Of_Origin",44.63614887194444],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103448','NAD_1983_HARN_WISCRS_Polk_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Polk_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",464999.996],PARAMETER["False_Northing",0.019],PARAMETER["Central_Meridian",-92.63333333333334],PARAMETER["Scale_Factor",1.0000433849],PARAMETER["Latitude_Of_Origin",44.66111111111111],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103449','NAD_1983_HARN_WISCRS_Portage_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Portage_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",185000.0],PARAMETER["False_Northing",164114.46],PARAMETER["Central_Meridian",-89.5],PARAMETER["Standard_Parallel_1",44.41682397527777],PARAMETER["Scale_Factor",1.000039936],PARAMETER["Latitude_Of_Origin",44.41682397527777],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103450','NAD_1983_HARN_WISCRS_Price_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Price_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",747999.995],PARAMETER["False_Northing",0.036],PARAMETER["Central_Meridian",-90.48888888888889],PARAMETER["Scale_Factor",1.0000649554],PARAMETER["Latitude_Of_Origin",44.55555555555555],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103451','NAD_1983_HARN_WISCRS_Racine_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Racine_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",610000.003],PARAMETER["False_Northing",0.003],PARAMETER["Central_Meridian",-87.89444444444445],PARAMETER["Scale_Factor",1.0000260649],PARAMETER["Latitude_Of_Origin",42.21666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103452','NAD_1983_HARN_WISCRS_Richland_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Richland_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",664000.0],PARAMETER["False_Northing",440469.675],PARAMETER["Central_Meridian",-90.43055555555556],PARAMETER["Standard_Parallel_1",43.3223129275],PARAMETER["Scale_Factor",1.0000375653],PARAMETER["Latitude_Of_Origin",43.3223129275],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103453','NAD_1983_HARN_WISCRS_Rock_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Rock_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",480000.0],PARAMETER["False_Northing",0.022],PARAMETER["Central_Meridian",-89.07222222222222],PARAMETER["Scale_Factor",1.0000337311],PARAMETER["Latitude_Of_Origin",41.94444444444444],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103454','NAD_1983_HARN_WISCRS_Rusk_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Rusk_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",822000.001],PARAMETER["False_Northing",0.077],PARAMETER["Central_Meridian",-91.06666666666666],PARAMETER["Scale_Factor",1.0000495976],PARAMETER["Latitude_Of_Origin",43.91944444444444],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103455','NAD_1983_HARN_WISCRS_Sauk_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Sauk_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",609000.001],PARAMETER["False_Northing",0.017],PARAMETER["Central_Meridian",-89.9],PARAMETER["Scale_Factor",1.0000373868],PARAMETER["Latitude_Of_Origin",42.81944444444445],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103456','NAD_1983_HARN_WISCRS_Sawyer_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Sawyer_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",711000.001],PARAMETER["False_Northing",396108.667],PARAMETER["Central_Meridian",-91.11666666666666],PARAMETER["Standard_Parallel_1",45.90009913138888],PARAMETER["Scale_Factor",1.0000573461],PARAMETER["Latitude_Of_Origin",45.90009913138888],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103457','NAD_1983_HARN_WISCRS_Shawano_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Shawano_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",861000.001],PARAMETER["False_Northing",0.031],PARAMETER["Central_Meridian",-88.60555555555555],PARAMETER["Scale_Factor",1.000032144],PARAMETER["Latitude_Of_Origin",44.03611111111111],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103458','NAD_1983_HARN_WISCRS_Sheboygan_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Sheboygan_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",262000.006],PARAMETER["False_Northing",0.004],PARAMETER["Central_Meridian",-87.55],PARAMETER["Scale_Factor",1.0000233704],PARAMETER["Latitude_Of_Origin",43.26666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103459','NAD_1983_HARN_WISCRS_St_Croix_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_St_Croix_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",542999.997],PARAMETER["False_Northing",0.034],PARAMETER["Central_Meridian",-92.63333333333334],PARAMETER["Scale_Factor",1.0000381803],PARAMETER["Latitude_Of_Origin",44.03611111111111],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103460','NAD_1983_HARN_WISCRS_Taylor_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Taylor_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",614000.0],PARAMETER["False_Northing",353499.136],PARAMETER["Central_Meridian",-90.48333333333333],PARAMETER["Standard_Parallel_1",45.17782208583333],PARAMETER["Scale_Factor",1.0000597566],PARAMETER["Latitude_Of_Origin",45.17782208583333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103461','NAD_1983_HARN_WISCRS_Trempealeau_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Trempealeau_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",843000.0],PARAMETER["False_Northing",0.013],PARAMETER["Central_Meridian",-91.36666666666666],PARAMETER["Scale_Factor",1.0000361538],PARAMETER["Latitude_Of_Origin",43.16111111111111],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103462','NAD_1983_HARN_WISCRS_Vernon_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Vernon_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",730000.0],PARAMETER["False_Northing",155944.768],PARAMETER["Central_Meridian",-90.78333333333333],PARAMETER["Standard_Parallel_1",43.57503293972223],PARAMETER["Scale_Factor",1.0000408158],PARAMETER["Latitude_Of_Origin",43.57503293972223],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103463','NAD_1983_HARN_WISCRS_Vilas_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Vilas_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",441000.0],PARAMETER["False_Northing",165147.666],PARAMETER["Central_Meridian",-89.48888888888889],PARAMETER["Standard_Parallel_1",46.07784409055556],PARAMETER["Scale_Factor",1.0000730142],PARAMETER["Latitude_Of_Origin",46.07784409055556],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103464','NAD_1983_HARN_WISCRS_Walworth_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Walworth_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",763000.0],PARAMETER["False_Northing",364461.943],PARAMETER["Central_Meridian",-88.54166666666667],PARAMETER["Standard_Parallel_1",42.66946209694444],PARAMETER["Scale_Factor",1.0000367192],PARAMETER["Latitude_Of_Origin",42.66946209694444],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103465','NAD_1983_HARN_WISCRS_Washburn_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Washburn_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",768000.0],PARAMETER["False_Northing",617973.193],PARAMETER["Central_Meridian",-91.78333333333333],PARAMETER["Standard_Parallel_1",45.96121983333334],PARAMETER["Scale_Factor",1.0000475376],PARAMETER["Latitude_Of_Origin",45.96121983333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103466','NAD_1983_HARN_WISCRS_Washington_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Washington_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",394000.004],PARAMETER["False_Northing",0.01],PARAMETER["Central_Meridian",-88.06388888888888],PARAMETER["Scale_Factor",1.00003738],PARAMETER["Latitude_Of_Origin",42.91805555555555],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103467','NAD_1983_HARN_WISCRS_Waukesha_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Waukesha_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",685000.001],PARAMETER["False_Northing",0.011],PARAMETER["Central_Meridian",-88.225],PARAMETER["Scale_Factor",1.0000346179],PARAMETER["Latitude_Of_Origin",42.56944444444445],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103468','NAD_1983_HARN_WISCRS_Waupaca_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Waupaca_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",607000.003],PARAMETER["False_Northing",0.023],PARAMETER["Central_Meridian",-88.81666666666666],PARAMETER["Scale_Factor",1.0000333645],PARAMETER["Latitude_Of_Origin",43.42027777777778],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103469','NAD_1983_HARN_WISCRS_Waushara_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Waushara_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",394000.0],PARAMETER["False_Northing",147866.367],PARAMETER["Central_Meridian",-89.24166666666667],PARAMETER["Standard_Parallel_1",44.11394404583334],PARAMETER["Scale_Factor",1.0000392096],PARAMETER["Latitude_Of_Origin",44.11394404583334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103470','NAD_1983_HARN_WISCRS_Winnebago_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Winnebago_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",802999.999],PARAMETER["False_Northing",0.016],PARAMETER["Central_Meridian",-88.5],PARAMETER["Scale_Factor",1.0000286569],PARAMETER["Latitude_Of_Origin",42.71944444444445],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103471','NAD_1983_HARN_WISCRS_Wood_County_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_WISCRS_Wood_County_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",684000.001],PARAMETER["False_Northing",441566.551],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",44.36259546944444],PARAMETER["Scale_Factor",1.0000421209],PARAMETER["Latitude_Of_Origin",44.36259546944444],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103472','NAD_1983_CORS96_StatePlane_Montana_FIPS_2500',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1395','PROJCS["NAD_1983_CORS96_StatePlane_Montana_FIPS_2500",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-109.5],PARAMETER["Standard_Parallel_1",45.0],PARAMETER["Standard_Parallel_2",49.0],PARAMETER["Latitude_Of_Origin",44.25],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103473','NAD_1983_CORS96_StatePlane_Montana_FIPS_2500_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1395','PROJCS["NAD_1983_CORS96_StatePlane_Montana_FIPS_2500_Ft_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968503.937007874],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-109.5],PARAMETER["Standard_Parallel_1",45.0],PARAMETER["Standard_Parallel_2",49.0],PARAMETER["Latitude_Of_Origin",44.25],UNIT["Foot",0.3048]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103474','NAD_1983_CORS96_StatePlane_Nebraska_FIPS_2600',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1396','PROJCS["NAD_1983_CORS96_StatePlane_Nebraska_FIPS_2600",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.0],PARAMETER["Standard_Parallel_1",40.0],PARAMETER["Standard_Parallel_2",43.0],PARAMETER["Latitude_Of_Origin",39.83333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103475','NAD_1983_CORS96_StatePlane_Nebraska_FIPS_2600_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1396','PROJCS["NAD_1983_CORS96_StatePlane_Nebraska_FIPS_2600_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.0],PARAMETER["Standard_Parallel_1",40.0],PARAMETER["Standard_Parallel_2",43.0],PARAMETER["Latitude_Of_Origin",39.83333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103476','NAD_1983_CORS96_StatePlane_Nevada_East_FIPS_2701',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2224','PROJCS["NAD_1983_CORS96_StatePlane_Nevada_East_FIPS_2701",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",8000000.0],PARAMETER["Central_Meridian",-115.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103477','NAD_1983_CORS96_StatePlane_Nevada_Central_FIPS_2702',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2223','PROJCS["NAD_1983_CORS96_StatePlane_Nevada_Central_FIPS_2702",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",6000000.0],PARAMETER["Central_Meridian",-116.6666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103478','NAD_1983_CORS96_StatePlane_Nevada_West_FIPS_2703',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2225','PROJCS["NAD_1983_CORS96_StatePlane_Nevada_West_FIPS_2703",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",4000000.0],PARAMETER["Central_Meridian",-118.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103479','NAD_1983_CORS96_StatePlane_Nevada_East_FIPS_2701_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2224','PROJCS["NAD_1983_CORS96_StatePlane_Nevada_East_FIPS_2701_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",26246666.66666666],PARAMETER["Central_Meridian",-115.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103480','NAD_1983_CORS96_StatePlane_Nevada_Central_FIPS_2702_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2223','PROJCS["NAD_1983_CORS96_StatePlane_Nevada_Central_FIPS_2702_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",19685000.0],PARAMETER["Central_Meridian",-116.6666666666667],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103481','NAD_1983_CORS96_StatePlane_Nevada_West_FIPS_2703_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2225','PROJCS["NAD_1983_CORS96_StatePlane_Nevada_West_FIPS_2703_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",13123333.33333333],PARAMETER["Central_Meridian",-118.5833333333333],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",34.75],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103482','NAD_1983_CORS96_StatePlane_New_Hampshire_FIPS_2800',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1398','PROJCS["NAD_1983_CORS96_StatePlane_New_Hampshire_FIPS_2800",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-71.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103483','NAD_1983_CORS96_StatePlane_New_Hampshire_FIPS_2800_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1398','PROJCS["NAD_1983_CORS96_StatePlane_New_Hampshire_FIPS_2800_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",984250.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-71.66666666666667],PARAMETER["Scale_Factor",0.9999666666666667],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103484','NAD_1983_CORS96_StatePlane_New_Jersey_FIPS_2900',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1399','PROJCS["NAD_1983_CORS96_StatePlane_New_Jersey_FIPS_2900",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",150000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103485','NAD_1983_CORS96_StatePlane_New_Jersey_FIPS_2900_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1399','PROJCS["NAD_1983_CORS96_StatePlane_New_Jersey_FIPS_2900_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",492125.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103486','NAD_1983_CORS96_StatePlane_New_Mexico_East_FIPS_3001',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2228','PROJCS["NAD_1983_CORS96_StatePlane_New_Mexico_East_FIPS_3001",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",165000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-104.3333333333333],PARAMETER["Scale_Factor",0.9999090909090909],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103487','NAD_1983_CORS96_StatePlane_New_Mexico_Central_FIPS_3002',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2231','PROJCS["NAD_1983_CORS96_StatePlane_New_Mexico_Central_FIPS_3002",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-106.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103488','NAD_1983_CORS96_StatePlane_New_Mexico_West_FIPS_3003',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2232','PROJCS["NAD_1983_CORS96_StatePlane_New_Mexico_West_FIPS_3003",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",830000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-107.8333333333333],PARAMETER["Scale_Factor",0.9999166666666667],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103489','NAD_1983_CORS96_StatePlane_New_Mexico_East_FIPS_3001_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2228','PROJCS["NAD_1983_CORS96_StatePlane_New_Mexico_East_FIPS_3001_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",541337.5],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-104.3333333333333],PARAMETER["Scale_Factor",0.9999090909090909],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103490','NAD_1983_CORS96_StatePlane_New_Mexico_Central_FIPS_3002_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2231','PROJCS["NAD_1983_CORS96_StatePlane_New_Mexico_Central_FIPS_3002_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-106.25],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103491','NAD_1983_CORS96_StatePlane_New_Mexico_West_FIPS_3003_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2232','PROJCS["NAD_1983_CORS96_StatePlane_New_Mexico_West_FIPS_3003_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2723091.666666666],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-107.8333333333333],PARAMETER["Scale_Factor",0.9999166666666667],PARAMETER["Latitude_Of_Origin",31.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103492','NAD_1983_CORS96_StatePlane_New_York_East_FIPS_3101',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2234','PROJCS["NAD_1983_CORS96_StatePlane_New_York_East_FIPS_3101",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",150000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103493','NAD_1983_CORS96_StatePlane_New_York_Central_FIPS_3102',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2233','PROJCS["NAD_1983_CORS96_StatePlane_New_York_Central_FIPS_3102",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",250000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-76.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103494','NAD_1983_CORS96_StatePlane_New_York_West_FIPS_3103',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2236','PROJCS["NAD_1983_CORS96_StatePlane_New_York_West_FIPS_3103",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",350000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-78.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103495','NAD_1983_CORS96_StatePlane_New_York_Long_Island_FIPS_3104',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2235','PROJCS["NAD_1983_CORS96_StatePlane_New_York_Long_Island_FIPS_3104",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.0],PARAMETER["Standard_Parallel_1",40.66666666666666],PARAMETER["Standard_Parallel_2",41.03333333333333],PARAMETER["Latitude_Of_Origin",40.16666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103496','NAD_1983_CORS96_StatePlane_New_York_East_FIPS_3101_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2234','PROJCS["NAD_1983_CORS96_StatePlane_New_York_East_FIPS_3101_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",492125.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.5],PARAMETER["Scale_Factor",0.9999],PARAMETER["Latitude_Of_Origin",38.83333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103497','NAD_1983_CORS96_StatePlane_New_York_Central_FIPS_3102_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2233','PROJCS["NAD_1983_CORS96_StatePlane_New_York_Central_FIPS_3102_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",820208.3333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-76.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103498','NAD_1983_CORS96_StatePlane_New_York_West_FIPS_3103_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2236','PROJCS["NAD_1983_CORS96_StatePlane_New_York_West_FIPS_3103_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1148291.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-78.58333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103499','NAD_1983_CORS96_StatePlane_New_York_Long_Isl_FIPS_3104_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2235','PROJCS["NAD_1983_CORS96_StatePlane_New_York_Long_Isl_FIPS_3104_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",984250.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-74.0],PARAMETER["Standard_Parallel_1",40.66666666666666],PARAMETER["Standard_Parallel_2",41.03333333333333],PARAMETER["Latitude_Of_Origin",40.16666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103500','NAD_1983_CORS96_StatePlane_North_Carolina_FIPS_3200',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1402','PROJCS["NAD_1983_CORS96_StatePlane_North_Carolina_FIPS_3200",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",609601.2192024384],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-79.0],PARAMETER["Standard_Parallel_1",34.33333333333334],PARAMETER["Standard_Parallel_2",36.16666666666666],PARAMETER["Latitude_Of_Origin",33.75],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103501','NAD_1983_CORS96_StatePlane_North_Carolina_FIPS_3200_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1402','PROJCS["NAD_1983_CORS96_StatePlane_North_Carolina_FIPS_3200_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-79.0],PARAMETER["Standard_Parallel_1",34.33333333333334],PARAMETER["Standard_Parallel_2",36.16666666666666],PARAMETER["Latitude_Of_Origin",33.75],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103502','NAD_1983_CORS96_StatePlane_North_Dakota_North_FIPS_3301',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2237','PROJCS["NAD_1983_CORS96_StatePlane_North_Dakota_North_FIPS_3301",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",47.43333333333333],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103503','NAD_1983_CORS96_StatePlane_North_Dakota_South_FIPS_3302',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2238','PROJCS["NAD_1983_CORS96_StatePlane_North_Dakota_South_FIPS_3302",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",46.18333333333333],PARAMETER["Standard_Parallel_2",47.48333333333333],PARAMETER["Latitude_Of_Origin",45.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103504','NAD_1983_CORS96_StatePlane_North_Dakota_North_FIPS_3301_FtI',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2237','PROJCS["NAD_1983_CORS96_StatePlane_North_Dakota_North_FIPS_3301_FtI",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968503.937007874],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",47.43333333333333],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47.0],UNIT["Foot",0.3048]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103505','NAD_1983_CORS96_StatePlane_North_Dakota_South_FIPS_3302_FtI',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2238','PROJCS["NAD_1983_CORS96_StatePlane_North_Dakota_South_FIPS_3302_FtI",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968503.937007874],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.5],PARAMETER["Standard_Parallel_1",46.18333333333333],PARAMETER["Standard_Parallel_2",47.48333333333333],PARAMETER["Latitude_Of_Origin",45.66666666666666],UNIT["Foot",0.3048]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103506','NAD_1983_CORS96_StatePlane_Ohio_North_FIPS_3401',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2239','PROJCS["NAD_1983_CORS96_StatePlane_Ohio_North_FIPS_3401",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",40.43333333333333],PARAMETER["Standard_Parallel_2",41.7],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103507','NAD_1983_CORS96_StatePlane_Ohio_South_FIPS_3402',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2240','PROJCS["NAD_1983_CORS96_StatePlane_Ohio_South_FIPS_3402",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",38.73333333333333],PARAMETER["Standard_Parallel_2",40.03333333333333],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103508','NAD_1983_CORS96_StatePlane_Ohio_North_FIPS_3401_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2239','PROJCS["NAD_1983_CORS96_StatePlane_Ohio_North_FIPS_3401_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",40.43333333333333],PARAMETER["Standard_Parallel_2",41.7],PARAMETER["Latitude_Of_Origin",39.66666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103509','NAD_1983_CORS96_StatePlane_Ohio_South_FIPS_3402_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2240','PROJCS["NAD_1983_CORS96_StatePlane_Ohio_South_FIPS_3402_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-82.5],PARAMETER["Standard_Parallel_1",38.73333333333333],PARAMETER["Standard_Parallel_2",40.03333333333333],PARAMETER["Latitude_Of_Origin",38.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103510','NAD_1983_CORS96_StatePlane_Oklahoma_North_FIPS_3501',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2241','PROJCS["NAD_1983_CORS96_StatePlane_Oklahoma_North_FIPS_3501",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-98.0],PARAMETER["Standard_Parallel_1",35.56666666666667],PARAMETER["Standard_Parallel_2",36.76666666666667],PARAMETER["Latitude_Of_Origin",35.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103511','NAD_1983_CORS96_StatePlane_Oklahoma_South_FIPS_3502',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2242','PROJCS["NAD_1983_CORS96_StatePlane_Oklahoma_South_FIPS_3502",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-98.0],PARAMETER["Standard_Parallel_1",33.93333333333333],PARAMETER["Standard_Parallel_2",35.23333333333333],PARAMETER["Latitude_Of_Origin",33.33333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103512','NAD_1983_CORS96_StatePlane_Oklahoma_North_FIPS_3501_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2241','PROJCS["NAD_1983_CORS96_StatePlane_Oklahoma_North_FIPS_3501_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-98.0],PARAMETER["Standard_Parallel_1",35.56666666666667],PARAMETER["Standard_Parallel_2",36.76666666666667],PARAMETER["Latitude_Of_Origin",35.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103513','NAD_1983_CORS96_StatePlane_Oklahoma_South_FIPS_3502_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2242','PROJCS["NAD_1983_CORS96_StatePlane_Oklahoma_South_FIPS_3502_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-98.0],PARAMETER["Standard_Parallel_1",33.93333333333333],PARAMETER["Standard_Parallel_2",35.23333333333333],PARAMETER["Latitude_Of_Origin",33.33333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103514','NAD_1983_CORS96_StatePlane_Pennsylvania_North_FIPS_3701',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2245','PROJCS["NAD_1983_CORS96_StatePlane_Pennsylvania_North_FIPS_3701",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-77.75],PARAMETER["Standard_Parallel_1",40.88333333333333],PARAMETER["Standard_Parallel_2",41.95],PARAMETER["Latitude_Of_Origin",40.16666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103515','NAD_1983_CORS96_StatePlane_Pennsylvania_North_FIPS_3701_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2245','PROJCS["NAD_1983_CORS96_StatePlane_Pennsylvania_North_FIPS_3701_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-77.75],PARAMETER["Standard_Parallel_1",40.88333333333333],PARAMETER["Standard_Parallel_2",41.95],PARAMETER["Latitude_Of_Origin",40.16666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103516','NAD_1983_CORS96_StatePlane_Pennsylvania_South_FIPS_3702',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2246','PROJCS["NAD_1983_CORS96_StatePlane_Pennsylvania_South_FIPS_3702",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-77.75],PARAMETER["Standard_Parallel_1",39.93333333333333],PARAMETER["Standard_Parallel_2",40.96666666666667],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103517','NAD_1983_CORS96_StatePlane_Pennsylvania_South_FIPS_3702_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2246','PROJCS["NAD_1983_CORS96_StatePlane_Pennsylvania_South_FIPS_3702_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-77.75],PARAMETER["Standard_Parallel_1",39.93333333333333],PARAMETER["Standard_Parallel_2",40.96666666666667],PARAMETER["Latitude_Of_Origin",39.33333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103518','NAD_1983_CORS96_StatePlane_Rhode_Island_FIPS_3800',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1408','PROJCS["NAD_1983_CORS96_StatePlane_Rhode_Island_FIPS_3800",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",100000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-71.5],PARAMETER["Scale_Factor",0.99999375],PARAMETER["Latitude_Of_Origin",41.08333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103519','NAD_1983_CORS96_StatePlane_Rhode_Island_FIPS_3800_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1408','PROJCS["NAD_1983_CORS96_StatePlane_Rhode_Island_FIPS_3800_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",328083.3333333333],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-71.5],PARAMETER["Scale_Factor",0.99999375],PARAMETER["Latitude_Of_Origin",41.08333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103520','NAD_1983_CORS96_StatePlane_South_Carolina_FIPS_3900',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1409','PROJCS["NAD_1983_CORS96_StatePlane_South_Carolina_FIPS_3900",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",609600.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Standard_Parallel_1",32.5],PARAMETER["Standard_Parallel_2",34.83333333333334],PARAMETER["Latitude_Of_Origin",31.83333333333333],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103521','NAD_1983_CORS96_StatePlane_South_Carolina_FIPS_3900_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1409','PROJCS["NAD_1983_CORS96_StatePlane_South_Carolina_FIPS_3900_Ft_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Standard_Parallel_1",32.5],PARAMETER["Standard_Parallel_2",34.83333333333334],PARAMETER["Latitude_Of_Origin",31.83333333333333],UNIT["Foot",0.3048]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103522','NAD_1983_CORS96_StatePlane_South_Dakota_North_FIPS_4001',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2249','PROJCS["NAD_1983_CORS96_StatePlane_South_Dakota_North_FIPS_4001",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.0],PARAMETER["Standard_Parallel_1",44.41666666666666],PARAMETER["Standard_Parallel_2",45.68333333333333],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103523','NAD_1983_CORS96_StatePlane_South_Dakota_South_FIPS_4002',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2250','PROJCS["NAD_1983_CORS96_StatePlane_South_Dakota_South_FIPS_4002",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",42.83333333333334],PARAMETER["Standard_Parallel_2",44.4],PARAMETER["Latitude_Of_Origin",42.33333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103524','NAD_1983_CORS96_StatePlane_South_Dakota_North_FIPS_4001_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2249','PROJCS["NAD_1983_CORS96_StatePlane_South_Dakota_North_FIPS_4001_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.0],PARAMETER["Standard_Parallel_1",44.41666666666666],PARAMETER["Standard_Parallel_2",45.68333333333333],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103525','NAD_1983_CORS96_StatePlane_South_Dakota_South_FIPS_4002_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2250','PROJCS["NAD_1983_CORS96_StatePlane_South_Dakota_South_FIPS_4002_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",42.83333333333334],PARAMETER["Standard_Parallel_2",44.4],PARAMETER["Latitude_Of_Origin",42.33333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103526','NAD_1983_CORS96_StatePlane_Tennessee_FIPS_4100',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1411','PROJCS["NAD_1983_CORS96_StatePlane_Tennessee_FIPS_4100",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-86.0],PARAMETER["Standard_Parallel_1",35.25],PARAMETER["Standard_Parallel_2",36.41666666666666],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103527','NAD_1983_CORS96_StatePlane_Tennessee_FIPS_4100_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1411','PROJCS["NAD_1983_CORS96_StatePlane_Tennessee_FIPS_4100_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-86.0],PARAMETER["Standard_Parallel_1",35.25],PARAMETER["Standard_Parallel_2",36.41666666666666],PARAMETER["Latitude_Of_Origin",34.33333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103528','ETRF_1989_UTM_Zone_28N',NULL,NULL,NULL,NULL,'ESRI','104258',NULL,NULL,'EPSG','2122','PROJCS["ETRF_1989_UTM_Zone_28N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103529','ETRF_1989_UTM_Zone_29N',NULL,NULL,NULL,NULL,'ESRI','104258',NULL,NULL,'EPSG','2123','PROJCS["ETRF_1989_UTM_Zone_29N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103530','ETRF_1989_UTM_Zone_30N',NULL,NULL,NULL,NULL,'ESRI','104258',NULL,NULL,'EPSG','2124','PROJCS["ETRF_1989_UTM_Zone_30N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-3.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103531','ETRF_1989_UTM_Zone_31N',NULL,NULL,NULL,NULL,'ESRI','104258',NULL,NULL,'EPSG','2125','PROJCS["ETRF_1989_UTM_Zone_31N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",3.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103532','ETRF_1989_UTM_Zone_32N',NULL,NULL,NULL,NULL,'ESRI','104258',NULL,NULL,'EPSG','2126','PROJCS["ETRF_1989_UTM_Zone_32N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103533','ETRF_1989_UTM_Zone_33N',NULL,NULL,NULL,NULL,'ESRI','104258',NULL,NULL,'EPSG','2127','PROJCS["ETRF_1989_UTM_Zone_33N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",15.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103534','ETRF_1989_UTM_Zone_34N',NULL,NULL,NULL,NULL,'ESRI','104258',NULL,NULL,'EPSG','2128','PROJCS["ETRF_1989_UTM_Zone_34N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",21.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103535','ETRF_1989_UTM_Zone_35N',NULL,NULL,NULL,NULL,'ESRI','104258',NULL,NULL,'EPSG','2129','PROJCS["ETRF_1989_UTM_Zone_35N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",27.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103536','ETRF_1989_UTM_Zone_36N',NULL,NULL,NULL,NULL,'ESRI','104258',NULL,NULL,'EPSG','2130','PROJCS["ETRF_1989_UTM_Zone_36N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",33.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103537','ETRF_1989_UTM_Zone_37N',NULL,NULL,NULL,NULL,'ESRI','104258',NULL,NULL,'EPSG','2131','PROJCS["ETRF_1989_UTM_Zone_37N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",39.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103538','ETRF_1989_UTM_Zone_38N',NULL,NULL,NULL,NULL,'ESRI','104258',NULL,NULL,'EPSG','2132','PROJCS["ETRF_1989_UTM_Zone_38N",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",45.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103539','NAD_1983_CORS96_StatePlane_Texas_North_FIPS_4201',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2253','PROJCS["NAD_1983_CORS96_StatePlane_Texas_North_FIPS_4201",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-101.5],PARAMETER["Standard_Parallel_1",34.65],PARAMETER["Standard_Parallel_2",36.18333333333333],PARAMETER["Latitude_Of_Origin",34.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103540','NAD_1983_CORS96_StatePlane_Texas_North_Central_FIPS_4202',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2254','PROJCS["NAD_1983_CORS96_StatePlane_Texas_North_Central_FIPS_4202",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",2000000.0],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",32.13333333333333],PARAMETER["Standard_Parallel_2",33.96666666666667],PARAMETER["Latitude_Of_Origin",31.66666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103541','NAD_1983_CORS96_StatePlane_Texas_Central_FIPS_4203',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2252','PROJCS["NAD_1983_CORS96_StatePlane_Texas_Central_FIPS_4203",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",3000000.0],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",30.11666666666667],PARAMETER["Standard_Parallel_2",31.88333333333333],PARAMETER["Latitude_Of_Origin",29.66666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103542','NAD_1983_CORS96_StatePlane_Texas_South_Central_FIPS_4204',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2527','PROJCS["NAD_1983_CORS96_StatePlane_Texas_South_Central_FIPS_4204",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",4000000.0],PARAMETER["Central_Meridian",-99.0],PARAMETER["Standard_Parallel_1",28.38333333333333],PARAMETER["Standard_Parallel_2",30.28333333333333],PARAMETER["Latitude_Of_Origin",27.83333333333333],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103543','NAD_1983_CORS96_StatePlane_Texas_South_FIPS_4205',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2528','PROJCS["NAD_1983_CORS96_StatePlane_Texas_South_FIPS_4205",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",300000.0],PARAMETER["False_Northing",5000000.0],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",26.16666666666667],PARAMETER["Standard_Parallel_2",27.83333333333333],PARAMETER["Latitude_Of_Origin",25.66666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103544','NAD_1983_CORS96_StatePlane_Texas_North_FIPS_4201_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2253','PROJCS["NAD_1983_CORS96_StatePlane_Texas_North_FIPS_4201_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-101.5],PARAMETER["Standard_Parallel_1",34.65],PARAMETER["Standard_Parallel_2",36.18333333333333],PARAMETER["Latitude_Of_Origin",34.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103545','NAD_1983_CORS96_StatePlane_Texas_North_Central_FIPS_4202_FtUS',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2254','PROJCS["NAD_1983_CORS96_StatePlane_Texas_North_Central_FIPS_4202_FtUS",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",6561666.666666666],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",32.13333333333333],PARAMETER["Standard_Parallel_2",33.96666666666667],PARAMETER["Latitude_Of_Origin",31.66666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103546','NAD_1983_CORS96_StatePlane_Texas_Central_FIPS_4203_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2252','PROJCS["NAD_1983_CORS96_StatePlane_Texas_Central_FIPS_4203_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2296583.333333333],PARAMETER["False_Northing",9842500.0],PARAMETER["Central_Meridian",-100.3333333333333],PARAMETER["Standard_Parallel_1",30.11666666666667],PARAMETER["Standard_Parallel_2",31.88333333333333],PARAMETER["Latitude_Of_Origin",29.66666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103547','NAD_1983_CORS96_StatePlane_Texas_South_Central_FIPS_4204_FtUS',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2527','PROJCS["NAD_1983_CORS96_StatePlane_Texas_South_Central_FIPS_4204_FtUS",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",13123333.33333333],PARAMETER["Central_Meridian",-99.0],PARAMETER["Standard_Parallel_1",28.38333333333333],PARAMETER["Standard_Parallel_2",30.28333333333333],PARAMETER["Latitude_Of_Origin",27.83333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103548','NAD_1983_CORS96_StatePlane_Texas_South_FIPS_4205_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2528','PROJCS["NAD_1983_CORS96_StatePlane_Texas_South_FIPS_4205_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",984250.0],PARAMETER["False_Northing",16404166.66666666],PARAMETER["Central_Meridian",-98.5],PARAMETER["Standard_Parallel_1",26.16666666666667],PARAMETER["Standard_Parallel_2",27.83333333333333],PARAMETER["Latitude_Of_Origin",25.66666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103549','NAD_1983_CORS96_StatePlane_Utah_North_FIPS_4301',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2258','PROJCS["NAD_1983_CORS96_StatePlane_Utah_North_FIPS_4301",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",40.71666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40.33333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103550','NAD_1983_CORS96_StatePlane_Utah_Central_FIPS_4302',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2257','PROJCS["NAD_1983_CORS96_StatePlane_Utah_Central_FIPS_4302",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",2000000.0],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",39.01666666666667],PARAMETER["Standard_Parallel_2",40.65],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103551','NAD_1983_CORS96_StatePlane_Utah_South_FIPS_4303',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2259','PROJCS["NAD_1983_CORS96_StatePlane_Utah_South_FIPS_4303",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",3000000.0],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",37.21666666666667],PARAMETER["Standard_Parallel_2",38.35],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103552','NAD_1983_CORS96_StatePlane_Utah_North_FIPS_4301_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2258','PROJCS["NAD_1983_CORS96_StatePlane_Utah_North_FIPS_4301_Ft_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640419.947506561],PARAMETER["False_Northing",3280839.895013123],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",40.71666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40.33333333333334],UNIT["Foot",0.3048]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103553','NAD_1983_CORS96_StatePlane_Utah_Central_FIPS_4302_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2257','PROJCS["NAD_1983_CORS96_StatePlane_Utah_Central_FIPS_4302_Ft_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640419.947506561],PARAMETER["False_Northing",6561679.790026246],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",39.01666666666667],PARAMETER["Standard_Parallel_2",40.65],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Foot",0.3048]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103554','NAD_1983_CORS96_StatePlane_Utah_South_FIPS_4303_Ft_Intl',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2259','PROJCS["NAD_1983_CORS96_StatePlane_Utah_South_FIPS_4303_Ft_Intl",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640419.947506561],PARAMETER["False_Northing",9842519.685039369],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",37.21666666666667],PARAMETER["Standard_Parallel_2",38.35],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot",0.3048]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103555','NAD_1983_CORS96_StatePlane_Utah_North_FIPS_4301_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2258','PROJCS["NAD_1983_CORS96_StatePlane_Utah_North_FIPS_4301_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",40.71666666666667],PARAMETER["Standard_Parallel_2",41.78333333333333],PARAMETER["Latitude_Of_Origin",40.33333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103556','NAD_1983_CORS96_StatePlane_Utah_Central_FIPS_4302_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2257','PROJCS["NAD_1983_CORS96_StatePlane_Utah_Central_FIPS_4302_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",6561666.666666666],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",39.01666666666667],PARAMETER["Standard_Parallel_2",40.65],PARAMETER["Latitude_Of_Origin",38.33333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103557','NAD_1983_CORS96_StatePlane_Utah_South_FIPS_4303_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2259','PROJCS["NAD_1983_CORS96_StatePlane_Utah_South_FIPS_4303_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",9842500.0],PARAMETER["Central_Meridian",-111.5],PARAMETER["Standard_Parallel_1",37.21666666666667],PARAMETER["Standard_Parallel_2",38.35],PARAMETER["Latitude_Of_Origin",36.66666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103558','NAD_1983_CORS96_StatePlane_Vermont_FIPS_4400',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','1414','PROJCS["NAD_1983_CORS96_StatePlane_Vermont_FIPS_4400",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-72.5],PARAMETER["Scale_Factor",0.9999642857142857],PARAMETER["Latitude_Of_Origin",42.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103559','NAD_1983_CORS96_StatePlane_Virginia_North_FIPS_4501',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2260','PROJCS["NAD_1983_CORS96_StatePlane_Virginia_North_FIPS_4501",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3500000.0],PARAMETER["False_Northing",2000000.0],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",38.03333333333333],PARAMETER["Standard_Parallel_2",39.2],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103560','NAD_1983_CORS96_StatePlane_Virginia_South_FIPS_4502',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2261','PROJCS["NAD_1983_CORS96_StatePlane_Virginia_South_FIPS_4502",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",3500000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",36.76666666666667],PARAMETER["Standard_Parallel_2",37.96666666666667],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103561','NAD_1983_CORS96_StatePlane_Virginia_North_FIPS_4501_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2260','PROJCS["NAD_1983_CORS96_StatePlane_Virginia_North_FIPS_4501_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",11482916.66666666],PARAMETER["False_Northing",6561666.666666666],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",38.03333333333333],PARAMETER["Standard_Parallel_2",39.2],PARAMETER["Latitude_Of_Origin",37.66666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103562','NAD_1983_CORS96_StatePlane_Virginia_South_FIPS_4502_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2261','PROJCS["NAD_1983_CORS96_StatePlane_Virginia_South_FIPS_4502_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",11482916.66666666],PARAMETER["False_Northing",3280833.333333333],PARAMETER["Central_Meridian",-78.5],PARAMETER["Standard_Parallel_1",36.76666666666667],PARAMETER["Standard_Parallel_2",37.96666666666667],PARAMETER["Latitude_Of_Origin",36.33333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103563','NAD_1983_CORS96_StatePlane_Washington_North_FIPS_4601',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2273','PROJCS["NAD_1983_CORS96_StatePlane_Washington_North_FIPS_4601",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.8333333333333],PARAMETER["Standard_Parallel_1",47.5],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103564','NAD_1983_CORS96_StatePlane_Washington_South_FIPS_4602',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2274','PROJCS["NAD_1983_CORS96_StatePlane_Washington_South_FIPS_4602",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",45.83333333333334],PARAMETER["Standard_Parallel_2",47.33333333333334],PARAMETER["Latitude_Of_Origin",45.33333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103565','NAD_1983_CORS96_StatePlane_Washington_North_FIPS_4601_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2273','PROJCS["NAD_1983_CORS96_StatePlane_Washington_North_FIPS_4601_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.8333333333333],PARAMETER["Standard_Parallel_1",47.5],PARAMETER["Standard_Parallel_2",48.73333333333333],PARAMETER["Latitude_Of_Origin",47.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103566','NAD_1983_CORS96_StatePlane_Washington_South_FIPS_4602_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2274','PROJCS["NAD_1983_CORS96_StatePlane_Washington_South_FIPS_4602_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1640416.666666667],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-120.5],PARAMETER["Standard_Parallel_1",45.83333333333334],PARAMETER["Standard_Parallel_2",47.33333333333334],PARAMETER["Latitude_Of_Origin",45.33333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103567','NAD_1983_CORS96_StatePlane_West_Virginia_North_FIPS_4701',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2264','PROJCS["NAD_1983_CORS96_StatePlane_West_Virginia_North_FIPS_4701",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-79.5],PARAMETER["Standard_Parallel_1",39.0],PARAMETER["Standard_Parallel_2",40.25],PARAMETER["Latitude_Of_Origin",38.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103568','NAD_1983_CORS96_StatePlane_West_Virginia_South_FIPS_4702',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2265','PROJCS["NAD_1983_CORS96_StatePlane_West_Virginia_South_FIPS_4702",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Standard_Parallel_1",37.48333333333333],PARAMETER["Standard_Parallel_2",38.88333333333333],PARAMETER["Latitude_Of_Origin",37.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103569','NAD_1983_CORS96_StatePlane_West_Virginia_North_FIPS_4701_FtUS',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2264','PROJCS["NAD_1983_CORS96_StatePlane_West_Virginia_North_FIPS_4701_FtUS",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-79.5],PARAMETER["Standard_Parallel_1",39.0],PARAMETER["Standard_Parallel_2",40.25],PARAMETER["Latitude_Of_Origin",38.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103570','NAD_1983_CORS96_StatePlane_West_Virginia_South_FIPS_4702_FtUS',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2265','PROJCS["NAD_1983_CORS96_StatePlane_West_Virginia_South_FIPS_4702_FtUS",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-81.0],PARAMETER["Standard_Parallel_1",37.48333333333333],PARAMETER["Standard_Parallel_2",38.88333333333333],PARAMETER["Latitude_Of_Origin",37.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103571','NAD_1983_CORS96_StatePlane_Wisconsin_North_FIPS_4801',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2267','PROJCS["NAD_1983_CORS96_StatePlane_Wisconsin_North_FIPS_4801",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",45.56666666666667],PARAMETER["Standard_Parallel_2",46.76666666666667],PARAMETER["Latitude_Of_Origin",45.16666666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103572','NAD_1983_CORS96_StatePlane_Wisconsin_Central_FIPS_4802',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2266','PROJCS["NAD_1983_CORS96_StatePlane_Wisconsin_Central_FIPS_4802",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",44.25],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103573','NAD_1983_CORS96_StatePlane_Wisconsin_South_FIPS_4803',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2268','PROJCS["NAD_1983_CORS96_StatePlane_Wisconsin_South_FIPS_4803",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",42.73333333333333],PARAMETER["Standard_Parallel_2",44.06666666666667],PARAMETER["Latitude_Of_Origin",42.0],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103574','NAD_1983_CORS96_StatePlane_Wisconsin_North_FIPS_4801_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2267','PROJCS["NAD_1983_CORS96_StatePlane_Wisconsin_North_FIPS_4801_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",45.56666666666667],PARAMETER["Standard_Parallel_2",46.76666666666667],PARAMETER["Latitude_Of_Origin",45.16666666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103575','NAD_1983_CORS96_StatePlane_Wisconsin_Central_FIPS_4802_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2266','PROJCS["NAD_1983_CORS96_StatePlane_Wisconsin_Central_FIPS_4802_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",44.25],PARAMETER["Standard_Parallel_2",45.5],PARAMETER["Latitude_Of_Origin",43.83333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103576','NAD_1983_CORS96_StatePlane_Wisconsin_South_FIPS_4803_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2268','PROJCS["NAD_1983_CORS96_StatePlane_Wisconsin_South_FIPS_4803_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",42.73333333333333],PARAMETER["Standard_Parallel_2",44.06666666666667],PARAMETER["Latitude_Of_Origin",42.0],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103577','NAD_1983_CORS96_StatePlane_Wyoming_East_FIPS_4901',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2269','PROJCS["NAD_1983_CORS96_StatePlane_Wyoming_East_FIPS_4901",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",200000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-105.1666666666667],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103578','NAD_1983_CORS96_StatePlane_Wyoming_East_Central_FIPS_4902',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2270','PROJCS["NAD_1983_CORS96_StatePlane_Wyoming_East_Central_FIPS_4902",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",400000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-107.3333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103579','NAD_1983_CORS96_StatePlane_Wyoming_West_Central_FIPS_4903',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2272','PROJCS["NAD_1983_CORS96_StatePlane_Wyoming_West_Central_FIPS_4903",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-108.75],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103580','NAD_1983_CORS96_StatePlane_Wyoming_West_FIPS_4904',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2271','PROJCS["NAD_1983_CORS96_StatePlane_Wyoming_West_FIPS_4904",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",800000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-110.0833333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103581','NAD_1983_CORS96_StatePlane_Wyoming_East_FIPS_4901_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2269','PROJCS["NAD_1983_CORS96_StatePlane_Wyoming_East_FIPS_4901_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656166.6666666665],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-105.1666666666667],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103582','NAD_1983_CORS96_StatePlane_Wyoming_E_Central_FIPS_4902_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2270','PROJCS["NAD_1983_CORS96_StatePlane_Wyoming_E_Central_FIPS_4902_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1312333.333333333],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-107.3333333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103583','NAD_1983_CORS96_StatePlane_Wyoming_W_Central_FIPS_4903_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2272','PROJCS["NAD_1983_CORS96_StatePlane_Wyoming_W_Central_FIPS_4903_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-108.75],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103584','ETRF_1989_TM_Baltic_1993',NULL,NULL,NULL,NULL,'ESRI','104258',NULL,NULL,'EPSG','1646','PROJCS["ETRF_1989_TM_Baltic_1993",GEOGCS["GCS_ETRF_1989",DATUM["D_ETRF_1989",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",24.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103585','NAD_1983_CORS96_StatePlane_Wyoming_West_FIPS_4904_Ft_US',NULL,NULL,NULL,NULL,'EPSG','6783',NULL,NULL,'EPSG','2271','PROJCS["NAD_1983_CORS96_StatePlane_Wyoming_West_FIPS_4904_Ft_US",GEOGCS["GCS_NAD_1983_CORS96",DATUM["D_NAD_1983_CORS96",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",2624666.666666666],PARAMETER["False_Northing",328083.3333333333],PARAMETER["Central_Meridian",-110.0833333333333],PARAMETER["Scale_Factor",0.9999375],PARAMETER["Latitude_Of_Origin",40.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103600','NAD_1983_HARN_Adj_MN_Aitkin_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Aitkin_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",152409.319685395],PARAMETER["False_Northing",30481.86393707899],PARAMETER["Central_Meridian",-93.4325],PARAMETER["Scale_Factor",1.000059152669],PARAMETER["Latitude_Of_Origin",46.15416666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103601','NAD_1983_HARN_Adj_MN_Clay_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Clay_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",152407.2112565913],PARAMETER["False_Northing",30481.44225131827],PARAMETER["Central_Meridian",-96.7],PARAMETER["Scale_Factor",1.000045317862],PARAMETER["Latitude_Of_Origin",46.63],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103602','NAD_1983_HARN_Adj_MN_Clearwater_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Clearwater_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",152411.3546854458],PARAMETER["False_Northing",30482.27093708916],PARAMETER["Central_Meridian",-95.37583333333333],PARAMETER["Scale_Factor",1.000072505661],PARAMETER["Latitude_Of_Origin",47.15166666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103603','NAD_1983_HARN_Adj_MN_Hubbard_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Hubbard_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",152411.2096003556],PARAMETER["False_Northing",30482.24192007113],PARAMETER["Central_Meridian",-94.92055555555557],PARAMETER["Scale_Factor",1.000071553661],PARAMETER["Latitude_Of_Origin",46.80361111111111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103604','NAD_1983_HARN_Adj_MN_Lake_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Lake_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",152411.8635439675],PARAMETER["False_Northing",30482.3727087935],PARAMETER["Central_Meridian",-91.40916666666668],PARAMETER["Scale_Factor",1.000075844621],PARAMETER["Latitude_Of_Origin",47.06666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103605','NAD_1983_HARN_Adj_MN_Mille_Lacs_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Mille_Lacs_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",152408.5566885446],PARAMETER["False_Northing",30481.71133770892],PARAMETER["Central_Meridian",-93.62055555555555],PARAMETER["Scale_Factor",1.000054146138],PARAMETER["Latitude_Of_Origin",45.55888888888889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103606','NAD_1983_HARN_Adj_MN_Washington_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Washington_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",152406.3759409195],PARAMETER["False_Northing",30481.2751881839],PARAMETER["Central_Meridian",-92.83333333333333],PARAMETER["Scale_Factor",1.000039836799],PARAMETER["Latitude_Of_Origin",44.74583333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103607','NAD_1983_HARN_Adj_MN_Wilkin_Meters',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Wilkin_Meters",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",152407.7573379731],PARAMETER["False_Northing",30481.55146759462],PARAMETER["Central_Meridian",-96.52444444444444],PARAMETER["Scale_Factor",1.000048901066],PARAMETER["Latitude_Of_Origin",46.02166666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103608','NAD_1983_HARN_Adj_MN_Anoka_Meters',NULL,NULL,NULL,NULL,'ESRI','104700',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Anoka_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Anoka",DATUM["D_NAD_1983_HARN_Adj_MN_Anoka",SPHEROID["S_GRS_1980_Adj_MN_Anoka",6378418.941,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.26666666666667],PARAMETER["Standard_Parallel_1",45.06666666666667],PARAMETER["Standard_Parallel_2",45.36666666666667],PARAMETER["Latitude_Of_Origin",45.03527777777778],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103609','NAD_1983_HARN_Adj_MN_Becker_Meters',NULL,NULL,NULL,NULL,'ESRI','104701',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Becker_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Becker",DATUM["D_NAD_1983_HARN_Adj_MN_Becker",SPHEROID["S_GRS_1980_Adj_MN_Becker",6378586.581,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-95.68333333333334],PARAMETER["Standard_Parallel_1",46.78333333333333],PARAMETER["Standard_Parallel_2",47.08333333333334],PARAMETER["Latitude_Of_Origin",46.71777777777778],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103610','NAD_1983_HARN_Adj_MN_Beltrami_North_Meters',NULL,NULL,NULL,NULL,'ESRI','104702',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Beltrami_North_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Beltrami_North",DATUM["D_NAD_1983_HARN_Adj_MN_Beltrami_North",SPHEROID["S_GRS_1980_Adj_MN_Beltrami_North",6378505.809,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-95.01666666666667],PARAMETER["Standard_Parallel_1",48.11666666666667],PARAMETER["Standard_Parallel_2",48.46666666666667],PARAMETER["Latitude_Of_Origin",48.02],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103611','NAD_1983_HARN_Adj_MN_Beltrami_South_Meters',NULL,NULL,NULL,NULL,'ESRI','104703',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Beltrami_South_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Beltrami_South",DATUM["D_NAD_1983_HARN_Adj_MN_Beltrami_South",SPHEROID["S_GRS_1980_Adj_MN_Beltrami_South",6378544.823,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.85],PARAMETER["Standard_Parallel_1",47.5],PARAMETER["Standard_Parallel_2",47.91666666666666],PARAMETER["Latitude_Of_Origin",47.4125],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103612','NAD_1983_HARN_Adj_MN_Benton_Meters',NULL,NULL,NULL,NULL,'ESRI','104704',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Benton_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Benton",DATUM["D_NAD_1983_HARN_Adj_MN_Benton",SPHEROID["S_GRS_1980_Adj_MN_Benton",6378490.569,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.05],PARAMETER["Standard_Parallel_1",45.58333333333334],PARAMETER["Standard_Parallel_2",45.78333333333333],PARAMETER["Latitude_Of_Origin",45.55916666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103613','NAD_1983_HARN_Adj_MN_Big_Stone_Meters',NULL,NULL,NULL,NULL,'ESRI','104705',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Big_Stone_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Big_Stone",DATUM["D_NAD_1983_HARN_Adj_MN_Big_Stone",SPHEROID["S_GRS_1980_Adj_MN_Big_Stone",6378470.757,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-96.05],PARAMETER["Standard_Parallel_1",45.21666666666667],PARAMETER["Standard_Parallel_2",45.53333333333333],PARAMETER["Latitude_Of_Origin",45.15222222222222],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103614','NAD_1983_HARN_Adj_MN_Blue_Earth_Meters',NULL,NULL,NULL,NULL,'ESRI','104706',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Blue_Earth_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Blue_Earth",DATUM["D_NAD_1983_HARN_Adj_MN_Blue_Earth",SPHEROID["S_GRS_1980_Adj_MN_Blue_Earth",6378403.701,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.26666666666667],PARAMETER["Standard_Parallel_1",43.93333333333333],PARAMETER["Standard_Parallel_2",44.36666666666667],PARAMETER["Latitude_Of_Origin",43.84805555555556],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103615','NAD_1983_HARN_Adj_MN_Brown_Meters',NULL,NULL,NULL,NULL,'ESRI','104707',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Brown_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Brown",DATUM["D_NAD_1983_HARN_Adj_MN_Brown",SPHEROID["S_GRS_1980_Adj_MN_Brown",6378434.181,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.73333333333333],PARAMETER["Standard_Parallel_1",44.16666666666666],PARAMETER["Standard_Parallel_2",44.46666666666667],PARAMETER["Latitude_Of_Origin",44.10805555555556],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103616','NAD_1983_HARN_Adj_MN_Carlton_Meters',NULL,NULL,NULL,NULL,'ESRI','104708',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Carlton_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Carlton",DATUM["D_NAD_1983_HARN_Adj_MN_Carlton",SPHEROID["S_GRS_1980_Adj_MN_Carlton",6378454.907,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-92.68333333333334],PARAMETER["Standard_Parallel_1",46.46666666666667],PARAMETER["Standard_Parallel_2",46.73333333333333],PARAMETER["Latitude_Of_Origin",46.41722222222222],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103617','NAD_1983_HARN_Adj_MN_Carver_Meters',NULL,NULL,NULL,NULL,'ESRI','104709',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Carver_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Carver",DATUM["D_NAD_1983_HARN_Adj_MN_Carver",SPHEROID["S_GRS_1980_Adj_MN_Carver",6378400.653,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.76666666666667],PARAMETER["Standard_Parallel_1",44.68333333333333],PARAMETER["Standard_Parallel_2",44.9],PARAMETER["Latitude_Of_Origin",44.63972222222222],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103618','NAD_1983_HARN_Adj_MN_Cass_North_Meters',NULL,NULL,NULL,NULL,'ESRI','104710',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Cass_North_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Cass_North",DATUM["D_NAD_1983_HARN_Adj_MN_Cass_North",SPHEROID["S_GRS_1980_Adj_MN_Cass_North",6378567.378,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.21666666666667],PARAMETER["Standard_Parallel_1",46.91666666666666],PARAMETER["Standard_Parallel_2",47.31666666666667],PARAMETER["Latitude_Of_Origin",46.80361111111111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103619','NAD_1983_HARN_Adj_MN_Cass_South_Meters',NULL,NULL,NULL,NULL,'ESRI','104711',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Cass_South_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Cass_South",DATUM["D_NAD_1983_HARN_Adj_MN_Cass_South",SPHEROID["S_GRS_1980_Adj_MN_Cass_South",6378546.957,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.46666666666667],PARAMETER["Standard_Parallel_1",46.26666666666667],PARAMETER["Standard_Parallel_2",46.73333333333333],PARAMETER["Latitude_Of_Origin",46.15638888888888],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103620','NAD_1983_HARN_Adj_MN_Chippewa_Meters',NULL,NULL,NULL,NULL,'ESRI','104712',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Chippewa_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Chippewa",DATUM["D_NAD_1983_HARN_Adj_MN_Chippewa",SPHEROID["S_GRS_1980_Adj_MN_Chippewa",6378476.853,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-95.85],PARAMETER["Standard_Parallel_1",44.83333333333334],PARAMETER["Standard_Parallel_2",45.2],PARAMETER["Latitude_Of_Origin",44.75277777777778],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103621','NAD_1983_HARN_Adj_MN_Chisago_Meters',NULL,NULL,NULL,NULL,'ESRI','104713',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Chisago_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Chisago",DATUM["D_NAD_1983_HARN_Adj_MN_Chisago",SPHEROID["S_GRS_1980_Adj_MN_Chisago",6378411.321,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.08333333333333],PARAMETER["Standard_Parallel_1",45.33333333333334],PARAMETER["Standard_Parallel_2",45.66666666666666],PARAMETER["Latitude_Of_Origin",45.29638888888888],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103622','NAD_1983_HARN_Adj_MN_Cook_North_Meters',NULL,NULL,NULL,NULL,'ESRI','104714',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Cook_North_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Cook_North",DATUM["D_NAD_1983_HARN_Adj_MN_Cook_North",SPHEROID["S_GRS_1980_Adj_MN_Cook_North",6378647.541,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-90.25],PARAMETER["Standard_Parallel_1",47.93333333333333],PARAMETER["Standard_Parallel_2",48.16666666666666],PARAMETER["Latitude_Of_Origin",47.88333333333333],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103623','NAD_1983_HARN_Adj_MN_Cook_South_Meters',NULL,NULL,NULL,NULL,'ESRI','104715',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Cook_South_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Cook_South",DATUM["D_NAD_1983_HARN_Adj_MN_Cook_South",SPHEROID["S_GRS_1980_Adj_MN_Cook_South",6378647.541,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-90.25],PARAMETER["Standard_Parallel_1",47.55],PARAMETER["Standard_Parallel_2",47.81666666666667],PARAMETER["Latitude_Of_Origin",47.43888888888888],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103624','NAD_1983_HARN_Adj_MN_Cottonwood_Meters',NULL,NULL,NULL,NULL,'ESRI','104716',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Cottonwood_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Cottonwood",DATUM["D_NAD_1983_HARN_Adj_MN_Cottonwood",SPHEROID["S_GRS_1980_Adj_MN_Cottonwood",6378514.953,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.91666666666667],PARAMETER["Standard_Parallel_1",43.9],PARAMETER["Standard_Parallel_2",44.16666666666666],PARAMETER["Latitude_Of_Origin",43.84805555555556],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103625','NAD_1983_HARN_Adj_MN_Crow_Wing_Meters',NULL,NULL,NULL,NULL,'ESRI','104717',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Crow_Wing_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Crow_Wing",DATUM["D_NAD_1983_HARN_Adj_MN_Crow_Wing",SPHEROID["S_GRS_1980_Adj_MN_Crow_Wing",6378546.957,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.46666666666667],PARAMETER["Standard_Parallel_1",46.26666666666667],PARAMETER["Standard_Parallel_2",46.73333333333333],PARAMETER["Latitude_Of_Origin",46.15638888888888],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103626','NAD_1983_HARN_Adj_MN_Dakota_Meters',NULL,NULL,NULL,NULL,'ESRI','104718',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Dakota_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Dakota",DATUM["D_NAD_1983_HARN_Adj_MN_Dakota",SPHEROID["S_GRS_1980_Adj_MN_Dakota",6378421.989,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.31666666666666],PARAMETER["Standard_Parallel_1",44.51666666666667],PARAMETER["Standard_Parallel_2",44.91666666666666],PARAMETER["Latitude_Of_Origin",44.47194444444445],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103627','NAD_1983_HARN_Adj_MN_Dodge_Meters',NULL,NULL,NULL,NULL,'ESRI','104719',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Dodge_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Dodge",DATUM["D_NAD_1983_HARN_Adj_MN_Dodge",SPHEROID["S_GRS_1980_Adj_MN_Dodge",6378481.425,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-92.91666666666667],PARAMETER["Standard_Parallel_1",43.88333333333333],PARAMETER["Standard_Parallel_2",44.13333333333333],PARAMETER["Latitude_Of_Origin",43.83388888888889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103628','NAD_1983_HARN_Adj_MN_Douglas_Meters',NULL,NULL,NULL,NULL,'ESRI','104720',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Douglas_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Douglas",DATUM["D_NAD_1983_HARN_Adj_MN_Douglas",SPHEROID["S_GRS_1980_Adj_MN_Douglas",6378518.001,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-96.05],PARAMETER["Standard_Parallel_1",45.8],PARAMETER["Standard_Parallel_2",46.05],PARAMETER["Latitude_Of_Origin",45.75888888888889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103629','NAD_1983_HARN_Adj_MN_Faribault_Meters',NULL,NULL,NULL,NULL,'ESRI','104721',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Faribault_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Faribault",DATUM["D_NAD_1983_HARN_Adj_MN_Faribault",SPHEROID["S_GRS_1980_Adj_MN_Faribault",6378521.049,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.95],PARAMETER["Standard_Parallel_1",43.56666666666667],PARAMETER["Standard_Parallel_2",43.8],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103630','NAD_1983_HARN_Adj_MN_Fillmore_Meters',NULL,NULL,NULL,NULL,'ESRI','104722',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Fillmore_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Fillmore",DATUM["D_NAD_1983_HARN_Adj_MN_Fillmore",SPHEROID["S_GRS_1980_Adj_MN_Fillmore",6378464.661,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-92.08333333333333],PARAMETER["Standard_Parallel_1",43.55],PARAMETER["Standard_Parallel_2",43.8],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103631','NAD_1983_HARN_Adj_MN_Freeborn_Meters',NULL,NULL,NULL,NULL,'ESRI','104723',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Freeborn_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Freeborn",DATUM["D_NAD_1983_HARN_Adj_MN_Freeborn",SPHEROID["S_GRS_1980_Adj_MN_Freeborn",6378521.049,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.95],PARAMETER["Standard_Parallel_1",43.56666666666667],PARAMETER["Standard_Parallel_2",43.8],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103632','NAD_1983_HARN_Adj_MN_Goodhue_Meters',NULL,NULL,NULL,NULL,'ESRI','104724',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Goodhue_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Goodhue",DATUM["D_NAD_1983_HARN_Adj_MN_Goodhue",SPHEROID["S_GRS_1980_Adj_MN_Goodhue",6378434.181,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.13333333333334],PARAMETER["Standard_Parallel_1",44.3],PARAMETER["Standard_Parallel_2",44.66666666666666],PARAMETER["Latitude_Of_Origin",44.19472222222222],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103633','NAD_1983_HARN_Adj_MN_Grant_Meters',NULL,NULL,NULL,NULL,'ESRI','104725',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Grant_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Grant",DATUM["D_NAD_1983_HARN_Adj_MN_Grant",SPHEROID["S_GRS_1980_Adj_MN_Grant",6378518.001,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-96.05],PARAMETER["Standard_Parallel_1",45.8],PARAMETER["Standard_Parallel_2",46.05],PARAMETER["Latitude_Of_Origin",45.75888888888889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103634','NAD_1983_HARN_Adj_MN_Hennepin_Meters',NULL,NULL,NULL,NULL,'ESRI','104726',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Hennepin_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Hennepin",DATUM["D_NAD_1983_HARN_Adj_MN_Hennepin",SPHEROID["S_GRS_1980_Adj_MN_Hennepin",6378418.941,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.38333333333334],PARAMETER["Standard_Parallel_1",44.88333333333333],PARAMETER["Standard_Parallel_2",45.13333333333333],PARAMETER["Latitude_Of_Origin",44.79111111111111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103635','NAD_1983_HARN_Adj_MN_Houston_Meters',NULL,NULL,NULL,NULL,'ESRI','104727',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Houston_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Houston",DATUM["D_NAD_1983_HARN_Adj_MN_Houston",SPHEROID["S_GRS_1980_Adj_MN_Houston",6378436.619,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-91.46666666666667],PARAMETER["Standard_Parallel_1",43.56666666666667],PARAMETER["Standard_Parallel_2",43.8],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103636','NAD_1983_HARN_Adj_MN_Isanti_Meters',NULL,NULL,NULL,NULL,'ESRI','104728',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Isanti_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Isanti",DATUM["D_NAD_1983_HARN_Adj_MN_Isanti",SPHEROID["S_GRS_1980_Adj_MN_Isanti",6378411.321,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.08333333333333],PARAMETER["Standard_Parallel_1",45.33333333333334],PARAMETER["Standard_Parallel_2",45.66666666666666],PARAMETER["Latitude_Of_Origin",45.29638888888888],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103637','NAD_1983_HARN_Adj_MN_Itasca_North_Meters',NULL,NULL,NULL,NULL,'ESRI','104729',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Itasca_North_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Itasca_North",DATUM["D_NAD_1983_HARN_Adj_MN_Itasca_North",SPHEROID["S_GRS_1980_Adj_MN_Itasca_North",6378574.389,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.73333333333333],PARAMETER["Standard_Parallel_1",47.56666666666667],PARAMETER["Standard_Parallel_2",47.81666666666667],PARAMETER["Latitude_Of_Origin",47.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103638','NAD_1983_HARN_Adj_MN_Itasca_South_Meters',NULL,NULL,NULL,NULL,'ESRI','104730',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Itasca_South_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Itasca_South",DATUM["D_NAD_1983_HARN_Adj_MN_Itasca_South",SPHEROID["S_GRS_1980_Adj_MN_Itasca_South",6378574.389,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.73333333333333],PARAMETER["Standard_Parallel_1",47.08333333333334],PARAMETER["Standard_Parallel_2",47.41666666666666],PARAMETER["Latitude_Of_Origin",47.02638888888889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103639','NAD_1983_HARN_Adj_MN_Jackson_Meters',NULL,NULL,NULL,NULL,'ESRI','104731',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Jackson_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Jackson",DATUM["D_NAD_1983_HARN_Adj_MN_Jackson",SPHEROID["S_GRS_1980_Adj_MN_Jackson",6378521.049,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.95],PARAMETER["Standard_Parallel_1",43.56666666666667],PARAMETER["Standard_Parallel_2",43.8],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103640','NAD_1983_HARN_Adj_MN_Kanabec_Meters',NULL,NULL,NULL,NULL,'ESRI','104732',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Kanabec_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Kanabec",DATUM["D_NAD_1983_HARN_Adj_MN_Kanabec",SPHEROID["S_GRS_1980_Adj_MN_Kanabec",6378472.281,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-92.9],PARAMETER["Standard_Parallel_1",45.81666666666667],PARAMETER["Standard_Parallel_2",46.33333333333334],PARAMETER["Latitude_Of_Origin",45.73],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103641','NAD_1983_HARN_Adj_MN_Kandiyohi_Meters',NULL,NULL,NULL,NULL,'ESRI','104733',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Kandiyohi_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Kandiyohi",DATUM["D_NAD_1983_HARN_Adj_MN_Kandiyohi",SPHEROID["S_GRS_1980_Adj_MN_Kandiyohi",6378498.189,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.75],PARAMETER["Standard_Parallel_1",44.96666666666667],PARAMETER["Standard_Parallel_2",45.33333333333334],PARAMETER["Latitude_Of_Origin",44.89138888888889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103642','NAD_1983_HARN_Adj_MN_Kittson_Meters',NULL,NULL,NULL,NULL,'ESRI','104734',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Kittson_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Kittson",DATUM["D_NAD_1983_HARN_Adj_MN_Kittson",SPHEROID["S_GRS_1980_Adj_MN_Kittson",6378449.421,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-96.15],PARAMETER["Standard_Parallel_1",48.6],PARAMETER["Standard_Parallel_2",48.93333333333333],PARAMETER["Latitude_Of_Origin",48.54388888888889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103643','NAD_1983_HARN_Adj_MN_Koochiching_Meters',NULL,NULL,NULL,NULL,'ESRI','104735',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Koochiching_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Koochiching",DATUM["D_NAD_1983_HARN_Adj_MN_Koochiching",SPHEROID["S_GRS_1980_Adj_MN_Koochiching",6378525.621,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.75],PARAMETER["Standard_Parallel_1",48.0],PARAMETER["Standard_Parallel_2",48.61666666666667],PARAMETER["Latitude_Of_Origin",47.84583333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103644','NAD_1983_HARN_Adj_MN_Lac_Qui_Parle_Meters',NULL,NULL,NULL,NULL,'ESRI','104736',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Lac_Qui_Parle_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Lac_Qui_Parle",DATUM["D_NAD_1983_HARN_Adj_MN_Lac_Qui_Parle",SPHEROID["S_GRS_1980_Adj_MN_Lac_Qui_Parle",6378476.853,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-95.85],PARAMETER["Standard_Parallel_1",44.83333333333334],PARAMETER["Standard_Parallel_2",45.2],PARAMETER["Latitude_Of_Origin",44.75277777777778],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103645','NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_North_Meters',NULL,NULL,NULL,NULL,'ESRI','104737',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_North_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_North",DATUM["D_NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_North",SPHEROID["S_GRS_1980_Adj_MN_Lake_of_the_Woods_North",6378466.185,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.98333333333333],PARAMETER["Standard_Parallel_1",49.18333333333333],PARAMETER["Standard_Parallel_2",49.33333333333334],PARAMETER["Latitude_Of_Origin",49.15],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103646','NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_South_Meters',NULL,NULL,NULL,NULL,'ESRI','104738',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_South_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_South",DATUM["D_NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_South",SPHEROID["S_GRS_1980_Adj_MN_Lake_of_the_Woods_South",6378496.665,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.88333333333334],PARAMETER["Standard_Parallel_1",48.45],PARAMETER["Standard_Parallel_2",48.88333333333333],PARAMETER["Latitude_Of_Origin",48.36611111111111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103647','NAD_1983_HARN_Adj_MN_Le_Sueur_Meters',NULL,NULL,NULL,NULL,'ESRI','104739',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Le_Sueur_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Le_Sueur",DATUM["D_NAD_1983_HARN_Adj_MN_Le_Sueur",SPHEROID["S_GRS_1980_Adj_MN_Le_Sueur",6378434.181,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.13333333333334],PARAMETER["Standard_Parallel_1",44.3],PARAMETER["Standard_Parallel_2",44.66666666666666],PARAMETER["Latitude_Of_Origin",44.19472222222222],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103648','NAD_1983_HARN_Adj_MN_Lincoln_Meters',NULL,NULL,NULL,NULL,'ESRI','104740',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Lincoln_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Lincoln",DATUM["D_NAD_1983_HARN_Adj_MN_Lincoln",SPHEROID["S_GRS_1980_Adj_MN_Lincoln",6378643.579,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-96.26666666666667],PARAMETER["Standard_Parallel_1",44.28333333333333],PARAMETER["Standard_Parallel_2",44.61666666666667],PARAMETER["Latitude_Of_Origin",44.19666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103649','NAD_1983_HARN_Adj_MN_Lyon_Meters',NULL,NULL,NULL,NULL,'ESRI','104741',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Lyon_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Lyon",DATUM["D_NAD_1983_HARN_Adj_MN_Lyon",SPHEROID["S_GRS_1980_Adj_MN_Lyon",6378559.758,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-95.85],PARAMETER["Standard_Parallel_1",44.25],PARAMETER["Standard_Parallel_2",44.58333333333334],PARAMETER["Latitude_Of_Origin",44.19555555555555],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103650','NAD_1983_HARN_Adj_MN_McLeod_Meters',NULL,NULL,NULL,NULL,'ESRI','104742',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_McLeod_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_McLeod",DATUM["D_NAD_1983_HARN_Adj_MN_McLeod",SPHEROID["S_GRS_1980_Adj_MN_McLeod",6378414.369,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.63333333333334],PARAMETER["Standard_Parallel_1",44.53333333333333],PARAMETER["Standard_Parallel_2",44.91666666666666],PARAMETER["Latitude_Of_Origin",44.45611111111111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103651','NAD_1983_HARN_Adj_MN_Mahnomen_Meters',NULL,NULL,NULL,NULL,'ESRI','104743',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Mahnomen_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Mahnomen",DATUM["D_NAD_1983_HARN_Adj_MN_Mahnomen",SPHEROID["S_GRS_1980_Adj_MN_Mahnomen",6378586.581,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-95.81666666666666],PARAMETER["Standard_Parallel_1",47.2],PARAMETER["Standard_Parallel_2",47.45],PARAMETER["Latitude_Of_Origin",47.15166666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103652','NAD_1983_HARN_Adj_MN_Marshall_Meters',NULL,NULL,NULL,NULL,'ESRI','104744',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Marshall_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Marshall",DATUM["D_NAD_1983_HARN_Adj_MN_Marshall",SPHEROID["S_GRS_1980_Adj_MN_Marshall",6378441.801,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-96.38333333333334],PARAMETER["Standard_Parallel_1",48.23333333333333],PARAMETER["Standard_Parallel_2",48.48333333333333],PARAMETER["Latitude_Of_Origin",48.17305555555555],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103653','NAD_1983_HARN_Adj_MN_Martin_Meters',NULL,NULL,NULL,NULL,'ESRI','104745',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Martin_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Martin",DATUM["D_NAD_1983_HARN_Adj_MN_Martin",SPHEROID["S_GRS_1980_Adj_MN_Martin",6378521.049,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.95],PARAMETER["Standard_Parallel_1",43.56666666666667],PARAMETER["Standard_Parallel_2",43.8],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103654','NAD_1983_HARN_Adj_MN_Meeker_Meters',NULL,NULL,NULL,NULL,'ESRI','104746',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Meeker_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Meeker",DATUM["D_NAD_1983_HARN_Adj_MN_Meeker",SPHEROID["S_GRS_1980_Adj_MN_Meeker",6378498.189,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.75],PARAMETER["Standard_Parallel_1",44.96666666666667],PARAMETER["Standard_Parallel_2",45.33333333333334],PARAMETER["Latitude_Of_Origin",44.89138888888889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103655','NAD_1983_HARN_Adj_MN_Morrison_Meters',NULL,NULL,NULL,NULL,'ESRI','104747',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Morrison_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Morrison",DATUM["D_NAD_1983_HARN_Adj_MN_Morrison",SPHEROID["S_GRS_1980_Adj_MN_Morrison",6378502.761,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.2],PARAMETER["Standard_Parallel_1",45.85],PARAMETER["Standard_Parallel_2",46.26666666666667],PARAMETER["Latitude_Of_Origin",45.77388888888889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103656','NAD_1983_HARN_Adj_MN_Mower_Meters',NULL,NULL,NULL,NULL,'ESRI','104748',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Mower_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Mower",DATUM["D_NAD_1983_HARN_Adj_MN_Mower",SPHEROID["S_GRS_1980_Adj_MN_Mower",6378521.049,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.95],PARAMETER["Standard_Parallel_1",43.56666666666667],PARAMETER["Standard_Parallel_2",43.8],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103657','NAD_1983_HARN_Adj_MN_Murray_Meters',NULL,NULL,NULL,NULL,'ESRI','104749',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Murray_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Murray",DATUM["D_NAD_1983_HARN_Adj_MN_Murray",SPHEROID["S_GRS_1980_Adj_MN_Murray",6378617.061,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-95.76666666666667],PARAMETER["Standard_Parallel_1",43.91666666666666],PARAMETER["Standard_Parallel_2",44.16666666666666],PARAMETER["Latitude_Of_Origin",43.84805555555556],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103658','NAD_1983_HARN_Adj_MN_Nicollet_Meters',NULL,NULL,NULL,NULL,'ESRI','104750',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Nicollet_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Nicollet",DATUM["D_NAD_1983_HARN_Adj_MN_Nicollet",SPHEROID["S_GRS_1980_Adj_MN_Nicollet",6378403.701,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.26666666666667],PARAMETER["Standard_Parallel_1",43.93333333333333],PARAMETER["Standard_Parallel_2",44.36666666666667],PARAMETER["Latitude_Of_Origin",43.84805555555556],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103659','NAD_1983_HARN_Adj_MN_Nobles_Meters',NULL,NULL,NULL,NULL,'ESRI','104751',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Nobles_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Nobles",DATUM["D_NAD_1983_HARN_Adj_MN_Nobles",SPHEROID["S_GRS_1980_Adj_MN_Nobles",6378624.681,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-95.95],PARAMETER["Standard_Parallel_1",43.56666666666667],PARAMETER["Standard_Parallel_2",43.8],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103660','NAD_1983_HARN_Adj_MN_Norman_Meters',NULL,NULL,NULL,NULL,'ESRI','104752',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Norman_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Norman",DATUM["D_NAD_1983_HARN_Adj_MN_Norman",SPHEROID["S_GRS_1980_Adj_MN_Norman",6378468.623,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-96.45],PARAMETER["Standard_Parallel_1",47.2],PARAMETER["Standard_Parallel_2",47.45],PARAMETER["Latitude_Of_Origin",47.15055555555556],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103661','NAD_1983_HARN_Adj_MN_Olmsted_Meters',NULL,NULL,NULL,NULL,'ESRI','104753',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Olmsted_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Olmsted",DATUM["D_NAD_1983_HARN_Adj_MN_Olmsted",SPHEROID["S_GRS_1980_Adj_MN_Olmsted",6378481.425,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-92.91666666666667],PARAMETER["Standard_Parallel_1",43.88333333333333],PARAMETER["Standard_Parallel_2",44.13333333333333],PARAMETER["Latitude_Of_Origin",43.83388888888889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103662','NAD_1983_HARN_Adj_MN_Ottertail_Meters',NULL,NULL,NULL,NULL,'ESRI','104754',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Ottertail_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Ottertail",DATUM["D_NAD_1983_HARN_Adj_MN_Ottertail",SPHEROID["S_GRS_1980_Adj_MN_Ottertail",6378525.621,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-95.71666666666667],PARAMETER["Standard_Parallel_1",46.18333333333333],PARAMETER["Standard_Parallel_2",46.65],PARAMETER["Latitude_Of_Origin",46.10638888888889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103663','NAD_1983_HARN_Adj_MN_Pennington_Meters',NULL,NULL,NULL,NULL,'ESRI','104755',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Pennington_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Pennington",DATUM["D_NAD_1983_HARN_Adj_MN_Pennington",SPHEROID["S_GRS_1980_Adj_MN_Pennington",6378445.763,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-96.36666666666666],PARAMETER["Standard_Parallel_1",47.6],PARAMETER["Standard_Parallel_2",48.08333333333334],PARAMETER["Latitude_Of_Origin",47.49888888888889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103664','NAD_1983_HARN_Adj_MN_Pine_Meters',NULL,NULL,NULL,NULL,'ESRI','104756',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Pine_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Pine",DATUM["D_NAD_1983_HARN_Adj_MN_Pine",SPHEROID["S_GRS_1980_Adj_MN_Pine",6378472.281,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-92.9],PARAMETER["Standard_Parallel_1",45.81666666666667],PARAMETER["Standard_Parallel_2",46.33333333333334],PARAMETER["Latitude_Of_Origin",45.73],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103665','NAD_1983_HARN_Adj_MN_Pipestone_Meters',NULL,NULL,NULL,NULL,'ESRI','104757',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Pipestone_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Pipestone",DATUM["D_NAD_1983_HARN_Adj_MN_Pipestone",SPHEROID["S_GRS_1980_Adj_MN_Pipestone",6378670.401,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-96.25],PARAMETER["Standard_Parallel_1",43.88333333333333],PARAMETER["Standard_Parallel_2",44.15],PARAMETER["Latitude_Of_Origin",43.84916666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103666','NAD_1983_HARN_Adj_MN_Polk_Meters',NULL,NULL,NULL,NULL,'ESRI','104758',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Polk_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Polk",DATUM["D_NAD_1983_HARN_Adj_MN_Polk",SPHEROID["S_GRS_1980_Adj_MN_Polk",6378445.763,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-96.36666666666666],PARAMETER["Standard_Parallel_1",47.6],PARAMETER["Standard_Parallel_2",48.08333333333334],PARAMETER["Latitude_Of_Origin",47.49888888888889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103667','NAD_1983_HARN_Adj_MN_Pope_Meters',NULL,NULL,NULL,NULL,'ESRI','104759',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Pope_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Pope",DATUM["D_NAD_1983_HARN_Adj_MN_Pope",SPHEROID["S_GRS_1980_Adj_MN_Pope",6378502.761,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-95.15],PARAMETER["Standard_Parallel_1",45.35],PARAMETER["Standard_Parallel_2",45.7],PARAMETER["Latitude_Of_Origin",45.28277777777777],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103668','NAD_1983_HARN_Adj_MN_Ramsey_Meters',NULL,NULL,NULL,NULL,'ESRI','104760',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Ramsey_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Ramsey",DATUM["D_NAD_1983_HARN_Adj_MN_Ramsey",SPHEROID["S_GRS_1980_Adj_MN_Ramsey",6378418.941,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.38333333333334],PARAMETER["Standard_Parallel_1",44.88333333333333],PARAMETER["Standard_Parallel_2",45.13333333333333],PARAMETER["Latitude_Of_Origin",44.79111111111111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103669','NAD_1983_HARN_Adj_MN_Red_Lake_Meters',NULL,NULL,NULL,NULL,'ESRI','104761',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Red_Lake_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Red_Lake",DATUM["D_NAD_1983_HARN_Adj_MN_Red_Lake",SPHEROID["S_GRS_1980_Adj_MN_Red_Lake",6378445.763,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-96.36666666666666],PARAMETER["Standard_Parallel_1",47.6],PARAMETER["Standard_Parallel_2",48.08333333333334],PARAMETER["Latitude_Of_Origin",47.49888888888889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103670','NAD_1983_HARN_Adj_MN_Redwood_Meters',NULL,NULL,NULL,NULL,'ESRI','104762',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Redwood_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Redwood",DATUM["D_NAD_1983_HARN_Adj_MN_Redwood",SPHEROID["S_GRS_1980_Adj_MN_Redwood",6378438.753,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-95.23333333333333],PARAMETER["Standard_Parallel_1",44.26666666666667],PARAMETER["Standard_Parallel_2",44.56666666666667],PARAMETER["Latitude_Of_Origin",44.19472222222222],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103671','NAD_1983_HARN_Adj_MN_Renville_Meters',NULL,NULL,NULL,NULL,'ESRI','104763',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Renville_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Renville",DATUM["D_NAD_1983_HARN_Adj_MN_Renville",SPHEROID["S_GRS_1980_Adj_MN_Renville",6378414.369,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.63333333333334],PARAMETER["Standard_Parallel_1",44.53333333333333],PARAMETER["Standard_Parallel_2",44.91666666666666],PARAMETER["Latitude_Of_Origin",44.45611111111111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103672','NAD_1983_HARN_Adj_MN_Rice_Meters',NULL,NULL,NULL,NULL,'ESRI','104764',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Rice_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Rice",DATUM["D_NAD_1983_HARN_Adj_MN_Rice",SPHEROID["S_GRS_1980_Adj_MN_Rice",6378434.181,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.13333333333334],PARAMETER["Standard_Parallel_1",44.3],PARAMETER["Standard_Parallel_2",44.66666666666666],PARAMETER["Latitude_Of_Origin",44.19472222222222],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103673','NAD_1983_HARN_Adj_MN_Rock_Meters',NULL,NULL,NULL,NULL,'ESRI','104765',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Rock_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Rock",DATUM["D_NAD_1983_HARN_Adj_MN_Rock",SPHEROID["S_GRS_1980_Adj_MN_Rock",6378624.681,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-95.95],PARAMETER["Standard_Parallel_1",43.56666666666667],PARAMETER["Standard_Parallel_2",43.8],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103674','NAD_1983_HARN_Adj_MN_Roseau_Meters',NULL,NULL,NULL,NULL,'ESRI','104766',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Roseau_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Roseau",DATUM["D_NAD_1983_HARN_Adj_MN_Roseau",SPHEROID["S_GRS_1980_Adj_MN_Roseau",6378449.421,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-96.15],PARAMETER["Standard_Parallel_1",48.6],PARAMETER["Standard_Parallel_2",48.93333333333333],PARAMETER["Latitude_Of_Origin",48.54388888888889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103675','NAD_1983_HARN_Adj_MN_St_Louis_North_Meters',NULL,NULL,NULL,NULL,'ESRI','104767',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_St_Louis_North_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_St_Louis_North",DATUM["D_NAD_1983_HARN_Adj_MN_St_Louis_North",SPHEROID["S_GRS_1980_Adj_MN_St_Louis_North",6378543.909,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-92.45],PARAMETER["Standard_Parallel_1",47.98333333333333],PARAMETER["Standard_Parallel_2",48.53333333333333],PARAMETER["Latitude_Of_Origin",47.83333333333334],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103676','NAD_1983_HARN_Adj_MN_St_Louis_Central_Meters',NULL,NULL,NULL,NULL,'ESRI','104768',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_St_Louis_Central_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_St_Louis_Central",DATUM["D_NAD_1983_HARN_Adj_MN_St_Louis_Central",SPHEROID["S_GRS_1980_Adj_MN_St_Louis_Central",6378605.783,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-92.45],PARAMETER["Standard_Parallel_1",47.33333333333334],PARAMETER["Standard_Parallel_2",47.75],PARAMETER["Latitude_Of_Origin",47.25],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103677','NAD_1983_HARN_Adj_MN_St_Louis_South_Meters',NULL,NULL,NULL,NULL,'ESRI','104769',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_St_Louis_South_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_St_Louis_South",DATUM["D_NAD_1983_HARN_Adj_MN_St_Louis_South",SPHEROID["S_GRS_1980_Adj_MN_St_Louis_South",6378540.861,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-92.45],PARAMETER["Standard_Parallel_1",46.78333333333333],PARAMETER["Standard_Parallel_2",47.13333333333333],PARAMETER["Latitude_Of_Origin",46.65],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103678','NAD_1983_HARN_Adj_MN_Scott_Meters',NULL,NULL,NULL,NULL,'ESRI','104770',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Scott_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Scott",DATUM["D_NAD_1983_HARN_Adj_MN_Scott",SPHEROID["S_GRS_1980_Adj_MN_Scott",6378421.989,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.31666666666666],PARAMETER["Standard_Parallel_1",44.51666666666667],PARAMETER["Standard_Parallel_2",44.91666666666666],PARAMETER["Latitude_Of_Origin",44.47194444444445],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103679','NAD_1983_HARN_Adj_MN_Sherburne_Meters',NULL,NULL,NULL,NULL,'ESRI','104771',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Sherburne_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Sherburne",DATUM["D_NAD_1983_HARN_Adj_MN_Sherburne",SPHEROID["S_GRS_1980_Adj_MN_Sherburne",6378443.325,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.88333333333334],PARAMETER["Standard_Parallel_1",45.03333333333333],PARAMETER["Standard_Parallel_2",45.46666666666667],PARAMETER["Latitude_Of_Origin",44.9775],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103680','NAD_1983_HARN_Adj_MN_Sibley_Meters',NULL,NULL,NULL,NULL,'ESRI','104772',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Sibley_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Sibley",DATUM["D_NAD_1983_HARN_Adj_MN_Sibley",SPHEROID["S_GRS_1980_Adj_MN_Sibley",6378414.369,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.63333333333334],PARAMETER["Standard_Parallel_1",44.53333333333333],PARAMETER["Standard_Parallel_2",44.91666666666666],PARAMETER["Latitude_Of_Origin",44.45611111111111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103681','NAD_1983_HARN_Adj_MN_Stearns_Meters',NULL,NULL,NULL,NULL,'ESRI','104773',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Stearns_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Stearns",DATUM["D_NAD_1983_HARN_Adj_MN_Stearns",SPHEROID["S_GRS_1980_Adj_MN_Stearns",6378502.761,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-95.15],PARAMETER["Standard_Parallel_1",45.35],PARAMETER["Standard_Parallel_2",45.7],PARAMETER["Latitude_Of_Origin",45.28277777777777],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103682','NAD_1983_HARN_Adj_MN_Steele_Meters',NULL,NULL,NULL,NULL,'ESRI','104774',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Steele_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Steele",DATUM["D_NAD_1983_HARN_Adj_MN_Steele",SPHEROID["S_GRS_1980_Adj_MN_Steele",6378481.425,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-92.91666666666667],PARAMETER["Standard_Parallel_1",43.88333333333333],PARAMETER["Standard_Parallel_2",44.13333333333333],PARAMETER["Latitude_Of_Origin",43.83388888888889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103683','NAD_1983_HARN_Adj_MN_Stevens_Meters',NULL,NULL,NULL,NULL,'ESRI','104775',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Stevens_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Stevens",DATUM["D_NAD_1983_HARN_Adj_MN_Stevens",SPHEROID["S_GRS_1980_Adj_MN_Stevens",6378502.761,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-95.15],PARAMETER["Standard_Parallel_1",45.35],PARAMETER["Standard_Parallel_2",45.7],PARAMETER["Latitude_Of_Origin",45.28277777777777],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103684','NAD_1983_HARN_Adj_MN_Swift_Meters',NULL,NULL,NULL,NULL,'ESRI','104776',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Swift_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Swift",DATUM["D_NAD_1983_HARN_Adj_MN_Swift",SPHEROID["S_GRS_1980_Adj_MN_Swift",6378470.757,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-96.05],PARAMETER["Standard_Parallel_1",45.21666666666667],PARAMETER["Standard_Parallel_2",45.53333333333333],PARAMETER["Latitude_Of_Origin",45.15222222222222],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103685','NAD_1983_HARN_Adj_MN_Todd_Meters',NULL,NULL,NULL,NULL,'ESRI','104777',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Todd_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Todd",DATUM["D_NAD_1983_HARN_Adj_MN_Todd",SPHEROID["S_GRS_1980_Adj_MN_Todd",6378548.481,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.9],PARAMETER["Standard_Parallel_1",45.86666666666667],PARAMETER["Standard_Parallel_2",46.28333333333333],PARAMETER["Latitude_Of_Origin",45.77333333333333],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103686','NAD_1983_HARN_Adj_MN_Traverse_Meters',NULL,NULL,NULL,NULL,'ESRI','104778',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Traverse_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Traverse",DATUM["D_NAD_1983_HARN_Adj_MN_Traverse",SPHEROID["S_GRS_1980_Adj_MN_Traverse",6378463.746,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-96.55],PARAMETER["Standard_Parallel_1",45.63333333333333],PARAMETER["Standard_Parallel_2",45.96666666666667],PARAMETER["Latitude_Of_Origin",45.58555555555556],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103687','NAD_1983_HARN_Adj_MN_Wabasha_Meters',NULL,NULL,NULL,NULL,'ESRI','104779',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Wabasha_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Wabasha",DATUM["D_NAD_1983_HARN_Adj_MN_Wabasha",SPHEROID["S_GRS_1980_Adj_MN_Wabasha",6378426.561,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-92.26666666666667],PARAMETER["Standard_Parallel_1",44.15],PARAMETER["Standard_Parallel_2",44.41666666666666],PARAMETER["Latitude_Of_Origin",44.10694444444444],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103688','NAD_1983_HARN_Adj_MN_Wadena_Meters',NULL,NULL,NULL,NULL,'ESRI','104780',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Wadena_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Wadena",DATUM["D_NAD_1983_HARN_Adj_MN_Wadena",SPHEROID["S_GRS_1980_Adj_MN_Wadena",6378546.957,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.46666666666667],PARAMETER["Standard_Parallel_1",46.26666666666667],PARAMETER["Standard_Parallel_2",46.73333333333333],PARAMETER["Latitude_Of_Origin",46.15638888888888],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103689','NAD_1983_HARN_Adj_MN_Waseca_Meters',NULL,NULL,NULL,NULL,'ESRI','104781',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Waseca_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Waseca",DATUM["D_NAD_1983_HARN_Adj_MN_Waseca",SPHEROID["S_GRS_1980_Adj_MN_Waseca",6378481.425,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-92.91666666666667],PARAMETER["Standard_Parallel_1",43.88333333333333],PARAMETER["Standard_Parallel_2",44.13333333333333],PARAMETER["Latitude_Of_Origin",43.83388888888889],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103690','NAD_1983_HARN_Adj_MN_Watonwan_Meters',NULL,NULL,NULL,NULL,'ESRI','104782',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Watonwan_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Watonwan",DATUM["D_NAD_1983_HARN_Adj_MN_Watonwan",SPHEROID["S_GRS_1980_Adj_MN_Watonwan",6378514.953,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-94.91666666666667],PARAMETER["Standard_Parallel_1",43.9],PARAMETER["Standard_Parallel_2",44.16666666666666],PARAMETER["Latitude_Of_Origin",43.84805555555556],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103691','NAD_1983_HARN_Adj_MN_Winona_Meters',NULL,NULL,NULL,NULL,'ESRI','104783',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Winona_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Winona",DATUM["D_NAD_1983_HARN_Adj_MN_Winona",SPHEROID["S_GRS_1980_Adj_MN_Winona",6378453.688,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-91.61666666666666],PARAMETER["Standard_Parallel_1",43.9],PARAMETER["Standard_Parallel_2",44.13333333333333],PARAMETER["Latitude_Of_Origin",43.84722222222222],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103692','NAD_1983_HARN_Adj_MN_Wright_Meters',NULL,NULL,NULL,NULL,'ESRI','104784',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Wright_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Wright",DATUM["D_NAD_1983_HARN_Adj_MN_Wright",SPHEROID["S_GRS_1980_Adj_MN_Wright",6378443.325,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-93.88333333333334],PARAMETER["Standard_Parallel_1",45.03333333333333],PARAMETER["Standard_Parallel_2",45.46666666666667],PARAMETER["Latitude_Of_Origin",44.9775],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103693','NAD_1983_HARN_Adj_MN_Yellow_Medicine_Meters',NULL,NULL,NULL,NULL,'ESRI','104785',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Yellow_Medicine_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Yellow_Medicine",DATUM["D_NAD_1983_HARN_Adj_MN_Yellow_Medicine",SPHEROID["S_GRS_1980_Adj_MN_Yellow_Medicine",6378530.193,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",152400.3048006096],PARAMETER["False_Northing",30480.06096012193],PARAMETER["Central_Meridian",-95.9],PARAMETER["Standard_Parallel_1",44.66666666666666],PARAMETER["Standard_Parallel_2",44.95],PARAMETER["Latitude_Of_Origin",44.54166666666666],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103694','NAD_1983_HARN_Adj_MN_St_Louis_CS96_Meters',NULL,NULL,NULL,NULL,'ESRI','104786',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_St_Louis_CS96_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_St_Louis",DATUM["D_NAD_1983_HARN_Adj_MN_St_Louis",SPHEROID["S_GRS_1980_Adj_MN_St_Louis",6378523.0,298.2752724]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",1450000.0],PARAMETER["False_Northing",1000000.0],PARAMETER["Central_Meridian",-92.45],PARAMETER["Scale_Factor",0.99998529],PARAMETER["Latitude_Of_Origin",46.61666666666667],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103695','NAD_1983_HARN_Adj_MN_St_Louis_CS96_Feet',NULL,NULL,NULL,NULL,'ESRI','104786',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_St_Louis_CS96_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_St_Louis",DATUM["D_NAD_1983_HARN_Adj_MN_St_Louis",SPHEROID["S_GRS_1980_Adj_MN_St_Louis",6378523.0,298.2752724]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",4757208.333333],PARAMETER["False_Northing",3280833.333333],PARAMETER["Central_Meridian",-92.45],PARAMETER["Scale_Factor",0.99998529],PARAMETER["Latitude_Of_Origin",46.61666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103700','NAD_1983_HARN_Adj_MN_Aitkin_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Aitkin_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500029.5763345],PARAMETER["False_Northing",100005.9152669],PARAMETER["Central_Meridian",-93.4325],PARAMETER["Scale_Factor",1.000059152669],PARAMETER["Latitude_Of_Origin",46.15416666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103701','NAD_1983_HARN_Adj_MN_Clay_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Clay_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500022.658931],PARAMETER["False_Northing",100004.5317862],PARAMETER["Central_Meridian",-96.7],PARAMETER["Scale_Factor",1.000045317862],PARAMETER["Latitude_Of_Origin",46.63],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103702','NAD_1983_HARN_Adj_MN_Clearwater_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Clearwater_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500036.2528305],PARAMETER["False_Northing",100007.2505661],PARAMETER["Central_Meridian",-95.37583333333333],PARAMETER["Scale_Factor",1.000072505661],PARAMETER["Latitude_Of_Origin",47.15166666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103703','NAD_1983_HARN_Adj_MN_Hubbard_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Hubbard_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500035.7768305],PARAMETER["False_Northing",100007.1553661],PARAMETER["Central_Meridian",-94.92055555555557],PARAMETER["Scale_Factor",1.000071553661],PARAMETER["Latitude_Of_Origin",46.80361111111111],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103704','NAD_1983_HARN_Adj_MN_Lake_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Lake_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500037.9223105],PARAMETER["False_Northing",100007.5844621],PARAMETER["Central_Meridian",-91.40916666666668],PARAMETER["Scale_Factor",1.000075844621],PARAMETER["Latitude_Of_Origin",47.06666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103705','NAD_1983_HARN_Adj_MN_Mille_Lacs_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Mille_Lacs_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500027.073069],PARAMETER["False_Northing",100005.4146138],PARAMETER["Central_Meridian",-93.62055555555555],PARAMETER["Scale_Factor",1.000054146138],PARAMETER["Latitude_Of_Origin",45.55888888888889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103706','NAD_1983_HARN_Adj_MN_Washington_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Washington_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500019.9183995],PARAMETER["False_Northing",100003.9836799],PARAMETER["Central_Meridian",-92.83333333333333],PARAMETER["Scale_Factor",1.000039836799],PARAMETER["Latitude_Of_Origin",44.74583333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103707','NAD_1983_HARN_Adj_MN_Wilkin_Feet',NULL,NULL,NULL,NULL,'EPSG','4152',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Wilkin_Feet",GEOGCS["GCS_North_American_1983_HARN",DATUM["D_North_American_1983_HARN",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500024.450533],PARAMETER["False_Northing",100004.8901066],PARAMETER["Central_Meridian",-96.52444444444444],PARAMETER["Scale_Factor",1.000048901066],PARAMETER["Latitude_Of_Origin",46.02166666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103708','NAD_1983_HARN_Adj_MN_Anoka_Feet',NULL,NULL,NULL,NULL,'ESRI','104700',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Anoka_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Anoka",DATUM["D_NAD_1983_HARN_Adj_MN_Anoka",SPHEROID["S_GRS_1980_Adj_MN_Anoka",6378418.941,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.26666666666667],PARAMETER["Standard_Parallel_1",45.06666666666667],PARAMETER["Standard_Parallel_2",45.36666666666667],PARAMETER["Latitude_Of_Origin",45.03527777777778],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103709','NAD_1983_HARN_Adj_MN_Becker_Feet',NULL,NULL,NULL,NULL,'ESRI','104701',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Becker_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Becker",DATUM["D_NAD_1983_HARN_Adj_MN_Becker",SPHEROID["S_GRS_1980_Adj_MN_Becker",6378586.581,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-95.68333333333334],PARAMETER["Standard_Parallel_1",46.78333333333333],PARAMETER["Standard_Parallel_2",47.08333333333334],PARAMETER["Latitude_Of_Origin",46.71777777777778],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103710','NAD_1983_HARN_Adj_MN_Beltrami_North_Feet',NULL,NULL,NULL,NULL,'ESRI','104702',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Beltrami_North_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Beltrami_North",DATUM["D_NAD_1983_HARN_Adj_MN_Beltrami_North",SPHEROID["S_GRS_1980_Adj_MN_Beltrami_North",6378505.809,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-95.01666666666667],PARAMETER["Standard_Parallel_1",48.11666666666667],PARAMETER["Standard_Parallel_2",48.46666666666667],PARAMETER["Latitude_Of_Origin",48.02],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103711','NAD_1983_HARN_Adj_MN_Beltrami_South_Feet',NULL,NULL,NULL,NULL,'ESRI','104703',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Beltrami_South_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Beltrami_South",DATUM["D_NAD_1983_HARN_Adj_MN_Beltrami_South",SPHEROID["S_GRS_1980_Adj_MN_Beltrami_South",6378544.823,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.85],PARAMETER["Standard_Parallel_1",47.5],PARAMETER["Standard_Parallel_2",47.91666666666666],PARAMETER["Latitude_Of_Origin",47.4125],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103712','NAD_1983_HARN_Adj_MN_Benton_Feet',NULL,NULL,NULL,NULL,'ESRI','104704',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Benton_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Benton",DATUM["D_NAD_1983_HARN_Adj_MN_Benton",SPHEROID["S_GRS_1980_Adj_MN_Benton",6378490.569,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.05],PARAMETER["Standard_Parallel_1",45.58333333333334],PARAMETER["Standard_Parallel_2",45.78333333333333],PARAMETER["Latitude_Of_Origin",45.55916666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103713','NAD_1983_HARN_Adj_MN_Big_Stone_Feet',NULL,NULL,NULL,NULL,'ESRI','104705',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Big_Stone_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Big_Stone",DATUM["D_NAD_1983_HARN_Adj_MN_Big_Stone",SPHEROID["S_GRS_1980_Adj_MN_Big_Stone",6378470.757,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-96.05],PARAMETER["Standard_Parallel_1",45.21666666666667],PARAMETER["Standard_Parallel_2",45.53333333333333],PARAMETER["Latitude_Of_Origin",45.15222222222222],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103714','NAD_1983_HARN_Adj_MN_Blue_Earth_Feet',NULL,NULL,NULL,NULL,'ESRI','104706',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Blue_Earth_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Blue_Earth",DATUM["D_NAD_1983_HARN_Adj_MN_Blue_Earth",SPHEROID["S_GRS_1980_Adj_MN_Blue_Earth",6378403.701,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.26666666666667],PARAMETER["Standard_Parallel_1",43.93333333333333],PARAMETER["Standard_Parallel_2",44.36666666666667],PARAMETER["Latitude_Of_Origin",43.84805555555556],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103715','NAD_1983_HARN_Adj_MN_Brown_Feet',NULL,NULL,NULL,NULL,'ESRI','104707',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Brown_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Brown",DATUM["D_NAD_1983_HARN_Adj_MN_Brown",SPHEROID["S_GRS_1980_Adj_MN_Brown",6378434.181,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.73333333333333],PARAMETER["Standard_Parallel_1",44.16666666666666],PARAMETER["Standard_Parallel_2",44.46666666666667],PARAMETER["Latitude_Of_Origin",44.10805555555556],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103716','NAD_1983_HARN_Adj_MN_Carlton_Feet',NULL,NULL,NULL,NULL,'ESRI','104708',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Carlton_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Carlton",DATUM["D_NAD_1983_HARN_Adj_MN_Carlton",SPHEROID["S_GRS_1980_Adj_MN_Carlton",6378454.907,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-92.68333333333334],PARAMETER["Standard_Parallel_1",46.46666666666667],PARAMETER["Standard_Parallel_2",46.73333333333333],PARAMETER["Latitude_Of_Origin",46.41722222222222],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103717','NAD_1983_HARN_Adj_MN_Carver_Feet',NULL,NULL,NULL,NULL,'ESRI','104709',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Carver_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Carver",DATUM["D_NAD_1983_HARN_Adj_MN_Carver",SPHEROID["S_GRS_1980_Adj_MN_Carver",6378400.653,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.76666666666667],PARAMETER["Standard_Parallel_1",44.68333333333333],PARAMETER["Standard_Parallel_2",44.9],PARAMETER["Latitude_Of_Origin",44.63972222222222],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103718','NAD_1983_HARN_Adj_MN_Cass_North_Feet',NULL,NULL,NULL,NULL,'ESRI','104710',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Cass_North_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Cass_North",DATUM["D_NAD_1983_HARN_Adj_MN_Cass_North",SPHEROID["S_GRS_1980_Adj_MN_Cass_North",6378567.378,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.21666666666667],PARAMETER["Standard_Parallel_1",46.91666666666666],PARAMETER["Standard_Parallel_2",47.31666666666667],PARAMETER["Latitude_Of_Origin",46.80361111111111],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103719','NAD_1983_HARN_Adj_MN_Cass_South_Feet',NULL,NULL,NULL,NULL,'ESRI','104711',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Cass_South_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Cass_South",DATUM["D_NAD_1983_HARN_Adj_MN_Cass_South",SPHEROID["S_GRS_1980_Adj_MN_Cass_South",6378546.957,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.46666666666667],PARAMETER["Standard_Parallel_1",46.26666666666667],PARAMETER["Standard_Parallel_2",46.73333333333333],PARAMETER["Latitude_Of_Origin",46.15638888888888],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103720','NAD_1983_HARN_Adj_MN_Chippewa_Feet',NULL,NULL,NULL,NULL,'ESRI','104712',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Chippewa_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Chippewa",DATUM["D_NAD_1983_HARN_Adj_MN_Chippewa",SPHEROID["S_GRS_1980_Adj_MN_Chippewa",6378476.853,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-95.85],PARAMETER["Standard_Parallel_1",44.83333333333334],PARAMETER["Standard_Parallel_2",45.2],PARAMETER["Latitude_Of_Origin",44.75277777777778],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103721','NAD_1983_HARN_Adj_MN_Chisago_Feet',NULL,NULL,NULL,NULL,'ESRI','104713',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Chisago_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Chisago",DATUM["D_NAD_1983_HARN_Adj_MN_Chisago",SPHEROID["S_GRS_1980_Adj_MN_Chisago",6378411.321,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.08333333333333],PARAMETER["Standard_Parallel_1",45.33333333333334],PARAMETER["Standard_Parallel_2",45.66666666666666],PARAMETER["Latitude_Of_Origin",45.29638888888888],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103722','NAD_1983_HARN_Adj_MN_Cook_North_Feet',NULL,NULL,NULL,NULL,'ESRI','104714',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Cook_North_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Cook_North",DATUM["D_NAD_1983_HARN_Adj_MN_Cook_North",SPHEROID["S_GRS_1980_Adj_MN_Cook_North",6378647.541,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-90.25],PARAMETER["Standard_Parallel_1",47.93333333333333],PARAMETER["Standard_Parallel_2",48.16666666666666],PARAMETER["Latitude_Of_Origin",47.88333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103723','NAD_1983_HARN_Adj_MN_Cook_South_Feet',NULL,NULL,NULL,NULL,'ESRI','104715',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Cook_South_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Cook_South",DATUM["D_NAD_1983_HARN_Adj_MN_Cook_South",SPHEROID["S_GRS_1980_Adj_MN_Cook_South",6378647.541,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-90.25],PARAMETER["Standard_Parallel_1",47.55],PARAMETER["Standard_Parallel_2",47.81666666666667],PARAMETER["Latitude_Of_Origin",47.43888888888888],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103724','NAD_1983_HARN_Adj_MN_Cottonwood_Feet',NULL,NULL,NULL,NULL,'ESRI','104716',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Cottonwood_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Cottonwood",DATUM["D_NAD_1983_HARN_Adj_MN_Cottonwood",SPHEROID["S_GRS_1980_Adj_MN_Cottonwood",6378514.953,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.91666666666667],PARAMETER["Standard_Parallel_1",43.9],PARAMETER["Standard_Parallel_2",44.16666666666666],PARAMETER["Latitude_Of_Origin",43.84805555555556],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103725','NAD_1983_HARN_Adj_MN_Crow_Wing_Feet',NULL,NULL,NULL,NULL,'ESRI','104717',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Crow_Wing_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Crow_Wing",DATUM["D_NAD_1983_HARN_Adj_MN_Crow_Wing",SPHEROID["S_GRS_1980_Adj_MN_Crow_Wing",6378546.957,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.46666666666667],PARAMETER["Standard_Parallel_1",46.26666666666667],PARAMETER["Standard_Parallel_2",46.73333333333333],PARAMETER["Latitude_Of_Origin",46.15638888888888],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103726','NAD_1983_HARN_Adj_MN_Dakota_Feet',NULL,NULL,NULL,NULL,'ESRI','104718',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Dakota_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Dakota",DATUM["D_NAD_1983_HARN_Adj_MN_Dakota",SPHEROID["S_GRS_1980_Adj_MN_Dakota",6378421.989,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.31666666666666],PARAMETER["Standard_Parallel_1",44.51666666666667],PARAMETER["Standard_Parallel_2",44.91666666666666],PARAMETER["Latitude_Of_Origin",44.47194444444445],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103727','NAD_1983_HARN_Adj_MN_Dodge_Feet',NULL,NULL,NULL,NULL,'ESRI','104719',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Dodge_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Dodge",DATUM["D_NAD_1983_HARN_Adj_MN_Dodge",SPHEROID["S_GRS_1980_Adj_MN_Dodge",6378481.425,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-92.91666666666667],PARAMETER["Standard_Parallel_1",43.88333333333333],PARAMETER["Standard_Parallel_2",44.13333333333333],PARAMETER["Latitude_Of_Origin",43.83388888888889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103728','NAD_1983_HARN_Adj_MN_Douglas_Feet',NULL,NULL,NULL,NULL,'ESRI','104720',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Douglas_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Douglas",DATUM["D_NAD_1983_HARN_Adj_MN_Douglas",SPHEROID["S_GRS_1980_Adj_MN_Douglas",6378518.001,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-96.05],PARAMETER["Standard_Parallel_1",45.8],PARAMETER["Standard_Parallel_2",46.05],PARAMETER["Latitude_Of_Origin",45.75888888888889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103729','NAD_1983_HARN_Adj_MN_Faribault_Feet',NULL,NULL,NULL,NULL,'ESRI','104721',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Faribault_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Faribault",DATUM["D_NAD_1983_HARN_Adj_MN_Faribault",SPHEROID["S_GRS_1980_Adj_MN_Faribault",6378521.049,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.95],PARAMETER["Standard_Parallel_1",43.56666666666667],PARAMETER["Standard_Parallel_2",43.8],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103730','NAD_1983_HARN_Adj_MN_Fillmore_Feet',NULL,NULL,NULL,NULL,'ESRI','104722',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Fillmore_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Fillmore",DATUM["D_NAD_1983_HARN_Adj_MN_Fillmore",SPHEROID["S_GRS_1980_Adj_MN_Fillmore",6378464.661,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-92.08333333333333],PARAMETER["Standard_Parallel_1",43.55],PARAMETER["Standard_Parallel_2",43.8],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103731','NAD_1983_HARN_Adj_MN_Freeborn_Feet',NULL,NULL,NULL,NULL,'ESRI','104723',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Freeborn_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Freeborn",DATUM["D_NAD_1983_HARN_Adj_MN_Freeborn",SPHEROID["S_GRS_1980_Adj_MN_Freeborn",6378521.049,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.95],PARAMETER["Standard_Parallel_1",43.56666666666667],PARAMETER["Standard_Parallel_2",43.8],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103732','NAD_1983_HARN_Adj_MN_Goodhue_Feet',NULL,NULL,NULL,NULL,'ESRI','104724',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Goodhue_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Goodhue",DATUM["D_NAD_1983_HARN_Adj_MN_Goodhue",SPHEROID["S_GRS_1980_Adj_MN_Goodhue",6378434.181,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.13333333333334],PARAMETER["Standard_Parallel_1",44.3],PARAMETER["Standard_Parallel_2",44.66666666666666],PARAMETER["Latitude_Of_Origin",44.19472222222222],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103733','NAD_1983_HARN_Adj_MN_Grant_Feet',NULL,NULL,NULL,NULL,'ESRI','104725',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Grant_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Grant",DATUM["D_NAD_1983_HARN_Adj_MN_Grant",SPHEROID["S_GRS_1980_Adj_MN_Grant",6378518.001,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-96.05],PARAMETER["Standard_Parallel_1",45.8],PARAMETER["Standard_Parallel_2",46.05],PARAMETER["Latitude_Of_Origin",45.75888888888889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103734','NAD_1983_HARN_Adj_MN_Hennepin_Feet',NULL,NULL,NULL,NULL,'ESRI','104726',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Hennepin_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Hennepin",DATUM["D_NAD_1983_HARN_Adj_MN_Hennepin",SPHEROID["S_GRS_1980_Adj_MN_Hennepin",6378418.941,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.38333333333334],PARAMETER["Standard_Parallel_1",44.88333333333333],PARAMETER["Standard_Parallel_2",45.13333333333333],PARAMETER["Latitude_Of_Origin",44.79111111111111],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103735','NAD_1983_HARN_Adj_MN_Houston_Feet',NULL,NULL,NULL,NULL,'ESRI','104727',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Houston_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Houston",DATUM["D_NAD_1983_HARN_Adj_MN_Houston",SPHEROID["S_GRS_1980_Adj_MN_Houston",6378436.619,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-91.46666666666667],PARAMETER["Standard_Parallel_1",43.56666666666667],PARAMETER["Standard_Parallel_2",43.8],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103736','NAD_1983_HARN_Adj_MN_Isanti_Feet',NULL,NULL,NULL,NULL,'ESRI','104728',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Isanti_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Isanti",DATUM["D_NAD_1983_HARN_Adj_MN_Isanti",SPHEROID["S_GRS_1980_Adj_MN_Isanti",6378411.321,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.08333333333333],PARAMETER["Standard_Parallel_1",45.33333333333334],PARAMETER["Standard_Parallel_2",45.66666666666666],PARAMETER["Latitude_Of_Origin",45.29638888888888],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103737','NAD_1983_HARN_Adj_MN_Itasca_North_Feet',NULL,NULL,NULL,NULL,'ESRI','104729',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Itasca_North_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Itasca_North",DATUM["D_NAD_1983_HARN_Adj_MN_Itasca_North",SPHEROID["S_GRS_1980_Adj_MN_Itasca_North",6378574.389,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.73333333333333],PARAMETER["Standard_Parallel_1",47.56666666666667],PARAMETER["Standard_Parallel_2",47.81666666666667],PARAMETER["Latitude_Of_Origin",47.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103738','NAD_1983_HARN_Adj_MN_Itasca_South_Feet',NULL,NULL,NULL,NULL,'ESRI','104730',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Itasca_South_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Itasca_South",DATUM["D_NAD_1983_HARN_Adj_MN_Itasca_South",SPHEROID["S_GRS_1980_Adj_MN_Itasca_South",6378574.389,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.73333333333333],PARAMETER["Standard_Parallel_1",47.08333333333334],PARAMETER["Standard_Parallel_2",47.41666666666666],PARAMETER["Latitude_Of_Origin",47.02638888888889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103739','NAD_1983_HARN_Adj_MN_Jackson_Feet',NULL,NULL,NULL,NULL,'ESRI','104731',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Jackson_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Jackson",DATUM["D_NAD_1983_HARN_Adj_MN_Jackson",SPHEROID["S_GRS_1980_Adj_MN_Jackson",6378521.049,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.95],PARAMETER["Standard_Parallel_1",43.56666666666667],PARAMETER["Standard_Parallel_2",43.8],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103740','NAD_1983_HARN_Adj_MN_Kanabec_Feet',NULL,NULL,NULL,NULL,'ESRI','104732',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Kanabec_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Kanabec",DATUM["D_NAD_1983_HARN_Adj_MN_Kanabec",SPHEROID["S_GRS_1980_Adj_MN_Kanabec",6378472.281,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-92.9],PARAMETER["Standard_Parallel_1",45.81666666666667],PARAMETER["Standard_Parallel_2",46.33333333333334],PARAMETER["Latitude_Of_Origin",45.73],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103741','NAD_1983_HARN_Adj_MN_Kandiyohi_Feet',NULL,NULL,NULL,NULL,'ESRI','104733',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Kandiyohi_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Kandiyohi",DATUM["D_NAD_1983_HARN_Adj_MN_Kandiyohi",SPHEROID["S_GRS_1980_Adj_MN_Kandiyohi",6378498.189,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.75],PARAMETER["Standard_Parallel_1",44.96666666666667],PARAMETER["Standard_Parallel_2",45.33333333333334],PARAMETER["Latitude_Of_Origin",44.89138888888889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103742','NAD_1983_HARN_Adj_MN_Kittson_Feet',NULL,NULL,NULL,NULL,'ESRI','104734',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Kittson_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Kittson",DATUM["D_NAD_1983_HARN_Adj_MN_Kittson",SPHEROID["S_GRS_1980_Adj_MN_Kittson",6378449.421,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-96.15],PARAMETER["Standard_Parallel_1",48.6],PARAMETER["Standard_Parallel_2",48.93333333333333],PARAMETER["Latitude_Of_Origin",48.54388888888889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103743','NAD_1983_HARN_Adj_MN_Koochiching_Feet',NULL,NULL,NULL,NULL,'ESRI','104735',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Koochiching_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Koochiching",DATUM["D_NAD_1983_HARN_Adj_MN_Koochiching",SPHEROID["S_GRS_1980_Adj_MN_Koochiching",6378525.621,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.75],PARAMETER["Standard_Parallel_1",48.0],PARAMETER["Standard_Parallel_2",48.61666666666667],PARAMETER["Latitude_Of_Origin",47.84583333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103744','NAD_1983_HARN_Adj_MN_Lac_Qui_Parle_Feet',NULL,NULL,NULL,NULL,'ESRI','104736',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Lac_Qui_Parle_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Lac_Qui_Parle",DATUM["D_NAD_1983_HARN_Adj_MN_Lac_Qui_Parle",SPHEROID["S_GRS_1980_Adj_MN_Lac_Qui_Parle",6378476.853,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-95.85],PARAMETER["Standard_Parallel_1",44.83333333333334],PARAMETER["Standard_Parallel_2",45.2],PARAMETER["Latitude_Of_Origin",44.75277777777778],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103745','NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_North_Feet',NULL,NULL,NULL,NULL,'ESRI','104737',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_North_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_North",DATUM["D_NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_North",SPHEROID["S_GRS_1980_Adj_MN_Lake_of_the_Woods_North",6378466.185,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.98333333333333],PARAMETER["Standard_Parallel_1",49.18333333333333],PARAMETER["Standard_Parallel_2",49.33333333333334],PARAMETER["Latitude_Of_Origin",49.15],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103746','NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_South_Feet',NULL,NULL,NULL,NULL,'ESRI','104738',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_South_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_South",DATUM["D_NAD_1983_HARN_Adj_MN_Lake_of_the_Woods_South",SPHEROID["S_GRS_1980_Adj_MN_Lake_of_the_Woods_South",6378496.665,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.88333333333334],PARAMETER["Standard_Parallel_1",48.45],PARAMETER["Standard_Parallel_2",48.88333333333333],PARAMETER["Latitude_Of_Origin",48.36611111111111],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103747','NAD_1983_HARN_Adj_MN_Le_Sueur_Feet',NULL,NULL,NULL,NULL,'ESRI','104739',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Le_Sueur_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Le_Sueur",DATUM["D_NAD_1983_HARN_Adj_MN_Le_Sueur",SPHEROID["S_GRS_1980_Adj_MN_Le_Sueur",6378434.181,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.13333333333334],PARAMETER["Standard_Parallel_1",44.3],PARAMETER["Standard_Parallel_2",44.66666666666666],PARAMETER["Latitude_Of_Origin",44.19472222222222],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103748','NAD_1983_HARN_Adj_MN_Lincoln_Feet',NULL,NULL,NULL,NULL,'ESRI','104740',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Lincoln_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Lincoln",DATUM["D_NAD_1983_HARN_Adj_MN_Lincoln",SPHEROID["S_GRS_1980_Adj_MN_Lincoln",6378643.579,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-96.26666666666667],PARAMETER["Standard_Parallel_1",44.28333333333333],PARAMETER["Standard_Parallel_2",44.61666666666667],PARAMETER["Latitude_Of_Origin",44.19666666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103749','NAD_1983_HARN_Adj_MN_Lyon_Feet',NULL,NULL,NULL,NULL,'ESRI','104741',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Lyon_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Lyon",DATUM["D_NAD_1983_HARN_Adj_MN_Lyon",SPHEROID["S_GRS_1980_Adj_MN_Lyon",6378559.758,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-95.85],PARAMETER["Standard_Parallel_1",44.25],PARAMETER["Standard_Parallel_2",44.58333333333334],PARAMETER["Latitude_Of_Origin",44.19555555555555],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103750','NAD_1983_HARN_Adj_MN_McLeod_Feet',NULL,NULL,NULL,NULL,'ESRI','104742',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_McLeod_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_McLeod",DATUM["D_NAD_1983_HARN_Adj_MN_McLeod",SPHEROID["S_GRS_1980_Adj_MN_McLeod",6378414.369,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.63333333333334],PARAMETER["Standard_Parallel_1",44.53333333333333],PARAMETER["Standard_Parallel_2",44.91666666666666],PARAMETER["Latitude_Of_Origin",44.45611111111111],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103751','NAD_1983_HARN_Adj_MN_Mahnomen_Feet',NULL,NULL,NULL,NULL,'ESRI','104743',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Mahnomen_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Mahnomen",DATUM["D_NAD_1983_HARN_Adj_MN_Mahnomen",SPHEROID["S_GRS_1980_Adj_MN_Mahnomen",6378586.581,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-95.81666666666666],PARAMETER["Standard_Parallel_1",47.2],PARAMETER["Standard_Parallel_2",47.45],PARAMETER["Latitude_Of_Origin",47.15166666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103752','NAD_1983_HARN_Adj_MN_Marshall_Feet',NULL,NULL,NULL,NULL,'ESRI','104744',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Marshall_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Marshall",DATUM["D_NAD_1983_HARN_Adj_MN_Marshall",SPHEROID["S_GRS_1980_Adj_MN_Marshall",6378441.801,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-96.38333333333334],PARAMETER["Standard_Parallel_1",48.23333333333333],PARAMETER["Standard_Parallel_2",48.48333333333333],PARAMETER["Latitude_Of_Origin",48.17305555555555],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103753','NAD_1983_HARN_Adj_MN_Martin_Feet',NULL,NULL,NULL,NULL,'ESRI','104745',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Martin_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Martin",DATUM["D_NAD_1983_HARN_Adj_MN_Martin",SPHEROID["S_GRS_1980_Adj_MN_Martin",6378521.049,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.95],PARAMETER["Standard_Parallel_1",43.56666666666667],PARAMETER["Standard_Parallel_2",43.8],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103754','NAD_1983_HARN_Adj_MN_Meeker_Feet',NULL,NULL,NULL,NULL,'ESRI','104746',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Meeker_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Meeker",DATUM["D_NAD_1983_HARN_Adj_MN_Meeker",SPHEROID["S_GRS_1980_Adj_MN_Meeker",6378498.189,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.75],PARAMETER["Standard_Parallel_1",44.96666666666667],PARAMETER["Standard_Parallel_2",45.33333333333334],PARAMETER["Latitude_Of_Origin",44.89138888888889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103755','NAD_1983_HARN_Adj_MN_Morrison_Feet',NULL,NULL,NULL,NULL,'ESRI','104747',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Morrison_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Morrison",DATUM["D_NAD_1983_HARN_Adj_MN_Morrison",SPHEROID["S_GRS_1980_Adj_MN_Morrison",6378502.761,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.2],PARAMETER["Standard_Parallel_1",45.85],PARAMETER["Standard_Parallel_2",46.26666666666667],PARAMETER["Latitude_Of_Origin",45.77388888888889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103756','NAD_1983_HARN_Adj_MN_Mower_Feet',NULL,NULL,NULL,NULL,'ESRI','104748',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Mower_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Mower",DATUM["D_NAD_1983_HARN_Adj_MN_Mower",SPHEROID["S_GRS_1980_Adj_MN_Mower",6378521.049,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.95],PARAMETER["Standard_Parallel_1",43.56666666666667],PARAMETER["Standard_Parallel_2",43.8],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103757','NAD_1983_HARN_Adj_MN_Murray_Feet',NULL,NULL,NULL,NULL,'ESRI','104749',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Murray_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Murray",DATUM["D_NAD_1983_HARN_Adj_MN_Murray",SPHEROID["S_GRS_1980_Adj_MN_Murray",6378617.061,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-95.76666666666667],PARAMETER["Standard_Parallel_1",43.91666666666666],PARAMETER["Standard_Parallel_2",44.16666666666666],PARAMETER["Latitude_Of_Origin",43.84805555555556],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103758','NAD_1983_HARN_Adj_MN_Nicollet_Feet',NULL,NULL,NULL,NULL,'ESRI','104750',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Nicollet_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Nicollet",DATUM["D_NAD_1983_HARN_Adj_MN_Nicollet",SPHEROID["S_GRS_1980_Adj_MN_Nicollet",6378403.701,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.26666666666667],PARAMETER["Standard_Parallel_1",43.93333333333333],PARAMETER["Standard_Parallel_2",44.36666666666667],PARAMETER["Latitude_Of_Origin",43.84805555555556],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103759','NAD_1983_HARN_Adj_MN_Nobles_Feet',NULL,NULL,NULL,NULL,'ESRI','104751',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Nobles_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Nobles",DATUM["D_NAD_1983_HARN_Adj_MN_Nobles",SPHEROID["S_GRS_1980_Adj_MN_Nobles",6378624.681,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-95.95],PARAMETER["Standard_Parallel_1",43.56666666666667],PARAMETER["Standard_Parallel_2",43.8],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103760','NAD_1983_HARN_Adj_MN_Norman_Feet',NULL,NULL,NULL,NULL,'ESRI','104752',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Norman_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Norman",DATUM["D_NAD_1983_HARN_Adj_MN_Norman",SPHEROID["S_GRS_1980_Adj_MN_Norman",6378468.623,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-96.45],PARAMETER["Standard_Parallel_1",47.2],PARAMETER["Standard_Parallel_2",47.45],PARAMETER["Latitude_Of_Origin",47.15055555555556],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103761','NAD_1983_HARN_Adj_MN_Olmsted_Feet',NULL,NULL,NULL,NULL,'ESRI','104753',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Olmsted_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Olmsted",DATUM["D_NAD_1983_HARN_Adj_MN_Olmsted",SPHEROID["S_GRS_1980_Adj_MN_Olmsted",6378481.425,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-92.91666666666667],PARAMETER["Standard_Parallel_1",43.88333333333333],PARAMETER["Standard_Parallel_2",44.13333333333333],PARAMETER["Latitude_Of_Origin",43.83388888888889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103762','NAD_1983_HARN_Adj_MN_Ottertail_Feet',NULL,NULL,NULL,NULL,'ESRI','104754',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Ottertail_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Ottertail",DATUM["D_NAD_1983_HARN_Adj_MN_Ottertail",SPHEROID["S_GRS_1980_Adj_MN_Ottertail",6378525.621,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-95.71666666666667],PARAMETER["Standard_Parallel_1",46.18333333333333],PARAMETER["Standard_Parallel_2",46.65],PARAMETER["Latitude_Of_Origin",46.10638888888889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103763','NAD_1983_HARN_Adj_MN_Pennington_Feet',NULL,NULL,NULL,NULL,'ESRI','104755',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Pennington_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Pennington",DATUM["D_NAD_1983_HARN_Adj_MN_Pennington",SPHEROID["S_GRS_1980_Adj_MN_Pennington",6378445.763,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-96.36666666666666],PARAMETER["Standard_Parallel_1",47.6],PARAMETER["Standard_Parallel_2",48.08333333333334],PARAMETER["Latitude_Of_Origin",47.49888888888889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103764','NAD_1983_HARN_Adj_MN_Pine_Feet',NULL,NULL,NULL,NULL,'ESRI','104756',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Pine_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Pine",DATUM["D_NAD_1983_HARN_Adj_MN_Pine",SPHEROID["S_GRS_1980_Adj_MN_Pine",6378472.281,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-92.9],PARAMETER["Standard_Parallel_1",45.81666666666667],PARAMETER["Standard_Parallel_2",46.33333333333334],PARAMETER["Latitude_Of_Origin",45.73],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103765','NAD_1983_HARN_Adj_MN_Pipestone_Feet',NULL,NULL,NULL,NULL,'ESRI','104757',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Pipestone_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Pipestone",DATUM["D_NAD_1983_HARN_Adj_MN_Pipestone",SPHEROID["S_GRS_1980_Adj_MN_Pipestone",6378670.401,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-96.25],PARAMETER["Standard_Parallel_1",43.88333333333333],PARAMETER["Standard_Parallel_2",44.15],PARAMETER["Latitude_Of_Origin",43.84916666666667],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103766','NAD_1983_HARN_Adj_MN_Polk_Feet',NULL,NULL,NULL,NULL,'ESRI','104758',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Polk_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Polk",DATUM["D_NAD_1983_HARN_Adj_MN_Polk",SPHEROID["S_GRS_1980_Adj_MN_Polk",6378445.763,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-96.36666666666666],PARAMETER["Standard_Parallel_1",47.6],PARAMETER["Standard_Parallel_2",48.08333333333334],PARAMETER["Latitude_Of_Origin",47.49888888888889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103767','NAD_1983_HARN_Adj_MN_Pope_Feet',NULL,NULL,NULL,NULL,'ESRI','104759',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Pope_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Pope",DATUM["D_NAD_1983_HARN_Adj_MN_Pope",SPHEROID["S_GRS_1980_Adj_MN_Pope",6378502.761,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-95.15],PARAMETER["Standard_Parallel_1",45.35],PARAMETER["Standard_Parallel_2",45.7],PARAMETER["Latitude_Of_Origin",45.28277777777777],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103768','NAD_1983_HARN_Adj_MN_Ramsey_Feet',NULL,NULL,NULL,NULL,'ESRI','104760',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Ramsey_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Ramsey",DATUM["D_NAD_1983_HARN_Adj_MN_Ramsey",SPHEROID["S_GRS_1980_Adj_MN_Ramsey",6378418.941,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.38333333333334],PARAMETER["Standard_Parallel_1",44.88333333333333],PARAMETER["Standard_Parallel_2",45.13333333333333],PARAMETER["Latitude_Of_Origin",44.79111111111111],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103769','NAD_1983_HARN_Adj_MN_Red_Lake_Feet',NULL,NULL,NULL,NULL,'ESRI','104761',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Red_Lake_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Red_Lake",DATUM["D_NAD_1983_HARN_Adj_MN_Red_Lake",SPHEROID["S_GRS_1980_Adj_MN_Red_Lake",6378445.763,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-96.36666666666666],PARAMETER["Standard_Parallel_1",47.6],PARAMETER["Standard_Parallel_2",48.08333333333334],PARAMETER["Latitude_Of_Origin",47.49888888888889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103770','NAD_1983_HARN_Adj_MN_Redwood_Feet',NULL,NULL,NULL,NULL,'ESRI','104762',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Redwood_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Redwood",DATUM["D_NAD_1983_HARN_Adj_MN_Redwood",SPHEROID["S_GRS_1980_Adj_MN_Redwood",6378438.753,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-95.23333333333333],PARAMETER["Standard_Parallel_1",44.26666666666667],PARAMETER["Standard_Parallel_2",44.56666666666667],PARAMETER["Latitude_Of_Origin",44.19472222222222],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103771','NAD_1983_HARN_Adj_MN_Renville_Feet',NULL,NULL,NULL,NULL,'ESRI','104763',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Renville_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Renville",DATUM["D_NAD_1983_HARN_Adj_MN_Renville",SPHEROID["S_GRS_1980_Adj_MN_Renville",6378414.369,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.63333333333334],PARAMETER["Standard_Parallel_1",44.53333333333333],PARAMETER["Standard_Parallel_2",44.91666666666666],PARAMETER["Latitude_Of_Origin",44.45611111111111],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103772','NAD_1983_HARN_Adj_MN_Rice_Feet',NULL,NULL,NULL,NULL,'ESRI','104764',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Rice_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Rice",DATUM["D_NAD_1983_HARN_Adj_MN_Rice",SPHEROID["S_GRS_1980_Adj_MN_Rice",6378434.181,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.13333333333334],PARAMETER["Standard_Parallel_1",44.3],PARAMETER["Standard_Parallel_2",44.66666666666666],PARAMETER["Latitude_Of_Origin",44.19472222222222],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103773','NAD_1983_HARN_Adj_MN_Rock_Feet',NULL,NULL,NULL,NULL,'ESRI','104765',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Rock_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Rock",DATUM["D_NAD_1983_HARN_Adj_MN_Rock",SPHEROID["S_GRS_1980_Adj_MN_Rock",6378624.681,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-95.95],PARAMETER["Standard_Parallel_1",43.56666666666667],PARAMETER["Standard_Parallel_2",43.8],PARAMETER["Latitude_Of_Origin",43.5],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103774','NAD_1983_HARN_Adj_MN_Roseau_Feet',NULL,NULL,NULL,NULL,'ESRI','104766',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Roseau_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Roseau",DATUM["D_NAD_1983_HARN_Adj_MN_Roseau",SPHEROID["S_GRS_1980_Adj_MN_Roseau",6378449.421,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-96.15],PARAMETER["Standard_Parallel_1",48.6],PARAMETER["Standard_Parallel_2",48.93333333333333],PARAMETER["Latitude_Of_Origin",48.54388888888889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103775','NAD_1983_HARN_Adj_MN_St_Louis_North_Feet',NULL,NULL,NULL,NULL,'ESRI','104767',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_St_Louis_North_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_St_Louis_North",DATUM["D_NAD_1983_HARN_Adj_MN_St_Louis_North",SPHEROID["S_GRS_1980_Adj_MN_St_Louis_North",6378543.909,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-92.45],PARAMETER["Standard_Parallel_1",47.98333333333333],PARAMETER["Standard_Parallel_2",48.53333333333333],PARAMETER["Latitude_Of_Origin",47.83333333333334],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103776','NAD_1983_HARN_Adj_MN_St_Louis_Central_Feet',NULL,NULL,NULL,NULL,'ESRI','104768',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_St_Louis_Central_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_St_Louis_Central",DATUM["D_NAD_1983_HARN_Adj_MN_St_Louis_Central",SPHEROID["S_GRS_1980_Adj_MN_St_Louis_Central",6378605.783,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-92.45],PARAMETER["Standard_Parallel_1",47.33333333333334],PARAMETER["Standard_Parallel_2",47.75],PARAMETER["Latitude_Of_Origin",47.25],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103777','NAD_1983_HARN_Adj_MN_St_Louis_South_Feet',NULL,NULL,NULL,NULL,'ESRI','104769',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_St_Louis_South_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_St_Louis_South",DATUM["D_NAD_1983_HARN_Adj_MN_St_Louis_South",SPHEROID["S_GRS_1980_Adj_MN_St_Louis_South",6378540.861,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-92.45],PARAMETER["Standard_Parallel_1",46.78333333333333],PARAMETER["Standard_Parallel_2",47.13333333333333],PARAMETER["Latitude_Of_Origin",46.65],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103778','NAD_1983_HARN_Adj_MN_Scott_Feet',NULL,NULL,NULL,NULL,'ESRI','104770',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Scott_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Scott",DATUM["D_NAD_1983_HARN_Adj_MN_Scott",SPHEROID["S_GRS_1980_Adj_MN_Scott",6378421.989,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.31666666666666],PARAMETER["Standard_Parallel_1",44.51666666666667],PARAMETER["Standard_Parallel_2",44.91666666666666],PARAMETER["Latitude_Of_Origin",44.47194444444445],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103779','NAD_1983_HARN_Adj_MN_Sherburne_Feet',NULL,NULL,NULL,NULL,'ESRI','104771',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Sherburne_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Sherburne",DATUM["D_NAD_1983_HARN_Adj_MN_Sherburne",SPHEROID["S_GRS_1980_Adj_MN_Sherburne",6378443.325,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.88333333333334],PARAMETER["Standard_Parallel_1",45.03333333333333],PARAMETER["Standard_Parallel_2",45.46666666666667],PARAMETER["Latitude_Of_Origin",44.9775],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103780','NAD_1983_HARN_Adj_MN_Sibley_Feet',NULL,NULL,NULL,NULL,'ESRI','104772',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Sibley_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Sibley",DATUM["D_NAD_1983_HARN_Adj_MN_Sibley",SPHEROID["S_GRS_1980_Adj_MN_Sibley",6378414.369,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.63333333333334],PARAMETER["Standard_Parallel_1",44.53333333333333],PARAMETER["Standard_Parallel_2",44.91666666666666],PARAMETER["Latitude_Of_Origin",44.45611111111111],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103781','NAD_1983_HARN_Adj_MN_Stearns_Feet',NULL,NULL,NULL,NULL,'ESRI','104773',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Stearns_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Stearns",DATUM["D_NAD_1983_HARN_Adj_MN_Stearns",SPHEROID["S_GRS_1980_Adj_MN_Stearns",6378502.761,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-95.15],PARAMETER["Standard_Parallel_1",45.35],PARAMETER["Standard_Parallel_2",45.7],PARAMETER["Latitude_Of_Origin",45.28277777777777],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103782','NAD_1983_HARN_Adj_MN_Steele_Feet',NULL,NULL,NULL,NULL,'ESRI','104774',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Steele_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Steele",DATUM["D_NAD_1983_HARN_Adj_MN_Steele",SPHEROID["S_GRS_1980_Adj_MN_Steele",6378481.425,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-92.91666666666667],PARAMETER["Standard_Parallel_1",43.88333333333333],PARAMETER["Standard_Parallel_2",44.13333333333333],PARAMETER["Latitude_Of_Origin",43.83388888888889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103783','NAD_1983_HARN_Adj_MN_Stevens_Feet',NULL,NULL,NULL,NULL,'ESRI','104775',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Stevens_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Stevens",DATUM["D_NAD_1983_HARN_Adj_MN_Stevens",SPHEROID["S_GRS_1980_Adj_MN_Stevens",6378502.761,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-95.15],PARAMETER["Standard_Parallel_1",45.35],PARAMETER["Standard_Parallel_2",45.7],PARAMETER["Latitude_Of_Origin",45.28277777777777],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103784','NAD_1983_HARN_Adj_MN_Swift_Feet',NULL,NULL,NULL,NULL,'ESRI','104776',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Swift_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Swift",DATUM["D_NAD_1983_HARN_Adj_MN_Swift",SPHEROID["S_GRS_1980_Adj_MN_Swift",6378470.757,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-96.05],PARAMETER["Standard_Parallel_1",45.21666666666667],PARAMETER["Standard_Parallel_2",45.53333333333333],PARAMETER["Latitude_Of_Origin",45.15222222222222],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103785','NAD_1983_HARN_Adj_MN_Todd_Feet',NULL,NULL,NULL,NULL,'ESRI','104777',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Todd_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Todd",DATUM["D_NAD_1983_HARN_Adj_MN_Todd",SPHEROID["S_GRS_1980_Adj_MN_Todd",6378548.481,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.9],PARAMETER["Standard_Parallel_1",45.86666666666667],PARAMETER["Standard_Parallel_2",46.28333333333333],PARAMETER["Latitude_Of_Origin",45.77333333333333],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103786','NAD_1983_HARN_Adj_MN_Traverse_Feet',NULL,NULL,NULL,NULL,'ESRI','104778',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Traverse_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Traverse",DATUM["D_NAD_1983_HARN_Adj_MN_Traverse",SPHEROID["S_GRS_1980_Adj_MN_Traverse",6378463.746,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-96.55],PARAMETER["Standard_Parallel_1",45.63333333333333],PARAMETER["Standard_Parallel_2",45.96666666666667],PARAMETER["Latitude_Of_Origin",45.58555555555556],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103787','NAD_1983_HARN_Adj_MN_Wabasha_Feet',NULL,NULL,NULL,NULL,'ESRI','104779',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Wabasha_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Wabasha",DATUM["D_NAD_1983_HARN_Adj_MN_Wabasha",SPHEROID["S_GRS_1980_Adj_MN_Wabasha",6378426.561,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-92.26666666666667],PARAMETER["Standard_Parallel_1",44.15],PARAMETER["Standard_Parallel_2",44.41666666666666],PARAMETER["Latitude_Of_Origin",44.10694444444444],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103788','NAD_1983_HARN_Adj_MN_Wadena_Feet',NULL,NULL,NULL,NULL,'ESRI','104780',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Wadena_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Wadena",DATUM["D_NAD_1983_HARN_Adj_MN_Wadena",SPHEROID["S_GRS_1980_Adj_MN_Wadena",6378546.957,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.46666666666667],PARAMETER["Standard_Parallel_1",46.26666666666667],PARAMETER["Standard_Parallel_2",46.73333333333333],PARAMETER["Latitude_Of_Origin",46.15638888888888],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103789','NAD_1983_HARN_Adj_MN_Waseca_Feet',NULL,NULL,NULL,NULL,'ESRI','104781',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Waseca_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Waseca",DATUM["D_NAD_1983_HARN_Adj_MN_Waseca",SPHEROID["S_GRS_1980_Adj_MN_Waseca",6378481.425,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-92.91666666666667],PARAMETER["Standard_Parallel_1",43.88333333333333],PARAMETER["Standard_Parallel_2",44.13333333333333],PARAMETER["Latitude_Of_Origin",43.83388888888889],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103790','NAD_1983_HARN_Adj_MN_Watonwan_Feet',NULL,NULL,NULL,NULL,'ESRI','104782',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Watonwan_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Watonwan",DATUM["D_NAD_1983_HARN_Adj_MN_Watonwan",SPHEROID["S_GRS_1980_Adj_MN_Watonwan",6378514.953,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-94.91666666666667],PARAMETER["Standard_Parallel_1",43.9],PARAMETER["Standard_Parallel_2",44.16666666666666],PARAMETER["Latitude_Of_Origin",43.84805555555556],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103791','NAD_1983_HARN_Adj_MN_Winona_Feet',NULL,NULL,NULL,NULL,'ESRI','104783',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Winona_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Winona",DATUM["D_NAD_1983_HARN_Adj_MN_Winona",SPHEROID["S_GRS_1980_Adj_MN_Winona",6378453.688,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-91.61666666666666],PARAMETER["Standard_Parallel_1",43.9],PARAMETER["Standard_Parallel_2",44.13333333333333],PARAMETER["Latitude_Of_Origin",43.84722222222222],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103792','NAD_1983_HARN_Adj_MN_Wright_Feet',NULL,NULL,NULL,NULL,'ESRI','104784',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Wright_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Wright",DATUM["D_NAD_1983_HARN_Adj_MN_Wright",SPHEROID["S_GRS_1980_Adj_MN_Wright",6378443.325,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-93.88333333333334],PARAMETER["Standard_Parallel_1",45.03333333333333],PARAMETER["Standard_Parallel_2",45.46666666666667],PARAMETER["Latitude_Of_Origin",44.9775],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103793','NAD_1983_HARN_Adj_MN_Yellow_Medicine_Feet',NULL,NULL,NULL,NULL,'ESRI','104785',NULL,NULL,'EPSG','1392','PROJCS["NAD_1983_HARN_Adj_MN_Yellow_Medicine_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_MN_Yellow_Medicine",DATUM["D_NAD_1983_HARN_Adj_MN_Yellow_Medicine",SPHEROID["S_GRS_1980_Adj_MN_Yellow_Medicine",6378530.193,298.2572221008827]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",100000.0],PARAMETER["Central_Meridian",-95.9],PARAMETER["Standard_Parallel_1",44.66666666666666],PARAMETER["Standard_Parallel_2",44.95],PARAMETER["Latitude_Of_Origin",44.54166666666666],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103794','Mexican_Datum_1993_UTM_Zone_11N',NULL,NULL,NULL,NULL,'EPSG','4483',NULL,NULL,'EPSG','3423','PROJCS["Mexican_Datum_1993_UTM_Zone_11N",GEOGCS["GCS_Mexican_Datum_of_1993",DATUM["D_Mexican_Datum_of_1993",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-117.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103795','Mexican_Datum_1993_UTM_Zone_12N',NULL,NULL,NULL,NULL,'EPSG','4483',NULL,NULL,'EPSG','3424','PROJCS["Mexican_Datum_1993_UTM_Zone_12N",GEOGCS["GCS_Mexican_Datum_of_1993",DATUM["D_Mexican_Datum_of_1993",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-111.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103796','Mexican_Datum_1993_UTM_Zone_13N',NULL,NULL,NULL,NULL,'EPSG','4483',NULL,NULL,'EPSG','3425','PROJCS["Mexican_Datum_1993_UTM_Zone_13N",GEOGCS["GCS_Mexican_Datum_of_1993",DATUM["D_Mexican_Datum_of_1993",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-105.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103797','Mexican_Datum_1993_UTM_Zone_14N',NULL,NULL,NULL,NULL,'EPSG','4483',NULL,NULL,'EPSG','3426','PROJCS["Mexican_Datum_1993_UTM_Zone_14N",GEOGCS["GCS_Mexican_Datum_of_1993",DATUM["D_Mexican_Datum_of_1993",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-99.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103798','Mexican_Datum_1993_UTM_Zone_15N',NULL,NULL,NULL,NULL,'EPSG','4483',NULL,NULL,'EPSG','3633','PROJCS["Mexican_Datum_1993_UTM_Zone_15N",GEOGCS["GCS_Mexican_Datum_of_1993",DATUM["D_Mexican_Datum_of_1993",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-93.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103799','Mexican_Datum_1993_UTM_Zone_16N',NULL,NULL,NULL,NULL,'EPSG','4483',NULL,NULL,'EPSG','3635','PROJCS["Mexican_Datum_1993_UTM_Zone_16N",GEOGCS["GCS_Mexican_Datum_of_1993",DATUM["D_Mexican_Datum_of_1993",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103800','NAD_1983_HARN_Adj_WI_Adams_Meters',NULL,NULL,NULL,NULL,'ESRI','104800',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Adams_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Adams",DATUM["D_NAD_1983_HARN_Adj_WI_AD_JN",SPHEROID["GRS_1980_Adj_WI_AD_JN",6378376.271,298.268410995005]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",147218.6944373889],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Scale_Factor",0.999999],PARAMETER["Latitude_Of_Origin",43.36666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103801','NAD_1983_HARN_Adj_WI_Ashland_Meters',NULL,NULL,NULL,NULL,'ESRI','104801',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Ashland_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Ashland",DATUM["D_NAD_1983_HARN_Adj_WI_AL",SPHEROID["GRS_1980_Adj_WI_AL",6378471.92,298.272883775229]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",172821.9456438913],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.62222222222222],PARAMETER["Scale_Factor",0.999997],PARAMETER["Latitude_Of_Origin",45.70611111111111],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103802','NAD_1983_HARN_Adj_WI_Barron_Meters',NULL,NULL,NULL,NULL,'ESRI','104802',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Barron_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Barron",DATUM["D_NAD_1983_HARN_Adj_WI_BA",SPHEROID["GRS_1980_Adj_WI_BA",6378472.931,298.272931052052]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",93150.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.85],PARAMETER["Scale_Factor",0.999996],PARAMETER["Latitude_Of_Origin",45.13333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103803','NAD_1983_HARN_Adj_WI_Brown_Meters',NULL,NULL,NULL,NULL,'ESRI','104804',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Brown_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Brown",DATUM["D_NAD_1983_HARN_Adj_WI_BR",SPHEROID["GRS_1980_Adj_WI_BR",6378137.0,298.257222100225]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",31599.99998984],PARAMETER["False_Northing",4599.98983997968],PARAMETER["Central_Meridian",-88.0],PARAMETER["Scale_Factor",1.00002],PARAMETER["Latitude_Of_Origin",43.0],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103804','NAD_1983_HARN_Adj_WI_Buffalo_Meters',NULL,NULL,NULL,NULL,'ESRI','104805',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Buffalo_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Buffalo",DATUM["D_NAD_1983_HARN_Adj_WI_BU",SPHEROID["GRS_1980_Adj_WI_BU",6378380.991,298.268631713702]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",175260.3505207011],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.79722222222222],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",43.48138888888889],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103805','NAD_1983_HARN_Adj_WI_Calumet_Meters',NULL,NULL,NULL,NULL,'ESRI','104807',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Calumet_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Calumet",DATUM["D_NAD_1983_HARN_Adj_WI_CL_FL_OG_WN",SPHEROID["GRS_1980_Adj_WI_CL_FL_OG_WN",6378345.09,298.266952895494]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",244754.8895097791],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.5],PARAMETER["Scale_Factor",0.999996],PARAMETER["Latitude_Of_Origin",42.71944444444445],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103806','NAD_1983_HARN_Adj_WI_Clark_Meters',NULL,NULL,NULL,NULL,'ESRI','104809',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Clark_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Clark",DATUM["D_NAD_1983_HARN_Adj_WI_CK",SPHEROID["GRS_1980_Adj_WI_CK",6378470.401,298.272812743089]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",199949.1998984],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.70833333333334],PARAMETER["Scale_Factor",0.999994],PARAMETER["Latitude_Of_Origin",43.6],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103807','NAD_1983_HARN_Adj_WI_Dodge_Meters',NULL,NULL,NULL,NULL,'ESRI','104813',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Dodge_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Dodge",DATUM["D_NAD_1983_HARN_Adj_WI_DD_JF",SPHEROID["GRS_1980_Adj_WI_DD_JF",6378376.811,298.268436246721]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",263347.7266954534],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.775],PARAMETER["Scale_Factor",0.999997],PARAMETER["Latitude_Of_Origin",41.47222222222222],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103808','NAD_1983_HARN_Adj_WI_Door_Meters',NULL,NULL,NULL,NULL,'ESRI','104814',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Door_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Door",DATUM["D_NAD_1983_HARN_Adj_WI_DR",SPHEROID["GRS_1980_Adj_WI_DR",6378313.92,298.26549531037]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",158801.1176022352],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.27222222222223],PARAMETER["Scale_Factor",0.999991],PARAMETER["Latitude_Of_Origin",44.4],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103809','NAD_1983_HARN_Adj_WI_Douglas_Meters',NULL,NULL,NULL,NULL,'ESRI','104815',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Douglas_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Douglas",DATUM["D_NAD_1983_HARN_Adj_WI_DG",SPHEROID["GRS_1980_Adj_WI_DG",6378414.93,298.270218784012]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",59131.31826263653],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.91666666666667],PARAMETER["Scale_Factor",0.999995],PARAMETER["Latitude_Of_Origin",45.88333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103810','NAD_1983_HARN_Adj_WI_Dunn_Meters',NULL,NULL,NULL,NULL,'ESRI','104816',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Dunn_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Dunn",DATUM["D_NAD_1983_HARN_Adj_WI_DU",SPHEROID["GRS_1980_Adj_WI_DU",6378413.021,298.270129514522]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",51816.10363220727],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.89444444444445],PARAMETER["Scale_Factor",0.999998],PARAMETER["Latitude_Of_Origin",44.40833333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103811','NAD_1983_HARN_Adj_WI_Florence_Meters',NULL,NULL,NULL,NULL,'ESRI','104818',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Florence_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Florence",DATUM["D_NAD_1983_HARN_Adj_WI_FN",SPHEROID["GRS_1980_Adj_WI_FN",6378530.851,298.275639532334]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",133502.667005334],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.14166666666668],PARAMETER["Scale_Factor",0.999993],PARAMETER["Latitude_Of_Origin",45.43888888888888],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103812','NAD_1983_HARN_Adj_WI_Fond_du_Lac_Meters',NULL,NULL,NULL,NULL,'ESRI','104819',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Fond_du_Lac_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_FondduLac",DATUM["D_NAD_1983_HARN_Adj_WI_CL_FL_OG_WN",SPHEROID["GRS_1980_Adj_WI_CL_FL_OG_WN",6378345.09,298.266952895494]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",244754.8895097791],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.5],PARAMETER["Scale_Factor",0.999996],PARAMETER["Latitude_Of_Origin",42.71944444444445],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103813','NAD_1983_HARN_Adj_WI_Forest_Meters',NULL,NULL,NULL,NULL,'ESRI','104820',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Forest_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Forest",DATUM["D_NAD_1983_HARN_Adj_WI_FR",SPHEROID["GRS_1980_Adj_WI_FR",6378591.521,298.278476609315]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",275844.5516891034],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.63333333333334],PARAMETER["Scale_Factor",0.999996],PARAMETER["Latitude_Of_Origin",44.00555555555555],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103814','NAD_1983_HARN_Adj_WI_Grant_Meters',NULL,NULL,NULL,NULL,'ESRI','104821',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Grant_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Grant",DATUM["D_NAD_1983_HARN_Adj_WI_GT",SPHEROID["GRS_1980_Adj_WI_GT",6378378.881,298.268533044963]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",242316.4846329693],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.8],PARAMETER["Scale_Factor",0.999997],PARAMETER["Latitude_Of_Origin",41.41111111111111],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103815','NAD_1983_HARN_Adj_WI_Iowa_Meters',NULL,NULL,NULL,NULL,'ESRI','104824',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Iowa_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Iowa",DATUM["D_NAD_1983_HARN_Adj_WI_IA",SPHEROID["GRS_1980_Adj_WI_IA",6378408.041,298.269896637591]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",113081.0261620523],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.16111111111111],PARAMETER["Scale_Factor",0.999997],PARAMETER["Latitude_Of_Origin",42.53888888888888],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103816','NAD_1983_HARN_Adj_WI_Iron_Meters',NULL,NULL,NULL,NULL,'ESRI','104825',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Iron_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Iron",DATUM["D_NAD_1983_HARN_Adj_WI_IR",SPHEROID["GRS_1980_Adj_WI_IR",6378655.071,298.281448362111]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",220980.4419608839],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.25555555555556],PARAMETER["Scale_Factor",0.999996],PARAMETER["Latitude_Of_Origin",45.43333333333333],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103817','NAD_1983_HARN_Adj_WI_Jefferson_Meters',NULL,NULL,NULL,NULL,'ESRI','104827',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Jefferson_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Jefferson",DATUM["D_NAD_1983_HARN_Adj_WI_DD_JF",SPHEROID["GRS_1980_Adj_WI_DD_JF",6378376.811,298.268436246721]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",263347.7266954534],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.775],PARAMETER["Scale_Factor",0.999997],PARAMETER["Latitude_Of_Origin",41.47222222222222],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103818','NAD_1983_HARN_Adj_WI_Juneau_Meters',NULL,NULL,NULL,NULL,'ESRI','104828',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Juneau_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Juneau",DATUM["D_NAD_1983_HARN_Adj_WI_AD_JN",SPHEROID["GRS_1980_Adj_WI_AD_JN",6378376.271,298.268410995005]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",147218.6944373889],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Scale_Factor",0.999999],PARAMETER["Latitude_Of_Origin",43.36666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103819','NAD_1983_HARN_Adj_WI_Kenosha_Meters',NULL,NULL,NULL,NULL,'ESRI','104829',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Kenosha_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Kenosha",DATUM["D_NAD_1983_HARN_Adj_WI_KN_MW_OZ_RA",SPHEROID["GRS_1980_Adj_WI_KN_MW_OZ_RA",6378315.7,298.265578547505]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",185928.3718567437],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.89444444444445],PARAMETER["Scale_Factor",0.999998],PARAMETER["Latitude_Of_Origin",42.21666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103820','NAD_1983_HARN_Adj_WI_Kewaunee_Meters',NULL,NULL,NULL,NULL,'ESRI','104830',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Kewaunee_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Kewaunee",DATUM["D_NAD_1983_HARN_Adj_WI_KW_MT_SG",SPHEROID["GRS_1980_Adj_WI_KW_MT_SG",6378285.86,298.264183156421]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",79857.75971551944],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.55],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",43.26666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103821','NAD_1983_HARN_Adj_WI_LaCrosse_Meters',NULL,NULL,NULL,NULL,'ESRI','104831',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_LaCrosse_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_LaCrosse",DATUM["D_NAD_1983_HARN_Adj_WI_LC",SPHEROID["GRS_1980_Adj_WI_LC",6378379.301,298.268552685186]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",130454.6609093218],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.31666666666666],PARAMETER["Scale_Factor",0.999994],PARAMETER["Latitude_Of_Origin",43.45111111111111],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103822','NAD_1983_HARN_Adj_WI_Lincoln_Meters',NULL,NULL,NULL,NULL,'ESRI','104834',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Lincoln_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Lincoln",DATUM["D_NAD_1983_HARN_Adj_WI_LN",SPHEROID["GRS_1980_Adj_WI_LN",6378531.821,298.275684891897]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",116129.0322580645],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.73333333333333],PARAMETER["Scale_Factor",0.999998],PARAMETER["Latitude_Of_Origin",44.84444444444445],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103823','NAD_1983_HARN_Adj_WI_Manitowoc_Meters',NULL,NULL,NULL,NULL,'ESRI','104835',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Manitowoc_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Manitowoc",DATUM["D_NAD_1983_HARN_Adj_WI_KW_MT_SG",SPHEROID["GRS_1980_Adj_WI_KW_MT_SG",6378285.86,298.264183156421]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",79857.75971551944],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.55],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",43.26666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103824','NAD_1983_HARN_Adj_WI_Marinette_Meters',NULL,NULL,NULL,NULL,'ESRI','104837',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Marinette_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Marinette",DATUM["D_NAD_1983_HARN_Adj_WI_MN",SPHEROID["GRS_1980_Adj_WI_MN",6378376.041,298.268400239645]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",238658.8773177547],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.71111111111111],PARAMETER["Scale_Factor",0.999986],PARAMETER["Latitude_Of_Origin",44.69166666666666],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103825','NAD_1983_HARN_Adj_WI_Menominee_Meters',NULL,NULL,NULL,NULL,'ESRI','104839',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Menominee_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Menominee",DATUM["D_NAD_1983_HARN_Adj_WI_ME",SPHEROID["GRS_1980_Adj_WI_ME",6378406.601,298.269829299684]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",105461.0109220219],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.41666666666667],PARAMETER["Scale_Factor",0.999994],PARAMETER["Latitude_Of_Origin",44.71666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103826','NAD_1983_HARN_Adj_WI_Milwaukee_Meters',NULL,NULL,NULL,NULL,'ESRI','104840',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Milwaukee_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Milwaukee",DATUM["D_NAD_1983_HARN_Adj_WI_KN_MW_OZ_RA",SPHEROID["GRS_1980_Adj_WI_KN_MW_OZ_RA",6378315.7,298.265578547505]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",185928.3718567437],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.89444444444445],PARAMETER["Scale_Factor",0.999998],PARAMETER["Latitude_Of_Origin",42.21666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103827','NAD_1983_HARN_Adj_WI_Oconto_Meters',NULL,NULL,NULL,NULL,'ESRI','104842',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Oconto_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Oconto",DATUM["D_NAD_1983_HARN_Adj_WI_OC",SPHEROID["GRS_1980_Adj_WI_OC",6378345.42,298.266968327098]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",182880.3657607315],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.90833333333335],PARAMETER["Scale_Factor",0.999991],PARAMETER["Latitude_Of_Origin",44.39722222222222],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103828','NAD_1983_HARN_Adj_WI_Outagamie_Meters',NULL,NULL,NULL,NULL,'ESRI','104844',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Outagamie_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Outagamie",DATUM["D_NAD_1983_HARN_Adj_WI_CL_FL_OG_WN",SPHEROID["GRS_1980_Adj_WI_CL_FL_OG_WN",6378345.09,298.266952895494]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",244754.8895097791],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.5],PARAMETER["Scale_Factor",0.999996],PARAMETER["Latitude_Of_Origin",42.71944444444445],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103829','NAD_1983_HARN_Adj_WI_Ozaukee_Meters',NULL,NULL,NULL,NULL,'ESRI','104845',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Ozaukee_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Ozaukee",DATUM["D_NAD_1983_HARN_Adj_WI_KN_MW_OZ_RA",SPHEROID["GRS_1980_Adj_WI_KN_MW_OZ_RA",6378315.7,298.265578547505]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",185928.3718567437],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.89444444444445],PARAMETER["Scale_Factor",0.999998],PARAMETER["Latitude_Of_Origin",42.21666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103830','NAD_1983_HARN_Adj_WI_Polk_Meters',NULL,NULL,NULL,NULL,'ESRI','104848',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Polk_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Polk",DATUM["D_NAD_1983_HARN_Adj_WI_PK",SPHEROID["GRS_1980_Adj_WI_PK",6378413.671,298.270159910105]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",141732.283464567],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.63333333333334],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",44.66111111111111],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103831','NAD_1983_HARN_Adj_WI_Price_Meters',NULL,NULL,NULL,NULL,'ESRI','104850',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Price_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Price",DATUM["D_NAD_1983_HARN_Adj_WI_PR",SPHEROID["GRS_1980_Adj_WI_PR",6378563.891,298.277184563214]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",227990.855981712],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.48888888888889],PARAMETER["Scale_Factor",0.999998],PARAMETER["Latitude_Of_Origin",44.55555555555555],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103832','NAD_1983_HARN_Adj_WI_Racine_Meters',NULL,NULL,NULL,NULL,'ESRI','104851',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Racine_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Racine",DATUM["D_NAD_1983_HARN_Adj_WI_KN_MW_OZ_RA",SPHEROID["GRS_1980_Adj_WI_KN_MW_OZ_RA",6378315.7,298.265578547505]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",185928.3718567437],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.89444444444445],PARAMETER["Scale_Factor",0.999998],PARAMETER["Latitude_Of_Origin",42.21666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103833','NAD_1983_HARN_Adj_WI_Rock_Meters',NULL,NULL,NULL,NULL,'ESRI','104853',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Rock_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Rock",DATUM["D_NAD_1983_HARN_Adj_WI_RK",SPHEROID["GRS_1980_Adj_WI_RK",6378377.671,298.268476462415]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",146304.2926085852],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.07222222222222],PARAMETER["Scale_Factor",0.999996],PARAMETER["Latitude_Of_Origin",41.94444444444444],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103834','NAD_1983_HARN_Adj_WI_Rusk_Meters',NULL,NULL,NULL,NULL,'ESRI','104854',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Rusk_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Rusk",DATUM["D_NAD_1983_HARN_Adj_WI_RS",SPHEROID["GRS_1980_Adj_WI_RS",6378472.751,298.272922634813]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",250546.1010922022],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.06666666666666],PARAMETER["Scale_Factor",0.999997],PARAMETER["Latitude_Of_Origin",43.91944444444444],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103835','NAD_1983_HARN_Adj_WI_St_Croix_Meters',NULL,NULL,NULL,NULL,'ESRI','104855',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_St_Croix_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_StCroix",DATUM["D_NAD_1983_HARN_Adj_WI_SC",SPHEROID["GRS_1980_Adj_WI_SC",6378412.511,298.270105665679]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",165506.731013462],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.63333333333334],PARAMETER["Scale_Factor",0.999995],PARAMETER["Latitude_Of_Origin",44.03611111111111],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103836','NAD_1983_HARN_Adj_WI_Sauk_Meters',NULL,NULL,NULL,NULL,'ESRI','104856',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Sauk_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Sauk",DATUM["D_NAD_1983_HARN_Adj_WI_SK",SPHEROID["GRS_1980_Adj_WI_SK",6378407.281,298.26986109814]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",185623.5712471425],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.9],PARAMETER["Scale_Factor",0.999995],PARAMETER["Latitude_Of_Origin",42.81944444444445],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103837','NAD_1983_HARN_Adj_WI_Shawano_Meters',NULL,NULL,NULL,NULL,'ESRI','104858',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Shawano_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Shawano",DATUM["D_NAD_1983_HARN_Adj_WI_SH",SPHEROID["GRS_1980_Adj_WI_SH",6378406.051,298.269803580344]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",262433.3248666498],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.60555555555555],PARAMETER["Scale_Factor",0.99999],PARAMETER["Latitude_Of_Origin",44.03611111111111],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103838','NAD_1983_HARN_Adj_WI_Sheboygan_Meters',NULL,NULL,NULL,NULL,'ESRI','104859',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Sheboygan_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Sheboygan",DATUM["D_NAD_1983_HARN_Adj_WI_KW_MT_SG",SPHEROID["GRS_1980_Adj_WI_KW_MT_SG",6378285.86,298.264183156421]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",79857.75971551944],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.55],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",43.26666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103839','NAD_1983_HARN_Adj_WI_Trempealeau_Meters',NULL,NULL,NULL,NULL,'ESRI','104861',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Trempealeau_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Trempealeau",DATUM["D_NAD_1983_HARN_Adj_WI_TR",SPHEROID["GRS_1980_Adj_WI_TR",6378380.091,298.26858962751]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",256946.9138938278],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.36666666666666],PARAMETER["Scale_Factor",0.999998],PARAMETER["Latitude_Of_Origin",43.16111111111111],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103840','NAD_1983_HARN_Adj_WI_Washington_Meters',NULL,NULL,NULL,NULL,'ESRI','104866',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Washington_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Washington",DATUM["D_NAD_1983_HARN_Adj_WI_WA",SPHEROID["GRS_1980_Adj_WI_WA",6378407.141,298.269854551399]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",120091.4401828804],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.06388888888888],PARAMETER["Scale_Factor",0.999995],PARAMETER["Latitude_Of_Origin",42.91805555555555],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103841','NAD_1983_HARN_Adj_WI_Waukesha_Meters',NULL,NULL,NULL,NULL,'ESRI','104867',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Waukesha_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Waukesha",DATUM["D_NAD_1983_HARN_Adj_WI_WK",SPHEROID["GRS_1980_Adj_WI_WK",6378376.871,298.268439052467]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",208788.4175768352],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.225],PARAMETER["Scale_Factor",0.999997],PARAMETER["Latitude_Of_Origin",42.56944444444445],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103842','NAD_1983_HARN_Adj_WI_Waupaca_Meters',NULL,NULL,NULL,NULL,'ESRI','104868',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Waupaca_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Waupaca",DATUM["D_NAD_1983_HARN_Adj_WI_WP",SPHEROID["GRS_1980_Adj_WI_WP",6378375.251,298.268363297321]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",185013.9700279401],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.81666666666666],PARAMETER["Scale_Factor",0.999996],PARAMETER["Latitude_Of_Origin",43.42027777777778],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103843','NAD_1983_HARN_Adj_WI_Winnebago_Meters',NULL,NULL,NULL,NULL,'ESRI','104870',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Winnebago_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Winnebago",DATUM["D_NAD_1983_HARN_Adj_WI_CL_FL_OG_WN",SPHEROID["GRS_1980_Adj_WI_CL_FL_OG_WN",6378345.09,298.266952895494]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",244754.8895097791],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.5],PARAMETER["Scale_Factor",0.999996],PARAMETER["Latitude_Of_Origin",42.71944444444445],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103844','NAD_1983_HARN_Adj_WI_Bayfield_Meters',NULL,NULL,NULL,NULL,'ESRI','104803',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Bayfield_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Bayfield",DATUM["D_NAD_1983_HARN_Adj_WI_BF",SPHEROID["GRS_1980_Adj_WI_BF",6378411.351,298.270051421254]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",228600.4572009144],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.15277777777779],PARAMETER["Standard_Parallel_1",46.41388888888888],PARAMETER["Standard_Parallel_2",46.925],PARAMETER["Latitude_Of_Origin",45.33333333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103845','NAD_1983_HARN_Adj_WI_Burnett_Meters',NULL,NULL,NULL,NULL,'ESRI','104806',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Burnett_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Burnett",DATUM["D_NAD_1983_HARN_Adj_WI_BN",SPHEROID["GRS_1980_Adj_WI_BN",6378414.96,298.270220186885]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",64008.12801625604],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.45777777777778],PARAMETER["Standard_Parallel_1",45.71388888888889],PARAMETER["Standard_Parallel_2",46.08333333333334],PARAMETER["Latitude_Of_Origin",45.36388888888889],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103846','NAD_1983_HARN_Adj_WI_Chippewa_Meters',NULL,NULL,NULL,NULL,'ESRI','104808',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Chippewa_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Chippewa",DATUM["D_NAD_1983_HARN_Adj_WI_CP",SPHEROID["GRS_1980_Adj_WI_CP",6378412.542,298.270107115315]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",60045.72009144019],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.29444444444444],PARAMETER["Standard_Parallel_1",44.81388888888888],PARAMETER["Standard_Parallel_2",45.14166666666667],PARAMETER["Latitude_Of_Origin",44.58111111111111],UNIT["Meter",1.0]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103847','NAD_1983_HARN_Adj_WI_Columbia_Meters',NULL,NULL,NULL,NULL,'ESRI','104810',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Columbia_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Columbia",DATUM["D_NAD_1983_HARN_Adj_WI_CO",SPHEROID["GRS_1980_Adj_WI_CO",6378376.331,298.268413800752]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",169164.3383286767],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.39444444444445],PARAMETER["Standard_Parallel_1",43.33333333333334],PARAMETER["Standard_Parallel_2",43.59166666666667],PARAMETER["Latitude_Of_Origin",42.45833333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103848','NAD_1983_HARN_Adj_WI_Crawford_Meters',NULL,NULL,NULL,NULL,'ESRI','104811',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Crawford_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Crawford",DATUM["D_NAD_1983_HARN_Adj_WI_CR",SPHEROID["GRS_1980_Adj_WI_CR",6378379.031,298.268540059328]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",113690.6273812548],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.9388888888889],PARAMETER["Standard_Parallel_1",43.05833333333333],PARAMETER["Standard_Parallel_2",43.34166666666667],PARAMETER["Latitude_Of_Origin",42.71666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103849','NAD_1983_HARN_Adj_WI_Dane_Meters',NULL,NULL,NULL,NULL,'ESRI','104812',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Dane_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Dane",DATUM["D_NAD_1983_HARN_Adj_WI_DN",SPHEROID["GRS_1980_Adj_WI_DN",6378407.621,298.269876997368]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",247193.2943865888],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.42222222222223],PARAMETER["Standard_Parallel_1",42.90833333333333],PARAMETER["Standard_Parallel_2",43.23055555555555],PARAMETER["Latitude_Of_Origin",41.75],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103850','NAD_1983_HARN_Adj_WI_EauClaire_Meters',NULL,NULL,NULL,NULL,'ESRI','104817',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_EauClaire_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_EauClaire",DATUM["D_NAD_1983_HARN_Adj_WI_EC",SPHEROID["GRS_1980_Adj_WI_EC",6378380.381,298.268603188617]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",120091.4401828804],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.28888888888889],PARAMETER["Standard_Parallel_1",44.73055555555555],PARAMETER["Standard_Parallel_2",45.01388888888889],PARAMETER["Latitude_Of_Origin",44.04722222222222],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103851','NAD_1983_HARN_Adj_WI_Green_Meters',NULL,NULL,NULL,NULL,'ESRI','104822',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Green_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Green",DATUM["D_NAD_1983_HARN_Adj_WI_GR_LF",SPHEROID["GRS_1980_Adj_WI_GR_LF",6378408.481,298.269917213063]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",170078.7401574803],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.83888888888889],PARAMETER["Standard_Parallel_1",42.48611111111111],PARAMETER["Standard_Parallel_2",42.78888888888888],PARAMETER["Latitude_Of_Origin",42.225],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103852','NAD_1983_HARN_Adj_WI_GreenLake_Meters',NULL,NULL,NULL,NULL,'ESRI','104823',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_GreenLake_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_GreenLake",DATUM["D_NAD_1983_HARN_Adj_WI_GL_MQ",SPHEROID["GRS_1980_Adj_WI_GL_MQ",6378375.601,298.268379664173]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",150876.3017526035],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.24166666666667],PARAMETER["Standard_Parallel_1",43.66666666666666],PARAMETER["Standard_Parallel_2",43.94722222222222],PARAMETER["Latitude_Of_Origin",43.09444444444445],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103853','NAD_1983_HARN_Adj_WI_Jackson_Meters',NULL,NULL,NULL,NULL,'ESRI','104826',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Jackson_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Jackson",DATUM["D_NAD_1983_HARN_Adj_WI_JA",SPHEROID["GRS_1980_Adj_WI_JA",6378409.151,298.269948543895]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",125882.6517653035],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.73888888888889],PARAMETER["Standard_Parallel_1",44.16388888888888],PARAMETER["Standard_Parallel_2",44.41944444444444],PARAMETER["Latitude_Of_Origin",43.79444444444444],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103854','NAD_1983_HARN_Adj_WI_Lafayette_Meters',NULL,NULL,NULL,NULL,'ESRI','104832',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Lafayette_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Lafayette",DATUM["D_NAD_1983_HARN_Adj_WI_GR_LF",SPHEROID["GRS_1980_Adj_WI_GR_LF",6378408.481,298.269917213063]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",170078.7401574803],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.83888888888889],PARAMETER["Standard_Parallel_1",42.48611111111111],PARAMETER["Standard_Parallel_2",42.78888888888888],PARAMETER["Latitude_Of_Origin",42.225],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103855','NAD_1983_HARN_Adj_WI_Langlade_Meters',NULL,NULL,NULL,NULL,'ESRI','104833',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Langlade_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Langlade",DATUM["D_NAD_1983_HARN_Adj_WI_LG",SPHEROID["GRS_1980_Adj_WI_LG",6378560.121,298.277008268831]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",198425.1968503937],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.03333333333333],PARAMETER["Standard_Parallel_1",45.0],PARAMETER["Standard_Parallel_2",45.30833333333333],PARAMETER["Latitude_Of_Origin",44.20694444444445],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103856','NAD_1983_HARN_Adj_WI_Marathon_Meters',NULL,NULL,NULL,NULL,'ESRI','104836',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Marathon_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Marathon",DATUM["D_NAD_1983_HARN_Adj_WI_MA",SPHEROID["GRS_1980_Adj_WI_MA",6378500.6,298.274224921888]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",74676.14935229871],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.77],PARAMETER["Standard_Parallel_1",44.74527777777778],PARAMETER["Standard_Parallel_2",45.05638888888888],PARAMETER["Latitude_Of_Origin",44.40555555555555],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103857','NAD_1983_HARN_Adj_WI_Marquette_Meters',NULL,NULL,NULL,NULL,'ESRI','104838',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Marquette_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Marquette",DATUM["D_NAD_1983_HARN_Adj_WI_GL_MQ",SPHEROID["GRS_1980_Adj_WI_GL_MQ",6378375.601,298.268379664173]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",150876.3017526035],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.24166666666667],PARAMETER["Standard_Parallel_1",43.66666666666666],PARAMETER["Standard_Parallel_2",43.94722222222222],PARAMETER["Latitude_Of_Origin",43.09444444444445],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103858','NAD_1983_HARN_Adj_WI_Monroe_Meters',NULL,NULL,NULL,NULL,'ESRI','104841',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Monroe_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Monroe",DATUM["D_NAD_1983_HARN_Adj_WI_MR",SPHEROID["GRS_1980_Adj_WI_MR",6378438.991,298.27134393498]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",204521.2090424181],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.64166666666668],PARAMETER["Standard_Parallel_1",43.83888888888889],PARAMETER["Standard_Parallel_2",44.16111111111111],PARAMETER["Latitude_Of_Origin",42.90277777777778],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103859','NAD_1983_HARN_Adj_WI_Oneida_Meters',NULL,NULL,NULL,NULL,'ESRI','104843',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Oneida_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Oneida",DATUM["D_NAD_1983_HARN_Adj_WI_ON",SPHEROID["GRS_1980_Adj_WI_ON",6378593.86,298.278585986653]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",70104.14020828043],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.54444444444444],PARAMETER["Standard_Parallel_1",45.56666666666667],PARAMETER["Standard_Parallel_2",45.84166666666667],PARAMETER["Latitude_Of_Origin",45.18611111111111],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103860','NAD_1983_HARN_Adj_WI_Pepin_Meters',NULL,NULL,NULL,NULL,'ESRI','104846',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Pepin_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Pepin",DATUM["D_NAD_1983_HARN_Adj_WI_PP_PC",SPHEROID["GRS_1980_Adj_WI_PP_PC",6378381.271,298.268644807185]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",167640.3352806706],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.22777777777777],PARAMETER["Standard_Parallel_1",44.52222222222222],PARAMETER["Standard_Parallel_2",44.75],PARAMETER["Latitude_Of_Origin",43.86194444444445],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103861','NAD_1983_HARN_Adj_WI_Pierce_Meters',NULL,NULL,NULL,NULL,'ESRI','104847',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Pierce_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Pierce",DATUM["D_NAD_1983_HARN_Adj_WI_PP_PC",SPHEROID["GRS_1980_Adj_WI_PP_PC",6378381.271,298.268644807185]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",167640.3352806706],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.22777777777777],PARAMETER["Standard_Parallel_1",44.52222222222222],PARAMETER["Standard_Parallel_2",44.75],PARAMETER["Latitude_Of_Origin",43.86194444444445],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103862','NAD_1983_HARN_Adj_WI_Portage_Meters',NULL,NULL,NULL,NULL,'ESRI','104849',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Portage_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Portage",DATUM["D_NAD_1983_HARN_Adj_WI_PT",SPHEROID["GRS_1980_Adj_WI_PT",6378344.377,298.266919538913]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",56388.11277622556],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.5],PARAMETER["Standard_Parallel_1",44.18333333333333],PARAMETER["Standard_Parallel_2",44.65],PARAMETER["Latitude_Of_Origin",43.96666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103863','NAD_1983_HARN_Adj_WI_Richland_Meters',NULL,NULL,NULL,NULL,'ESRI','104852',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Richland_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Richland",DATUM["D_NAD_1983_HARN_Adj_WI_RC",SPHEROID["GRS_1980_Adj_WI_RC",6378408.091,298.269898975713]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",202387.6047752096],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.43055555555556],PARAMETER["Standard_Parallel_1",43.14166666666667],PARAMETER["Standard_Parallel_2",43.50277777777778],PARAMETER["Latitude_Of_Origin",42.11388888888889],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103864','NAD_1983_HARN_Adj_WI_Sawyer_Meters',NULL,NULL,NULL,NULL,'ESRI','104857',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Sawyer_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Sawyer",DATUM["D_NAD_1983_HARN_Adj_WI_SW",SPHEROID["GRS_1980_Adj_WI_SW",6378534.451,298.275807877103]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",216713.2334264669],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.11666666666666],PARAMETER["Standard_Parallel_1",45.71944444444445],PARAMETER["Standard_Parallel_2",46.08055555555556],PARAMETER["Latitude_Of_Origin",44.81388888888888],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103865','NAD_1983_HARN_Adj_WI_Taylor_Meters',NULL,NULL,NULL,NULL,'ESRI','104860',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Taylor_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Taylor",DATUM["D_NAD_1983_HARN_Adj_WI_TA",SPHEROID["GRS_1980_Adj_WI_TA",6378532.921,298.275736330576]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",187147.5742951486],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.48333333333333],PARAMETER["Standard_Parallel_1",45.05555555555555],PARAMETER["Standard_Parallel_2",45.3],PARAMETER["Latitude_Of_Origin",44.20833333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103866','NAD_1983_HARN_Adj_WI_Vernon_Meters',NULL,NULL,NULL,NULL,'ESRI','104862',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Vernon_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Vernon",DATUM["D_NAD_1983_HARN_Adj_WI_VR",SPHEROID["GRS_1980_Adj_WI_VR",6378408.941,298.269938723784]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",222504.44500889],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.78333333333333],PARAMETER["Standard_Parallel_1",43.46666666666667],PARAMETER["Standard_Parallel_2",43.68333333333333],PARAMETER["Latitude_Of_Origin",43.14722222222222],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103867','NAD_1983_HARN_Adj_WI_Vilas_Meters',NULL,NULL,NULL,NULL,'ESRI','104863',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Vilas_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Vilas",DATUM["D_NAD_1983_HARN_Adj_WI_VI",SPHEROID["GRS_1980_Adj_WI_VI",6378624.171,298.280003402845]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",134417.0688341377],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.48888888888889],PARAMETER["Standard_Parallel_1",45.93055555555555],PARAMETER["Standard_Parallel_2",46.225],PARAMETER["Latitude_Of_Origin",45.625],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103868','NAD_1983_HARN_Adj_WI_Walworth_Meters',NULL,NULL,NULL,NULL,'ESRI','104864',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Walworth_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Walworth",DATUM["D_NAD_1983_HARN_Adj_WI_WW",SPHEROID["GRS_1980_Adj_WI_WW",6378377.411,298.268464304182]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",232562.8651257303],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.54166666666667],PARAMETER["Standard_Parallel_1",42.58888888888889],PARAMETER["Standard_Parallel_2",42.75],PARAMETER["Latitude_Of_Origin",41.66944444444444],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103869','NAD_1983_HARN_Adj_WI_Washburn_Meters',NULL,NULL,NULL,NULL,'ESRI','104865',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Washburn_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Washburn",DATUM["D_NAD_1983_HARN_Adj_WI_WB",SPHEROID["GRS_1980_Adj_WI_WB",6378474.591,298.273008677695]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",234086.8681737364],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.78333333333333],PARAMETER["Standard_Parallel_1",45.77222222222222],PARAMETER["Standard_Parallel_2",46.15],PARAMETER["Latitude_Of_Origin",44.26666666666667],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103870','NAD_1983_HARN_Adj_WI_Waushara_Meters',NULL,NULL,NULL,NULL,'ESRI','104869',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Waushara_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Waushara",DATUM["D_NAD_1983_HARN_Adj_WI_WS",SPHEROID["GRS_1980_Adj_WI_WS",6378405.971,298.269799839349]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",120091.4401828804],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.24166666666667],PARAMETER["Standard_Parallel_1",43.975],PARAMETER["Standard_Parallel_2",44.25277777777778],PARAMETER["Latitude_Of_Origin",43.70833333333334],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103871','NAD_1983_HARN_Adj_WI_Wood_Meters',NULL,NULL,NULL,NULL,'ESRI','104871',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Wood_Meters",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Wood",DATUM["D_NAD_1983_HARN_Adj_WI_WD",SPHEROID["GRS_1980_Adj_WI_WD",6378437.651,298.271281273316]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",208483.616967234],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",44.18055555555555],PARAMETER["Standard_Parallel_2",44.54444444444444],PARAMETER["Latitude_Of_Origin",43.15138888888889],UNIT["Meter",1.0]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103900','NAD_1983_HARN_Adj_WI_Adams_Feet',NULL,NULL,NULL,NULL,'ESRI','104800',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Adams_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Adams",DATUM["D_NAD_1983_HARN_Adj_WI_AD_JN",SPHEROID["GRS_1980_Adj_WI_AD_JN",6378376.271,298.268410995005]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",483000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Scale_Factor",0.999999],PARAMETER["Latitude_Of_Origin",43.36666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103901','NAD_1983_HARN_Adj_WI_Ashland_Feet',NULL,NULL,NULL,NULL,'ESRI','104801',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Ashland_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Ashland",DATUM["D_NAD_1983_HARN_Adj_WI_AL",SPHEROID["GRS_1980_Adj_WI_AL",6378471.92,298.272883775229]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",567000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.62222222222222],PARAMETER["Scale_Factor",0.999997],PARAMETER["Latitude_Of_Origin",45.70611111111111],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103902','NAD_1983_HARN_Adj_WI_Barron_Feet',NULL,NULL,NULL,NULL,'ESRI','104802',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Barron_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Barron",DATUM["D_NAD_1983_HARN_Adj_WI_BA",SPHEROID["GRS_1980_Adj_WI_BA",6378472.931,298.272931052052]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",305609.625],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.85],PARAMETER["Scale_Factor",0.999996],PARAMETER["Latitude_Of_Origin",45.13333333333333],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103903','NAD_1983_HARN_Adj_WI_Brown_Feet',NULL,NULL,NULL,NULL,'ESRI','104804',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Brown_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Brown",DATUM["D_NAD_1983_HARN_Adj_WI_BR",SPHEROID["GRS_1980_Adj_WI_BR",6378137.0,298.257222100225]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",103674.3333],PARAMETER["False_Northing",15091.8],PARAMETER["Central_Meridian",-88.0],PARAMETER["Scale_Factor",1.00002],PARAMETER["Latitude_Of_Origin",43.0],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103904','NAD_1983_HARN_Adj_WI_Buffalo_Feet',NULL,NULL,NULL,NULL,'ESRI','104805',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Buffalo_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Buffalo",DATUM["D_NAD_1983_HARN_Adj_WI_BU",SPHEROID["GRS_1980_Adj_WI_BU",6378380.991,298.268631713702]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",575000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.79722222222222],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",43.48138888888889],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103905','NAD_1983_HARN_Adj_WI_Calumet_Feet',NULL,NULL,NULL,NULL,'ESRI','104807',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Calumet_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Calumet",DATUM["D_NAD_1983_HARN_Adj_WI_CL_FL_OG_WN",SPHEROID["GRS_1980_Adj_WI_CL_FL_OG_WN",6378345.09,298.266952895494]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",803000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.5],PARAMETER["Scale_Factor",0.999996],PARAMETER["Latitude_Of_Origin",42.71944444444445],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103906','NAD_1983_HARN_Adj_WI_Clark_Feet',NULL,NULL,NULL,NULL,'ESRI','104809',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Clark_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Clark",DATUM["D_NAD_1983_HARN_Adj_WI_CK",SPHEROID["GRS_1980_Adj_WI_CK",6378470.401,298.272812743089]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",656000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.70833333333334],PARAMETER["Scale_Factor",0.999994],PARAMETER["Latitude_Of_Origin",43.6],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103907','NAD_1983_HARN_Adj_WI_Dodge_Feet',NULL,NULL,NULL,NULL,'ESRI','104813',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Dodge_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Dodge",DATUM["D_NAD_1983_HARN_Adj_WI_DD_JF",SPHEROID["GRS_1980_Adj_WI_DD_JF",6378376.811,298.268436246721]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",864000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.775],PARAMETER["Scale_Factor",0.999997],PARAMETER["Latitude_Of_Origin",41.47222222222222],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103908','NAD_1983_HARN_Adj_WI_Door_Feet',NULL,NULL,NULL,NULL,'ESRI','104814',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Door_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Door",DATUM["D_NAD_1983_HARN_Adj_WI_DR",SPHEROID["GRS_1980_Adj_WI_DR",6378313.92,298.26549531037]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",521000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.27222222222223],PARAMETER["Scale_Factor",0.999991],PARAMETER["Latitude_Of_Origin",44.4],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103909','NAD_1983_HARN_Adj_WI_Douglas_Feet',NULL,NULL,NULL,NULL,'ESRI','104815',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Douglas_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Douglas",DATUM["D_NAD_1983_HARN_Adj_WI_DG",SPHEROID["GRS_1980_Adj_WI_DG",6378414.93,298.270218784012]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",194000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.91666666666667],PARAMETER["Scale_Factor",0.999995],PARAMETER["Latitude_Of_Origin",45.88333333333333],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103910','NAD_1983_HARN_Adj_WI_Dunn_Feet',NULL,NULL,NULL,NULL,'ESRI','104816',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Dunn_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Dunn",DATUM["D_NAD_1983_HARN_Adj_WI_DU",SPHEROID["GRS_1980_Adj_WI_DU",6378413.021,298.270129514522]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",170000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.89444444444445],PARAMETER["Scale_Factor",0.999998],PARAMETER["Latitude_Of_Origin",44.40833333333333],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103911','NAD_1983_HARN_Adj_WI_Florence_Feet',NULL,NULL,NULL,NULL,'ESRI','104818',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Florence_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Florence",DATUM["D_NAD_1983_HARN_Adj_WI_FN",SPHEROID["GRS_1980_Adj_WI_FN",6378530.851,298.275639532334]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",438000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.14166666666668],PARAMETER["Scale_Factor",0.999993],PARAMETER["Latitude_Of_Origin",45.43888888888888],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103912','NAD_1983_HARN_Adj_WI_Fond_du_Lac_Feet',NULL,NULL,NULL,NULL,'ESRI','104819',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Fond_du_Lac_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_FondduLac",DATUM["D_NAD_1983_HARN_Adj_WI_CL_FL_OG_WN",SPHEROID["GRS_1980_Adj_WI_CL_FL_OG_WN",6378345.09,298.266952895494]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",803000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.5],PARAMETER["Scale_Factor",0.999996],PARAMETER["Latitude_Of_Origin",42.71944444444445],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103913','NAD_1983_HARN_Adj_WI_Forest_Feet',NULL,NULL,NULL,NULL,'ESRI','104820',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Forest_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Forest",DATUM["D_NAD_1983_HARN_Adj_WI_FR",SPHEROID["GRS_1980_Adj_WI_FR",6378591.521,298.278476609315]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",905000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.63333333333334],PARAMETER["Scale_Factor",0.999996],PARAMETER["Latitude_Of_Origin",44.00555555555555],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103914','NAD_1983_HARN_Adj_WI_Grant_Feet',NULL,NULL,NULL,NULL,'ESRI','104821',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Grant_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Grant",DATUM["D_NAD_1983_HARN_Adj_WI_GT",SPHEROID["GRS_1980_Adj_WI_GT",6378378.881,298.268533044963]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",795000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.8],PARAMETER["Scale_Factor",0.999997],PARAMETER["Latitude_Of_Origin",41.41111111111111],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103915','NAD_1983_HARN_Adj_WI_Iowa_Feet',NULL,NULL,NULL,NULL,'ESRI','104824',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Iowa_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Iowa",DATUM["D_NAD_1983_HARN_Adj_WI_IA",SPHEROID["GRS_1980_Adj_WI_IA",6378408.041,298.269896637591]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",371000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.16111111111111],PARAMETER["Scale_Factor",0.999997],PARAMETER["Latitude_Of_Origin",42.53888888888888],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103916','NAD_1983_HARN_Adj_WI_Iron_Feet',NULL,NULL,NULL,NULL,'ESRI','104825',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Iron_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Iron",DATUM["D_NAD_1983_HARN_Adj_WI_IR",SPHEROID["GRS_1980_Adj_WI_IR",6378655.071,298.281448362111]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",725000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.25555555555556],PARAMETER["Scale_Factor",0.999996],PARAMETER["Latitude_Of_Origin",45.43333333333333],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103917','NAD_1983_HARN_Adj_WI_Jefferson_Feet',NULL,NULL,NULL,NULL,'ESRI','104827',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Jefferson_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Jefferson",DATUM["D_NAD_1983_HARN_Adj_WI_DD_JF",SPHEROID["GRS_1980_Adj_WI_DD_JF",6378376.811,298.268436246721]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",864000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.775],PARAMETER["Scale_Factor",0.999997],PARAMETER["Latitude_Of_Origin",41.47222222222222],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103918','NAD_1983_HARN_Adj_WI_Juneau_Feet',NULL,NULL,NULL,NULL,'ESRI','104828',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Juneau_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Juneau",DATUM["D_NAD_1983_HARN_Adj_WI_AD_JN",SPHEROID["GRS_1980_Adj_WI_AD_JN",6378376.271,298.268410995005]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",483000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Scale_Factor",0.999999],PARAMETER["Latitude_Of_Origin",43.36666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103919','NAD_1983_HARN_Adj_WI_Kenosha_Feet',NULL,NULL,NULL,NULL,'ESRI','104829',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Kenosha_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Kenosha",DATUM["D_NAD_1983_HARN_Adj_WI_KN_MW_OZ_RA",SPHEROID["GRS_1980_Adj_WI_KN_MW_OZ_RA",6378315.7,298.265578547505]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",610000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.89444444444445],PARAMETER["Scale_Factor",0.999998],PARAMETER["Latitude_Of_Origin",42.21666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103920','NAD_1983_HARN_Adj_WI_Kewaunee_Feet',NULL,NULL,NULL,NULL,'ESRI','104830',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Kewaunee_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Kewaunee",DATUM["D_NAD_1983_HARN_Adj_WI_KW_MT_SG",SPHEROID["GRS_1980_Adj_WI_KW_MT_SG",6378285.86,298.264183156421]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",262000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.55],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",43.26666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103921','NAD_1983_HARN_Adj_WI_LaCrosse_Feet',NULL,NULL,NULL,NULL,'ESRI','104831',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_LaCrosse_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_LaCrosse",DATUM["D_NAD_1983_HARN_Adj_WI_LC",SPHEROID["GRS_1980_Adj_WI_LC",6378379.301,298.268552685186]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",428000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.31666666666666],PARAMETER["Scale_Factor",0.999994],PARAMETER["Latitude_Of_Origin",43.45111111111111],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103922','NAD_1983_HARN_Adj_WI_Lincoln_Feet',NULL,NULL,NULL,NULL,'ESRI','104834',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Lincoln_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Lincoln",DATUM["D_NAD_1983_HARN_Adj_WI_LN",SPHEROID["GRS_1980_Adj_WI_LN",6378531.821,298.275684891897]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",381000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.73333333333333],PARAMETER["Scale_Factor",0.999998],PARAMETER["Latitude_Of_Origin",44.84444444444445],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103923','NAD_1983_HARN_Adj_WI_Manitowoc_Feet',NULL,NULL,NULL,NULL,'ESRI','104835',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Manitowoc_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Manitowoc",DATUM["D_NAD_1983_HARN_Adj_WI_KW_MT_SG",SPHEROID["GRS_1980_Adj_WI_KW_MT_SG",6378285.86,298.264183156421]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",262000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.55],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",43.26666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103924','NAD_1983_HARN_Adj_WI_Marinette_Feet',NULL,NULL,NULL,NULL,'ESRI','104837',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Marinette_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Marinette",DATUM["D_NAD_1983_HARN_Adj_WI_MN",SPHEROID["GRS_1980_Adj_WI_MN",6378376.041,298.268400239645]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",783000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.71111111111111],PARAMETER["Scale_Factor",0.999986],PARAMETER["Latitude_Of_Origin",44.69166666666666],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103925','NAD_1983_HARN_Adj_WI_Menominee_Feet',NULL,NULL,NULL,NULL,'ESRI','104839',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Menominee_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Menominee",DATUM["D_NAD_1983_HARN_Adj_WI_ME",SPHEROID["GRS_1980_Adj_WI_ME",6378406.601,298.269829299684]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",346000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.41666666666667],PARAMETER["Scale_Factor",0.999994],PARAMETER["Latitude_Of_Origin",44.71666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103926','NAD_1983_HARN_Adj_WI_Milwaukee_Feet',NULL,NULL,NULL,NULL,'ESRI','104840',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Milwaukee_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Milwaukee",DATUM["D_NAD_1983_HARN_Adj_WI_KN_MW_OZ_RA",SPHEROID["GRS_1980_Adj_WI_KN_MW_OZ_RA",6378315.7,298.265578547505]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",610000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.89444444444445],PARAMETER["Scale_Factor",0.999998],PARAMETER["Latitude_Of_Origin",42.21666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103927','NAD_1983_HARN_Adj_WI_Oconto_Feet',NULL,NULL,NULL,NULL,'ESRI','104842',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Oconto_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Oconto",DATUM["D_NAD_1983_HARN_Adj_WI_OC",SPHEROID["GRS_1980_Adj_WI_OC",6378345.42,298.266968327098]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",600000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.90833333333335],PARAMETER["Scale_Factor",0.999991],PARAMETER["Latitude_Of_Origin",44.39722222222222],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103928','NAD_1983_HARN_Adj_WI_Outagamie_Feet',NULL,NULL,NULL,NULL,'ESRI','104844',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Outagamie_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Outagamie",DATUM["D_NAD_1983_HARN_Adj_WI_CL_FL_OG_WN",SPHEROID["GRS_1980_Adj_WI_CL_FL_OG_WN",6378345.09,298.266952895494]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",803000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.5],PARAMETER["Scale_Factor",0.999996],PARAMETER["Latitude_Of_Origin",42.71944444444445],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103929','NAD_1983_HARN_Adj_WI_Ozaukee_Feet',NULL,NULL,NULL,NULL,'ESRI','104845',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Ozaukee_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Ozaukee",DATUM["D_NAD_1983_HARN_Adj_WI_KN_MW_OZ_RA",SPHEROID["GRS_1980_Adj_WI_KN_MW_OZ_RA",6378315.7,298.265578547505]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",610000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.89444444444445],PARAMETER["Scale_Factor",0.999998],PARAMETER["Latitude_Of_Origin",42.21666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103930','NAD_1983_HARN_Adj_WI_Polk_Feet',NULL,NULL,NULL,NULL,'ESRI','104848',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Polk_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Polk",DATUM["D_NAD_1983_HARN_Adj_WI_PK",SPHEROID["GRS_1980_Adj_WI_PK",6378413.671,298.270159910105]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",465000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.63333333333334],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",44.66111111111111],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103931','NAD_1983_HARN_Adj_WI_Price_Feet',NULL,NULL,NULL,NULL,'ESRI','104850',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Price_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Price",DATUM["D_NAD_1983_HARN_Adj_WI_PR",SPHEROID["GRS_1980_Adj_WI_PR",6378563.891,298.277184563214]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",748000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.48888888888889],PARAMETER["Scale_Factor",0.999998],PARAMETER["Latitude_Of_Origin",44.55555555555555],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103932','NAD_1983_HARN_Adj_WI_Racine_Feet',NULL,NULL,NULL,NULL,'ESRI','104851',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Racine_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Racine",DATUM["D_NAD_1983_HARN_Adj_WI_KN_MW_OZ_RA",SPHEROID["GRS_1980_Adj_WI_KN_MW_OZ_RA",6378315.7,298.265578547505]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",610000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.89444444444445],PARAMETER["Scale_Factor",0.999998],PARAMETER["Latitude_Of_Origin",42.21666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103933','NAD_1983_HARN_Adj_WI_Rock_Feet',NULL,NULL,NULL,NULL,'ESRI','104853',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Rock_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Rock",DATUM["D_NAD_1983_HARN_Adj_WI_RK",SPHEROID["GRS_1980_Adj_WI_RK",6378377.671,298.268476462415]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",480000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.07222222222222],PARAMETER["Scale_Factor",0.999996],PARAMETER["Latitude_Of_Origin",41.94444444444444],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103934','NAD_1983_HARN_Adj_WI_Rusk_Feet',NULL,NULL,NULL,NULL,'ESRI','104854',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Rusk_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Rusk",DATUM["D_NAD_1983_HARN_Adj_WI_RS",SPHEROID["GRS_1980_Adj_WI_RS",6378472.751,298.272922634813]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",822000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.06666666666666],PARAMETER["Scale_Factor",0.999997],PARAMETER["Latitude_Of_Origin",43.91944444444444],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103935','NAD_1983_HARN_Adj_WI_St_Croix_Feet',NULL,NULL,NULL,NULL,'ESRI','104855',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_St_Croix_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_StCroix",DATUM["D_NAD_1983_HARN_Adj_WI_SC",SPHEROID["GRS_1980_Adj_WI_SC",6378412.511,298.270105665679]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",543000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.63333333333334],PARAMETER["Scale_Factor",0.999995],PARAMETER["Latitude_Of_Origin",44.03611111111111],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103936','NAD_1983_HARN_Adj_WI_Sauk_Feet',NULL,NULL,NULL,NULL,'ESRI','104856',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Sauk_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Sauk",DATUM["D_NAD_1983_HARN_Adj_WI_SK",SPHEROID["GRS_1980_Adj_WI_SK",6378407.281,298.26986109814]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",609000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.9],PARAMETER["Scale_Factor",0.999995],PARAMETER["Latitude_Of_Origin",42.81944444444445],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103937','NAD_1983_HARN_Adj_WI_Shawano_Feet',NULL,NULL,NULL,NULL,'ESRI','104858',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Shawano_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Shawano",DATUM["D_NAD_1983_HARN_Adj_WI_SH",SPHEROID["GRS_1980_Adj_WI_SH",6378406.051,298.269803580344]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",861000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.60555555555555],PARAMETER["Scale_Factor",0.99999],PARAMETER["Latitude_Of_Origin",44.03611111111111],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103938','NAD_1983_HARN_Adj_WI_Sheboygan_Feet',NULL,NULL,NULL,NULL,'ESRI','104859',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Sheboygan_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Sheboygan",DATUM["D_NAD_1983_HARN_Adj_WI_KW_MT_SG",SPHEROID["GRS_1980_Adj_WI_KW_MT_SG",6378285.86,298.264183156421]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",262000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-87.55],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",43.26666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103939','NAD_1983_HARN_Adj_WI_Trempealeau_Feet',NULL,NULL,NULL,NULL,'ESRI','104861',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Trempealeau_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Trempealeau",DATUM["D_NAD_1983_HARN_Adj_WI_TR",SPHEROID["GRS_1980_Adj_WI_TR",6378380.091,298.26858962751]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",843000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.36666666666666],PARAMETER["Scale_Factor",0.999998],PARAMETER["Latitude_Of_Origin",43.16111111111111],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103940','NAD_1983_HARN_Adj_WI_Washington_Feet',NULL,NULL,NULL,NULL,'ESRI','104866',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Washington_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Washington",DATUM["D_NAD_1983_HARN_Adj_WI_WA",SPHEROID["GRS_1980_Adj_WI_WA",6378407.141,298.269854551399]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",394000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.06388888888888],PARAMETER["Scale_Factor",0.999995],PARAMETER["Latitude_Of_Origin",42.91805555555555],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103941','NAD_1983_HARN_Adj_WI_Waukesha_Feet',NULL,NULL,NULL,NULL,'ESRI','104867',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Waukesha_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Waukesha",DATUM["D_NAD_1983_HARN_Adj_WI_WK",SPHEROID["GRS_1980_Adj_WI_WK",6378376.871,298.268439052467]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",685000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.225],PARAMETER["Scale_Factor",0.999997],PARAMETER["Latitude_Of_Origin",42.56944444444445],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103942','NAD_1983_HARN_Adj_WI_Waupaca_Feet',NULL,NULL,NULL,NULL,'ESRI','104868',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Waupaca_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Waupaca",DATUM["D_NAD_1983_HARN_Adj_WI_WP",SPHEROID["GRS_1980_Adj_WI_WP",6378375.251,298.268363297321]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",607000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.81666666666666],PARAMETER["Scale_Factor",0.999996],PARAMETER["Latitude_Of_Origin",43.42027777777778],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103943','NAD_1983_HARN_Adj_WI_Winnebago_Feet',NULL,NULL,NULL,NULL,'ESRI','104870',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Winnebago_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Winnebago",DATUM["D_NAD_1983_HARN_Adj_WI_CL_FL_OG_WN",SPHEROID["GRS_1980_Adj_WI_CL_FL_OG_WN",6378345.09,298.266952895494]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",803000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.5],PARAMETER["Scale_Factor",0.999996],PARAMETER["Latitude_Of_Origin",42.71944444444445],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103944','NAD_1983_HARN_Adj_WI_Bayfield_Feet',NULL,NULL,NULL,NULL,'ESRI','104803',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Bayfield_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Bayfield",DATUM["D_NAD_1983_HARN_Adj_WI_BF",SPHEROID["GRS_1980_Adj_WI_BF",6378411.351,298.270051421254]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",750000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.15277777777779],PARAMETER["Standard_Parallel_1",46.41388888888888],PARAMETER["Standard_Parallel_2",46.925],PARAMETER["Latitude_Of_Origin",45.33333333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103945','NAD_1983_HARN_Adj_WI_Burnett_Feet',NULL,NULL,NULL,NULL,'ESRI','104806',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Burnett_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Burnett",DATUM["D_NAD_1983_HARN_Adj_WI_BN",SPHEROID["GRS_1980_Adj_WI_BN",6378414.96,298.270220186885]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",210000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.45777777777778],PARAMETER["Standard_Parallel_1",45.71388888888889],PARAMETER["Standard_Parallel_2",46.08333333333334],PARAMETER["Latitude_Of_Origin",45.36388888888889],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103946','NAD_1983_HARN_Adj_WI_Chippewa_Feet',NULL,NULL,NULL,NULL,'ESRI','104808',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Chippewa_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Chippewa",DATUM["D_NAD_1983_HARN_Adj_WI_CP",SPHEROID["GRS_1980_Adj_WI_CP",6378412.542,298.270107115315]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",197000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.29444444444444],PARAMETER["Standard_Parallel_1",44.81388888888888],PARAMETER["Standard_Parallel_2",45.14166666666667],PARAMETER["Latitude_Of_Origin",44.58111111111111],UNIT["Foot_US",0.3048006096012192]]',0); +INSERT INTO "projected_crs" VALUES('ESRI','103947','NAD_1983_HARN_Adj_WI_Columbia_Feet',NULL,NULL,NULL,NULL,'ESRI','104810',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Columbia_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Columbia",DATUM["D_NAD_1983_HARN_Adj_WI_CO",SPHEROID["GRS_1980_Adj_WI_CO",6378376.331,298.268413800752]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",555000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.39444444444445],PARAMETER["Standard_Parallel_1",43.33333333333334],PARAMETER["Standard_Parallel_2",43.59166666666667],PARAMETER["Latitude_Of_Origin",42.45833333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103948','NAD_1983_HARN_Adj_WI_Crawford_Feet',NULL,NULL,NULL,NULL,'ESRI','104811',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Crawford_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Crawford",DATUM["D_NAD_1983_HARN_Adj_WI_CR",SPHEROID["GRS_1980_Adj_WI_CR",6378379.031,298.268540059328]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",373000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.9388888888889],PARAMETER["Standard_Parallel_1",43.05833333333333],PARAMETER["Standard_Parallel_2",43.34166666666667],PARAMETER["Latitude_Of_Origin",42.71666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103949','NAD_1983_HARN_Adj_WI_Dane_Feet',NULL,NULL,NULL,NULL,'ESRI','104812',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Dane_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Dane",DATUM["D_NAD_1983_HARN_Adj_WI_DN",SPHEROID["GRS_1980_Adj_WI_DN",6378407.621,298.269876997368]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",811000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.42222222222223],PARAMETER["Standard_Parallel_1",42.90833333333333],PARAMETER["Standard_Parallel_2",43.23055555555555],PARAMETER["Latitude_Of_Origin",41.75],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103950','NAD_1983_HARN_Adj_WI_EauClaire_Feet',NULL,NULL,NULL,NULL,'ESRI','104817',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_EauClaire_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_EauClaire",DATUM["D_NAD_1983_HARN_Adj_WI_EC",SPHEROID["GRS_1980_Adj_WI_EC",6378380.381,298.268603188617]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",394000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.28888888888889],PARAMETER["Standard_Parallel_1",44.73055555555555],PARAMETER["Standard_Parallel_2",45.01388888888889],PARAMETER["Latitude_Of_Origin",44.04722222222222],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103951','NAD_1983_HARN_Adj_WI_Green_Feet',NULL,NULL,NULL,NULL,'ESRI','104822',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Green_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Green",DATUM["D_NAD_1983_HARN_Adj_WI_GR_LF",SPHEROID["GRS_1980_Adj_WI_GR_LF",6378408.481,298.269917213063]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",558000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.83888888888889],PARAMETER["Standard_Parallel_1",42.48611111111111],PARAMETER["Standard_Parallel_2",42.78888888888888],PARAMETER["Latitude_Of_Origin",42.225],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103952','NAD_1983_HARN_Adj_WI_GreenLake_Feet',NULL,NULL,NULL,NULL,'ESRI','104823',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_GreenLake_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_GreenLake",DATUM["D_NAD_1983_HARN_Adj_WI_GL_MQ",SPHEROID["GRS_1980_Adj_WI_GL_MQ",6378375.601,298.268379664173]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",495000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.24166666666667],PARAMETER["Standard_Parallel_1",43.66666666666666],PARAMETER["Standard_Parallel_2",43.94722222222222],PARAMETER["Latitude_Of_Origin",43.09444444444445],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103953','NAD_1983_HARN_Adj_WI_Jackson_Feet',NULL,NULL,NULL,NULL,'ESRI','104826',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Jackson_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Jackson",DATUM["D_NAD_1983_HARN_Adj_WI_JA",SPHEROID["GRS_1980_Adj_WI_JA",6378409.151,298.269948543895]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",413000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.73888888888889],PARAMETER["Standard_Parallel_1",44.16388888888888],PARAMETER["Standard_Parallel_2",44.41944444444444],PARAMETER["Latitude_Of_Origin",43.79444444444444],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103954','NAD_1983_HARN_Adj_WI_Lafayette_Feet',NULL,NULL,NULL,NULL,'ESRI','104832',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Lafayette_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Lafayette",DATUM["D_NAD_1983_HARN_Adj_WI_GR_LF",SPHEROID["GRS_1980_Adj_WI_GR_LF",6378408.481,298.269917213063]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",558000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.83888888888889],PARAMETER["Standard_Parallel_1",42.48611111111111],PARAMETER["Standard_Parallel_2",42.78888888888888],PARAMETER["Latitude_Of_Origin",42.225],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103955','NAD_1983_HARN_Adj_WI_Langlade_Feet',NULL,NULL,NULL,NULL,'ESRI','104833',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Langlade_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Langlade",DATUM["D_NAD_1983_HARN_Adj_WI_LG",SPHEROID["GRS_1980_Adj_WI_LG",6378560.121,298.277008268831]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",651000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.03333333333333],PARAMETER["Standard_Parallel_1",45.0],PARAMETER["Standard_Parallel_2",45.30833333333333],PARAMETER["Latitude_Of_Origin",44.20694444444445],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103956','NAD_1983_HARN_Adj_WI_Marathon_Feet',NULL,NULL,NULL,NULL,'ESRI','104836',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Marathon_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Marathon",DATUM["D_NAD_1983_HARN_Adj_WI_MA",SPHEROID["GRS_1980_Adj_WI_MA",6378500.6,298.274224921888]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",245000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.77],PARAMETER["Standard_Parallel_1",44.74527777777778],PARAMETER["Standard_Parallel_2",45.05638888888888],PARAMETER["Latitude_Of_Origin",44.40555555555555],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103957','NAD_1983_HARN_Adj_WI_Marquette_Feet',NULL,NULL,NULL,NULL,'ESRI','104838',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Marquette_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Marquette",DATUM["D_NAD_1983_HARN_Adj_WI_GL_MQ",SPHEROID["GRS_1980_Adj_WI_GL_MQ",6378375.601,298.268379664173]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",495000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.24166666666667],PARAMETER["Standard_Parallel_1",43.66666666666666],PARAMETER["Standard_Parallel_2",43.94722222222222],PARAMETER["Latitude_Of_Origin",43.09444444444445],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103958','NAD_1983_HARN_Adj_WI_Monroe_Feet',NULL,NULL,NULL,NULL,'ESRI','104841',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Monroe_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Monroe",DATUM["D_NAD_1983_HARN_Adj_WI_MR",SPHEROID["GRS_1980_Adj_WI_MR",6378438.991,298.27134393498]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",671000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.64166666666668],PARAMETER["Standard_Parallel_1",43.83888888888889],PARAMETER["Standard_Parallel_2",44.16111111111111],PARAMETER["Latitude_Of_Origin",42.90277777777778],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103959','NAD_1983_HARN_Adj_WI_Oneida_Feet',NULL,NULL,NULL,NULL,'ESRI','104843',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Oneida_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Oneida",DATUM["D_NAD_1983_HARN_Adj_WI_ON",SPHEROID["GRS_1980_Adj_WI_ON",6378593.86,298.278585986653]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",230000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.54444444444444],PARAMETER["Standard_Parallel_1",45.56666666666667],PARAMETER["Standard_Parallel_2",45.84166666666667],PARAMETER["Latitude_Of_Origin",45.18611111111111],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103960','NAD_1983_HARN_Adj_WI_Pepin_Feet',NULL,NULL,NULL,NULL,'ESRI','104846',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Pepin_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Pepin",DATUM["D_NAD_1983_HARN_Adj_WI_PP_PC",SPHEROID["GRS_1980_Adj_WI_PP_PC",6378381.271,298.268644807185]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",550000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.22777777777777],PARAMETER["Standard_Parallel_1",44.52222222222222],PARAMETER["Standard_Parallel_2",44.75],PARAMETER["Latitude_Of_Origin",43.86194444444445],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103961','NAD_1983_HARN_Adj_WI_Pierce_Feet',NULL,NULL,NULL,NULL,'ESRI','104847',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Pierce_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Pierce",DATUM["D_NAD_1983_HARN_Adj_WI_PP_PC",SPHEROID["GRS_1980_Adj_WI_PP_PC",6378381.271,298.268644807185]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",550000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-92.22777777777777],PARAMETER["Standard_Parallel_1",44.52222222222222],PARAMETER["Standard_Parallel_2",44.75],PARAMETER["Latitude_Of_Origin",43.86194444444445],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103962','NAD_1983_HARN_Adj_WI_Portage_Feet',NULL,NULL,NULL,NULL,'ESRI','104849',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Portage_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Portage",DATUM["D_NAD_1983_HARN_Adj_WI_PT",SPHEROID["GRS_1980_Adj_WI_PT",6378344.377,298.266919538913]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",185000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.5],PARAMETER["Standard_Parallel_1",44.18333333333333],PARAMETER["Standard_Parallel_2",44.65],PARAMETER["Latitude_Of_Origin",43.96666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103963','NAD_1983_HARN_Adj_WI_Richland_Feet',NULL,NULL,NULL,NULL,'ESRI','104852',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Richland_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Richland",DATUM["D_NAD_1983_HARN_Adj_WI_RC",SPHEROID["GRS_1980_Adj_WI_RC",6378408.091,298.269898975713]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",664000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.43055555555556],PARAMETER["Standard_Parallel_1",43.14166666666667],PARAMETER["Standard_Parallel_2",43.50277777777778],PARAMETER["Latitude_Of_Origin",42.11388888888889],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103964','NAD_1983_HARN_Adj_WI_Sawyer_Feet',NULL,NULL,NULL,NULL,'ESRI','104857',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Sawyer_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Sawyer",DATUM["D_NAD_1983_HARN_Adj_WI_SW",SPHEROID["GRS_1980_Adj_WI_SW",6378534.451,298.275807877103]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",711000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.11666666666666],PARAMETER["Standard_Parallel_1",45.71944444444445],PARAMETER["Standard_Parallel_2",46.08055555555556],PARAMETER["Latitude_Of_Origin",44.81388888888888],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103965','NAD_1983_HARN_Adj_WI_Taylor_Feet',NULL,NULL,NULL,NULL,'ESRI','104860',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Taylor_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Taylor",DATUM["D_NAD_1983_HARN_Adj_WI_TA",SPHEROID["GRS_1980_Adj_WI_TA",6378532.921,298.275736330576]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",614000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.48333333333333],PARAMETER["Standard_Parallel_1",45.05555555555555],PARAMETER["Standard_Parallel_2",45.3],PARAMETER["Latitude_Of_Origin",44.20833333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103966','NAD_1983_HARN_Adj_WI_Vernon_Feet',NULL,NULL,NULL,NULL,'ESRI','104862',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Vernon_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Vernon",DATUM["D_NAD_1983_HARN_Adj_WI_VR",SPHEROID["GRS_1980_Adj_WI_VR",6378408.941,298.269938723784]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",730000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.78333333333333],PARAMETER["Standard_Parallel_1",43.46666666666667],PARAMETER["Standard_Parallel_2",43.68333333333333],PARAMETER["Latitude_Of_Origin",43.14722222222222],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103967','NAD_1983_HARN_Adj_WI_Vilas_Feet',NULL,NULL,NULL,NULL,'ESRI','104863',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Vilas_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Vilas",DATUM["D_NAD_1983_HARN_Adj_WI_VI",SPHEROID["GRS_1980_Adj_WI_VI",6378624.171,298.280003402845]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",441000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.48888888888889],PARAMETER["Standard_Parallel_1",45.93055555555555],PARAMETER["Standard_Parallel_2",46.225],PARAMETER["Latitude_Of_Origin",45.625],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103968','NAD_1983_HARN_Adj_WI_Walworth_Feet',NULL,NULL,NULL,NULL,'ESRI','104864',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Walworth_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Walworth",DATUM["D_NAD_1983_HARN_Adj_WI_WW",SPHEROID["GRS_1980_Adj_WI_WW",6378377.411,298.268464304182]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",763000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-88.54166666666667],PARAMETER["Standard_Parallel_1",42.58888888888889],PARAMETER["Standard_Parallel_2",42.75],PARAMETER["Latitude_Of_Origin",41.66944444444444],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103969','NAD_1983_HARN_Adj_WI_Washburn_Feet',NULL,NULL,NULL,NULL,'ESRI','104865',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Washburn_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Washburn",DATUM["D_NAD_1983_HARN_Adj_WI_WB",SPHEROID["GRS_1980_Adj_WI_WB",6378474.591,298.273008677695]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",768000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-91.78333333333333],PARAMETER["Standard_Parallel_1",45.77222222222222],PARAMETER["Standard_Parallel_2",46.15],PARAMETER["Latitude_Of_Origin",44.26666666666667],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103970','NAD_1983_HARN_Adj_WI_Waushara_Feet',NULL,NULL,NULL,NULL,'ESRI','104869',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Waushara_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Waushara",DATUM["D_NAD_1983_HARN_Adj_WI_WS",SPHEROID["GRS_1980_Adj_WI_WS",6378405.971,298.269799839349]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",394000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-89.24166666666667],PARAMETER["Standard_Parallel_1",43.975],PARAMETER["Standard_Parallel_2",44.25277777777778],PARAMETER["Latitude_Of_Origin",43.70833333333334],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "projected_crs" VALUES('ESRI','103971','NAD_1983_HARN_Adj_WI_Wood_Feet',NULL,NULL,NULL,NULL,'ESRI','104871',NULL,NULL,'EPSG','1418','PROJCS["NAD_1983_HARN_Adj_WI_Wood_Feet",GEOGCS["GCS_NAD_1983_HARN_Adj_WI_Wood",DATUM["D_NAD_1983_HARN_Adj_WI_WD",SPHEROID["GRS_1980_Adj_WI_WD",6378437.651,298.271281273316]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",684000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-90.0],PARAMETER["Standard_Parallel_1",44.18055555555555],PARAMETER["Standard_Parallel_2",44.54444444444444],PARAMETER["Latitude_Of_Origin",43.15138888888889],UNIT["Foot_US",0.3048006096012192]]',1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102340','EPSG','2847','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102341','EPSG','2848','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102342','EPSG','2849','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102343','EPSG','2850','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102344','EPSG','2851','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102345','EPSG','2852','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102346','EPSG','2853','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102347','EPSG','2854','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102348','EPSG','2855','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102349','EPSG','2856','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102065','EPSG','5513','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102067','EPSG','5514','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102066','EPSG','5221','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102744','EPSG','3567','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102745','EPSG','5646','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102746','EPSG','2283','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102747','EPSG','2284','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102740','EPSG','2278','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102741','EPSG','2279','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102742','EPSG','3560','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102743','EPSG','3566','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102748','EPSG','2285','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102724','EPSG','2267','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102986','EPSG','6403','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102987','EPSG','6406','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102984','EPSG','6401','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102725','EPSG','2268','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102982','EPSG','6399','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102983','EPSG','6400','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102669','EPSG','2242','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102668','EPSG','2241','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102667','EPSG','2240','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102050','EPSG','6332','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102663','EPSG','3759','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102988','EPSG','6404','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102660','EPSG','2238','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102111','EPSG','5519','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102110','EPSG','2154','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102113','EPSG','3785','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102112','EPSG','3764','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102119','EPSG','3080','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102966','EPSG','6393','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102788','EPSG','6251','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103214','EPSG','4082','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','31917','EPSG','31986','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','31919','EPSG','31988','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','31918','EPSG','31987','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102059','EPSG','6341','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102989','EPSG','6408','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102188','EPSG','3777','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102189','EPSG','3801','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102186','EPSG','3775','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102187','EPSG','3776','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102184','EPSG','3400','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102185','EPSG','3401','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102182','EPSG','3773','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102183','EPSG','3800','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102180','EPSG','3771','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102181','EPSG','3772','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103165','EPSG','6621','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103164','EPSG','6619','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103048','EPSG','6468','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103049','EPSG','6467','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103161','EPSG','6588','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103160','EPSG','6578','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103044','EPSG','6464','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103045','EPSG','6463','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103046','EPSG','6465','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103047','EPSG','6466','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103040','EPSG','6460','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103041','EPSG','6459','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103042','EPSG','6461','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103043','EPSG','6462','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102304','EPSG','2819','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103163','EPSG','6620','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102657','EPSG','2235','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102307','EPSG','2820','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102300','EPSG','2818','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103162','EPSG','6586','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102718','EPSG','2263','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103082','EPSG','6504','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103148','EPSG','6573','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102444','EPSG','3825','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102443','EPSG','3826','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102442','EPSG','3827','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102441','EPSG','3828','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102524','EPSG','6632','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102713','EPSG','2258','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102527','EPSG','6633','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102520','EPSG','6628','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102521','EPSG','6629','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102522','EPSG','6630','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102523','EPSG','6631','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103198','EPSG','6618','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103111','EPSG','6529','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102711','EPSG','3424','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103192','EPSG','6611','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103193','EPSG','6613','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103190','EPSG','6605','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102710','EPSG','3437','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103196','EPSG','6612','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103197','EPSG','6614','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103194','EPSG','6617','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102768','EPSG','6257','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102749','EPSG','2286','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102769','EPSG','6244','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102623','EPSG','6682','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102622','EPSG','6681','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102621','EPSG','6680','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102620','EPSG','6679','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102627','EPSG','6686','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102626','EPSG','6685','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102625','EPSG','6684','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102624','EPSG','6683','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102780','EPSG','6260','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102781','EPSG','6254','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102782','EPSG','6269','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102628','EPSG','6687','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102784','EPSG','6267','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102785','EPSG','6270','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102786','EPSG','6274','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102607','EPSG','3463','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102985','EPSG','6402','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102230','EPSG','2760','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102234','EPSG','3158','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102235','EPSG','3159','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102236','EPSG','3160','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102980','EPSG','6397','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102151','EPSG','3092','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102153','EPSG','3094','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102152','EPSG','3093','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102155','EPSG','3096','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102154','EPSG','3095','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102666','EPSG','2239','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103087','EPSG','6509','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103025','EPSG','6444','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102656','EPSG','2234','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102305','EPSG','5367','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102654','EPSG','2232','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102655','EPSG','2233','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102652','EPSG','3434','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102653','EPSG','2231','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102719','EPSG','2264','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102651','EPSG','3433','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102717','EPSG','2262','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102716','EPSG','2261','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102715','EPSG','2260','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102714','EPSG','2259','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102308','EPSG','2821','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102309','EPSG','2822','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102658','EPSG','2236','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102659','EPSG','2237','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103129','EPSG','6549','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103128','EPSG','6550','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103122','EPSG','6543','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103123','EPSG','6544','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102783','EPSG','6261','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103121','EPSG','6542','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103120','EPSG','6539','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103127','EPSG','6548','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103126','EPSG','6547','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103125','EPSG','6545','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103124','EPSG','6546','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103169','EPSG','6626','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103017','EPSG','6435','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103016','EPSG','6434','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102979','EPSG','6396','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102978','EPSG','6395','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103013','EPSG','6428','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103012','EPSG','6430','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103011','EPSG','6431','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103010','EPSG','6427','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102973','EPSG','6610','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102972','EPSG','6580','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102971','EPSG','6579','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102970','EPSG','6557','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102977','EPSG','6394','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102976','EPSG','6356','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102975','EPSG','6355','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103018','EPSG','6436','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103212','EPSG','4063','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102500','EPSG','6785','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103158','EPSG','6582','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103159','EPSG','6584','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103156','EPSG','6587','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103157','EPSG','6585','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103154','EPSG','6583','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103155','EPSG','6577','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103152','EPSG','6576','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103153','EPSG','6581','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103150','EPSG','6574','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103151','EPSG','6575','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103217','EPSG','4094','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103216','EPSG','4093','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102259','EPSG','2778','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103080','EPSG','6502','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102278','EPSG','2797','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102279','EPSG','2798','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103081','EPSG','6500','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102274','EPSG','2793','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102275','EPSG','2794','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102276','EPSG','2795','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102277','EPSG','2796','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102270','EPSG','2789','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102271','EPSG','2790','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102272','EPSG','2791','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102273','EPSG','2792','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103083','EPSG','6503','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103070','EPSG','6491','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103084','EPSG','6501','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103202','EPSG','4049','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102296','EPSG','2815','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102297','EPSG','2816','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102294','EPSG','2813','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102295','EPSG','2814','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102292','EPSG','2811','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102293','EPSG','2812','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102290','EPSG','2809','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102358','EPSG','2865','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','65163','EPSG','3088','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102356','EPSG','2863','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102355','EPSG','2862','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102354','EPSG','2861','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102353','EPSG','2860','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102352','EPSG','2859','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102298','EPSG','2817','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102350','EPSG','2857','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102268','EPSG','2787','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103089','EPSG','6510','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102753','EPSG','2288','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102752','EPSG','2287','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102751','EPSG','26854','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102750','EPSG','26853','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102757','EPSG','3738','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102756','EPSG','3737','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102755','EPSG','3736','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102754','EPSG','2289','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102758','EPSG','3739','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102995','EPSG','6411','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102994','EPSG','6412','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102618','EPSG','6677','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102619','EPSG','6678','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102991','EPSG','6405','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102990','EPSG','6407','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102993','EPSG','6410','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102992','EPSG','6409','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102612','EPSG','6671','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102613','EPSG','6672','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102610','EPSG','6669','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102611','EPSG','6670','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102616','EPSG','6675','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102617','EPSG','6676','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102614','EPSG','6673','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102615','EPSG','6674','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102260','EPSG','2779','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102124','EPSG','26701','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102125','EPSG','26702','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102126','EPSG','3370','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102127','EPSG','3371','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102128','EPSG','26901','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102129','EPSG','26902','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103201','EPSG','4048','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102054','EPSG','6336','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102055','EPSG','6337','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102056','EPSG','6338','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102057','EPSG','6339','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102199','EPSG','3812','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102051','EPSG','6333','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102052','EPSG','6334','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102053','EPSG','6335','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102058','EPSG','6340','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102190','EPSG','3005','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102728','EPSG','2271','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102729','EPSG','2272','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102357','EPSG','2864','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103112','EPSG','6533','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103113','EPSG','6536','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103059','EPSG','6477','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103058','EPSG','6478','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103116','EPSG','6538','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102508','EPSG','6817','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103114','EPSG','6534','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103115','EPSG','6540','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103053','EPSG','6472','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103052','EPSG','6471','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103051','EPSG','6470','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103050','EPSG','6469','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103057','EPSG','6476','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103056','EPSG','6475','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103055','EPSG','6474','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103054','EPSG','6473','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102466','EPSG','26857','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103015','EPSG','6433','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103204','EPSG','4051','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103026','EPSG','6446','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102722','EPSG','3734','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103027','EPSG','6445','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103024','EPSG','6441','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102439','EPSG','4462','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103022','EPSG','6438','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103205','EPSG','4056','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103023','EPSG','6443','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102723','EPSG','3735','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103020','EPSG','6442','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103021','EPSG','6440','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102539','EPSG','6820','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102538','EPSG','6816','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103028','EPSG','6447','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103029','EPSG','6450','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102533','EPSG','6792','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102532','EPSG','6788','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102531','EPSG','6796','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102530','EPSG','6784','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102537','EPSG','6812','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102536','EPSG','6808','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102535','EPSG','6804','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102534','EPSG','6800','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103189','EPSG','6607','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103188','EPSG','6608','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103019','EPSG','6437','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103181','EPSG','6599','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103180','EPSG','6597','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103183','EPSG','6602','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103182','EPSG','6600','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103185','EPSG','6603','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103184','EPSG','6601','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103187','EPSG','6879','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103186','EPSG','6606','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102326','EPSG','2838','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102327','EPSG','2839','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102797','EPSG','6258','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102796','EPSG','6249','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102795','EPSG','6253','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102794','EPSG','6271','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102793','EPSG','6248','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102792','EPSG','6268','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102791','EPSG','6263','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102790','EPSG','6245','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102798','EPSG','6265','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102388','EPSG','6348','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102384','EPSG','6344','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102385','EPSG','6345','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102386','EPSG','6346','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102387','EPSG','6347','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102380','EPSG','6867','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102381','EPSG','6868','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102382','EPSG','6342','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102383','EPSG','6343','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102548','EPSG','6856','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102549','EPSG','6860','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102546','EPSG','6844','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102547','EPSG','6852','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102544','EPSG','6840','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102545','EPSG','6848','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102542','EPSG','6832','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102543','EPSG','6836','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102540','EPSG','6824','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102541','EPSG','6828','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102362','EPSG','4647','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102363','EPSG','3090','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102361','EPSG','2866','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102006','EPSG','3338','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102779','EPSG','6266','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102778','EPSG','6273','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102645','EPSG','2229','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102644','EPSG','2228','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102311','EPSG','2824','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102646','EPSG','2230','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102317','EPSG','2830','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102316','EPSG','2829','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102315','EPSG','2828','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102314','EPSG','2827','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102090','EPSG','3770','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102091','EPSG','3003','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102092','EPSG','3004','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102318','EPSG','2831','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102095','EPSG','3448','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102764','EPSG','4417','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102765','EPSG','4434','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102771','EPSG','6247','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102770','EPSG','6246','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103213','EPSG','4071','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102167','EPSG','2942','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103138','EPSG','6561','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102169','EPSG','2943','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103139','EPSG','6562','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103062','EPSG','6485','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103063','EPSG','6484','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103060','EPSG','6479','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103061','EPSG','6483','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103066','EPSG','6480','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103067','EPSG','6482','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103064','EPSG','6486','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103065','EPSG','6481','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103068','EPSG','6487','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103069','EPSG','6488','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103149','EPSG','6572','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103117','EPSG','6537','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103145','EPSG','6569','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103144','EPSG','6568','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103147','EPSG','6571','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103146','EPSG','6570','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103141','EPSG','6564','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103140','EPSG','6563','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103143','EPSG','6567','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103142','EPSG','6565','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103200','EPSG','6566','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102593','EPSG','6688','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102595','EPSG','6690','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102594','EPSG','6689','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102597','EPSG','6692','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102596','EPSG','6691','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102692','EPSG','26850','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102693','EPSG','26851','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102691','EPSG','26849','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102694','EPSG','2254','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102695','EPSG','2255','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102214','EPSG','4826','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102502','EPSG','6789','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102503','EPSG','6793','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102269','EPSG','2788','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102501','EPSG','6797','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102506','EPSG','6809','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102507','EPSG','6813','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102504','EPSG','6801','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102505','EPSG','6805','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102263','EPSG','2784','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102262','EPSG','2783','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102261','EPSG','2782','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102509','EPSG','6821','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102267','EPSG','2781','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102266','EPSG','2780','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102265','EPSG','2786','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102264','EPSG','2785','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102469','EPSG','3815','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102468','EPSG','26859','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102467','EPSG','26858','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102211','EPSG','3748','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102463','EPSG','3760','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102285','EPSG','2804','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102284','EPSG','2803','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102287','EPSG','2806','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102286','EPSG','2805','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102281','EPSG','2800','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102280','EPSG','2799','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102283','EPSG','2802','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102282','EPSG','2801','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102322','EPSG','2834','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102323','EPSG','2835','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102320','EPSG','2832','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102321','EPSG','2833','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102289','EPSG','2808','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102288','EPSG','2807','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102324','EPSG','2836','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102325','EPSG','2837','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102229','EPSG','2759','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102609','EPSG','3814','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102608','EPSG','3074','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103208','EPSG','4059','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103209','EPSG','4060','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102712','EPSG','2257','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102601','EPSG','3083','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103203','EPSG','4050','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102603','EPSG','3081','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102602','EPSG','3082','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103206','EPSG','4057','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103207','EPSG','4058','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102210','EPSG','3077','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102606','EPSG','3072','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102139','EPSG','3067','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102131','EPSG','3373','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102130','EPSG','3372','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102735','EPSG','3455','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102734','EPSG','4457','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102737','EPSG','2275','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102040','EPSG','5178','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102047','EPSG','6329','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102046','EPSG','6328','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102049','EPSG','6331','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102048','EPSG','6330','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102739','EPSG','2277','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102738','EPSG','2276','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103215','EPSG','4083','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103101','EPSG','6519','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103100','EPSG','6521','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103103','EPSG','6524','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103102','EPSG','6523','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103105','EPSG','6526','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103104','EPSG','6525','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103107','EPSG','6530','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103106','EPSG','6527','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103109','EPSG','6532','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103108','EPSG','6528','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103199','EPSG','6616','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102420','EPSG','5325','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103039','EPSG','6458','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103038','EPSG','6457','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103035','EPSG','6454','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103034','EPSG','6453','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103037','EPSG','6455','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103036','EPSG','6456','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103031','EPSG','6452','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103030','EPSG','6448','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103033','EPSG','6449','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103032','EPSG','6451','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102310','EPSG','2823','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102252','EPSG','2765','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102253','EPSG','2772','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102250','EPSG','2763','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102251','EPSG','2764','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102256','EPSG','2775','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102257','EPSG','2776','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102254','EPSG','2773','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102255','EPSG','2774','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102258','EPSG','2777','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102291','EPSG','2810','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102494','EPSG','6635','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102495','EPSG','6637','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102496','EPSG','6636','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102736','EPSG','2274','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102490','EPSG','5247','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103085','EPSG','6505','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103086','EPSG','6506','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102493','EPSG','6634','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103088','EPSG','6507','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102981','EPSG','6398','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102730','EPSG','3438','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102377','EPSG','6886','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102376','EPSG','6884','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102379','EPSG','6887','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102378','EPSG','6885','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102351','EPSG','2858','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102087','EPSG','5175','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102086','EPSG','5174','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102085','EPSG','5173','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102084','EPSG','5188','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102083','EPSG','5187','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102082','EPSG','5186','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102081','EPSG','5185','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102080','EPSG','5179','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102089','EPSG','5177','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102088','EPSG','5176','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102670','EPSG','2243','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102671','EPSG','3435','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102672','EPSG','3436','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102673','EPSG','2965','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102674','EPSG','2966','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102675','EPSG','3417','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102676','EPSG','3418','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102677','EPSG','3419','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102678','EPSG','3420','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102679','EPSG','2246','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102773','EPSG','6272','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102772','EPSG','6250','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102775','EPSG','6252','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102774','EPSG','6256','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102777','EPSG','6264','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102776','EPSG','6275','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102100','EPSG','3857','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103076','EPSG','6498','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102313','EPSG','2826','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','31922','EPSG','31991','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','31920','EPSG','31989','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','31921','EPSG','31990','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102647','EPSG','4437','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102172','EPSG','3107','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102171','EPSG','3111','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102170','EPSG','3110','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103191','EPSG','6609','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102641','EPSG','2225','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102643','EPSG','2227','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102642','EPSG','2226','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103071','EPSG','6489','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102762','EPSG','4415','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103073','EPSG','6490','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103072','EPSG','6492','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103075','EPSG','6493','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103074','EPSG','6495','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103077','EPSG','6496','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102763','EPSG','3089','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103079','EPSG','6499','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103078','EPSG','6494','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103178','EPSG','6596','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103179','EPSG','6598','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103170','EPSG','6625','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103171','EPSG','6627','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103172','EPSG','6589','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103173','EPSG','6590','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103174','EPSG','6592','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103175','EPSG','6594','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103176','EPSG','6593','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102767','EPSG','6255','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102681','EPSG','3451','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102680','EPSG','2247','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102683','EPSG','26847','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102682','EPSG','3452','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102685','EPSG','2248','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102684','EPSG','26848','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102687','EPSG','2250','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102686','EPSG','2249','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103177','EPSG','6595','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102511','EPSG','6829','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102510','EPSG','6825','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102513','EPSG','6837','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102512','EPSG','6833','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102515','EPSG','6849','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102514','EPSG','6841','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102517','EPSG','6853','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102516','EPSG','6845','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102519','EPSG','6861','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102518','EPSG','6857','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102997','EPSG','6415','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103195','EPSG','6615','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102996','EPSG','6413','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102339','EPSG','2846','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102338','EPSG','2845','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102789','EPSG','6259','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102331','EPSG','5014','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102330','EPSG','2840','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102333','EPSG','5016','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102332','EPSG','5015','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102335','EPSG','2842','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102334','EPSG','2841','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102337','EPSG','2844','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102336','EPSG','2843','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103118','EPSG','6535','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102999','EPSG','6419','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102998','EPSG','6417','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103219','EPSG','4096','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103218','EPSG','4095','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102209','EPSG','3464','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102208','EPSG','3075','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102205','EPSG','3741','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103210','EPSG','4061','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102207','EPSG','3743','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102206','EPSG','3742','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102201','EPSG','4414','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102200','EPSG','2195','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102203','EPSG','3751','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102202','EPSG','3750','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102148','EPSG','3100','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102149','EPSG','3101','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103119','EPSG','6541','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102140','EPSG','2326','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102146','EPSG','3098','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102147','EPSG','3099','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102145','EPSG','3097','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102123','EPSG','3078','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103110','EPSG','6531','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102787','EPSG','6262','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102704','EPSG','26852','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102706','EPSG','7142','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102707','EPSG','3421','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102708','EPSG','3422','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102709','EPSG','3423','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103014','EPSG','6432','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','2183','ESRI','102552','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','2182','ESRI','102551','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','2181','ESRI','102550','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','2187','ESRI','102556','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','2186','ESRI','102555','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','2185','ESRI','102554','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','2184','ESRI','102553','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103134','EPSG','6555','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103135','EPSG','6558','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103136','EPSG','6560','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103137','EPSG','6559','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103130','EPSG','6551','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103131','EPSG','6552','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103132','EPSG','6554','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103133','EPSG','6553','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102968','EPSG','6497','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102969','EPSG','6556','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102965','EPSG','6350','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102312','EPSG','2825','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102967','EPSG','6439','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102962','EPSG','6414','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102963','EPSG','6508','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103008','EPSG','6426','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103009','EPSG','6429','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103000','EPSG','6421','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103001','EPSG','6423','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103002','EPSG','6425','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103003','EPSG','6416','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103004','EPSG','6418','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103005','EPSG','6420','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103006','EPSG','6422','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103007','EPSG','6424','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103794','EPSG','4484','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103795','EPSG','4485','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103796','EPSG','4486','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103797','EPSG','4487','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103798','EPSG','4488','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103799','EPSG','4489','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103211','EPSG','4062','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102241','EPSG','2766','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102243','EPSG','2768','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102242','EPSG','2767','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102245','EPSG','2770','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102244','EPSG','2769','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102246','EPSG','2771','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102249','EPSG','2762','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','102248','EPSG','2761','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103099','EPSG','6522','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103098','EPSG','6518','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103097','EPSG','6520','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103096','EPSG','6880','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103095','EPSG','6516','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103094','EPSG','6515','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103093','EPSG','6514','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103092','EPSG','6513','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103091','EPSG','6511','ESRI'); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','103090','EPSG','6512','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1027','EGM2008_Geoid','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1028','Fao_1979','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1039','New_Zealand_Vertical_Datum_2009','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1040','Dunedin_Bluff_1960','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1054','Sri_Lanka_Vertical_Datum','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1059','Faroe_Islands_Vertical_Reference_2009','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1079','Fehmarnbelt_Vertical_Reference_2010','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1080','Lowest_Astronomic_Tide','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1082','Highest_Astronomic_Tide','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1083','Lower_Low_Water_Large_Tide','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1084','Higher_High_Water_Large_Tide','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1085','Indian_Spring_Low_Water','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1086','Mean_Lower_Low_Water_Spring_Tides','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1087','Mean_Low_Water_Spring_Tides','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1088','Mean_High_Water_Spring_Tides','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1089','Mean_Lower_Low_Water','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1090','Mean_Higher_High_Water','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1091','Mean_Low_Water','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1092','Mean_High_Water','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1093','Low_Water','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1094','High_Water','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1096','Norway_Normal_Null_2000','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1097','Grand_Cayman_Vertical_Datum_1954','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1098','Little_Cayman_Vertical_Datum_1961','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1099','Cayman_Brac_Vertical_Datum_1961','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1101','Cais_da_Pontinha-Funchal','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1102','Cais_da_Vila-Porto_Santo','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1103','Cais_das_Velas','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1105','Cais_da_Madalena','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1106','Santa_Cruz_da_Graciosa','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1107','Cais_da_Figueirinha-Angra_do_Heroismo','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1108','Santa_Cruz_das_Flores','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1109','Cais_da_Vila_do_Porto','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1110','Ponta_Delgada','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1119','Northern_Marianas_Vertical_Datum_of_2003','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1121','Tutuila_Vertical_Datum_of_1962','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1122','Guam_Vertical_Datum_of_1963','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1123','Puerto_Rico_Vertical_Datum_of_2002','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1124','Virgin_Islands_Vertical_Datum_of_2009','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1125','American_Samoa_Vertical_Datum_of_2002','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1126','Guam_Vertical_Datum_of_2004','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1127','Canadian_Geodetic_Vertical_Datum_of_2013','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1129','Japanese_Standard_Levelling_Datum_1972','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1130','Japanese_Geodetic_Datum_2000_vertical','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1131','Japanese_Geodetic_Datum_2011_vertical','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1140','Singapore_Height_Datum','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1146','Ras_Ghumays','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1148','Famagusta_1960','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1149','Papua_New_Guinea_2008','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1150','Kumul_34','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1161','Deutsches_Haupthoehennetz_1912','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1162','Latvian_Height_System_2000','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1164','Ordnance_Datum_Newlyn_(Offshore)','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1169','New_Zealand_Vertical_Datum_2016','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1170','Deutsches_Haupthoehennetz_2016','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1171','Port_Moresby_1996','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1172','Port_Moresby_2008','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1175','Jamestown_1971','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1176','St_Helena_Tritan_Vertical_Datum_2011','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1177','St_Helena_Vertical_Datum_2015','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','1190','Landshaedarkerfi_Islands_2004','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5100','Mean_Sea_Level','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5101','Ordnance_Datum_Newlyn','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5102','National_Geodetic_Vertical_Datum_1929','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5103','North_American_Vertical_Datum_1988','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5104','Yellow_Sea_1956','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5105','Baltic_Sea','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5106','Caspian_Sea','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5109','Normaal_Amsterdams_Peil','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5110','Oostende','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5111','Australian_Height_Datum','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5112','Australian_Height_Datum_Tasmania','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5113','Sea_Level','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5114','Canadian_Geodetic_Vertical_Datum_of_1928','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5115','Piraeus_Harbour_1986','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5116','Helsinki_1960','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5117','Rikets_Hojdsystem_1970','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5118','Nivellement_General_de_la_France_Lallemand','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5119','Nivellement_General_de_la_France_IGN69','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5120','Nivellement_General_de_la_France_IGN78','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5122','Japanese_Standard_Levelling_Datum_1969','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5123','PDO_Height_Datum_1993','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5124','Fahud_Height_Datum','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5125','Ha_Tien_1960','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5126','Hon_Dau_1992','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5127','Landesnivellement_1902','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5128','Landeshohennetz_1995','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5129','European_Vertical_Reference_Frame_2000','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5130','Malin_Head','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5131','Belfast','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5132','Dansk_Normal_Nul','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5133','AIOC_1995','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5134','Black_Sea','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5135','Hong_Kong_Principal_Datum','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5136','Hong_Kong_Chart_Datum','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5137','Yellow_Sea_1985','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5138','Ordnance_Datum_Newlyn_Orkney_Isles','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5139','Fair_Isle','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5142','Sule_Skerry','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5143','North_Rona','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5145','St_Kilda','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5146','Flannan_Isles','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5147','St_Marys','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5150','Bandar_Abbas','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5151','Nivellement_General_de_Nouvelle_Caledonie','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5153','Nivellement_General_Guyanais_1977','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5154','IGN_1987','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5155','IGN_1988','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5156','IGN_1989','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5157','Auckland','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5158','Bluff','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5159','Dunedin','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5160','Gisborne','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5161','Lyttelton','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5162','Moturiki','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5163','Napier','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5164','Nelson','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5165','One_Tree_Point','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5166','Tararu','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5167','Taranaki','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5168','Wellington','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5169','Chatham_Island','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5170','Stewart_Island','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5171','EGM96_Geoid','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5172','Nivellement_General_du_Luxembourg','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5174','Norway_Normal_Null_1954','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5176','Gebrauchshohen_Adria','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5177','National_Vertical_Network_1999','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5181','Deutches_Haupthoehennetz_1992','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5182','Deutches_Haupthoehennetz_1985','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5183','SNN76','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5184','Baltic_1982','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5185','Baltic_1980','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5186','Kuwait_PWD','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5187','KOC_Well_Datum','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5188','KOC_Construction_Datum','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5189','Nivellement_General_de_la_Corse_1948','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5190','Danger_1950','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5191','Mayotte_1950','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5192','Martinique_1955','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5193','Guadeloupe_1951','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5194','Lagos_1955','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5195','Nivellement_General_de_Polynesie_Francaise','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5196','IGN_1966','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5197','Moorea_SAU_1981','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5198','Raiatea_SAU_2001','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5199','Maupiti_SAU_2001','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5200','Huahine_SAU_2001','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5201','Tahaa_SAU_2001','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5202','Bora_Bora_SAU_2001','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5203','EGM84_Geoid','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5204','International_Great_Lakes_Datum_1955','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5205','International_Great_Lakes_Datum_1985','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5206','Dansk_Vertikal_Reference_1990','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5207','Croatian_Vertical_Reference_System_1971','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5208','Rikets_Hojdsystem_2000','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5209','Rikets_Hojdsystem_1900','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5210','IGN_1988_LS','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5211','IGN_1988_MG','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5212','IGN_1992_LD','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5213','IGN_1988_SB','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5214','IGN_1988_SM','ESRI'); +INSERT INTO alias_name VALUES('vertical_datum','EPSG','5215','European_Vertical_Reference_Frame_2007','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','3855','EGM2008_Geoid','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','3886','Fao_1979','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','3900','N2000_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','4440','NZVD2009_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','4458','Dunedin_Bluff_1960_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5193','Incheon_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5195','Trieste_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5214','Genoa_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5237','SLVD_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5317','FVR09_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5336','Black_Sea_Depth','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5597','FCSVR10_Height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5600','NGPF','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5601','IGN_1966','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5602','Moorea_SAU_1981','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5603','Raiatea_SAU_2001','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5604','Maupiti_SAU_2001','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5605','Huahine_SAU_2001','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5606','Tahaa_SAU_2001','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5607','Bora_Bora_SAU_2001','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5608','IGLD_1955','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5609','IGLD_1985','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5610','HVRS_1971','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5611','Caspian_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5612','Baltic_depth','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5613','RH2000','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5614','KOC_WD_depth_ft','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5615','RH1900','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5616','IGN_1988_LS','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5617','IGN_1988_MG','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5618','IGN_1992_LD','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5619','IGN_1988_SB','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5620','IGN_1988_SM','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5621','EVRF_2007','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5701','Newlyn','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5702','NGVD_1929','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5703','NAVD_1988','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5736','Yellow_Sea_1956','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5705','Baltic','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5706','Caspian','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5709','NAP','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5710','Oostende','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5711','AHD','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5712','AHD_Tasmania','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5713','CGVD_1928','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5714','MSL_Height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5715','MSL_Depth','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5716','Piraeus','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5717','N60','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5718','RH70','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5719','NGF_Lallemand','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5720','NGF_IGN69','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5721','NGF_IGN78','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5722','Maputo','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5723','Japanese_Standard_Levelling_Datum_1969','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5724','PDO_Height_Datum_1993','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5725','Fahud_Height_Datum_1993','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5726','Ha_Tien_1960','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5727','Hon_Dau_1992','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5728','LN_1902','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5729','LHN95','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5730','EVRS_2000','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5731','Malin_Head','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5732','Belfast','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5733','Dansk_Normal_Nul','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5734','AIOC95_Depth','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5735','Black_Sea','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5736','Yellow_Sea_1956','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5737','Yellow_Sea_1985','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5738','Hong_Kong_Principal_Datum','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5739','Hong_Kong_Chart_Datum','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5740','Newlyn_Orkney_Isles','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5741','Fair_Isle','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5742','Lerwick','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5743','Foula','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5744','Sule_Skerry','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5745','North_Rona','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5746','Stornoway','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5747','St_Kilda','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5748','Flannan_Isles','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5749','St_Marys','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5750','Douglas','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5751','Fao','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5752','Bandar_Abbas','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5753','NGNC','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5754','Poolbeg','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5755','NGG_1977','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5756','IGN_1987','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5757','IGN_1988','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5758','IGN_1989','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5759','Auckland','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5760','Bluff','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5761','Dunedin','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5762','Gisborne','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5763','Lyttelton','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5764','Moturiki','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5765','Napier','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5766','Nelson','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5767','One_Tree_Point','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5768','Tararu','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5769','Taranaki','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5770','Wellington','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5771','Chatham_Island','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5772','Stewart_Island','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5773','EGM96_Geoid','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5774','NG_L','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5775','Antalya','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5776','NN54','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5777','Durres','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5778','GHA','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5779','NVN99','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5780','Cascais','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5781','Constanta','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5782','Alicante','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5783','DHHN92','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5784','DHHN85','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5785','SNN76','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5786','Baltic_1982','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5787','EOMA_1980','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5788','Kuwait_PWD','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5789','KOC_Well_Datum','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5790','KOC_Construction_Datum','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5791','NGC_1948','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5792','Danger_1950','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5793','Mayotte_1950','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5794','Martinique_1955','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5795','Guadeloupe_1951','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5796','Lagos_1955','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5797','AIOC95_Height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5798','EGM84_Geoid','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5799','DVR90','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5829','Instantaneous_Water_Level_Height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5831','Instantaneous_Water_Level_Depth','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5843','Ras_Ghumays_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5861','LAT_Depth','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5862','LLWLT_Depth','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5863','ISLW_Depth','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5864','MLLWS_Depth','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5865','MLWS_Depth','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5866','MLLW_Depth','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5867','MLW_Depth','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5868','MHW_Height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5869','MHHW_Height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5870','MHWS_Height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5871','HHWLT_Height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5872','HAT_Height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5873','Low_Water_Depth','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5874','High_Water_Height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','5941','NN2000_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6130','GCVD54_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6131','LCVD61_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6132','CBVD61_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6178','Cais_da_Pontinha-Funchal_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6179','Cais_da_Vila-Porto_Santo_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6180','Cais_das_Velas_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6181','Horta_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6182','Cais_da_Madalena_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6183','Santa_Cruz_da_Graciosa_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6184','Cais_da_Figueirinha-Angra_do_Heroismo_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6185','Santa_Cruz_das_Flores_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6186','Cais_da_Vila_do_Porto_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6187','Ponta_Delgada_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6357','NAVD88_depth','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6358','NAVD88_depth_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6359','NGVD29_depth','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6360','NAVD88_height_(ftUS)','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6638','Tutuila_1962_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6639','Guam_1963_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6640','NMVD03_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6641','PRVD02_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6642','VIVD09_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6643','ASVD02_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6644','GUVD04_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6647','CGVD2013_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6693','JSLD72_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6694','JGD2000_vertical_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6695','JGD2011_vertical_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','6916','SHD_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','7446','Famagusta_1960_(height)','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','7447','PNG08_(height)','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','7651','Kumul_34_(height)','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','7652','Kiunga_(height)','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','7699','DHHN12_(height)','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','7700','Latvia_2000_(height)','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','7707','ODN_(Offshore)_(height)','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','7832','POM96_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','7837','DHHN2016_(height)','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','7839','NZVD2016_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','7841','POM08_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','7888','Jamestown_1971_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','7889','St_Helena_Tritan_2011_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','7890','SHVD2015_height','ESRI'); +INSERT INTO alias_name VALUES('vertical_crs','EPSG','8089','ISH2004_height','ESRI'); +INSERT INTO "vertical_datum" VALUES('ESRI','105103','Red_Espanola_de_Nivelacion_de_Alta_Precision',NULL,NULL,'EPSG','3429',0); +INSERT INTO "vertical_crs" VALUES('ESRI','105603','REDNAP_height',NULL,NULL,'EPSG','6499','ESRI','105103','EPSG','3429',0); +INSERT INTO "vertical_datum" VALUES('ESRI','105100','WGS_1984_Geoid',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('ESRI','105700','WGS_1984_Geoid',NULL,NULL,'EPSG','6499','ESRI','105100','EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('ESRI','105101','Dansk_Vertikal_Reference_1990',NULL,NULL,'EPSG','3237',1); +INSERT INTO "vertical_crs" VALUES('ESRI','105701','DVR90',NULL,NULL,'EPSG','6499','ESRI','105101','EPSG','3237',1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('vertical_crs','ESRI','105701','EPSG','5799','ESRI'); +INSERT INTO "vertical_datum" VALUES('ESRI','105102','Rikets_Hojdsystem_2000',NULL,NULL,'EPSG','3313',1); +INSERT INTO "vertical_crs" VALUES('ESRI','105702','RH2000',NULL,NULL,'EPSG','6499','ESRI','105102','EPSG','3313',1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('vertical_crs','ESRI','105702','EPSG','5613','ESRI'); +INSERT INTO "vertical_crs" VALUES('ESRI','105703','NAVD88_height_(ftUS)',NULL,NULL,'EPSG','6497','EPSG','5103','EPSG','3664',1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('vertical_crs','ESRI','105703','EPSG','6360','ESRI'); +INSERT INTO "vertical_datum" VALUES('ESRI','105104','LAS07',NULL,NULL,'EPSG','3272',0); +INSERT INTO "vertical_crs" VALUES('ESRI','105704','LAS07_height',NULL,NULL,'EPSG','6499','ESRI','105104','EPSG','3272',0); +INSERT INTO "vertical_datum" VALUES('ESRI','105290','EGM2008_Geoid',NULL,NULL,'EPSG','1262',1); +INSERT INTO "vertical_crs" VALUES('ESRI','105790','EGM2008_Geoid',NULL,NULL,'EPSG','6499','ESRI','105290','EPSG','1262',1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('vertical_crs','ESRI','105790','EPSG','3855','ESRI'); +INSERT INTO "vertical_datum" VALUES('ESRI','105291','Fao_1979',NULL,NULL,'EPSG','3625',1); +INSERT INTO "vertical_crs" VALUES('ESRI','105791','Fao_1979',NULL,NULL,'EPSG','6499','ESRI','105291','EPSG','3625',1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('vertical_crs','ESRI','105791','EPSG','3886','ESRI'); +INSERT INTO "vertical_datum" VALUES('ESRI','105292','New_Zealand_Vertical_Datum_2009',NULL,NULL,'EPSG','1175',1); +INSERT INTO "vertical_crs" VALUES('ESRI','105792','NZVD2009_height',NULL,NULL,'EPSG','6499','ESRI','105292','EPSG','1175',1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('vertical_crs','ESRI','105792','EPSG','4440','ESRI'); +INSERT INTO "vertical_datum" VALUES('ESRI','105293','N2000',NULL,NULL,'EPSG','3333',1); +INSERT INTO "vertical_crs" VALUES('ESRI','105793','N2000_height',NULL,NULL,'EPSG','6499','ESRI','105293','EPSG','3333',1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('vertical_crs','ESRI','105793','EPSG','3900','ESRI'); +INSERT INTO "vertical_datum" VALUES('ESRI','105294','Dunedin_Bluff_1960',NULL,NULL,'EPSG','3806',1); +INSERT INTO "vertical_crs" VALUES('ESRI','105794','Dunedin_Bluff_1960_height',NULL,NULL,'EPSG','6499','ESRI','105294','EPSG','3806',1); +INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('vertical_crs','ESRI','105794','EPSG','4458','ESRI'); +-- Skipping WGS_1984. Should be a CompoundCRS +-- Skipping ETRS_1989. Should be a CompoundCRS +-- Skipping NAD_1983. Should be a CompoundCRS +-- Skipping Australian_Antarctic_1998. Should be a CompoundCRS +-- Skipping Cadastre_1997. Should be a CompoundCRS +-- Skipping China_Geodetic_Coordinate_System_2000. Should be a CompoundCRS +-- Skipping Swiss_TRF_1995. Should be a CompoundCRS +-- Skipping CIGD11. Should be a CompoundCRS +-- Skipping CR05. Should be a CompoundCRS +-- Skipping DB_REF. Should be a CompoundCRS +-- Skipping DGN_1995. Should be a CompoundCRS +-- Skipping DRUKREF_03. Should be a CompoundCRS +-- Skipping Estonia_1997. Should be a CompoundCRS +-- Skipping EUREF_FIN. Should be a CompoundCRS +-- Skipping FEH2010. Should be a CompoundCRS +-- Skipping GDA_1994. Should be a CompoundCRS +-- Skipping GDBD2009. Should be a CompoundCRS +-- Skipping GDM_2000. Should be a CompoundCRS +-- Skipping Greenland_1996. Should be a CompoundCRS +-- Skipping Hartebeesthoek_1994. Should be a CompoundCRS +-- Skipping IGD05. Should be a CompoundCRS +-- Skipping IG05_Intermediate_CRS. Should be a CompoundCRS +-- Skipping IGD05(2012). Should be a CompoundCRS +-- Skipping IG05(2012)_Intermediate_CRS. Should be a CompoundCRS +-- Skipping IGM_1995. Should be a CompoundCRS +-- Skipping IGRS. Should be a CompoundCRS +-- Skipping IRENET95. Should be a CompoundCRS +-- Skipping ISN_1993. Should be a CompoundCRS +-- Skipping ISN_2004. Should be a CompoundCRS +-- Skipping ITRF_1988. Should be a CompoundCRS +-- Skipping ITRF_1989. Should be a CompoundCRS +-- Skipping ITRF_1990. Should be a CompoundCRS +-- Skipping ITRF_1991. Should be a CompoundCRS +-- Skipping ITRF_1992. Should be a CompoundCRS +-- Skipping ITRF_1993. Should be a CompoundCRS +-- Skipping ITRF_1996. Should be a CompoundCRS +-- Skipping ITRF_1997. Should be a CompoundCRS +-- Skipping ITRF_2000. Should be a CompoundCRS +-- Skipping ITRF_2005. Should be a CompoundCRS +-- Skipping JAD_2001. Should be a CompoundCRS +-- Skipping JGD_2000. Should be a CompoundCRS +-- Skipping JGD_2011. Should be a CompoundCRS +-- Skipping Korea_2000. Should be a CompoundCRS +-- Skipping Lao_1997. Should be a CompoundCRS +-- Skipping LGD2006. Should be a CompoundCRS +-- Skipping LKS_1992. Should be a CompoundCRS +-- Skipping LKS_1994. Should be a CompoundCRS +-- Skipping MACAO_2008. Should be a CompoundCRS +-- Skipping MAGNA. Should be a CompoundCRS +-- Skipping MARCARIO_SOLIS. Should be a CompoundCRS +-- Skipping MARGEN. Should be a CompoundCRS +-- Skipping Mexico_ITRF2008. Should be a CompoundCRS +-- Skipping MOLDREF99. Should be a CompoundCRS +-- Skipping MONREF_1997. Should be a CompoundCRS +-- Skipping Moznet. Should be a CompoundCRS +-- Skipping NAD_1983_2011. Should be a CompoundCRS +-- Skipping NAD_1983_CORS96. Should be a CompoundCRS +-- Skipping North_American_1983_CSRS. Should be a CompoundCRS +-- Skipping North_American_1983_HARN. Should be a CompoundCRS +-- Skipping NAD_1983_MA11. Should be a CompoundCRS +-- Skipping NAD_1983_MARP00. Should be a CompoundCRS +-- Skipping NAD_1983_NSRS2007. Should be a CompoundCRS +-- Skipping NAD_1983_PA11. Should be a CompoundCRS +-- Skipping NAD_1983_PACP00. Should be a CompoundCRS +-- Skipping Nepal_Nagarkot. Should be a CompoundCRS +-- Skipping NZGD_2000. Should be a CompoundCRS +-- Skipping Peru96. Should be a CompoundCRS +-- Skipping PNG94. Should be a CompoundCRS +-- Skipping POSGAR. Should be a CompoundCRS +-- Skipping POSGAR_1994. Should be a CompoundCRS +-- Skipping POSGAR_1998. Should be a CompoundCRS +-- Skipping PRS_1992. Should be a CompoundCRS +-- Skipping PTRA08. Should be a CompoundCRS +-- Skipping PZ_1990. Should be a CompoundCRS +-- Skipping RDN2008. Should be a CompoundCRS +-- Skipping REGCAN95. Should be a CompoundCRS +-- Skipping REGVEN. Should be a CompoundCRS +-- Skipping RGAF09. Should be a CompoundCRS +-- Skipping RGF_1993. Should be a CompoundCRS +-- Skipping RGFG_1995. Should be a CompoundCRS +-- Skipping RGM_2004. Should be a CompoundCRS +-- Skipping RGNC_1991. Should be a CompoundCRS +-- Skipping RGNC_1991-93. Should be a CompoundCRS +-- Skipping RGPF. Should be a CompoundCRS +-- Skipping RGR_1992. Should be a CompoundCRS +-- Skipping RGRDC_2005. Should be a CompoundCRS +-- Skipping RGSPM_2006. Should be a CompoundCRS +-- Skipping RRAF_1991. Should be a CompoundCRS +-- Skipping RSRGD2000. Should be a CompoundCRS +-- Skipping SIRGAS_2000. Should be a CompoundCRS +-- Skipping SIRGAS-Chile. Should be a CompoundCRS +-- Skipping SIRGAS_ES2007.8. Should be a CompoundCRS +-- Skipping SIRGAS-ROU98. Should be a CompoundCRS +-- Skipping SLD99. Should be a CompoundCRS +-- Skipping Slovenia_1996. Should be a CompoundCRS +-- Skipping SREF98. Should be a CompoundCRS +-- Skipping S_JTSK/05. Should be a CompoundCRS +-- Skipping S_JTSK/05_Ferro. Should be a CompoundCRS +-- Skipping SWEREF99. Should be a CompoundCRS +-- Skipping TGD2005. Should be a CompoundCRS +-- Skipping TWD_1997. Should be a CompoundCRS +-- Skipping Ukraine_2000. Should be a CompoundCRS +-- Skipping Yemen_NGN_1996. Should be a CompoundCRS +-- Skipping ITRF_2008. Should be a CompoundCRS +-- Skipping TUREF. Should be a CompoundCRS +-- Skipping GDA2020. Should be a CompoundCRS +-- Skipping BGS2005. Should be a CompoundCRS +INSERT INTO "vertical_datum" VALUES('ESRI','105110','Unknown_height_system_(meters)',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('ESRI','115807','Unknown_height_system_(meters)',NULL,NULL,'EPSG','6499','ESRI','105110','EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('ESRI','105111','Unknown_height_system_(US_survey_feet)',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('ESRI','115808','Unknown_height_system_(US_survey_feet)',NULL,NULL,'EPSG','6497','ESRI','105111','EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('ESRI','105112','Unknown_height_system_(Intl_feet)',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('ESRI','115809','Unknown_height_system_(Intl_Feet)',NULL,NULL,'EPSG','1030','ESRI','105112','EPSG','1262',0); +INSERT INTO alias_name VALUES('compound_crs','EPSG','5554','HVC_ETRS_1989_UTM_Zone_31N_and_DHHN92_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','5555','HVC_ETRS_1989_UTM_Zone_32N_and_DHHN92_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','5556','HVC_ETRS_1989_UTM_Zone_33N_and_DHHN92_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','5598','HVC_FEH2010_Fehmarnbelt_TM_and_FCSVR10_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','5698','HVC_RGF_1993_Lambert_93_and_NGF_IGN69_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','5699','HVC_RGF_1993_Lambert_93_and_NGF_IGN78_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','5707','HVC_NTF_Paris_Lambert_Zone_I_and_NGF_IGN69_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','5708','HVC_NTF_Paris_Lambert_Zone_IV_and_NGF_IGN78_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','5832','HVC_DB_REF_3_Degree_GK_Zone_2_E-N_and_DHHN92','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','5833','HVC_DB_REF_3_Degree_GK_Zone_3_E-N_and_DHHN92','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','5834','HVC_DB_REF_3_Degree_GK_Zone_4_E-N_and_DHHN92','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','5835','HVC_DB_REF_3_Degree_GK_Zone_5_E-N_and_DHHN92','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','7400','HVC_NTF_Paris_and_NGF_IGN69_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','7404','HVC_RT90_and_RH70_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','7405','HVC_OSGB36_British_National_Grid_and_ODN_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','7406','HVC_NAD27_and_NGVD29_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','7407','HVC_NAD27_Texas_North_and_NGVD29_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','7409','HVC_ETRF89_and_EVRF2000_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','7410','HVC_PSD93_and_PHD93','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','7411','HVC_NTF_Paris_Lambert_Zone_II_and_NGF_Lallemand_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','7414','HVC_Tokyo_and_JSLD_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','7415','HVC_Amersfoort_RD_New_and_NAP_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','7416','HVC_ETRF89_UTM_Zone_32N_and_DVR90_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','7417','HVC_ETRF89_UTM_Zone_33N_and_DVR90_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','7418','HVC_ETRF89_KP2000_Jutland_and_DVR90_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','7419','HVC_ETRF89_KP2000_Zealand_and_DVR90_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','7420','HVC_ETRF89_KP2000_Bornholm_and_DVR90_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','7421','HVC_NTF_Paris_Lambert_Zone_II_and_NGF_IGN69_Height','ESRI'); +INSERT INTO alias_name VALUES('compound_crs','EPSG','7422','HVC_NTF_Paris_Lambert_Zone_III_and_NGF_IGN69_Height','ESRI'); +INSERT INTO "helmert_transformation" VALUES('ESRI','7377','ONGD14_To_WGS_1984_1',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','7373','EPSG','4326','EPSG','1183',0.1,0.819,-0.5762,-1.6446,'EPSG','9001',0.00378,0.03317,-0.00318,'EPSG','9104',0.0693,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108003','NAD_1927_To_NAD_1983_PR_VI',NULL,NULL,'EPSG','9615','NTv2','EPSG','4267','EPSG','4269','EPSG','1335',0.05,'EPSG','8656','Latitude and longitude difference file','prvi',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108013','CR05_To_Ocotepeque_1935_MB',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','5365','EPSG','5451','EPSG','1074',0.5,-213.116,-9.358,74.946,'EPSG','9001',2.3514188,-0.0614669,6.394209,'EPSG','9104',5.22,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,617749.7118,-6250547.7336,1102063.6099,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108014','WGS_1984_To_Ocotepeque_1935_MB',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4326','EPSG','5451','EPSG','1074',0.5,-213.116,-9.358,74.946,'EPSG','9001',2.3514188,-0.0614669,6.394209,'EPSG','9104',5.22,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,617749.7118,-6250547.7336,1102063.6099,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108015','Nepal_Nagarkot_TO_WGS_1984_1',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','6207','EPSG','4326','EPSG','1171',10.0,296.0,732.0,273.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108016','Nepal_Nagarkot_TO_WGS_1984_2',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','6207','EPSG','4326','EPSG','1171',5.0,296.207,731.545,273.001,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108017','NAD_1983_PACP00_To_WGS_1984',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','ESRI','104259','EPSG','4326','EPSG','4162',0.1,-0.9102,2.0141,0.5602,'EPSG','9001',-0.029039,-0.010065,-0.010101,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108018','NAD_1983_MARP00_To_WGS_1984',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','ESRI','104260','EPSG','4326','EPSG','4167',0.1,-0.9102,2.0141,0.5602,'EPSG','9001',-0.029039,-0.010065,-0.010101,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108021','WGS_1984_To_Israel_CoordFrame',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4326','EPSG','4141','EPSG','1126',1.0,-24.0024,-17.1032,-17.8444,'EPSG','9001',-0.33009,-1.85269,1.66969,'EPSG','9104',5.4248,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('ESRI','108022','NTF_Paris_RGF_To_NTF_2',NULL,NULL,'EPSG','9619','Geographic2D offsets','EPSG','4807','EPSG','4275','EPSG','3694',0.0,'EPSG','8601','Latitude offset',0.0,'EPSG','9104','EPSG','8602','Longitude offset',8413.095,'EPSG','9104',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108023','Datum_Lisboa_Hayford_To_WGS_1984_NTv2',NULL,NULL,'EPSG','9615','NTv2','ESRI','104106','EPSG','4326','EPSG','1294',0.1,'EPSG','8656','Latitude and longitude difference file','portugal/DLX_ETRS89_geo',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108024','Datum_Lisboa_Hayford_To_ETRS_1989_NTv2',NULL,NULL,'EPSG','9615','NTv2','ESRI','104106','EPSG','4258','EPSG','1294',0.1,'EPSG','8656','Latitude and longitude difference file','portugal/DLX_ETRS89_geo',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108025','Datum_73_To_WGS_1984_NTv2',NULL,NULL,'EPSG','9615','NTv2','EPSG','4274','EPSG','4326','EPSG','1294',0.1,'EPSG','8656','Latitude and longitude difference file','portugal/D73_ETRS89_geo',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108026','ITRF_1997_To_ITRF_2000_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104123','ESRI','104124','EPSG','1262',0.01,-0.0067,-0.0061,0.0185,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',-0.00155,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108027','ITRF_1996_To_ITRF_2000_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104122','ESRI','104124','EPSG','1262',0.01,-0.0067,-0.0061,0.0185,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',-0.00155,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108028','ITRF_1994_To_ITRF_2000_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104121','ESRI','104124','EPSG','1262',0.01,-0.0067,-0.0061,0.0185,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',-0.00155,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108029','ITRF_1993_To_ITRF_2000_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104120','ESRI','104124','EPSG','1262',0.01,-0.0127,-0.0065,0.0209,'EPSG','9001',0.00039,-0.0008,0.00114,'EPSG','9104',-0.00195,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108030','ITRF_1992_To_ITRF_2000_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104119','ESRI','104124','EPSG','1262',0.01,-0.0147,-0.0135,0.0139,'EPSG','9001',0.0,0.0,0.00018,'EPSG','9104',-0.00075,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108031','ITRF_1991_To_ITRF_2000_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104118','ESRI','104124','EPSG','1262',0.01,-0.0267,-0.0275,0.0199,'EPSG','9001',0.0,0.0,0.00018,'EPSG','9104',-0.00215,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108032','ITRF_1990_To_ITRF_2000_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104117','ESRI','104124','EPSG','1262',0.01,-0.0247,-0.0235,0.0359,'EPSG','9001',0.0,0.0,0.00018,'EPSG','9104',-0.00245,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108033','ITRF_1989_To_ITRF_2000_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104116','ESRI','104124','EPSG','1262',0.01,-0.0297,-0.0475,0.0739,'EPSG','9001',0.0,0.0,0.00018,'EPSG','9104',0.00585,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108034','ITRF_1988_To_ITRF_2000_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104115','ESRI','104124','EPSG','1262',0.01,-0.0247,-0.0115,0.0979,'EPSG','9001',-0.0001,0.0,0.00018,'EPSG','9104',-0.00895,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108035','Ukraine_2000_To_ITRF_2005_1',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5561','ESRI','104896','EPSG','1242',1.0,24.0,-121.0,-76.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108036','ITRF_2000_To_ITRF_2005_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104124','ESRI','104896','EPSG','1262',0.01,-0.0001,0.0008,0.0058,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',-0.0004,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108037','Macao_2008_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104248','EPSG','4326','ESRI','36',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108038','Macao_2008_To_ITRF_2005',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104248','ESRI','104896','ESRI','36',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108039','Macao_2008_To_Observatorio_Meteorologico_1965_1',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','ESRI','104248','ESRI','104126','ESRI','36',3.0,202.865,303.99,155.873,'EPSG','9001',34.067,-76.126,-32.647,'EPSG','9104',-6.096,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-2361757.652,5417232.187,2391453.053,'EPSG','9001',0); +INSERT INTO "grid_transformation" VALUES('ESRI','108042','Amersfoort_To_WGS_1984_NTv2',NULL,NULL,'EPSG','9615','NTv2','EPSG','4289','EPSG','4326','EPSG','1172',0.2,'EPSG','8656','Latitude and longitude difference file','netherlands/rdtrans2008',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108043','Egypt_1907_To_WGS_1984_2',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4229','EPSG','4326','EPSG','1086',5.0,-121.8,98.1,-10.7,'EPSG','9001',0.0,0.0,0.554,'EPSG','9104',0.2263,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108044','NAD_1983_HARN_To_NSRS2007_GEOCON_CONUS',NULL,NULL,'EPSG','9615','NTv2','EPSG','4152','EPSG','4759','EPSG','1323',0.05,'EPSG','8656','Latitude and longitude difference file','gc_nad83_harn_2007_conus_shifts',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108045','NAD_1983_HARN_To_NSRS2007_GEOCON_Alaska',NULL,NULL,'EPSG','9615','NTv2','EPSG','4152','EPSG','4759','EPSG','1330',0.05,'EPSG','8656','Latitude and longitude difference file','gc_nad83_harn_2007_alaska_shifts',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108046','NAD_1983_HARN_To_NSRS2007_GEOCON_Puerto_Rico_Virgin_Islands',NULL,NULL,'EPSG','9615','NTv2','EPSG','4152','EPSG','4759','EPSG','2251',0.05,'EPSG','8656','Latitude and longitude difference file','gc_nad83_harn_2007_prvi_shifts',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108047','NAD_1983_NSRS2007_To_2011_GEOCON11_CONUS',NULL,NULL,'EPSG','9615','NTv2','EPSG','4759','EPSG','6318','EPSG','1323',0.05,'EPSG','8656','Latitude and longitude difference file','gc_nad83_2007_2011_conus_shifts',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108048','NAD_1983_NSRS2007_To_2011_GEOCON11_Alaska',NULL,NULL,'EPSG','9615','NTv2','EPSG','4759','EPSG','6318','EPSG','1330',0.05,'EPSG','8656','Latitude and longitude difference file','gc_nad83_2007_2011_alaska_shifts',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108049','NAD_1983_NSRS2007_To_2011_GEOCON11_Puerto_Rico_Virgin_Islands',NULL,NULL,'EPSG','9615','NTv2','EPSG','4759','EPSG','6318','EPSG','2251',0.05,'EPSG','8656','Latitude and longitude difference file','gc_nad83_2007_2011_prvi_shifts',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108050','ETRS_1989_To_Xrail84_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4258','ESRI','104050','ESRI','1',0.5,19.019,115.122,-97.287,'EPSG','9001',3.577824,-3.484437,-2.767646,'EPSG','9104',18.6084754,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108051','WGS_1984_To_Xrail84_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4326','ESRI','104050','ESRI','1',0.5,19.019,115.122,-97.287,'EPSG','9001',3.577824,-3.484437,-2.767646,'EPSG','9104',18.6084754,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108052','ITRF_2005_To_ITRF_2008_2',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104896','ESRI','104257','EPSG','1262',0.01,0.002,0.0009,0.0047,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',-0.00094,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('ESRI','108053','JGD_2011_To_WGS_1984',NULL,NULL,'EPSG','9619','Geographic2D offsets','EPSG','6668','EPSG','4326','EPSG','3957',0.0,'EPSG','8601','Latitude offset',0,'EPSG','9104','EPSG','8602','Longitude offset',0,'EPSG','9104',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('ESRI','108054','MONREF_1997_To_WGS_1984',NULL,NULL,'EPSG','9619','Geographic2D offsets','ESRI','104134','EPSG','4326','EPSG','1164',1.0,'EPSG','8601','Latitude offset',0,'EPSG','9104','EPSG','8602','Longitude offset',0,'EPSG','9104',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108055','WGS_1984_To_MSK_1942',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4326','ESRI','104135','EPSG','1164',999.0,78.0421780299,204.5186132514,77.449861533,'EPSG','9001',-1.7736709695,3.3197917322,-1.0426077127,'EPSG','9104',-4.95105766,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108056','WGS_1984_To_Pulkovo_1942',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4326','EPSG','4284','EPSG','1164',999.0,78.0421780299,204.5186132514,77.449861533,'EPSG','9001',-1.7736709695,3.3197917322,-1.0426077127,'EPSG','9104',-4.95105766,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108057','ETRS_1989_To_OSGB_1936_OSTN15',NULL,NULL,'EPSG','9615','NTv2','EPSG','4258','EPSG','4277','EPSG','4390',0.03,'EPSG','8656','Latitude and longitude difference file','uk/OSTN15_NTv2',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108058','WGS_1984_To_OSGB_1936_OSTN15',NULL,NULL,'EPSG','9615','NTv2','EPSG','4326','EPSG','4277','EPSG','4390',1.0,'EPSG','8656','Latitude and longitude difference file','uk/OSTN15_NTv2',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108059','OSGB_1936_To_Xrail84_NTv2',NULL,NULL,'EPSG','9615','NTv2','EPSG','4277','ESRI','104050','ESRI','1',0.5,'EPSG','8656','Latitude and longitude difference file','uk/osgb36_xrail84',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108060','GDA_1994_To_GDA2020_1',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4283','EPSG','7844','EPSG','4177',0.01,0.06155,-0.01087,-0.04019,'EPSG','9001',-0.0394924,-0.0327221,-0.0328979,'EPSG','9104',-0.009994,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('ESRI','108061','ITRF2014_To_GDA2020_Null',NULL,NULL,'EPSG','9619','Geographic2D offsets','ESRI','104019','EPSG','7844','EPSG','4177',0.005,'EPSG','8601','Latitude offset',0,'EPSG','9104','EPSG','8602','Longitude offset',0,'EPSG','9104',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108062','NAD_1927_to_SIRGAS_2000_7Par_Panama',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4267','EPSG','4674','EPSG','3290',1.0,-32.3841359,180.4090461,120.8442577,'EPSG','9001',2.1545854,0.1498782,-0.5742915,'EPSG','9104',8.1049164,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('ESRI','108063','NAD_1983_HARN_To_HARN_Adjusted_WCCS_Chippewa',NULL,NULL,'EPSG','9619','Geographic2D offsets','EPSG','4152','ESRI','104808','EPSG','1418',0.0,'EPSG','8601','Latitude offset',0,'EPSG','9104','EPSG','8602','Longitude offset',0,'EPSG','9104',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "area" VALUES('ESRI','137','Spain - Peninsula - NTv2 grid','Spain - Peninsula - NTv2 grid',35.5555555555556,44.4444444444444,-10.1833333333333,4.15,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108066','ED_1950_To_ETRS_1989_NTv2_PENR2009',NULL,NULL,'EPSG','9615','NTv2','EPSG','4230','EPSG','4258','ESRI','137',0.1,'EPSG','8656','Latitude and longitude difference file','spain/PENR2009',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "area" VALUES('ESRI','138','Spain - Balearic Islands - NTv2 grid','Spain - Balearic Islands - NTv2 grid',38.0,40.7916666666667,0.833333333333333,4.66666666666667,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108067','ED_1950_To_ETRS_1989_NTv2_BALR2009',NULL,NULL,'EPSG','9615','NTv2','EPSG','4230','EPSG','4258','ESRI','138',0.2,'EPSG','8656','Latitude and longitude difference file','spain/BALR2009',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108068','ED_1950_To_WGS_1984_NTv2_PENR2009',NULL,NULL,'EPSG','9615','NTv2','EPSG','4230','EPSG','4326','ESRI','137',0.9,'EPSG','8656','Latitude and longitude difference file','spain/PENR2009',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108069','ED_1950_To_WGS_1984_NTv2_BALR2009',NULL,NULL,'EPSG','9615','NTv2','EPSG','4230','EPSG','4326','ESRI','138',0.9,'EPSG','8656','Latitude and longitude difference file','spain/BALR2009',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108070','PD/83_To_WGS_1984_7PAR',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4746','EPSG','4326','EPSG','2544',0.5,599.4,72.4,419.2,'EPSG','9001',-0.062,-0.022,-2.723,'EPSG','9104',6.46,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108071','RD/83_To_WGS_1984_7PAR',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4745','EPSG','4326','EPSG','2545',0.5,612.4,77.0,440.2,'EPSG','9001',-0.054,0.057,-2.797,'EPSG','9104',2.55,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108072','MGI_To_ETRS_1989_Serbia',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4312','EPSG','4258','EPSG','3534',0.5,577.88891,165.22205,391.18289,'EPSG','9001',-4.9145,0.94729,13.05098,'EPSG','9104',7.78664,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108073','MGI_To_WGS_1984_Serbia',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4312','EPSG','4326','EPSG','3534',1.0,577.88891,165.22205,391.18289,'EPSG','9001',-4.9145,0.94729,13.05098,'EPSG','9104',7.78664,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108074','ITRF_2008_To_ITRF2014_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104257','ESRI','104019','EPSG','1262',0.01,-0.0016,-0.0019,-0.0024,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',0.00002,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108075','ITRF2014_To_NAD_1983_CSRS_v7_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104019','EPSG','8255','EPSG','1061',0.0,1.0053,-1.9092,-0.5416,'EPSG','9001',-0.0267814,0.0004203,-0.0109321,'EPSG','9104',0.00037,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108090','Voirol_Unifie_1960_Paris_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','4812','EPSG','4326','EPSG','1365',44.0,-123.0,-206.0,219.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108091','Voirol_Unifie_1960_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104305','EPSG','4326','EPSG','1365',44.0,-123.0,-206.0,219.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108093','Naparima_1972_To_WGS_1984_2',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4271','EPSG','4326','EPSG','3143',1.0,-0.465,372.095,171.736,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108094','MGI_Ferro_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4805','EPSG','4326','EPSG','2370',5.0,682.0,-203.0,480.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108095','MGI_To_WGS_1984_2',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4312','EPSG','4326','EPSG','1037',1.5,577.326,90.129,463.919,'EPSG','9001',5.1365988,1.4742,5.2970436,'EPSG','9104',2.4232,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108096','Chos_Malal_1914_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4160','EPSG','4326','EPSG','2325',10.5,5.5,176.7,141.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108097','Indian_1960_To_WGS_1984_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4131','EPSG','4326','EPSG','1495',27.0,199.0,931.0,318.9,'EPSG','9001',0.0,0.0,0.814,'EPSG','9104',-0.38,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108098','Nord_Sahara_1959_To_WGS_1984_3',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4307','EPSG','4326','EPSG','2393',10.0,-156.0,-87.2,287.8,'EPSG','9001',0.0,0.0,0.814,'EPSG','9104',-0.38,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108099','Palestine_1923_To_WGS_1984_2',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4281','EPSG','4326','EPSG','2603',3.5,-229.0,-67.0,277.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108102','NTF_Paris_To_RGF_1993_1',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4807','EPSG','4171','EPSG','1096',2.0,-168.0,-60.0,320.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108106','Tokyo_To_WGS_1984_2001',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4301','EPSG','4326','EPSG','1135',4.0,-147.54,507.26,680.47,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108107','JGD_2000_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4612','EPSG','4326','EPSG','1135',4.0,-1.126,-0.077,-0.037,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "area" VALUES('ESRI','139','Japan - NTv2','Japan - NTv2',20.0,47.0,121.0,154.0,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108109','Tokyo_To_WGS_1984_NTv2',NULL,NULL,'EPSG','9615','NTv2','EPSG','4301','EPSG','4326','ESRI','139',1.0,'EPSG','8656','Latitude and longitude difference file','japan/tky2jgd',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108110','Datum_73_To_WGS_1984_1',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4274','EPSG','4326','EPSG','1294',5.0,-223.237,110.193,36.649,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108111','ED_1950_To_WGS_1984_PT3',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','1193',999.0,-86.277,-108.879,-120.181,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108112','Graciosa_Base_SW_1948_To_WGS_1984_1',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37241','EPSG','4326','EPSG','1301',5.0,-106.226,166.366,-37.893,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108113','Datum_Lisboa_Bessel_To_WGS_1984_1',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104105','EPSG','4326','EPSG','1294',5.0,508.088,-191.042,565.223,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108114','Datum_Lisboa_Hayford_To_WGS_1984_1',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104106','EPSG','4326','EPSG','1294',5.0,-304.046,-60.576,103.64,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108115','Porto_Santo_1936_To_WGS_1984_1_IGP',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4615','EPSG','4326','EPSG','2870',5.0,-502.862,-247.438,312.724,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108116','Observatorio_Meteorologico_1939_To_WGS_1984_1',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37245','EPSG','4326','EPSG','1344',5.0,-422.651,-172.995,84.02,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108117','Sao_Braz_To_WGS_1984_1',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37249','EPSG','4326','EPSG','1345',5.0,-204.619,140.176,55.226,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108118','ED_1950_To_ETRS_1989_NTv2_Baleares',NULL,NULL,'EPSG','9615','NTv2','EPSG','4230','EPSG','4258','ESRI','138',0.5,'EPSG','8656','Latitude and longitude difference file','spain/baleares',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108119','ED_1950_To_WGS_1984_NTv2_Baleares',NULL,NULL,'EPSG','9615','NTv2','EPSG','4230','EPSG','4326','ESRI','138',1.0,'EPSG','8656','Latitude and longitude difference file','spain/baleares',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108120','Datum_73_To_WGS_1984_2',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4274','EPSG','4326','EPSG','1294',1.0,-239.749,88.181,30.488,'EPSG','9001',-0.26,-0.08,-1.21,'EPSG','9104',2.23,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108121','ED_1950_To_WGS_1984_PT7',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','1193',999.0,-68.863,-134.888,-111.49,'EPSG','9001',0.53,0.14,-0.57,'EPSG','9104',-3.4,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108122','Graciosa_Base_SW_1948_To_WGS_1984_2',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','ESRI','37241','EPSG','4326','EPSG','1301',1.0,-103.088,162.481,-28.276,'EPSG','9001',-0.17,-0.08,-0.17,'EPSG','9104',-1.5,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108123','Datum_Lisboa_Bessel_To_WGS_1984_2',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','ESRI','104105','EPSG','4326','EPSG','1294',1.0,631.392,-66.551,481.442,'EPSG','9001',-1.09,4.445,4.487,'EPSG','9104',-4.43,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108124','Datum_Lisboa_Hayford_To_WGS_1984_2',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','ESRI','104106','EPSG','4326','EPSG','1294',2.0,-288.885,-91.744,126.244,'EPSG','9001',1.69,-0.41,0.21,'EPSG','9104',-4.6,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108125','Porto_Santo_1936_To_WGS_1984_2',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4615','EPSG','4326','EPSG','2870',1.0,-210.502,-66.902,-48.476,'EPSG','9001',-2.094,15.067,5.817,'EPSG','9104',0.485,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108126','ED_1950_To_ETRS_1989_NTv2_Peninsula',NULL,NULL,'EPSG','9615','NTv2','EPSG','4230','EPSG','4258','ESRI','137',0.5,'EPSG','8656','Latitude and longitude difference file','spain/peninsula',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108127','Sao_Braz_To_WGS_1984_2',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','ESRI','37249','EPSG','4326','EPSG','1345',1.0,-208.719,129.685,52.092,'EPSG','9001',0.2,0.01,-0.33,'EPSG','9104',0.2,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108128','CGRS_1993_To_ETRS_1989',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','6311','EPSG','4258','EPSG','3236',0.5,8.846,-4.394,-1.122,'EPSG','9001',-0.00237,-0.146528,0.130428,'EPSG','9104',0.783926,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108129','CGRS_1993_To_WGS_1984',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','6311','EPSG','4326','EPSG','3236',1.0,8.846,-4.394,-1.122,'EPSG','9001',-0.00237,-0.146528,0.130428,'EPSG','9104',0.783926,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108130','NTF_To_RGF_1993_1',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4275','EPSG','4171','EPSG','1096',2.0,-168.0,-60.0,320.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108133','Pohnpei_To_NAD_1983',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104109','EPSG','4269','EPSG','1161',999.0,-89.121,-348.182,260.871,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108134','Bab_South_To_NAD_1983',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104112','EPSG','4269','EPSG','1185',999.0,-185.583,-230.096,281.361,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108135','Majuro_To_NAD_1983',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104113','EPSG','4269','EPSG','1155',999.0,25.1,-275.6,222.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108136','ED_1950_To_WGS_1984_NTv2_Peninsula',NULL,NULL,'EPSG','9615','NTv2','EPSG','4230','EPSG','4326','ESRI','137',1.0,'EPSG','8656','Latitude and longitude difference file','spain/peninsula',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "area" VALUES('ESRI','140','Northern Marianas - Rota','Northern Marianas - Rota',14.0,14.75,145.0,146.0,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108137','Guam_1963_To_HARN_Marianas_Rota',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4675','EPSG','4152','ESRI','140',999.0,-96.234,-252.601,258.222,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "area" VALUES('ESRI','141','Northern Marianas - Saipan','Northern Marianas - Saipan',14.75,15.5,145.0,146.0,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108138','Guam_1963_To_HARN_Marianas_Saipan',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4675','EPSG','4152','ESRI','141',999.0,-91.766,-255.817,255.702,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "area" VALUES('ESRI','142','Northern Marianas - Tinian and Aguijan','Northern Marianas - Tinian and Aguijan',14.75,15.13333333333333,145.5,145.75,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108139','Guam_1963_To_HARN_Marianas_Tinian_Aguijan',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4675','EPSG','4152','ESRI','142',999.0,-93.062,-255.309,256.696,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108145','NGO_1948_Oslo_To_WGS_1984',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4817','EPSG','4326','EPSG','1352',5.0,319.08,37.81,463.57,'EPSG','9001',-6.2970588,1.2903926,5.712916338,'EPSG','9104',10.819,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108146','NGO_1948_Oslo_To_ETRS_1989_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4817','EPSG','4258','EPSG','1352',3.0,278.3,93.0,474.5,'EPSG','9001',7.889,0.05,-6.61,'EPSG','9104',6.21,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108147','NGO_1948_Oslo_To_WGS_1984_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4817','EPSG','4326','EPSG','1352',3.0,278.3,93.0,474.5,'EPSG','9001',7.889,0.05,-6.61,'EPSG','9104',6.21,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108148','NAD_1983_CORS96_To_NAD_1983_HARN',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','6783','EPSG','4152','EPSG','1324',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108149','NAD_1983_CORS96_To_NAD_1983_NSRS2007',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','6783','EPSG','4759','EPSG','1324',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108150','ITRF_2000_To_NAD_1983_CORS96',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','ESRI','104124','EPSG','6783','EPSG','1511',0.1,0.9956,-1.9013,-0.5215,'EPSG','9001',0.025915,0.009426,0.011599,'EPSG','9104',0.00062,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108151','WGS_1984_(ITRF00)_To_NAD_1983_CORS96',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4326','EPSG','6783','EPSG','1511',0.1,0.9956,-1.9013,-0.5215,'EPSG','9001',0.025915,0.009426,0.011599,'EPSG','9104',0.00062,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108153','Datum_73_To_WGS_1984_2009_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4274','EPSG','4326','EPSG','1294',0.4,-230.994,102.591,25.199,'EPSG','9001',0.633,-0.239,0.9,'EPSG','9104',1.95,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108155','Datum_73_To_WGS_1984_2009_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4274','EPSG','4326','EPSG','1294',0.9,-223.15,110.132,36.711,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108156','Datum_Lisboa_Hayford_To_ETRS_1989_2009_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104106','EPSG','4258','EPSG','1294',1.5,-283.088,-70.693,117.445,'EPSG','9001',-1.157,0.059,-0.652,'EPSG','9104',-4.058,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108157','Datum_Lisboa_Hayford_To_WGS_1984_2009_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104106','EPSG','4326','EPSG','1294',1.5,-283.088,-70.693,117.445,'EPSG','9001',-1.157,0.059,-0.652,'EPSG','9104',-4.058,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108158','Datum_Lisboa_Hayford_To_ETRS_1989_2009_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104106','EPSG','4258','EPSG','1294',1.7,-303.861,-60.693,103.607,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108159','Datum_Lisboa_Hayford_To_WGS_1984_2009_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104106','EPSG','4326','EPSG','1294',1.7,-303.861,-60.693,103.607,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108160','Porto_Santo_1936_To_PTRA08_1_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4615','EPSG','5013','EPSG','1314',0.05,-160.41,-21.066,-99.282,'EPSG','9001',2.437,-17.25,-7.446,'EPSG','9104',0.168,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "area" VALUES('ESRI','143','Madeira Archipelago - Madeira Island','Madeira Archipelago - Madeira Island',32.5833333333333,32.9166666666667,-17.3333333333333,-16.5833333333333,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108161','Porto_Santo_1936_To_PTRA08_2_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4615','EPSG','5013','ESRI','143',0.05,-303.956,224.556,214.306,'EPSG','9001',9.405,-6.626,-12.583,'EPSG','9104',1.327,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "area" VALUES('ESRI','144','Madeira Archipelago - Porto Santo Island','Madeira Archipelago - Porto Santo Island',32.9166666666667,33.1666666666667,-16.4333333333333,-16.25,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108162','Porto_Santo_1936_To_PTRA08_3_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4615','EPSG','5013','ESRI','144',0.002,-494.088,-312.129,279.877,'EPSG','9001',-1.423,-1.013,1.59,'EPSG','9104',-0.748,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108163','Porto_Santo_1936_To_PTRA08_1_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4615','EPSG','5013','EPSG','1314',0.3,-503.229,-247.375,312.582,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108164','Porto_Santo_1936_To_PTRA08_2_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4615','EPSG','5013','ESRI','143',0.14,-503.174,-247.255,312.316,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108165','Porto_Santo_1936_To_PTRA08_3_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4615','EPSG','5013','ESRI','144',0.12,-503.3,-247.574,313.025,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108166','Porto_Santo_1936_To_WGS_1984_1_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4615','EPSG','4326','EPSG','1314',0.1,-160.41,-21.066,-99.282,'EPSG','9001',2.437,-17.25,-7.446,'EPSG','9104',0.168,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108167','Porto_Santo_1936_To_WGS_1984_2_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4615','EPSG','4326','ESRI','143',0.1,-303.956,224.556,214.306,'EPSG','9001',9.405,-6.626,-12.583,'EPSG','9104',1.327,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108168','Porto_Santo_1936_To_WGS_1984_3_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4615','EPSG','4326','ESRI','144',0.01,-494.088,-312.129,279.877,'EPSG','9001',-1.423,-1.013,1.59,'EPSG','9104',-0.748,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108169','Porto_Santo_1936_To_WGS_1984_1_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4615','EPSG','4326','EPSG','1314',0.5,-503.229,-247.375,312.582,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108170','Porto_Santo_1936_To_WGS_1984_2_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4615','EPSG','4326','ESRI','143',0.3,-503.174,-247.255,312.316,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108171','Porto_Santo_1936_To_WGS_1984_3_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4615','EPSG','4326','ESRI','144',0.3,-503.3,-247.574,313.025,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108172','Sao_Braz_To_PTRA08_1_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37249','EPSG','5013','EPSG','1345',0.025,-269.089,186.247,155.667,'EPSG','9001',2.005,3.606,-0.366,'EPSG','9104',0.097,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108173','Sao_Braz_To_PTRA08_2_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37249','EPSG','5013','EPSG','2871',0.03,-249.507,179.302,119.92,'EPSG','9001',1.406,2.423,-0.479,'EPSG','9104',0.952,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "area" VALUES('ESRI','145','Azores - Santa Maria Island','Azores - Santa Maria Island',36.9,37.1,-25.25,-24.95,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108174','Sao_Braz_To_PTRA08_3_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37249','EPSG','5013','ESRI','145',0.01,-440.296,58.548,296.265,'EPSG','9001',1.128,10.202,4.559,'EPSG','9104',-0.438,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108175','Sao_Braz_To_PTRA08_1_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37249','EPSG','5013','EPSG','1345',0.8,-204.926,140.353,55.063,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108176','Sao_Braz_To_PTRA08_2_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37249','EPSG','5013','EPSG','2871',0.8,-204.519,140.159,55.404,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108177','Sao_Braz_To_PTRA08_3_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37249','EPSG','5013','ESRI','145',0.8,-205.808,140.771,54.326,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108178','Sao_Braz_To_WGS_1984_1_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37249','EPSG','4326','EPSG','1345',0.035,-269.089,186.247,155.667,'EPSG','9001',2.005,3.606,-0.366,'EPSG','9104',0.097,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108179','Sao_Braz_To_WGS_1984_2_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37249','EPSG','4326','EPSG','2871',0.04,-249.507,179.302,119.92,'EPSG','9001',1.406,2.423,-0.479,'EPSG','9104',0.952,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108180','Sao_Braz_To_WGS_1984_3_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37249','EPSG','4326','ESRI','145',0.03,-440.296,58.548,296.265,'EPSG','9001',1.128,10.202,4.559,'EPSG','9104',-0.438,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108181','Sao_Braz_To_WGS_1984_1_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37249','EPSG','4326','EPSG','1345',0.9,-204.926,140.353,55.063,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108182','Sao_Braz_To_WGS_1984_2_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37249','EPSG','4326','EPSG','2871',0.9,-204.519,140.159,55.404,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108183','Sao_Braz_To_WGS_1984_3_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37249','EPSG','4326','ESRI','145',0.9,-205.808,140.771,54.326,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108184','Graciosa_1948_To_PTRA08_1_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37241','EPSG','5013','EPSG','1301',0.18,-185.391,122.266,35.989,'EPSG','9001',0.12,3.18,2.046,'EPSG','9104',-1.053,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108185','Graciosa_1948_To_PTRA08_2_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37241','EPSG','5013','EPSG','2873',0.005,-76.822,257.457,-12.817,'EPSG','9001',2.136,-0.033,-2.392,'EPSG','9104',-0.031,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "area" VALUES('ESRI','146','Azores - Graciosa Island','Azores - Graciosa Island',39.0,39.15,-28.15,-27.9,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108186','Graciosa_1948_To_PTRA08_3_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37241','EPSG','5013','ESRI','146',0.004,-210.371,49.768,0.808,'EPSG','9001',-2.036,3.046,3.709,'EPSG','9104',0.934,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108187','Graciosa_1948_To_PTRA08_4_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37241','EPSG','5013','EPSG','2874',0.4,-364.422,243.651,274.822,'EPSG','9001',5.477,12.092,1.538,'EPSG','9104',2.243,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108188','Graciosa_1948_To_PTRA08_5_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37241','EPSG','5013','EPSG','2875',0.007,-201.545,109.048,32.218,'EPSG','9001',-0.286,3.471,2.443,'EPSG','9104',0.309,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108189','Graciosa_1948_To_PTRA08_6_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37241','EPSG','5013','EPSG','2872',0.005,-216.355,107.044,48.015,'EPSG','9001',-0.204,4.158,2.605,'EPSG','9104',0.297,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108190','WGS_1984_(ITRF00)_To_NAD_1983',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4326','EPSG','4269','EPSG','1511',0.1,0.9956,-1.9013,-0.5215,'EPSG','9001',0.025915,0.009426,0.011599,'EPSG','9104',0.00062,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108192','DHDN_To_ETRF_1989',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4314','ESRI','104258','EPSG','2326',5.0,582.0,105.0,414.0,'EPSG','9001',-1.04,-0.35,3.08,'EPSG','9104',8.3,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108193','ED_1950_To_ETRF_1989_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','ESRI','104258','EPSG','2601',1.0,-116.641,-56.931,-110.559,'EPSG','9001',0.893,0.921,-0.917,'EPSG','9104',-3.52,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108194','Estonia_1992_To_ETRF_1989',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4133','ESRI','104258','EPSG','1090',0.1,0.0,0.0,0.0,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108195','ETRF_1989_To_WGS_1984',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104258','EPSG','4326','EPSG','1298',1.0,0.0,0.0,0.0,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108196','Hungarian_1972_To_ETRF_1989_1',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4237','ESRI','104258','EPSG','1119',1.0,56.0,-75.77,-15.31,'EPSG','9001',0.37,0.2,0.21,'EPSG','9104',1.01,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108197','IRENET95_To_ETRF_1989',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4173','ESRI','104258','EPSG','1305',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108198','Pulkovo_1942_To_ETRF_1989',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4284','ESRI','104258','EPSG','1343',2.0,24.0,-123.0,-94.0,'EPSG','9001',-0.02,0.25,0.13,'EPSG','9104',1.1,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108199','RGF_1993_To_ETRF_1989_1',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4171','ESRI','104258','EPSG','1096',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108201','NGO_1948_To_WGS_1984',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4273','EPSG','4326','EPSG','1352',5.0,319.08,37.81,463.57,'EPSG','9001',-6.2970588,1.2903926,5.712916338,'EPSG','9104',10.819,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108202','S_JTSK_To_Pulkovo_1942',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4156','EPSG','4284','EPSG','1079',1.0,544.8,206.7,540.8,'EPSG','9001',4.998,1.587,5.261,'EPSG','9104',3.56,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108206','DHDN_To_WGS_1984_3x',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4326','EPSG','2543',0.1,597.1,71.4,412.1,'EPSG','9001',0.894,0.068,-1.563,'EPSG','9104',7.58,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108207','DHDN_To_WGS_1984_4x',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4326','EPSG','2542',0.1,584.8,67.0,400.3,'EPSG','9001',0.105,0.013,-2.378,'EPSG','9104',10.29,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108208','DHDN_To_WGS_1984_5x',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4326','EPSG','2541',0.1,590.5,69.5,411.6,'EPSG','9001',-0.796,-0.052,-3.601,'EPSG','9104',8.3,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108209','DHDN_To_WGS_1984_6x',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4326','EPSG','2544',0.1,599.4,72.4,419.2,'EPSG','9001',-0.062,-0.022,-2.723,'EPSG','9104',6.46,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108210','DHDN_To_WGS_1984_7x',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4326','EPSG','2545',0.1,612.4,77.0,440.2,'EPSG','9001',-0.054,0.057,-2.797,'EPSG','9104',2.55,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108211','WGS_1984_To_Observatorio_Meteorologico_1965_1',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4326','ESRI','104126','EPSG','1147',999.0,148.635396,339.470115,157.265381,'EPSG','9001',32.87685,-76.963371,-32.622853,'EPSG','9104',-8.204889,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108212','SWEREF99_To_RT90',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4619','EPSG','4124','EPSG','1225',999.0,-414.1055246174168,-41.3265500041888,-603.0582474221075,'EPSG','9001',-0.8551163376151379,2.141317405481035,-7.022729828586432,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108213','WGS_1984_To_RT90',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4326','EPSG','4124','EPSG','1225',999.0,-414.0978567149,-41.3381489658,-603.0627177516,'EPSG','9001',-0.8550434314,2.1413465185,-7.0227209516,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "area" VALUES('ESRI','147','Iceland - NADCON','Iceland - NADCON',63.2700005,66.6600003,-24.6499996,-13.2499999,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108214','ISN_1993_To_ISN_2004',NULL,NULL,'EPSG','9615','NTv2','EPSG','4659','EPSG','5324','ESRI','147',0.05,'EPSG','8656','Latitude and longitude difference file','icegrid2004',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108216','ISN_2004_To_ISN_1993',NULL,NULL,'EPSG','9615','NTv2','EPSG','5324','EPSG','4659','ESRI','147',0.05,'EPSG','8656','Latitude and longitude difference file','ICEGRID93',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108217','La_Canoa_To_SIRGAS',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4247','EPSG','4170','EPSG','1251',15.0,-270.933,115.599,-360.226,'EPSG','9001',-5.266,-1.238,2.381,'EPSG','9104',-5.109,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2464351.594,-5783466.613,974809.808,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108220','Palestine_1923_To_WGS_1984_1X',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4281','EPSG','4326','EPSG','1126',1.5,-181.0,-122.0,225.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108222','Datum_Lisboa_Hayford_To_Datum_73_1',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104106','EPSG','4274','EPSG','1294',5.0,-80.809,-170.77,66.991,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108223','Datum_Lisboa_Hayford_To_Datum_73_2',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','ESRI','104106','EPSG','4274','EPSG','1294',5.0,-49.137,-179.924,95.757,'EPSG','9001',1.955,-0.328,1.423,'EPSG','9104',-6.827,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108224','Datum_Lisboa_Hayford_To_Datum_Lisboa_Bessel_1',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104106','ESRI','104105','EPSG','1294',5.0,-812.134,130.465,-461.583,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108225','Datum_Lisboa_Hayford_To_Datum_Lisboa_Bessel_2',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','ESRI','104106','ESRI','104105','EPSG','1294',5.0,-920.281,-25.191,-355.2,'EPSG','9001',2.781,-4.855,-4.276,'EPSG','9104',-0.168,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108226','EUREF_FIN_To_ETRS_1989',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','ESRI','104129','EPSG','4258','EPSG','1095',1.0,0.0,0.0,0.0,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108227','EUREF_FIN_To_WGS_1984',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','ESRI','104129','EPSG','4326','EPSG','1095',1.0,0.0,0.0,0.0,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108229','KKJ_To_EUREF_FIN',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4123','ESRI','104129','EPSG','1095',1.0,-96.0617,-82.4278,-121.7535,'EPSG','9001',-4.80107,-0.34543,1.37646,'EPSG','9104',1.4964,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108232','Palestine_1923_To_WGS_1984_2X',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4281','EPSG','4326','EPSG','2602',999.0,-219.247,-73.802,269.529,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108233','Jordan_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104130','EPSG','4326','EPSG','1130',999.0,-86.0,-98.0,-119.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108234','Observatorio_Meteorologico_1965_To_WGS_1984_2',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','ESRI','104126','EPSG','4326','EPSG','1147',999.0,-203.35,-302.66,-155.23,'EPSG','9001',-33.338,76.825,32.412,'EPSG','9104',7.926,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-2361564.77,5417538.39,2391581.09,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108235','WGS_1984_To_Observatorio_Meteorologico_1965_2',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4326','ESRI','104126','EPSG','1147',999.0,203.35,302.66,155.23,'EPSG','9001',33.326,-76.831,-32.4,'EPSG','9104',-7.926,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-2361768.11,5417235.73,2391425.86,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108237','Amersfoort_To_WGS_1984_4X',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4289','EPSG','4326','EPSG','1275',0.75,593.0297,26.0038,478.7534,'EPSG','9001',0.4068573303223975,-0.3507326765425626,1.870347383606796,'EPSG','9104',4.0812,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3903453.1482,368135.3134,5012970.3051,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108240','Graciosa_1948_To_PTRA08_1_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37241','EPSG','5013','EPSG','1301',0.19,-105.679,166.1,-37.322,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108241','Graciosa_1948_To_PTRA08_2_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37241','EPSG','5013','EPSG','2873',0.068,-105.377,165.769,-36.965,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108242','Graciosa_1948_To_PTRA08_3_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37241','EPSG','5013','ESRI','146',0.064,-105.359,165.804,-37.05,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108243','Graciosa_1948_To_PTRA08_4_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37241','EPSG','5013','EPSG','2874',0.1,-105.531,166.39,-37.326,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108244','Graciosa_1948_To_PTRA08_5_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37241','EPSG','5013','EPSG','2875',0.7,-105.756,165.972,-37.313,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108245','Graciosa_1948_To_PTRA08_6_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37241','EPSG','5013','EPSG','2872',0.07,-106.235,166.236,-37.768,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108246','Graciosa_1948_To_WGS_1984_1_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37241','EPSG','4326','EPSG','1301',0.5,-185.391,122.266,35.989,'EPSG','9001',0.12,3.18,2.046,'EPSG','9104',-1.053,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108247','Graciosa_1948_To_WGS_1984_2_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37241','EPSG','4326','EPSG','2873',0.01,-76.822,257.457,-12.817,'EPSG','9001',2.136,-0.033,-2.392,'EPSG','9104',-0.031,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108248','Graciosa_1948_To_WGS_1984_3_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37241','EPSG','4326','ESRI','146',0.01,-210.371,49.768,0.808,'EPSG','9001',-2.036,3.046,3.709,'EPSG','9104',0.934,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108249','Graciosa_1948_To_WGS_1984_4_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37241','EPSG','4326','EPSG','2874',0.5,-364.422,243.651,274.822,'EPSG','9001',5.477,12.092,1.538,'EPSG','9104',2.243,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108250','Graciosa_1948_To_WGS_1984_5_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37241','EPSG','4326','EPSG','2875',0.01,-201.545,109.048,32.218,'EPSG','9001',-0.286,3.471,2.443,'EPSG','9104',0.309,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108251','Graciosa_1948_To_WGS_1984_6_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37241','EPSG','4326','EPSG','2872',0.01,-216.355,107.044,48.015,'EPSG','9001',-0.204,4.158,2.605,'EPSG','9104',0.297,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108259','DOS_1968_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37218','EPSG','4326','EPSG','3198',44.0,230.0,-199.0,-752.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108261','Estonia_1937_To_WGS_1984_NGA',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104101','EPSG','4326','EPSG','1090',0.1,374.0,150.0,588.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108262','Fort_Thomas_1955_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37240','EPSG','4326','EPSG','1200',44.0,-7.0,215.0,225.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108263','GUX_1_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37221','EPSG','4326','EPSG','3197',44.0,252.0,-209.0,-751.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108264','Hermannskogel_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104102','EPSG','4326','EPSG','2370',999.0,682.0,-203.0,480.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108265','Voirol_Unifie_1960_Grad_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','4305','EPSG','4326','EPSG','1365',44.0,-123.0,-206.0,219.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108268','LC5_1961_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37243','EPSG','4326','EPSG','3186',44.0,42.0,124.0,147.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108269','South_Asia_Singapore_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37207','EPSG','4326','EPSG','1210',999.0,7.0,-10.0,-26.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108272','Estonia_1937_To_ETRS_1989',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104101','EPSG','4258','EPSG','1090',0.1,372.87,149.23,585.29,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108275','ED_1950_To_WGS_1984_9',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','1123',19.0,-117.0,-132.0,-164.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108276','D48_To_ETRS_1989',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4258','EPSG','1212',1.0,426.62,142.62,460.09,'EPSG','9001',4.98,4.49,-12.42,'EPSG','9104',-17.1,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108277','D48_To_WGS_1984',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4326','EPSG','1212',1.0,426.62,142.62,460.09,'EPSG','9001',4.98,4.49,-12.42,'EPSG','9104',-17.1,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108278','Voirol_1875_Grad_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104139','EPSG','4326','EPSG','2347',44.0,-73.0,-247.0,227.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108279','Merchich_Degree_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104261','EPSG','4326','EPSG','1166',7.0,31.0,146.0,47.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108280','ITRF_2000_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104124','EPSG','4326','EPSG','1262',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108281','ITRF_2000_To_NAD_1983_HARN',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','ESRI','104124','EPSG','4152','EPSG','1324',0.1,0.9956,-1.9013,-0.5215,'EPSG','9001',0.025915,0.009426,0.011599,'EPSG','9104',0.00062,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108282','WGS_1984_(ITRF00)_To_NAD_1983_HARN',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4326','EPSG','4152','EPSG','1324',0.1,0.9956,-1.9013,-0.5215,'EPSG','9001',0.025915,0.009426,0.011599,'EPSG','9104',0.00062,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108283','Ocotepeque_1935_To_WGS_1984_RN',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','5451','EPSG','4326','EPSG','1074',999.0,6.41,-49.05,-11.28,'EPSG','9001',1.5657,0.5242,6.9718,'EPSG','9104',-5.7649,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108286','MONREF_1997_To_MSK_1942_1',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','ESRI','104134','ESRI','104135','EPSG','1164',999.0,78.0421780299,204.5186132514,77.449861533,'EPSG','9001',-1.7736709695,3.3197917322,-1.0426077127,'EPSG','9104',-4.95105766,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108287','MONREF_1997_To_MSK_1942_2',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104134','ESRI','104135','EPSG','1164',999.0,-12.6212134867,138.667639968,73.9961390849,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108288','MONREF_1997_To_Pulkovo_1942_1',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','ESRI','104134','EPSG','4284','EPSG','1164',999.0,78.0421780299,204.5186132514,77.449861533,'EPSG','9001',-1.7736709695,3.3197917322,-1.0426077127,'EPSG','9104',-4.95105766,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108289','MONREF_1997_To_Pulkovo_1942_2',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104134','EPSG','4284','EPSG','1164',999.0,-12.6212134867,138.667639968,73.9961390849,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108290','MAGNA_To_SIRGAS',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4686','EPSG','4170','EPSG','1070',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108292','Graciosa_1948_To_WGS_1984_1_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37241','EPSG','4326','EPSG','1301',0.3,-105.679,166.1,-37.322,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108293','Graciosa_1948_To_WGS_1984_2_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37241','EPSG','4326','EPSG','2873',0.2,-105.377,165.769,-36.965,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108294','Graciosa_1948_To_WGS_1984_3_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37241','EPSG','4326','ESRI','146',0.1,-105.359,165.804,-37.05,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108295','Graciosa_1948_To_WGS_1984_4_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37241','EPSG','4326','EPSG','2874',0.3,-105.531,166.39,-37.326,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108296','Graciosa_1948_To_WGS_1984_5_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37241','EPSG','4326','EPSG','2875',0.9,-105.756,165.972,-37.313,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108297','Graciosa_1948_To_WGS_1984_6_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37241','EPSG','4326','EPSG','2872',0.2,-106.235,166.236,-37.768,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "area" VALUES('ESRI','148','USA - Idaho and Montana','USA - Idaho and Montana',41.0,50.0,-119.0,-104.0,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108298','NAD_1983_To_HARN_Montana_Idaho',NULL,NULL,'EPSG','9615','NTv2','EPSG','4269','EPSG','4152','ESRI','148',0.05,'EPSG','8656','Latitude and longitude difference file','imhpgn',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108299','Guam_1963_To_WGS_1984_Saipan',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4675','EPSG','4326','ESRI','141',999.0,59.935,118.4,-10.871,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108300','NAD_1983_HARN_To_WGS_1984_Saipan',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4152','EPSG','4326','ESRI','141',999.0,1.2,0.4,0.55,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108302','ATS_1977_To_NAD_1983_CSRS_NTv2_Maritimes',NULL,NULL,'EPSG','9615','NTv2','EPSG','4122','EPSG','4617','EPSG','1283',999.0,'EPSG','8656','Latitude and longitude difference file','canada/GS7783',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108303','Pohnpei_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104109','EPSG','4326','EPSG','1161',999.0,-89.121,-348.182,260.871,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108304','Guam_1963_To_NAD_1983_HARN_Saipan',NULL,NULL,'EPSG','9615','NTv2','EPSG','4675','EPSG','4152','ESRI','141',999.0,'EPSG','8656','Latitude and longitude difference file','c1hpgn',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO grid_alternatives VALUES ('c1hpgn', 'c1hpgn.gsb', 'NTv2', 'hgridshift', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); +INSERT INTO "grid_transformation" VALUES('ESRI','108305','Guam_1963_To_NAD_1983_HARN_Rota',NULL,NULL,'EPSG','9615','NTv2','EPSG','4675','EPSG','4152','ESRI','140',999.0,'EPSG','8656','Latitude and longitude difference file','c2hpgn',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO grid_alternatives VALUES ('c2hpgn', 'c2hpgn.gsb', 'NTv2', 'hgridshift', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); +INSERT INTO "grid_transformation" VALUES('ESRI','108306','Old_Hawaiian_To_NAD_1983_HARN_Hawaii',NULL,NULL,'EPSG','9615','NTv2','EPSG','4135','EPSG','4152','EPSG','1334',0.05,'EPSG','8656','Latitude and longitude difference file','ohdhihpgn',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "area" VALUES('ESRI','149','Pacific - USA interests Pacific and Mariana plates','Pacific - USA interests Pacific and Mariana plates',-17.56,31.8,129.48,-151.27,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108307','NAD_1983_HARN_PACP00_MARP00_To_WGS_1984',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4152','EPSG','4326','ESRI','149',999.0,-0.9102,2.0141,0.5602,'EPSG','9001',-0.029039,-0.010065,-0.010101,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108308','D48_To_ETRS_1989_2007',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4258','EPSG','1212',1.0,-409.520465,-72.191827,-486.872387,'EPSG','9001',3.08625,5.468945,-11.02037,'EPSG','9104',-17.919456,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108309','D48_To_WGS_1984_2007',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4326','EPSG','1212',1.0,-409.520465,-72.191827,-486.872387,'EPSG','9001',3.08625,5.468945,-11.02037,'EPSG','9104',-17.919456,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108310','D48_To_ETRS_1989_Zahodna_Slovenia',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4258','EPSG','3564',0.5,-315.352931,-186.253842,-499.603434,'EPSG','9001',6.446475,8.131219,-13.208894,'EPSG','9104',-23.448627,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108311','D48_To_WGS_1984_Zahodna_Slovenia',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4326','EPSG','3564',0.5,-315.352931,-186.253842,-499.603434,'EPSG','9001',6.446475,8.131219,-13.208894,'EPSG','9104',-23.448627,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108312','D48_To_ETRS_1989_Severovzhodna_Slovenia',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4258','EPSG','3565',0.5,-464.923389,21.456739,-504.499613,'EPSG','9001',-0.402796,4.228767,-9.954933,'EPSG','9104',-12.795283,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108313','D48_To_WGS_1984_Severovzhodna_Slovenia',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4326','EPSG','3565',0.5,-464.923389,21.456739,-504.499613,'EPSG','9001',-0.402796,4.228767,-9.954933,'EPSG','9104',-12.795283,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108314','D48_To_ETRS_1989_Jugovzhodna_Slovenia',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4258','EPSG','3566',0.5,-459.947808,-82.224279,-458.755555,'EPSG','9001',3.565429,3.700405,-10.860587,'EPSG','9104',-15.507373,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108315','D48_To_WGS_1984_Jugovzhodna_Slovenia',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4326','EPSG','3566',0.5,-459.947808,-82.224279,-458.755555,'EPSG','9001',3.565429,3.700405,-10.860587,'EPSG','9104',-15.507373,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108316','D48_To_ETRS_1989_Stajerska',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4258','EPSG','3569',0.3,-439.481548,11.748185,-494.977936,'EPSG','9001',0.026815,4.656409,-10.155824,'EPSG','9104',-16.269825,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108317','D48_To_WGS_1984_Stajerska',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4326','EPSG','3569',0.3,-439.481548,11.748185,-494.977936,'EPSG','9001',0.026815,4.656409,-10.155824,'EPSG','9104',-16.269825,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108318','D48_To_ETRS_1989_Gorenjska',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4258','EPSG','3571',0.3,-281.493395,-45.98263,-537.512746,'EPSG','9001',2.57094,9.648137,-10.759628,'EPSG','9104',-26.464974,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108319','D48_To_WGS_1984_Gorenjska',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4326','EPSG','3571',0.3,-281.493395,-45.98263,-537.512746,'EPSG','9001',2.57094,9.648137,-10.759628,'EPSG','9104',-26.464974,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108320','D48_To_ETRS_1989_Osrednja_Slovenia',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4258','EPSG','3573',0.3,-400.603839,-90.679824,-472.247864,'EPSG','9001',3.26144,5.263217,-11.837473,'EPSG','9104',-20.022307,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108321','D48_To_WGS_1984_Osrednja_Slovenia',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4326','EPSG','3573',0.3,-400.603839,-90.679824,-472.247864,'EPSG','9001',3.26144,5.263217,-11.837473,'EPSG','9104',-20.022307,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108322','D48_To_ETRS_1989_Dolenjska',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4258','EPSG','3568',0.3,-468.611644,-81.420064,-445.219731,'EPSG','9001',3.83941,3.262328,-10.566926,'EPSG','9104',-16.132504,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108323','D48_To_WGS_1984_Dolenjska',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4326','EPSG','3568',0.3,-468.611644,-81.420064,-445.219731,'EPSG','9001',3.83941,3.262328,-10.566926,'EPSG','9104',-16.132504,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108324','D48_To_ETRS_1989_Juzna_Slovenia',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4258','EPSG','3567',0.3,-427.888553,-105.559998,-510.911367,'EPSG','9001',4.992818,5.898563,-10.306816,'EPSG','9104',-12.431354,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108325','D48_To_WGS_1984_Juzna_Slovenia',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4326','EPSG','3567',0.3,-427.888553,-105.559998,-510.911367,'EPSG','9001',4.992818,5.898563,-10.306816,'EPSG','9104',-12.431354,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108326','D48_To_ETRS_1989_Primorska',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4258','EPSG','3572',0.3,-355.803451,-274.321338,-462.96856,'EPSG','9001',9.087389,6.490416,-14.502467,'EPSG','9104',-20.888271,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108327','D48_To_WGS_1984_Primorska',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4326','EPSG','3572',0.3,-355.803451,-274.321338,-462.96856,'EPSG','9001',9.087389,6.490416,-14.502467,'EPSG','9104',-20.888271,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108328','D48_To_ETRS_1989_Pomurje',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4258','EPSG','3570',0.3,-524.43125,-3.301198,-519.006791,'EPSG','9001',-0.013132,3.119715,-10.232694,'EPSG','9104',-4.185096,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108329','D48_To_WGS_1984_Pomurje',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','104131','EPSG','4326','EPSG','3570',0.3,-524.43125,-3.301198,-519.006791,'EPSG','9001',-0.013132,3.119715,-10.232694,'EPSG','9104',-4.185096,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108330','Old_Hawaiian_Intl_1924_To_WGS_1984_Mean',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104138','EPSG','4326','EPSG','1334',38.0,201.0,-228.0,-346.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108331','Old_Hawaiian_Intl_1924_To_WGS_1984_Hawaii',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104138','EPSG','4326','EPSG','1546',44.0,229.0,-222.0,-348.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108332','Old_Hawaiian_Intl_1924_To_WGS_1984_Kauai',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104138','EPSG','4326','EPSG','1549',35.0,185.0,-233.0,-337.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108333','Old_Hawaiian_Intl_1924_To_WGS_1984_Maui',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104138','EPSG','4326','EPSG','1547',44.0,205.0,-233.0,-355.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108334','Old_Hawaiian_Intl_1924_To_WGS_1984_Oahu',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104138','EPSG','4326','EPSG','1548',14.0,198.0,-226.0,-347.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108335','ED_1950_To_WGS_1984_NGA_7PAR',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2420',10.0,-102.0,-102.0,-129.0,'EPSG','9001',0.413,-0.184,0.385,'EPSG','9104',2.4664,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108336','OSGB_1936_To_WGS_1984_NGA_7PAR',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4277','EPSG','4326','EPSG','1264',21.0,446.0,-99.0,544.0,'EPSG','9001',-0.945,-0.261,-0.435,'EPSG','9104',-20.8927,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108337','Hong_Kong_1980_To_ITRF_1996',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4611','ESRI','104122','EPSG','1118',1.0,-162.619,-276.959,-161.764,'EPSG','9001',-0.067753,2.243648,1.158828,'EPSG','9104',-1.094246,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108341','Observatorio_Meteorologico_1939_To_PTRA08_1_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37245','EPSG','5013','EPSG','1344',0.03,-487.978,-226.275,102.787,'EPSG','9001',-0.743,1.677,2.087,'EPSG','9104',1.485,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "area" VALUES('ESRI','150','Azores - Flores Island','Azores - Flores Island',39.35,39.5,-31.3,-31.1,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108342','Observatorio_Meteorologico_1939_To_PTRA08_2_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37245','EPSG','5013','ESRI','150',0.02,-511.151,-181.269,139.609,'EPSG','9001',1.05,2.703,1.798,'EPSG','9104',3.071,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "area" VALUES('ESRI','151','Azores - Corvo Island','Azores - Corvo Island',39.5,39.75,-31.2,-31.0,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108343','Observatorio_Meteorologico_1939_To_PTRA08_3_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37245','EPSG','5013','ESRI','151',0.07,-1333.976,-487.235,945.031,'EPSG','9001',6.674,35.963,20.438,'EPSG','9104',-11.187,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108344','Observatorio_Meteorologico_1939_To_PTRA08_1_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37245','EPSG','5013','EPSG','1344',0.06,-423.058,-172.868,83.772,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108345','Observatorio_Meteorologico_1939_To_PTRA08_2_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37245','EPSG','5013','ESRI','150',0.056,-423.053,-172.871,83.771,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108346','Observatorio_Meteorologico_1939_To_PTRA08_3_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37245','EPSG','5013','ESRI','151',0.064,-423.024,-172.923,83.83,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108347','Observatorio_Meteorologico_1939_To_WGS_1984_1_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37245','EPSG','4326','EPSG','1344',0.06,-487.978,-226.275,102.787,'EPSG','9001',-0.743,1.677,2.087,'EPSG','9104',1.485,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108348','Observatorio_Meteorologico_1939_To_WGS_1984_2_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37245','EPSG','4326','ESRI','150',0.05,-511.151,-181.269,139.609,'EPSG','9001',1.05,2.703,1.798,'EPSG','9104',3.071,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108349','Observatorio_Meteorologico_1939_To_WGS_1984_3_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37245','EPSG','4326','ESRI','151',0.1,-1333.976,-487.235,945.031,'EPSG','9001',6.674,35.963,20.438,'EPSG','9104',-11.187,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108350','Observatorio_Meteorologico_1939_To_WGS_1984_1_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37245','EPSG','4326','EPSG','1344',0.1,-423.058,-172.868,83.772,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108351','Observatorio_Meteorologico_1939_To_WGS_1984_2_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37245','EPSG','4326','ESRI','150',0.08,-423.053,-172.871,83.771,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108352','Observatorio_Meteorologico_1939_To_WGS_1984_3_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37245','EPSG','4326','ESRI','151',0.085,-423.024,-172.923,83.83,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108353','ITRF_2000_To_NAD_1983_2011',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','ESRI','104124','EPSG','6318','EPSG','1511',0.1,0.9956,-1.9013,-0.5215,'EPSG','9001',0.025915,0.009426,0.011599,'EPSG','9104',0.00062,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108354','WGS_1984_(ITRF00)_To_NAD_1983_2011',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4326','EPSG','6318','EPSG','1511',0.1,0.9956,-1.9013,-0.5215,'EPSG','9001',0.025915,0.009426,0.011599,'EPSG','9104',0.00062,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108355','NAD_1983_HARN_To_NAD_1983_2011',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4152','EPSG','6318','EPSG','1324',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108356','NAD_1983_NSRS2007_To_NAD_1983_2011',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4759','EPSG','6318','EPSG','1324',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108357','NAD_1983_CORS96_To_NAD_1983_2011',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','6783','EPSG','6318','EPSG','1324',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108359','ED_1950_To_WGS_1984_NTv2_Catalonia',NULL,NULL,'EPSG','9615','NTv2','EPSG','4230','EPSG','4326','EPSG','3732',0.05,'EPSG','8656','Latitude and longitude difference file','spain/100800401',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108360','ITRF_2008_To_NAD_1983_2011',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','ESRI','104257','EPSG','6318','EPSG','1511',0.03,0.99343,-1.90331,-0.52655,'EPSG','9001',0.02591467,0.00942645,0.01159935,'EPSG','9104',0.00171504,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108361','ITRF_2008_To_NAD_1983_MA11',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','ESRI','104257','EPSG','6325','EPSG','4167',0.05,0.908,-2.0161,-0.5653,'EPSG','9001',0.028971,0.01042,0.008928,'EPSG','9104',0.0011,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108362','ITRF_2008_To_NAD_1983_PA11',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','ESRI','104257','EPSG','6322','EPSG','4162',0.05,0.908,-2.0161,-0.5653,'EPSG','9001',0.027741,0.013469,0.002712,'EPSG','9104',0.0011,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108363','WGS_1984_(ITRF08)_To_NAD_1983_2011',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4326','EPSG','6318','EPSG','1511',0.03,0.99343,-1.90331,-0.52655,'EPSG','9001',0.02591467,0.00942645,0.01159935,'EPSG','9104',0.00171504,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108364','WGS_1984_(ITRF08)_To_NAD_1983_MA11',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4326','EPSG','6325','EPSG','4167',0.05,0.908,-2.0161,-0.5653,'EPSG','9001',0.028971,0.01042,0.008928,'EPSG','9104',0.0011,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108365','WGS_1984_(ITRF08)_To_NAD_1983_PA11',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4326','EPSG','6322','EPSG','4162',0.05,0.908,-2.0161,-0.5653,'EPSG','9001',0.027741,0.013469,0.002712,'EPSG','9104',0.0011,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108366','WGS_1984_To_Ain_El_Abd_1970_MB',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4326','EPSG','4204','EPSG','1040',0.1,151.9082,251.0907,-0.2276,'EPSG','9001',-0.91646,-1.0469,3.21042,'EPSG','9104',-5.2723,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3641909.2287,4425312.2897,2789434.9636,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108374','Dealul_Piscului_1970_To_WGS_1984_3X',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4317','EPSG','4326','EPSG','1197',3.0,2.3287,-147.0425,-92.0802,'EPSG','9001',0.3092483,-0.32482185,-0.49729934,'EPSG','9104',5.68906266,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108375','Dealul_Piscului_1970_To_ETRS_1989_1X',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4317','EPSG','4258','EPSG','1197',3.0,2.3287,-147.0425,-92.0802,'EPSG','9001',0.3092483,-0.32482185,-0.49729934,'EPSG','9104',5.68906266,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108376','Barbados_1938_To_WGS_1984_2X',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4212','EPSG','4326','EPSG','3218',0.15,-267.434,173.496,181.814,'EPSG','9001',13.4704,-8.7154,-7.3926,'EPSG','9104',14.7492,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108377','NAD_1983_HARN_To_NAD_1983_MA11',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4152','EPSG','6325','EPSG','4167',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108378','NAD_1983_HARN_To_NAD_1983_PA11',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4152','EPSG','6325','EPSG','4162',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "area" VALUES('ESRI','152','Australia - Queensland','Australia - Queensland',-29.5,-9.0,137.5,154.0,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108453','AGD_1984_To_GDA_1994_NTv2_Queensland',NULL,NULL,'EPSG','9615','NTv2','EPSG','4203','EPSG','4283','ESRI','152',999.0,'EPSG','8656','Latitude and longitude difference file','australia/QLD_0900',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108457','Amersfoort_To_WGS_1984_2008_MB',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4289','EPSG','4326','EPSG','1275',0.5,593.0248,25.9984,478.7459,'EPSG','9001',0.3989573882431337,-0.3439878173782826,1.877401639980446,'EPSG','9104',4.0725,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3903453.1482,368135.3134,5012970.3051,'EPSG','9001',0); +INSERT INTO "grid_transformation" VALUES('ESRI','108471','RGNC_1991_To_IGN72_Grande_Terre_NTv2',NULL,NULL,'EPSG','9615','NTv2','EPSG','4645','EPSG','4662','EPSG','2822',0.1,'EPSG','8656','Latitude and longitude difference file','france/RGNC1991_IGN72GrandeTerre',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108472','RGNC_1991_To_NEA74_Noumea_NTv2',NULL,NULL,'EPSG','9615','NTv2','EPSG','4645','EPSG','4644','EPSG','2823',999.0,'EPSG','8656','Latitude and longitude difference file','france/RGNC1991_NEA74Noumea',NULL,NULL,NULL,NULL,NULL,NULL,0); diff --git a/data/sql/geodetic_crs.sql b/data/sql/geodetic_crs.sql new file mode 100644 index 00000000..0a63fda4 --- /dev/null +++ b/data/sql/geodetic_crs.sql @@ -0,0 +1,898 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +INSERT INTO "geodetic_crs" VALUES('EPSG','3819','HD1909',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1024','EPSG','1119',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','3821','TWD67',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1025','EPSG','3315',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','3822','TWD97',NULL,NULL,'geocentric','EPSG','6500','EPSG','1026','EPSG','1228',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','3823','TWD97',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1026','EPSG','1228',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','3824','TWD97',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1026','EPSG','1228',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','3887','IGRS',NULL,NULL,'geocentric','EPSG','6500','EPSG','1029','EPSG','1124',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','3888','IGRS',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1029','EPSG','1124',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','3889','IGRS',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1029','EPSG','1124',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','3906','MGI 1901',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1031','EPSG','2370',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4000','MOLDREF99',NULL,NULL,'geocentric','EPSG','6500','EPSG','1032','EPSG','1162',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4001','Unknown datum based upon the Airy 1830 ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6001','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4002','Unknown datum based upon the Airy Modified 1849 ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6002','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4003','Unknown datum based upon the Australian National Spheroid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6003','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4004','Unknown datum based upon the Bessel 1841 ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6004','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4005','Unknown datum based upon the Bessel Modified ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6005','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4006','Unknown datum based upon the Bessel Namibia ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6006','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4007','Unknown datum based upon the Clarke 1858 ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6007','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4008','Unknown datum based upon the Clarke 1866 ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6008','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4009','Unknown datum based upon the Clarke 1866 Michigan ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6009','EPSG','1263',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4010','Unknown datum based upon the Clarke 1880 (Benoit) ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6010','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4011','Unknown datum based upon the Clarke 1880 (IGN) ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6011','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4012','Unknown datum based upon the Clarke 1880 (RGS) ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6012','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4013','Unknown datum based upon the Clarke 1880 (Arc) ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6013','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4014','Unknown datum based upon the Clarke 1880 (SGA 1922) ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6014','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4015','Unknown datum based upon the Everest 1830 (1937 Adjustment) ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6015','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4016','Unknown datum based upon the Everest 1830 (1967 Definition) ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6016','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4017','MOLDREF99',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1032','EPSG','1162',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4018','Unknown datum based upon the Everest 1830 Modified ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6018','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4019','Unknown datum based upon the GRS 1980 ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6019','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4020','Unknown datum based upon the Helmert 1906 ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6020','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4021','Unknown datum based upon the Indonesian National Spheroid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6021','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4022','Unknown datum based upon the International 1924 ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6022','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4023','MOLDREF99',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1032','EPSG','1162',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4024','Unknown datum based upon the Krassowsky 1940 ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6024','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4025','Unknown datum based upon the NWL 9D ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6025','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4027','Unknown datum based upon the Plessis 1817 ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6027','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4028','Unknown datum based upon the Struve 1860 ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6028','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4029','Unknown datum based upon the War Office ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6029','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4030','Unknown datum based upon the WGS 84 ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6030','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4031','Unknown datum based upon the GEM 10C ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6031','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4032','Unknown datum based upon the OSU86F ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6032','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4033','Unknown datum based upon the OSU91A ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6033','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4034','Unknown datum based upon the Clarke 1880 ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6034','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4035','Unknown datum based upon the Authalic Sphere',NULL,NULL,'geographic 2D','EPSG','6402','EPSG','6035','EPSG','1263',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4036','Unknown datum based upon the GRS 1967 ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6036','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4039','RGRDC 2005',NULL,NULL,'geocentric','EPSG','6500','EPSG','1033','EPSG','3613',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4040','RGRDC 2005',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1033','EPSG','3613',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4041','Unknown datum based upon the Average Terrestrial System 1977 ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6041','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4042','Unknown datum based upon the Everest (1830 Definition) ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6042','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4043','Unknown datum based upon the WGS 72 ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6043','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4044','Unknown datum based upon the Everest 1830 (1962 Definition) ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6044','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4045','Unknown datum based upon the Everest 1830 (1975 Definition) ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6045','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4046','RGRDC 2005',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1033','EPSG','3613',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4047','Unspecified datum based upon the GRS 1980 Authalic Sphere',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6047','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4052','Unspecified datum based upon the Clarke 1866 Authalic Sphere',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6052','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4053','Unspecified datum based upon the International 1924 Authalic Sphere',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6053','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4054','Unspecified datum based upon the Hughes 1980 ellipsoid',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6054','EPSG','1263',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4055','Popular Visualisation CRS',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6055','EPSG','1262',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4073','SREF98',NULL,NULL,'geocentric','EPSG','6500','EPSG','1034','EPSG','3534',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4074','SREF98',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1034','EPSG','3534',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4075','SREF98',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1034','EPSG','3534',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4079','REGCAN95',NULL,NULL,'geocentric','EPSG','6500','EPSG','1035','EPSG','3199',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4080','REGCAN95',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1035','EPSG','3199',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4081','REGCAN95',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1035','EPSG','3199',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4120','Greek',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6120','EPSG','3254',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4121','GGRS87',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6121','EPSG','3254',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4122','ATS77',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6122','EPSG','1283',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4123','KKJ',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6123','EPSG','3333',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4124','RT90',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6124','EPSG','1225',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4125','Samboja',NULL,NULL,'geographic 2D','EPSG','6402','EPSG','6125','EPSG','1328',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4126','LKS94 (ETRS89)',NULL,NULL,'geographic 2D','EPSG','6402','EPSG','6126','EPSG','1145',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4127','Tete',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6127','EPSG','3281',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4128','Madzansua',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6128','EPSG','1315',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4129','Observatario',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6129','EPSG','1329',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4130','Moznet',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6130','EPSG','1167',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4131','Indian 1960',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6131','EPSG','4007',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4132','FD58',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6132','EPSG','1300',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4133','EST92',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6133','EPSG','3246',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4134','PSD93',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6134','EPSG','3288',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4135','Old Hawaiian',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6135','EPSG','1334',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4136','St. Lawrence Island',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6136','EPSG','1332',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4137','St. Paul Island',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6137','EPSG','1333',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4138','St. George Island',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6138','EPSG','1331',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4139','Puerto Rico',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6139','EPSG','1335',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4140','NAD83(CSRS98)',NULL,NULL,'geographic 2D','EPSG','6402','EPSG','6140','EPSG','1336',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4141','Israel 1993',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6141','EPSG','2603',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4142','Locodjo 1965',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6142','EPSG','1075',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4143','Abidjan 1987',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6143','EPSG','1075',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4144','Kalianpur 1937',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6144','EPSG','1308',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4145','Kalianpur 1962',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6145','EPSG','1184',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4146','Kalianpur 1975',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6146','EPSG','3341',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4147','Hanoi 1972',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6147','EPSG','3328',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4148','Hartebeesthoek94',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6148','EPSG','1215',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4149','CH1903',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6149','EPSG','1286',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4150','CH1903+',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6150','EPSG','1286',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4151','CHTRF95',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6151','EPSG','1286',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4152','NAD83(HARN)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6152','EPSG','1337',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4153','Rassadiran',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6153','EPSG','1338',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4154','ED50(ED77)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6154','EPSG','1123',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4155','Dabola 1981',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6155','EPSG','3257',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4156','S-JTSK',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6156','EPSG','1306',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4157','Mount Dillon',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6157','EPSG','1322',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4158','Naparima 1955',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6158','EPSG','3143',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4159','ELD79',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6159','EPSG','1143',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4160','Chos Malal 1914',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6160','EPSG','1292',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4161','Pampa del Castillo',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6161','EPSG','1265',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4162','Korean 1985',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6162','EPSG','3266',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4163','Yemen NGN96',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6163','EPSG','1257',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4164','South Yemen',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6164','EPSG','1340',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4165','Bissau',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6165','EPSG','3258',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4166','Korean 1995',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6166','EPSG','3266',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4167','NZGD2000',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6167','EPSG','1175',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4168','Accra',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6168','EPSG','1104',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4169','American Samoa 1962',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6169','EPSG','3109',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4170','SIRGAS 1995',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6170','EPSG','3448',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4171','RGF93',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6171','EPSG','1096',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4172','POSGAR',NULL,NULL,'geographic 2D','EPSG','6402','EPSG','6172','EPSG','1033',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4173','IRENET95',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6173','EPSG','1305',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4174','Sierra Leone 1924',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6174','EPSG','1342',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4175','Sierra Leone 1968',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6175','EPSG','3306',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4176','Australian Antarctic',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6176','EPSG','1278',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4178','Pulkovo 1942(83)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6178','EPSG','3900',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4179','Pulkovo 1942(58)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6179','EPSG','3574',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4180','EST97',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6180','EPSG','1090',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4181','Luxembourg 1930',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6181','EPSG','1146',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4182','Azores Occidental 1939',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6182','EPSG','1344',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4183','Azores Central 1948',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6183','EPSG','1301',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4184','Azores Oriental 1940',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6184','EPSG','1345',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4185','Madeira 1936',NULL,NULL,'geographic 2D','EPSG','6402','EPSG','6185','EPSG','1314',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4188','OSNI 1952',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6188','EPSG','2530',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4189','REGVEN',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6189','EPSG','1251',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4190','POSGAR 98',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6190','EPSG','1033',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4191','Albanian 1987',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6191','EPSG','3212',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4192','Douala 1948',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6192','EPSG','2555',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4193','Manoca 1962',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6193','EPSG','2555',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4194','Qornoq 1927',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6194','EPSG','3362',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4195','Scoresbysund 1952',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6195','EPSG','2570',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4196','Ammassalik 1958',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6196','EPSG','2571',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4197','Garoua',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6197','EPSG','2590',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4198','Kousseri',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6198','EPSG','2591',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4199','Egypt 1930',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6199','EPSG','3242',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4200','Pulkovo 1995',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6200','EPSG','1198',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4201','Adindan',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6201','EPSG','1271',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4202','AGD66',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6202','EPSG','1279',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4203','AGD84',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6203','EPSG','2576',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4204','Ain el Abd',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6204','EPSG','1272',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4205','Afgooye',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6205','EPSG','3308',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4206','Agadez',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6206','EPSG','1177',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4207','Lisbon',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6207','EPSG','1294',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4208','Aratu',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6208','EPSG','1274',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4209','Arc 1950',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6209','EPSG','1276',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4210','Arc 1960',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6210','EPSG','1277',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4211','Batavia',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6211','EPSG','3666',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4212','Barbados 1938',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6212','EPSG','3218',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4213','Beduaram',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6213','EPSG','2771',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4214','Beijing 1954',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6214','EPSG','1067',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4215','Belge 1950',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6215','EPSG','1347',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4216','Bermuda 1957',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6216','EPSG','3221',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4218','Bogota 1975',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6218','EPSG','3686',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4219','Bukit Rimpah',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6219','EPSG','1287',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4220','Camacupa',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6220','EPSG','1288',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4221','Campo Inchauspe',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6221','EPSG','3843',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4222','Cape',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6222','EPSG','1290',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4223','Carthage',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6223','EPSG','1236',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4224','Chua',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6224','EPSG','3356',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4225','Corrego Alegre 1970-72',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6225','EPSG','1293',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4226','Cote d''Ivoire',NULL,NULL,'geographic 2D','EPSG','6402','EPSG','6226','EPSG','1075',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4227','Deir ez Zor',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6227','EPSG','1623',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4228','Douala',NULL,NULL,'geographic 2D','EPSG','6402','EPSG','6228','EPSG','1060',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4229','Egypt 1907',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6229','EPSG','1086',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4230','ED50',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6230','EPSG','1296',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4231','ED87',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6231','EPSG','1297',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4232','Fahud',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6232','EPSG','4009',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4233','Gandajika 1970',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6233','EPSG','1152',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4234','Garoua',NULL,NULL,'geographic 2D','EPSG','6402','EPSG','6234','EPSG','1060',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4235','Guyane Francaise',NULL,NULL,'geographic 2D','EPSG','6402','EPSG','6235','EPSG','1097',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4236','Hu Tzu Shan 1950',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6236','EPSG','3315',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4237','HD72',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6237','EPSG','1119',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4238','ID74',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6238','EPSG','4020',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4239','Indian 1954',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6239','EPSG','1304',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4240','Indian 1975',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6240','EPSG','3741',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4241','Jamaica 1875',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6241','EPSG','3342',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4242','JAD69',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6242','EPSG','3342',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4243','Kalianpur 1880',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6243','EPSG','1307',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4244','Kandawala',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6244','EPSG','3310',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4245','Kertau 1968',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6245','EPSG','4223',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4246','KOC',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6246','EPSG','3267',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4247','La Canoa',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6247','EPSG','3327',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4248','PSAD56',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6248','EPSG','1348',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4249','Lake',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6249','EPSG','1312',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4250','Leigon',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6250','EPSG','1104',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4251','Liberia 1964',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6251','EPSG','3270',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4252','Lome',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6252','EPSG','1232',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4253','Luzon 1911',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6253','EPSG','3969',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4254','Hito XVIII 1963',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6254','EPSG','1303',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4255','Herat North',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6255','EPSG','1024',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4256','Mahe 1971',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6256','EPSG','2369',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4257','Makassar',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6257','EPSG','1316',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4258','ETRS89',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6258','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4259','Malongo 1987',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6259','EPSG','3180',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4260','Manoca',NULL,NULL,'geographic 2D','EPSG','6402','EPSG','6260','EPSG','1060',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4261','Merchich',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6261','EPSG','3280',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4262','Massawa',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6262','EPSG','1089',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4263','Minna',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6263','EPSG','1178',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4264','Mhast',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6264','EPSG','1318',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4265','Monte Mario',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6265','EPSG','3343',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4266','M''poraloko',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6266','EPSG','1100',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4267','NAD27',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6267','EPSG','1349',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4268','NAD27 Michigan',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6268','EPSG','1391',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4269','NAD83',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6269','EPSG','1350',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4270','Nahrwan 1967',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6270','EPSG','1351',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4271','Naparima 1972',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6271','EPSG','1322',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4272','NZGD49',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6272','EPSG','3285',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4273','NGO 1948',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6273','EPSG','1352',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4274','Datum 73',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6274','EPSG','1294',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4275','NTF',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6275','EPSG','3694',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4276','NSWC 9Z-2',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6276','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4277','OSGB 1936',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6277','EPSG','4390',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4278','OSGB70',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6278','EPSG','1264',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4279','OS(SN)80',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6279','EPSG','1354',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4280','Padang',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6280','EPSG','1355',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4281','Palestine 1923',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6281','EPSG','1356',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4282','Pointe Noire',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6282','EPSG','1072',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4283','GDA94',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6283','EPSG','4177',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4284','Pulkovo 1942',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6284','EPSG','2423',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4285','Qatar 1974',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6285','EPSG','1195',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4286','Qatar 1948',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6286','EPSG','1346',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4287','Qornoq',NULL,NULL,'geographic 2D','EPSG','6402','EPSG','6287','EPSG','1107',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4288','Loma Quintana',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6288','EPSG','1313',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4289','Amersfoort',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6289','EPSG','1275',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4291','SAD69',NULL,NULL,'geographic 2D','EPSG','6402','EPSG','6291','EPSG','1358',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4292','Sapper Hill 1943',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6292','EPSG','3247',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4293','Schwarzeck',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6293','EPSG','1169',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4294','Segora',NULL,NULL,'geographic 2D','EPSG','6402','EPSG','6294','EPSG','1359',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4295','Serindung',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6295','EPSG','4005',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4296','Sudan',NULL,NULL,'geographic 2D','EPSG','6402','EPSG','6296','EPSG','1361',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4297','Tananarive',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6297','EPSG','1149',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4298','Timbalai 1948',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6298','EPSG','1362',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4299','TM65',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6299','EPSG','1305',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4300','TM75',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6300','EPSG','1305',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4301','Tokyo',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6301','EPSG','1364',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4302','Trinidad 1903',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6302','EPSG','1339',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4303','TC(1948)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6303','EPSG','1363',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4304','Voirol 1875',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6304','EPSG','1365',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4306','Bern 1938',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6306','EPSG','1286',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4307','Nord Sahara 1959',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6307','EPSG','1026',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4308','RT38',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6308','EPSG','3313',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4309','Yacare',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6309','EPSG','3326',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4310','Yoff',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6310','EPSG','1207',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4311','Zanderij',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6311','EPSG','1222',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4312','MGI',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6312','EPSG','1037',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4313','Belge 1972',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6313','EPSG','1347',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4314','DHDN',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6314','EPSG','2326',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4315','Conakry 1905',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6315','EPSG','3257',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4316','Dealul Piscului 1930',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6316','EPSG','3295',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4317','Dealul Piscului 1970',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6317','EPSG','1197',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4318','NGN',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6318','EPSG','3267',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4319','KUDAMS',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6319','EPSG','1310',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4322','WGS 72',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6322','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4324','WGS 72BE',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6324','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4326','WGS 84',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6326','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4327','WGS 84 (geographic 3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6326','EPSG','1262',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4328','WGS 84 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6326','EPSG','1262',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4329','WGS 84 (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6326','EPSG','2830',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4330','ITRF88 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6647','EPSG','1262',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4331','ITRF89 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6648','EPSG','1262',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4332','ITRF90 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6649','EPSG','1262',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4333','ITRF91 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6650','EPSG','1262',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4334','ITRF92 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6651','EPSG','1262',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4335','ITRF93 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6652','EPSG','1262',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4336','ITRF94 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6653','EPSG','1262',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4337','ITRF96 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6654','EPSG','1262',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4338','ITRF97 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6655','EPSG','1262',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4339','Australian Antarctic (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6176','EPSG','1278',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4340','Australian Antarctic (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6176','EPSG','1278',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4341','EST97 (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6180','EPSG','1090',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4342','EST97 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6180','EPSG','1090',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4343','CHTRF95 (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6151','EPSG','1286',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4344','CHTRF95 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6151','EPSG','1286',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4345','ETRS89 (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6258','EPSG','1298',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4346','ETRS89 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6258','EPSG','1298',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4347','GDA94 (3D)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6283','EPSG','1036',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4348','GDA94 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6283','EPSG','1036',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4349','Hartebeesthoek94 (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6148','EPSG','1215',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4350','Hartebeesthoek94 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6148','EPSG','1215',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4351','IRENET95 (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6173','EPSG','1305',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4352','IRENET95 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6173','EPSG','1305',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4353','JGD2000 (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6612','EPSG','1129',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4354','JGD2000 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6612','EPSG','1129',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4355','LKS94 (ETRS89) (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6126','EPSG','1145',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4356','LKS94 (ETRS89) (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6126','EPSG','1145',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4357','Moznet (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6130','EPSG','1167',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4358','Moznet (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6130','EPSG','1167',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4359','NAD83(CSRS) (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6140','EPSG','2784',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4360','NAD83(CSRS) (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6140','EPSG','2784',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4361','NAD83(HARN) (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6152','EPSG','1337',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4362','NAD83(HARN) (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6152','EPSG','1337',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4363','NZGD2000 (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6167','EPSG','1175',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4364','NZGD2000 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6167','EPSG','1175',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4365','POSGAR 98 (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6190','EPSG','1033',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4366','POSGAR 98 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6190','EPSG','1033',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4367','REGVEN (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6189','EPSG','1251',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4368','REGVEN (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6189','EPSG','1251',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4369','RGF93 (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6171','EPSG','1096',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4370','RGF93 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6171','EPSG','1096',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4371','RGFG95 (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6624','EPSG','1097',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4372','RGFG95 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6624','EPSG','1097',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4373','RGR92 (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6627','EPSG','1196',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4374','RGR92 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6627','EPSG','1196',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4375','SIRGAS (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6170','EPSG','1341',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4376','SIRGAS (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6170','EPSG','1341',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4377','SWEREF99 (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6619','EPSG','1225',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4378','SWEREF99 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6619','EPSG','1225',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4379','Yemen NGN96 (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6163','EPSG','1257',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4380','Yemen NGN96 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6163','EPSG','1257',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4381','RGNC 1991 (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6645','EPSG','1174',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4382','RGNC 1991 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6645','EPSG','1174',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4383','RRAF 1991 (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6640','EPSG','2824',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4384','RRAF 1991 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6640','EPSG','2824',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4385','ITRF2000 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6656','EPSG','2830',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4386','ISN93 (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6659','EPSG','1120',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4387','ISN93 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6659','EPSG','1120',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4388','LKS92 (3D)',NULL,NULL,'geographic 3D','EPSG','6401','EPSG','6661','EPSG','1139',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4389','LKS92 (geocentric)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6661','EPSG','1139',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4463','RGSPM06',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1038','EPSG','1220',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4465','RGSPM06',NULL,NULL,'geocentric','EPSG','6500','EPSG','1038','EPSG','1220',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4466','RGSPM06',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1038','EPSG','1220',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4468','RGM04',NULL,NULL,'geocentric','EPSG','6500','EPSG','1036','EPSG','1159',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4469','RGM04',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1036','EPSG','1159',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4470','RGM04',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1036','EPSG','1159',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4472','Cadastre 1997',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1037','EPSG','3340',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4473','Cadastre 1997',NULL,NULL,'geocentric','EPSG','6500','EPSG','1037','EPSG','3340',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4475','Cadastre 1997',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1037','EPSG','3340',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4479','China Geodetic Coordinate System 2000',NULL,NULL,'geocentric','EPSG','6500','EPSG','1043','EPSG','1067',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4480','China Geodetic Coordinate System 2000',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1043','EPSG','1067',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4481','Mexico ITRF92',NULL,NULL,'geocentric','EPSG','6500','EPSG','1042','EPSG','1160',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4482','Mexico ITRF92',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1042','EPSG','1160',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4483','Mexico ITRF92',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1042','EPSG','1160',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4490','China Geodetic Coordinate System 2000',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1043','EPSG','1067',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4555','New Beijing',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1045','EPSG','3228',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4556','RRAF 1991',NULL,NULL,'geocentric','EPSG','6500','EPSG','1047','EPSG','2824',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4557','RRAF 1991',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1047','EPSG','2824',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4558','RRAF 1991',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1047','EPSG','2824',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4600','Anguilla 1957',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6600','EPSG','3214',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4601','Antigua 1943',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6601','EPSG','1273',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4602','Dominica 1945',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6602','EPSG','3239',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4603','Grenada 1953',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6603','EPSG','1551',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4604','Montserrat 1958',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6604','EPSG','3279',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4605','St. Kitts 1955',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6605','EPSG','3297',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4606','St. Lucia 1955',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6606','EPSG','3298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4607','St. Vincent 1945',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6607','EPSG','3300',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4608','NAD27(76)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6608','EPSG','1367',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4609','NAD27(CGQ77)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6609','EPSG','1368',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4610','Xian 1980',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6610','EPSG','3228',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4611','Hong Kong 1980',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6611','EPSG','1118',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4612','JGD2000',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6612','EPSG','1129',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4613','Segara',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6613','EPSG','1360',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4614','QND95',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6614','EPSG','1346',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4615','Porto Santo',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6615','EPSG','1314',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4616','Selvagem Grande',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6616','EPSG','2779',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4617','NAD83(CSRS)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6140','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4618','SAD69',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6618','EPSG','1358',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4619','SWEREF99',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6619','EPSG','1225',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4620','Point 58',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6620','EPSG','2790',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4621','Fort Marigot',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6621','EPSG','2828',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4622','Guadeloupe 1948',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6622','EPSG','2829',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4623','CSG67',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6623','EPSG','3105',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4624','RGFG95',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6624','EPSG','1097',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4625','Martinique 1938',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6625','EPSG','3276',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4626','Reunion 1947',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6626','EPSG','3337',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4627','RGR92',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6627','EPSG','3902',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4628','Tahiti 52',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6628','EPSG','2811',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4629','Tahaa 54',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6629','EPSG','2812',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4630','IGN72 Nuku Hiva',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6630','EPSG','3129',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4631','K0 1949',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6631','EPSG','2816',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4632','Combani 1950',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6632','EPSG','3340',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4633','IGN56 Lifou',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6633','EPSG','2814',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4634','IGN72 Grand Terre',NULL,NULL,'geographic 2D','EPSG','6402','EPSG','6634','EPSG','2822',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4635','ST87 Ouvea',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6635','EPSG','2813',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4636','Petrels 1972',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6636','EPSG','2817',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4637','Perroud 1950',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6637','EPSG','2818',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4638','Saint Pierre et Miquelon 1950',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6638','EPSG','3299',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4639','MOP78',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6639','EPSG','2815',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4640','RRAF 1991',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6640','EPSG','2824',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4641','IGN53 Mare',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6641','EPSG','2819',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4642','ST84 Ile des Pins',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6642','EPSG','2820',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4643','ST71 Belep',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6643','EPSG','2821',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4644','NEA74 Noumea',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6644','EPSG','2823',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4645','RGNC 1991',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6645','EPSG','1174',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4646','Grand Comoros',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6646','EPSG','2807',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4657','Reykjavik 1900',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6657','EPSG','3262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4658','Hjorsey 1955',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6658','EPSG','3262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4659','ISN93',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6659','EPSG','1120',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4660','Helle 1954',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6660','EPSG','2869',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4661','LKS92',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6661','EPSG','1139',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4662','IGN72 Grande Terre',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6634','EPSG','2822',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4663','Porto Santo 1995',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6663','EPSG','1314',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4664','Azores Oriental 1995',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6664','EPSG','1345',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4665','Azores Central 1995',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6665','EPSG','1301',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4666','Lisbon 1890',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6666','EPSG','1294',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4667','IKBD-92',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6667','EPSG','2876',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4668','ED79',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6668','EPSG','1297',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4669','LKS94',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6126','EPSG','1145',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4670','IGM95',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6670','EPSG','3343',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4671','Voirol 1879',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6671','EPSG','1365',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4672','Chatham Islands 1971',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6672','EPSG','2889',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4673','Chatham Islands 1979',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6673','EPSG','2889',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4674','SIRGAS 2000',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6674','EPSG','3418',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4675','Guam 1963',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6675','EPSG','4525',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4676','Vientiane 1982',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6676','EPSG','1138',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4677','Lao 1993',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6677','EPSG','1138',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4678','Lao 1997',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6678','EPSG','1138',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4679','Jouik 1961',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6679','EPSG','2967',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4680','Nouakchott 1965',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6680','EPSG','2968',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4681','Mauritania 1999',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6681','EPSG','1157',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4682','Gulshan 303',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6682','EPSG','1041',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4683','PRS92',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6683','EPSG','1190',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4684','Gan 1970',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6684','EPSG','3274',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4685','Gandajika',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6685','EPSG','1259',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4686','MAGNA-SIRGAS',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6686','EPSG','1070',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4687','RGPF',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6687','EPSG','1098',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4688','Fatu Iva 72',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6688','EPSG','3133',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4689','IGN63 Hiva Oa',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6689','EPSG','3130',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4690','Tahiti 79',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6690','EPSG','3124',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4691','Moorea 87',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6691','EPSG','3125',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4692','Maupiti 83',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6692','EPSG','3126',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4693','Nakhl-e Ghanem',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6693','EPSG','2362',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4694','POSGAR 94',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6694','EPSG','1033',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4695','Katanga 1955',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6695','EPSG','3147',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4696','Kasai 1953',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6696','EPSG','3148',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4697','IGC 1962 6th Parallel South',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6697','EPSG','3149',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4698','IGN 1962 Kerguelen',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6698','EPSG','2816',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4699','Le Pouce 1934',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6699','EPSG','3209',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4700','IGN Astro 1960',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6700','EPSG','3277',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4701','IGCB 1955',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6701','EPSG','3171',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4702','Mauritania 1999',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6702','EPSG','1157',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4703','Mhast 1951',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6703','EPSG','1318',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4704','Mhast (onshore)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6704','EPSG','3179',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4705','Mhast (offshore)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6705','EPSG','3180',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4706','Egypt Gulf of Suez S-650 TL',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6706','EPSG','2341',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4707','Tern Island 1961',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6707','EPSG','3181',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4708','Cocos Islands 1965',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6708','EPSG','1069',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4709','Iwo Jima 1945',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6709','EPSG','3200',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4710','Astro DOS 71',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6710','EPSG','3183',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4711','Marcus Island 1952',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6711','EPSG','1872',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4712','Ascension Island 1958',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6712','EPSG','3182',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4713','Ayabelle Lighthouse',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6713','EPSG','1081',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4714','Bellevue',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6714','EPSG','3193',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4715','Camp Area Astro',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6715','EPSG','3205',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4716','Phoenix Islands 1966',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6716','EPSG','3196',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4717','Cape Canaveral',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6717','EPSG','3206',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4718','Solomon 1968',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6718','EPSG','1213',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4719','Easter Island 1967',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6719','EPSG','3188',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4720','Fiji 1986',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6720','EPSG','1094',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4721','Fiji 1956',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6721','EPSG','3398',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4722','South Georgia 1968',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6722','EPSG','3529',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4723','GCGD59',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6723','EPSG','3185',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4724','Diego Garcia 1969',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6724','EPSG','3189',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4725','Johnston Island 1961',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6725','EPSG','3201',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4726','SIGD61',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6726','EPSG','3186',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4727','Midway 1961',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6727','EPSG','3202',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4728','Pico de las Nieves 1984',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6728','EPSG','3873',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4729','Pitcairn 1967',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6729','EPSG','3208',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4730','Santo 1965',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6730','EPSG','3194',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4731','Viti Levu 1916',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6731','EPSG','3195',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4732','Marshall Islands 1960',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6732','EPSG','3191',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4733','Wake Island 1952',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6733','EPSG','3190',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4734','Tristan 1968',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6734','EPSG','3184',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4735','Kusaie 1951',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6735','EPSG','3192',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4736','Deception Island',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6736','EPSG','3204',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4737','Korea 2000',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6737','EPSG','1135',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4738','Hong Kong 1963',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6738','EPSG','1118',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4739','Hong Kong 1963(67)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6739','EPSG','1118',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4740','PZ-90',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6740','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4741','FD54',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6741','EPSG','3248',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4742','GDM2000',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6742','EPSG','1151',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4743','Karbala 1979',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6743','EPSG','3625',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4744','Nahrwan 1934',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6744','EPSG','4238',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4745','RD/83',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6745','EPSG','2545',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4746','PD/83',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6746','EPSG','2544',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4747','GR96',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6747','EPSG','1107',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4748','Vanua Levu 1915',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6748','EPSG','3401',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4749','RGNC91-93',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6749','EPSG','1174',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4750','ST87 Ouvea',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6750','EPSG','2813',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4751','Kertau (RSO)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6751','EPSG','1309',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4752','Viti Levu 1912',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6752','EPSG','3195',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4753','fk89',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6753','EPSG','3248',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4754','LGD2006',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6754','EPSG','1143',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4755','DGN95',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6755','EPSG','1122',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4756','VN-2000',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6756','EPSG','3328',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4757','SVY21',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6757','EPSG','1210',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4758','JAD2001',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6758','EPSG','1128',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4759','NAD83(NSRS2007)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6759','EPSG','1511',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4760','WGS 66',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6760','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4761','HTRS96',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6761','EPSG','1076',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4762','BDA2000',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6762','EPSG','1047',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4763','Pitcairn 2006',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6763','EPSG','3208',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4764','RSRGD2000',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6764','EPSG','3558',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4765','Slovenia 1996',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6765','EPSG','1212',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4801','Bern 1898 (Bern)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6801','EPSG','1286',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4802','Bogota 1975 (Bogota)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6802','EPSG','3229',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4803','Lisbon (Lisbon)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6803','EPSG','1294',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4804','Makassar (Jakarta)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6804','EPSG','1316',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4805','MGI (Ferro)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6805','EPSG','1321',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4806','Monte Mario (Rome)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6806','EPSG','3343',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4807','NTF (Paris)',NULL,NULL,'geographic 2D','EPSG','6403','EPSG','6807','EPSG','3694',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4808','Padang (Jakarta)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6808','EPSG','1355',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4809','Belge 1950 (Brussels)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6809','EPSG','1347',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4810','Tananarive (Paris)',NULL,NULL,'geographic 2D','EPSG','6403','EPSG','6810','EPSG','3273',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4811','Voirol 1875 (Paris)',NULL,NULL,'geographic 2D','EPSG','6403','EPSG','6811','EPSG','1365',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4813','Batavia (Jakarta)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6813','EPSG','1285',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4814','RT38 (Stockholm)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6814','EPSG','3313',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4815','Greek (Athens)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6815','EPSG','3254',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4816','Carthage (Paris)',NULL,NULL,'geographic 2D','EPSG','6403','EPSG','6816','EPSG','1618',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4817','NGO 1948 (Oslo)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6817','EPSG','1352',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4818','S-JTSK (Ferro)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6818','EPSG','1306',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4819','Nord Sahara 1959 (Paris)',NULL,NULL,'geographic 2D','EPSG','6403','EPSG','6819','EPSG','1366',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4820','Segara (Jakarta)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6820','EPSG','1360',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4821','Voirol 1879 (Paris)',NULL,NULL,'geographic 2D','EPSG','6403','EPSG','6821','EPSG','1365',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4823','Sao Tome',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1044','EPSG','3645',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4824','Principe',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1046','EPSG','3646',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4882','Slovenia 1996',NULL,NULL,'geocentric','EPSG','6500','EPSG','6765','EPSG','1212',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4883','Slovenia 1996',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6765','EPSG','1212',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4884','RSRGD2000',NULL,NULL,'geocentric','EPSG','6500','EPSG','6764','EPSG','3558',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4885','RSRGD2000',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6764','EPSG','3558',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4886','BDA2000',NULL,NULL,'geocentric','EPSG','6500','EPSG','6762','EPSG','1047',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4887','BDA2000',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6762','EPSG','1047',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4888','HTRS96',NULL,NULL,'geocentric','EPSG','6500','EPSG','6761','EPSG','1076',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4889','HTRS96',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6761','EPSG','1076',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4890','WGS 66',NULL,NULL,'geocentric','EPSG','6500','EPSG','6760','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4891','WGS 66',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6760','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4892','NAD83(NSRS2007)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6759','EPSG','1511',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4893','NAD83(NSRS2007)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6759','EPSG','1511',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4894','JAD2001',NULL,NULL,'geocentric','EPSG','6500','EPSG','6758','EPSG','1128',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4895','JAD2001',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6758','EPSG','1128',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4896','ITRF2005',NULL,NULL,'geocentric','EPSG','6500','EPSG','6896','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4897','DGN95',NULL,NULL,'geocentric','EPSG','6500','EPSG','6755','EPSG','1122',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4898','DGN95',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6755','EPSG','1122',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4899','LGD2006',NULL,NULL,'geocentric','EPSG','6500','EPSG','6754','EPSG','1143',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4900','LGD2006',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6754','EPSG','1143',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4901','ATF (Paris)',NULL,NULL,'geographic 2D','EPSG','6403','EPSG','6901','EPSG','1326',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4902','NDG (Paris)',NULL,NULL,'geographic 2D','EPSG','6403','EPSG','6902','EPSG','1369',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4903','Madrid 1870 (Madrid)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6903','EPSG','2366',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4904','Lisbon 1890 (Lisbon)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6904','EPSG','1294',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4906','RGNC91-93',NULL,NULL,'geocentric','EPSG','6500','EPSG','6749','EPSG','1174',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4907','RGNC91-93',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6749','EPSG','1174',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4908','GR96',NULL,NULL,'geocentric','EPSG','6500','EPSG','6747','EPSG','1107',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4909','GR96',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6747','EPSG','1107',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4910','ITRF88',NULL,NULL,'geocentric','EPSG','6500','EPSG','6647','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4911','ITRF89',NULL,NULL,'geocentric','EPSG','6500','EPSG','6648','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4912','ITRF90',NULL,NULL,'geocentric','EPSG','6500','EPSG','6649','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4913','ITRF91',NULL,NULL,'geocentric','EPSG','6500','EPSG','6650','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4914','ITRF92',NULL,NULL,'geocentric','EPSG','6500','EPSG','6651','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4915','ITRF93',NULL,NULL,'geocentric','EPSG','6500','EPSG','6652','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4916','ITRF94',NULL,NULL,'geocentric','EPSG','6500','EPSG','6653','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4917','ITRF96',NULL,NULL,'geocentric','EPSG','6500','EPSG','6654','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4918','ITRF97',NULL,NULL,'geocentric','EPSG','6500','EPSG','6655','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4919','ITRF2000',NULL,NULL,'geocentric','EPSG','6500','EPSG','6656','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4920','GDM2000',NULL,NULL,'geocentric','EPSG','6500','EPSG','6742','EPSG','1151',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4921','GDM2000',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6742','EPSG','1151',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4922','PZ-90',NULL,NULL,'geocentric','EPSG','6500','EPSG','6740','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4923','PZ-90',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6740','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4924','Mauritania 1999',NULL,NULL,'geocentric','EPSG','6500','EPSG','6702','EPSG','1157',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4925','Mauritania 1999',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6702','EPSG','1157',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4926','Korea 2000',NULL,NULL,'geocentric','EPSG','6500','EPSG','6737','EPSG','1135',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4927','Korea 2000',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6737','EPSG','1135',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4928','POSGAR 94',NULL,NULL,'geocentric','EPSG','6500','EPSG','6694','EPSG','1033',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4929','POSGAR 94',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6694','EPSG','1033',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4930','Australian Antarctic',NULL,NULL,'geocentric','EPSG','6500','EPSG','6176','EPSG','1278',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4931','Australian Antarctic',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6176','EPSG','1278',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4932','CHTRF95',NULL,NULL,'geocentric','EPSG','6500','EPSG','6151','EPSG','1286',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4933','CHTRF95',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6151','EPSG','1286',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4934','EST97',NULL,NULL,'geocentric','EPSG','6500','EPSG','6180','EPSG','1090',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4935','EST97',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6180','EPSG','1090',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4936','ETRS89',NULL,NULL,'geocentric','EPSG','6500','EPSG','6258','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4937','ETRS89',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6258','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4938','GDA94',NULL,NULL,'geocentric','EPSG','6500','EPSG','6283','EPSG','4177',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4939','GDA94',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6283','EPSG','4177',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4940','Hartebeesthoek94',NULL,NULL,'geocentric','EPSG','6500','EPSG','6148','EPSG','1215',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4941','Hartebeesthoek94',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6148','EPSG','1215',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4942','IRENET95',NULL,NULL,'geocentric','EPSG','6500','EPSG','6173','EPSG','1305',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4943','IRENET95',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6173','EPSG','1305',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4944','ISN93',NULL,NULL,'geocentric','EPSG','6500','EPSG','6659','EPSG','1120',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4945','ISN93',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6659','EPSG','1120',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4946','JGD2000',NULL,NULL,'geocentric','EPSG','6500','EPSG','6612','EPSG','1129',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4947','JGD2000',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6612','EPSG','1129',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4948','LKS92',NULL,NULL,'geocentric','EPSG','6500','EPSG','6661','EPSG','1139',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4949','LKS92',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6661','EPSG','1139',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4950','LKS94',NULL,NULL,'geocentric','EPSG','6500','EPSG','6126','EPSG','1145',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4951','LKS94',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6126','EPSG','1145',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4952','Moznet',NULL,NULL,'geocentric','EPSG','6500','EPSG','6130','EPSG','1167',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4953','Moznet',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6130','EPSG','1167',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4954','NAD83(CSRS)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6140','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4955','NAD83(CSRS)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6140','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4956','NAD83(HARN)',NULL,NULL,'geocentric','EPSG','6500','EPSG','6152','EPSG','1337',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4957','NAD83(HARN)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6152','EPSG','1337',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4958','NZGD2000',NULL,NULL,'geocentric','EPSG','6500','EPSG','6167','EPSG','1175',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4959','NZGD2000',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6167','EPSG','1175',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4960','POSGAR 98',NULL,NULL,'geocentric','EPSG','6500','EPSG','6190','EPSG','1033',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4961','POSGAR 98',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6190','EPSG','1033',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4962','REGVEN',NULL,NULL,'geocentric','EPSG','6500','EPSG','6189','EPSG','1251',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4963','REGVEN',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6189','EPSG','1251',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4964','RGF93',NULL,NULL,'geocentric','EPSG','6500','EPSG','6171','EPSG','1096',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4965','RGF93',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6171','EPSG','1096',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4966','RGFG95',NULL,NULL,'geocentric','EPSG','6500','EPSG','6624','EPSG','1097',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4967','RGFG95',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6624','EPSG','1097',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4968','RGNC 1991',NULL,NULL,'geocentric','EPSG','6500','EPSG','6645','EPSG','1174',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4969','RGNC 1991',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6645','EPSG','1174',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4970','RGR92',NULL,NULL,'geocentric','EPSG','6500','EPSG','6627','EPSG','3902',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4971','RGR92',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6627','EPSG','3902',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4972','RRAF 1991',NULL,NULL,'geocentric','EPSG','6500','EPSG','6640','EPSG','2824',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4973','RRAF 1991',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6640','EPSG','2824',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','4974','SIRGAS 1995',NULL,NULL,'geocentric','EPSG','6500','EPSG','6170','EPSG','3448',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4975','SIRGAS 1995',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6170','EPSG','3448',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4976','SWEREF99',NULL,NULL,'geocentric','EPSG','6500','EPSG','6619','EPSG','1225',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4977','SWEREF99',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6619','EPSG','1225',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4978','WGS 84',NULL,NULL,'geocentric','EPSG','6500','EPSG','6326','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4979','WGS 84',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6326','EPSG','2830',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4980','Yemen NGN96',NULL,NULL,'geocentric','EPSG','6500','EPSG','6163','EPSG','1257',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4981','Yemen NGN96',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6163','EPSG','1257',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4982','IGM95',NULL,NULL,'geocentric','EPSG','6500','EPSG','6670','EPSG','3343',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4983','IGM95',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6670','EPSG','3343',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4984','WGS 72',NULL,NULL,'geocentric','EPSG','6500','EPSG','6322','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4985','WGS 72',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6322','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4986','WGS 72BE',NULL,NULL,'geocentric','EPSG','6500','EPSG','6324','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4987','WGS 72BE',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6324','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4988','SIRGAS 2000',NULL,NULL,'geocentric','EPSG','6500','EPSG','6674','EPSG','3418',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4989','SIRGAS 2000',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6674','EPSG','3418',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4990','Lao 1993',NULL,NULL,'geocentric','EPSG','6500','EPSG','6677','EPSG','1138',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4991','Lao 1993',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6677','EPSG','1138',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4992','Lao 1997',NULL,NULL,'geocentric','EPSG','6500','EPSG','6678','EPSG','1138',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4993','Lao 1997',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6678','EPSG','1138',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4994','PRS92',NULL,NULL,'geocentric','EPSG','6500','EPSG','6683','EPSG','1190',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4995','PRS92',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6683','EPSG','1190',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4996','MAGNA-SIRGAS',NULL,NULL,'geocentric','EPSG','6500','EPSG','6686','EPSG','1070',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4997','MAGNA-SIRGAS',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6686','EPSG','1070',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4998','RGPF',NULL,NULL,'geocentric','EPSG','6500','EPSG','6687','EPSG','1098',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','4999','RGPF',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6687','EPSG','1098',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5011','PTRA08',NULL,NULL,'geocentric','EPSG','6500','EPSG','1041','EPSG','3670',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5012','PTRA08',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1041','EPSG','3670',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5013','PTRA08',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1041','EPSG','3670',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5132','Tokyo 1892',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1048','EPSG','1364',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5228','S-JTSK/05',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1052','EPSG','1079',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5229','S-JTSK/05 (Ferro)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1055','EPSG','1079',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5233','SLD99',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1053','EPSG','3310',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5244','GDBD2009',NULL,NULL,'geocentric','EPSG','6500','EPSG','1056','EPSG','1055',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5245','GDBD2009',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1056','EPSG','1055',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5246','GDBD2009',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1056','EPSG','1055',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5250','TUREF',NULL,NULL,'geocentric','EPSG','6500','EPSG','1057','EPSG','1237',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5251','TUREF',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1057','EPSG','1237',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5252','TUREF',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1057','EPSG','1237',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5262','DRUKREF 03',NULL,NULL,'geocentric','EPSG','6500','EPSG','1058','EPSG','1048',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5263','DRUKREF 03',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1058','EPSG','1048',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5264','DRUKREF 03',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1058','EPSG','1048',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5322','ISN2004',NULL,NULL,'geocentric','EPSG','6500','EPSG','1060','EPSG','1120',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5323','ISN2004',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1060','EPSG','1120',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5324','ISN2004',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1060','EPSG','1120',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5332','ITRF2008',NULL,NULL,'geocentric','EPSG','6500','EPSG','1061','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5340','POSGAR 2007',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1062','EPSG','1033',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5341','POSGAR 2007',NULL,NULL,'geocentric','EPSG','6500','EPSG','1062','EPSG','1033',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5342','POSGAR 2007',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1062','EPSG','1033',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5352','MARGEN',NULL,NULL,'geocentric','EPSG','6500','EPSG','1063','EPSG','1049',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5353','MARGEN',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1063','EPSG','1049',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5354','MARGEN',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1063','EPSG','1049',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5358','SIRGAS-Chile',NULL,NULL,'geocentric','EPSG','6500','EPSG','1064','EPSG','1066',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5359','SIRGAS-Chile',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1064','EPSG','1066',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5360','SIRGAS-Chile',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1064','EPSG','1066',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5363','CR05',NULL,NULL,'geocentric','EPSG','6500','EPSG','1065','EPSG','1074',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5364','CR05',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1065','EPSG','1074',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5365','CR05',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1065','EPSG','1074',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5368','MACARIO SOLIS',NULL,NULL,'geocentric','EPSG','6500','EPSG','1066','EPSG','1186',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5369','Peru96',NULL,NULL,'geocentric','EPSG','6500','EPSG','1067','EPSG','1189',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5370','MACARIO SOLIS',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1066','EPSG','1186',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5371','MACARIO SOLIS',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1066','EPSG','1186',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5372','Peru96',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1067','EPSG','1189',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5373','Peru96',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1067','EPSG','1189',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5379','SIRGAS-ROU98',NULL,NULL,'geocentric','EPSG','6500','EPSG','1068','EPSG','1247',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5380','SIRGAS-ROU98',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1068','EPSG','1247',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5381','SIRGAS-ROU98',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1068','EPSG','1247',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5391','SIRGAS_ES2007.8',NULL,NULL,'geocentric','EPSG','6500','EPSG','1069','EPSG','1087',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5392','SIRGAS_ES2007.8',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1069','EPSG','1087',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5393','SIRGAS_ES2007.8',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1069','EPSG','1087',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5451','Ocotepeque 1935',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1070','EPSG','3876',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5464','Sibun Gorge 1922',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1071','EPSG','3219',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5467','Panama-Colon 1911',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1072','EPSG','3290',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5487','RGAF09',NULL,NULL,'geocentric','EPSG','6500','EPSG','1073','EPSG','2824',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5488','RGAF09',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1073','EPSG','2824',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5489','RGAF09',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1073','EPSG','2824',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5524','Corrego Alegre 1961',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1074','EPSG','3874',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5527','SAD69(96)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1075','EPSG','1053',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5544','PNG94',NULL,NULL,'geocentric','EPSG','6500','EPSG','1076','EPSG','1187',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5545','PNG94',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1076','EPSG','1187',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5546','PNG94',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1076','EPSG','1187',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5558','UCS-2000',NULL,NULL,'geocentric','EPSG','6500','EPSG','1077','EPSG','1242',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5560','UCS-2000',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1077','EPSG','1242',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5561','UCS-2000',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1077','EPSG','1242',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5591','FEH2010',NULL,NULL,'geocentric','EPSG','6500','EPSG','1078','EPSG','3889',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5592','FEH2010',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1078','EPSG','3889',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5593','FEH2010',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1078','EPSG','3889',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5681','DB_REF',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1081','EPSG','3339',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5828','DB_REF',NULL,NULL,'geocentric','EPSG','6500','EPSG','1081','EPSG','3339',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5830','DB_REF',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1081','EPSG','3339',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5884','TGD2005',NULL,NULL,'geocentric','EPSG','6500','EPSG','1095','EPSG','1234',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5885','TGD2005',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1095','EPSG','1234',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','5886','TGD2005',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1095','EPSG','1234',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6133','CIGD11',NULL,NULL,'geocentric','EPSG','6500','EPSG','1100','EPSG','1063',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6134','CIGD11',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1100','EPSG','1063',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6135','CIGD11',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1100','EPSG','1063',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6207','Nepal 1981',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1111','EPSG','1171',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6309','CGRS93',NULL,NULL,'geocentric','EPSG','6500','EPSG','1112','EPSG','3236',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6310','CGRS93',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1112','EPSG','3236',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6311','CGRS93',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1112','EPSG','3236',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6317','NAD83(2011)',NULL,NULL,'geocentric','EPSG','6500','EPSG','1116','EPSG','1511',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6318','NAD83(2011)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1116','EPSG','1511',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6319','NAD83(2011)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1116','EPSG','1511',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6320','NAD83(PA11)',NULL,NULL,'geocentric','EPSG','6500','EPSG','1117','EPSG','4162',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6321','NAD83(PA11)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1117','EPSG','4162',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6322','NAD83(PA11)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1117','EPSG','4162',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6323','NAD83(MA11)',NULL,NULL,'geocentric','EPSG','6500','EPSG','1118','EPSG','4167',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6324','NAD83(MA11)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1118','EPSG','4167',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6325','NAD83(MA11)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1118','EPSG','4167',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6363','Mexico ITRF2008',NULL,NULL,'geocentric','EPSG','6500','EPSG','1120','EPSG','1160',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6364','Mexico ITRF2008',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1120','EPSG','1160',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6365','Mexico ITRF2008',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1120','EPSG','1160',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6666','JGD2011',NULL,NULL,'geocentric','EPSG','6500','EPSG','1128','EPSG','1129',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6667','JGD2011',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1128','EPSG','1129',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6668','JGD2011',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1128','EPSG','1129',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6704','RDN2008',NULL,NULL,'geocentric','EPSG','6500','EPSG','1132','EPSG','3343',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6705','RDN2008',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1132','EPSG','3343',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6706','RDN2008',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1132','EPSG','3343',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6781','NAD83(CORS96)',NULL,NULL,'geocentric','EPSG','6500','EPSG','1133','EPSG','1511',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6782','NAD83(CORS96)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1133','EPSG','1511',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6783','NAD83(CORS96)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1133','EPSG','1511',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6881','Aden 1925',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1135','EPSG','1340',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6882','Bekaa Valley 1920',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1137','EPSG','3269',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6883','Bioko',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1136','EPSG','4220',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6892','South East Island 1943',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1138','EPSG','4183',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6894','Gambia',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1139','EPSG','3250',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6934','IGS08',NULL,NULL,'geocentric','EPSG','6500','EPSG','1141','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6978','IGD05',NULL,NULL,'geocentric','EPSG','6500','EPSG','1143','EPSG','1126',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','6979','IGD05',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1143','EPSG','1126',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','6980','IGD05',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1143','EPSG','1126',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','6981','IG05 Intermediate CRS',NULL,NULL,'geocentric','EPSG','6500','EPSG','1142','EPSG','2603',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6982','IG05 Intermediate CRS',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1142','EPSG','2603',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6983','IG05 Intermediate CRS',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1142','EPSG','2603',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6985','IGD05/12',NULL,NULL,'geocentric','EPSG','6500','EPSG','1145','EPSG','1126',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','6986','IGD05/12',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1145','EPSG','1126',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','6987','IGD05/12',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1145','EPSG','1126',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','6988','IG05/12 Intermediate CRS',NULL,NULL,'geocentric','EPSG','6500','EPSG','1144','EPSG','2603',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6989','IG05/12 Intermediate CRS',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1144','EPSG','2603',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','6990','IG05/12 Intermediate CRS',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1144','EPSG','2603',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7034','RGSPM06 (lon-lat)',NULL,NULL,'geographic 3D','EPSG','6426','EPSG','1038','EPSG','1220',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7035','RGSPM06 (lon-lat)',NULL,NULL,'geographic 2D','EPSG','6424','EPSG','1038','EPSG','1220',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7036','RGR92 (lon-lat)',NULL,NULL,'geographic 3D','EPSG','6426','EPSG','6627','EPSG','3902',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7037','RGR92 (lon-lat)',NULL,NULL,'geographic 2D','EPSG','6424','EPSG','6627','EPSG','3902',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7038','RGM04 (lon-lat)',NULL,NULL,'geographic 3D','EPSG','6426','EPSG','1036','EPSG','1159',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7039','RGM04 (lon-lat)',NULL,NULL,'geographic 2D','EPSG','6424','EPSG','1036','EPSG','1159',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7040','RGFG95 (lon-lat)',NULL,NULL,'geographic 3D','EPSG','6426','EPSG','6624','EPSG','1097',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7041','RGFG95 (lon-lat)',NULL,NULL,'geographic 2D','EPSG','6424','EPSG','6624','EPSG','1097',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7042','RGF93 (lon-lat)',NULL,NULL,'geographic 3D','EPSG','6426','EPSG','6171','EPSG','1096',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7071','RGTAAF07',NULL,NULL,'geocentric','EPSG','6500','EPSG','1113','EPSG','4246',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7072','RGTAAF07',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1113','EPSG','4246',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7073','RGTAAF07',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1113','EPSG','4246',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7084','RGF93 (lon-lat)',NULL,NULL,'geographic 2D','EPSG','6424','EPSG','6171','EPSG','1096',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7085','RGAF09 (lon-lat)',NULL,NULL,'geographic 3D','EPSG','6426','EPSG','1073','EPSG','2824',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7086','RGAF09 (lon-lat)',NULL,NULL,'geographic 2D','EPSG','6424','EPSG','1073','EPSG','2824',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7087','RGTAAF07 (lon-lat)',NULL,NULL,'geographic 3D','EPSG','6426','EPSG','1113','EPSG','4246',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7088','RGTAAF07 (lon-lat)',NULL,NULL,'geographic 2D','EPSG','6424','EPSG','1113','EPSG','4246',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','7133','RGTAAF07 (lon-lat)',NULL,NULL,'geographic 2D','EPSG','6424','EPSG','1113','EPSG','4246',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7134','IGD05',NULL,NULL,'geocentric','EPSG','6500','EPSG','1114','EPSG','1126',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7135','IGD05',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1114','EPSG','1126',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7136','IGD05',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1114','EPSG','1126',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7137','IGD05/12',NULL,NULL,'geocentric','EPSG','6500','EPSG','1115','EPSG','1126',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7138','IGD05/12',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1115','EPSG','1126',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7139','IGD05/12',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1115','EPSG','1126',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7371','ONGD14',NULL,NULL,'geocentric','EPSG','6500','EPSG','1147','EPSG','1183',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7372','ONGD14',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1147','EPSG','1183',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7373','ONGD14',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1147','EPSG','1183',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7656','WGS 84 (G730)',NULL,NULL,'geocentric','EPSG','6500','EPSG','1152','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7657','WGS 84 (G730)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1152','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7658','WGS 84 (G873)',NULL,NULL,'geocentric','EPSG','6500','EPSG','1153','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7659','WGS 84 (G873)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1153','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7660','WGS 84 (G1150)',NULL,NULL,'geocentric','EPSG','6500','EPSG','1154','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7661','WGS 84 (G1150)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1154','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7662','WGS 84 (G1674)',NULL,NULL,'geocentric','EPSG','6500','EPSG','1155','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7663','WGS 84 (G1674)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1155','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7664','WGS 84 (G1762)',NULL,NULL,'geocentric','EPSG','6500','EPSG','1156','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7665','WGS 84 (G1762)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1156','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7677','PZ-90.02',NULL,NULL,'geocentric','EPSG','6500','EPSG','1157','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7678','PZ-90.02',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1157','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7679','PZ-90.11',NULL,NULL,'geocentric','EPSG','6500','EPSG','1158','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7680','PZ-90.11',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1158','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7681','GSK-2011',NULL,NULL,'geocentric','EPSG','6500','EPSG','1159','EPSG','1198',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7682','GSK-2011',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1159','EPSG','1198',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7683','GSK-2011',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1159','EPSG','1198',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7684','Kyrg-06',NULL,NULL,'geocentric','EPSG','6500','EPSG','1160','EPSG','1137',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7685','Kyrg-06',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1160','EPSG','1137',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7686','Kyrg-06',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1160','EPSG','1137',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7789','ITRF2014',NULL,NULL,'geocentric','EPSG','6500','EPSG','1165','EPSG','2830',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7796','BGS2005',NULL,NULL,'geocentric','EPSG','6500','EPSG','1167','EPSG','1056',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7797','BGS2005',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1167','EPSG','1056',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7798','BGS2005',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1167','EPSG','1056',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7815','WGS 84 (Transit)',NULL,NULL,'geocentric','EPSG','6500','EPSG','1166','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7816','WGS 84 (Transit)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1166','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7842','GDA2020',NULL,NULL,'geocentric','EPSG','6500','EPSG','1168','EPSG','4177',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7843','GDA2020',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1168','EPSG','4177',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7844','GDA2020',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1168','EPSG','4177',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7879','St. Helena Tritan',NULL,NULL,'geocentric','EPSG','6500','EPSG','1173','EPSG','3183',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7880','St. Helena Tritan',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1173','EPSG','3183',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7881','St. Helena Tritan',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1173','EPSG','3183',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7884','SHGD2015',NULL,NULL,'geocentric','EPSG','6500','EPSG','1174','EPSG','3183',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7885','SHGD2015',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1174','EPSG','3183',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7886','SHGD2015',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1174','EPSG','3183',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7900','ITRF88',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6647','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7901','ITRF89',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6648','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7902','ITRF90',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6649','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7903','ITRF91',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6650','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7904','ITRF92',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6651','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7905','ITRF93',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6652','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7906','ITRF94',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6653','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7907','ITRF96',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6654','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7908','ITRF97',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6655','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7909','ITRF2000',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6656','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7910','ITRF2005',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','6896','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7911','ITRF2008',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1061','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7912','ITRF2014',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1165','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7914','ETRF89',NULL,NULL,'geocentric','EPSG','6500','EPSG','1178','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7915','ETRF89',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1178','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7916','ETRF90',NULL,NULL,'geocentric','EPSG','6500','EPSG','1179','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7917','ETRF90',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1179','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7918','ETRF91',NULL,NULL,'geocentric','EPSG','6500','EPSG','1180','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7919','ETRF91',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1180','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7920','ETRF92',NULL,NULL,'geocentric','EPSG','6500','EPSG','1181','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7921','ETRF92',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1181','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7922','ETRF93',NULL,NULL,'geocentric','EPSG','6500','EPSG','1182','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7923','ETRF93',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1182','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7924','ETRF94',NULL,NULL,'geocentric','EPSG','6500','EPSG','1183','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7925','ETRF94',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1183','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7926','ETRF96',NULL,NULL,'geocentric','EPSG','6500','EPSG','1184','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7927','ETRF96',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1184','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7928','ETRF97',NULL,NULL,'geocentric','EPSG','6500','EPSG','1185','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7929','ETRF97',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1185','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7930','ETRF2000',NULL,NULL,'geocentric','EPSG','6500','EPSG','1186','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','7931','ETRF2000',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1186','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8042','Gusterberg (Ferro)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1188','EPSG','4455',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8043','St. Stephen (Ferro)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1189','EPSG','4456',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8084','ISN2016',NULL,NULL,'geocentric','EPSG','6500','EPSG','1187','EPSG','1120',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8085','ISN2016',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1187','EPSG','1120',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8086','ISN2016',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1187','EPSG','1120',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8227','IGS14',NULL,NULL,'geocentric','EPSG','6500','EPSG','1191','EPSG','1262',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8230','NAD83(CSRS96)',NULL,NULL,'geocentric','EPSG','6500','EPSG','1192','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8231','NAD83(CSRS96)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1192','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8232','NAD83(CSRS96)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1192','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8233','NAD83(CSRS)v2',NULL,NULL,'geocentric','EPSG','6500','EPSG','1193','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8235','NAD83(CSRS)v2',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1193','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8237','NAD83(CSRS)v2',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1193','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8238','NAD83(CSRS)v3',NULL,NULL,'geocentric','EPSG','6500','EPSG','1194','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8239','NAD83(CSRS)v3',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1194','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8240','NAD83(CSRS)v3',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1194','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8242','NAD83(CSRS)v4',NULL,NULL,'geocentric','EPSG','6500','EPSG','1195','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8244','NAD83(CSRS)v4',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1195','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8246','NAD83(CSRS)v4',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1195','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8247','NAD83(CSRS)v5',NULL,NULL,'geocentric','EPSG','6500','EPSG','1196','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8248','NAD83(CSRS)v5',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1196','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8249','NAD83(CSRS)v5',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1196','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8250','NAD83(CSRS)v6',NULL,NULL,'geocentric','EPSG','6500','EPSG','1197','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8251','NAD83(CSRS)v6',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1197','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8252','NAD83(CSRS)v6',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1197','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8253','NAD83(CSRS)v7',NULL,NULL,'geocentric','EPSG','6500','EPSG','1198','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8254','NAD83(CSRS)v7',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1198','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8255','NAD83(CSRS)v7',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1198','EPSG','1061',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8351','S-JTSK [JTSK03]',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1201','EPSG','1211',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8397','ETRF2005',NULL,NULL,'geocentric','EPSG','6500','EPSG','1204','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8399','ETRF2005',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1204','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8401','ETRF2014',NULL,NULL,'geocentric','EPSG','6500','EPSG','1206','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8403','ETRF2014',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1206','EPSG','1298',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8425','Hong Kong Geodetic CS',NULL,NULL,'geocentric','EPSG','6500','EPSG','1209','EPSG','1118',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8426','Hong Kong Geodetic CS',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1209','EPSG','1118',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8427','Hong Kong Geodetic CS',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1209','EPSG','1118',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8428','Macao 1920',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1207','EPSG','1147',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8429','Macao 2008',NULL,NULL,'geocentric','EPSG','6500','EPSG','1208','EPSG','1147',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8430','Macao 2008',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1208','EPSG','1147',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8431','Macao 2008',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1208','EPSG','1147',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8449','NAD83(FBN)',NULL,NULL,'geographic 2D','EPSG','6423','EPSG','6152','EPSG','4515',NULL,1); +INSERT INTO "geodetic_crs" VALUES('EPSG','8541','NAD83(FBN)',NULL,NULL,'geocentric','EPSG','6500','EPSG','1211','EPSG','4515',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8542','NAD83(FBN)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1211','EPSG','4515',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8543','NAD83(HARN Corrected)',NULL,NULL,'geocentric','EPSG','6500','EPSG','1212','EPSG','3634',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8544','NAD83(HARN Corrected)',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1212','EPSG','3634',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8545','NAD83(HARN Corrected)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1212','EPSG','3634',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8683','SRB_ETRS89',NULL,NULL,'geocentric','EPSG','6500','EPSG','1214','EPSG','3534',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8684','SRB_ETRS89',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1214','EPSG','3534',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8685','SRB_ETRS89',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1214','EPSG','3534',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8816','MTRF-2000',NULL,NULL,'geocentric','EPSG','6500','EPSG','1218','EPSG','1206',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8817','MTRF-2000',NULL,NULL,'geographic 3D','EPSG','6423','EPSG','1218','EPSG','1206',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8818','MTRF-2000',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1218','EPSG','1206',NULL,0); +INSERT INTO "geodetic_crs" VALUES('EPSG','8860','NAD83(FBN)',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','1211','EPSG','4515',NULL,0); diff --git a/data/sql/geodetic_datum.sql b/data/sql/geodetic_datum.sql new file mode 100644 index 00000000..be24bfd7 --- /dev/null +++ b/data/sql/geodetic_datum.sql @@ -0,0 +1,546 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +INSERT INTO "geodetic_datum" VALUES('EPSG','1024','Hungarian Datum 1909',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1119',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1025','Taiwan Datum 1967',NULL,NULL,'EPSG','7050','EPSG','8901','EPSG','3315',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1026','Taiwan Datum 1997',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1228',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1029','Iraqi Geospatial Reference System',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1124',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1031','MGI 1901',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','2370',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1032','MOLDREF99',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1162',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1033','Reseau Geodesique de la RDC 2005',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','3613',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1034','Serbian Reference Network 1998',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','3534',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1035','Red Geodesica de Canarias 1995',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','3199',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1036','Reseau Geodesique de Mayotte 2004',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1159',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1037','Cadastre 1997',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3340',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1038','Reseau Geodesique de Saint Pierre et Miquelon 2006',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1220',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1041','Autonomous Regions of Portugal 2008',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','3670',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1042','Mexico ITRF92',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1160',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1043','China 2000',NULL,NULL,'EPSG','1024','EPSG','8901','EPSG','1067',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1044','Sao Tome',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3645',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1045','New Beijing',NULL,NULL,'EPSG','7024','EPSG','8901','EPSG','3228',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1046','Principe',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3646',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1047','Reseau de Reference des Antilles Francaises 1991',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','2824',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1048','Tokyo 1892',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1364',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1052','System of the Unified Trigonometrical Cadastral Network/05',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1079',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1053','Sri Lanka Datum 1999',NULL,NULL,'EPSG','7015','EPSG','8901','EPSG','3310',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1055','System of the Unified Trigonometrical Cadastral Network/05 (Ferro)',NULL,NULL,'EPSG','7004','EPSG','8909','EPSG','1079',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1056','Geocentric Datum Brunei Darussalam 2009',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1055',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1057','Turkish National Reference Frame',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1237',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1058','Bhutan National Geodetic Datum',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1048',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1060','Islands Net 2004',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1120',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1061','International Terrestrial Reference Frame 2008',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1062','Posiciones Geodesicas Argentinas 2007',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1033',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1063','Marco Geodesico Nacional de Bolivia',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1049',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1064','SIRGAS-Chile',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1066',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1065','Costa Rica 2005',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1074',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1066','Sistema Geodesico Nacional de Panama MACARIO SOLIS',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1186',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1067','Peru96',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1189',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1068','SIRGAS-ROU98',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1247',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1069','SIRGAS_ES2007.8',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1087',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1070','Ocotepeque 1935',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','3876',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1071','Sibun Gorge 1922',NULL,NULL,'EPSG','7007','EPSG','8901','EPSG','3219',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1072','Panama-Colon 1911',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','3290',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1073','Reseau Geodesique des Antilles Francaises 2009',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','2824',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1074','Corrego Alegre 1961',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3874',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1075','South American Datum 1969(96)',NULL,NULL,'EPSG','7050','EPSG','8901','EPSG','1053',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1076','Papua New Guinea Geodetic Datum 1994',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1187',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1077','Ukraine 2000',NULL,NULL,'EPSG','7024','EPSG','8901','EPSG','1242',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1078','Fehmarnbelt Datum 2010',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','3889',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1081','Deutsche Bahn Reference System',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','3339',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1095','Tonga Geodetic Datum 2005',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1234',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1100','Cayman Islands Geodetic Datum 2011',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1063',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1111','Nepal 1981',NULL,NULL,'EPSG','7015','EPSG','8901','EPSG','1171',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1112','Cyprus Geodetic Reference System 1993',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','3236',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1113','Reseau Geodesique des Terres Australes et Antarctiques Francaises 2007',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4246',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1114','Israeli Geodetic Datum 2005',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1126',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1115','Israeli Geodetic Datum 2005(2012)',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1126',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1116','NAD83 (National Spatial Reference System 2011)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1511',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1117','NAD83 (National Spatial Reference System PA11)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4162',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1118','NAD83 (National Spatial Reference System MA11)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4167',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1120','Mexico ITRF2008',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1160',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1128','Japanese Geodetic Datum 2011',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1129',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1132','Rete Dinamica Nazionale 2008',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','3343',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1133','NAD83 (Continuously Operating Reference Station 1996)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1511',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1135','Aden 1925',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1340',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1136','Bioko',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','4220',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1137','Bekaa Valley 1920',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3269',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1138','South East Island 1943',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','4183',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1139','Gambia',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3250',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1141','IGS08',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1142','IG05 Intermediate Datum',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','2603',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1143','Israeli Geodetic Datum 2005',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1126',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','1144','IG05/12 Intermediate Datum',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','2603',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1145','Israeli Geodetic Datum 2005(2012)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1126',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','1147','Oman National Geodetic Datum 2014',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1183',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1152','World Geodetic System 1984 (G730)',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1153','World Geodetic System 1984 (G873)',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1154','World Geodetic System 1984 (G1150)',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1155','World Geodetic System 1984 (G1674)',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1156','World Geodetic System 1984 (G1762)',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1157','Parametry Zemli 1990.02',NULL,NULL,'EPSG','7054','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1158','Parametry Zemli 1990.11',NULL,NULL,'EPSG','7054','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1159','Geodezicheskaya Sistema Koordinat 2011',NULL,NULL,'EPSG','1025','EPSG','8901','EPSG','1198',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1160','Kyrgyzstan Geodetic Datum 2006',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1137',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1165','International Terrestrial Reference Frame 2014',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1166','World Geodetic System 1984 (Transit)',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1167','Bulgaria Geodetic System 2005',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1056',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1168','Geocentric Datum of Australia 2020',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4177',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1173','St. Helena Tritan',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','3183',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1174','St. Helena Geodetic Datum 2015',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','3183',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1178','European Terrestrial Reference Frame 1989',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1298',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1179','European Terrestrial Reference Frame 1990',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1298',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1180','European Terrestrial Reference Frame 1991',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1298',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1181','European Terrestrial Reference Frame 1992',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1298',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1182','European Terrestrial Reference Frame 1993',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1298',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1183','European Terrestrial Reference Frame 1994',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1298',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1184','European Terrestrial Reference Frame 1996',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1298',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1185','European Terrestrial Reference Frame 1997',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1298',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1186','European Terrestrial Reference Frame 2000',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1298',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1187','Islands Net 2016',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1120',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1188','Gusterberg (Ferro)',NULL,NULL,'EPSG','1026','EPSG','8909','EPSG','4455',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1189','St. Stephen (Ferro)',NULL,NULL,'EPSG','1026','EPSG','8909','EPSG','4456',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1191','IGS14',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1192','North American Datum of 1983 (CSRS96)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1061',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1193','North American Datum of 1983 (CSRS) version 2',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1061',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1194','North American Datum of 1983 (CSRS) version 3',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1061',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1195','North American Datum of 1983 (CSRS) version 4',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1061',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1196','North American Datum of 1983 (CSRS) version 5',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1061',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1197','North American Datum of 1983 (CSRS) version 6',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1061',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1198','North American Datum of 1983 (CSRS) version 7',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1061',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1201','System of the Unified Trigonometrical Cadastral Network [JTSK03]',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1211',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1204','European Terrestrial Reference Frame 2005',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1298',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1206','European Terrestrial Reference Frame 2014',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1298',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1207','Macao 1920',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1147',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1208','Macao Geodetic Datum 2008',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1147',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1209','Hong Kong Geodetic',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1118',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1211','NAD83 (Federal Base Network)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4515',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1212','NAD83 (High Accuracy Reference Network - Corrected)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','3634',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1214','Serbian Spatial Reference System 2000',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','3534',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','1218','MOMRA Terrestrial Reference Frame 2000',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1206',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6001','Not specified (based on Airy 1830 ellipsoid)',NULL,NULL,'EPSG','7001','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6002','Not specified (based on Airy Modified 1849 ellipsoid)',NULL,NULL,'EPSG','7002','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6003','Not specified (based on Australian National Spheroid)',NULL,NULL,'EPSG','7003','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6004','Not specified (based on Bessel 1841 ellipsoid)',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6005','Not specified (based on Bessel Modified ellipsoid)',NULL,NULL,'EPSG','7005','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6006','Not specified (based on Bessel Namibia ellipsoid)',NULL,NULL,'EPSG','7046','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6007','Not specified (based on Clarke 1858 ellipsoid)',NULL,NULL,'EPSG','7007','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6008','Not specified (based on Clarke 1866 ellipsoid)',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6009','Not specified (based on Clarke 1866 Michigan ellipsoid)',NULL,NULL,'EPSG','7009','EPSG','8901','EPSG','1263',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6010','Not specified (based on Clarke 1880 (Benoit) ellipsoid)',NULL,NULL,'EPSG','7010','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6011','Not specified (based on Clarke 1880 (IGN) ellipsoid)',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6012','Not specified (based on Clarke 1880 (RGS) ellipsoid)',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6013','Not specified (based on Clarke 1880 (Arc) ellipsoid)',NULL,NULL,'EPSG','7013','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6014','Not specified (based on Clarke 1880 (SGA 1922) ellipsoid)',NULL,NULL,'EPSG','7014','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6015','Not specified (based on Everest 1830 (1937 Adjustment) ellipsoid)',NULL,NULL,'EPSG','7015','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6016','Not specified (based on Everest 1830 (1967 Definition) ellipsoid)',NULL,NULL,'EPSG','7016','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6018','Not specified (based on Everest 1830 Modified ellipsoid)',NULL,NULL,'EPSG','7018','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6019','Not specified (based on GRS 1980 ellipsoid)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6020','Not specified (based on Helmert 1906 ellipsoid)',NULL,NULL,'EPSG','7020','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6021','Not specified (based on Indonesian National Spheroid)',NULL,NULL,'EPSG','7021','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6022','Not specified (based on International 1924 ellipsoid)',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6024','Not specified (based on Krassowsky 1940 ellipsoid)',NULL,NULL,'EPSG','7024','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6025','Not specified (based on NWL 9D ellipsoid)',NULL,NULL,'EPSG','7025','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6027','Not specified (based on Plessis 1817 ellipsoid)',NULL,NULL,'EPSG','7027','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6028','Not specified (based on Struve 1860 ellipsoid)',NULL,NULL,'EPSG','7028','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6029','Not specified (based on War Office ellipsoid)',NULL,NULL,'EPSG','7029','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6030','Not specified (based on WGS 84 ellipsoid)',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6031','Not specified (based on GEM 10C ellipsoid)',NULL,NULL,'EPSG','7031','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6032','Not specified (based on OSU86F ellipsoid)',NULL,NULL,'EPSG','7032','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6033','Not specified (based on OSU91A ellipsoid)',NULL,NULL,'EPSG','7033','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6034','Not specified (based on Clarke 1880 ellipsoid)',NULL,NULL,'EPSG','7034','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6035','Not specified (based on Authalic Sphere)',NULL,NULL,'EPSG','7035','EPSG','8901','EPSG','1263',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6036','Not specified (based on GRS 1967 ellipsoid)',NULL,NULL,'EPSG','7036','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6041','Not specified (based on Average Terrestrial System 1977 ellipsoid)',NULL,NULL,'EPSG','7041','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6042','Not specified (based on Everest (1830 Definition) ellipsoid)',NULL,NULL,'EPSG','7042','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6043','Not specified (based on WGS 72 ellipsoid)',NULL,NULL,'EPSG','7043','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6044','Not specified (based on Everest 1830 (1962 Definition) ellipsoid)',NULL,NULL,'EPSG','7044','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6045','Not specified (based on Everest 1830 (1975 Definition) ellipsoid)',NULL,NULL,'EPSG','7045','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6047','Not specified (based on GRS 1980 Authalic Sphere)',NULL,NULL,'EPSG','7048','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6052','Not specified (based on Clarke 1866 Authalic Sphere)',NULL,NULL,'EPSG','7052','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6053','Not specified (based on International 1924 Authalic Sphere)',NULL,NULL,'EPSG','7057','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6054','Not specified (based on Hughes 1980 ellipsoid)',NULL,NULL,'EPSG','7058','EPSG','8901','EPSG','1263',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6055','Popular Visualisation Datum',NULL,NULL,'EPSG','7059','EPSG','8901','EPSG','1262',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6120','Greek',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','3254',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6121','Greek Geodetic Reference System 1987',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','3254',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6122','Average Terrestrial System 1977',NULL,NULL,'EPSG','7041','EPSG','8901','EPSG','1283',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6123','Kartastokoordinaattijarjestelma (1966)',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3333',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6124','Rikets koordinatsystem 1990',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1225',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6125','Samboja',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1328',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6126','Lithuania 1994 (ETRS89)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1145',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6127','Tete',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','3281',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6128','Madzansua',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','1315',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6129','Observatario',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','1329',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6130','Moznet (ITRF94)',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1167',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6131','Indian 1960',NULL,NULL,'EPSG','7015','EPSG','8901','EPSG','4007',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6132','Final Datum 1958',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1300',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6133','Estonia 1992',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','3246',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6134','PDO Survey Datum 1993',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3288',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6135','Old Hawaiian',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','1334',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6136','St. Lawrence Island',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','1332',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6137','St. Paul Island',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','1333',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6138','St. George Island',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','1331',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6139','Puerto Rico',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','1335',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6140','NAD83 Canadian Spatial Reference System',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1061',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6141','Israel 1993',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','2603',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6142','Locodjo 1965',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1075',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6143','Abidjan 1987',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1075',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6144','Kalianpur 1937',NULL,NULL,'EPSG','7015','EPSG','8901','EPSG','1308',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6145','Kalianpur 1962',NULL,NULL,'EPSG','7044','EPSG','8901','EPSG','1184',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6146','Kalianpur 1975',NULL,NULL,'EPSG','7045','EPSG','8901','EPSG','3341',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6147','Hanoi 1972',NULL,NULL,'EPSG','7024','EPSG','8901','EPSG','3328',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6148','Hartebeesthoek94',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1215',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6149','CH1903',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1286',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6150','CH1903+',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1286',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6151','Swiss Terrestrial Reference Frame 1995',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1286',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6152','NAD83 (High Accuracy Reference Network)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1337',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6153','Rassadiran',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1338',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6154','European Datum 1950(1977)',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1123',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6155','Dabola 1981',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','3257',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6156','System of the Unified Trigonometrical Cadastral Network',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1306',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6157','Mount Dillon',NULL,NULL,'EPSG','7007','EPSG','8901','EPSG','1322',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6158','Naparima 1955',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3143',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6159','European Libyan Datum 1979',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1143',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6160','Chos Malal 1914',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1292',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6161','Pampa del Castillo',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1265',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6162','Korean Datum 1985',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','3266',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6163','Yemen National Geodetic Network 1996',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1257',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6164','South Yemen',NULL,NULL,'EPSG','7024','EPSG','8901','EPSG','1340',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6165','Bissau',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3258',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6166','Korean Datum 1995',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','3266',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6167','New Zealand Geodetic Datum 2000',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1175',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6168','Accra',NULL,NULL,'EPSG','7029','EPSG','8901','EPSG','1104',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6169','American Samoa 1962',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','3109',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6170','Sistema de Referencia Geocentrico para America del Sur 1995',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','3448',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6171','Reseau Geodesique Francais 1993',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1096',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6172','Posiciones Geodesicas Argentinas',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1033',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6173','IRENET95',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1305',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6174','Sierra Leone Colony 1924',NULL,NULL,'EPSG','7029','EPSG','8901','EPSG','1342',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6175','Sierra Leone 1968',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3306',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6176','Australian Antarctic Datum 1998',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1278',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6178','Pulkovo 1942(83)',NULL,NULL,'EPSG','7024','EPSG','8901','EPSG','3900',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6179','Pulkovo 1942(58)',NULL,NULL,'EPSG','7024','EPSG','8901','EPSG','3574',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6180','Estonia 1997',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1090',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6181','Luxembourg 1930',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1146',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6182','Azores Occidental Islands 1939',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1344',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6183','Azores Central Islands 1948',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1301',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6184','Azores Oriental Islands 1940',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1345',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6185','Madeira 1936',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1314',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6188','OSNI 1952',NULL,NULL,'EPSG','7001','EPSG','8901','EPSG','2530',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6189','Red Geodesica Venezolana',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1251',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6190','Posiciones Geodesicas Argentinas 1998',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1033',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6191','Albanian 1987',NULL,NULL,'EPSG','7024','EPSG','8901','EPSG','3212',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6192','Douala 1948',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2555',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6193','Manoca 1962',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','2555',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6194','Qornoq 1927',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3362',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6195','Scoresbysund 1952',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2570',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6196','Ammassalik 1958',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2571',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6197','Garoua',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','2590',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6198','Kousseri',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','2591',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6199','Egypt 1930',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3242',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6200','Pulkovo 1995',NULL,NULL,'EPSG','7024','EPSG','8901','EPSG','1198',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6201','Adindan',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1271',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6202','Australian Geodetic Datum 1966',NULL,NULL,'EPSG','7003','EPSG','8901','EPSG','1279',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6203','Australian Geodetic Datum 1984',NULL,NULL,'EPSG','7003','EPSG','8901','EPSG','2576',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6204','Ain el Abd 1970',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1272',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6205','Afgooye',NULL,NULL,'EPSG','7024','EPSG','8901','EPSG','3308',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6206','Agadez',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','1177',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6207','Lisbon 1937',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1294',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6208','Aratu',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1274',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6209','Arc 1950',NULL,NULL,'EPSG','7013','EPSG','8901','EPSG','1276',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6210','Arc 1960',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1277',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6211','Batavia',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','3666',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6212','Barbados 1938',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3218',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6213','Beduaram',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','2771',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6214','Beijing 1954',NULL,NULL,'EPSG','7024','EPSG','8901','EPSG','1067',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6215','Reseau National Belge 1950',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1347',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6216','Bermuda 1957',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','3221',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6218','Bogota 1975',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3686',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6219','Bukit Rimpah',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1287',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6220','Camacupa',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1288',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6221','Campo Inchauspe',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3843',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6222','Cape',NULL,NULL,'EPSG','7013','EPSG','8901','EPSG','1290',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6223','Carthage',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','1236',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6224','Chua',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3356',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6225','Corrego Alegre 1970-72',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1293',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6226','Cote d''Ivoire',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','1075',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6227','Deir ez Zor',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','1623',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6228','Douala',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','1060',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6229','Egypt 1907',NULL,NULL,'EPSG','7020','EPSG','8901','EPSG','1086',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6230','European Datum 1950',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1296',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6231','European Datum 1987',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1297',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6232','Fahud',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','4009',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6233','Gandajika 1970',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1152',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6234','Garoua',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','1060',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6235','Guyane Francaise',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1097',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6236','Hu Tzu Shan 1950',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3315',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6237','Hungarian Datum 1972',NULL,NULL,'EPSG','7036','EPSG','8901','EPSG','1119',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6238','Indonesian Datum 1974',NULL,NULL,'EPSG','7021','EPSG','8901','EPSG','4020',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6239','Indian 1954',NULL,NULL,'EPSG','7015','EPSG','8901','EPSG','1304',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6240','Indian 1975',NULL,NULL,'EPSG','7015','EPSG','8901','EPSG','3741',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6241','Jamaica 1875',NULL,NULL,'EPSG','7034','EPSG','8901','EPSG','3342',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6242','Jamaica 1969',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','3342',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6243','Kalianpur 1880',NULL,NULL,'EPSG','7042','EPSG','8901','EPSG','1307',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6244','Kandawala',NULL,NULL,'EPSG','7015','EPSG','8901','EPSG','3310',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6245','Kertau 1968',NULL,NULL,'EPSG','7018','EPSG','8901','EPSG','4223',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6246','Kuwait Oil Company',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3267',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6247','La Canoa',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3327',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6248','Provisional South American Datum 1956',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1348',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6249','Lake',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1312',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6250','Leigon',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1104',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6251','Liberia 1964',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3270',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6252','Lome',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','1232',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6253','Luzon 1911',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','3969',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6254','Hito XVIII 1963',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1303',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6255','Herat North',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1024',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6256','Mahe 1971',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','2369',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6257','Makassar',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1316',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6258','European Terrestrial Reference System 1989',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1298',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6259','Malongo 1987',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3180',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6260','Manoca',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1060',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6261','Merchich',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','3280',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6262','Massawa',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1089',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6263','Minna',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1178',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6264','Mhast',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1318',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6265','Monte Mario',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3343',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6266','M''poraloko',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','1100',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6267','North American Datum 1927',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','1349',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6268','NAD27 Michigan',NULL,NULL,'EPSG','7009','EPSG','8901','EPSG','1391',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6269','North American Datum 1983',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1350',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6270','Nahrwan 1967',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1351',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6271','Naparima 1972',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1322',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6272','New Zealand Geodetic Datum 1949',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3285',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6273','NGO 1948',NULL,NULL,'EPSG','7005','EPSG','8901','EPSG','1352',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6274','Datum 73',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1294',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6275','Nouvelle Triangulation Francaise',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','3694',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6276','NSWC 9Z-2',NULL,NULL,'EPSG','7025','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6277','OSGB 1936',NULL,NULL,'EPSG','7001','EPSG','8901','EPSG','4390',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6278','OSGB 1970 (SN)',NULL,NULL,'EPSG','7001','EPSG','8901','EPSG','1264',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6279','OS (SN) 1980',NULL,NULL,'EPSG','7001','EPSG','8901','EPSG','1354',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6280','Padang 1884',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1355',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6281','Palestine 1923',NULL,NULL,'EPSG','7010','EPSG','8901','EPSG','1356',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6282','Congo 1960 Pointe Noire',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','1072',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6283','Geocentric Datum of Australia 1994',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','4177',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6284','Pulkovo 1942',NULL,NULL,'EPSG','7024','EPSG','8901','EPSG','2423',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6285','Qatar 1974',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1195',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6286','Qatar 1948',NULL,NULL,'EPSG','7020','EPSG','8901','EPSG','1346',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6287','Qornoq',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1107',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6288','Loma Quintana',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1313',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6289','Amersfoort',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1275',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6291','South American Datum 1969',NULL,NULL,'EPSG','7036','EPSG','8901','EPSG','1358',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6292','Sapper Hill 1943',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3247',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6293','Schwarzeck',NULL,NULL,'EPSG','7046','EPSG','8901','EPSG','1169',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6294','Segora',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1359',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6295','Serindung',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','4005',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6296','Sudan',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','1361',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6297','Tananarive 1925',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1149',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6298','Timbalai 1948',NULL,NULL,'EPSG','7016','EPSG','8901','EPSG','1362',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6299','TM65',NULL,NULL,'EPSG','7002','EPSG','8901','EPSG','1305',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6300','Geodetic Datum of 1965',NULL,NULL,'EPSG','7002','EPSG','8901','EPSG','1305',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6301','Tokyo',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1364',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6302','Trinidad 1903',NULL,NULL,'EPSG','7007','EPSG','8901','EPSG','1339',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6303','Trucial Coast 1948',NULL,NULL,'EPSG','7020','EPSG','8901','EPSG','1363',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6304','Voirol 1875',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','1365',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6306','Bern 1938',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1286',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6307','Nord Sahara 1959',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1026',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6308','Stockholm 1938',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','3313',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6309','Yacare',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3326',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6310','Yoff',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','1207',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6311','Zanderij',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1222',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6312','Militar-Geographische Institut',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1037',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6313','Reseau National Belge 1972',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1347',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6314','Deutsches Hauptdreiecksnetz',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','2326',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6315','Conakry 1905',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','3257',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6316','Dealul Piscului 1930',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3295',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6317','Dealul Piscului 1970',NULL,NULL,'EPSG','7024','EPSG','8901','EPSG','1197',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6318','National Geodetic Network',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','3267',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6319','Kuwait Utility',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1310',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6322','World Geodetic System 1972',NULL,NULL,'EPSG','7043','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6324','WGS 72 Transit Broadcast Ephemeris',NULL,NULL,'EPSG','7043','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6326','World Geodetic System 1984',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6600','Anguilla 1957',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3214',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6601','Antigua 1943',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1273',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6602','Dominica 1945',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3239',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6603','Grenada 1953',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1551',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6604','Montserrat 1958',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3279',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6605','St. Kitts 1955',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3297',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6606','St. Lucia 1955',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3298',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6607','St. Vincent 1945',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3300',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6608','North American Datum 1927 (1976)',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','1367',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6609','North American Datum 1927 (CGQ77)',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','1368',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6610','Xian 1980',NULL,NULL,'EPSG','7049','EPSG','8901','EPSG','3228',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6611','Hong Kong 1980',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1118',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6612','Japanese Geodetic Datum 2000',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1129',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6613','Gunung Segara',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1360',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6614','Qatar National Datum 1995',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1346',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6615','Porto Santo 1936',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1314',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6616','Selvagem Grande',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2779',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6618','South American Datum 1969',NULL,NULL,'EPSG','7050','EPSG','8901','EPSG','1358',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6619','SWEREF99',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1225',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6620','Point 58',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','2790',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6621','Fort Marigot',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2828',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6622','Guadeloupe 1948',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2829',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6623','Centre Spatial Guyanais 1967',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3105',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6624','Reseau Geodesique Francais Guyane 1995',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1097',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6625','Martinique 1938',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3276',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6626','Reunion 1947',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3337',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6627','Reseau Geodesique de la Reunion 1992',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','3902',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6628','Tahiti 52',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2811',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6629','Tahaa 54',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2812',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6630','IGN72 Nuku Hiva',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3129',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6631','K0 1949',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2816',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6632','Combani 1950',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3340',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6633','IGN56 Lifou',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2814',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6634','IGN72 Grande Terre',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2822',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6635','ST87 Ouvea',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2813',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6636','Petrels 1972',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2817',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6637','Pointe Geologie Perroud 1950',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2818',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6638','Saint Pierre et Miquelon 1950',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','3299',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6639','MOP78',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2815',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6640','Reseau de Reference des Antilles Francaises 1991',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','2824',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6641','IGN53 Mare',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2819',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6642','ST84 Ile des Pins',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2820',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6643','ST71 Belep',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2821',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6644','NEA74 Noumea',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2823',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6645','Reseau Geodesique Nouvelle Caledonie 1991',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1174',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6646','Grand Comoros',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2807',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6647','International Terrestrial Reference Frame 1988',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6648','International Terrestrial Reference Frame 1989',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6649','International Terrestrial Reference Frame 1990',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6650','International Terrestrial Reference Frame 1991',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6651','International Terrestrial Reference Frame 1992',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6652','International Terrestrial Reference Frame 1993',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6653','International Terrestrial Reference Frame 1994',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6654','International Terrestrial Reference Frame 1996',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6655','International Terrestrial Reference Frame 1997',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6656','International Terrestrial Reference Frame 2000',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6657','Reykjavik 1900',NULL,NULL,'EPSG','7051','EPSG','8901','EPSG','3262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6658','Hjorsey 1955',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6659','Islands Net 1993',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1120',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6660','Helle 1954',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2869',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6661','Latvia 1992',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1139',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6663','Porto Santo 1995',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1314',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6664','Azores Oriental Islands 1995',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1345',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6665','Azores Central Islands 1995',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1301',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6666','Lisbon 1890',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','1294',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6667','Iraq-Kuwait Boundary Datum 1992',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','2876',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6668','European Datum 1979',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1297',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6670','Istituto Geografico Militaire 1995',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','3343',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6671','Voirol 1879',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','1365',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6672','Chatham Islands Datum 1971',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2889',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6673','Chatham Islands Datum 1979',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2889',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6674','Sistema de Referencia Geocentrico para las AmericaS 2000',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','3418',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6675','Guam 1963',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','4525',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6676','Vientiane 1982',NULL,NULL,'EPSG','7024','EPSG','8901','EPSG','1138',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6677','Lao 1993',NULL,NULL,'EPSG','7024','EPSG','8901','EPSG','1138',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6678','Lao National Datum 1997',NULL,NULL,'EPSG','7024','EPSG','8901','EPSG','1138',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6679','Jouik 1961',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','2967',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6680','Nouakchott 1965',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','2968',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6681','Mauritania 1999',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1157',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6682','Gulshan 303',NULL,NULL,'EPSG','7015','EPSG','8901','EPSG','1041',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6683','Philippine Reference System 1992',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','1190',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6684','Gan 1970',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3274',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6685','Gandajika',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1259',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6686','Marco Geocentrico Nacional de Referencia',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1070',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6687','Reseau Geodesique de la Polynesie Francaise',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1098',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6688','Fatu Iva 72',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3133',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6689','IGN63 Hiva Oa',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3130',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6690','Tahiti 79',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3124',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6691','Moorea 87',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3125',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6692','Maupiti 83',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3126',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6693','Nakhl-e Ghanem',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','2362',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6694','Posiciones Geodesicas Argentinas 1994',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1033',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6695','Katanga 1955',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','3147',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6696','Kasai 1953',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3148',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6697','IGC 1962 Arc of the 6th Parallel South',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3149',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6698','IGN 1962 Kerguelen',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','2816',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6699','Le Pouce 1934',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3209',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6700','IGN Astro 1960',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3277',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6701','Institut Geographique du Congo Belge 1955',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3171',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6702','Mauritania 1999',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1157',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6703','Missao Hidrografico Angola y Sao Tome 1951',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1318',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6704','Mhast (onshore)',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3179',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6705','Mhast (offshore)',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3180',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6706','Egypt Gulf of Suez S-650 TL',NULL,NULL,'EPSG','7020','EPSG','8901','EPSG','2341',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6707','Tern Island 1961',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3181',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6708','Cocos Islands 1965',NULL,NULL,'EPSG','7003','EPSG','8901','EPSG','1069',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6709','Iwo Jima 1945',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3200',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6710','Astro DOS 71',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3183',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6711','Marcus Island 1952',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1872',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6712','Ascension Island 1958',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3182',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6713','Ayabelle Lighthouse',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','1081',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6714','Bellevue',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3193',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6715','Camp Area Astro',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3205',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6716','Phoenix Islands 1966',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3196',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6717','Cape Canaveral',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','3206',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6718','Solomon 1968',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1213',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6719','Easter Island 1967',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3188',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6720','Fiji Geodetic Datum 1986',NULL,NULL,'EPSG','7043','EPSG','8901','EPSG','1094',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6721','Fiji 1956',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3398',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6722','South Georgia 1968',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3529',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6723','Grand Cayman Geodetic Datum 1959',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','3185',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6724','Diego Garcia 1969',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3189',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6725','Johnston Island 1961',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3201',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6726','Sister Islands Geodetic Datum 1961',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','3186',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6727','Midway 1961',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3202',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6728','Pico de las Nieves 1984',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3873',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6729','Pitcairn 1967',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3208',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6730','Santo 1965',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3194',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6731','Viti Levu 1916',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3195',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6732','Marshall Islands 1960',NULL,NULL,'EPSG','7053','EPSG','8901','EPSG','3191',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6733','Wake Island 1952',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3190',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6734','Tristan 1968',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3184',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6735','Kusaie 1951',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3192',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6736','Deception Island',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3204',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6737','Geocentric datum of Korea',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1135',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6738','Hong Kong 1963',NULL,NULL,'EPSG','7007','EPSG','8901','EPSG','1118',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6739','Hong Kong 1963(67)',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1118',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6740','Parametry Zemli 1990',NULL,NULL,'EPSG','7054','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6741','Faroe Datum 1954',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3248',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6742','Geodetic Datum of Malaysia 2000',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1151',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6743','Karbala 1979',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','3625',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6744','Nahrwan 1934',NULL,NULL,'EPSG','7012','EPSG','8901','EPSG','4238',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6745','Rauenberg Datum/83',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','2545',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6746','Potsdam Datum/83',NULL,NULL,'EPSG','7004','EPSG','8901','EPSG','2544',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6747','Greenland 1996',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1107',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6748','Vanua Levu 1915',NULL,NULL,'EPSG','7055','EPSG','8901','EPSG','3401',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6749','Reseau Geodesique de Nouvelle Caledonie 91-93',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1174',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6750','ST87 Ouvea',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','2813',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6751','Kertau (RSO)',NULL,NULL,'EPSG','7056','EPSG','8901','EPSG','1309',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6752','Viti Levu 1912',NULL,NULL,'EPSG','7055','EPSG','8901','EPSG','3195',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6753','fk89',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','3248',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6754','Libyan Geodetic Datum 2006',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1143',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6755','Datum Geodesi Nasional 1995',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1122',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6756','Vietnam 2000',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','3328',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6757','SVY21',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1210',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6758','Jamaica 2001',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1128',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6759','NAD83 (National Spatial Reference System 2007)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1511',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6760','World Geodetic System 1966',NULL,NULL,'EPSG','7025','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6761','Croatian Terrestrial Reference System',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1076',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6762','Bermuda 2000',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1047',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6763','Pitcairn 2006',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','3208',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6764','Ross Sea Region Geodetic Datum 2000',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','3558',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6765','Slovenia Geodetic Datum 1996',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1212',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6801','CH1903 (Bern)',NULL,NULL,'EPSG','7004','EPSG','8907','EPSG','1286',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6802','Bogota 1975 (Bogota)',NULL,NULL,'EPSG','7022','EPSG','8904','EPSG','3229',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6803','Lisbon 1937 (Lisbon)',NULL,NULL,'EPSG','7022','EPSG','8902','EPSG','1294',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6804','Makassar (Jakarta)',NULL,NULL,'EPSG','7004','EPSG','8908','EPSG','1316',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6805','Militar-Geographische Institut (Ferro)',NULL,NULL,'EPSG','7004','EPSG','8909','EPSG','1321',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6806','Monte Mario (Rome)',NULL,NULL,'EPSG','7022','EPSG','8906','EPSG','3343',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6807','Nouvelle Triangulation Francaise (Paris)',NULL,NULL,'EPSG','7011','EPSG','8903','EPSG','3694',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6808','Padang 1884 (Jakarta)',NULL,NULL,'EPSG','7004','EPSG','8908','EPSG','1355',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6809','Reseau National Belge 1950 (Brussels)',NULL,NULL,'EPSG','7022','EPSG','8910','EPSG','1347',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6810','Tananarive 1925 (Paris)',NULL,NULL,'EPSG','7022','EPSG','8903','EPSG','3273',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6811','Voirol 1875 (Paris)',NULL,NULL,'EPSG','7011','EPSG','8903','EPSG','1365',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6813','Batavia (Jakarta)',NULL,NULL,'EPSG','7004','EPSG','8908','EPSG','1285',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6814','Stockholm 1938 (Stockholm)',NULL,NULL,'EPSG','7004','EPSG','8911','EPSG','3313',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6815','Greek (Athens)',NULL,NULL,'EPSG','7004','EPSG','8912','EPSG','3254',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6816','Carthage (Paris)',NULL,NULL,'EPSG','7011','EPSG','8903','EPSG','1618',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6817','NGO 1948 (Oslo)',NULL,NULL,'EPSG','7005','EPSG','8913','EPSG','1352',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6818','System of the Unified Trigonometrical Cadastral Network (Ferro)',NULL,NULL,'EPSG','7004','EPSG','8909','EPSG','1306',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6819','Nord Sahara 1959 (Paris)',NULL,NULL,'EPSG','7012','EPSG','8903','EPSG','1366',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6820','Gunung Segara (Jakarta)',NULL,NULL,'EPSG','7004','EPSG','8908','EPSG','1360',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6821','Voirol 1879 (Paris)',NULL,NULL,'EPSG','7011','EPSG','8903','EPSG','1365',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6896','International Terrestrial Reference Frame 2005',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6901','Ancienne Triangulation Francaise (Paris)',NULL,NULL,'EPSG','7027','EPSG','8914','EPSG','1326',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6902','Nord de Guerre (Paris)',NULL,NULL,'EPSG','7027','EPSG','8903','EPSG','1369',1); +INSERT INTO "geodetic_datum" VALUES('EPSG','6903','Madrid 1870 (Madrid)',NULL,NULL,'EPSG','7028','EPSG','8905','EPSG','2366',0); +INSERT INTO "geodetic_datum" VALUES('EPSG','6904','Lisbon 1890 (Lisbon)',NULL,NULL,'EPSG','7004','EPSG','8902','EPSG','1294',0); diff --git a/data/sql/grid_alternatives.sql b/data/sql/grid_alternatives.sql new file mode 100644 index 00000000..b0a050ed --- /dev/null +++ b/data/sql/grid_alternatives.sql @@ -0,0 +1,242 @@ +-- This file is hand generated. +-- +-- NOTE: see also grid_alternatives_generated.sql for automatically generated +-- entries. +-- + +------------------------------------------------------ +-- grid_packages +------------------------------------------------------ + +INSERT INTO grid_packages VALUES ('proj-datumgrid', + 'Package with grids of general interest', + 'https://download.osgeo.org/proj/proj-datumgrid-1.8.zip', + 1, + 1); + +INSERT INTO grid_packages VALUES ('proj-datumgrid-north-america', + 'Package with grids of interest for North-America', + 'https://download.osgeo.org/proj/proj-datumgrid-north-america-1.1.zip', + 1, + 1); + +INSERT INTO grid_packages VALUES ('proj-datumgrid-europe', + 'Package with grids of interest for Europe', + 'https://download.osgeo.org/proj/proj-datumgrid-europe-1.1.zip', + 1, + 1); + + -- not released yet at the time of writing +INSERT INTO grid_packages VALUES ('proj-datumgrid-world', + 'Package with grids of global extent (too large to be included in proj-datumgrid)', + 'https://download.osgeo.org/proj/proj-datumgrid-world-1.0.zip', + 1, + 1); + +------------------------------------------------------ +-- grid_alternatives +------------------------------------------------------ + +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('null', + 'null', + 'CTable2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); + +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('rgf93_ntf.gsb', + 'ntf_r93.gsb', -- the PROJ grid is the reverse way of the EPSG one + 'NTv2', + 'hgridshift', + 1, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); + +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('NTv1_0.gsb', + 'ntv1_can.dat', + 'NTv1', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); + +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('NTv2_0.gsb', + 'ntv2_0.gsb', -- just a case change + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); + +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('BETA2007.gsb', + 'BETA2007.gsb', -- no change. Just document the package + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); + +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('nzgd2kgrid0005.gsb', + 'nzgd2kgrid0005.gsb', -- no change. Just document the package + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); + +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('OSTN15_NTv2_OSGBtoETRS.gsb', + 'OSTN15_NTv2_OSGBtoETRS.gsb', -- no change. Just document the package + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-europe', + NULL, NULL, NULL, NULL); + +-- EGM models + +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('WW15MGH.GRD', + 'egm96_15.gtx', + 'GTX', + 'vgridshift', + 1, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); + +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('Und_min2.5x2.5_egm2008_isw=82_WGS84_TideFree.gz', + 'egm08_25.gtx', + 'GTX', + 'vgridshift', + 1, + 'proj-datumgrid-world', + NULL, NULL, NULL, NULL); + +-- Greenland height models + +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('gr2000g.gri', + 'gvr2000.gtx', + 'GTX', + 'vgridshift', + 1, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); + +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('ggeoid16.gri', + 'gvr2016.gtx', + 'GTX', + 'vgridshift', + 1, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); + +-- Denmark height models + +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('dvr90.gtx', + 'dvr90.gtx', -- no change. Just document the package + 'GTX', + 'vgridshift', + 0, -- do not reverse here as grid_transformation_custom does reference from VerticalCRS height to Geographic height + 'proj-datumgrid-europe', + NULL, NULL, NULL, NULL); + + +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('dnn.gtx', + 'dnn.gtx', -- no change. Just document the package + 'GTX', + 'vgridshift', + 0, -- do not reverse here as grid_transformation_custom does reference from VerticalCRS height to Geographic height + 'proj-datumgrid-europe', + NULL, NULL, NULL, NULL); + + diff --git a/data/sql/grid_alternatives_generated.sql b/data/sql/grid_alternatives_generated.sql new file mode 100644 index 00000000..1c2e6ae8 --- /dev/null +++ b/data/sql/grid_alternatives_generated.sql @@ -0,0 +1,790 @@ +--- This file has been generated by scripts/build_grid_alternatives_generated.py. DO NOT EDIT ! + +-- NADCON (NAD27 -> NAD83) entries + +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('conus.las', + 'conus', + 'CTable2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('alaska.las', + 'alaska', + 'CTable2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('hawaii.las', + 'hawaii', + 'CTable2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('prvi.las', + 'prvi', + 'CTable2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('stgeorge.las', + 'stgeorge', + 'CTable2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('stlrnc.las', + 'stlrnc', + 'CTable2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('stpaul.las', + 'stpaul', + 'CTable2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); +-- NAD83 -> NAD83(HPGN) entries + +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('alhpgn.las', + 'alhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('arhpgn.las', + 'arhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('azhpgn.las', + 'azhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('cnhpgn.las', + 'cnhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('cohpgn.las', + 'cohpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('cshpgn.las', + 'cshpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('emhpgn.las', + 'emhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('eshpgn.las', + 'eshpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('ethpgn.las', + 'ethpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('flhpgn.las', + 'FL', + 'CTable2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('gahpgn.las', + 'gahpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('guhpgn.las', + 'guhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('hihpgn.las', + 'hihpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('iahpgn.las', + 'iahpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('ilhpgn.las', + 'ilhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('inhpgn.las', + 'inhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('kshpgn.las', + 'kshpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('kyhpgn.las', + 'kyhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('lahpgn.las', + 'lahpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('mdhpgn.las', + 'MD', + 'CTable2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('mehpgn.las', + 'mehpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('mihpgn.las', + 'mihpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('mnhpgn.las', + 'mnhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('mohpgn.las', + 'mohpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('mshpgn.las', + 'mshpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('nbhpgn.las', + 'nbhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('nchpgn.las', + 'nchpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('ndhpgn.las', + 'ndhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('nehpgn.las', + 'nehpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('njhpgn.las', + 'njhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('nmhpgn.las', + 'nmhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('nvhpgn.las', + 'nvhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('nyhpgn.las', + 'nyhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('ohhpgn.las', + 'ohhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('okhpgn.las', + 'okhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('pahpgn.las', + 'pahpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('pvhpgn.las', + 'pvhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('schpgn.las', + 'schpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('sdhpgn.las', + 'sdhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('tnhpgn.las', + 'TN', + 'CTable2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('uthpgn.las', + 'uthpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('vahpgn.las', + 'vahpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('wihpgn.las', + 'WI', + 'CTable2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('wmhpgn.las', + 'wmhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('wohpgn.las', + 'WO', + 'CTable2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('wshpgn.las', + 'wshpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('wthpgn.las', + 'wthpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('wvhpgn.las', + 'wvhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('wyhpgn.las', + 'wyhpgn.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL); diff --git a/data/sql/grid_transformation.sql b/data/sql/grid_transformation.sql new file mode 100644 index 00000000..ffecd06d --- /dev/null +++ b/data/sql/grid_transformation.sql @@ -0,0 +1,386 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +INSERT INTO "grid_transformation" VALUES('EPSG','1068','Guam 1963 to NAD83(HARN) (1)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4675','EPSG','4152','EPSG','3255',5.0,'EPSG','8657','Latitude difference file','guhpgn.las','EPSG','8658','Longitude difference file','guhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1069','Guam 1963 to WGS 84 (2)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4675','EPSG','4326','EPSG','3255',5.0,'EPSG','8657','Latitude difference file','guhpgn.las','EPSG','8658','Longitude difference file','guhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1241','NAD27 to NAD83 (1)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4267','EPSG','4269','EPSG','2374',0.15,'EPSG','8657','Latitude difference file','conus.las','EPSG','8658','Longitude difference file','conus.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1243','NAD27 to NAD83 (2)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4267','EPSG','4269','EPSG','2373',0.5,'EPSG','8657','Latitude difference file','alaska.las','EPSG','8658','Longitude difference file','alaska.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1295','RGNC91-93 to NEA74 Noumea (4)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4749','EPSG','4644','EPSG','2823',0.05,'EPSG','8656','Latitude and longitude difference file','RGNC1991_NEA74Noumea.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1312','NAD27 to NAD83 (3)',NULL,NULL,'EPSG','9614','NTv1','EPSG','4267','EPSG','4269','EPSG','1061',1.0,'EPSG','8656','Latitude and longitude difference file','NTv1_0.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1313','NAD27 to NAD83 (4)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4267','EPSG','4269','EPSG','4517',1.5,'EPSG','8656','Latitude and longitude difference file','NTv2_0.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1451','NAD27(CGQ77) to NAD83 (1)',NULL,NULL,'EPSG','9614','NTv1','EPSG','4609','EPSG','4269','EPSG','1368',1.0,'EPSG','8656','Latitude and longitude difference file','PQV4.DAC',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1454','Old Hawaiian to NAD83 (1)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4135','EPSG','4269','EPSG','1334',0.2,'EPSG','8657','Latitude difference file','hawaii.las','EPSG','8658','Longitude difference file','hawaii.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1455','St. Lawrence Island to NAD83 (1)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4136','EPSG','4269','EPSG','1332',0.5,'EPSG','8657','Latitude difference file','stlrnc.las','EPSG','8658','Longitude difference file','stlrnc.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1456','St. Paul Island to NAD83 (1)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4137','EPSG','4269','EPSG','1333',0.5,'EPSG','8657','Latitude difference file','stpaul.las','EPSG','8658','Longitude difference file','stpaul.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1457','St. George Island to NAD83 (1)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4138','EPSG','4269','EPSG','1331',0.5,'EPSG','8657','Latitude difference file','stgeorge.las','EPSG','8658','Longitude difference file','stgeorge.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1461','Puerto Rico to NAD83 (1)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4139','EPSG','4269','EPSG','1335',0.05,'EPSG','8657','Latitude difference file','prvi.las','EPSG','8658','Longitude difference file','prvi.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1462','NAD27 to NAD83 (5)',NULL,NULL,'EPSG','9614','NTv1','EPSG','4267','EPSG','4269','EPSG','1368',1.0,'EPSG','8656','Latitude and longitude difference file','GS2783v1.QUE',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1463','NAD27(76) to NAD83 (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4608','EPSG','4269','EPSG','1367',1.0,'EPSG','8656','Latitude and longitude difference file','May76v20.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1464','AGD66 to GDA94 (5)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4202','EPSG','4283','EPSG','2285',0.1,'EPSG','8656','Latitude and longitude difference file','vic_0799.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1472','ATS77 to NAD83(CSRS98) (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4122','EPSG','4140','EPSG','1447',NULL,'EPSG','8656','Latitude and longitude difference file','NB7783v2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','1474','NAD83 to NAD83(HARN) (1)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1372',0.05,'EPSG','8657','Latitude difference file','alhpgn.las','EPSG','8658','Longitude difference file','alhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1475','NAD83 to NAD83(HARN) (2)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1373',0.05,'EPSG','8657','Latitude difference file','azhpgn.las','EPSG','8658','Longitude difference file','azhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1476','NAD83 to NAD83(HARN) (3)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','2297',0.05,'EPSG','8657','Latitude difference file','cnhpgn.las','EPSG','8658','Longitude difference file','cnhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1477','NAD83 to NAD83(HARN) (4)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','2298',0.05,'EPSG','8657','Latitude difference file','cshpgn.las','EPSG','8658','Longitude difference file','cshpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1478','NAD83 to NAD83(HARN) (5)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1376',0.05,'EPSG','8657','Latitude difference file','cohpgn.las','EPSG','8658','Longitude difference file','cohpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1479','NAD83 to NAD83(HARN) (6)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1380',0.05,'EPSG','8657','Latitude difference file','gahpgn.las','EPSG','8658','Longitude difference file','gahpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1480','NAD83 to NAD83(HARN) (7)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1379',0.05,'EPSG','8657','Latitude difference file','flhpgn.las','EPSG','8658','Longitude difference file','flhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1481','NAD83 to NAD83(HARN) (8)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','2382',0.05,'EPSG','8657','Latitude difference file','emhpgn.las','EPSG','8658','Longitude difference file','emhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1482','NAD83 to NAD83(HARN) (9)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','2383',0.05,'EPSG','8657','Latitude difference file','wmhpgn.las','EPSG','8658','Longitude difference file','wmhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1483','NAD83 to NAD83(HARN) (10)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1386',0.05,'EPSG','8657','Latitude difference file','kyhpgn.las','EPSG','8658','Longitude difference file','kyhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1484','NAD83 to NAD83(HARN) (11)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1387',0.05,'EPSG','8657','Latitude difference file','lahpgn.las','EPSG','8658','Longitude difference file','lahpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1485','NAD83 to NAD83(HARN) (12)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','2377',0.05,'EPSG','8657','Latitude difference file','mdhpgn.las','EPSG','8658','Longitude difference file','mdhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1486','NAD83 to NAD83(HARN) (13)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1388',0.05,'EPSG','8657','Latitude difference file','mehpgn.las','EPSG','8658','Longitude difference file','mehpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1487','NAD83 to NAD83(HARN) (14)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1391',0.05,'EPSG','8657','Latitude difference file','mihpgn.las','EPSG','8658','Longitude difference file','mihpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1488','NAD83 to NAD83(HARN) (15)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1393',0.05,'EPSG','8657','Latitude difference file','mshpgn.las','EPSG','8658','Longitude difference file','mshpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1489','NAD83 to NAD83(HARN) (16)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1396',0.05,'EPSG','8657','Latitude difference file','nbhpgn.las','EPSG','8658','Longitude difference file','nbhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1490','NAD83 to NAD83(HARN) (17)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','2378',0.05,'EPSG','8657','Latitude difference file','nehpgn.las','EPSG','8658','Longitude difference file','nehpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1491','NAD83 to NAD83(HARN) (18)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1400',0.05,'EPSG','8657','Latitude difference file','nmhpgn.las','EPSG','8658','Longitude difference file','nmhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1492','NAD83 to NAD83(HARN) (19)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1401',0.05,'EPSG','8657','Latitude difference file','nyhpgn.las','EPSG','8658','Longitude difference file','nyhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1493','NAD83 to NAD83(HARN) (20)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1403',0.05,'EPSG','8657','Latitude difference file','ndhpgn.las','EPSG','8658','Longitude difference file','ndhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1494','NAD83 to NAD83(HARN) (21)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1405',0.05,'EPSG','8657','Latitude difference file','okhpgn.las','EPSG','8658','Longitude difference file','okhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1495','NAD83 to NAD83(HARN) (22)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','3634',0.05,'EPSG','8657','Latitude difference file','pvhpgn.las','EPSG','8658','Longitude difference file','pvhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1496','NAD83 to NAD83(HARN) (23)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1410',0.05,'EPSG','8657','Latitude difference file','sdhpgn.las','EPSG','8658','Longitude difference file','sdhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1497','NAD83 to NAD83(HARN) (24)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1411',0.05,'EPSG','8657','Latitude difference file','tnhpgn.las','EPSG','8658','Longitude difference file','tnhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1498','NAD83 to NAD83(HARN) (25)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','2379',0.05,'EPSG','8657','Latitude difference file','ethpgn.las','EPSG','8658','Longitude difference file','ethpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1499','NAD83 to NAD83(HARN) (26)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','2380',0.05,'EPSG','8657','Latitude difference file','wthpgn.las','EPSG','8658','Longitude difference file','wthpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1500','NAD83 to NAD83(HARN) (27)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1415',0.05,'EPSG','8657','Latitude difference file','vahpgn.las','EPSG','8658','Longitude difference file','vahpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1501','NAD83 to NAD83(HARN) (28)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','2381',0.05,'EPSG','8657','Latitude difference file','wohpgn.las','EPSG','8658','Longitude difference file','wohpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1502','NAD83 to NAD83(HARN) (29)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1418',0.05,'EPSG','8657','Latitude difference file','wihpgn.las','EPSG','8658','Longitude difference file','wihpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1503','NAD83 to NAD83(HARN) (30)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1419',0.05,'EPSG','8657','Latitude difference file','wyhpgn.las','EPSG','8658','Longitude difference file','wyhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1506','AGD66 to GDA94 (6)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4202','EPSG','4283','EPSG','1282',0.1,'EPSG','8656','Latitude and longitude difference file','tas_1098.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1507','AGD66 to GDA94 (7)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4202','EPSG','4283','EPSG','2284',0.1,'EPSG','8656','Latitude and longitude difference file','nt_0599.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1520','NAD83 to NAD83(HARN) (31)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1334',0.05,'EPSG','8657','Latitude difference file','hihpgn.las','EPSG','8658','Longitude difference file','hihpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1521','NAD83 to NAD83(HARN) (32)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1383',0.05,'EPSG','8657','Latitude difference file','inhpgn.las','EPSG','8658','Longitude difference file','inhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1522','NAD83 to NAD83(HARN) (33)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1385',0.05,'EPSG','8657','Latitude difference file','kshpgn.las','EPSG','8658','Longitude difference file','kshpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1523','NAD83 to NAD83(HARN) (34)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1397',0.05,'EPSG','8657','Latitude difference file','nvhpgn.las','EPSG','8658','Longitude difference file','nvhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1524','NAD83 to NAD83(HARN) (35)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1404',0.05,'EPSG','8657','Latitude difference file','ohhpgn.las','EPSG','8658','Longitude difference file','ohhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1525','NAD83 to NAD83(HARN) (36)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1413',0.05,'EPSG','8657','Latitude difference file','uthpgn.las','EPSG','8658','Longitude difference file','uthpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1526','NAD83 to NAD83(HARN) (37)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1417',0.05,'EPSG','8657','Latitude difference file','wvhpgn.las','EPSG','8658','Longitude difference file','wvhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1553','NAD83 to NAD83(HARN) (38)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1382',0.05,'EPSG','8657','Latitude difference file','ilhpgn.las','EPSG','8658','Longitude difference file','ilhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1554','NAD83 to NAD83(HARN) (39)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1399',0.05,'EPSG','8657','Latitude difference file','njhpgn.las','EPSG','8658','Longitude difference file','njhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1559','AGD84 to GDA94 (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4203','EPSG','4283','EPSG','1280',0.1,'EPSG','8656','Latitude and longitude difference file','wa_0400.gsb',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','1568','NZGD49 to NZGD2000 (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4272','EPSG','4167','EPSG','3285',0.2,'EPSG','8656','Latitude and longitude difference file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1572','NAD83 to NAD83(CSRS98) (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4269','EPSG','4140','EPSG','1368',NULL,'EPSG','8656','Latitude and longitude difference file','NAD83-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','1573','NAD27 to NAD83 (6)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4267','EPSG','4269','EPSG','1368',1.5,'EPSG','8656','Latitude and longitude difference file','QUE27-83.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1574','NAD27 to NAD83(CSRS98) (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4267','EPSG','4140','EPSG','1368',NULL,'EPSG','8656','Latitude and longitude difference file','QUE27-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','1575','NAD27(CGQ77) to NAD83 (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4609','EPSG','4269','EPSG','1368',1.5,'EPSG','8656','Latitude and longitude difference file','CGQ77-83.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1576','NAD27(CGQ77) to NAD83(CSRS98) (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4609','EPSG','4140','EPSG','1368',NULL,'EPSG','8656','Latitude and longitude difference file','CGQ77-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','1578','American Samoa 1962 to NAD83(HARN) (1)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4169','EPSG','4152','EPSG','2288',5.0,'EPSG','8657','Latitude difference file','wshpgn.las','EPSG','8658','Longitude difference file','wshpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1579','American Samoa 1962 to NAD83(HARN) (2)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4169','EPSG','4152','EPSG','2289',5.0,'EPSG','8657','Latitude difference file','eshpgn.las','EPSG','8658','Longitude difference file','eshpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1593','AGD84 to GDA94 (4)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4203','EPSG','4283','EPSG','1280',0.1,'EPSG','8656','Latitude and longitude difference file','wa_0700.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1596','AGD66 to GDA94 (10)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4202','EPSG','4283','EPSG','2287',0.1,'EPSG','8656','Latitude and longitude difference file','SEAust_21_06_00.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1599','ATS77 to NAD83(CSRS98) (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4122','EPSG','4140','EPSG','1533',NULL,'EPSG','8656','Latitude and longitude difference file','PE7783V2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','1600','NAD27 to NAD83(CSRS98) (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4267','EPSG','4140','EPSG','2375',NULL,'EPSG','8656','Latitude and longitude difference file','SK27-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','1601','NAD83 to NAD83(CSRS98) (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4269','EPSG','4140','EPSG','2375',NULL,'EPSG','8656','Latitude and longitude difference file','SK83-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','1602','NAD83 to NAD83(CSRS98) (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4267','EPSG','4140','EPSG','2376',NULL,'EPSG','8656','Latitude and longitude difference file','AB_CSRS.DAC',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','1670','NZGD49 to WGS 84 (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4272','EPSG','4326','EPSG','3285',1.0,'EPSG','8656','Latitude and longitude difference file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1688','ATS77 to WGS 84 (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4122','EPSG','4326','EPSG','1447',1.0,'EPSG','8656','Latitude and longitude difference file','NB7783v2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1689','ATS77 to WGS 84 (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4122','EPSG','4326','EPSG','1533',1.0,'EPSG','8656','Latitude and longitude difference file','PE7783V2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1690','NAD27(76) to WGS 84 (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4608','EPSG','4326','EPSG','1367',1.0,'EPSG','8656','Latitude and longitude difference file','May76v20.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1691','NAD27(CGQ77) to WGS 84 (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4609','EPSG','4326','EPSG','1368',1.0,'EPSG','8656','Latitude and longitude difference file','CGQ77-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1692','NAD27 to WGS 84 (34)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4267','EPSG','4326','EPSG','1368',1.0,'EPSG','8656','Latitude and longitude difference file','QUE27-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1693','NAD27 to WGS 84 (33)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4267','EPSG','4326','EPSG','4517',1.0,'EPSG','8656','Latitude and longitude difference file','NTv2_0.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1694','American Samoa 1962 to WGS 84 (2)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4169','EPSG','4326','EPSG','2288',5.0,'EPSG','8657','Latitude difference file','wshpgn.las','EPSG','8658','Longitude difference file','wshpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1695','American Samoa 1962 to WGS 84 (3)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4169','EPSG','4326','EPSG','2289',5.0,'EPSG','8657','Latitude difference file','eshpgn.las','EPSG','8658','Longitude difference file','eshpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1696','NAD83 to WGS 84 (6)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4269','EPSG','4326','EPSG','1368',1.0,'EPSG','8656','Latitude and longitude difference file','NAD83-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1697','NAD83 to WGS 84 (7)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4269','EPSG','4326','EPSG','2375',1.0,'EPSG','8656','Latitude and longitude difference file','SK83-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1698','St. George Island to WGS 84 (1)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4138','EPSG','4326','EPSG','1331',1.5,'EPSG','8657','Latitude difference file','stgeorge.las','EPSG','8658','Longitude difference file','stgeorge.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1699','St. Lawrence Island to WGS 84 (1)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4136','EPSG','4326','EPSG','1332',1.5,'EPSG','8657','Latitude difference file','stlrnc.las','EPSG','8658','Longitude difference file','stlrnc.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1700','St. Paul Island to WGS 84 (1)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4137','EPSG','4326','EPSG','1333',1.5,'EPSG','8657','Latitude difference file','stpaul.las','EPSG','8658','Longitude difference file','stpaul.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1702','NAD83 to WGS 84 (8)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4269','EPSG','4326','EPSG','2376',1.0,'EPSG','8656','Latitude and longitude difference file','AB_CSRS.DAC',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1703','NAD27 to WGS 84 (32)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4267','EPSG','4326','EPSG','2375',1.0,'EPSG','8656','Latitude and longitude difference file','SK27-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1704','NAD83 to NAD83(HARN) (40)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1374',0.05,'EPSG','8657','Latitude difference file','arhpgn.las','EPSG','8658','Longitude difference file','arhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1705','NAD83 to NAD83(HARN) (41)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1384',0.05,'EPSG','8657','Latitude difference file','iahpgn.las','EPSG','8658','Longitude difference file','iahpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1706','NAD83 to NAD83(HARN) (42)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1392',0.05,'EPSG','8657','Latitude difference file','mnhpgn.las','EPSG','8658','Longitude difference file','mnhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1707','NAD83 to NAD83(HARN) (43)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1394',0.05,'EPSG','8657','Latitude difference file','mohpgn.las','EPSG','8658','Longitude difference file','mohpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1708','NAD83 to WGS 84 (12)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1374',1.0,'EPSG','8657','Latitude difference file','arhpgn.las','EPSG','8658','Longitude difference file','arhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1709','NAD83 to WGS 84 (13)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1384',1.0,'EPSG','8657','Latitude difference file','iahpgn.las','EPSG','8658','Longitude difference file','iahpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1710','NAD83 to WGS 84 (14)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1392',1.0,'EPSG','8657','Latitude difference file','mnhpgn.las','EPSG','8658','Longitude difference file','mnhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1711','NAD83 to WGS 84 (15)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1394',1.0,'EPSG','8657','Latitude difference file','mohpgn.las','EPSG','8658','Longitude difference file','mohpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1712','NAD83 to WGS 84 (16)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1376',1.0,'EPSG','8657','Latitude difference file','cohpgn.las','EPSG','8658','Longitude difference file','cohpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1713','NAD83 to WGS 84 (17)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1380',1.0,'EPSG','8657','Latitude difference file','gahpgn.las','EPSG','8658','Longitude difference file','gahpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1714','NAD83 to WGS 84 (18)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1379',1.0,'EPSG','8657','Latitude difference file','flhpgn.las','EPSG','8658','Longitude difference file','flhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1715','NAD83 to WGS 84 (19)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','2382',1.0,'EPSG','8657','Latitude difference file','emhpgn.las','EPSG','8658','Longitude difference file','emhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1716','NAD83 to WGS 84 (20)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','2383',1.0,'EPSG','8657','Latitude difference file','wmhpgn.las','EPSG','8658','Longitude difference file','wmhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1717','NAD83 to WGS 84 (21)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1372',1.0,'EPSG','8657','Latitude difference file','alhpgn.las','EPSG','8658','Longitude difference file','alhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1718','NAD83 to WGS 84 (22)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1386',1.0,'EPSG','8657','Latitude difference file','kyhpgn.las','EPSG','8658','Longitude difference file','kyhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1719','NAD83 to WGS 84 (23)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1387',1.0,'EPSG','8657','Latitude difference file','lahpgn.las','EPSG','8658','Longitude difference file','lahpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1720','NAD83 to WGS 84 (24)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','2377',1.0,'EPSG','8657','Latitude difference file','mdhpgn.las','EPSG','8658','Longitude difference file','mdhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1721','NAD83 to WGS 84 (25)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1388',1.0,'EPSG','8657','Latitude difference file','mehpgn.las','EPSG','8658','Longitude difference file','mehpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1722','NAD83 to WGS 84 (26)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1391',1.0,'EPSG','8657','Latitude difference file','mihpgn.las','EPSG','8658','Longitude difference file','mihpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1723','NAD83 to WGS 84 (27)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1393',1.0,'EPSG','8657','Latitude difference file','mshpgn.las','EPSG','8658','Longitude difference file','mshpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1724','NAD83 to WGS 84 (28)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1396',1.0,'EPSG','8657','Latitude difference file','nbhpgn.las','EPSG','8658','Longitude difference file','nbhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1725','NAD83 to WGS 84 (29)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','2378',1.0,'EPSG','8657','Latitude difference file','nehpgn.las','EPSG','8658','Longitude difference file','nehpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1726','NAD83 to WGS 84 (30)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1400',1.0,'EPSG','8657','Latitude difference file','nmhpgn.las','EPSG','8658','Longitude difference file','nmhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1727','NAD83 to WGS 84 (31)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1401',1.0,'EPSG','8657','Latitude difference file','nyhpgn.las','EPSG','8658','Longitude difference file','nyhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1728','NAD83 to WGS 84 (32)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1373',1.0,'EPSG','8657','Latitude difference file','azhpgn.las','EPSG','8658','Longitude difference file','azhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1729','NAD83 to WGS 84 (33)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1403',1.0,'EPSG','8657','Latitude difference file','ndhpgn.las','EPSG','8658','Longitude difference file','ndhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1730','NAD83 to WGS 84 (34)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1405',1.0,'EPSG','8657','Latitude difference file','okhpgn.las','EPSG','8658','Longitude difference file','okhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1731','NAD83 to WGS 84 (35)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','3634',1.0,'EPSG','8657','Latitude difference file','pvhpgn.las','EPSG','8658','Longitude difference file','pvhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1732','NAD83 to WGS 84 (36)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1410',1.0,'EPSG','8657','Latitude difference file','sdhpgn.las','EPSG','8658','Longitude difference file','sdhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1733','NAD83 to WGS 84 (37)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1411',1.0,'EPSG','8657','Latitude difference file','tnhpgn.las','EPSG','8658','Longitude difference file','tnhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1734','NAD83 to WGS 84 (38)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','2379',1.0,'EPSG','8657','Latitude difference file','ethpgn.las','EPSG','8658','Longitude difference file','ethpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1735','NAD83 to WGS 84 (39)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','2380',1.0,'EPSG','8657','Latitude difference file','wthpgn.las','EPSG','8658','Longitude difference file','wthpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1736','NAD83 to WGS 84 (40)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1415',1.0,'EPSG','8657','Latitude difference file','vahpgn.las','EPSG','8658','Longitude difference file','vahpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1737','NAD83 to WGS 84 (41)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','2381',1.0,'EPSG','8657','Latitude difference file','wohpgn.las','EPSG','8658','Longitude difference file','wohpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1738','NAD83 to WGS 84 (42)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1418',1.0,'EPSG','8657','Latitude difference file','wihpgn.las','EPSG','8658','Longitude difference file','wihpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1739','NAD83 to WGS 84 (43)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','2297',1.0,'EPSG','8657','Latitude difference file','cnhpgn.las','EPSG','8658','Longitude difference file','cnhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1740','NAD83 to WGS 84 (44)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1419',1.0,'EPSG','8657','Latitude difference file','wyhpgn.las','EPSG','8658','Longitude difference file','wyhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1741','NAD83 to WGS 84 (45)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1334',1.0,'EPSG','8657','Latitude difference file','hihpgn.las','EPSG','8658','Longitude difference file','hihpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1742','NAD83 to WGS 84 (46)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1383',1.0,'EPSG','8657','Latitude difference file','inhpgn.las','EPSG','8658','Longitude difference file','inhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1743','NAD83 to WGS 84 (47)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1385',1.0,'EPSG','8657','Latitude difference file','kshpgn.las','EPSG','8658','Longitude difference file','kshpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1744','NAD83 to WGS 84 (48)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1397',1.0,'EPSG','8657','Latitude difference file','nvhpgn.las','EPSG','8658','Longitude difference file','nvhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1745','NAD83 to WGS 84 (49)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1404',1.0,'EPSG','8657','Latitude difference file','ohhpgn.las','EPSG','8658','Longitude difference file','ohhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1746','NAD83 to WGS 84 (50)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1413',1.0,'EPSG','8657','Latitude difference file','uthpgn.las','EPSG','8658','Longitude difference file','uthpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1747','NAD83 to WGS 84 (51)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1417',1.0,'EPSG','8657','Latitude difference file','wvhpgn.las','EPSG','8658','Longitude difference file','wvhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1748','NAD83 to WGS 84 (52)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1382',1.0,'EPSG','8657','Latitude difference file','ilhpgn.las','EPSG','8658','Longitude difference file','ilhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1749','NAD83 to WGS 84 (53)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1399',1.0,'EPSG','8657','Latitude difference file','njhpgn.las','EPSG','8658','Longitude difference file','njhpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1750','NAD83 to WGS 84 (54)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','2298',1.0,'EPSG','8657','Latitude difference file','cshpgn.las','EPSG','8658','Longitude difference file','cshpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1752','NAD83 to NAD83(CSRS98) (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4269','EPSG','4140','EPSG','2376',NULL,'EPSG','8656','Latitude and longitude difference file','AB_CSRS.DAC',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','1803','AGD66 to GDA94 (11)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4202','EPSG','4283','EPSG','2575',0.1,'EPSG','8656','Latitude and longitude difference file','A66 National (13.09.01).gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1804','AGD84 to GDA94 (5)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4203','EPSG','4283','EPSG','2576',0.1,'EPSG','8656','Latitude and longitude difference file','National 84 (02.07.01).gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1841','ATS77 to NAD83(CSRS) (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4122','EPSG','4617','EPSG','1447',1.5,'EPSG','8656','Latitude and longitude difference file','NB7783v2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1843','NAD83 to NAD83(CSRS) (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4269','EPSG','4617','EPSG','1368',1.5,'EPSG','8656','Latitude and longitude difference file','NAD83-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1844','NAD27 to NAD83(CSRS) (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4267','EPSG','4617','EPSG','1368',1.5,'EPSG','8656','Latitude and longitude difference file','QUE27-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1845','NAD27(CGQ77) to NAD83(CSRS) (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4609','EPSG','4617','EPSG','1368',1.5,'EPSG','8656','Latitude and longitude difference file','CGQ77-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1846','ATS77 to NAD83(CSRS) (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4122','EPSG','4617','EPSG','1533',1.5,'EPSG','8656','Latitude and longitude difference file','PE7783V2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1847','NAD27 to NAD83(CSRS) (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4267','EPSG','4617','EPSG','2375',1.5,'EPSG','8656','Latitude and longitude difference file','SK27-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1848','NAD83 to NAD83(CSRS) (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4269','EPSG','4617','EPSG','2375',1.5,'EPSG','8656','Latitude and longitude difference file','SK83-98.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1849','NAD83 to NAD83(CSRS) (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4269','EPSG','4617','EPSG','2376',1.5,'EPSG','8656','Latitude and longitude difference file','AB_CSRS.DAC',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1850','ATS77 to NAD83(CSRS) (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4122','EPSG','4617','EPSG','2313',1.5,'EPSG','8656','Latitude and longitude difference file','NS778301.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','1851','ATS77 to WGS 84 (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4122','EPSG','4326','EPSG','2313',1.0,'EPSG','8656','Latitude and longitude difference file','NS778301.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','3858','WGS 84 to EGM2008 height (1)',NULL,NULL,'EPSG','1025','Geographic3D to GravityRelatedHeight (EGM2008)','EPSG','4979','EPSG','3855','EPSG','1262',1.0,'EPSG','8666','Geoid (height correction) model file','Und_min2.5x2.5_egm2008_isw=82_WGS84_TideFree.gz',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','3859','WGS 84 to EGM2008 height (2)',NULL,NULL,'EPSG','1025','Geographic3D to GravityRelatedHeight (EGM2008)','EPSG','4979','EPSG','3855','EPSG','1262',0.5,'EPSG','8666','Geoid (height correction) model file','Und_min1x1_egm2008_isw=82_WGS84_TideFree.gz',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','4459','NZGD2000 to NZVD2009 height (1)',NULL,NULL,'EPSG','1030','Geographic3D to GravityRelatedHeight (NZgeoid)','EPSG','4959','EPSG','4440','EPSG','1175',0.1,'EPSG','8666','Geoid (height correction) model file','nzgeoid09.sid',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','4561','RRAF 1991 to Martinique 1987 height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4557','EPSG','5756','EPSG','3276',998.0,'EPSG','8666','Geoid (height correction) model file','ggm00.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','4562','RRAF 1991 to Guadeloupe 1988 height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4557','EPSG','5757','EPSG','2892',0.2,'EPSG','8666','Geoid (height correction) model file','ggg00.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','4563','RRAF 1991 to IGN 1988 MG height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4557','EPSG','5617','EPSG','2894',0.2,'EPSG','8666','Geoid (height correction) model file','ggg00_mg.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','4564','RRAF 1991 to IGN 1988 SM height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4557','EPSG','5620','EPSG','2890',0.2,'EPSG','8666','Geoid (height correction) model file','ggg00_sm.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','4565','RRAF 1991 to IGN 1988 LS height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4557','EPSG','5616','EPSG','2895',0.2,'EPSG','8666','Geoid (height correction) model file','ggg00_ls.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','4566','RRAF 1991 to IGN 1992 LD height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4557','EPSG','5618','EPSG','2893',0.5,'EPSG','8666','Geoid (height correction) model file','ggg00_ld.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','4567','RRAF 1991 to IGN 1988 SB height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4557','EPSG','5619','EPSG','2891',0.2,'EPSG','8666','Geoid (height correction) model file','ggg00_sb.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5334','ETRS89 to Belfast height (1)',NULL,NULL,'EPSG','1045','Geographic3D to GravityRelatedHeight (OSGM02-Ire)','EPSG','4937','EPSG','5732','EPSG','2530',0.03,'EPSG','8666','Geoid (height correction) model file','OSGM02_NI.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5335','ETRS89 to Malin Head height (1)',NULL,NULL,'EPSG','1045','Geographic3D to GravityRelatedHeight (OSGM02-Ire)','EPSG','4937','EPSG','5731','EPSG','1305',0.04,'EPSG','8666','Geoid (height correction) model file','OSGM02_RoI.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5338','OSGB 1936 to ETRS89 (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4277','EPSG','4258','EPSG','1264',0.03,'EPSG','8656','Latitude and longitude difference file','OSTN02_NTv2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5339','OSGB 1936 to WGS 84 (7)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4277','EPSG','4326','EPSG','1264',1.0,'EPSG','8656','Latitude and longitude difference file','OSTN02_NTv2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5409','NGVD29 height to NAVD88 height (1)',NULL,NULL,'EPSG','9658','VERTCON','EPSG','5702','EPSG','5703','EPSG','2950',0.02,'EPSG','8732','Vertical offset file','vertconw.94',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','5410','NGVD29 height to NAVD88 height (2)',NULL,NULL,'EPSG','9658','VERTCON','EPSG','5702','EPSG','5703','EPSG','2949',0.02,'EPSG','8732','Vertical offset file','vertconc.94',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','5411','NGVD29 height to NAVD88 height (3)',NULL,NULL,'EPSG','9658','VERTCON','EPSG','5702','EPSG','5703','EPSG','2948',0.02,'EPSG','8732','Vertical offset file','vertcone.94',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','5502','RGAF09 to Martinique 1987 height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','5488','EPSG','5756','EPSG','3276',998.0,'EPSG','8666','Geoid (height correction) model file','gg10_mart.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5503','RGAF09 to Guadeloupe 1988 height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','5488','EPSG','5757','EPSG','2892',0.2,'EPSG','8666','Geoid (height correction) model file','gg10_gtbt.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5504','RGAF09 to IGN 1988 MG height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','5488','EPSG','5617','EPSG','2894',0.2,'EPSG','8666','Geoid (height correction) model file','gg10_mg.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5505','RGAF09 to IGN 1988 SM height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','5488','EPSG','5620','EPSG','2890',0.2,'EPSG','8666','Geoid (height correction) model file','gg10_sm.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5506','RGAF09 to IGN 1988 LS height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','5488','EPSG','5616','EPSG','2895',0.2,'EPSG','8666','Geoid (height correction) model file','gg10_ls.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5507','RGAF09 to IGN 1992 LD height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','5488','EPSG','5618','EPSG','2893',0.5,'EPSG','8666','Geoid (height correction) model file','gg10_ld.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5508','RGAF09 to IGN 1988 SB height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','5488','EPSG','5619','EPSG','2891',0.2,'EPSG','8666','Geoid (height correction) model file','gg10_sb.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5525','Corrego Alegre 1961 to SIRGAS 2000 (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','5524','EPSG','4674','EPSG','3874',2.0,'EPSG','8656','Latitude and longitude difference file','CA61_003.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5526','Corrego Alegre 1970-72 to SIRGAS 2000 (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4225','EPSG','4674','EPSG','1293',2.0,'EPSG','8656','Latitude and longitude difference file','CA7072_003.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5528','SAD69 to SIRGAS 2000 (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4618','EPSG','4674','EPSG','3887',1.0,'EPSG','8656','Latitude and longitude difference file','SAD69_003.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5529','SAD69(96) to SIRGAS 2000 (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','5527','EPSG','4674','EPSG','3887',0.5,'EPSG','8656','Latitude and longitude difference file','SAD96_003.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5540','Corrego Alegre 1961 to WGS 84 (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','5524','EPSG','4326','EPSG','3874',2.0,'EPSG','8656','Latitude and longitude difference file','CA61_003.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5541','Corrego Alegre 1970-72 to WGS 84 (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4225','EPSG','4326','EPSG','1293',2.0,'EPSG','8656','Latitude and longitude difference file','CA7072_003.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5542','SAD69 to WGS 84 (15)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4618','EPSG','4326','EPSG','3887',2.0,'EPSG','8656','Latitude and longitude difference file','SAD69_003.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5543','SAD69(96) to WGS 84 (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','5527','EPSG','4326','EPSG','3887',1.0,'EPSG','8656','Latitude and longitude difference file','SAD96_003.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5594','FEH2010 to FCSVR10 height (1)',NULL,NULL,'EPSG','1030','Geographic3D to GravityRelatedHeight (NZgeoid)','EPSG','5592','EPSG','5597','EPSG','3890',0.1,'EPSG','8666','Geoid (height correction) model file','fehmarn_geoid10.gri',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','5626','FEH2010 to FCSVR10 height (1)',NULL,NULL,'EPSG','1047','Geographic3D to GravityRelatedHeight (Gravsoft)','EPSG','5592','EPSG','5597','EPSG','3890',0.1,'EPSG','8666','Geoid (height correction) model file','fehmarn_geoid10.gri',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5656','GDA94 to AHD height (49)',NULL,NULL,'EPSG','1048','Geographic3D to GravityRelatedHeight (Ausgeoid v2)','EPSG','4939','EPSG','5711','EPSG','1281',0.03,'EPSG','8666','Geoid (height correction) model file','AUSGeoid09_GDA94_V1.01_DOV_windows.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5657','GDA94 to AHD (Tasmania) height (2)',NULL,NULL,'EPSG','1048','Geographic3D to GravityRelatedHeight (Ausgeoid v2)','EPSG','4939','EPSG','5712','EPSG','2947',0.03,'EPSG','8666','Geoid (height correction) model file','AUSGeoid09_GDA94_V1.01_DOV_windows.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5661','ED50 to ETRS89 (14)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4230','EPSG','4258','EPSG','3732',0.05,'EPSG','8656','Latitude and longitude difference file','100800401.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','5891','MGI to ETRS89 (5)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4312','EPSG','4258','EPSG','1037',0.15,'EPSG','8656','Latitude and longitude difference file','AT_GIS_GRID.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','6138','CIGD11 to GCVD54 height (ft) (1)',NULL,NULL,'EPSG','1050','Geographic3D to GravityRelatedHeight (CI)','EPSG','6134','EPSG','6130','EPSG','3185',0.03,'EPSG','8666','Geoid (height correction) model file','GCGM0811.TXT',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','6139','CIGD11 to LCVD61 height (ft) (1)',NULL,NULL,'EPSG','1050','Geographic3D to GravityRelatedHeight (CI)','EPSG','6134','EPSG','6131','EPSG','4121',0.03,'EPSG','8666','Geoid (height correction) model file','LCGM0811.TXT',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','6140','CIGD11 to CBVD61 height (ft) (1)',NULL,NULL,'EPSG','1050','Geographic3D to GravityRelatedHeight (CI)','EPSG','6134','EPSG','6132','EPSG','3207',0.03,'EPSG','8666','Geoid (height correction) model file','CBGM0811.TXT',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','6188','Lisbon to ETRS89 (4)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4207','EPSG','4258','EPSG','1294',0.1,'EPSG','8656','Latitude and longitude difference file','DLx_ETRS89_geo.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','6189','Datum 73 to ETRS89 (6)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4274','EPSG','4258','EPSG','1294',0.1,'EPSG','8656','Latitude and longitude difference file','D73_ETRS89_geo.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','6209','NAD27 to NAD83(CSRS) (4)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4267','EPSG','4617','EPSG','1447',0.8,'EPSG','8656','Latitude and longitude difference file','NB2783v2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','6326','NAD83(2011) to NAVD88 height (1)',NULL,NULL,'EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','6319','EPSG','5703','EPSG','1323',0.1,'EPSG','8666','Geoid (height correction) model file','g2012Bu0.bin',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','6327','NAD83(2011) to NAVD88 height (2)',NULL,NULL,'EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','6319','EPSG','5703','EPSG','1330',0.2,'EPSG','8666','Geoid (height correction) model file','g2012Ba0.bin',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','6648','NAD83(CSRS) to CGVD2013 height (1)',NULL,NULL,'EPSG','1060','Geographic3D to GravityRelatedHeight (CGG2013)','EPSG','4955','EPSG','6647','EPSG','1061',0.03,'EPSG','8666','Geoid (height correction) model file','CGG2013n83.byn',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','6712','Tokyo to JGD2000 (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4301','EPSG','4612','EPSG','3957',0.2,'EPSG','8656','Latitude and longitude difference file','tky2jgd.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','6713','JGD2000 to JGD2011 (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4612','EPSG','6668','EPSG','4170',0.2,'EPSG','8656','Latitude and longitude difference file','touhokutaiheiyouoki2011.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','6740','Tokyo to JGD2011 (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4301','EPSG','6668','EPSG','4194',0.2,'EPSG','8656','Latitude and longitude difference file','tky2jgd.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','6946','TM75 to ETRS89 (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4300','EPSG','4258','EPSG','1305',0.41,'EPSG','8656','Latitude and longitude difference file','tm75_etrs89.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','6947','TM75 to WGS 84 (4)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4300','EPSG','4326','EPSG','1305',1.0,'EPSG','8656','Latitude and longitude difference file','tm75_etrs89.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','6948','RD/83 to ETRS89 (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4745','EPSG','4258','EPSG','2545',0.03,'EPSG','8656','Latitude and longitude difference file','NTv2_SN.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7000','Amersfoort to ETRS89 (7)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4289','EPSG','4258','EPSG','1275',0.001,'EPSG','8656','Latitude and longitude difference file','rdtrans2008.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7001','ETRS89 to NAP height (1)',NULL,NULL,'EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4937','EPSG','5709','EPSG','1275',0.01,'EPSG','8666','Geoid (height correction) model file','naptrans2008.gtx',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7646','NAD83(2011) to PRVD02 height (1)',NULL,NULL,'EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','6319','EPSG','6641','EPSG','3294',0.1,'EPSG','8666','Geoid (height correction) model file','g2012Bp0.bin',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7647','NAD83(2011) to VIVD09 height (1)',NULL,NULL,'EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','6319','EPSG','6642','EPSG','3330',0.1,'EPSG','8666','Geoid (height correction) model file','g2012Bp0.bin',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7648','NAD83(MA11) to GUVD04 height (1)',NULL,NULL,'EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','6323','EPSG','6644','EPSG','3255',0.1,'EPSG','8666','Geoid (height correction) model file','g2012Bg0.bin',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7649','NAD83(MA11) to NMVD03 height (1)',NULL,NULL,'EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','6323','EPSG','6640','EPSG','4171',0.1,'EPSG','8666','Geoid (height correction) model file','g2012Bg0.bin',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7650','NAD83(PA11) to ASVD02 height (1)',NULL,NULL,'EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','6320','EPSG','6643','EPSG','2288',0.1,'EPSG','8666','Geoid (height correction) model file','g2012Bs0.bin',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7655','PNG94 to PNG08 height (1)',NULL,NULL,'EPSG','1059','Geographic3D to GravityRelatedHeight (PNG)','EPSG','5545','EPSG','7447','EPSG','4384',0.2,'EPSG','8666','Geoid (height correction) model file','PNG08.DAT',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7673','CH1903 to CHTRF95 (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4149','EPSG','4151','EPSG','1286',0.25,'EPSG','8656','Latitude and longitude difference file','CHENyx06_ETRS.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7674','CH1903 to ETRS89 (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4149','EPSG','4258','EPSG','1286',0.25,'EPSG','8656','Latitude and longitude difference file','CHENyx06_ETRS.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7709','OSGB 1936 to ETRS89 (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4277','EPSG','4258','EPSG','4390',0.03,'EPSG','8656','Latitude and longitude difference file','OSTN15_NTv2_OSGBtoETRS.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7710','OSGB 1936 to WGS 84 (9)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4277','EPSG','4326','EPSG','4390',1.0,'EPSG','8656','Latitude and longitude difference file','OSTN15_NTv2_OSGBtoETRS.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7711','ETRS89 to Newlyn height (2)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5701','EPSG','2792',0.008,'EPSG','8666','Geoid (height correction) model file','OSTN15_OSGM15_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7712','ETRS89 to Newlyn (Orkney Isles) height (2)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5740','EPSG','2793',0.017,'EPSG','8666','Geoid (height correction) model file','OSTN15_OSGM15_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7713','ETRS89 to Newlyn (Offshore) height (1)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','7707','EPSG','4391',0.02,'EPSG','8666','Geoid (height correction) model file','OSTN15_OSGM15_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7714','ETRS89 to Lerwick height (2)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5742','EPSG','2795',0.018,'EPSG','8666','Geoid (height correction) model file','OSTN15_OSGM15_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7715','ETRS89 to Stornoway height (2)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5746','EPSG','2799',0.011,'EPSG','8666','Geoid (height correction) model file','OSTN15_OSGM15_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7716','ETRS89 to St. Marys height (2)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5749','EPSG','2802',0.01,'EPSG','8666','Geoid (height correction) model file','OSTN15_OSGM15_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7717','ETRS89 to Douglas height (2)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5750','EPSG','2803',0.03,'EPSG','8666','Geoid (height correction) model file','OSTN15_OSGM15_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7718','ETRS89 to Belfast height (2)',NULL,NULL,'EPSG','1045','Geographic3D to GravityRelatedHeight (OSGM02-Ire)','EPSG','4937','EPSG','5732','EPSG','2530',0.014,'EPSG','8666','Geoid (height correction) model file','OSGM15_Belfast.gri',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','7719','ETRS89 to Malin Head height (2)',NULL,NULL,'EPSG','1045','Geographic3D to GravityRelatedHeight (OSGM02-Ire)','EPSG','4937','EPSG','5731','EPSG','1305',0.023,'EPSG','8666','Geoid (height correction) model file','OSGM15_Malin.gri',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','7788','CH1903 to WGS 84 (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4149','EPSG','4326','EPSG','1286',1.5,'EPSG','8656','Latitude and longitude difference file','CHENyx06_ETRS.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7840','NZGD2000 to NZVD2016 height (1)',NULL,NULL,'EPSG','1030','Geographic3D to GravityRelatedHeight (NZgeoid)','EPSG','4959','EPSG','7839','EPSG','1175',0.1,'EPSG','8666','Geoid (height correction) model file','New_Zealand_Quasigeoid_2016.csv',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7860','NZVD2016 height to Auckland 1946 height (1)',NULL,NULL,'EPSG','1071','Vertical Offset by Grid Interpolation (NZLVD)','EPSG','7839','EPSG','5759','EPSG','3764',0.02,'EPSG','8732','Vertical offset file','auckland-1946-to-nzvd2016-conversion.csv',NULL,NULL,NULL,NULL,'EPSG','4167',0); +INSERT INTO "grid_transformation" VALUES('EPSG','7861','NZVD2016 height to Bluff 1955 height (1)',NULL,NULL,'EPSG','1071','Vertical Offset by Grid Interpolation (NZLVD)','EPSG','7839','EPSG','5760','EPSG','3801',0.02,'EPSG','8732','Vertical offset file','bluff-1955-to-nzvd2016-conversion.csv',NULL,NULL,NULL,NULL,'EPSG','4167',0); +INSERT INTO "grid_transformation" VALUES('EPSG','7862','NZVD2016 height to Dunedin 1958 height (1)',NULL,NULL,'EPSG','1071','Vertical Offset by Grid Interpolation (NZLVD)','EPSG','7839','EPSG','5761','EPSG','3803',0.02,'EPSG','8732','Vertical offset file','dunedin-1958-to-nzvd2016-conversion.csv',NULL,NULL,NULL,NULL,'EPSG','4167',0); +INSERT INTO "grid_transformation" VALUES('EPSG','7863','NZVD2016 height to Dunedin-Bluff 1960 height (1)',NULL,NULL,'EPSG','1071','Vertical Offset by Grid Interpolation (NZLVD)','EPSG','7839','EPSG','4458','EPSG','3806',0.02,'EPSG','8732','Vertical offset file','dunedin-bluff-1960-to-nzvd2016-conversion.csv',NULL,NULL,NULL,NULL,'EPSG','4167',0); +INSERT INTO "grid_transformation" VALUES('EPSG','7864','NZVD2016 height to Gisborne 1926 height (1)',NULL,NULL,'EPSG','1071','Vertical Offset by Grid Interpolation (NZLVD)','EPSG','7839','EPSG','5762','EPSG','3771',0.02,'EPSG','8732','Vertical offset file','gisborne-1926-to-nzvd2016-conversion.csv',NULL,NULL,NULL,NULL,'EPSG','4167',0); +INSERT INTO "grid_transformation" VALUES('EPSG','7865','NZVD2016 height to Lyttelton 1937 height (1)',NULL,NULL,'EPSG','1071','Vertical Offset by Grid Interpolation (NZLVD)','EPSG','7839','EPSG','5763','EPSG','3804',0.01,'EPSG','8732','Vertical offset file','lyttelton-1937-to-nzvd2016-conversion.csv',NULL,NULL,NULL,NULL,'EPSG','4167',0); +INSERT INTO "grid_transformation" VALUES('EPSG','7866','NZVD2016 height to Moturiki 1953 height (1)',NULL,NULL,'EPSG','1071','Vertical Offset by Grid Interpolation (NZLVD)','EPSG','7839','EPSG','5764','EPSG','3768',0.02,'EPSG','8732','Vertical offset file','moturiki-1953-to-nzvd2016-conversion.csv',NULL,NULL,NULL,NULL,'EPSG','4167',0); +INSERT INTO "grid_transformation" VALUES('EPSG','7867','NZVD2016 height to Napier 1962 height (1)',NULL,NULL,'EPSG','1071','Vertical Offset by Grid Interpolation (NZLVD)','EPSG','7839','EPSG','5765','EPSG','3772',0.02,'EPSG','8732','Vertical offset file','napier-1962-to-nzvd2016-conversion.csv',NULL,NULL,NULL,NULL,'EPSG','4167',0); +INSERT INTO "grid_transformation" VALUES('EPSG','7868','NZVD2016 height to Nelson 1955 height (1)',NULL,NULL,'EPSG','1071','Vertical Offset by Grid Interpolation (NZLVD)','EPSG','7839','EPSG','5766','EPSG','3802',0.02,'EPSG','8732','Vertical offset file','nelson-1955-to-nzvd2016-conversion.csv',NULL,NULL,NULL,NULL,'EPSG','4167',0); +INSERT INTO "grid_transformation" VALUES('EPSG','7869','NZVD2016 height to One Tree Point 1964 height (1)',NULL,NULL,'EPSG','1071','Vertical Offset by Grid Interpolation (NZLVD)','EPSG','7839','EPSG','5767','EPSG','3762',0.01,'EPSG','8732','Vertical offset file','onetreepoint-1964-to-nzvd2016-conversion.csv',NULL,NULL,NULL,NULL,'EPSG','4167',0); +INSERT INTO "grid_transformation" VALUES('EPSG','7870','NZVD2016 height to Stewart Island 1977 height (1)',NULL,NULL,'EPSG','1071','Vertical Offset by Grid Interpolation (NZLVD)','EPSG','7839','EPSG','5772','EPSG','3338',0.18,'EPSG','8732','Vertical offset file','stewartisland-1977-to-nzvd2016-conversion.csv',NULL,NULL,NULL,NULL,'EPSG','4167',0); +INSERT INTO "grid_transformation" VALUES('EPSG','7871','NZVD2016 height to Taranaki 1970 height (1)',NULL,NULL,'EPSG','1071','Vertical Offset by Grid Interpolation (NZLVD)','EPSG','7839','EPSG','5769','EPSG','3769',0.02,'EPSG','8732','Vertical offset file','taranaki-1970-to-nzvd2016-conversion.csv',NULL,NULL,NULL,NULL,'EPSG','4167',0); +INSERT INTO "grid_transformation" VALUES('EPSG','7872','NZVD2016 height to Wellington 1953 height (1)',NULL,NULL,'EPSG','1071','Vertical Offset by Grid Interpolation (NZLVD)','EPSG','7839','EPSG','5770','EPSG','3773',0.02,'EPSG','8732','Vertical offset file','wellington-1953-to-nzvd2016-conversion.csv',NULL,NULL,NULL,NULL,'EPSG','4167',0); +INSERT INTO "grid_transformation" VALUES('EPSG','7891','SHGD2015 to SHVD2015 height (1)',NULL,NULL,'EPSG','1025','Geographic3D to GravityRelatedHeight (EGM2008)','EPSG','7885','EPSG','7890','EPSG','3183',0.0,'EPSG','8666','Geoid (height correction) model file','Und_min2.5x2.5_egm2008_isw=82_WGS84_TideFree.gz',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7957','Canada velocity grid v6',NULL,NULL,'EPSG','1070','Point motion by grid (Canada NTv2_Vel)','EPSG','8251','EPSG','8251','EPSG','1061',0.01,'EPSG','1050','Point motion velocity grid file','cvg60.cvb',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','7958','ETRS89 to Belfast height (2)',NULL,NULL,'EPSG','1072','Geographic3D to GravityRelatedHeight (OSGM15-Ire)','EPSG','4937','EPSG','5732','EPSG','2530',0.014,'EPSG','8666','Geoid (height correction) model file','OSGM15_Belfast.gri',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7959','ETRS89 to Malin Head height (2)',NULL,NULL,'EPSG','1072','Geographic3D to GravityRelatedHeight (OSGM15-Ire)','EPSG','4937','EPSG','5731','EPSG','1305',0.023,'EPSG','8666','Geoid (height correction) model file','OSGM15_Malin.gri',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7969','NGVD29 height (m) to NAVD88 height (1)',NULL,NULL,'EPSG','9658','VERTCON','EPSG','7968','EPSG','5703','EPSG','2950',0.02,'EPSG','8732','Vertical offset file','vertconw.94',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7970','NGVD29 height (m) to NAVD88 height (2)',NULL,NULL,'EPSG','9658','VERTCON','EPSG','7968','EPSG','5703','EPSG','2949',0.02,'EPSG','8732','Vertical offset file','vertconc.94',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','7971','NGVD29 height (m) to NAVD88 height (3)',NULL,NULL,'EPSG','9658','VERTCON','EPSG','7968','EPSG','5703','EPSG','2948',0.02,'EPSG','8732','Vertical offset file','vertcone.94',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','8037','WGS 84 to MSL height (1)',NULL,NULL,'EPSG','1025','Geographic3D to GravityRelatedHeight (EGM2008)','EPSG','4979','EPSG','5714','EPSG','1262',0.5,'EPSG','8666','Geoid (height correction) model file','Und_min1x1_egm2008_isw=82_WGS84_TideFree.gz',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','8268','GR96 to GVR2000 height (1)',NULL,NULL,'EPSG','1047','Geographic3D to GravityRelatedHeight (Gravsoft)','EPSG','4909','EPSG','8266','EPSG','4461',0.1,'EPSG','8666','Geoid (height correction) model file','gr2000g.gri',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','8269','GR96 to GVR2016 height (1)',NULL,NULL,'EPSG','1047','Geographic3D to GravityRelatedHeight (Gravsoft)','EPSG','4909','EPSG','8267','EPSG','4454',0.1,'EPSG','8666','Geoid (height correction) model file','ggeoid16.gri',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','8271','RGF93 to NGF IGN69 height (2)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4965','EPSG','5720','EPSG','1326',0.02,'EPSG','8666','Geoid (height correction) model file','RAF09.mnt',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','8272','RGF93 to IGN78 Corsica height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4965','EPSG','5721','EPSG','1327',0.05,'EPSG','8666','Geoid (height correction) model file','RAC09.mnt',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','8361','ETRS89 to ETRS89 + Baltic 1957 height (1)',NULL,NULL,'EPSG','9635','Geog3D to Geog2D+GravityRelatedHeight (US .gtx)','EPSG','4937','EPSG','8360','EPSG','1211',0.03,'EPSG','8666','Geoid (height correction) model file','Slovakia_ETRS89h_to_Baltic1957.gtx',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','8362','ETRS89 to ETRS89 + EVRF2007 height (1)',NULL,NULL,'EPSG','9635','Geog3D to Geog2D+GravityRelatedHeight (US .gtx)','EPSG','4937','EPSG','7423','EPSG','1211',0.03,'EPSG','8666','Geoid (height correction) model file','Slovakia_ETRS89h_to_EVRF2007.gtx',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','8364','S-JTSK [JTSK03] to S-JTSK (1)',NULL,NULL,'EPSG','9613','NADCON','EPSG','8351','EPSG','4156','EPSG','1211',0.05,'EPSG','8657','Latitude difference file','Slovakia_JTSK03_to_JTSK.LAS','EPSG','8658','Longitude difference file','Slovakia_JTSK03_to_JTSK.LOS',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','8369','BD72 to ETRS89 (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4313','EPSG','4258','EPSG','1347',0.01,'EPSG','8656','Latitude and longitude difference file','bd72lb72_etrs89lb08.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','8371','RGF93 to NGF IGN69 height (2)',NULL,NULL,'EPSG','1073','Geographic3D to GravityRelatedHeight (IGN2009)','EPSG','4965','EPSG','5720','EPSG','1326',0.02,'EPSG','8666','Geoid (height correction) model file','RAF09.mnt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','8372','RGF93 to IGN78 Corsica height (2)',NULL,NULL,'EPSG','1073','Geographic3D to GravityRelatedHeight (IGN2009)','EPSG','4965','EPSG','5721','EPSG','1327',0.05,'EPSG','8666','Geoid (height correction) model file','RAC09.mnt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','8444','GDA94 to GDA2020 (4)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4283','EPSG','7844','EPSG','4169',0.05,'EPSG','8656','Latitude and longitude difference file','XMAS_C_V1.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','8445','GDA94 to GDA2020 (5)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4283','EPSG','7844','EPSG','1069',0.05,'EPSG','8656','Latitude and longitude difference file','COCOS_C_V1.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','8446','GDA94 to GDA2020 (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4283','EPSG','7844','EPSG','2575',0.05,'EPSG','8656','Latitude and longitude difference file','GDA94_GDA2020_conformal.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','8447','GDA94 to GDA2020 (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4283','EPSG','7844','EPSG','2575',0.05,'EPSG','8656','Latitude and longitude difference file','GDA94_GDA2020_conformal_and_distortion.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','8451','GDA2020 to AHD height (1)',NULL,NULL,'EPSG','1048','Geographic3D to GravityRelatedHeight (Ausgeoid v2)','EPSG','7843','EPSG','5711','EPSG','4493',0.03,'EPSG','8666','Geoid (height correction) model file','AUSGeoid2020_windows_binary.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','8676','Canada velocity grid v6',NULL,NULL,'EPSG','1070','Point motion by grid (Canada NTv2_Vel)','EPSG','8251','EPSG','8251','EPSG','1061',0.01,'EPSG','1050','Point motion velocity grid file','cvg60.cvb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10000','RGF93 to NGF IGN69 height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4965','EPSG','5720','EPSG','1326',0.5,'EPSG','8666','Geoid (height correction) model file','ggf97a.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10001','ETRS89 to NGF IGN69 height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4937','EPSG','5720','EPSG','1326',0.5,'EPSG','8666','Geoid (height correction) model file','ggf97a.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10002','RGF93 to IGN78 Corsica height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4965','EPSG','5721','EPSG','1327',0.5,'EPSG','8666','Geoid (height correction) model file','ggf97a_corse.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10003','ETRS89 to IGN78 Corsica height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4937','EPSG','5721','EPSG','1327',0.5,'EPSG','8666','Geoid (height correction) model file','ggf97a_corse.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10004','RRAF 1991 to Martinique 1987 height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4973','EPSG','5756','EPSG','1156',998.0,'EPSG','8666','Geoid (height correction) model file','ggm00.txt',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','10005','RRAF 1991 to Guadeloupe 1988 height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4973','EPSG','5757','EPSG','2892',0.2,'EPSG','8666','Geoid (height correction) model file','ggg00.txt',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','10006','RRAF 1991 to Guadeloupe 1988 height (2)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4973','EPSG','5757','EPSG','2894',998.0,'EPSG','8666','Geoid (height correction) model file','ggg00_mg.txt',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','10007','RRAF 1991 to Guadeloupe 1988 height (3)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4973','EPSG','5757','EPSG','2895',998.0,'EPSG','8666','Geoid (height correction) model file','ggg00_ls.txt',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','10008','RRAF 1991 to Guadeloupe 1988 height (4)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4973','EPSG','5757','EPSG','2893',998.0,'EPSG','8666','Geoid (height correction) model file','ggg00_ld.txt',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','10009','RRAF 1991 to Guadeloupe 1988 height (5)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4973','EPSG','5757','EPSG','2891',998.0,'EPSG','8666','Geoid (height correction) model file','ggg00_sb.txt',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','10010','RRAF 1991 to Guadeloupe 1988 height (6)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4973','EPSG','5757','EPSG','2890',998.0,'EPSG','8666','Geoid (height correction) model file','ggg00_sm.txt',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','10011','RGFG95 to NGG1977 height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4967','EPSG','5755','EPSG','3146',998.0,'EPSG','8666','Geoid (height correction) model file','ggguy00.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10012','RGR92 to Reunion 1989 height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4971','EPSG','5758','EPSG','3337',0.1,'EPSG','8666','Geoid (height correction) model file','ggr99.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10013','NAD83 to NAVD88 height (1)',NULL,NULL,'EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4269','EPSG','5703','EPSG','2977',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u01.bin',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10014','NAD83 to NAVD88 height (2)',NULL,NULL,'EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4269','EPSG','5703','EPSG','2978',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u02.bin',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10015','NAD83 to NAVD88 height (3)',NULL,NULL,'EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4269','EPSG','5703','EPSG','2979',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u03.bin',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10016','NAD83 to NAVD88 height (4)',NULL,NULL,'EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4269','EPSG','5703','EPSG','2980',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u04.bin',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10017','NAD83 to NAVD88 height (5)',NULL,NULL,'EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4269','EPSG','5703','EPSG','2973',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u05.bin',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10018','NAD83 to NAVD88 height (6)',NULL,NULL,'EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4269','EPSG','5703','EPSG','2974',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u06.bin',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10019','NAD83 to NAVD88 height (7)',NULL,NULL,'EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4269','EPSG','5703','EPSG','2975',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u07.bin',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10020','NAD83 to NAVD88 height (8)',NULL,NULL,'EPSG','9665','Geographic3D to GravityRelatedHeight (US .gtx)','EPSG','4269','EPSG','5703','EPSG','2976',0.05,'EPSG','8666','Geoid (height correction) model file','g2003u08.bin',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10021','ETRS89 to Newlyn height (1)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5701','EPSG','2792',0.02,'EPSG','8666','Geoid (height correction) model file','OSTN02_OSGM02_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10022','ETRS89 to Belfast height (1)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5732','EPSG','2530',0.03,'EPSG','8666','Geoid (height correction) model file','OSTN02_OSGM02_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','10023','ETRS89 to Douglas height (1)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5750','EPSG','2803',0.02,'EPSG','8666','Geoid (height correction) model file','OSTN02_OSGM02_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10024','ETRS89 to Fair Isle height (1)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5741','EPSG','2794',0.05,'EPSG','8666','Geoid (height correction) model file','OSTN02_OSGM02_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10025','ETRS89 to Flannan Isles height (1)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5748','EPSG','2801',0.05,'EPSG','8666','Geoid (height correction) model file','OSTN02_OSGM02_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10026','ETRS89 to Foula height (1)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5743','EPSG','2796',0.05,'EPSG','8666','Geoid (height correction) model file','OSTN02_OSGM02_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10027','ETRS89 to Lerwick height (1)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5742','EPSG','2795',0.05,'EPSG','8666','Geoid (height correction) model file','OSTN02_OSGM02_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10028','ETRS89 to Malin Head height (1)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5731','EPSG','1305',0.04,'EPSG','8666','Geoid (height correction) model file','OSTN02_OSGM02_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','10029','ETRS89 to Newlyn (Orkney Isles) height (1)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5740','EPSG','2793',0.05,'EPSG','8666','Geoid (height correction) model file','OSTN02_OSGM02_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10030','ETRS89 to North Rona height (1)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5745','EPSG','2798',0.05,'EPSG','8666','Geoid (height correction) model file','OSTN02_OSGM02_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10031','ETRS89 to St. Kilda height (1)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5747','EPSG','2800',0.05,'EPSG','8666','Geoid (height correction) model file','OSTN02_OSGM02_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10032','ETRS89 to St. Marys height (1)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5749','EPSG','2802',0.0,'EPSG','8666','Geoid (height correction) model file','OSTN02_OSGM02_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10033','ETRS89 to Stornoway height (1)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5746','EPSG','2799',0.05,'EPSG','8666','Geoid (height correction) model file','OSTN02_OSGM02_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10034','ETRS89 to Sule Skerry height (1)',NULL,NULL,'EPSG','9663','Geographic3D to GravityRelatedHeight (OSGM-GB)','EPSG','4937','EPSG','5744','EPSG','2797',0.05,'EPSG','8666','Geoid (height correction) model file','OSTN02_OSGM02_GB.txt',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10035','GDA94 to AHD height (1)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2899',0.4,'EPSG','8666','Geoid (height correction) model file','SC52_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10036','GDA94 to AHD height (2)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2900',0.4,'EPSG','8666','Geoid (height correction) model file','SC53_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10037','GDA94 to AHD height (3)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2901',0.4,'EPSG','8666','Geoid (height correction) model file','SC54_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10038','GDA94 to AHD height (4)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2902',0.4,'EPSG','8666','Geoid (height correction) model file','SD51_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10039','GDA94 to AHD height (5)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2903',0.4,'EPSG','8666','Geoid (height correction) model file','SD52_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10040','GDA94 to AHD height (6)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2904',0.4,'EPSG','8666','Geoid (height correction) model file','SD53_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10041','GDA94 to AHD height (7)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2905',0.4,'EPSG','8666','Geoid (height correction) model file','SD54_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10042','GDA94 to AHD height (8)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2906',0.4,'EPSG','8666','Geoid (height correction) model file','SD55_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10043','GDA94 to AHD height (9)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2907',0.4,'EPSG','8666','Geoid (height correction) model file','SE50_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10044','GDA94 to AHD height (10)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2908',0.4,'EPSG','8666','Geoid (height correction) model file','SE51_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10045','GDA94 to AHD height (11)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2909',0.4,'EPSG','8666','Geoid (height correction) model file','SE52_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10046','GDA94 to AHD height (12)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2910',0.4,'EPSG','8666','Geoid (height correction) model file','SE53_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10047','GDA94 to AHD height (13)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2911',0.4,'EPSG','8666','Geoid (height correction) model file','SE54_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10048','GDA94 to AHD height (14)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2912',0.4,'EPSG','8666','Geoid (height correction) model file','SE55_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10049','GDA94 to AHD height (15)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2913',0.4,'EPSG','8666','Geoid (height correction) model file','SF49_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10050','GDA94 to AHD height (16)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2914',0.4,'EPSG','8666','Geoid (height correction) model file','SF50_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10051','GDA94 to AHD height (17)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2915',0.4,'EPSG','8666','Geoid (height correction) model file','SF51_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10052','GDA94 to AHD height (18)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2916',0.4,'EPSG','8666','Geoid (height correction) model file','SF52_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10053','GDA94 to AHD height (19)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2917',0.4,'EPSG','8666','Geoid (height correction) model file','SF53_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10054','GDA94 to AHD height (20)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2918',0.4,'EPSG','8666','Geoid (height correction) model file','SF54_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10055','GDA94 to AHD height (21)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2919',0.4,'EPSG','8666','Geoid (height correction) model file','SF55_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10056','GDA94 to AHD height (22)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2920',0.4,'EPSG','8666','Geoid (height correction) model file','SF56_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10057','GDA94 to AHD height (23)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2921',0.4,'EPSG','8666','Geoid (height correction) model file','SG49_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10058','GDA94 to AHD height (24)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2922',0.4,'EPSG','8666','Geoid (height correction) model file','SG50_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10059','GDA94 to AHD height (25)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2923',0.4,'EPSG','8666','Geoid (height correction) model file','SG51_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10060','GDA94 to AHD height (26)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2924',0.4,'EPSG','8666','Geoid (height correction) model file','SG52_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10061','GDA94 to AHD height (27)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2925',0.4,'EPSG','8666','Geoid (height correction) model file','SG53_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10062','GDA94 to AHD height (28)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2926',0.4,'EPSG','8666','Geoid (height correction) model file','SG54_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10063','GDA94 to AHD height (29)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2927',0.4,'EPSG','8666','Geoid (height correction) model file','SG55_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10064','GDA94 to AHD height (30)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2928',0.4,'EPSG','8666','Geoid (height correction) model file','SG56_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10065','GDA94 to AHD height (31)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2929',0.4,'EPSG','8666','Geoid (height correction) model file','SH49_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','10066','GDA94 to AHD height (32)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2930',0.4,'EPSG','8666','Geoid (height correction) model file','SH50_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10067','GDA94 to AHD height (33)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2931',0.4,'EPSG','8666','Geoid (height correction) model file','SH51_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10068','GDA94 to AHD height (34)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2932',0.4,'EPSG','8666','Geoid (height correction) model file','SH52_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10069','GDA94 to AHD height (35)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2933',0.4,'EPSG','8666','Geoid (height correction) model file','SH53_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10070','GDA94 to AHD height (36)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2934',0.4,'EPSG','8666','Geoid (height correction) model file','SH54_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10071','GDA94 to AHD height (37)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2935',0.4,'EPSG','8666','Geoid (height correction) model file','SH55_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10072','GDA94 to AHD height (38)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2936',0.4,'EPSG','8666','Geoid (height correction) model file','SH56_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10073','GDA94 to AHD height (39)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2937',0.4,'EPSG','8666','Geoid (height correction) model file','SI50_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10074','GDA94 to AHD height (40)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2938',0.4,'EPSG','8666','Geoid (height correction) model file','SI51_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10075','GDA94 to AHD height (41)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2939',0.4,'EPSG','8666','Geoid (height correction) model file','SI53_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10076','GDA94 to AHD height (42)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2940',0.4,'EPSG','8666','Geoid (height correction) model file','SI54_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10077','GDA94 to AHD height (43)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2941',0.4,'EPSG','8666','Geoid (height correction) model file','SI55_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10078','GDA94 to AHD height (44)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2942',0.4,'EPSG','8666','Geoid (height correction) model file','SI56_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10079','GDA94 to AHD height (45)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2943',0.4,'EPSG','8666','Geoid (height correction) model file','SJ53_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10080','GDA94 to AHD height (46)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2944',0.4,'EPSG','8666','Geoid (height correction) model file','SJ54_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10081','GDA94 to AHD height (47)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2945',0.4,'EPSG','8666','Geoid (height correction) model file','SJ55_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10082','GDA94 to AHD height (48)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5711','EPSG','2946',0.4,'EPSG','8666','Geoid (height correction) model file','SJ56_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10083','GDA94 to AHD (Tasmania) height (1)',NULL,NULL,'EPSG','9662','Geographic3D to GravityRelatedHeight (Ausgeoid98)','EPSG','4939','EPSG','5712','EPSG','2947',0.4,'EPSG','8666','Geoid (height correction) model file','SK55_DAT.htm',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','10084','WGS 84 to EGM96 height (1)',NULL,NULL,'EPSG','9661','Geographic3D to GravityRelatedHeight (EGM)','EPSG','4979','EPSG','5773','EPSG','1262',1.0,'EPSG','8666','Geoid (height correction) model file','WW15MGH.GRD',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15486','CH1903 to CH1903+ (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4149','EPSG','4150','EPSG','1286',0.2,'EPSG','8656','Latitude and longitude difference file','CHENyx06a.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15488','RRAF 1991 to IGN 1988 MG height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4973','EPSG','5617','EPSG','2894',0.2,'EPSG','8666','Geoid (height correction) model file','ggg00_mg.txt',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','15489','RRAF 1991 to IGN 1988 LS height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4973','EPSG','5616','EPSG','2895',0.2,'EPSG','8666','Geoid (height correction) model file','ggg00_ls.txt',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','15490','RRAF 1991 to IGN 1992 LD height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4973','EPSG','5618','EPSG','2893',0.5,'EPSG','8666','Geoid (height correction) model file','ggg00_ld.txt',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','15491','RRAF 1991 to IGN 1988 SB height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4973','EPSG','5619','EPSG','2891',0.2,'EPSG','8666','Geoid (height correction) model file','ggg00_sb.txt',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','15492','RRAF 1991 to IGN 1988 SM height (1)',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4973','EPSG','5620','EPSG','2890',0.2,'EPSG','8666','Geoid (height correction) model file','ggg00_sm.txt',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','15781','WGS 84 to EGM84 height (1)',NULL,NULL,'EPSG','9661','Geographic3D to GravityRelatedHeight (EGM)','EPSG','4979','EPSG','5798','EPSG','1262',1.0,'EPSG','8666','Geoid (height correction) model file','DIRACC.DMA',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15785','AGD84 to WGS 84 (9)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4203','EPSG','4326','EPSG','2576',1.0,'EPSG','8656','Latitude and longitude difference file','National 84 (02.07.01).gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15786','AGD66 to WGS 84 (17)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4202','EPSG','4326','EPSG','2575',1.0,'EPSG','8656','Latitude and longitude difference file','A66 National (13.09.01).gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15834','NAD83 to NAD83(HARN) (44)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1402',0.05,'EPSG','8657','Latitude difference file','nchpgn.las','EPSG','8658','Longitude difference file','nchpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15835','NAD83 to WGS 84 (55)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1402',1.0,'EPSG','8657','Latitude difference file','nchpgn.las','EPSG','8658','Longitude difference file','nchpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15836','NAD83 to NAD83(HARN) (45)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1409',0.05,'EPSG','8657','Latitude difference file','schpgn.las','EPSG','8658','Longitude difference file','schpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15837','NAD83 to WGS 84 (56)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1409',1.0,'EPSG','8657','Latitude difference file','schpgn.las','EPSG','8658','Longitude difference file','schpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15838','NAD83 to NAD83(HARN) (46)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4152','EPSG','1407',0.05,'EPSG','8657','Latitude difference file','pahpgn.las','EPSG','8658','Longitude difference file','pahpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15839','NAD83 to WGS 84 (57)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4269','EPSG','4326','EPSG','1407',1.0,'EPSG','8657','Latitude difference file','pahpgn.las','EPSG','8658','Longitude difference file','pahpgn.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15840','Old Hawaiian to WGS 84 (8)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4135','EPSG','4326','EPSG','1334',2.0,'EPSG','8657','Latitude difference file','hawaii.las','EPSG','8658','Longitude difference file','hawaii.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15841','Puerto Rico to WGS 84 (4)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4139','EPSG','4326','EPSG','3294',2.0,'EPSG','8657','Latitude difference file','prvi.las','EPSG','8658','Longitude difference file','prvi.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15851','NAD27 to WGS 84 (79)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4267','EPSG','4326','EPSG','2374',5.0,'EPSG','8657','Latitude difference file','conus.las','EPSG','8658','Longitude difference file','conus.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15864','NAD27 to WGS 84 (85)',NULL,NULL,'EPSG','9613','NADCON','EPSG','4267','EPSG','4326','EPSG','2373',5.0,'EPSG','8657','Latitude difference file','alaska.las','EPSG','8658','Longitude difference file','alaska.los',NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15895','ED50 to ETRS89 (11)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4230','EPSG','4258','EPSG','3429',0.2,'EPSG','8656','Latitude and longitude difference file','sped2et.gsb',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','15907','ED50 to WGS 84 (40)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4230','EPSG','4326','EPSG','3429',1.0,'EPSG','8656','Latitude and longitude difference file','sped2et.gsb',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','15932','ED50 to ETRS89 (12)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4230','EPSG','4258','EPSG','3429',0.2,'EPSG','8656','Latitude and longitude difference file','SPED2ETV2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15933','ED50 to WGS 84 (41)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4230','EPSG','4326','EPSG','3429',1.0,'EPSG','8656','Latitude and longitude difference file','SPED2ETV2.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15940','NTF to RGF93 (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4275','EPSG','4171','EPSG','1326',1.0,'EPSG','8656','Latitude and longitude difference file','rgf93_ntf.gsb',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','15941','NTF to ETRS89 (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4275','EPSG','4258','EPSG','1326',1.0,'EPSG','8656','Latitude and longitude difference file','rgf93_ntf.gsb',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','15942','NTF to WGS 84 (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4275','EPSG','4326','EPSG','1326',1.0,'EPSG','8656','Latitude and longitude difference file','rgf93_ntf.gsb',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','15944','NEA74 Noumea to RGNC91-93 (4)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4644','EPSG','4749','EPSG','2823',0.05,'EPSG','8656','Latitude and longitude difference file','RGNC1991_NEA74Noumea.gsb',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','15947','IGN72 Grande Terre to RGNC91-93 (6)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4662','EPSG','4749','EPSG','2822',0.1,'EPSG','8656','Latitude and longitude difference file','RGNC1991_IGN72GrandeTerre.gsb',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','15948','DHDN to ETRS89 (8)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4314','EPSG','4258','EPSG','3339',1.0,'EPSG','8656','Latitude and longitude difference file','BETA2007.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15949','DHDN to WGS 84 (4)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4314','EPSG','4326','EPSG','3339',1.0,'EPSG','8656','Latitude and longitude difference file','BETA2007.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15954','RD/83 to WGS 84 (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4745','EPSG','4326','EPSG','2545',1.0,'EPSG','8656','Latitude and longitude difference file','BETA2007.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15955','PD/83 to WGS 84 (1)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4746','EPSG','4326','EPSG','2544',1.0,'EPSG','8656','Latitude and longitude difference file','BETA2007.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15958','RGF93 to NTF (2)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4171','EPSG','4275','EPSG','3694',1.0,'EPSG','8656','Latitude and longitude difference file','rgf93_ntf.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15959','ETRS89 to NTF (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4258','EPSG','4275','EPSG','3694',1.0,'EPSG','8656','Latitude and longitude difference file','rgf93_ntf.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15960','WGS 84 to NTF (3)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4326','EPSG','4275','EPSG','3694',1.0,'EPSG','8656','Latitude and longitude difference file','rgf93_ntf.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('EPSG','15961','RGNC91-93 to NEA74 Noumea (4)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4749','EPSG','4644','EPSG','2823',0.05,'EPSG','8656','Latitude and longitude difference file','RGNC1991_IGN72GrandeTerre.gsb',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "grid_transformation" VALUES('EPSG','15962','RGNC91-93 to IGN72 Grande Terre (6)',NULL,NULL,'EPSG','9615','NTv2','EPSG','4749','EPSG','4662','EPSG','2822',0.1,'EPSG','8656','Latitude and longitude difference file','RGNC1991_IGN72GrandeTerre.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); diff --git a/data/sql/grid_transformation_custom.sql b/data/sql/grid_transformation_custom.sql new file mode 100644 index 00000000..a43312fe --- /dev/null +++ b/data/sql/grid_transformation_custom.sql @@ -0,0 +1,23 @@ +-- This file is hand generated. + +INSERT INTO "grid_transformation" VALUES( + 'PROJ','EPSG_5799_TO_EPSG_4937','DVR90 height to ETRS89', + NULL,NULL, + 'PROJ','HEIGHT_TO_GEOGRAPHIC3D','GravityRelatedHeight to Geographic3D', + 'EPSG','5799', -- source CRS (DVR90 height) + 'EPSG','4937', -- target CRS (ETRS89) + 'EPSG','3237', -- area of use: Denmark onshore + NULL, + 'EPSG','8666','Geoid (height correction) model file','dvr90.gtx', + NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "grid_transformation" VALUES( + 'PROJ','EPSG_5733_TO_EPSG_4937','DNN height to ETRS89', + NULL,NULL, + 'PROJ','HEIGHT_TO_GEOGRAPHIC3D','GravityRelatedHeight to Geographic3D', + 'EPSG','5733', -- source CRS (DNN height) + 'EPSG','4937', -- target CRS (ETRS89) + 'EPSG','3237', -- area of use: Denmark onshore + NULL, + 'EPSG','8666','Geoid (height correction) model file','dnn.gtx', + NULL,NULL,NULL,NULL,NULL,NULL,0); diff --git a/data/sql/helmert_transformation.sql b/data/sql/helmert_transformation.sql new file mode 100644 index 00000000..928b19db --- /dev/null +++ b/data/sql/helmert_transformation.sql @@ -0,0 +1,1348 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +INSERT INTO "helmert_transformation" VALUES('EPSG','1024','MGI to ETRS89 (4)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4312','EPSG','4258','EPSG','1543',1.0,601.705,84.263,485.227,'EPSG','9001',-4.7354,-1.3145,-5.393,'EPSG','9104',-2.3887,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1055','Ain el Abd to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4204','EPSG','4326','EPSG','3267',1.0,-145.7,-249.1,1.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1056','Ain el Abd to WGS 84 (4)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4204','EPSG','4326','EPSG','3267',1.0,-85.645,-273.077,-79.708,'EPSG','9001',-2.289,1.421,-2.532,'EPSG','9104',3.194,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1057','Ain el Abd to WGS 84 (5)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4204','EPSG','4326','EPSG','2956',1.0,-202.234,-168.351,-63.51,'EPSG','9001',-3.545,-0.659,1.945,'EPSG','9104',2.1,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1058','Ain el Abd to WGS 84 (6)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4204','EPSG','4326','EPSG','2957',1.0,-18.944,-379.364,-24.063,'EPSG','9001',-0.04,0.764,-6.431,'EPSG','9104',3.657,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1059','KOC to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4246','EPSG','4326','EPSG','3267',1.0,-294.7,-200.1,525.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1060','NGN to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4318','EPSG','4326','EPSG','3267',1.0,-3.2,-5.7,2.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1061','Kudams to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4319','EPSG','4326','EPSG','1310',1.0,-20.8,11.3,2.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1062','Kudams to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4319','EPSG','4326','EPSG','1310',1.0,226.702,-193.337,-35.371,'EPSG','9001',2.229,4.391,-9.238,'EPSG','9104',0.9798,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1063','Vientiane 1982 to Lao 1997 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4676','EPSG','4678','EPSG','1138',2.0,-2.227,6.524,2.178,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1064','Lao 1993 to Lao 1997 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4677','EPSG','4678','EPSG','1138',0.15,-0.652,1.619,0.213,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1065','Lao 1997 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4678','EPSG','4326','EPSG','1138',5.0,44.585,-131.212,-39.544,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1066','Amersfoort to ETRS89 (2)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4289','EPSG','4258','EPSG','1275',0.5,593.032,26.0,478.741,'EPSG','9001',1.9848,-1.7439,9.0587,'EPSG','9109',4.0772,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3903453.148,368135.313,5012970.306,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1067','Minna to WGS 84 (11)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','3817',8.0,-92.1,-89.9,114.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1070','Guam 1963 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4675','EPSG','4326','EPSG','3255',6.0,-100.0,-248.0,259.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1071','Palestine 1923 to Israel (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4281','EPSG','4141','EPSG','2603',1.5,-181.0,-122.0,225.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1073','Israel to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4141','EPSG','4326','EPSG','2603',2.0,-48.0,55.0,52.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1074','Palestine 1923 to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4281','EPSG','4326','EPSG','2603',2.0,-275.7224,94.7824,340.8944,'EPSG','9001',-8.001,-4.42,-11.821,'EPSG','9104',1.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1075','ED50 to WGS 84 (38)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2896',10.0,-89.05,-87.03,-124.56,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1078','Luxembourg 1930 to ETRS89 (2)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4181','EPSG','4258','EPSG','1146',0.1,-265.983,76.918,20.182,'EPSG','9001',0.4099,2.9332,-2.6881,'EPSG','9104',0.43,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4098647.674,442843.139,4851251.093,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1079','Luxembourg 1930 to WGS 84 (2)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4181','EPSG','4326','EPSG','1146',0.5,-265.983,76.918,20.182,'EPSG','9001',0.4099,2.9332,-2.6881,'EPSG','9104',0.43,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4098647.674,442843.139,4851251.093,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1080','CI1971 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4672','EPSG','4326','EPSG','2889',26.0,175.0,-38.0,113.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1081','CI1979 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4673','EPSG','4326','EPSG','2889',2.0,174.05,-25.49,112.57,'EPSG','9001',0.0,0.0,-0.554,'EPSG','9104',0.2263,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1082','CI1979 to NZGD2000 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4673','EPSG','4167','EPSG','2889',2.0,174.05,-25.49,112.57,'EPSG','9001',0.0,0.0,-0.554,'EPSG','9104',0.2263,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1083','JAD69 to WGS 72 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4242','EPSG','4322','EPSG','3342',10.0,50.0,212.0,381.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1084','JAD69 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4242','EPSG','4326','EPSG','3342',5.0,70.0,207.0,389.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1085','JAD69 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4242','EPSG','4326','EPSG','3342',2.0,65.334,212.46,387.63,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1086','JAD69 to WGS 84 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4242','EPSG','4326','EPSG','3342',1.0,-33.722,153.789,94.959,'EPSG','9001',8.581,4.478,-4.54,'EPSG','9104',-8.95,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1087','ED50 to WGS 84 (37)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','1130',2.5,-112.0,-110.3,-140.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1088','Monte Mario to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4265','EPSG','4326','EPSG','2882',10.0,-223.7,-67.38,1.34,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1089','Monte Mario to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4265','EPSG','4326','EPSG','2883',10.0,-225.4,-67.7,7.85,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1090','Monte Mario to WGS 84 (7)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4265','EPSG','4326','EPSG','2884',10.0,-227.1,-68.1,14.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1091','Monte Mario to WGS 84 (8)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4265','EPSG','4326','EPSG','2885',10.0,-231.61,-68.21,13.93,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1092','Monte Mario to WGS 84 (9)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4265','EPSG','4326','EPSG','2886',10.0,-225.06,-67.37,14.61,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1093','Monte Mario to WGS 84 (10)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4265','EPSG','4326','EPSG','2887',10.0,-229.08,-65.73,20.21,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1094','Monte Mario to WGS 84 (11)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4265','EPSG','4326','EPSG','2888',10.0,-230.47,-56.08,22.43,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1095','PSAD56 to WGS 84 (13)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4248','EPSG','4326','EPSG','3327',15.0,-270.933,115.599,-360.226,'EPSG','9001',-5.266,-1.238,2.381,'EPSG','9104',-5.109,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2464351.59,-5783466.61,974809.81,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1096','La Canoa to WGS 84 (13)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4247','EPSG','4326','EPSG','3327',15.0,-270.933,115.599,-360.226,'EPSG','9001',-5.266,-1.238,2.381,'EPSG','9104',-5.109,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2464351.59,-5783466.61,974809.81,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1097','Dealul Piscului 1970 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4317','EPSG','4326','EPSG','1197',7.0,28.0,-121.0,-77.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1098','IGM95 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4670','EPSG','4258','EPSG','3343',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1099','IGM95 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4670','EPSG','4326','EPSG','3343',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1100','Adindan to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4201','EPSG','4326','EPSG','1271',9.0,-166.0,-15.0,204.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1101','Adindan to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4201','EPSG','4326','EPSG','1057',44.0,-118.0,-14.0,218.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1102','Adindan to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4201','EPSG','4326','EPSG','3226',44.0,-134.0,-2.0,210.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1103','Adindan to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4201','EPSG','4326','EPSG','1091',6.0,-165.0,-11.0,206.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1104','Adindan to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4201','EPSG','4326','EPSG','1153',44.0,-123.0,-20.0,220.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1105','Adindan to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4201','EPSG','4326','EPSG','3304',44.0,-128.0,-18.0,224.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1106','Adindan to WGS 84 (7)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4201','EPSG','4326','EPSG','3311',7.0,-161.0,-14.0,205.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1107','Afgooye to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4205','EPSG','4326','EPSG','3308',44.0,-43.0,-163.0,45.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1108','AGD66 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4202','EPSG','4326','EPSG','2575',6.0,-133.0,-48.0,148.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1109','AGD84 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4203','EPSG','4326','EPSG','2576',4.0,-134.0,-48.0,149.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1110','Ain el Abd to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4204','EPSG','4326','EPSG','3943',44.0,-150.0,-250.0,-1.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1111','Ain el Abd to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4204','EPSG','4326','EPSG','3303',18.0,-143.0,-236.0,7.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1112','Amersfoort to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4289','EPSG','4326','EPSG','1275',1.0,593.16,26.15,478.54,'EPSG','9001',-6.3239,-0.5008,-5.5487,'EPSG','9109',4.0775,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1113','Arc 1950 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4209','EPSG','4326','EPSG','2312',44.0,-143.0,-90.0,-294.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1114','Arc 1950 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4209','EPSG','4326','EPSG','1051',7.0,-138.0,-105.0,-289.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1115','Arc 1950 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4209','EPSG','4326','EPSG','1058',35.0,-153.0,-5.0,-292.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1116','Arc 1950 to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4209','EPSG','4326','EPSG','1141',10.0,-125.0,-108.0,-295.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1117','Arc 1950 to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4209','EPSG','4326','EPSG','1150',27.0,-161.0,-73.0,-317.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1118','Arc 1950 to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4209','EPSG','4326','EPSG','1224',26.0,-134.0,-105.0,-295.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1119','Arc 1950 to WGS 84 (7)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4209','EPSG','4326','EPSG','1259',25.0,-169.0,-19.0,-278.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1120','Arc 1950 to WGS 84 (8)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4209','EPSG','4326','EPSG','1260',41.0,-147.0,-74.0,-283.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1121','Arc 1950 to WGS 84 (9)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4209','EPSG','4326','EPSG','1261',15.0,-142.0,-96.0,-293.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1122','Arc 1960 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4210','EPSG','4326','EPSG','2311',35.0,-160.0,-6.0,-302.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1123','Batavia to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4211','EPSG','4326','EPSG','1355',6.0,-377.0,681.0,-50.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1124','Bermuda 1957 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4216','EPSG','4326','EPSG','3221',35.0,-73.0,213.0,296.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1125','Bogota 1975 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4218','EPSG','4326','EPSG','3686',10.0,307.0,304.0,-318.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1126','Bukit Rimpah to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4219','EPSG','4326','EPSG','1287',999.0,-384.0,664.0,-48.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1127','Campo Inchauspe to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4221','EPSG','4326','EPSG','3843',9.0,-148.0,136.0,90.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1128','Cape to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4222','EPSG','4326','EPSG','3309',9.0,-136.0,-108.0,-292.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1129','Cape to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4222','EPSG','4326','EPSG','3309',15.0,-134.73,-110.92,-292.66,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1130','Carthage to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4223','EPSG','4326','EPSG','1236',14.0,-263.0,6.0,431.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1131','Chua to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4224','EPSG','4326','EPSG','3675',12.0,-134.0,229.0,-29.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1132','Corrego Alegre 1970-72 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4225','EPSG','4326','EPSG','1293',8.0,-206.0,172.0,-6.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1133','ED50 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2420',10.0,-87.0,-98.0,-121.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1134','ED50 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2421',6.0,-87.0,-96.0,-120.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1135','ED50 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2345',999.0,-103.0,-106.0,-141.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1136','ED50 to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','1078',26.0,-104.0,-101.0,-140.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1137','ED50 to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2595',13.0,-130.0,-117.0,-151.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1138','ED50 to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2343',6.0,-86.0,-96.0,-120.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1139','ED50 to WGS 84 (7)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2344',7.0,-87.0,-95.0,-120.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1140','ED50 to WGS 84 (8)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','3254',44.0,-84.0,-95.0,-130.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1141','ED50(ED77) to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4154','EPSG','4326','EPSG','1123',19.0,-117.0,-132.0,-164.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1142','ED50 to WGS 84 (10)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2339',44.0,-97.0,-103.0,-120.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1143','ED50 to WGS 84 (11)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2340',35.0,-97.0,-88.0,-135.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1144','ED50 to WGS 84 (12)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','3275',44.0,-107.0,-88.0,-149.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1145','ED50 to WGS 84 (13)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2338',9.0,-84.0,-107.0,-120.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1146','ED87 to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4231','EPSG','4326','EPSG','2330',0.8,-82.981,-99.719,-110.709,'EPSG','9001',-0.5076,0.1503,0.3898,'EPSG','9109',-0.3143,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1147','ED50 to ED87 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4231','EPSG','2332',1.0,-1.51,-0.84,-3.5,'EPSG','9001',-1.893,-0.687,-2.764,'EPSG','9109',0.609,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1148','Egypt 1907 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4229','EPSG','4326','EPSG','1086',11.0,-130.0,110.0,-13.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1149','ETRS89 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4258','EPSG','4326','EPSG','1298',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1150','GDA94 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4283','EPSG','4326','EPSG','4177',3.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1151','NZGD49 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4272','EPSG','4326','EPSG','3285',8.0,84.0,-22.0,209.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1152','Hu Tzu Shan 1950 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4236','EPSG','4326','EPSG','3315',26.0,-637.0,-549.0,-203.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1153','Indian 1954 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4239','EPSG','4326','EPSG','3317',21.0,217.0,823.0,299.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1154','Indian 1975 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4240','EPSG','4326','EPSG','3741',5.0,209.0,818.0,290.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1155','Kalianpur 1937 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4144','EPSG','4326','EPSG','3217',18.0,282.0,726.0,254.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1156','Kalianpur 1975 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4146','EPSG','4326','EPSG','2411',22.0,295.0,736.0,257.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1157','Kandawala to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4244','EPSG','4326','EPSG','3310',35.0,-97.0,787.0,86.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1158','Kertau 1968 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4245','EPSG','4326','EPSG','4223',15.0,-11.0,851.0,5.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1159','Leigon to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4250','EPSG','4326','EPSG','1104',5.0,-130.0,29.0,364.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1160','Liberia 1964 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4251','EPSG','4326','EPSG','3270',26.0,-90.0,40.0,88.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1161','Luzon 1911 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4253','EPSG','4326','EPSG','2364',17.0,-133.0,-77.0,-51.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1162','Luzon 1911 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4253','EPSG','4326','EPSG','2365',44.0,-133.0,-79.0,-72.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1163','M''poraloko to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4266','EPSG','4326','EPSG','1100',44.0,-74.0,-130.0,42.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1164','Mahe 1971 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4256','EPSG','4326','EPSG','2369',44.0,41.0,-220.0,-134.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1165','Massawa to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4262','EPSG','4326','EPSG','1089',44.0,639.0,405.0,60.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1166','Merchich to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4261','EPSG','4326','EPSG','3280',7.0,31.0,146.0,47.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1167','Minna to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','3226',44.0,-81.0,-84.0,115.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1168','Minna to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','1178',15.0,-92.0,-93.0,122.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1169','Monte Mario to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4265','EPSG','4326','EPSG','2339',44.0,-225.0,-65.0,9.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1170','NAD27 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','2418',16.0,-3.0,142.0,183.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1171','NAD27 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','2419',10.0,0.0,125.0,194.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1172','NAD27 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','4517',20.0,-10.0,158.0,187.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1173','NAD27 to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','1323',10.0,-8.0,160.0,176.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1174','NAD27 to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','2389',11.0,-9.0,161.0,179.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1175','NAD27 to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','2390',7.0,-8.0,159.0,175.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1176','NAD27 to WGS 84 (7)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','2412',12.0,-5.0,135.0,172.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1177','NAD27 to WGS 84 (8)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','2413',8.0,-4.0,154.0,178.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1178','NAD27 to WGS 84 (9)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','2414',44.0,1.0,140.0,165.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1179','NAD27 to WGS 84 (10)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','2384',13.0,-7.0,162.0,188.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1180','NAD27 to WGS 84 (11)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','2415',12.0,-9.0,157.0,184.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1181','NAD27 to WGS 84 (12)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','2416',9.0,-22.0,160.0,190.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1182','NAD27 to WGS 84 (13)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','2410',8.0,4.0,159.0,188.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1183','NAD27 to WGS 84 (14)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','2417',10.0,-7.0,139.0,181.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1184','NAD27 to WGS 84 (15)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','2385',35.0,0.0,125.0,201.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1185','NAD27 to WGS 84 (16)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','3235',44.0,-9.0,152.0,178.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1186','NAD27 to WGS 84 (17)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','2386',44.0,11.0,114.0,195.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1187','NAD27 to WGS 84 (18)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','3278',12.0,-12.0,130.0,190.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1188','NAD83 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4269','EPSG','4326','EPSG','1325',4.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1189','Nahrwan 1967 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4270','EPSG','4326','EPSG','2391',44.0,-247.0,-148.0,369.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1190','Nahrwan 1967 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4270','EPSG','4326','EPSG','3968',35.0,-243.0,-192.0,477.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1191','Nahrwan 1967 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4270','EPSG','4326','EPSG','1243',44.0,-249.0,-156.0,381.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1192','Naparima 1972 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4271','EPSG','4326','EPSG','1322',33.0,-10.0,375.0,165.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1193','NTF to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4275','EPSG','4326','EPSG','3694',2.0,-168.0,-60.0,320.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1194','MGI to WGS 84 (8)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4312','EPSG','4326','EPSG','1543',0.5,601.705,84.263,485.227,'EPSG','9001',-4.7354,-1.3145,-5.393,'EPSG','9104',-2.3887,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1195','OSGB 1936 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4277','EPSG','4326','EPSG','1264',21.0,375.0,-111.0,431.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1196','OSGB 1936 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4277','EPSG','4326','EPSG','2395',10.0,371.0,-112.0,434.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1197','OSGB 1936 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4277','EPSG','4326','EPSG','2396',21.0,371.0,-111.0,434.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1198','OSGB 1936 to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4277','EPSG','4326','EPSG','2397',18.0,384.0,-111.0,425.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1199','OSGB 1936 to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4277','EPSG','4326','EPSG','2398',35.0,370.0,-108.0,434.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1200','Pointe Noire to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4282','EPSG','4326','EPSG','1072',44.0,-148.0,51.0,-291.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1201','PSAD56 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','2399',42.0,-288.0,175.0,-376.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1202','PSAD56 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','1049',19.0,-270.0,188.0,-388.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1203','PSAD56 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','2402',44.0,-270.0,183.0,-390.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1204','PSAD56 to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','2403',35.0,-305.0,243.0,-442.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1205','PSAD56 to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','3229',26.0,-282.0,169.0,-371.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1206','PSAD56 to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','3241',7.0,-278.0,171.0,-367.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1207','PSAD56 to WGS 84 (7)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','1114',17.0,-298.0,159.0,-369.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1208','PSAD56 to WGS 84 (8)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','3292',16.0,-279.0,175.0,-379.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1209','PSAD56 to WGS 84 (9)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','3327',23.0,-295.0,173.0,-371.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1210','POSGAR 94 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4694','EPSG','4326','EPSG','1033',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1211','Qornoq to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4287','EPSG','4326','EPSG','2407',NULL,164.0,138.0,-189.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1212','SAD69 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4291','EPSG','4326','EPSG','1341',NULL,-57.0,1.0,-41.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1213','SAD69 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4291','EPSG','4326','EPSG','1033',NULL,-62.0,-1.0,-37.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1214','SAD69 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4291','EPSG','4326','EPSG','1049',NULL,-61.0,2.0,-48.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1215','SAD69 to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4291','EPSG','4326','EPSG','1053',NULL,-60.0,-2.0,-41.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1216','SAD69 to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4291','EPSG','4326','EPSG','1066',NULL,-75.0,-1.0,-44.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1217','SAD69 to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4291','EPSG','4326','EPSG','1070',NULL,-44.0,6.0,-36.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1218','SAD69 to WGS 84 (7)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4291','EPSG','4326','EPSG','1085',NULL,-48.0,3.0,-44.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1219','SAD69 to WGS 84 (8)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4291','EPSG','4326','EPSG','2356',NULL,-47.0,26.0,-42.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1220','SAD69 to WGS 84 (9)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4291','EPSG','4326','EPSG','1114',NULL,-53.0,3.0,-47.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1221','SAD69 to WGS 84 (10)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4291','EPSG','4326','EPSG','1188',NULL,-61.0,2.0,-33.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1222','SAD69 to WGS 84 (11)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4291','EPSG','4326','EPSG','1189',NULL,-58.0,0.0,-44.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1223','SAD69 to WGS 84 (12)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4291','EPSG','4326','EPSG','1235',NULL,-45.0,12.0,-33.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1224','SAD69 to WGS 84 (13)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4291','EPSG','4326','EPSG','1251',NULL,-45.0,8.0,-33.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1225','Sapper Hill 1943 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4292','EPSG','4326','EPSG','2355',2.0,-355.0,21.0,72.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1226','Schwarzeck to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4293','EPSG','4326','EPSG','1169',35.0,616.0,97.0,-251.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1227','Tananarive to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4297','EPSG','4326','EPSG','1149',999.0,-189.0,-242.0,-91.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1228','Timbalai 1948 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4298','EPSG','4326','EPSG','1362',19.0,-679.0,669.0,-48.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1229','TM65 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4299','EPSG','4326','EPSG','1305',NULL,506.0,-122.0,611.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1230','Tokyo to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4301','EPSG','4326','EPSG','2409',29.0,-148.0,507.0,685.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1231','Tokyo to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4301','EPSG','4326','EPSG','3995',13.0,-148.0,507.0,685.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1232','Tokyo to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4301','EPSG','4326','EPSG','3266',13.0,-146.0,507.0,687.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1233','Tokyo to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4301','EPSG','4326','EPSG','2408',29.0,-158.0,507.0,676.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1234','Yacare to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4309','EPSG','4326','EPSG','3326',999.0,-155.0,171.0,37.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1235','Zanderij to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4311','EPSG','4326','EPSG','1222',11.0,-265.0,120.0,-358.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1236','AGD84 to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4203','EPSG','4326','EPSG','2576',5.0,-116.0,-50.47,141.69,'EPSG','9001',-0.23,-0.39,-0.344,'EPSG','9104',0.0983,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1237','WGS 72 to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4322','EPSG','4326','EPSG','1262',2.0,0.0,0.0,4.5,'EPSG','9001',0.0,0.0,0.554,'EPSG','9104',0.2263,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1238','WGS 72 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4322','EPSG','4326','EPSG','1262',2.0,0.0,0.0,4.5,'EPSG','9001',0.0,0.0,0.554,'EPSG','9104',0.219,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1239','WGS 72BE to WGS 72 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4324','EPSG','4322','EPSG','1262',2.0,0.0,0.0,-2.6,'EPSG','9001',0.0,0.0,0.26,'EPSG','9104',-0.6063,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1240','WGS 72BE to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4324','EPSG','4326','EPSG','2346',2.0,0.0,0.0,1.9,'EPSG','9001',0.0,0.0,0.814,'EPSG','9104',-0.38,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1242','HD72 to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4237','EPSG','4326','EPSG','1119',1.0,52.17,-71.82,-14.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1244','PZ-90 to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4740','EPSG','4326','EPSG','1198',0.5,-1.08,-0.27,-0.9,'EPSG','9001',0.0,0.0,-0.16,'EPSG','9104',-0.12,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1245','ED50 to WGS 84 (16)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','1236',44.0,-112.0,-77.0,-145.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1246','Herat North to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4255','EPSG','4326','EPSG','1024',999.0,-333.0,-222.0,114.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1247','Kalianpur 1962 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4145','EPSG','4326','EPSG','3289',999.0,283.0,682.0,231.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1248','ID74 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4238','EPSG','4326','EPSG','4020',44.0,-24.0,-15.0,5.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1249','NAD27 to WGS 84 (21)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','2387',15.0,-2.0,152.0,149.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1250','NAD27 to WGS 84 (22)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','2388',18.0,2.0,204.0,105.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1251','NAD83 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4269','EPSG','4326','EPSG','2157',8.0,-2.0,0.0,4.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1252','NAD83 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4269','EPSG','4326','EPSG','3883',4.0,1.0,1.0,-1.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1253','Nord Sahara 1959 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4307','EPSG','4326','EPSG','3213',44.0,-186.0,-93.0,310.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1254','Pulkovo 1942 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','3296',999.0,28.0,-130.0,-95.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1255','Nord Sahara 1959 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4307','EPSG','4326','EPSG','1365',44.0,-123.0,-206.0,219.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1256','Fahud to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4232','EPSG','4326','EPSG','4009',10.0,-346.0,-1.0,224.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1257','Pulkovo 1995 to PZ-90 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4200','EPSG','4740','EPSG','1198',1.0,25.9,-130.94,-81.76,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1267','Pulkovo 1942 to WGS 84 (17)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','3296',4.0,23.92,-141.27,-80.9,'EPSG','9001',0.0,-0.35,-0.82,'EPSG','9104',-0.12,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1271','Schwarzeck to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4293','EPSG','4326','EPSG','1169',999.0,615.64,102.08,-255.81,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1272','GGRS87 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4121','EPSG','4326','EPSG','3254',1.0,-199.87,74.79,246.62,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1273','HD72 to ETRS89 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4237','EPSG','4258','EPSG','1119',NULL,-56.0,75.77,15.31,'EPSG','9001',-0.37,-0.2,-0.21,'EPSG','9104',-1.01,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1274','Pulkovo 1942 to LKS94 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4284','EPSG','4669','EPSG','3272',9.0,-40.595,-18.55,-69.339,'EPSG','9001',-2.508,-1.832,2.611,'EPSG','9104',-4.299,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1275','ED50 to WGS 84 (17)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','1096',2.0,-84.0,-97.0,-117.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1276','NTF to ED50 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4275','EPSG','4230','EPSG','3694',2.0,-84.0,37.0,437.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1277','NTF to WGS 72 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4275','EPSG','4322','EPSG','3694',2.0,-168.0,-72.0,314.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1278','AGD66 to GDA94 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4202','EPSG','4283','EPSG','2575',5.0,-127.8,-52.3,152.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1279','AGD84 to GDA94 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4203','EPSG','4283','EPSG','2576',5.0,-128.5,-53.0,153.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1280','AGD84 to GDA94 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4203','EPSG','4283','EPSG','2576',1.0,-117.763,-51.51,139.061,'EPSG','9001',-0.292,-0.443,-0.277,'EPSG','9104',-0.191,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1281','Pulkovo 1995 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4200','EPSG','4326','EPSG','1198',1.0,24.82,-131.21,-82.66,'EPSG','9001',0.0,0.0,-0.16,'EPSG','9104',-0.12,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1282','Samboja to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4125','EPSG','4326','EPSG','1328',NULL,-404.78,685.68,45.47,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1283','LKS94 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4669','EPSG','4326','EPSG','1145',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1284','Arc 1960 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4210','EPSG','4326','EPSG','3264',6.0,-157.0,-2.0,-299.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1285','Arc 1960 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4210','EPSG','4326','EPSG','3316',15.0,-175.0,-23.0,-303.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1286','Segora to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4294','EPSG','4326','EPSG','2354',NULL,-403.0,684.0,41.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1287','Pulkovo 1942 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','1119',4.0,28.0,-121.0,-77.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1288','Pulkovo 1942 to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','1192',6.0,23.0,-124.0,-82.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1289','Pulkovo 1942 to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','1306',5.0,26.0,-121.0,-78.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1290','Pulkovo 1942 to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','3268',4.0,24.0,-124.0,-82.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1291','Pulkovo 1942 to WGS 84 (7)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','1131',44.0,15.0,-130.0,-84.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1292','Pulkovo 1942 to WGS 84 (8)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','1025',6.0,24.0,-130.0,-92.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1293','Pulkovo 1942 to WGS 84 (9)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','1197',7.0,28.0,-121.0,-77.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1294','Voirol 1875 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4304','EPSG','4326','EPSG','1365',999.0,-73.0,-247.0,227.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1296','Trinidad 1903 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4302','EPSG','4326','EPSG','1339',2.0,-61.702,284.488,472.052,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1297','Tete to Moznet (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4127','EPSG','4130','EPSG','3281',30.0,-115.064,-87.39,-101.716,'EPSG','9001',0.058,-4.001,2.062,'EPSG','9104',9.366,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1298','Tete to Moznet (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4127','EPSG','4130','EPSG','2350',1.0,-82.875,-57.097,-156.768,'EPSG','9001',2.158,-1.524,0.982,'EPSG','9104',-0.359,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1299','Tete to Moznet (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4127','EPSG','4130','EPSG','2351',4.0,-138.527,-91.999,-114.591,'EPSG','9001',0.14,-3.363,2.217,'EPSG','9104',11.748,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1300','Tete to Moznet (4)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4127','EPSG','4130','EPSG','2352',3.0,-73.472,-51.66,-112.482,'EPSG','9001',-0.953,-4.6,2.368,'EPSG','9104',0.586,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1301','Tete to Moznet (5)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4127','EPSG','4130','EPSG','2353',10.0,219.315,168.975,-166.145,'EPSG','9001',-0.198,-5.926,2.356,'EPSG','9104',-57.104,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1302','Moznet to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4130','EPSG','4326','EPSG','1167',1.0,0.0,0.0,0.0,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1303','Pulkovo 1942 to WGS 84 (10)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','2405',2.0,43.822,-108.842,-119.585,'EPSG','9001',1.455,-0.761,0.737,'EPSG','9104',0.549,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1304','Indian 1975 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4240','EPSG','4326','EPSG','3741',5.0,210.0,814.0,289.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1305','Tokyo to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4301','EPSG','4326','EPSG','3266',4.0,-147.0,506.0,687.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1306','MGI to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4312','EPSG','4326','EPSG','2370',999.0,682.0,-203.0,480.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1307','Naparima 1972 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4271','EPSG','4326','EPSG','1322',26.0,-2.0,374.0,172.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1308','NAD83 to WGS 84 (4)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4269','EPSG','4326','EPSG','1323',NULL,-0.9738,1.9453,0.5486,'EPSG','9001',-1.3357e-07,-4.872e-08,-5.507e-08,'EPSG','9101',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1309','DHDN to ETRS89 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4314','EPSG','4258','EPSG','2326',5.0,582.0,105.0,414.0,'EPSG','9001',-1.04,-0.35,3.08,'EPSG','9104',8.3,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1310','Pulkovo 1942 to ETRS89 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4284','EPSG','4258','EPSG','1343',2.0,24.0,-123.0,-94.0,'EPSG','9001',-0.02,0.25,0.13,'EPSG','9104',1.1,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1311','ED50 to WGS 84 (18)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2342',1.0,-89.5,-93.8,-123.1,'EPSG','9001',0.0,0.0,-0.156,'EPSG','9104',1.2,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1314','OSGB 1936 to WGS 84 (6)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4277','EPSG','4326','EPSG','1264',2.0,446.448,-125.157,542.06,'EPSG','9001',0.15,0.247,0.842,'EPSG','9104',-20.489,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1315','OSGB 1936 to ED50 (UKOOA)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4277','EPSG','4230','EPSG','1264',2.0,535.948,-31.357,665.16,'EPSG','9001',0.15,0.247,0.998,'EPSG','9104',-21.689,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1316','Manoca to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4260','EPSG','4326','EPSG','1060',999.0,-70.9,-151.8,-41.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1317','Camacupa to WGS 72BE (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4324','EPSG','1604',10.0,-37.2,-370.6,-228.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1318','Camacupa to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2316',10.0,-42.01,-332.21,-229.75,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1319','Camacupa to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2317',25.0,-40.0,-354.0,-224.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1320','Camacupa to WGS 84 (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2321',10.0,-37.2,-370.6,-224.0,'EPSG','9001',0.0,0.0,0.554,'EPSG','9104',0.219,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1321','Camacupa to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2320',10.0,-41.8,-342.2,-228.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1322','Camacupa to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2318',3.0,-55.5,-348.0,-229.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1323','Camacupa to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2319',8.0,-43.0,-337.0,-233.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1324','Camacupa to WGS 84 (7)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2322',3.0,-48.0,-345.0,-231.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1325','Camacupa to WGS 84 (8)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2317',3.0,-48.6,-345.1,-230.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1326','Camacupa to WGS 84 (9)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2323',10.0,-41.057,-374.564,-226.287,'EPSG','9001',0.0,0.0,0.554,'EPSG','9104',0.219,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1327','Camacupa to WGS 84 (10)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','2324',5.0,-50.9,-347.6,-231.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1328','Malongo 1987 to Mhast (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4259','EPSG','4264','EPSG','1317',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1329','Mhast to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4264','EPSG','4326','EPSG','1317',10.0,-252.95,-4.11,-96.38,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1330','Malongo 1987 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4259','EPSG','4326','EPSG','3180',10.0,-252.95,-4.11,-96.38,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1331','EST92 to ETRS89 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4133','EPSG','4258','EPSG','3246',0.1,0.0,0.0,0.0,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1332','Pulkovo 1942 to EST92 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4284','EPSG','4133','EPSG','3246',9.0,21.53219,-97.00027,-60.74046,'EPSG','9001',-0.99548,-0.58147,-0.2418,'EPSG','9104',-4.5981,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1333','EST92 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4133','EPSG','4326','EPSG','3246',0.5,0.055,-0.541,-0.185,'EPSG','9001',-0.0183,0.0003,0.007,'EPSG','9104',-0.014,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1334','Pulkovo 1942 to WGS 84 (12)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','3246',9.0,21.58719,-97.54127,-60.92546,'EPSG','9001',-1.01378,-0.58117,-0.2348,'EPSG','9104',-4.6121,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1437','RT90 to ETRS89 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4124','EPSG','4258','EPSG','1225',0.5,419.3836,99.3335,591.3451,'EPSG','9001',-0.850389,-1.817277,7.862238,'EPSG','9104',-0.99496,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1438','Fahud to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4232','EPSG','4326','EPSG','4009',25.0,-333.102,-11.02,230.69,'EPSG','9001',0.0,0.0,0.554,'EPSG','9104',0.219,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1439','PSD93 to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4134','EPSG','4326','EPSG','3288',0.5,-180.624,-225.516,173.919,'EPSG','9001',-0.81,-1.898,8.336,'EPSG','9104',16.71006,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1440','ED50 to WGS 84 (19)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','3254',999.0,-86.0,-92.2,-127.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1441','Antigua 1943 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4601','EPSG','4326','EPSG','1273',10.0,-255.0,-15.0,71.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1442','Dominica 1945 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4602','EPSG','4326','EPSG','3239',10.0,725.0,685.0,536.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1443','Grenada 1953 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4603','EPSG','4326','EPSG','3118',10.0,72.0,213.7,93.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1444','Montserrat 1958 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4604','EPSG','4326','EPSG','3279',44.0,174.0,359.0,365.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1445','St. Kitts 1955 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4605','EPSG','4326','EPSG','3297',10.0,9.0,183.0,236.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1446','St. Lucia 1955 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4606','EPSG','4326','EPSG','3298',10.0,-149.0,128.0,296.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1448','HD72 to WGS 84 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4237','EPSG','4326','EPSG','1119',1.0,52.684,-71.194,-13.975,'EPSG','9001',0.312,0.1063,0.3729,'EPSG','9104',1.0191,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1449','HD72 to ETRS89 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4237','EPSG','4258','EPSG','1119',0.4,52.684,-71.194,-13.975,'EPSG','9001',0.312,0.1063,0.3729,'EPSG','9104',1.0191,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1458','AGD66 to GDA94 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4202','EPSG','4283','EPSG','2283',1.0,-129.193,-41.212,130.73,'EPSG','9001',-0.246,-0.374,-0.329,'EPSG','9104',-2.955,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1459','AGD66 to GDA94 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4202','EPSG','4283','EPSG','1282',1.0,-120.695,-62.73,165.46,'EPSG','9001',-0.109,0.141,0.116,'EPSG','9104',2.733,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1460','AGD66 to GDA94 (4)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4202','EPSG','4283','EPSG','2286',1.0,-119.353,-48.301,139.484,'EPSG','9001',-0.415,-0.26,-0.437,'EPSG','9104',-0.613,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1469','Locodjo 1965 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4142','EPSG','4326','EPSG','2282',15.0,-125.0,53.0,467.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1470','Abidjan 1987 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4143','EPSG','4326','EPSG','1075',2.0,-124.76,53.0,466.79,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1471','MGI to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4312','EPSG','4326','EPSG','1037',NULL,-577.326,-90.129,-463.919,'EPSG','9001',-15.8537,-4.55,-16.3489,'EPSG','9113',-2.4232,'EPSG','9201',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1473','NAD83(CSRS98) to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4140','EPSG','4326','EPSG','1336',NULL,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1504','Cape to Hartebeesthoek94 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4222','EPSG','4148','EPSG','3309',15.0,-134.73,-110.92,-292.66,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1505','Hartebeesthoek94 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4148','EPSG','4326','EPSG','1215',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1508','CH1903 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4149','EPSG','4326','EPSG','1286',NULL,660.077,13.551,369.344,'EPSG','9001',2.484,1.783,2.939,'EPSG','9113',5.66,'EPSG','9201',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1509','CH1903+ to CHTRF95 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4150','EPSG','4151','EPSG','1286',0.1,674.374,15.056,405.346,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1510','CH1903 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4149','EPSG','4326','EPSG','1286',NULL,674.374,15.056,405.346,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1511','CHTRF95 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4151','EPSG','4326','EPSG','1286',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1512','Rassadiran to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4153','EPSG','4326','EPSG','1338',0.5,-133.63,-157.5,-158.62,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1513','FD58 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4132','EPSG','4326','EPSG','2362',0.5,-241.54,-163.64,396.06,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1514','ED50(ED77) to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4154','EPSG','4326','EPSG','1123',1.0,-110.33,-97.73,-119.85,'EPSG','9001',0.3423,1.1634,0.2715,'EPSG','9104',0.063,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1515','NAD83 to WGS 84 (5)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4269','EPSG','4326','EPSG','1323',NULL,-0.991,1.9072,0.5129,'EPSG','9001',-1.25033e-07,-4.6785e-08,-5.6529e-08,'EPSG','9101',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1516','La Canoa to WGS 84 (18)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4247','EPSG','4326','EPSG','2363',2.5,-273.5,110.6,-357.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1517','Conakry 1905 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4315','EPSG','4326','EPSG','3257',30.0,-23.0,259.0,-9.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1518','Dabola 1981 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4155','EPSG','4326','EPSG','3257',25.0,-83.0,37.0,124.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1527','Campo Inchauspe to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4221','EPSG','4326','EPSG','2325',0.5,-154.5,150.7,100.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1528','Chos Malal 1914 to Campo Inchauspe (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4160','EPSG','4221','EPSG','2325',10.0,160.0,26.0,41.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1529','Hito XVIII to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4254','EPSG','4326','EPSG','2357',0.5,18.38,192.45,96.82,'EPSG','9001',0.056,-0.142,-0.2,'EPSG','9104',-0.0013,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1530','NAD27 to WGS 84 (30)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','1077',3.0,-4.2,135.4,181.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1531','Nahrwan 1967 to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4270','EPSG','4326','EPSG','2392',0.5,-245.0,-153.9,382.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1532','M''poraloko to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4266','EPSG','4326','EPSG','1100',0.5,-80.7,-132.5,41.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1533','Kalianpur 1937 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4144','EPSG','4326','EPSG','2361',5.0,214.0,804.0,268.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1534','Minna to WGS 84 (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','2371',NULL,-111.92,-87.85,114.5,'EPSG','9001',1.875,0.202,0.219,'EPSG','9104',0.032,'EPSG','9201',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1536','Nahrwan 1967 to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4270','EPSG','4326','EPSG','2406',1.0,-250.2,-153.09,391.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1537','Indian 1975 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4240','EPSG','4326','EPSG','2358',1.0,204.64,834.74,293.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1538','Carthage to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4223','EPSG','4326','EPSG','1489',1.0,-260.1,5.5,432.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1539','South Yemen to Yemen NGN96 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4164','EPSG','4163','EPSG','1340',5.0,-76.0,-138.0,67.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1540','Yemen NGN96 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4163','EPSG','4326','EPSG','1257',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1541','Indian 1960 to WGS 72BE (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4131','EPSG','4324','EPSG','1495',25.0,199.0,931.0,317.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1542','Indian 1960 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4131','EPSG','4326','EPSG','2359',44.0,198.0,881.0,317.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1543','Indian 1960 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4131','EPSG','4326','EPSG','2360',44.0,182.0,915.0,344.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1544','Hanoi 1972 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4147','EPSG','4326','EPSG','1494',5.0,-17.51,-108.32,-62.39,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1545','Egypt 1907 to WGS 72 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4229','EPSG','4322','EPSG','1086',5.0,-121.8,98.1,-15.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1546','Egypt 1907 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4229','EPSG','4326','EPSG','2341',30.0,-146.21,112.63,4.05,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1547','Bissau to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4165','EPSG','4326','EPSG','3258',25.0,-173.0,253.0,27.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1548','SAD69 to WGS 84 (14)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4291','EPSG','4326','EPSG','1053',NULL,-66.87,4.37,-38.52,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1549','Aratu to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','2307',999.0,-158.0,315.0,-148.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1550','Aratu to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','2308',5.0,-139.62,290.53,-150.29,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1551','Aratu to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','2309',5.0,-141.15,293.44,-150.56,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1552','Aratu to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','2310',5.0,-142.48,296.03,-149.74,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1555','Naparima 1955 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4158','EPSG','4326','EPSG','3143',1.0,-0.465,372.095,171.736,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1556','Naparima 1955 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4158','EPSG','4326','EPSG','3143',26.0,-2.0,374.0,172.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1557','Malongo 1987 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4259','EPSG','4326','EPSG','3180',5.0,-254.1,-5.36,-100.29,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1558','Korean 1995 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4166','EPSG','4326','EPSG','3266',2.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1560','Nord Sahara 1959 to WGS 72BE (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4307','EPSG','4324','EPSG','2393',8.0,-156.5,-87.2,285.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1561','Qatar 1974 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4285','EPSG','4326','EPSG','1346',35.0,-128.0,-283.0,22.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1562','Qatar 1974 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4285','EPSG','4326','EPSG','2406',1.0,-128.16,-282.42,21.93,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1563','Qatar 1974 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4285','EPSG','4326','EPSG','1346',1.0,-128.033,-283.697,21.052,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1564','NZGD49 to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4272','EPSG','4326','EPSG','3285',4.0,59.47,-5.04,187.44,'EPSG','9001',-0.47,0.1,-1.024,'EPSG','9104',-4.5993,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1565','NZGD2000 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4167','EPSG','4326','EPSG','1175',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1566','NZGD49 to NZGD2000 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4272','EPSG','4167','EPSG','3285',5.0,54.4,-20.1,183.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1567','NZGD49 to NZGD2000 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4272','EPSG','4167','EPSG','1175',NULL,59.47,-5.04,187.44,'EPSG','9001',-0.47,0.1,1.024,'EPSG','9104',-4.5993,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1569','Accra to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4168','EPSG','4326','EPSG','1104',25.0,-199.0,32.0,322.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1570','Accra to WGS 72BE (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4168','EPSG','4324','EPSG','1505',25.0,-171.16,17.29,323.31,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1571','Amersfoort to ETRS89 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4258','EPSG','4326','EPSG','1172',NULL,565.04,49.91,465.84,'EPSG','9001',1.9848,-1.7439,9.0587,'EPSG','9109',4.0772,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1577','American Samoa 1962 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4169','EPSG','4326','EPSG','3109',44.0,-115.0,118.0,426.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1580','NAD83(HARN) to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4152','EPSG','4326','EPSG','1337',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1581','SIRGAS to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4170','EPSG','4326','EPSG','3448',2.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1582','PSAD56 to WGS 84 (10)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','2400',3.0,-259.73,173.12,-398.27,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1583','PSAD56 to WGS 84 (11)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','2401',0.5,-307.7,265.3,-363.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1584','Deir ez Zor to WGS 72BE (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4227','EPSG','4324','EPSG','2329',5.0,-174.6,-3.1,236.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1585','Deir ez Zor to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4227','EPSG','4326','EPSG','1227',999.0,-177.5,14.1,237.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1586','Deir ez Zor to WGS 84 (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4227','EPSG','4326','EPSG','2327',999.0,-175.09,1.218,238.831,'EPSG','9001',-0.047,0.019,0.808,'EPSG','9104',0.1698,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1587','Deir ez Zor to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4227','EPSG','4326','EPSG','2328',1.0,-191.77,15.01,235.07,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1588','ED50 to ETRS89 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4258','EPSG','2332',1.0,-116.641,-56.931,-110.559,'EPSG','9001',4.327,4.464,-4.444,'EPSG','9109',-3.52,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1591','RGF93 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4171','EPSG','4258','EPSG','1096',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1592','Timbalai 1948 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4298','EPSG','4326','EPSG','1055',5.0,-678.0,670.0,-48.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1594','AGD66 to GDA94 (8)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4202','EPSG','4283','EPSG','1282',1.0,-120.271,-64.543,161.632,'EPSG','9001',-0.217,0.067,0.129,'EPSG','9104',2.499,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1595','AGD66 to GDA94 (9)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4202','EPSG','4283','EPSG','2284',1.0,-124.133,-42.003,137.4,'EPSG','9001',0.008,-0.557,-0.178,'EPSG','9104',-1.854,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1597','Bogota 1975 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4218','EPSG','4326','EPSG','2315',0.2,304.5,306.5,-318.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1598','POSGAR to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4172','EPSG','4326','EPSG','1033',NULL,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1609','BD72 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4313','EPSG','4326','EPSG','1347',1.0,-99.059,53.322,-112.486,'EPSG','9001',-0.419,0.83,-1.885,'EPSG','9104',-1.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1610','BD72 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4313','EPSG','4326','EPSG','1347',5.0,-125.8,79.9,-100.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1611','IRENET95 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4173','EPSG','4258','EPSG','1305',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1612','ED50 to WGS 84 (23)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2601',1.0,-116.641,-56.931,-110.559,'EPSG','9001',0.893,0.921,-0.917,'EPSG','9104',-3.52,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1613','ED50 to WGS 84 (24)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2334',1.0,-90.365,-101.13,-123.384,'EPSG','9001',0.333,0.077,0.894,'EPSG','9104',1.994,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1614','Sierra Leone 1968 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4175','EPSG','4326','EPSG','3306',26.0,-88.0,4.0,101.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1615','Timbalai 1948 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4298','EPSG','4326','EPSG','2349',100.0,-726.282,703.611,-48.999,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1616','PSD93 to WGS 72 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4134','EPSG','4322','EPSG','3288',1.2,-182.046,-225.604,168.884,'EPSG','9001',-0.616,-1.655,7.824,'EPSG','9104',16.641,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1617','PSD93 to WGS 84 (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4134','EPSG','4326','EPSG','2404',0.5,-191.808,-250.512,167.861,'EPSG','9001',-0.792,-1.653,8.558,'EPSG','9104',20.703,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1618','MGI to WGS 84 (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4312','EPSG','4326','EPSG','1037',1.5,577.326,90.129,463.919,'EPSG','9001',5.137,1.474,5.297,'EPSG','9104',2.4232,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1619','MGI to ETRS89 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4312','EPSG','4258','EPSG','1037',1.5,577.326,90.129,463.919,'EPSG','9001',5.137,1.474,5.297,'EPSG','9104',2.4232,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1620','MGI to ETRS89 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4312','EPSG','4258','EPSG','1076',1.0,551.7,162.9,467.9,'EPSG','9001',6.04,1.96,-11.38,'EPSG','9104',-4.82,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1621','MGI to WGS 84 (4)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4312','EPSG','4326','EPSG','1076',1.0,551.7,162.9,467.9,'EPSG','9001',6.04,1.96,-11.38,'EPSG','9104',-4.82,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1622','S-JTSK to ETRS89 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4156','EPSG','4258','EPSG','1079',1.0,570.8,85.7,462.8,'EPSG','9001',4.998,1.587,5.261,'EPSG','9104',3.56,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1623','S-JTSK to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4156','EPSG','4326','EPSG','1079',1.0,570.8,85.7,462.8,'EPSG','9001',4.998,1.587,5.261,'EPSG','9104',3.56,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1624','S-JTSK to ETRS89 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4156','EPSG','4258','EPSG','1211',1.0,559.0,68.7,451.5,'EPSG','9001',7.92,4.073,4.251,'EPSG','9104',5.71,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1625','S-JTSK to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4156','EPSG','4326','EPSG','1211',1.0,559.0,68.7,451.5,'EPSG','9001',7.92,4.073,4.251,'EPSG','9104',5.71,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1626','ED50 to ETRS89 (4)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4258','EPSG','3237',1.0,-81.1,-89.4,-115.8,'EPSG','9001',0.485,0.024,0.413,'EPSG','9104',-0.54,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1627','ED50 to WGS 84 (25)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','3237',1.0,-81.1,-89.4,-115.8,'EPSG','9001',0.485,0.024,0.413,'EPSG','9104',-0.54,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1628','ED50 to ETRS89 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4258','EPSG','1105',1.0,-116.8,-106.4,-154.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1629','ED50 to WGS 84 (26)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','1105',1.0,-116.8,-106.4,-154.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1630','ED50 to ETRS89 (6)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4258','EPSG','2335',1.5,-181.5,-90.3,-187.2,'EPSG','9001',0.144,0.492,-0.394,'EPSG','9104',17.57,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1631','ED50 to WGS 84 (27)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2335',1.5,-181.5,-90.3,-187.2,'EPSG','9001',0.144,0.492,-0.394,'EPSG','9104',17.57,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1632','ED50 to ETRS89 (7)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4258','EPSG','2336',1.5,-131.0,-100.3,-163.4,'EPSG','9001',-1.244,-0.02,-1.144,'EPSG','9104',9.39,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1633','ED50 to WGS 84 (28)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2336',1.5,-131.0,-100.3,-163.4,'EPSG','9001',-1.244,-0.02,-1.144,'EPSG','9104',9.39,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1634','ED50 to ETRS89 (8)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4258','EPSG','2337',1.5,-178.4,-83.2,-221.3,'EPSG','9001',0.54,-0.532,-0.126,'EPSG','9104',21.2,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1635','ED50 to WGS 84 (29)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2337',1.5,-178.4,-83.2,-221.3,'EPSG','9001',0.54,-0.532,-0.126,'EPSG','9104',21.2,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1638','KKJ to ETRS89 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4123','EPSG','4258','EPSG','3333',1.5,-90.7,-106.1,-119.2,'EPSG','9001',4.09,0.218,-1.05,'EPSG','9104',1.37,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1639','KKJ to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4123','EPSG','4326','EPSG','3333',1.5,-90.7,-106.1,-119.2,'EPSG','9001',4.09,0.218,-1.05,'EPSG','9104',1.37,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1640','TM65 to ETRS89 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4299','EPSG','4258','EPSG','1305',NULL,482.5,-130.6,564.6,'EPSG','9001',-1.042,-0.214,-0.631,'EPSG','9104',8.15,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1641','TM65 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4299','EPSG','4326','EPSG','1305',1.0,482.5,-130.6,564.6,'EPSG','9001',-1.042,-0.214,-0.631,'EPSG','9104',8.15,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1642','Luxembourg 1930 to ETRS89 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4181','EPSG','4258','EPSG','1146',1.0,-193.0,13.7,-39.3,'EPSG','9001',-0.41,-2.933,2.688,'EPSG','9104',0.43,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1643','Luxembourg 1930 to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4181','EPSG','4326','EPSG','1146',1.0,-193.0,13.7,-39.3,'EPSG','9001',-0.41,-2.933,2.688,'EPSG','9104',0.43,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1644','Pulkovo 1942(58) to ETRS89 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4179','EPSG','4258','EPSG','3293',1.0,33.4,-146.6,-76.3,'EPSG','9001',-0.359,-0.053,0.844,'EPSG','9104',-0.84,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1645','Pulkovo 1942(58) to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4179','EPSG','4326','EPSG','3293',1.0,33.4,-146.6,-76.3,'EPSG','9001',-0.359,-0.053,0.844,'EPSG','9104',-0.84,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1646','CH1903 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4149','EPSG','4258','EPSG','1286',1.5,674.374,15.056,405.346,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1647','CH1903+ to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4150','EPSG','4258','EPSG','1286',0.1,674.374,15.056,405.346,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1648','EST97 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4180','EPSG','4258','EPSG','1090',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1649','EST97 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4180','EPSG','4326','EPSG','1090',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1650','ED50 to ETRS89 (10)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4258','EPSG','1096',2.0,-84.0,-97.0,-117.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1651','NTF to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4275','EPSG','4258','EPSG','3694',2.0,-168.0,-60.0,320.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1652','BD72 to ETRS89 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4313','EPSG','4258','EPSG','1347',1.0,-99.1,53.3,-112.5,'EPSG','9001',0.419,-0.83,1.885,'EPSG','9104',-1.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1653','NGO 1948 to ETRS89 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4273','EPSG','4258','EPSG','1352',3.0,278.3,93.0,474.5,'EPSG','9001',7.889,0.05,-6.61,'EPSG','9104',6.21,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1654','NGO 1948 to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4273','EPSG','4326','EPSG','1352',3.0,278.3,93.0,474.5,'EPSG','9001',7.889,0.05,-6.61,'EPSG','9104',6.21,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1655','Lisbon to ETRS89 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4207','EPSG','4258','EPSG','1294',3.0,-280.9,-89.8,130.2,'EPSG','9001',-1.721,0.355,-0.371,'EPSG','9104',-5.92,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1656','Lisbon to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4207','EPSG','4326','EPSG','1294',3.0,-280.9,-89.8,130.2,'EPSG','9001',-1.721,0.355,-0.371,'EPSG','9104',-5.92,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1657','Datum 73 to ETRS89 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4274','EPSG','4258','EPSG','1294',2.0,-238.2,85.2,29.9,'EPSG','9001',0.166,0.046,1.248,'EPSG','9104',2.03,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1658','Datum 73 to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4274','EPSG','4326','EPSG','1294',2.0,-238.2,85.2,29.9,'EPSG','9001',0.166,0.046,1.248,'EPSG','9104',2.03,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1659','Monte Mario to ETRS89 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4265','EPSG','4258','EPSG','2372',4.0,-104.1,-49.1,-9.9,'EPSG','9001',0.971,-2.917,0.714,'EPSG','9104',-11.68,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1660','Monte Mario to WGS 84 (4)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4265','EPSG','4326','EPSG','2372',4.0,-104.1,-49.1,-9.9,'EPSG','9001',0.971,-2.917,0.714,'EPSG','9104',-11.68,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1661','Monte Mario to ETRS89 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4265','EPSG','4258','EPSG','2339',4.0,-168.6,-34.0,38.6,'EPSG','9001',-0.374,-0.679,-1.379,'EPSG','9104',-9.48,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1662','Monte Mario to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4265','EPSG','4326','EPSG','2339',4.0,-168.6,-34.0,38.6,'EPSG','9001',-0.374,-0.679,-1.379,'EPSG','9104',-9.48,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1663','Monte Mario to ETRS89 (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4265','EPSG','4258','EPSG','2340',4.0,-50.2,-50.4,84.8,'EPSG','9001',-0.69,-2.012,0.459,'EPSG','9104',-28.08,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1664','Monte Mario to WGS 84 (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4265','EPSG','4326','EPSG','2340',4.0,-50.2,-50.4,84.8,'EPSG','9001',-0.69,-2.012,0.459,'EPSG','9104',-28.08,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1665','AGD66 to WGS 84 (12)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4202','EPSG','4326','EPSG','2283',1.0,-129.193,-41.212,130.73,'EPSG','9001',-0.246,-0.374,-0.329,'EPSG','9104',-2.955,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1666','AGD66 to WGS 84 (13)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4202','EPSG','4326','EPSG','2286',1.0,-119.353,-48.301,139.484,'EPSG','9001',-0.415,-0.26,-0.437,'EPSG','9104',-0.613,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1667','AGD66 to WGS 84 (14)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4202','EPSG','4326','EPSG','1282',1.0,-120.271,-64.543,161.632,'EPSG','9001',-0.217,0.067,0.129,'EPSG','9104',2.499,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1668','AGD66 to WGS 84 (15)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4202','EPSG','4326','EPSG','2284',1.0,-124.133,-42.003,137.4,'EPSG','9001',0.008,-0.557,-0.178,'EPSG','9104',-1.854,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1669','AGD84 to WGS 84 (7)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4203','EPSG','4326','EPSG','2576',1.0,-117.763,-51.51,139.061,'EPSG','9001',-0.292,-0.443,-0.277,'EPSG','9104',-0.191,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1671','RGF93 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4171','EPSG','4326','EPSG','1096',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1672','Amersfoort to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4289','EPSG','4326','EPSG','1275',1.0,565.04,49.91,465.84,'EPSG','9001',1.9848,-1.7439,9.0587,'EPSG','9109',4.0772,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1673','DHDN to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4314','EPSG','4326','EPSG','2326',5.0,582.0,105.0,414.0,'EPSG','9001',-1.04,-0.35,3.08,'EPSG','9104',8.3,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1674','Pulkovo 1942(83) to ETRS89 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4178','EPSG','4258','EPSG','1343',2.0,24.0,-123.0,-94.0,'EPSG','9001',-0.02,0.25,0.13,'EPSG','9104',1.1,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1675','Pulkovo 1942(83) to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4178','EPSG','4326','EPSG','1343',2.0,24.0,-123.0,-94.0,'EPSG','9001',-0.02,0.25,0.13,'EPSG','9104',1.1,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1676','CH1903+ to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4150','EPSG','4326','EPSG','1286',1.0,674.374,15.056,405.346,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1677','HD72 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4237','EPSG','4326','EPSG','1119',NULL,56.0,75.77,15.31,'EPSG','9001',-0.37,-0.2,-0.21,'EPSG','9104',-1.01,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1678','IRENET95 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4173','EPSG','4326','EPSG','1305',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1679','Pulkovo 1942 to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','3272',9.0,-40.595,-18.55,-69.339,'EPSG','9001',-2.508,-1.832,2.611,'EPSG','9104',-4.299,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1680','RT90 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4124','EPSG','4326','EPSG','1225',1.0,419.3836,99.3335,591.3451,'EPSG','9001',-0.850389,-1.817277,7.862238,'EPSG','9104',-0.99496,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1682','South Yemen to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4164','EPSG','4326','EPSG','1340',5.0,-76.0,-138.0,67.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1683','Tete to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4127','EPSG','4326','EPSG','3281',30.0,-115.064,-87.39,-101.716,'EPSG','9001',0.058,-4.001,2.062,'EPSG','9104',9.366,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1684','Tete to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4127','EPSG','4326','EPSG','2350',1.0,-82.875,-57.097,-156.768,'EPSG','9001',2.158,-1.524,0.982,'EPSG','9104',-0.359,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1685','Tete to WGS 84 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4127','EPSG','4326','EPSG','2351',4.0,-138.527,-91.999,-114.591,'EPSG','9001',0.14,-3.363,2.217,'EPSG','9104',11.748,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1686','Tete to WGS 84 (4)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4127','EPSG','4326','EPSG','2352',3.0,-73.472,-51.66,-112.482,'EPSG','9001',-0.953,-4.6,2.368,'EPSG','9104',0.586,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1687','Tete to WGS 84 (5)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4127','EPSG','4326','EPSG','2353',10.0,219.315,168.975,-166.145,'EPSG','9001',-0.198,-5.926,2.356,'EPSG','9104',-57.104,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1701','NZGD49 to NZGD2000 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4272','EPSG','4167','EPSG','3285',4.0,59.47,-5.04,187.44,'EPSG','9001',-0.47,0.1,-1.024,'EPSG','9104',-4.5993,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1751','Amersfoort to ETRS89 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4289','EPSG','4258','EPSG','1275',0.5,565.04,49.91,465.84,'EPSG','9001',1.9848,-1.7439,9.0587,'EPSG','9109',4.0772,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1753','CH1903 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4149','EPSG','4326','EPSG','1286',1.0,660.077,13.551,369.344,'EPSG','9001',2.484,1.783,2.939,'EPSG','9113',5.66,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1754','Minna to WGS 84 (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','2371',5.0,-111.92,-87.85,114.5,'EPSG','9001',1.875,0.202,0.219,'EPSG','9104',0.032,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1766','CH1903 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4149','EPSG','4326','EPSG','1286',1.5,674.374,15.056,405.346,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1767','REGVEN to SIRGAS 1995 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4189','EPSG','4170','EPSG','1251',0.02,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1768','REGVEN to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4189','EPSG','4326','EPSG','1251',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1769','PSAD56 to REGVEN (1)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4248','EPSG','4189','EPSG','3327',15.0,-270.933,115.599,-360.226,'EPSG','9001',-5.266,-1.238,2.381,'EPSG','9104',-5.109,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2464351.59,-5783466.61,974809.81,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1770','PSAD56 to WGS84 (1)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4248','EPSG','4326','EPSG','1251',NULL,-270.933,115.599,-360.226,'EPSG','9001',-5.266,-1.238,2.381,'EPSG','9104',-5.109,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2464351.59,-5783466.61,974809.81,'EPSG','9001',1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1771','La Canoa to REGVEN (1)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4247','EPSG','4189','EPSG','3327',15.0,-270.933,115.599,-360.226,'EPSG','9001',-5.266,-1.238,2.381,'EPSG','9104',-5.109,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2464351.59,-5783466.61,974809.81,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1772','La Canoa to WGS84 (1)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4247','EPSG','4326','EPSG','1251',NULL,-270.933,115.599,-360.226,'EPSG','9001',-5.266,-1.238,2.381,'EPSG','9104',-5.109,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2464351.59,-5783466.61,974809.81,'EPSG','9001',1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1773','POSGAR 98 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4190','EPSG','4326','EPSG','1033',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1774','POSGAR 98 to SIRGAS 1995 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4190','EPSG','4170','EPSG','1033',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1775','Pulkovo 1942(83) to ETRS89 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4178','EPSG','4258','EPSG','1343',0.1,24.9,-126.4,-93.2,'EPSG','9001',-0.063,-0.247,-0.041,'EPSG','9104',1.01,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1776','DHDN to ETRS89 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4258','EPSG','2326',3.0,598.1,73.7,418.2,'EPSG','9001',0.202,0.045,-2.455,'EPSG','9104',6.7,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1777','DHDN to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4326','EPSG','2326',3.0,598.1,73.7,418.2,'EPSG','9001',0.202,0.045,-2.455,'EPSG','9104',6.7,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1778','DHDN to ETRS89 (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4258','EPSG','2543',0.1,597.1,71.4,412.1,'EPSG','9001',0.894,0.068,-1.563,'EPSG','9104',7.58,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1779','DHDN to ETRS89 (4)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4258','EPSG','2542',0.1,584.8,67.0,400.3,'EPSG','9001',0.105,0.013,-2.378,'EPSG','9104',10.29,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1780','DHDN to ETRS89 (5)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4258','EPSG','2541',0.1,590.5,69.5,411.6,'EPSG','9001',-0.796,-0.052,-3.601,'EPSG','9104',8.3,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1781','DHDN to ETRS89 (6)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4258','EPSG','2544',0.1,599.4,72.4,419.2,'EPSG','9001',-0.062,-0.022,-2.723,'EPSG','9104',6.46,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1782','DHDN to ETRS89 (7)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4258','EPSG','2545',0.1,612.4,77.0,440.2,'EPSG','9001',-0.054,0.057,-2.797,'EPSG','9104',2.55,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1783','ED50 to ETRS89 (9)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4258','EPSG','1237',2.0,-84.1,-101.8,-129.7,'EPSG','9001',0.0,0.0,0.468,'EPSG','9104',1.05,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1784','ED50 to WGS 84 (30)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','1237',2.0,-84.1,-101.8,-129.7,'EPSG','9001',0.0,0.0,0.468,'EPSG','9104',1.05,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1785','MGI to ETRS89 (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4312','EPSG','4258','EPSG','1212',1.0,426.9,142.6,460.1,'EPSG','9001',4.91,4.49,-12.42,'EPSG','9104',17.1,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1786','MGI to WGS 84 (5)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4312','EPSG','4326','EPSG','1212',1.0,426.9,142.6,460.1,'EPSG','9001',4.91,4.49,-12.42,'EPSG','9104',17.1,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1787','RT90 to ETRS89 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4124','EPSG','4258','EPSG','1225',NULL,414.1,41.3,603.1,'EPSG','9001',-0.855,2.141,-7.023,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1788','RT90 to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4124','EPSG','4326','EPSG','1225',NULL,414.1,41.3,603.1,'EPSG','9001',-0.855,2.141,-7.023,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1789','Dealui Piscului 1933 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4316','EPSG','4326','EPSG','1197',NULL,103.25,-100.4,-307.19,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1790','Lisbon to ETRS89 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4207','EPSG','4258','EPSG','1294',NULL,-282.1,-72.2,120.0,'EPSG','9001',-1.592,0.145,-0.89,'EPSG','9104',-4.46,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1791','Lisbon to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4207','EPSG','4258','EPSG','1294',NULL,-282.1,-72.2,120.0,'EPSG','9001',-1.592,0.145,-0.89,'EPSG','9104',-4.46,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1792','Datum 73 to ETRS89 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4274','EPSG','4258','EPSG','1294',NULL,-231.0,102.6,29.8,'EPSG','9001',0.615,-0.198,0.881,'EPSG','9104',1.79,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1793','Datum 73 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4274','EPSG','4258','EPSG','1294',NULL,-231.0,102.6,29.8,'EPSG','9001',0.615,-0.198,0.881,'EPSG','9104',1.79,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1794','MGI to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4312','EPSG','4326','EPSG','3536',999.0,695.5,-216.6,491.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1795','MGI to WGS 84 (7)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4312','EPSG','4326','EPSG','3536',999.0,408.0895,-288.9616,791.5498,'EPSG','9001',-4.078662,0.022669,9.825424,'EPSG','9104',94.060626,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4444943.0248,1518098.4827,4302370.0765,'EPSG','9001',1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1796','Manoca 1962 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4193','EPSG','4326','EPSG','2555',0.5,-70.9,-151.8,-41.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1797','Qornoq 1927 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4194','EPSG','4326','EPSG','3362',48.0,164.0,138.0,-189.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1798','Qornoq 1927 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4194','EPSG','4326','EPSG','3362',1.0,163.511,127.533,-159.789,'EPSG','9001',0.0,0.0,0.814,'EPSG','9104',-0.6,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1799','Scoresbysund 1952 to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4195','EPSG','4326','EPSG','2570',1.0,105.0,326.0,-102.5,'EPSG','9001',0.0,0.0,0.814,'EPSG','9104',-0.6,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1800','Ammassalik 1958 to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4196','EPSG','4326','EPSG','2571',1.0,-45.0,417.0,-3.5,'EPSG','9001',0.0,0.0,0.814,'EPSG','9104',-0.6,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1801','Pointe Noire to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4282','EPSG','4326','EPSG','2574',4.0,-145.0,52.7,-291.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1802','Pointe Noire to WGS 84 (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4282','EPSG','4326','EPSG','2574',0.15,-178.3,-316.7,-131.5,'EPSG','9001',5.278,6.077,10.979,'EPSG','9104',19.166,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1805','Garoua to WGS 72BE (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4197','EPSG','4324','EPSG','2590',5.0,-56.1,-167.8,13.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1806','Kousseri to WGS 72BE (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4198','EPSG','4324','EPSG','2591',5.0,-104.4,-136.6,201.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1807','Pulkovo 1942 to WGS 84 (13)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','1038',10.0,27.0,-135.0,-84.5,'EPSG','9001',0.0,0.0,0.554,'EPSG','9104',0.2263,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1808','Pulkovo 1942 to WGS 84 (14)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','2593',5.0,686.1,-123.5,-574.4,'EPSG','9001',8.045,-23.366,10.791,'EPSG','9104',-2.926,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1809','Pulkovo 1942 to WGS 84 (15)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','2594',2.0,926.4,-715.9,-186.4,'EPSG','9001',-10.364,-20.78,26.452,'EPSG','9104',-7.224,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1810','ED50 to WGS 84 (31)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2595',15.0,-84.0,-103.0,-122.5,'EPSG','9001',0.0,0.0,0.554,'EPSG','9104',0.2263,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1811','PSAD56 to WGS 84 (12)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','1754',10.0,-291.87,106.37,-364.52,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1812','Indian 1975 to WGS 84 (4)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4240','EPSG','4326','EPSG','3317',3.0,293.0,836.0,318.0,'EPSG','9001',0.5,1.6,-2.8,'EPSG','9104',2.1,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1813','Batavia to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4211','EPSG','4326','EPSG','2577',5.0,-378.873,676.002,-46.255,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1814','Batavia to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4211','EPSG','4326','EPSG','2588',5.0,-377.7,675.1,-52.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1815','Nord Sahara 1959 to WGS 84 (4)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4307','EPSG','4326','EPSG','2598',5.0,-152.9,43.8,358.3,'EPSG','9001',2.714,1.386,-2.788,'EPSG','9104',-6.743,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1816','Nord Sahara 1959 to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4307','EPSG','4326','EPSG','2599',100.0,-95.7,10.2,158.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1817','Nord Sahara 1959 to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4307','EPSG','4326','EPSG','2600',100.0,-165.914,-70.607,305.009,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1818','Minna to WGS 84 (4)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','1717',12.0,-89.0,-112.0,125.9,'EPSG','9001',0.0,0.0,0.814,'EPSG','9104',-0.38,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1819','Minna to WGS 84 (5)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','2371',NULL,-111.92,-87.85,114.5,'EPSG','9001',1.875,0.202,0.219,'EPSG','9104',0.032,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1820','Minna to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','3813',12.0,-93.2,-93.31,121.156,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1821','Minna to WGS 84 (7)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','3814',6.0,-88.98,-83.23,113.55,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1822','Minna to WGS 84 (8)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','3815',10.0,-92.726,-90.304,115.735,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1823','Minna to WGS 84 (9)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','3816',8.0,-93.134,-86.647,114.196,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1824','Minna to WGS 84 (10)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','3824',25.0,-93.0,-94.0,124.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1825','Hong Kong 1980 to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4611','EPSG','4326','EPSG','1118',1.0,-162.619,-276.959,-161.764,'EPSG','9001',0.067753,-2.243649,-1.158827,'EPSG','9104',-1.094246,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1826','JGD2000 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4612','EPSG','4326','EPSG','1129',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1828','Yoff to WGS 72 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4310','EPSG','4322','EPSG','1207',25.0,-37.0,157.0,85.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1829','HD72 to ETRS89 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4237','EPSG','4258','EPSG','1119',0.5,56.0,-75.77,-15.31,'EPSG','9001',0.37,0.2,0.21,'EPSG','9104',1.01,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1830','HD72 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4237','EPSG','4326','EPSG','1119',1.0,56.0,-75.77,-15.31,'EPSG','9001',0.37,0.2,0.21,'EPSG','9104',1.01,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1831','HD72 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4237','EPSG','4326','EPSG','1119',1.0,57.01,-69.97,-9.29,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1832','ID74 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4238','EPSG','4326','EPSG','4020',25.0,2.691,-14.757,4.724,'EPSG','9001',0.0,0.0,0.774,'EPSG','9104',-0.6,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1833','ID74 to WGS 84 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4238','EPSG','4326','EPSG','4020',3.0,-1.977,-13.06,-9.993,'EPSG','9001',-0.364,-0.254,-0.689,'EPSG','9104',-1.037,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1834','Segara to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4294','EPSG','4326','EPSG','2354',NULL,-403.0,684.0,41.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1835','Segara to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4294','EPSG','4326','EPSG','1360',NULL,-387.06,636.53,46.29,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1836','Segara to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4294','EPSG','4326','EPSG','2770',NULL,-403.4,681.12,46.56,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1837','Makassar to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4257','EPSG','4326','EPSG','1316',999.0,-587.8,519.75,145.76,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1838','Segara to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4613','EPSG','4326','EPSG','1328',1.0,-404.78,685.68,45.47,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1839','Beduaram to WGS 72BE (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4213','EPSG','4324','EPSG','2771',15.0,-101.0,-111.0,187.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1840','QND95 to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4614','EPSG','4326','EPSG','1346',0.0,-119.4248,-303.65872,-11.00061,'EPSG','9001',1.164298,0.174458,1.096259,'EPSG','9104',3.657065,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1842','NAD83(CSRS) to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4617','EPSG','4326','EPSG','1061',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1852','Timbalai 1948 to WGS 84 (4)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4298','EPSG','4326','EPSG','2780',5.0,-533.4,669.2,-52.5,'EPSG','9001',0.0,0.0,4.28,'EPSG','9104',9.4,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1853','ED50 to WGS 84 (39)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2961',5.0,-82.31,-95.23,-114.96,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1854','FD58 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4132','EPSG','4326','EPSG','2782',0.5,-239.1,-170.02,397.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1855','FD58 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4132','EPSG','4326','EPSG','2781',0.5,-244.72,-162.773,400.75,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1856','ED50(ED77) to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4154','EPSG','4326','EPSG','2783',0.5,-122.89,-159.08,-168.74,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1857','ED50(ED77) to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4154','EPSG','4326','EPSG','2782',0.5,-84.78,-107.55,-137.25,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1858','ED50(ED77) to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4154','EPSG','4326','EPSG','2781',0.5,-123.92,-155.515,-157.721,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1859','ELD79 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4159','EPSG','4326','EPSG','2785',20.0,-69.06,-90.71,-142.56,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1860','ELD79 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4159','EPSG','4326','EPSG','2785',0.5,-113.997,-97.076,-152.312,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1861','ELD79 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4159','EPSG','4326','EPSG','2786',2.0,-114.5,-96.1,-151.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1862','ELD79 to WGS 84 (4)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4159','EPSG','4326','EPSG','2786',0.5,-194.513,-63.978,-25.759,'EPSG','9001',-3.4027,3.756,-3.352,'EPSG','9104',-0.9175,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1863','ELD79 to WGS 84 (5)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4159','EPSG','4326','EPSG','2786',6.0,-389.691,64.502,210.209,'EPSG','9001',-0.086,-14.314,6.39,'EPSG','9104',0.9264,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1864','SAD69 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','4016',19.0,-57.0,1.0,-41.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1865','SAD69 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','3215',9.0,-62.0,-1.0,-37.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1866','SAD69 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','1049',26.0,-61.0,2.0,-48.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1867','SAD69 to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','3887',8.0,-60.0,-2.0,-41.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1868','SAD69 to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','3227',21.0,-75.0,-1.0,-44.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1869','SAD69 to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','3229',10.0,-44.0,6.0,-36.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1870','SAD69 to WGS 84 (7)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','3241',6.0,-48.0,3.0,-44.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1871','SAD69 to WGS 84 (8)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','2356',44.0,-47.0,26.0,-42.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1872','SAD69 to WGS 84 (9)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','3259',12.0,-53.0,3.0,-47.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1873','SAD69 to WGS 84 (10)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','1188',26.0,-61.0,2.0,-33.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1874','SAD69 to WGS 84 (11)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','3292',9.0,-58.0,0.0,-44.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1875','SAD69 to WGS 84 (12)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','3143',44.0,-45.0,12.0,-33.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1876','SAD69 to WGS 84 (13)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','3327',8.0,-45.0,8.0,-33.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1877','SAD69 to WGS 84 (14)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','1053',5.0,-66.87,4.37,-38.52,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1878','SWEREF99 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4619','EPSG','4258','EPSG','1225',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1879','SWEREF99 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4619','EPSG','4326','EPSG','1225',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1880','Point 58 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4620','EPSG','4326','EPSG','2791',44.0,-106.0,-129.0,165.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1885','Azores Oriental 1940 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4184','EPSG','4326','EPSG','1345',44.0,-203.0,141.0,53.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1886','Azores Central 1948 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4183','EPSG','4326','EPSG','1301',6.0,-104.0,167.0,-38.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1887','Azores Occidental 1939 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4182','EPSG','4326','EPSG','1344',35.0,-425.0,-169.0,81.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1888','Porto Santo to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4615','EPSG','4326','EPSG','1314',44.0,-499.0,-249.0,314.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1889','Selvagen Grande to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4616','EPSG','4326','EPSG','2779',NULL,-289.0,-124.0,60.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1890','Australian Antarctic to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4176','EPSG','4326','EPSG','1278',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1892','Hito XVIII 1963 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4254','EPSG','4326','EPSG','2805',44.0,16.0,196.0,93.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1893','Puerto Rico to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4139','EPSG','4326','EPSG','1335',6.0,11.0,72.0,-101.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1894','Gandajika 1970 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4233','EPSG','4326','EPSG','1152',25.0,-133.0,-321.0,50.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1895','RT90 to SWEREF99 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4124','EPSG','4619','EPSG','1225',0.1,414.1,41.3,603.1,'EPSG','9001',0.855,-2.141,7.023,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1896','RT90 to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4124','EPSG','4326','EPSG','1225',1.0,414.1,41.3,603.1,'EPSG','9001',0.855,-2.141,7.023,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1897','Segara to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4613','EPSG','4326','EPSG','1360',999.0,-403.0,684.0,41.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1898','Segara to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4613','EPSG','4326','EPSG','1359',5.0,-387.06,636.53,46.29,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1899','Segara to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4613','EPSG','4326','EPSG','2770',10.0,-403.4,681.12,46.56,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1900','NAD83(HARN) to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4152','EPSG','4326','EPSG','1323',1.0,-0.9738,1.9453,0.5486,'EPSG','9001',-1.3357e-07,-4.872e-08,-5.507e-08,'EPSG','9101',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1901','NAD83(HARN) to WGS 84 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4152','EPSG','4326','EPSG','1323',1.0,-0.991,1.9072,0.5129,'EPSG','9001',-1.25033e-07,-4.6785e-08,-5.6529e-08,'EPSG','9101',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1902','Manoca 1962 to WGS 72BE (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4193','EPSG','4324','EPSG','2555',5.0,-56.7,-171.8,-40.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1903','Fort Marigot to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4621','EPSG','4326','EPSG','2828',10.0,137.0,248.0,-430.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1904','Guadeloupe 1948 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4622','EPSG','4326','EPSG','2829',10.0,-467.0,-16.0,-300.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1905','Guadeloupe 1948 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4622','EPSG','4326','EPSG','2829',0.1,-472.29,-5.63,-304.12,'EPSG','9001',0.4362,-0.8374,0.2563,'EPSG','9104',1.8984,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1906','CSG67 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4623','EPSG','4326','EPSG','3105',10.0,-186.0,230.0,110.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1907','RGFG95 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4624','EPSG','4326','EPSG','1097',2.0,2.0,2.0,-2.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1908','CSG67 to RGFG95 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4623','EPSG','4624','EPSG','3105',1.0,-193.066,236.993,105.447,'EPSG','9001',0.4814,-0.8074,0.1276,'EPSG','9104',1.5649,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1909','Martinique 1938 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4625','EPSG','4326','EPSG','3276',10.0,186.0,482.0,151.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1910','Martinique 1938 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4625','EPSG','4326','EPSG','3276',0.1,126.93,547.94,130.41,'EPSG','9001',-2.7867,5.1612,-0.8584,'EPSG','9104',13.8227,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1911','Reunion 1947 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4626','EPSG','4326','EPSG','1196',30.0,94.0,-948.0,-1292.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1912','RGR92 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4627','EPSG','4326','EPSG','3902',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1913','Tahaa 54 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4629','EPSG','4326','EPSG','2812',10.0,65.0,342.0,77.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1914','IGN72 Nuku Hiva to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4630','EPSG','4326','EPSG','3129',10.0,84.0,274.0,65.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1915','K0 1949 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4631','EPSG','4326','EPSG','2816',10.0,145.0,-187.0,103.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1916','Combani 1950 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4632','EPSG','4326','EPSG','3340',10.0,-382.0,-59.0,-262.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1917','IGN56 Lifou to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4633','EPSG','4326','EPSG','2814',10.0,336.0,223.0,-231.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1918','IGN72 Grand Terre to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4634','EPSG','4326','EPSG','1174',NULL,-13.0,-348.0,292.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1919','ST87 Ouvea to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4635','EPSG','4326','EPSG','2813',1.0,-122.383,-188.696,103.344,'EPSG','9001',3.5107,-4.9668,-5.7047,'EPSG','9104',4.4798,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1920','RGNC 1991 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4645','EPSG','4326','EPSG','1174',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1921','Petrels 1972 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4636','EPSG','4326','EPSG','2817',10.0,365.0,194.0,166.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1922','Perroud 1950 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4637','EPSG','4326','EPSG','2818',10.0,325.0,154.0,172.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1923','Saint Pierre et Miquelon 1950 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4638','EPSG','4326','EPSG','3299',10.0,30.0,430.0,368.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1924','Tahiti 52 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4628','EPSG','4326','EPSG','2811',10.0,162.0,117.0,154.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1925','MOP78 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4639','EPSG','4326','EPSG','2815',10.0,252.0,-132.0,-125.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1926','Reunion 1947 to RGR92 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4626','EPSG','4627','EPSG','3337',0.1,789.524,-626.486,-89.904,'EPSG','9001',0.6006,76.7946,-10.5788,'EPSG','9104',-32.3241,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1927','IGN56 Lifou to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4633','EPSG','4326','EPSG','2814',1.0,137.092,131.66,91.475,'EPSG','9001',-1.9436,-11.5993,-4.3321,'EPSG','9104',-7.4824,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1928','IGN53 Mare to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4641','EPSG','4326','EPSG','2819',1.0,-408.809,366.856,-412.987,'EPSG','9001',1.8842,-0.5308,2.1655,'EPSG','9104',-121.0993,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1929','IGN72 Grand Terre to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4634','EPSG','4326','EPSG','2822',NULL,97.295,-263.247,310.882,'EPSG','9001',-1.5999,0.8386,3.1409,'EPSG','9104',13.3259,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1930','ST84 Ile des Pins to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4642','EPSG','4326','EPSG','2820',1.0,244.416,85.339,168.114,'EPSG','9001',-8.9353,7.7523,12.5953,'EPSG','9104',14.268,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1931','ST71 Belep to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4643','EPSG','4326','EPSG','2821',1.0,-480.26,-438.32,-643.429,'EPSG','9001',16.3119,20.1721,-4.0349,'EPSG','9104',-111.7002,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1932','NEA74 Noumea to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4644','EPSG','4326','EPSG','2823',1.0,-166.207,-154.777,254.831,'EPSG','9001',-37.5444,7.7011,-10.2025,'EPSG','9104',-30.8598,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1933','RGR92 to Piton des Nieges (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4627','EPSG','4626','EPSG','1196',NULL,-789.99,627.333,89.685,'EPSG','9001',-0.6072,-76.8019,10.568,'EPSG','9104',32.2083,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1934','RRAF 1991 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4640','EPSG','4326','EPSG','2824',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1935','ITRF97 to ITRF2000 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4918','EPSG','4919','EPSG','1262',0.0,-0.0067,-0.0061,0.0185,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',-0.00155,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1936','ITRF96 to ITRF2000 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4917','EPSG','4919','EPSG','1262',0.0,-0.0067,-0.0061,0.0185,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',-0.00155,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1937','ITRF94 to ITRF2000 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4916','EPSG','4919','EPSG','1262',0.0,-0.0067,-0.0061,0.0185,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',-0.00155,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1938','ITRF93 to ITRF2000 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4915','EPSG','4919','EPSG','1262',0.0,-0.0127,-0.0065,0.0209,'EPSG','9001',0.00039,-0.0008,0.00114,'EPSG','9104',-0.00195,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1939','ITRF92 to ITRF2000 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4914','EPSG','4919','EPSG','1262',0.0,-0.0147,-0.0135,0.0139,'EPSG','9001',0.0,0.0,0.00018,'EPSG','9104',-0.00075,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1940','ITRF91 to ITRF2000 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4913','EPSG','4919','EPSG','1262',0.0,-0.0267,-0.0275,0.0199,'EPSG','9001',0.0,0.0,0.00018,'EPSG','9104',-0.00215,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1941','ITRF90 to ITRF2000 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4912','EPSG','4919','EPSG','1262',0.0,-0.0247,-0.0235,0.0359,'EPSG','9001',0.0,0.0,0.00018,'EPSG','9104',-0.00245,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1942','ITRF89 to ITRF2000 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4911','EPSG','4919','EPSG','1262',0.0,-0.0297,-0.0475,0.0739,'EPSG','9001',0.0,0.0,0.00018,'EPSG','9104',0.00585,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1943','ITRF88 to ITRF2000 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4910','EPSG','4919','EPSG','1262',0.0,-0.0247,-0.0115,0.0979,'EPSG','9001',-0.0001,0.0,0.00018,'EPSG','9104',-0.00895,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1944','Lisbon to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4207','EPSG','4326','EPSG','1294',NULL,-282.1,-72.2,120.0,'EPSG','9001',-1.592,0.145,-0.89,'EPSG','9104',-4.46,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1945','Datum 73 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4274','EPSG','4326','EPSG','1294',NULL,-231.0,102.6,29.8,'EPSG','9001',0.615,-0.198,0.881,'EPSG','9104',1.79,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1946','NAD83(CSRS) to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4617','EPSG','4326','EPSG','1061',1.0,-0.991,1.9072,0.5129,'EPSG','9001',-1.25033e-07,-4.6785e-08,-5.6529e-08,'EPSG','9101',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1950','NAD83 to NAD83(CSRS) (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4269','EPSG','4617','EPSG','2831',2.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1951','Hjorsey 1955 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4658','EPSG','4326','EPSG','3262',7.0,-73.0,46.0,-86.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1952','ISN93 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4659','EPSG','4326','EPSG','1120',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1953','TM75 to ETRS89 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4300','EPSG','4258','EPSG','1305',1.0,482.5,-130.6,564.6,'EPSG','9001',-1.042,-0.214,-0.631,'EPSG','9104',8.15,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1954','TM75 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4300','EPSG','4326','EPSG','1305',1.0,482.5,-130.6,564.6,'EPSG','9001',-1.042,-0.214,-0.631,'EPSG','9104',8.15,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1955','OSNI 1952 to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4188','EPSG','4326','EPSG','2530',1.0,482.5,-130.6,564.6,'EPSG','9001',-1.042,-0.214,-0.631,'EPSG','9104',8.15,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1956','TM75 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4300','EPSG','4326','EPSG','1305',6.0,506.0,-122.0,611.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1957','Helle 1954 to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4660','EPSG','4326','EPSG','2869',1.0,982.6087,552.753,-540.873,'EPSG','9001',32.39344,-153.25684,-96.2266,'EPSG','9109',16.805,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1958','LKS92 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4661','EPSG','4326','EPSG','1139',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1959','St. Vincent 1945 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4607','EPSG','4326','EPSG','3300',1.0,195.671,332.517,274.607,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1960','ED87 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4231','EPSG','4326','EPSG','1297',1.0,-83.11,-97.38,-117.22,'EPSG','9001',0.005693,-0.04469,0.04428,'EPSG','9104',1.218,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1961','ED50 to WGS 84 (32)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','1630',NULL,-83.11,-97.38,-117.22,'EPSG','9001',0.005693,-0.04469,0.4428,'EPSG','9104',1.218,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1962','IGN72 Grande Terre to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4662','EPSG','4326','EPSG','2822',10.0,-13.0,-348.0,292.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1963','IGN72 Grande Terre to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4662','EPSG','4326','EPSG','2822',1.0,97.295,-263.247,310.882,'EPSG','9001',-1.5999,0.8386,3.1409,'EPSG','9104',13.3259,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1964','RGR92 to Reunion 1947 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4627','EPSG','4626','EPSG','3337',0.1,-789.99,627.333,89.685,'EPSG','9001',-0.6072,-76.8019,10.568,'EPSG','9104',32.2083,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1965','Selvagem Grande to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4616','EPSG','4326','EPSG','2779',44.0,-289.0,-124.0,60.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1966','Porto Santo 1995 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4663','EPSG','4326','EPSG','2870',5.0,-502.862,-247.438,312.724,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1967','Porto Santo 1995 to WGS 84 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4663','EPSG','4326','EPSG','2870',1.0,-210.502,-66.902,-48.476,'EPSG','9001',-2.094,15.067,5.817,'EPSG','9104',0.485,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1968','Azores Oriental 1995 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4664','EPSG','4326','EPSG','2871',5.0,-204.633,140.216,55.199,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1969','Azores Oriental 1995 to WGS 84 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4664','EPSG','4326','EPSG','2871',1.0,-211.939,137.626,58.3,'EPSG','9001',0.089,-0.251,-0.079,'EPSG','9104',0.384,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1970','Azores Oriental 1995 to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4664','EPSG','4326','EPSG','1345',5.0,-204.619,140.176,55.226,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1971','Azores Oriental 1995 to WGS 84 (5)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4664','EPSG','4326','EPSG','1345',1.0,-208.719,129.685,52.092,'EPSG','9001',0.195,0.014,-0.327,'EPSG','9104',0.198,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1972','Azores Central 1995 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4665','EPSG','4326','EPSG','2872',5.0,-106.301,166.27,-37.916,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1973','Azores Central 1995 to WGS 84 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4665','EPSG','4326','EPSG','2872',1.0,-105.854,165.589,-38.312,'EPSG','9001',0.003,0.026,-0.024,'EPSG','9104',-0.048,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1974','Azores Central 1995 to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4665','EPSG','4326','EPSG','2873',5.0,-106.248,166.244,-37.845,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1975','Azores Central 1995 to WGS 84 (5)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4665','EPSG','4326','EPSG','2873',1.0,-104.0,162.924,-38.882,'EPSG','9001',0.075,0.071,-0.051,'EPSG','9104',-0.338,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1976','Azores Central 1995 to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4665','EPSG','4326','EPSG','2874',5.0,-106.044,166.655,-37.876,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1977','Azores Central 1995 to WGS 84 (7)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4665','EPSG','4326','EPSG','2874',1.0,-95.323,166.098,-69.942,'EPSG','9001',0.215,1.031,-0.047,'EPSG','9104',1.922,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1978','Azores Central 1995 to WGS 84 (8)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4665','EPSG','4326','EPSG','2875',5.0,-106.253,166.239,-37.854,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1979','Azores Central 1995 to WGS 84 (9)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4665','EPSG','4326','EPSG','2875',1.0,-100.306,161.246,-48.761,'EPSG','9001',0.192,0.385,-0.076,'EPSG','9104',0.131,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1980','Azores Central 1995 to WGS 84 (10)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4665','EPSG','4326','EPSG','1301',5.0,-106.226,166.366,-37.893,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1981','Azores Central 1995 to WGS 84 (11)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4665','EPSG','4326','EPSG','1301',1.0,-103.088,162.481,-28.276,'EPSG','9001',-0.167,-0.082,-0.168,'EPSG','9104',-1.504,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1982','Azores Occidental 1939 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4182','EPSG','4326','EPSG','1344',5.0,-422.651,-172.995,84.02,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1983','Datum 73 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4274','EPSG','4326','EPSG','1294',5.0,-223.237,110.193,36.649,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1984','Lisbon to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4207','EPSG','4326','EPSG','1294',5.0,-304.046,-60.576,103.64,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1985','ED50 to WGS 84 (33)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','1294',5.0,-87.987,-108.639,-121.593,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1986','Lisbon 1890 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4666','EPSG','4326','EPSG','1294',5.0,508.088,-191.042,565.223,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1987','Datum 73 to WGS 84 (4)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4274','EPSG','4326','EPSG','1294',1.0,-239.749,88.181,30.488,'EPSG','9001',-0.263,-0.082,-1.211,'EPSG','9104',2.229,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1988','Lisbon to WGS 84 (4)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4207','EPSG','4326','EPSG','1294',2.0,-288.885,-91.744,126.244,'EPSG','9001',1.691,-0.41,0.211,'EPSG','9104',-4.598,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1989','ED50 to WGS 84 (34)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','1294',1.0,-74.292,-135.889,-104.967,'EPSG','9001',0.524,0.136,-0.61,'EPSG','9104',-3.761,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1990','Lisbon 1890 to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4666','EPSG','4326','EPSG','1294',1.0,631.392,-66.551,481.442,'EPSG','9001',-1.09,4.445,4.487,'EPSG','9104',-4.43,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1992','Datum 73 to ETRS89 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4274','EPSG','4258','EPSG','1294',1.0,-231.034,102.615,26.836,'EPSG','9001',-0.615,0.198,-0.881,'EPSG','9104',1.786,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1993','IKBD-92 to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4667','EPSG','4326','EPSG','2876',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1994','Reykjavik 1900 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4657','EPSG','4326','EPSG','3262',10.0,-28.0,199.0,5.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1995','Dealul Piscului 1930 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4316','EPSG','4326','EPSG','3295',10.0,103.25,-100.4,-307.19,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1996','Dealul Piscului 1970 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4317','EPSG','4326','EPSG','1197',10.0,44.107,-116.147,-54.648,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','1997','Lisbon to ETRS89 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4207','EPSG','4258','EPSG','1294',2.0,-282.1,-72.2,120.0,'EPSG','9001',-1.529,0.145,-0.89,'EPSG','9104',-4.46,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1998','ED50 to WGS 84 (36)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','2879',1.0,-157.89,-17.16,-78.41,'EPSG','9001',2.118,2.697,-1.434,'EPSG','9104',-5.38,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','1999','ED50 to WGS 84 (32)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','1630',3.0,-83.11,-97.38,-117.22,'EPSG','9001',0.005693,-0.04469,0.04428,'EPSG','9104',1.218,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','3817','HD1909 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3819','EPSG','4326','EPSG','1119',3.0,595.48,121.69,515.35,'EPSG','9001',-4.115,2.9383,-0.853,'EPSG','9104',-3.408,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3830','TWD97 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','3824','EPSG','4326','EPSG','1228',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3894','IGRS to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','3889','EPSG','4326','EPSG','1124',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3904','ED50 to WGS 84 (32)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','1630',5.0,-83.11,-97.38,-117.22,'EPSG','9001',0.0276,-0.2167,0.2147,'EPSG','9109',0.1218,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3905','ED87 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4231','EPSG','4326','EPSG','1297',1.0,-83.11,-97.38,-117.22,'EPSG','9001',0.0276,-0.2167,0.2147,'EPSG','9109',0.1218,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3914','MGI 1901 to ETRS89 (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','3906','EPSG','4258','EPSG','3307',1.0,426.9,142.6,460.1,'EPSG','9001',4.91,4.49,-12.42,'EPSG','9104',17.1,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3915','MGI 1901 to WGS 84 (5)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','3906','EPSG','4326','EPSG','3307',1.0,426.9,142.6,460.1,'EPSG','9001',4.91,4.49,-12.42,'EPSG','9104',17.1,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3916','MGI 1901 to Slovenia 1996 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4765','EPSG','3307',1.0,409.545,72.164,486.872,'EPSG','9001',-3.085957,-5.46911,11.020289,'EPSG','9104',17.919665,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3917','MGI 1901 to WGS 84 (9)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4326','EPSG','3307',1.0,409.545,72.164,486.872,'EPSG','9001',-3.085957,-5.46911,11.020289,'EPSG','9104',17.919665,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3918','MGI 1901 to Slovenia 1996 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4765','EPSG','3564',0.5,315.393,186.223,499.609,'EPSG','9001',-6.445954,-8.131631,13.208641,'EPSG','9104',23.449046,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3919','MGI 1901 to Slovenia 1996 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4765','EPSG','3565',0.5,464.939,-21.478,504.497,'EPSG','9001',0.403,-4.228747,9.954942,'EPSG','9104',12.795378,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3921','MGI 1901 to Slovenia 1996 (4)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4765','EPSG','3566',0.5,459.968,82.193,458.756,'EPSG','9001',-3.565234,-3.700593,10.860523,'EPSG','9104',15.507563,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3922','MGI 1901 to Slovenia 1996 (5)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4765','EPSG','3567',0.3,427.914,105.528,510.908,'EPSG','9001',-4.992523,-5.898813,10.306673,'EPSG','9104',12.431493,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3923','MGI 1901 to Slovenia 1996 (6)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4765','EPSG','3568',0.3,468.63,81.389,445.221,'EPSG','9001',-3.839242,-3.262525,10.566866,'EPSG','9104',16.132726,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3924','MGI 1901 to Slovenia 1996 (7)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4765','EPSG','3569',0.3,439.5,-11.77,494.976,'EPSG','9001',-0.026585,-4.65641,10.155824,'EPSG','9104',16.270002,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3925','MGI 1901 to Slovenia 1996 (8)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4765','EPSG','3570',0.3,524.442,3.275,519.002,'EPSG','9001',0.013287,-3.119714,10.232693,'EPSG','9104',4.184981,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3926','MGI 1901 to Slovenia 1996 (9)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4765','EPSG','3571',0.3,281.529,45.963,537.515,'EPSG','9001',-2.570437,-9.648271,10.759507,'EPSG','9104',26.465548,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3927','MGI 1901 to Slovenia 1996 (10)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4765','EPSG','3572',0.3,355.845,274.282,462.979,'EPSG','9001',-9.086933,-6.491055,14.502181,'EPSG','9104',20.888647,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3928','MGI 1901 to Slovenia 1996 (11)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4765','EPSG','3573',0.3,400.629,90.651,472.249,'EPSG','9001',-3.261138,-5.263404,11.83739,'EPSG','9104',20.022676,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3962','MGI 1901 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','3906','EPSG','4326','EPSG','2370',5.0,682.0,-203.0,480.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3963','MGI 1901 to ETRS89 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','3906','EPSG','4258','EPSG','3234',1.0,551.7,162.9,467.9,'EPSG','9001',6.04,1.96,-11.38,'EPSG','9104',-4.82,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3964','MGI 1901 to WGS 84 (4)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','3906','EPSG','4326','EPSG','3234',1.0,551.7,162.9,467.9,'EPSG','9001',6.04,1.96,-11.38,'EPSG','9104',-4.82,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3965','MGI 1901 to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','3906','EPSG','4326','EPSG','3536',10.0,695.5,-216.6,491.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3971','PSAD56 to SIRGAS 1995 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4248','EPSG','4170','EPSG','3241',5.0,-60.31,245.935,31.008,'EPSG','9001',-12.324,-3.755,7.37,'EPSG','9104',0.447,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3972','Chua to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4224','EPSG','4326','EPSG','3619',5.0,-143.87,243.37,-33.52,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3990','PSAD56 to WGS 84 (14)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','3241',5.0,-60.31,245.935,31.008,'EPSG','9001',-12.324,-3.755,7.37,'EPSG','9104',0.447,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','3998','Arc 1960 to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4210','EPSG','4326','EPSG','1058',35.0,-153.0,-5.0,-292.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4064','RGRDC 2005 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4046','EPSG','4326','EPSG','3613',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4065','Katanga 1955 to RGRDC 2005 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4695','EPSG','4046','EPSG','3614',1.5,-103.746,-9.614,-255.95,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4066','Katanga 1955 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4695','EPSG','4326','EPSG','3614',1.5,-103.746,-9.614,-255.95,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4067','Katanga 1955 to RGRDC 2005 (2)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4695','EPSG','4046','EPSG','3614',0.5,-102.283,-10.277,-257.396,'EPSG','9001',-3.976,-0.002,-6.203,'EPSG','9104',12.315,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,5580868.818,2826402.46,-1243557.996,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4068','Katanga 1955 to WGS 84 (2)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4695','EPSG','4326','EPSG','3614',1.0,-102.283,-10.277,-257.396,'EPSG','9001',-3.976,-0.002,-6.203,'EPSG','9104',12.315,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,5580868.818,2826402.46,-1243557.996,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4069','Chua to SIRGAS 2000 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4224','EPSG','4674','EPSG','3619',5.0,-144.35,242.88,-33.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4070','Chua to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4224','EPSG','4674','EPSG','1053',5.0,-144.35,242.88,-33.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','4076','SREF98 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4075','EPSG','4258','EPSG','3534',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4077','SREF98 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4075','EPSG','4326','EPSG','3534',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4078','ED87 to ETRS89 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4231','EPSG','4258','EPSG','1297',0.3,-83.11,-97.38,-117.22,'EPSG','9001',0.0276,-0.2167,0.2147,'EPSG','9109',0.1218,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4084','REGCAN95 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4081','EPSG','4326','EPSG','3199',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4290','Cadastre 1997 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4475','EPSG','4326','EPSG','3340',1.0,-381.788,-57.501,-256.673,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4461','NAD83(HARN) to NAD83(NSRS2007) (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4152','EPSG','4759','EPSG','1323',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4476','RGM04 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4470','EPSG','4326','EPSG','1159',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4477','RGSPM06 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4463','EPSG','4326','EPSG','1220',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4478','Cadastre 1997 to RGM04 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4475','EPSG','4470','EPSG','3340',0.1,-381.788,-57.501,-256.673,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4560','RRAF 1991 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4558','EPSG','4326','EPSG','2824',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4590','ITRF88 to ITRF2000 (1)',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','EPSG','4910','EPSG','4919','EPSG','1262',0.0,-0.0247,-0.0115,0.0979,'EPSG','9001',-0.0001,0.0,0.00018,'EPSG','9104',-0.00895,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','4591','ITRF89 to ITRF2000 (1)',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','EPSG','4911','EPSG','4919','EPSG','1262',0.0,-0.0297,-0.0475,0.0739,'EPSG','9001',0.0,0.0,0.00018,'EPSG','9104',-0.00585,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','4592','ITRF90 to ITRF2000 (1)',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','EPSG','4912','EPSG','4919','EPSG','1262',0.0,-0.0247,-0.0235,0.0359,'EPSG','9001',0.0,0.0,0.00018,'EPSG','9104',-0.00245,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','4593','ITRF91 to ITRF2000 (1)',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','EPSG','4913','EPSG','4919','EPSG','1262',0.0,-0.0267,-0.0275,0.0199,'EPSG','9001',0.0,0.0,0.00018,'EPSG','9104',-0.00215,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','4594','ITRF92 to ITRF2000 (1)',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','EPSG','4914','EPSG','4919','EPSG','1262',0.0,-0.0147,-0.0135,0.0139,'EPSG','9001',0.0,0.0,0.00018,'EPSG','9104',-0.00075,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','4595','ITRF93 to ITRF2000 (1)',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','EPSG','4915','EPSG','4919','EPSG','1262',0.0,-0.0127,-0.0065,0.0209,'EPSG','9001',0.00039,-0.0008,0.00114,'EPSG','9104',-0.00195,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','4596','ITRF94 to ITRF2000 (1)',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','EPSG','4916','EPSG','4919','EPSG','1262',0.0,-0.0067,-0.0061,0.0185,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',-0.00155,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','4597','ITRF96 to ITRF2000 (1)',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','EPSG','4917','EPSG','4919','EPSG','1262',0.0,-0.0067,-0.0061,0.0185,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',-0.00155,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','4598','ITRF97 to ITRF2000 (1)',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','EPSG','4918','EPSG','4919','EPSG','1262',0.0,-0.0067,-0.0061,0.0185,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',-0.00155,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','4599','ITRF2000 to ITRF2005 (1)',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','EPSG','4919','EPSG','4896','EPSG','1262',0.0,-0.0001,0.0008,0.0058,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',-0.0004,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','4827','S-JTSK to ETRS89 (4)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4156','EPSG','4258','EPSG','1211',1.0,485.0,169.5,483.8,'EPSG','9001',7.786,4.398,4.103,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4828','S-JTSK to WGS 84 (4)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4156','EPSG','4326','EPSG','1211',1.0,485.0,169.5,483.5,'EPSG','9001',7.786,4.398,4.103,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','4829','S-JTSK to ETRS89 (3)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4156','EPSG','4258','EPSG','1211',0.5,558.7,68.8,452.2,'EPSG','9001',-8.025,-4.105,-4.295,'EPSG','9104',5.74,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3977358.114,1407223.203,4765441.589,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4830','Amersfoort to ETRS89 (5)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4289','EPSG','4258','EPSG','1275',0.5,565.4171,50.3319,465.5524,'EPSG','9001',1.9342,-1.6677,9.1019,'EPSG','9109',4.0725,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4831','Amersfoort to ETRS89 (6)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4289','EPSG','4258','EPSG','1275',0.5,593.0248,25.9984,478.7459,'EPSG','9001',1.9342,-1.6677,9.1019,'EPSG','9109',4.0725,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3903453.1482,368135.3134,5012970.3051,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4832','Mexico ITRF92 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4483','EPSG','4326','EPSG','1160',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4833','Amersfoort to WGS 84 (4)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4289','EPSG','4326','EPSG','1275',1.0,565.4171,50.3319,465.5524,'EPSG','9001',1.9342,-1.6677,9.1019,'EPSG','9109',4.0725,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4834','Chua to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4224','EPSG','4326','EPSG','3619',5.0,-144.35,242.88,-33.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4835','Tahiti 79 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4690','EPSG','4326','EPSG','3124',1.0,221.525,152.948,176.768,'EPSG','9001',2.3847,1.3896,0.877,'EPSG','9104',11.4741,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','4836','S-JTSK to WGS 84 (4)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4156','EPSG','4326','EPSG','1211',1.0,485.0,169.5,483.8,'EPSG','9001',7.786,4.398,4.103,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4840','RGFG95 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4624','EPSG','4326','EPSG','1097',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','4905','PTRA08 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5013','EPSG','4326','EPSG','3670',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5021','Porto Santo 1995 to PTRA08 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4663','EPSG','5013','EPSG','1314',2.0,-503.229,-247.375,312.582,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5022','Porto Santo 1995 to PTRA08 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4663','EPSG','5013','EPSG','3679',1.0,-303.956,224.556,214.306,'EPSG','9001',9.405,-6.626,-12.583,'EPSG','9104',1.327,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5023','Porto Santo 1995 to PTRA08 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4663','EPSG','5013','EPSG','3680',0.2,-503.3,-247.574,313.025,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5024','Azores Oriental 1995 to PTRA08 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4664','EPSG','5013','EPSG','1345',2.0,-204.926,140.353,55.063,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5025','Azores Oriental 1995 to PTRA08 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4664','EPSG','5013','EPSG','2871',0.3,-204.519,140.159,55.404,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5026','Azores Oriental 1995 to PTRA08 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4664','EPSG','5013','EPSG','3683',0.1,-205.808,140.771,54.326,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5027','Azores Central 1995 to PTRA08 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4665','EPSG','5013','EPSG','1301',2.0,-105.679,166.1,-37.322,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5028','Azores Central 1995 to PTRA08 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4665','EPSG','5013','EPSG','2873',0.5,-105.377,165.769,-36.965,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5029','Azores Central 1995 to PTRA08 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4665','EPSG','5013','EPSG','3681',0.2,-105.359,165.804,-37.05,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5030','Azores Central 1995 to PTRA08 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4665','EPSG','5013','EPSG','2874',1.0,-105.531,166.39,-37.326,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5031','Azores Central 1995 to PTRA08 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4665','EPSG','5013','EPSG','2875',0.8,-105.756,165.972,-37.313,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5032','Azores Central 1995 to PTRA08 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4665','EPSG','5013','EPSG','2872',0.6,-106.235,166.236,-37.768,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5033','Azores Occidental 1939 to PTRA08 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4182','EPSG','5013','EPSG','1344',0.5,-423.058,-172.868,83.772,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5034','Azores Occidental 1939 to PTRA08 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4182','EPSG','5013','EPSG','3684',0.2,-423.053,-172.871,83.771,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5035','Azores Occidental 1939 to PTRA08 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4182','EPSG','5013','EPSG','3685',0.3,-423.024,-172.923,83.83,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5036','Datum 73 to ETRS89 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4274','EPSG','4258','EPSG','1294',3.0,-223.15,110.132,36.711,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5037','Datum 73 to ETRS89 (5)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4274','EPSG','4258','EPSG','1294',2.0,-230.994,102.591,25.199,'EPSG','9001',0.633,-0.239,0.9,'EPSG','9104',1.95,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5038','Lisbon to ETRS89 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4207','EPSG','4258','EPSG','1294',2.5,-303.861,-60.693,103.607,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5039','Lisbon 1890 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4666','EPSG','4258','EPSG','1294',5.0,508.088,-191.042,565.223,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5040','ED50 to ETRS89 (13)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4258','EPSG','1294',5.0,-87.987,-108.639,-121.593,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5043','Pulkovo 1995 to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4200','EPSG','4326','EPSG','1198',1.0,24.47,-130.89,-81.56,'EPSG','9001',0.0,0.0,-0.13,'EPSG','9104',-0.22,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5044','Pulkovo 1942 to WGS 84 (20)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','3296',3.0,23.57,-140.95,-79.8,'EPSG','9001',0.0,-0.35,-0.79,'EPSG','9104',-0.22,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5050','Aratu to SIRGAS 2000 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4674','EPSG','3700',0.5,-157.84,308.54,-146.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5051','Aratu to WGS 84 (13)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','3700',1.0,-157.84,308.54,-146.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5052','Aratu to SIRGAS 2000 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4674','EPSG','2963',0.5,-160.31,314.82,-142.25,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5053','Aratu to WGS 84 (14)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','2963',1.0,-160.31,314.82,-142.25,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5054','Aratu to SIRGAS 2000 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4674','EPSG','2964',0.5,-161.11,310.25,-144.64,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5055','Aratu to WGS 84 (15)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','2964',1.0,-161.11,310.25,-144.64,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5056','Aratu to SIRGAS 2000 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4674','EPSG','3699',0.5,-160.4,302.29,-144.19,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5057','Aratu to WGS 84 (16)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','3699',1.0,-160.4,302.29,-144.19,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5058','Aratu to SIRGAS 2000 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4674','EPSG','3692',0.5,-153.54,302.33,-152.37,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5059','Aratu to WGS 84 (17)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','3692',1.0,-153.54,302.33,-152.37,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5060','Aratu to SIRGAS 2000 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4674','EPSG','3693',0.5,-151.5,300.09,-151.15,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5061','Aratu to WGS 84 (18)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','3693',1.0,-151.5,300.09,-151.15,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5062','Aratu to SIRGAS 2000 (7)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4674','EPSG','3696',0.5,-156.8,298.41,-147.41,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5063','Aratu to WGS 84 (19)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','3696',1.0,-156.8,298.41,-147.41,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5064','Aratu to SIRGAS 2000 (8)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4674','EPSG','3697',0.5,-157.4,295.05,-150.19,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5065','Aratu to WGS 84 (20)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','3697',1.0,-157.4,295.05,-150.19,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5066','Aratu to SIRGAS 2000 (9)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4674','EPSG','3698',0.5,-151.99,287.04,-147.45,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5067','Aratu to WGS 84 (21)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','3698',1.0,-151.99,287.04,-147.45,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5077','Karbala 1979 to IGRS (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4743','EPSG','3889','EPSG','3625',0.3,70.995,-335.916,262.898,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5078','Karbala 1979 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4743','EPSG','4326','EPSG','3625',1.0,70.995,-335.916,262.898,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5189','Korean 1985 to Korea 2000 (1)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4162','EPSG','4737','EPSG','3266',1.0,-145.907,505.034,685.756,'EPSG','9001',-1.162,2.347,1.592,'EPSG','9104',6.342,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-3159521.31,4068151.32,3748113.85,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5191','Korean 1985 to WGS 84 (1)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4162','EPSG','4326','EPSG','3266',1.0,-145.907,505.034,685.756,'EPSG','9001',-1.162,2.347,1.592,'EPSG','9104',6.342,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-3159521.31,4068151.32,3748113.85,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5194','VN-2000 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4756','EPSG','4326','EPSG','3770',1.0,-192.873,-39.382,-111.202,'EPSG','9001',0.00205,0.0005,-0.00335,'EPSG','9104',0.0188,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5226','S-JTSK/05 to ETRS89 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','5228','EPSG','4258','EPSG','1079',0.0,572.213,85.334,461.94,'EPSG','9001',-4.9732,-1.529,-5.2484,'EPSG','9104',3.5378,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5227','S-JTSK/05 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','5228','EPSG','4326','EPSG','1079',1.0,572.213,85.334,461.94,'EPSG','9001',-4.9732,-1.529,-5.2484,'EPSG','9104',3.5378,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5236','SLD99 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','5233','EPSG','4326','EPSG','3310',14.0,-0.293,766.95,87.713,'EPSG','9001',-0.195704,-1.695068,-3.473016,'EPSG','9104',-0.039338,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5239','S-JTSK to WGS 84 (5)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4156','EPSG','4326','EPSG','1079',1.0,572.213,85.334,461.94,'EPSG','9001',-4.9732,-1.529,-5.2484,'EPSG','9104',3.5378,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5248','Timbalai 1948 to GDBD2009 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4298','EPSG','4326','EPSG','1055',1.0,-689.5937,623.84046,-65.93566,'EPSG','9001',0.02331,-1.17094,0.80054,'EPSG','9104',5.88536,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','5249','Timbalai 1948 to WGS 84 (5)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4298','EPSG','4326','EPSG','1055',1.0,-689.5937,623.84046,-65.93566,'EPSG','9001',0.02331,-1.17094,0.80054,'EPSG','9104',5.88536,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5260','TUREF to ETRS89 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','5252','EPSG','4258','EPSG','1237',0.1,0.023,0.036,-0.068,'EPSG','9001',0.00176,0.00912,-0.01136,'EPSG','9104',0.00439,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5261','TUREF to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5252','EPSG','4326','EPSG','1237',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5267','DRUKREF 03 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5264','EPSG','4326','EPSG','1048',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5327','ISN2004 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5324','EPSG','4326','EPSG','1120',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5333','ITRF2005 to ITRF2008 (1)',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','EPSG','4896','EPSG','5332','EPSG','1262',0.0,0.0005,0.0009,0.0047,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',-0.00094,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','5350','Campo Inchauspe to POSGAR 2007 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4221','EPSG','5340','EPSG','3215',5.0,-148.0,136.0,90.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5351','POSGAR 2007 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5340','EPSG','4326','EPSG','1033',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5374','MARGEN to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5354','EPSG','4326','EPSG','1049',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5375','SIRGAS-Chile to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5360','EPSG','4326','EPSG','1066',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5376','CR05 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5365','EPSG','4326','EPSG','1074',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5377','MACARIO SOLIS to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5371','EPSG','4326','EPSG','1186',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5378','Peru96 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5373','EPSG','4326','EPSG','1189',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5384','SIRGAS-ROU98 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5381','EPSG','4326','EPSG','1247',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5385','Yacare to SIRGAS-ROU98 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4309','EPSG','5381','EPSG','3326',1.5,-124.45,183.74,44.64,'EPSG','9001',-0.4384,0.5446,-0.9706,'EPSG','9104',-2.1365,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5386','Yacare to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4309','EPSG','4326','EPSG','3326',1.5,-124.45,183.74,44.64,'EPSG','9001',-0.4384,0.5446,-0.9706,'EPSG','9104',-2.1365,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5395','SIRGAS_ES2007.8 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5393','EPSG','4326','EPSG','1087',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5470','Ocotepeque 1935 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5451','EPSG','4326','EPSG','3232',8.0,213.11,9.37,-74.95,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5473','Ocotepeque 1935 to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','5451','EPSG','4326','EPSG','3232',5.0,213.116,9.358,-74.946,'EPSG','9001',1.14e-05,-2.98e-07,3.1e-05,'EPSG','9101',-5.22,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','5474','Ocotepeque 1935 to NAD27 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5451','EPSG','4326','EPSG','3876',9.0,205.435,-29.099,292.202,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','5483','Luxembourg 1930 to ETRS89 (4)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4181','EPSG','4258','EPSG','1146',0.1,-265.8867,76.9851,20.2667,'EPSG','9001',0.33746,3.09264,-2.53861,'EPSG','9104',0.4598,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4103620.3943,440486.4235,4846923.4558,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5484','Luxembourg 1930 to WGS 84 (4)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4181','EPSG','4326','EPSG','1146',1.0,-265.8867,76.9851,20.2667,'EPSG','9001',0.33746,3.09264,-2.53861,'EPSG','9104',0.4598,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4103620.3943,440486.4235,4846923.4558,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5485','Luxembourg 1930 to ETRS89 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4181','EPSG','4258','EPSG','1146',0.1,-189.6806,18.3463,-42.7695,'EPSG','9001',0.33746,3.09264,-2.53861,'EPSG','9104',0.4598,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5486','Luxembourg 1930 to WGS 84 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4181','EPSG','4326','EPSG','1146',1.0,-189.6806,18.3463,-42.7695,'EPSG','9001',0.33746,3.09264,-2.53861,'EPSG','9104',0.4598,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5491','Martinique 1938 to RGAF09 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4625','EPSG','5489','EPSG','3276',0.1,127.744,547.069,118.359,'EPSG','9001',-3.1116,4.9509,-0.8837,'EPSG','9104',14.1012,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5492','Guadeloupe 1948 to RGAF09 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4622','EPSG','5489','EPSG','2829',10.0,-471.06,-3.212,-305.843,'EPSG','9001',0.4752,-0.9978,0.2068,'EPSG','9104',2.1353,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5493','Fort Marigot to RGAF09 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4621','EPSG','5489','EPSG','2828',10.0,151.613,253.832,-429.084,'EPSG','9001',-0.0506,0.0958,-0.5974,'EPSG','9104',-0.3971,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5494','RRAF 1991 to RGAF09 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4558','EPSG','5489','EPSG','1156',0.1,0.7696,-0.8692,-12.0631,'EPSG','9001',-0.32511,-0.21041,-0.0239,'EPSG','9104',0.2829,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5495','RRAF 1991 to RGAF09 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4558','EPSG','5489','EPSG','2829',0.1,1.2239,2.4156,-1.7598,'EPSG','9001',0.038,-0.16101,-0.04925,'EPSG','9104',0.2387,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5496','RRAF 1991 to RGAF09 (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4558','EPSG','5489','EPSG','2828',0.1,14.6642,5.2493,0.1981,'EPSG','9001',-0.06838,0.09141,-0.58131,'EPSG','9104',-0.4067,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5497','POSGAR 2007 to SIRGAS 2000 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5340','EPSG','4674','EPSG','1033',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5501','RGAF09 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5489','EPSG','4326','EPSG','2824',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5521','Grand Comoros to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4646','EPSG','4326','EPSG','2807',999.0,-963.0,510.0,-359.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5553','PNG94 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5546','EPSG','4326','EPSG','1187',2.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5584','MOLDREF99 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4023','EPSG','4258','EPSG','1162',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5585','MOLDREF99 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4023','EPSG','4326','EPSG','1162',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5586','Pulkovo 1942 to UCS-2000 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4284','EPSG','5561','EPSG','1242',3.5,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5590','UCS-2000 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','5561','EPSG','4326','EPSG','1242',5.0,25.0,-141.0,-78.5,'EPSG','9001',0.0,-0.35,-0.736,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5599','FEH2010 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5593','EPSG','4326','EPSG','3889',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5622','OSGB 1936 to WGS 84 (8)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4277','EPSG','4326','EPSG','3893',3.0,370.936,-108.938,435.682,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5630','Nord Sahara 1959 to WGS 84 (8)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4307','EPSG','4326','EPSG','3917',5.0,-168.52,-72.05,304.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5660','Nord Sahara 1959 to WGS 84 (9)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4307','EPSG','4326','EPSG','1026',1.0,-209.3622,-87.8162,404.6198,'EPSG','9001',0.0046,3.4784,0.5805,'EPSG','9104',-1.4547,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5662','AGD66 to PNG94 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4202','EPSG','5546','EPSG','4013',2.0,-124.0,-60.0,153.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5822','UCS-2000 to ITRF2005 (1)',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','EPSG','5558','EPSG','4896','EPSG','1242',1.0,24.0,-121.0,-76.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','5823','Ukraine 2000 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5561','EPSG','4326','EPSG','1242',1.0,24.0,-121.0,-76.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','5826','DB_REF to ETRS89 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','5681','EPSG','4258','EPSG','3339',0.5,584.9636,107.7175,413.8067,'EPSG','9001',-1.1155,-0.2824,3.1384,'EPSG','9104',7.9922,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5827','AGD66 to GDA94 (19)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4202','EPSG','4283','EPSG','2283',0.5,-129.164,-41.188,130.718,'EPSG','9001',-0.246,-0.374,-0.329,'EPSG','9104',-2.955,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5840','UCS-2000 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5561','EPSG','4326','EPSG','1242',1.0,24.0,-121.0,-76.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5841','AGD66 to WGS 84 (19)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4202','EPSG','4326','EPSG','4013',2.0,-124.0,-60.0,154.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5878','Timbalai 1948 to GDBD2009 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4298','EPSG','5246','EPSG','1055',1.0,-689.5937,623.84046,-65.93566,'EPSG','9001',0.02331,-1.17094,0.80054,'EPSG','9104',5.88536,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5881','SAD69(96) to SIRGAS 2000 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5527','EPSG','4674','EPSG','1053',5.0,-67.35,3.88,-38.22,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5882','SAD69 to WGS 84 (16)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','1053',5.0,-67.35,3.88,-38.22,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5888','Combani 1950 to RGM04 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4632','EPSG','4470','EPSG','3340',0.3,-599.928,-275.552,-195.665,'EPSG','9001',-0.0835,-0.4715,0.0602,'EPSG','9104',49.2814,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','5900','ITRF2005 to ETRF2005 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4896','EPSG','8397','EPSG','1298',0.0,56.0,48.0,-37.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1027',0.054,0.518,-0.781,'EPSG','1032',0.0,'EPSG','1030',1989.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6136','GCGD59 to CIGD11 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4723','EPSG','6135','EPSG','3185',0.3,-179.483,-69.379,-27.584,'EPSG','9001',7.862,-8.163,-6.042,'EPSG','9104',-13.925,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6137','SIGD61 to CIGD11 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4726','EPSG','6135','EPSG','3186',0.15,8.853,-52.644,180.304,'EPSG','9001',0.393,2.323,-2.96,'EPSG','9104',-24.081,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6142','GCGD59 to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4723','EPSG','4326','EPSG','3185',1.0,-179.483,-69.379,-27.584,'EPSG','9001',7.862,-8.163,-6.042,'EPSG','9104',-13.925,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6143','SIGD61 to WGS 84 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4726','EPSG','4326','EPSG','3186',1.0,8.853,-52.644,180.304,'EPSG','9001',0.393,2.323,-2.96,'EPSG','9104',-24.081,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6177','CIGD11 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','6135','EPSG','4326','EPSG','1063',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6191','Corrego Alegre 1970-72 to SAD69 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4225','EPSG','4618','EPSG','1293',5.0,-138.7,164.4,34.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6192','Corrego Alegre 1970-72 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4225','EPSG','4326','EPSG','1293',5.0,-205.57,168.77,-4.12,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6193','Corrego Alegre 1970-72 to SIRGAS 2000 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4225','EPSG','4674','EPSG','1293',5.0,-206.05,168.28,-3.82,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6194','Corrego Alegre 1970-72 to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4225','EPSG','4326','EPSG','1293',5.0,-206.05,168.28,-3.82,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6195','SAD69(96) to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5527','EPSG','4326','EPSG','1053',5.0,-67.35,3.88,-38.22,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6196','Minna to WGS 84 (16)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','4127',5.0,-93.179,-87.124,114.338,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6205','MGI 1901 to ETRS89 (5)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4258','EPSG','1148',1.0,517.4399,228.7318,579.7954,'EPSG','9001',-4.045,-4.304,15.612,'EPSG','9104',-8.312,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6206','MGI 1901 to WGS 84 (10)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4326','EPSG','1148',2.0,521.748,229.489,590.921,'EPSG','9001',-4.029,-4.488,15.521,'EPSG','9104',-9.78,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6208','Nepal 1981 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','6207','EPSG','4326','EPSG','1171',0.3,293.17,726.18,245.36,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6276','ITRF2008 to GDA94 (1)',NULL,NULL,'EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','5332','EPSG','4938','EPSG','1036',0.03,-84.68,-19.42,32.01,'EPSG','1025',-0.4254,2.2578,2.4015,'EPSG','1031',9.71,'EPSG','1028',1.42,1.34,0.9,'EPSG','1027',1.5461,1.182,1.1551,'EPSG','1032',0.109,'EPSG','1030',1994.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6277','ITRF2005 to GDA94 (1)',NULL,NULL,'EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','4896','EPSG','4938','EPSG','1036',0.03,-79.73,-6.86,38.03,'EPSG','1025',-0.0351,2.1211,2.1411,'EPSG','1031',6.636,'EPSG','1028',2.25,-0.62,-0.56,'EPSG','1027',1.4707,1.1443,1.1701,'EPSG','1032',0.294,'EPSG','1030',1994.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6278','ITRF2000 to GDA94 (2)',NULL,NULL,'EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','4919','EPSG','4938','EPSG','1036',0.06,-45.91,-29.85,-20.37,'EPSG','1025',-1.6705,0.4594,1.9356,'EPSG','1031',7.07,'EPSG','1028',-4.66,3.55,11.24,'EPSG','1027',1.7454,1.4868,1.224,'EPSG','1032',0.249,'EPSG','1030',1994.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6279','ITRF97 to GDA94 (2)',NULL,NULL,'EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','4918','EPSG','4938','EPSG','1036',0.18,-14.63,-27.62,-25.32,'EPSG','1025',-1.7893,-0.6047,0.9962,'EPSG','1031',6.695,'EPSG','1028',-8.6,0.36,11.25,'EPSG','1027',1.6394,1.5198,1.3801,'EPSG','1032',0.007,'EPSG','1030',1994.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6280','ITRF96 to GDA94 (2)',NULL,NULL,'EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','4917','EPSG','4938','EPSG','1036',0.11,24.54,-36.43,-68.12,'EPSG','1025',-2.7359,-2.0431,0.3731,'EPSG','1031',6.901,'EPSG','1028',-21.8,4.71,26.27,'EPSG','1027',2.0203,2.1735,1.629,'EPSG','1032',0.388,'EPSG','1030',1994.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6281','ITRF88 to ITRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4910','EPSG','4919','EPSG','1262',0.01,-2.47,-1.15,9.79,'EPSG','1033',-0.1,0.0,0.18,'EPSG','1031',-8.95,'EPSG','1028',0.0,0.06,0.14,'EPSG','1034',0.0,0.0,-0.02,'EPSG','1032',-0.01,'EPSG','1030',1988.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6282','ITRF89 to ITRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4911','EPSG','4919','EPSG','1262',0.01,-2.97,-4.75,7.39,'EPSG','1033',0.0,0.0,0.18,'EPSG','1031',-5.85,'EPSG','1028',0.0,0.6,-3.2,'EPSG','1034',0.0,0.0,-0.02,'EPSG','1032',-0.01,'EPSG','1030',1988.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','6283','ITRF90 to ITRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4912','EPSG','4919','EPSG','1262',0.01,-2.47,-2.35,3.59,'EPSG','1033',0.0,0.0,0.18,'EPSG','1031',-2.45,'EPSG','1028',0.0,0.06,0.14,'EPSG','1034',0.0,0.0,-0.02,'EPSG','1032',-0.01,'EPSG','1030',1988.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6284','ITRF91 to ITRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4913','EPSG','4919','EPSG','1262',0.01,-2.67,-2.75,1.99,'EPSG','1033',0.0,0.0,0.18,'EPSG','1031',-2.15,'EPSG','1028',0.0,0.06,0.14,'EPSG','1034',0.0,0.0,-0.02,'EPSG','1032',-0.01,'EPSG','1030',1988.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6285','ITRF92 to ITRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4914','EPSG','4919','EPSG','1262',0.01,-1.47,-1.35,1.39,'EPSG','1033',0.0,0.0,0.18,'EPSG','1031',-0.75,'EPSG','1028',0.0,0.06,0.14,'EPSG','1034',0.0,0.0,-0.02,'EPSG','1032',-0.01,'EPSG','1030',1988.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6286','ITRF93 to ITRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4915','EPSG','4919','EPSG','1262',0.01,-1.27,-0.65,2.09,'EPSG','1033',0.39,-0.8,1.14,'EPSG','1031',-1.95,'EPSG','1028',0.29,0.02,0.06,'EPSG','1034',0.11,0.19,-0.07,'EPSG','1032',-0.01,'EPSG','1030',1988.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6287','ITRF94 to ITRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4916','EPSG','4919','EPSG','1262',0.01,-0.67,-0.61,1.85,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',-1.55,'EPSG','1028',0.0,0.06,0.14,'EPSG','1034',0.0,0.0,-0.02,'EPSG','1032',-0.01,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6288','ITRF96 to ITRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4917','EPSG','4919','EPSG','1262',0.01,-0.67,-0.61,1.85,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',-1.55,'EPSG','1028',0.0,0.06,0.14,'EPSG','1034',0.0,0.0,-0.02,'EPSG','1032',-0.01,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6289','ITRF97 to ITRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4918','EPSG','4919','EPSG','1262',0.01,-0.67,-0.61,1.85,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',-1.55,'EPSG','1028',0.0,0.06,0.14,'EPSG','1034',0.0,0.0,-0.02,'EPSG','1032',-0.01,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6290','ITRF2000 to ITRF2005 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4919','EPSG','4896','EPSG','1262',0.01,-0.1,0.8,5.8,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',-0.4,'EPSG','1028',0.2,-0.1,0.18,'EPSG','1027',0.0,0.0,-0.02,'EPSG','1032',-0.08,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','6291','ITRF88 to ITRF2008 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4910','EPSG','5332','EPSG','1262',0.01,-22.8,-2.6,125.2,'EPSG','1025',-0.1,0.0,-0.06,'EPSG','1031',-10.41,'EPSG','1028',-0.1,0.5,3.2,'EPSG','1027',0.0,0.0,-0.02,'EPSG','1032',-0.09,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6292','ITRF89 to ITRF2008 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4911','EPSG','5332','EPSG','1262',0.01,-27.8,-38.6,101.2,'EPSG','1025',0.0,0.0,-0.06,'EPSG','1031',-7.31,'EPSG','1028',-0.1,0.5,3.2,'EPSG','1027',0.0,0.0,-0.02,'EPSG','1032',-0.09,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6293','ITRF90 to ITRF2008 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4912','EPSG','5332','EPSG','1262',0.01,-22.8,-14.6,63.2,'EPSG','1025',0.0,0.0,-0.06,'EPSG','1031',-3.91,'EPSG','1028',-0.1,0.5,3.2,'EPSG','1027',0.0,0.0,-0.02,'EPSG','1032',-0.09,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6294','ITRF91 to ITRF2008 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4913','EPSG','5332','EPSG','1262',0.01,-24.8,-18.6,47.2,'EPSG','1025',0.0,0.0,-0.06,'EPSG','1031',-3.61,'EPSG','1028',-0.1,0.5,3.2,'EPSG','1027',0.0,0.0,-0.02,'EPSG','1032',-0.09,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6295','ITRF92 to ITRF2008 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4914','EPSG','5332','EPSG','1262',0.01,-12.8,-4.6,41.2,'EPSG','1025',0.0,0.0,-0.06,'EPSG','1031',-2.21,'EPSG','1028',-0.1,0.5,3.2,'EPSG','1027',0.0,0.0,-0.02,'EPSG','1032',-0.09,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6296','ITRF93 to ITRF2008 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4915','EPSG','5332','EPSG','1262',0.01,24.0,-2.4,38.6,'EPSG','1025',1.71,1.48,0.3,'EPSG','1031',-3.41,'EPSG','1028',2.8,0.1,2.4,'EPSG','1027',0.11,0.19,-0.07,'EPSG','1032',-0.09,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6297','ITRF94 to ITRF2008 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4916','EPSG','5332','EPSG','1262',0.01,-4.8,-2.6,33.2,'EPSG','1025',0.0,0.0,-0.06,'EPSG','1031',-2.92,'EPSG','1028',-0.1,0.5,3.2,'EPSG','1027',0.0,0.0,-0.02,'EPSG','1032',-0.09,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6298','ITRF96 to ITRF2008 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4917','EPSG','5332','EPSG','1262',0.01,-4.8,-2.6,33.2,'EPSG','1025',0.0,0.0,-0.06,'EPSG','1031',-2.92,'EPSG','1028',-0.1,0.5,3.2,'EPSG','1027',0.0,0.0,-0.02,'EPSG','1032',-0.09,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6299','ITRF97 to ITRF2008 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4918','EPSG','5332','EPSG','1262',0.01,-4.8,-2.6,33.2,'EPSG','1025',0.0,0.0,-0.06,'EPSG','1031',-2.92,'EPSG','1028',-0.1,0.5,3.2,'EPSG','1027',0.0,0.0,-0.02,'EPSG','1032',-0.09,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6300','ITRF2000 to ITRF2008 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4919','EPSG','5332','EPSG','1262',0.01,1.9,1.7,10.5,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',-1.34,'EPSG','1028',-0.1,-0.1,1.8,'EPSG','1027',0.0,0.0,0.0,'EPSG','1032',-0.08,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6301','ITRF2005 to ITRF2008 (2)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4896','EPSG','5332','EPSG','1262',0.01,2.0,0.9,4.7,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',-0.94,'EPSG','1028',-0.1,-0.3,0.0,'EPSG','1027',0.0,0.0,0.0,'EPSG','1032',0.0,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','6302','ITRF2000 to ITRF2005 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4919','EPSG','4896','EPSG','1262',0.01,-0.1,0.8,5.8,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',-0.4,'EPSG','1028',0.2,-0.1,1.8,'EPSG','1027',0.0,0.0,0.0,'EPSG','1032',-0.08,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6313','ITRF96 to GDA94 (1)',NULL,NULL,'EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','4917','EPSG','4938','EPSG','1036',0.1,-0.014,0.0431,0.201,'EPSG','9001',0.012464,0.012013,0.006434,'EPSG','9104',0.024607,'EPSG','9202',0.0411,0.0218,0.0383,'EPSG','1042',0.002542,0.001431,-0.000234,'EPSG','1043',0.005897,'EPSG','1041',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6314','ITRF97 to GDA94 (1)',NULL,NULL,'EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','4918','EPSG','4938','EPSG','1036',999.0,-0.2088,0.0119,0.1805,'EPSG','9001',0.012059,0.013369,0.011825,'EPSG','9104',0.004559,'EPSG','9202',-0.022,0.0049,0.0169,'EPSG','1042',0.00204,0.001782,0.001697,'EPSG','1043',-0.00109,'EPSG','1041',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','6315','ITRF2000 to GDA94 (1)',NULL,NULL,'EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','4919','EPSG','4938','EPSG','1036',0.1,-0.0761,-0.0101,0.0444,'EPSG','9001',0.008765,0.009361,0.009325,'EPSG','9104',0.007935,'EPSG','9202',0.011,-0.0045,-0.0174,'EPSG','1042',0.001034,0.000671,0.001039,'EPSG','1043',-0.000538,'EPSG','1041',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6373','Mexico ITRF2008 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','6365','EPSG','4326','EPSG','1160',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6388','Ocotepeque 1935 to NAD27 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5451','EPSG','4267','EPSG','3876',9.0,205.435,-29.099,292.202,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','6389','ITRF2005 to ITRF2008 (2)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4896','EPSG','5332','EPSG','1262',0.01,2.0,0.9,4.7,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',-0.94,'EPSG','1028',-0.3,0.0,0.0,'EPSG','1027',0.0,0.0,0.0,'EPSG','1032',0.0,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6392','ITRF97 to GDA94 (1)',NULL,NULL,'EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','4918','EPSG','4938','EPSG','1036',0.1,-0.2088,0.0119,0.1855,'EPSG','9001',0.012059,0.013639,0.011825,'EPSG','9104',0.004559,'EPSG','9202',-0.022,0.0049,0.0169,'EPSG','1042',0.00204,0.001782,0.001697,'EPSG','1043',-0.00109,'EPSG','1041',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6698','JGD2000 to JGD2011 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4612','EPSG','6668','EPSG','4163',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6701','GDBD2009 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5246','EPSG','4326','EPSG','1055',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6710','RDN2008 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','6706','EPSG','4258','EPSG','1127',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6711','RDN2008 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','6706','EPSG','4326','EPSG','1127',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6864','ITRF96 to NAD83(CORS96) (1)',NULL,NULL,'EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','4917','EPSG','6781','EPSG','1511',0.0,0.991,-1.9072,-0.5129,'EPSG','9001',25.79,9.65,11.66,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1042',0.0532,-0.7423,-0.0316,'EPSG','1032',0.0,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6865','ITRF97 to NAD83(CORS96) (1)',NULL,NULL,'EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','4918','EPSG','6781','EPSG','1511',0.06,0.9889,-1.9074,-0.503,'EPSG','9001',25.915,9.426,11.599,'EPSG','1031',-0.93,'EPSG','1028',0.0007,-0.0001,0.0019,'EPSG','1042',0.067,-0.757,-0.031,'EPSG','1032',-0.19,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6866','ITRF2000 to NAD83(CORS96) (1)',NULL,NULL,'EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','4919','EPSG','6781','EPSG','1511',0.0,0.9956,-1.9013,-0.5215,'EPSG','9001',25.915,9.426,11.599,'EPSG','1031',0.62,'EPSG','1028',0.0007,-0.0007,0.0005,'EPSG','1042',0.067,-0.757,-0.051,'EPSG','1032',-0.18,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6872','Abidjan 1987 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4143','EPSG','4326','EPSG','2296',2.0,-123.1,53.2,465.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6873','Tananarive to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4297','EPSG','4326','EPSG','1149',3.0,-198.383,-240.517,-107.909,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6888','Ocotepeque 1935 to NAD27 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5451','EPSG','4267','EPSG','3876',9.0,205.435,-29.099,-292.202,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6889','Ocotepeque 1935 to WGS 84 (2)',NULL,NULL,'EPSG','1063','Molodensky-Badekas (PV geog2D domain)','EPSG','5451','EPSG','4326','EPSG','3232',5.0,213.116,9.358,-74.946,'EPSG','9001',1.14e-05,-2.98e-07,3.1e-05,'EPSG','9101',5.22,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,617749.7118,-6250547.7336,1102063.6099,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6890','Ocotepeque 1935 to CR05 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5451','EPSG','5365','EPSG','3232',8.0,213.11,9.37,-74.95,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6891','Ocotepeque 1935 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','5451','EPSG','4326','EPSG','3876',14.0,205.0,96.0,-98.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6895','Viti Levu 1912 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4752','EPSG','4326','EPSG','3195',5.0,98.0,390.0,-22.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6896','Accra to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4168','EPSG','4326','EPSG','3252',6.0,-170.0,33.0,326.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6897','St. Lucia 1955 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4606','EPSG','4326','EPSG','3298',2.0,-153.0,153.0,307.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6898','Lisbon to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4207','EPSG','4326','EPSG','1294',43.0,-306.0,-62.0,105.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6899','Pulkovo 1942 to WGS 84 (21)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','3246',5.0,22.0,-126.0,-85.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6900','Observatario to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4129','EPSG','4326','EPSG','1329',17.0,-132.0,-110.0,-335.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6901','Tete to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4127','EPSG','4326','EPSG','3281',17.0,-80.0,-100.0,-228.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6902','Timbalai 1948 to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4298','EPSG','4326','EPSG','2349',6.0,-679.0,667.0,-49.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6903','Yoff to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4310','EPSG','4326','EPSG','1207',5.0,-30.0,190.0,89.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6904','Arc 1950 to WGS 84 (11)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4209','EPSG','4326','EPSG','1150',29.0,-179.0,-81.0,-314.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6905','AGD66 to WGS 84 (20)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4202','EPSG','4326','EPSG','2575',9.0,-128.0,-52.0,153.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6906','Arc 1950 to WGS 84 (10)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4209','EPSG','4326','EPSG','1261',17.0,-145.0,-97.0,-292.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6907','Ayabelle Lighthouse to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4713','EPSG','4326','EPSG','3238',17.0,-77.0,-128.0,142.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6908','Fahud to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4232','EPSG','4326','EPSG','4009',7.0,-345.0,3.0,223.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6909','Hjorsey 1955 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4658','EPSG','4326','EPSG','3262',7.0,-73.0,47.0,-83.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6910','Aden 1925 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','6881','EPSG','4326','EPSG','1340',999.0,-24.0,-203.0,268.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6911','Bekaa Valley 1920 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','6882','EPSG','4326','EPSG','3269',999.0,-183.0,-15.0,273.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6912','Bioko to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','6883','EPSG','4326','EPSG','4220',42.0,-235.0,-110.0,393.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6913','Gambia to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','6894','EPSG','4326','EPSG','3250',43.0,-63.0,176.0,185.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6914','South East Island 1943 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','6892','EPSG','4326','EPSG','4183',1.0,-43.685,-179.785,-267.721,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6926','South East Island 1943 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','6892','EPSG','4326','EPSG','4183',1.0,-76.269,-16.683,68.562,'EPSG','9001',-6.275,10.536,-4.286,'EPSG','9104',-13.686,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6935','IGS08 to IGRS (1)',NULL,NULL,'EPSG','1061','Molodensky-Badekas (PV geocentric domain)','EPSG','6934','EPSG','3887','EPSG','1124',0.05,0.208,-0.012,-0.229,'EPSG','9001',-0.01182,0.00811,-0.01677,'EPSG','9104',-0.0059,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3777505.028,3779254.396,3471111.632,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6936','IGS08 to IGRS (2)',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','EPSG','6934','EPSG','3887','EPSG','1124',0.05,-0.214,0.119,0.156,'EPSG','9001',-0.01182,0.00811,-0.01677,'EPSG','9104',-0.0059,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6937','AGD66 to PNG94 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4202','EPSG','5546','EPSG','4214',1.0,-0.41,-2.37,2.0,'EPSG','9001',3.592,3.698,3.989,'EPSG','9104',8.843,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6938','AGD66 to PNG94 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4202','EPSG','5546','EPSG','4214',4.0,-129.0,-58.0,152.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6939','AGD66 to PNG94 (4)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4202','EPSG','5546','EPSG','4013',1.0,-131.876,-54.554,453.346,'EPSG','9001',-5.2155,-8.2042,0.09,'EPSG','9104',5.02,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6940','AGD66 to PNG94 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4202','EPSG','5546','EPSG','4013',2.0,-131.3,-55.3,151.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6941','AGD66 to PNG94 (6)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4202','EPSG','5546','EPSG','4216',0.5,45.928,-177.212,336.867,'EPSG','9001',-4.6039,-3.0921,0.5729,'EPSG','9104',36.796,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6942','AGD66 to PNG94 (7)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4202','EPSG','5546','EPSG','4216',2.5,-137.4,-58.9,150.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6943','AGD66 to WGS 84 (21)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4202','EPSG','4326','EPSG','4214',5.0,-129.0,-58.0,152.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6944','AGD66 to WGS 84 (22)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4202','EPSG','4326','EPSG','4013',4.0,-131.3,-55.3,151.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6945','AGD66 to WGS 84 (23)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4202','EPSG','4326','EPSG','4216',4.0,-137.4,-58.9,150.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6949','PSAD56 to SIRGAS-Chile (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','5360','EPSG','4231',5.0,-302.0,272.0,-360.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6950','PSAD56 to SIRGAS-Chile (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','5360','EPSG','4222',5.0,-328.0,340.0,-329.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6951','PSAD56 to SIRGAS-Chile (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','5360','EPSG','4221',5.0,-352.0,403.0,-287.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6960','VN-2000 to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4756','EPSG','4326','EPSG','3328',1.0,-191.90441429,-39.30318279,-111.45032835,'EPSG','9001',-0.00928836,0.01975479,-0.00427372,'EPSG','9104',0.252906278,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6963','Albanian 1987 to ETRS89 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4191','EPSG','4258','EPSG','3212',0.2,-44.183,-0.58,-38.489,'EPSG','9001',2.3867,2.7072,-3.5196,'EPSG','9104',-8.2703,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','6964','Albanian 1987 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4191','EPSG','4326','EPSG','3212',1.0,-44.183,-0.58,-38.489,'EPSG','9001',2.3867,2.7072,-3.5196,'EPSG','9104',-8.2703,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','6967','SAD69 to SIRGAS-Chile (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','4232',5.0,-59.0,-11.0,-52.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','6968','SAD69 to SIRGAS-Chile (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','5360','EPSG','4224',5.0,-64.0,0.0,-32.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6969','SAD69 to SIRGAS-Chile (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','4221',5.0,-72.0,10.0,-32.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','6970','SAD69 to SIRGAS-Chile (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','5360','EPSG','2805',5.0,-79.0,13.0,-14.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6971','PSAD56 to WGS 84 (15)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','4231',17.0,-302.0,272.0,-360.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6972','PSAD56 to WGS 84 (16)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','4222',17.0,-328.0,340.0,-329.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6973','PSAD56 to WGS 84 (17)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4248','EPSG','4326','EPSG','4221',17.0,-352.0,403.0,-287.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6974','SAD69 to WGS 84 (17)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','4232',4.0,-59.0,-11.0,-52.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6975','SAD69 to WGS 84 (18)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','4224',4.0,-64.0,0.0,-32.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6976','SAD69 to WGS 84 (19)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','4221',7.0,-72.0,10.0,-32.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6977','SAD69 to WGS 84 (20)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4326','EPSG','2805',6.0,-79.0,13.0,-14.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6992','IGD05 to IGD05/12',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','7136','EPSG','7139','EPSG','1126',0.05,0.2255,-0.3709,-0.1171,'EPSG','9001',-0.00388,0.00063,-0.0182,'EPSG','9104',0.013443,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6993','IGD05/12 to IG05/12 Intermediate CRS',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','7139','EPSG','6990','EPSG','2603',0.0,-24.0024,-17.1032,-17.8444,'EPSG','9001',-0.33009,-1.85269,1.66969,'EPSG','9104',5.4248,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6998','Nahrwan 1967 to WGS 84 (11)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4270','EPSG','4326','EPSG','4226',5.0,-233.4,-160.7,381.5,'EPSG','9001',0.0,0.0,-0.554,'EPSG','9104',0.2263,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','6999','Nahrwan 1967 to WGS 84 (12)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4270','EPSG','4326','EPSG','4225',0.15,-253.4392,-148.452,386.5267,'EPSG','9001',-0.15605,-0.43,0.1013,'EPSG','9104',-0.0424,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7002','Nahrwan 1967 to WGS 84 (13)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4270','EPSG','4326','EPSG','4229',1.0,-246.1633,-152.9047,382.6047,'EPSG','9001',-0.0989,-0.1382,-0.0768,'EPSG','9104',2.1e-06,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7003','Nahrwan 1967 to WGS 84 (14)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4270','EPSG','4326','EPSG','1850',1.0,-242.8907,-149.0671,384.416,'EPSG','9001',-0.19044,-0.24987,-0.13925,'EPSG','9104',0.0001746,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7004','Nahrwan 1967 to WGS 84 (15)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4270','EPSG','4326','EPSG','4227',1.0,-246.734,-153.4345,382.1477,'EPSG','9001',0.116617,0.165167,0.091327,'EPSG','9104',1.94e-05,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7033','Nahrwan 1934 to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4744','EPSG','4326','EPSG','3625',30.0,-242.2,-144.9,370.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7083','Perroud 1950 to RGTAAF07 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4637','EPSG','7073','EPSG','2817',0.5,324.912,153.282,172.026,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7140','IGD05 to IG05 Intermediate CRS',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','7136','EPSG','6983','EPSG','2603',0.0,-23.8085,-17.5937,-17.801,'EPSG','9001',-0.3306,-1.85706,1.64828,'EPSG','9104',5.4374,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7377','ONGD14 to WGS 84 (1)',NULL,NULL,'EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','7371','EPSG','4978','EPSG','1183',0.1,0.819,-0.5762,-1.6446,'EPSG','9001',0.00378,0.03317,-0.00318,'EPSG','9104',0.0693,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7442','Nord Sahara 1959 to WGS 84 (10)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4307','EPSG','4326','EPSG','4382',100.0,-181.7,64.7,247.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7443','ONGD14 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','7373','EPSG','4326','EPSG','1183',2.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7444','CGRS93 to ETRS89 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','6311','EPSG','4258','EPSG','3236',0.1,8.846,-4.394,-1.122,'EPSG','9001',0.00237,0.146528,-0.130428,'EPSG','9104',0.783926,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','7445','CGRS93 to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','6311','EPSG','4326','EPSG','3236',1.0,8.846,-4.394,-1.122,'EPSG','9001',0.00237,0.146528,-0.130428,'EPSG','9104',0.783926,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','7448','SAD69 to SIRGAS-Chile (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','5360','EPSG','4232',5.0,-59.0,-11.0,-52.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7449','SAD69 to SIRGAS-Chile (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','5360','EPSG','4221',5.0,-72.0,10.0,-32.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7666','WGS 84 (G1762) to ITRF2008 (1)',NULL,NULL,'EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','7664','EPSG','5332','EPSG','1262',0.01,0.0,0.0,0.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7667','WGS 84 (G1674) to WGS 84 (G1762) (1)',NULL,NULL,'EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','7662','EPSG','7664','EPSG','1262',0.01,-4.0,3.0,4.0,'EPSG','1025',0.27,-0.27,0.38,'EPSG','1031',-6.9,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7668','WGS 84 (G1150) to WGS 84 (G1762) (1)',NULL,NULL,'EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','7660','EPSG','7664','EPSG','1262',0.02,-6.0,5.0,20.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',-4.5,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7669','WGS 84 (G1674) to ITRF2008 (1)',NULL,NULL,'EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','7662','EPSG','5332','EPSG','1262',0.01,0.0,0.0,0.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7670','WGS 84 (G1150) to ITRF2000 (1)',NULL,NULL,'EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','7660','EPSG','4919','EPSG','1262',0.02,0.0,0.0,0.0,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7671','WGS 84 (G873) to ITRF92 (1)',NULL,NULL,'EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','7658','EPSG','4914','EPSG','1262',0.1,0.0,0.0,0.0,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7672','WGS 84 (G730) to ITRF92 (1)',NULL,NULL,'EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','7656','EPSG','4914','EPSG','1262',0.2,0.0,0.0,0.0,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7675','MGI 1901 to ETRS89 (6)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4258','EPSG','3534',0.5,577.88891,165.22205,391.18289,'EPSG','9001',-4.9145,0.94729,13.05098,'EPSG','9104',7.78664,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7676','MGI 1901 to WGS 84 (11)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4326','EPSG','3534',1.0,577.88891,165.22205,391.18289,'EPSG','9001',-4.9145,0.94729,13.05098,'EPSG','9104',7.78664,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7697','Egypt 1907 to WGS 84 (4)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4229','EPSG','4326','EPSG','1086',1.2,-127.535,113.495,-12.7,'EPSG','9001',1.603747,-0.153612,-5.364408,'EPSG','9104',5.33745,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4854969.728,2945552.013,2868447.61,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7698','NAD27 to WGS 84 (89)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','3290',1.0,-32.3841359,180.4090461,120.8442577,'EPSG','9001',2.1545854,0.1498782,-0.5742915,'EPSG','9104',8.1049164,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7702','PZ-90 to PZ-90.02 (1)',NULL,NULL,'EPSG','1066','Time-specific Coordinate Frame rotation (geocen)','EPSG','4922','EPSG','7677','EPSG','1262',0.17,-1.07,-0.03,0.02,'EPSG','9001',0.0,0.0,-130.0,'EPSG','1031',-0.22,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2002.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7703','PZ-90.02 to PZ-90.11 (1)',NULL,NULL,'EPSG','1066','Time-specific Coordinate Frame rotation (geocen)','EPSG','7677','EPSG','7679','EPSG','1262',0.07,-0.373,0.186,0.202,'EPSG','9001',-2.3,3.54,-4.21,'EPSG','1031',-0.008,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7704','PZ-90 to PZ-90.11 (1)',NULL,NULL,'EPSG','1032','Coordinate Frame rotation (geocentric domain)','EPSG','4922','EPSG','7679','EPSG','1262',0.2,-1.443,0.156,0.222,'EPSG','9001',-2.3,3.54,-134.21,'EPSG','1031',-0.228,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7705','GSK-2011 to PZ-90.11 (1)',NULL,NULL,'EPSG','1066','Time-specific Coordinate Frame rotation (geocen)','EPSG','7681','EPSG','7679','EPSG','1198',0.03,0.0,0.014,-0.008,'EPSG','9001',-0.562,-0.019,0.053,'EPSG','1031',-0.0006,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2011.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7720','CGRS93 to ETRS89 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','6311','EPSG','4258','EPSG','3236',0.1,8.846,-4.394,-1.122,'EPSG','9001',0.00237,0.146528,-0.130428,'EPSG','9104',0.783926,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7721','CGRS93 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','6311','EPSG','4326','EPSG','3236',1.0,8.846,-4.394,-1.122,'EPSG','9001',0.00237,0.146528,-0.130428,'EPSG','9104',0.783926,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7790','ITRF2008 to ITRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','5332','EPSG','7789','EPSG','1262',0.01,-1.6,-1.9,-2.4,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.02,'EPSG','1028',0.0,0.0,0.1,'EPSG','1027',0.0,0.0,0.0,'EPSG','1032',-0.03,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7806','Pulkovo 1942(83) to BGS2005 (1)',NULL,NULL,'EPSG','1063','Molodensky-Badekas (PV geog2D domain)','EPSG','4178','EPSG','7798','EPSG','3224',5.0,5.0,-133.0,-104.0,'EPSG','9001',-1.4,-2.0,3.4,'EPSG','9104',-3.9901,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4223032.0,2032778.0,4309209.0,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7807','ITRF2008 to NAD83(2011) (1)',NULL,NULL,'EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','5332','EPSG','6317','EPSG','1511',0.1,0.99343,-1.90331,-0.52655,'EPSG','9001',25.91467,9.42645,11.59935,'EPSG','1031',1.71504,'EPSG','1028',0.00079,-0.0006,-0.00134,'EPSG','1042',0.06667,-0.75744,-0.05133,'EPSG','1032',-0.10201,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7808','ITRF2008 to NAD83(PA11) (1)',NULL,NULL,'EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','5332','EPSG','6320','EPSG','4162',0.1,0.908,-2.0161,-0.5653,'EPSG','9001',27.741,13.469,2.712,'EPSG','1031',1.1,'EPSG','1028',0.0001,0.0001,-0.0018,'EPSG','1042',-0.384,1.007,-2.186,'EPSG','1032',0.08,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7809','ITRF2008 to NAD83(MA11) (1)',NULL,NULL,'EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','5332','EPSG','6323','EPSG','4167',0.1,0.908,-2.0161,-0.5653,'EPSG','9001',28.971,10.42,8.928,'EPSG','1031',1.1,'EPSG','1028',0.0001,0.0001,-0.0018,'EPSG','1042',-0.02,0.105,-0.347,'EPSG','1032',0.08,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7814','ITRF89 to ITRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4911','EPSG','4919','EPSG','1262',0.01,-2.97,-4.75,7.39,'EPSG','1033',0.0,0.0,0.18,'EPSG','1031',-5.85,'EPSG','1028',0.0,0.06,0.14,'EPSG','1034',0.0,0.0,-0.02,'EPSG','1032',-0.01,'EPSG','1030',1988.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7817','UCS-2000 to ITRF2000 (1)',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','EPSG','5558','EPSG','4919','EPSG','1242',0.0,24.322,-121.372,-75.847,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7833','Albanian 1987 to ETRS89 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4191','EPSG','4258','EPSG','3212',0.2,-44.183,-0.58,-38.489,'EPSG','9001',-2.3867,-2.7072,3.5196,'EPSG','9104',-8.2703,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7834','Albanian 1987 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4191','EPSG','4326','EPSG','3212',1.0,-44.183,-0.58,-38.489,'EPSG','9001',-2.3867,-2.7072,3.5196,'EPSG','9104',-8.2703,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7835','Pulkovo 1942(58) to WGS 84 (22)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4179','EPSG','4326','EPSG','4446',2.0,74.5,-112.5,-44.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7836','Pulkovo 1942(58) to Albanian 1987 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4179','EPSG','4191','EPSG','1025',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7892','SHGD2015 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','7886','EPSG','4326','EPSG','3183',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7893','Astro DOS 71 to SHGD2015 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4710','EPSG','7886','EPSG','3183',0.15,-323.65,551.39,-491.22,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7894','Astro DOS 71 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4710','EPSG','4326','EPSG','3183',1.0,-323.65,551.39,-491.22,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7895','Astro DOS 71 to SHGD2015 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4710','EPSG','7886','EPSG','3183',0.1,-112.854,12.27,-18.913,'EPSG','9001',2.1692,16.8896,17.1961,'EPSG','9104',-19.54517,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7896','SHGD2015 to Astro DOS 71 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4710','EPSG','4710','EPSG','3183',0.1,112.771,-12.282,18.935,'EPSG','9001',-2.1692,-16.8896,-17.1961,'EPSG','9104',19.54517,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7897','St. Helena Tritan to SHGD2015 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','7881','EPSG','7886','EPSG','3183',0.05,-0.077,0.079,0.086,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7898','St. Helena Tritan to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','7881','EPSG','4326','EPSG','3183',1.0,-0.077,0.079,0.086,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7932','ITRF89 to ETRF89 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4911','EPSG','7914','EPSG','1298',0.0,0.0,0.0,0.0,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1034',0.11,0.57,-0.71,'EPSG','1032',0.0,'EPSG','1030',1989.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7933','ITRF90 to ETRF90 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4912','EPSG','7916','EPSG','1298',0.0,1.9,2.8,-2.3,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1034',0.11,0.57,-0.71,'EPSG','1032',0.0,'EPSG','1030',1989.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7934','ITRF91 to ETRF91 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4913','EPSG','7918','EPSG','1298',0.0,2.1,2.5,-3.7,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1034',0.21,0.52,-0.68,'EPSG','1032',0.0,'EPSG','1030',1989.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7935','ITRF92 to ETRF92 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4914','EPSG','7920','EPSG','1298',0.0,3.8,4.0,-3.7,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1034',0.21,0.52,-0.68,'EPSG','1032',0.0,'EPSG','1030',1989.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7936','ITRF93 to ETRF93 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4915','EPSG','7922','EPSG','1298',0.0,1.9,5.3,-2.1,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1034',0.32,0.78,-0.67,'EPSG','1032',0.0,'EPSG','1030',1989.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7937','ITRF94 to ETRF94 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4916','EPSG','7924','EPSG','1298',0.0,4.1,4.1,-4.9,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1034',0.2,0.5,-0.65,'EPSG','1032',0.0,'EPSG','1030',1989.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7938','ITRF96 to ETRF96 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4917','EPSG','7926','EPSG','1298',0.0,4.1,4.1,-4.9,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1034',0.2,0.5,-0.65,'EPSG','1032',0.0,'EPSG','1030',1989.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7939','ITRF97 to ETRF97 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4918','EPSG','7928','EPSG','1298',0.0,4.1,4.1,-4.9,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1034',0.2,0.5,-0.65,'EPSG','1032',0.0,'EPSG','1030',1989.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7940','ITRF2000 to ETRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4919','EPSG','7930','EPSG','1298',0.0,5.4,5.1,-4.8,'EPSG','1033',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1034',0.081,0.49,-0.792,'EPSG','1032',0.0,'EPSG','1030',1989.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7941','ITRF2000 to ETRF2000 (2)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4919','EPSG','7930','EPSG','1298',0.0,54.0,51.0,-48.0,'EPSG','1025',0.891,5.39,-8.712,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1027',0.081,0.49,-0.792,'EPSG','1032',0.0,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7942','ITRF89 to ETRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4911','EPSG','7930','EPSG','1298',0.0,24.3,10.7,42.7,'EPSG','1025',0.891,5.39,-8.772,'EPSG','1031',-5.97,'EPSG','1028',0.0,0.6,1.4,'EPSG','1027',0.081,0.49,-0.812,'EPSG','1032',-0.01,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7943','ITRF90 to ETRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4912','EPSG','7930','EPSG','1298',0.0,29.3,34.7,4.7,'EPSG','1025',0.891,5.39,-8.772,'EPSG','1031',-2.57,'EPSG','1028',0.0,0.6,1.4,'EPSG','1027',0.081,0.49,-0.812,'EPSG','1032',-0.01,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7944','ITRF91 to ETRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4913','EPSG','7930','EPSG','1298',0.0,27.3,30.7,-11.3,'EPSG','1025',0.891,5.39,-8.772,'EPSG','1031',-2.27,'EPSG','1028',0.0,0.6,1.4,'EPSG','1027',0.081,0.49,-0.812,'EPSG','1032',-0.01,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7945','ITRF92 to ETRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4914','EPSG','7930','EPSG','1298',0.0,39.3,44.7,-17.3,'EPSG','1025',0.891,5.39,-8.772,'EPSG','1031',-0.87,'EPSG','1028',0.0,0.6,1.4,'EPSG','1027',0.081,0.49,-0.812,'EPSG','1032',-0.01,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7946','ITRF93 to ETRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4915','EPSG','7930','EPSG','1298',0.0,76.1,46.9,-19.9,'EPSG','1025',2.601,6.87,-8.412,'EPSG','1031',-2.07,'EPSG','1028',2.9,0.2,0.6,'EPSG','1027',0.191,0.68,-0.862,'EPSG','1032',-0.01,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7947','ITRF94 to ETRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4916','EPSG','7930','EPSG','1298',0.0,47.3,46.7,-25.3,'EPSG','1025',0.891,5.39,-8.772,'EPSG','1031',-1.58,'EPSG','1028',0.0,0.6,1.4,'EPSG','1027',0.081,0.49,-0.812,'EPSG','1032',-0.01,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7948','ITRF96 to ETRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4917','EPSG','7930','EPSG','1298',0.0,47.3,46.7,-25.3,'EPSG','1025',0.891,5.39,-8.772,'EPSG','1031',-1.58,'EPSG','1028',0.0,0.6,1.4,'EPSG','1027',0.081,0.49,-0.812,'EPSG','1032',-0.01,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7949','ITRF97 to ETRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4918','EPSG','7930','EPSG','1298',0.0,47.3,46.7,-25.3,'EPSG','1025',0.891,5.39,-8.772,'EPSG','1031',-1.58,'EPSG','1028',0.0,0.6,1.4,'EPSG','1027',0.081,0.49,-0.812,'EPSG','1032',-0.01,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7950','ITRF2005 to ETRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4896','EPSG','7930','EPSG','1298',0.0,54.1,50.2,-53.8,'EPSG','1025',0.891,5.39,-8.712,'EPSG','1031',0.4,'EPSG','1028',-0.2,0.1,-1.8,'EPSG','1027',0.081,0.49,-0.792,'EPSG','1032',0.08,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7951','ITRF2008 to ETRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','5332','EPSG','7930','EPSG','1298',0.0,52.1,49.3,-58.5,'EPSG','1025',0.891,5.39,-8.712,'EPSG','1031',1.34,'EPSG','1028',0.1,0.1,-1.8,'EPSG','1027',0.081,0.49,-0.792,'EPSG','1032',0.08,'EPSG','1030',2000.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7960','PZ-90.11 to ITRF2008 (1)',NULL,NULL,'EPSG','1066','Time-specific Coordinate Frame rotation (geocen)','EPSG','7679','EPSG','5332','EPSG','1262',0.004,-0.003,-0.001,0.0,'EPSG','9001',0.019,-0.042,0.002,'EPSG','1031',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','7961','WGS 84 (G1150) to PZ-90.02 (1)',NULL,NULL,'EPSG','1066','Time-specific Coordinate Frame rotation (geocen)','EPSG','7660','EPSG','7677','EPSG','1262',0.17,0.36,-0.08,-0.18,'EPSG','9001',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2002.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8048','GDA94 to GDA2020 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4283','EPSG','7844','EPSG','4177',0.01,61.55,-10.87,-40.19,'EPSG','1025',-39.4924,-32.7221,-32.8979,'EPSG','1031',-9.994,'EPSG','1028',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8049','ITRF2014 to GDA2020 (1)',NULL,NULL,'EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','7789','EPSG','7842','EPSG','4177',0.001,0.0,0.0,0.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1027',1.50379,1.18346,1.20716,'EPSG','1032',0.0,'EPSG','1030',2020.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8069','ITRF88 to ITRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4910','EPSG','7789','EPSG','1262',0.01,-25.4,0.5,154.8,'EPSG','1025',-0.1,0.0,-0.26,'EPSG','1031',-11.29,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.0,0.0,-0.02,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8070','ITRF89 to ITRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4911','EPSG','7789','EPSG','1262',0.01,-30.4,-35.5,130.8,'EPSG','1025',0.0,0.0,-0.26,'EPSG','1031',-8.19,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.0,0.0,-0.02,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8071','ITRF90 to ITRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4912','EPSG','7789','EPSG','1262',0.01,-25.4,-11.5,92.8,'EPSG','1025',0.0,0.0,-0.26,'EPSG','1031',-4.79,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.0,0.0,-0.02,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8072','ITRF91 to ITRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4913','EPSG','7789','EPSG','1262',0.01,-27.4,-15.5,76.8,'EPSG','1025',0.0,0.0,-0.26,'EPSG','1031',-4.49,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.0,0.0,-0.02,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8073','ITRF92 to ITRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4914','EPSG','7789','EPSG','1262',0.01,-15.4,-1.5,70.8,'EPSG','1025',0.0,0.0,-0.26,'EPSG','1031',-3.09,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.0,0.0,-0.02,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8074','ITRF93 to ITRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4915','EPSG','7789','EPSG','1262',0.01,50.4,-3.3,60.2,'EPSG','1025',2.81,3.38,-0.4,'EPSG','1031',-4.29,'EPSG','1028',2.8,0.1,2.5,'EPSG','1027',0.11,0.19,-0.07,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8075','ITRF94 to ITRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4916','EPSG','7789','EPSG','1262',0.01,-7.4,0.5,62.8,'EPSG','1025',0.0,0.0,-0.26,'EPSG','1031',-3.8,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.0,0.0,-0.02,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8076','ITRF96 to ITRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4917','EPSG','7789','EPSG','1262',0.01,-7.4,0.5,62.8,'EPSG','1025',0.0,0.0,-0.26,'EPSG','1031',-3.8,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.0,0.0,-0.02,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8077','ITRF97 to ITRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4918','EPSG','7789','EPSG','1262',0.01,-7.4,0.5,62.8,'EPSG','1025',0.0,0.0,-0.26,'EPSG','1031',-3.8,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.0,0.0,-0.02,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8078','ITRF2000 to ITRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4919','EPSG','7789','EPSG','1262',0.01,-0.7,-1.2,26.1,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',-2.12,'EPSG','1028',-0.1,-0.1,1.9,'EPSG','1027',0.0,0.0,0.0,'EPSG','1032',-0.11,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8079','ITRF2005 to ITRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4896','EPSG','7789','EPSG','1262',0.01,-2.6,-1.0,2.3,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',-0.92,'EPSG','1028',-0.3,0.0,0.1,'EPSG','1027',0.0,0.0,0.0,'EPSG','1032',-0.03,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8256','ITRF92 to NAD83(CSRS96) (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4914','EPSG','8230','EPSG','1061',0.0,0.936,-1.984,-0.543,'EPSG','9001',-27.5,-15.5,-10.7,'EPSG','1031',5.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1042',-0.052,0.742,0.032,'EPSG','1032',0.0,'EPSG','1030',1988.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8257','ITRF93 to NAD83(CSRS96) (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4915','EPSG','8230','EPSG','1061',0.0,0.94,-1.979,-0.534,'EPSG','9001',-27.09,-16.22,-9.87,'EPSG','1031',4.1,'EPSG','1028',0.0023,0.0004,-0.0008,'EPSG','1042',0.078,0.962,-0.008,'EPSG','1032',0.11,'EPSG','1030',1988.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8258','ITRF94 to NAD83(CSRS96) (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4916','EPSG','8230','EPSG','1061',0.0,0.942,-1.979,-0.534,'EPSG','9001',-27.3,-15.4,-10.7,'EPSG','1031',4.9,'EPSG','1028',-0.0004,0.0004,-0.0008,'EPSG','1042',-0.052,0.762,0.032,'EPSG','1032',0.0,'EPSG','1030',1988.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8259','ITRF96 to NAD83(CSRS)v2 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4917','EPSG','8233','EPSG','1061',0.0,0.991,-1.9072,-0.5129,'EPSG','9001',-25.79,-9.65,-11.66,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1042',-0.0532,0.7423,0.0316,'EPSG','1032',0.0,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8260','ITRF97 to NAD83(CSRS)v3 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4918','EPSG','8238','EPSG','1061',0.0,0.9889,-1.9074,-0.503,'EPSG','9001',-25.915,-9.426,-11.599,'EPSG','1031',-0.935,'EPSG','1028',0.0007,-0.0001,0.0019,'EPSG','1042',-0.067,0.757,0.031,'EPSG','1032',-0.192,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8261','ITRF2000 to NAD83(CSRS)v4 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4919','EPSG','8242','EPSG','1061',0.0,0.9956,-1.9013,-0.5214,'EPSG','9001',-25.915,-9.426,-11.599,'EPSG','1031',0.615,'EPSG','1028',0.0007,-0.0007,0.0005,'EPSG','1042',-0.067,0.757,0.051,'EPSG','1032',-0.182,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8262','ITRF2005 to NAD83(CSRS)v5 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4896','EPSG','8248','EPSG','1061',0.0,0.9963,-1.9024,-0.5219,'EPSG','9001',-25.915,-9.426,-11.599,'EPSG','1031',0.775,'EPSG','1028',0.0005,-0.0006,-0.0013,'EPSG','1042',-0.067,0.757,0.051,'EPSG','1032',-0.102,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8264','ITRF2008 to NAD83(CSRS)v6 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','5332','EPSG','8250','EPSG','1061',0.0,0.99343,-1.90331,-0.52655,'EPSG','9001',-25.91467,-9.42645,-11.59935,'EPSG','1031',1.71504,'EPSG','1028',0.00079,-0.0006,-0.00134,'EPSG','1042',-0.06667,0.75744,0.05133,'EPSG','1032',-0.102,'EPSG','1030',1997.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8265','ITRF2014 to NAD83(CSRS)v7 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','7789','EPSG','8253','EPSG','1061',0.0,1.0053,-1.9092,-0.5416,'EPSG','9001',-26.7814,0.4203,-10.9321,'EPSG','1031',0.37,'EPSG','1028',0.0008,-0.0006,-0.0014,'EPSG','1042',-0.0667,0.7574,0.0513,'EPSG','1032',-0.07,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8270','Saint Pierre et Miquelon 1950 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4638','EPSG','4326','EPSG','3299',1.0,11.363,424.148,373.13,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8365','ETRS89 to S-JTSK [JTSK03] (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4258','EPSG','8351','EPSG','1211',0.001,-485.014055,-169.473618,-483.842943,'EPSG','9001',7.78625453,4.39770887,4.10248899,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8366','ITRF2014 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','7789','EPSG','8401','EPSG','1298',0.0,0.0,0.0,0.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1027',0.085,0.531,-0.77,'EPSG','1032',0.0,'EPSG','1030',1989.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8367','S-JTSK [JTSK03] to ETRS89 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','8351','EPSG','4258','EPSG','1211',0.001,485.021,169.465,483.839,'EPSG','9001',-7.786342,-4.397554,-4.102655,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8368','S-JTSK [JTSK03] to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','8351','EPSG','4326','EPSG','1211',1.0,485.021,169.465,483.839,'EPSG','9001',-7.786342,-4.397554,-4.102655,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8393','Camacupa to WGS 84 (11)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4220','EPSG','4326','EPSG','4469',3.0,-93.799,-132.737,-219.073,'EPSG','9001',1.844,-0.648,6.37,'EPSG','9104',-0.169,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8405','ITRF2014 to ETRF2000 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','7789','EPSG','7930','EPSG','1298',0.0,54.7,52.2,-74.1,'EPSG','1025',1.701,10.29,-16.632,'EPSG','1031',2.12,'EPSG','1028',0.1,0.1,-1.9,'EPSG','1027',0.081,0.49,-0.792,'EPSG','1032',0.11,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8407','ITRF2014 to ETRF2014 (2)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','7789','EPSG','7930','EPSG','1298',0.0,0.0,0.0,0.0,'EPSG','1025',1.785,11.151,-16.17,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1027',0.085,0.531,-0.77,'EPSG','1032',0.0,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','8409','ITRF2008 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','5332','EPSG','7789','EPSG','1298',0.0,-1.6,-1.9,-2.4,'EPSG','1025',1.785,11.151,-16.17,'EPSG','1031',0.02,'EPSG','1028',0.0,0.0,0.1,'EPSG','1027',0.085,0.531,-0.77,'EPSG','1032',-0.03,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','8410','ITRF2005 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4896','EPSG','7789','EPSG','1298',0.0,-2.6,-1.0,-2.3,'EPSG','1025',1.785,11.151,-16.17,'EPSG','1031',-0.92,'EPSG','1028',-0.3,0.0,0.1,'EPSG','1027',0.085,0.531,-0.77,'EPSG','1032',-0.03,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','8411','ITRF2000 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4919','EPSG','7789','EPSG','1298',0.0,-0.7,-1.2,26.1,'EPSG','1025',1.785,11.151,-16.17,'EPSG','1031',-2.12,'EPSG','1028',-0.1,-0.1,1.9,'EPSG','1027',0.085,0.531,-0.77,'EPSG','1032',-0.11,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','8412','ITRF97 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4918','EPSG','7789','EPSG','1298',0.0,-7.4,0.5,62.8,'EPSG','1025',1.785,11.151,-16.43,'EPSG','1031',-3.8,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.085,0.531,-0.79,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','8413','ITRF96 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4917','EPSG','7789','EPSG','1298',0.0,-7.4,0.5,62.8,'EPSG','1025',1.785,11.151,-16.43,'EPSG','1031',-3.8,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.085,0.531,-0.79,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','8414','ITRF94 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4916','EPSG','7789','EPSG','1298',0.0,-7.4,0.5,62.8,'EPSG','1025',1.785,11.151,-16.43,'EPSG','1031',-3.8,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.085,0.531,-0.79,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','8415','ITRF93 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4915','EPSG','7789','EPSG','1298',0.0,50.4,-3.3,60.2,'EPSG','1025',4.595,14.531,-16.57,'EPSG','1031',-4.29,'EPSG','1028',2.8,0.1,2.5,'EPSG','1027',0.195,0.721,-0.84,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','8416','ITRF92 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4914','EPSG','7789','EPSG','1298',0.0,-15.4,-1.5,70.8,'EPSG','1025',1.785,11.151,-16.43,'EPSG','1031',-3.09,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.085,0.531,-0.79,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','8417','ITRF91 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4913','EPSG','7789','EPSG','1298',0.0,-27.4,-15.5,76.8,'EPSG','1025',1.785,11.151,-16.43,'EPSG','1031',-4.49,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.085,0.531,-0.79,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','8423','ITRF90 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4912','EPSG','7789','EPSG','1298',0.0,-25.4,-11.5,92.8,'EPSG','1025',1.785,11.151,-16.43,'EPSG','1031',-4.79,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.085,0.531,-0.79,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','8424','ITRF89 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4911','EPSG','7789','EPSG','1298',0.0,-30.4,-35.5,130.8,'EPSG','1025',1.785,11.151,-16.43,'EPSG','1031',-8.19,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.085,0.531,-0.79,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','8435','Macao 2008 to Macao 1920 (1)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','8431','EPSG','8428','EPSG','1147',999.0,202.865,303.99,155.873,'EPSG','9001',34.067,-76.126,-32.647,'EPSG','9104',-6.096,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-2361757.652,5417232.187,2391453.053,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8436','Macao 2008 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','8431','EPSG','4326','EPSG','1147',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8437','Hong Kong 1980 to Hong Kong Geodetic CS (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4611','EPSG','8427','EPSG','1118',1.0,-162.619,-276.961,-161.763,'EPSG','9001',0.067741,-2.243649,-1.158827,'EPSG','9104',-1.094239,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8438','Macao 1920 to WGS 84 (1)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','8428','EPSG','4326','EPSG','1147',1.0,-202.865,-303.99,-155.873,'EPSG','9001',-34.079,76.126,32.66,'EPSG','9104',6.096,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-2361554.788,5417536.177,2391608.926,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8439','Hong Kong Geodetic CS to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','8427','EPSG','4326','EPSG','1118',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8448','GDA2020 to WGS 84 (G1762) (1)',NULL,NULL,'EPSG','1056','Time-dependent Coordinate Frame rotation (geocen)','EPSG','7842','EPSG','7664','EPSG','4177',0.2,0.0,0.0,0.0,'EPSG','1025',0.0,0.0,0.0,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1027',-1.50379,-1.18346,-1.20716,'EPSG','1032',0.0,'EPSG','1030',2020.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8450','GDA2020 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','7844','EPSG','4326','EPSG','4177',3.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8452','Padang to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4280','EPSG','4326','EPSG','1355',6.0,-377.0,681.0,-50.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8674','La Canoa to PSAD56 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4247','EPSG','4248','EPSG','3327',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8680','MGI 1901 to ETRS89 (7)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','3906','EPSG','4258','EPSG','1050',1.0,489.88,183.912,533.711,'EPSG','9001',5.76545,4.69994,-12.58211,'EPSG','9104',1.00646,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8681','MGI 1901 to WGS 84 (12)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','3906','EPSG','4258','EPSG','1050',1.0,489.88,183.912,533.711,'EPSG','9001',5.76545,4.69994,-12.58211,'EPSG','9104',1.00646,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','8688','MGI 1901 to WGS 84 (12)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4326','EPSG','3307',1.0,476.08,125.947,417.81,'EPSG','9001',-4.610862,-2.388137,11.942335,'EPSG','9104',9.896638,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8689','MGI 1901 to Slovenia 1996 (12)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','3906','EPSG','4765','EPSG','3307',1.0,476.08,125.947,417.81,'EPSG','9001',-4.610862,-2.388137,11.942335,'EPSG','9104',9.896638,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8822','MTRF-2000 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','8818','EPSG','4326','EPSG','1206',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8823','MGI 1901 to WGS 84 (12)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','3906','EPSG','4326','EPSG','1050',1.0,489.88,183.912,533.711,'EPSG','9001',5.76545,4.69994,-12.58211,'EPSG','9104',1.00646,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8824','Ain el Abd to MTRF-2000 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4204','EPSG','8818','EPSG','3303',5.0,-61.15,-315.86,-3.51,'EPSG','9001',0.41,0.74,-3.52,'EPSG','9104',1.36,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8828','RGPF to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4687','EPSG','4326','EPSG','1098',0.5,0.072,-0.507,-0.245,'EPSG','9001',0.0183,-0.0003,0.007,'EPSG','9104',-0.0093,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8829','Tahiti 79 to RGPF (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4690','EPSG','4687','EPSG','3124',0.5,221.525,152.948,176.768,'EPSG','9001',2.3847,1.3896,0.877,'EPSG','9104',11.4741,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8830','Tahiti 79 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4690','EPSG','4326','EPSG','3124',1.0,221.597,152.441,176.523,'EPSG','9001',2.403,1.3893,0.884,'EPSG','9104',11.4648,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8831','Moorea 87 to RGPF (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4691','EPSG','4687','EPSG','3125',0.5,218.697,151.257,176.995,'EPSG','9001',3.5048,2.004,1.281,'EPSG','9104',10.991,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8832','Moorea 87 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4691','EPSG','4326','EPSG','3125',1.0,218.769,150.75,176.75,'EPSG','9001',3.5231,2.0037,1.288,'EPSG','9104',10.9817,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8833','Tahaa 54 to RGPF (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4629','EPSG','4687','EPSG','2812',0.5,72.438,345.918,79.486,'EPSG','9001',-1.6045,-0.8823,-0.5565,'EPSG','9104',1.3746,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8834','Tahaa 54 to WGS 84 (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4629','EPSG','4326','EPSG','2812',1.0,72.51,345.411,79.241,'EPSG','9001',-1.5862,-0.8826,-0.5495,'EPSG','9104',1.3653,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8835','Fatu Iva 72 to RGPF (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4688','EPSG','4687','EPSG','3133',2.0,347.103,1078.125,2623.922,'EPSG','9001',33.8875,-70.6773,9.3943,'EPSG','9104',186.074,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8842','Fatu Iva 72 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4688','EPSG','4326','EPSG','3133',2.0,347.175,1077.618,2623.677,'EPSG','9001',33.9058,-70.6776,9.4013,'EPSG','9104',186.0647,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8843','IGN63 Hiva Oa to RGPF (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4689','EPSG','4687','EPSG','3131',0.5,410.721,55.049,80.746,'EPSG','9001',-2.5779,-2.3514,-0.6664,'EPSG','9104',17.3311,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8844','IGN63 Hiva Oa to WGS 84 (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4689','EPSG','4326','EPSG','3131',2.0,410.793,54.542,80.501,'EPSG','9001',-2.5596,-2.3517,-0.6594,'EPSG','9104',17.3218,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8845','IGN63 Hiva Oa to RGPF (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4689','EPSG','4687','EPSG','3132',2.0,374.715,-58.407,-0.957,'EPSG','9001',-16.2111,-11.4626,-5.5357,'EPSG','9104',-0.5409,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8846','IGN63 Hiva Oa to WGS 84 (4)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4689','EPSG','4326','EPSG','3132',2.0,374.787,-58.914,-1.202,'EPSG','9001',-16.1928,-11.4629,-5.5287,'EPSG','9104',-0.5502,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8847','IGN72 Nuku Hiva to RGPF (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4630','EPSG','4687','EPSG','2810',0.5,165.732,216.72,180.505,'EPSG','9001',-0.6434,-0.4512,-0.0791,'EPSG','9104',7.4204,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8848','IGN72 Nuku Hiva to WGS 84 (5)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4630','EPSG','4326','EPSG','2810',1.0,165.804,216.213,180.26,'EPSG','9001',-0.6251,-0.4515,-0.0721,'EPSG','9104',7.4111,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8849','IGN72 Nuku Hiva to RGPF (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4630','EPSG','4687','EPSG','3127',2.0,1363.785,1362.687,398.811,'EPSG','9001',-4.5322,-6.7579,-1.0574,'EPSG','9104',268.361,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8850','IGN72 Nuku Hiva to WGS 84 (6)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4630','EPSG','4326','EPSG','3127',2.0,1363.857,1362.18,398.566,'EPSG','9001',-4.5139,-6.7582,-1.0504,'EPSG','9104',268.3517,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8851','IGN72 Nuku Hiva to RGPF (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4630','EPSG','4687','EPSG','3128',0.5,259.551,297.612,197.833,'EPSG','9001',1.4866,2.1224,0.4612,'EPSG','9104',27.0249,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8852','IGN72 Nuku Hiva to WGS 84 (7)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4630','EPSG','4326','EPSG','3128',1.0,259.623,297.105,197.588,'EPSG','9001',1.5049,2.1221,0.4682,'EPSG','9104',27.0156,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8853','Maupiti 83 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4692','EPSG','4326','EPSG','3126',1.0,217.109,86.452,23.711,'EPSG','9001',0.0183,-0.0003,0.007,'EPSG','9104',-0.0093,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8869','ITRF2008 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','5332','EPSG','8401','EPSG','1298',0.0,-1.6,-1.9,-2.4,'EPSG','1025',1.785,11.151,-16.17,'EPSG','1031',0.02,'EPSG','1028',0.0,0.0,0.1,'EPSG','1027',0.085,0.531,-0.77,'EPSG','1032',-0.03,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8870','ITRF2005 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4896','EPSG','8401','EPSG','1298',0.0,-2.6,-1.0,2.3,'EPSG','1025',1.785,11.151,-16.17,'EPSG','1031',-0.92,'EPSG','1028',-0.3,0.0,0.1,'EPSG','1027',0.085,0.531,-0.77,'EPSG','1032',-0.03,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8871','ITRF2000 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4919','EPSG','8401','EPSG','1298',0.0,-0.7,-1.2,26.1,'EPSG','1025',1.785,11.151,-16.17,'EPSG','1031',-2.12,'EPSG','1028',-0.1,-0.1,1.9,'EPSG','1027',0.085,0.531,-0.77,'EPSG','1032',-0.11,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8872','ITRF97 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4918','EPSG','8401','EPSG','1298',0.0,-7.4,0.5,62.8,'EPSG','1025',1.785,11.151,-16.43,'EPSG','1031',-3.8,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.085,0.531,-0.79,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8873','ITRF96 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4917','EPSG','8401','EPSG','1298',0.0,-7.4,0.5,62.8,'EPSG','1025',1.785,11.151,-16.43,'EPSG','1031',-3.8,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.085,0.531,-0.79,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8874','ITRF94 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4916','EPSG','8401','EPSG','1298',0.0,-7.4,0.5,62.8,'EPSG','1025',1.785,11.151,-16.43,'EPSG','1031',-3.8,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.085,0.531,-0.79,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8875','ITRF93 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4915','EPSG','8401','EPSG','1298',0.0,50.4,-3.3,60.2,'EPSG','1025',4.595,14.531,-16.57,'EPSG','1031',-4.29,'EPSG','1028',2.8,0.1,2.5,'EPSG','1027',0.195,0.721,-0.84,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8876','ITRF92 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4914','EPSG','8401','EPSG','1298',0.0,-15.4,-1.5,70.8,'EPSG','1025',1.785,11.151,-16.43,'EPSG','1031',-3.09,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.085,0.531,-0.79,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8877','ITRF91 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4913','EPSG','8401','EPSG','1298',0.0,-27.4,-15.5,76.8,'EPSG','1025',1.785,11.151,-16.43,'EPSG','1031',-4.49,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.085,0.531,-0.79,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8878','ITRF90 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4912','EPSG','8401','EPSG','1298',0.0,-25.4,-11.5,92.8,'EPSG','1025',1.785,11.151,-16.43,'EPSG','1031',-4.79,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.085,0.531,-0.79,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8879','ITRF89 to ETRF2014 (1)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','4911','EPSG','8401','EPSG','1298',0.0,-30.4,-35.5,130.8,'EPSG','1025',1.785,11.151,-16.43,'EPSG','1031',-8.19,'EPSG','1028',-0.1,0.5,3.3,'EPSG','1027',0.085,0.531,-0.79,'EPSG','1032',-0.12,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','8880','ITRF2014 to ETRF2014 (2)',NULL,NULL,'EPSG','1053','Time-dependent Position Vector tfm (geocentric)','EPSG','7789','EPSG','8401','EPSG','1298',0.0,0.0,0.0,0.0,'EPSG','1025',1.785,11.151,-16.17,'EPSG','1031',0.0,'EPSG','1028',0.0,0.0,0.0,'EPSG','1027',0.085,0.531,-0.77,'EPSG','1032',0.0,'EPSG','1030',2010.0,'EPSG','1029',NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','10085','Trinidad 1903 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4302','EPSG','4326','EPSG','1339',3.0,-61.0,285.2,471.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','10086','JAD69 to WGS 72 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4242','EPSG','4322','EPSG','3342',15.0,48.0,208.0,382.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','10089','Aratu to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','2962',7.0,-163.466,317.396,-147.538,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','10090','Aratu to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','2963',7.0,-170.0,305.0,-145.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','10091','Aratu to WGS 84 (7)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','2964',7.0,-162.904,312.531,-137.109,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','10092','Aratu to WGS 84 (8)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','2965',7.0,-158.0,309.0,-151.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','10093','Aratu to WGS 84 (9)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','2966',15.0,-161.0,308.0,-142.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','10094','Nouakchott 1965 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','2972',5.0,124.5,-63.5,-281.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','10098','KKJ to ETRS89 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4123','EPSG','4258','EPSG','3333',0.5,-96.062,-82.428,-121.753,'EPSG','9001',-4.801,-0.345,1.376,'EPSG','9104',1.496,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','10099','KKJ to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4123','EPSG','4326','EPSG','3333',1.0,-96.062,-82.428,-121.753,'EPSG','9001',-4.801,-0.345,1.376,'EPSG','9104',1.496,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15483','Tokyo to JGD2000 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4301','EPSG','4612','EPSG','3957',9.0,-146.414,507.337,680.507,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15484','Tokyo to WGS 84 (108)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4301','EPSG','4326','EPSG','3957',9.0,-146.414,507.337,680.507,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15485','SAD69 to SIRGAS 2000 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4618','EPSG','4674','EPSG','1053',5.0,-67.35,3.88,-38.22,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15493','Minna to WGS 84 (15)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','3590',5.0,-94.031,-83.317,116.708,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15494','Kalianpur 1962 to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4145','EPSG','4326','EPSG','3589',3.0,274.164,677.282,226.704,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15495','Accra to WGS 84 (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4168','EPSG','4326','EPSG','1505',25.0,-171.16,17.29,325.21,'EPSG','9001',0.0,0.0,0.814,'EPSG','9104',-0.38,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15496','Pulkovo 1942(58) to WGS 84 (18)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4179','EPSG','4326','EPSG','1197',10.0,44.107,-116.147,-54.648,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15497','Pulkovo 1942(58) to WGS 84 (9)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4179','EPSG','4326','EPSG','1197',7.0,28.0,-121.0,-77.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15698','ITRF2000 to ITRF2005 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4919','EPSG','4896','EPSG','1262',0.0,-0.0001,0.0008,0.0058,'EPSG','9001',0.0,0.0,0.0,'EPSG','9104',-0.0004,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15699','NAD27 to WGS 84 (87)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','3462',5.0,-2.0,124.7,196.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15700','Gulshan 303 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4682','EPSG','4326','EPSG','1041',1.0,283.8,735.9,261.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15701','Kalianpur 1962 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4145','EPSG','4326','EPSG','2985',1.0,275.57,676.78,229.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15702','Kalianpur 1962 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4145','EPSG','4326','EPSG','2984',3.0,278.9,684.39,226.05,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15703','Kalianpur 1962 to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4145','EPSG','4326','EPSG','2982',3.0,271.905,669.593,231.495,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15704','Kalianpur 1962 to WGS 84 (5)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4145','EPSG','4326','EPSG','2983',3.0,230.25,632.76,161.03,'EPSG','9001',-1.114,1.115,1.212,'EPSG','9104',12.584,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15705','Minna to WGS 84 (12)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','3819',8.0,-83.13,-104.95,114.63,'EPSG','9001',0.0,0.0,0.554,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15706','Minna to WGS 84 (13)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','1717',7.0,-93.6,-83.7,113.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15707','ELD79 to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4159','EPSG','4326','EPSG','2987',10.0,-118.996,-111.177,-198.687,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15708','PRS92 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4683','EPSG','4326','EPSG','1190',0.05,-127.62,-67.24,-47.04,'EPSG','9001',3.068,-4.903,-1.578,'EPSG','9104',-1.06,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15709','Nouakchott 1965 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4680','EPSG','4326','EPSG','2972',5.0,124.5,-63.5,-281.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15710','Aratu to WGS 84 (10)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','2963',5.0,-160.0,315.0,-142.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15711','Aratu to WGS 84 (11)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','2962',5.0,-158.0,309.0,-147.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15712','Aratu to WGS 84 (12)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','2964',5.0,-161.0,310.0,-145.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15713','Gan 1970 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4684','EPSG','4326','EPSG','3274',44.0,-133.0,-321.0,50.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15714','Bogota 1975 to MAGNA-SIRGAS (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4218','EPSG','4686','EPSG','3082',1.0,-806.413,-263.5,-622.671,'EPSG','9001',6.018583e-05,-1.450001e-05,-0.0001892455,'EPSG','9101',-20.81616,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15715','Bogota 1975 to WGS 84 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4218','EPSG','4326','EPSG','3082',1.0,-806.413,-263.5,-622.671,'EPSG','9001',6.018583e-05,-1.450001e-05,-0.0001892455,'EPSG','9101',-20.81616,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15716','Bogota 1975 to MAGNA-SIRGAS (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4218','EPSG','4686','EPSG','3083',1.0,100.783,187.382,-47.0,'EPSG','9001',-4.471839e-05,1.175093e-05,-4.027967e-05,'EPSG','9101',-13.56561,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15717','Bogota 1975 to WGS 84 (4)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4218','EPSG','4326','EPSG','3083',1.0,100.783,187.382,-47.0,'EPSG','9001',-4.471839e-05,1.175093e-05,-4.027967e-05,'EPSG','9101',-13.56561,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15718','Bogota 1975 to MAGNA-SIRGAS (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4218','EPSG','4686','EPSG','3084',1.0,336.026,348.565,252.978,'EPSG','9001',-8.358813e-05,-3.057474e-05,7.573031e-06,'EPSG','9101',-5.771909,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15719','Bogota 1975 to WGS 84 (5)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4218','EPSG','4326','EPSG','3084',1.0,336.026,348.565,252.978,'EPSG','9001',-8.358813e-05,-3.057474e-05,7.573031e-06,'EPSG','9101',-5.771909,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15720','Bogota 1975 to MAGNA-SIRGAS (4)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4218','EPSG','4686','EPSG','3085',1.0,963.273,486.386,190.997,'EPSG','9001',-7.992171e-05,-8.090696e-06,0.0001051699,'EPSG','9101',-13.89914,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15721','Bogota 1975 to WGS 84 (6)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4218','EPSG','4326','EPSG','3085',1.0,963.273,486.386,190.997,'EPSG','9001',-7.992171e-05,-8.090696e-06,0.0001051699,'EPSG','9101',-13.89914,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15722','Bogota 1975 to MAGNA-SIRGAS (5)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4218','EPSG','4686','EPSG','3086',1.0,-90.29,247.559,-21.989,'EPSG','9001',-4.216369e-05,-2.030416e-05,-6.209623e-05,'EPSG','9101',2.181658,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15723','Bogota 1975 to WGS 84 (7)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4218','EPSG','4326','EPSG','3086',1.0,-90.29,247.559,-21.989,'EPSG','9001',-4.216369e-05,-2.030416e-05,-6.209623e-05,'EPSG','9101',2.181658,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15724','Bogota 1975 to MAGNA-SIRGAS (6)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4218','EPSG','4686','EPSG','3087',1.0,-0.562,244.299,-456.938,'EPSG','9001',3.329153e-05,-4.001009e-05,-4.507206e-05,'EPSG','9101',3.74656,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15725','Bogota 1975 to WGS 84 (8)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4218','EPSG','4326','EPSG','3087',1.0,-0.562,244.299,-456.938,'EPSG','9001',3.329153e-05,-4.001009e-05,-4.507206e-05,'EPSG','9101',3.74656,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15726','Bogota 1975 to MAGNA-SIRGAS (7)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4218','EPSG','4686','EPSG','3088',1.0,-305.356,222.004,-30.023,'EPSG','9001',-4.698084e-05,5.003123e-06,-9.578655e-05,'EPSG','9101',6.325747,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15727','Bogota 1975 to WGS 84 (9)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4218','EPSG','4326','EPSG','3088',1.0,-305.356,222.004,-30.023,'EPSG','9001',-4.698084e-05,5.003123e-06,-9.578655e-05,'EPSG','9101',6.325747,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15728','Bogota 1975 to MAGNA-SIRGAS (8)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4218','EPSG','4686','EPSG','3089',1.0,221.899,274.136,-397.554,'EPSG','9001',1.361573e-05,-2.174431e-06,-1.36241e-05,'EPSG','9101',-2.199943,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15729','Bogota 1975 to WGS 84 (10)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4218','EPSG','4326','EPSG','3089',1.0,221.899,274.136,-397.554,'EPSG','9001',1.361573e-05,-2.174431e-06,-1.36241e-05,'EPSG','9101',-2.199943,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15730','Bogota 1975 to MAGNA-SIRGAS (9)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4218','EPSG','4686','EPSG','3082',1.0,300.449,293.757,-317.306,'EPSG','9001',6.018581e-05,-1.450002e-05,-0.0001892455,'EPSG','9101',-20.81615,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1891881.173,-5961263.267,1248403.057,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15731','Bogota 1975 to MAGNA-SIRGAS (10)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4218','EPSG','4686','EPSG','3083',1.0,308.833,282.519,-314.571,'EPSG','9001',-4.471845e-05,1.175087e-05,-4.027981e-05,'EPSG','9101',-13.56561,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1625036.59,-6054644.061,1172969.151,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15732','Bogota 1975 to MAGNA-SIRGAS (11)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4218','EPSG','4686','EPSG','3084',1.0,311.118,289.167,-310.641,'EPSG','9001',-8.358815e-05,-3.057474e-05,7.573043e-06,'EPSG','9101',-5.771882,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1555622.801,-6105353.313,991255.656,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15733','Bogota 1975 to MAGNA-SIRGAS (12)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4218','EPSG','4686','EPSG','3085',1.0,306.666,315.063,-318.837,'EPSG','9001',-7.992173e-05,-8.090698e-06,0.0001051699,'EPSG','9101',-13.89912,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1845222.398,-6058604.495,769132.398,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15734','Bogota 1975 to MAGNA-SIRGAS (13)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4218','EPSG','4686','EPSG','3086',1.0,307.871,305.803,-311.992,'EPSG','9001',-4.216368e-05,-2.030416e-05,-6.209624e-05,'EPSG','9101',2.181655,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1594396.206,-6143812.398,648855.829,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15735','Bogota 1975 to MAGNA-SIRGAS (14)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4218','EPSG','4686','EPSG','3087',1.0,302.934,307.805,-312.121,'EPSG','9001',3.329153e-05,-4.001009e-05,-4.507205e-05,'EPSG','9101',3.746562,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1558280.49,-6167355.092,491954.219,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15736','Bogota 1975 to MAGNA-SIRGAS (15)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4218','EPSG','4686','EPSG','3088',1.0,295.282,321.293,-311.001,'EPSG','9001',-4.698084e-05,5.003127e-06,-9.578653e-05,'EPSG','9101',6.325744,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1564000.62,-6180004.879,243257.955,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15737','Bogota 1975 to MAGNA-SIRGAS (16)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4218','EPSG','4686','EPSG','3089',1.0,302.529,317.979,-319.08,'EPSG','9001',1.361566e-05,-2.174456e-06,-1.362418e-05,'EPSG','9101',-2.199976,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1738580.767,-6120500.388,491473.306,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15738','MAGNA-SIRGAS to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4686','EPSG','4326','EPSG','1070',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15739','Amersfoort to ETRS89 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4289','EPSG','4258','EPSG','1275',0.5,565.2369,50.0087,465.658,'EPSG','9001',1.9725,-1.7004,9.0677,'EPSG','9109',4.0812,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15740','Amersfoort to ETRS89 (4)',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4289','EPSG','4258','EPSG','1275',0.5,593.0297,26.0038,478.7534,'EPSG','9001',1.9725,-1.7004,9.0677,'EPSG','9109',4.0812,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3903453.1482,368135.3134,5012970.3051,'EPSG','9001',0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15741','Deir ez Zor to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4227','EPSG','4326','EPSG','2329',5.0,-187.5,14.1,237.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15742','Deir ez Zor to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4227','EPSG','4326','EPSG','3314',5.0,-190.421,8.532,238.69,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15743','Deir ez Zor to WGS 84 (6)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4227','EPSG','4326','EPSG','2329',0.5,-83.58,-397.54,458.78,'EPSG','9001',-17.595,-2.847,4.256,'EPSG','9104',3.225,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15745','ED50(ED77) to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4154','EPSG','4326','EPSG','3140',0.2,-123.02,-158.95,-168.47,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15746','Nakhl-e Ghanem to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4693','EPSG','4326','EPSG','3141',0.2,0.0,-0.15,0.68,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15748','BD72 to ETRS89 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4313','EPSG','4258','EPSG','1044',0.2,-106.8686,52.2978,-103.7239,'EPSG','9001',-0.3366,0.457,-1.8422,'EPSG','9104',1.2747,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15749','BD72 to WGS 84 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4313','EPSG','4326','EPSG','1044',0.2,-106.8686,52.2978,-103.7239,'EPSG','9001',-0.3366,0.457,-1.8422,'EPSG','9104',1.2747,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15750','St. Kitts 1955 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4605','EPSG','4326','EPSG','3297',44.0,-7.0,215.0,225.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15751','Reunion 1947 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4626','EPSG','4326','EPSG','3337',44.0,94.0,-948.0,-1262.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15752','ED79 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4668','EPSG','4326','EPSG','1297',6.0,-86.0,-98.0,-119.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15754','Aratu to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4208','EPSG','4326','EPSG','2307',10.0,-158.0,315.0,-148.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15755','Minna to WGS 84 (14)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4263','EPSG','4326','EPSG','3113',7.0,-90.2,-87.32,114.17,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15756','Tahiti 79 to RGPF (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4690','EPSG','4687','EPSG','3124',0.5,221.525,152.948,176.768,'EPSG','9001',2.3847,1.3896,0.877,'EPSG','9104',11.4741,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15757','Moorea 87 to RGPF (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4691','EPSG','4687','EPSG','3125',0.5,215.525,149.593,176.229,'EPSG','9001',3.2624,1.692,1.1571,'EPSG','9104',10.4773,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15758','Tahaa 54 to RGPF (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4629','EPSG','4687','EPSG','2812',0.5,72.438,345.918,79.486,'EPSG','9001',-1.6045,-0.8823,-0.5565,'EPSG','9104',1.3746,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15759','Maupiti 83 to RGPF (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4692','EPSG','4687','EPSG','3126',0.5,217.037,86.959,23.956,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15760','Fatu Iva 72 to RGPF (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4688','EPSG','4687','EPSG','3133',2.0,347.103,1078.125,2623.922,'EPSG','9001',33.8875,-70.6773,9.3943,'EPSG','9104',186.074,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15761','IGN63 Hiva Oa to RGPF (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4689','EPSG','4687','EPSG','3131',0.5,410.721,55.049,80.746,'EPSG','9001',-2.5779,-2.3514,-0.6664,'EPSG','9104',17.3311,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15762','IGN63 Hiva Oa to RGPF (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4689','EPSG','4687','EPSG','3132',2.0,374.715,-58.407,-0.957,'EPSG','9001',-16.2111,-11.4626,-5.5357,'EPSG','9104',-0.5409,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15763','IGN72 Nuku Hiva to RGPF (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4630','EPSG','4687','EPSG','2810',0.5,165.732,216.72,180.505,'EPSG','9001',-0.6434,-0.4512,-0.0791,'EPSG','9104',7.4204,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15764','IGN72 Nuku Hiva to RGPF (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4630','EPSG','4687','EPSG','3127',2.0,1363.785,1362.687,398.811,'EPSG','9001',-4.5322,-6.7579,-1.0574,'EPSG','9104',268.361,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15765','IGN72 Nuku Hiva to RGPF (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4630','EPSG','4687','EPSG','3128',0.5,259.551,297.612,197.833,'EPSG','9001',1.4866,2.1224,0.4612,'EPSG','9104',27.0249,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15766','RGPF to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4999','EPSG','4979','EPSG','1098',0.5,0.072,-0.507,-0.245,'EPSG','9001',0.0183,-0.0003,0.007,'EPSG','9104',-0.0093,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15767','RGPF to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4999','EPSG','4979','EPSG','1098',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15768','Tahiti 79 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4690','EPSG','4687','EPSG','3124',1.0,221.525,152.948,176.768,'EPSG','9001',2.3847,1.3896,0.877,'EPSG','9104',11.4741,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15769','Moorea 87 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4691','EPSG','4326','EPSG','3125',1.0,215.525,149.593,176.229,'EPSG','9001',3.2624,1.692,1.1571,'EPSG','9104',10.4773,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15770','Tahaa 54 to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4629','EPSG','4326','EPSG','2812',1.0,72.438,345.918,79.486,'EPSG','9001',-1.6045,-0.8823,-0.5565,'EPSG','9104',1.3746,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15771','Maupiti 83 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4692','EPSG','4326','EPSG','3126',1.0,217.037,86.959,23.956,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15772','Fatu Iva 72 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4688','EPSG','4326','EPSG','3133',2.0,347.103,1078.125,2623.922,'EPSG','9001',33.8875,-70.6773,9.3943,'EPSG','9104',186.074,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15773','IGN63 Hiva Oa to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4689','EPSG','4326','EPSG','3131',2.0,410.721,55.049,80.746,'EPSG','9001',-2.5779,-2.3514,-0.6664,'EPSG','9104',17.3311,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15774','IGN63 Hiva Oa to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4689','EPSG','4326','EPSG','3132',2.0,374.716,-58.407,-0.957,'EPSG','9001',-16.2111,-11.4626,-5.5357,'EPSG','9104',-0.5409,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15775','IGN72 Nuku Hiva to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4630','EPSG','4326','EPSG','2810',1.0,165.732,216.72,180.505,'EPSG','9001',-0.6434,-0.4512,-0.0791,'EPSG','9104',7.4204,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15776','IGN72 Nuku Hiva to WGS 84 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4630','EPSG','4326','EPSG','3127',2.0,1363.785,1362.687,398.811,'EPSG','9001',-4.5322,-6.7579,-1.0574,'EPSG','9104',268.361,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15777','IGN72 Nuku Hiva to WGS 84 (4)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4630','EPSG','4326','EPSG','3128',1.0,259.551,297.612,197.833,'EPSG','9001',1.4866,2.1224,0.4612,'EPSG','9104',27.0249,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15778','ELD79 to WGS 84 (7)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4159','EPSG','4326','EPSG','3142',0.5,-114.7,-98.5,-150.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15779','Gulshan 303 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4682','EPSG','4326','EPSG','1041',1.0,283.7,735.9,261.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15780','POSGAR 94 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4190','EPSG','4326','EPSG','1033',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15782','Campo Inchauspe to POSGAR 94 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4221','EPSG','4694','EPSG','3215',5.0,-148.0,136.0,90.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15783','IGN53 Mare to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4641','EPSG','4326','EPSG','2819',5.0,287.0,178.0,-136.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15784','Le Pouce 1934 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4699','EPSG','4326','EPSG','3209',2.0,-770.1,158.4,-498.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15787','IGCB 1955 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4701','EPSG','4326','EPSG','3171',5.0,-79.9,-158.0,-168.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15788','AGD66 to WGS 84 (16)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4202','EPSG','4326','EPSG','2575',5.0,-127.8,-52.3,152.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15789','AGD84 to WGS 84 (8)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4203','EPSG','4326','EPSG','2576',5.0,-128.5,-53.0,153.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15790','Mhast (offshore) to WGS 72BE (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4705','EPSG','4324','EPSG','3180',10.0,-255.0,-29.0,-105.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15791','Malongo 1987 to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4259','EPSG','4326','EPSG','3180',10.0,-259.99,-5.28,-97.09,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15792','Egypt Gulf of Suez S-650 TL to WGS 72BE (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4706','EPSG','4324','EPSG','2341',5.0,-123.0,98.0,2.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15793','Barbados 1938 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4212','EPSG','4326','EPSG','3218',3.0,31.95,300.99,419.19,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15794','Cocos Islands 1965 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4708','EPSG','4326','EPSG','1069',44.0,-491.0,-22.0,435.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15795','Tern Island 1961 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4707','EPSG','4326','EPSG','3181',44.0,114.0,-116.0,-333.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15796','Iwo Jima 1945 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4709','EPSG','4326','EPSG','3200',44.0,145.0,75.0,-272.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15797','Ascension Island 1958 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4712','EPSG','4326','EPSG','3182',44.0,-205.0,107.0,53.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15798','Astro DOS 71 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4710','EPSG','4326','EPSG','3183',44.0,-320.0,550.0,-494.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15799','Marcus Island 1952 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4711','EPSG','4326','EPSG','1872',44.0,124.0,-234.0,-25.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15800','Ayabelle Lighthouse to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4713','EPSG','4326','EPSG','1081',44.0,-79.0,-129.0,145.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15801','Bellevue to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4714','EPSG','4326','EPSG','3193',35.0,-127.0,-769.0,472.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15802','Camp Area Astro to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4715','EPSG','4326','EPSG','3205',999.0,-104.0,-129.0,239.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15803','Phoenix Islands 1966 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4716','EPSG','4326','EPSG','3196',26.0,298.0,-304.0,-375.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15804','Cape Canaveral to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4717','EPSG','4326','EPSG','3206',6.0,-2.0,151.0,181.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15805','Solomon 1968 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4718','EPSG','4326','EPSG','3198',44.0,230.0,-199.0,-752.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15806','Easter Island 1967 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4719','EPSG','4326','EPSG','3188',44.0,211.0,147.0,111.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15807','Solomon 1968 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4718','EPSG','4326','EPSG','3197',44.0,252.0,-209.0,-751.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15808','Diego Garcia 1969 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4724','EPSG','4326','EPSG','3189',44.0,208.0,-435.0,-229.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15809','Johnston Island 1961 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4725','EPSG','4326','EPSG','3201',44.0,189.0,-79.0,-202.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15810','Kusaie 1951 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4735','EPSG','4326','EPSG','3192',44.0,647.0,1777.0,-1124.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15811','Antigua 1943 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4601','EPSG','4326','EPSG','1273',44.0,-270.0,13.0,62.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15812','Deception Island to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4736','EPSG','4326','EPSG','3204',35.0,260.0,12.0,-147.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15813','South Georgia 1968 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4722','EPSG','4326','EPSG','3529',44.0,-794.0,119.0,-298.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15814','SIGD61 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4726','EPSG','4326','EPSG','3186',44.0,42.0,124.0,147.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15815','Pico de las Nieves 1984 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4728','EPSG','4326','EPSG','3873',44.0,-307.0,-92.0,127.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15816','Tristan 1968 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4734','EPSG','4326','EPSG','3184',44.0,-632.0,438.0,-609.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15817','Midway 1961 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4727','EPSG','4326','EPSG','3202',44.0,912.0,-58.0,1227.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15818','Midway 1961 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4727','EPSG','4326','EPSG','3202',44.0,403.0,-81.0,277.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15819','Pitcairn 1967 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4729','EPSG','4326','EPSG','3208',44.0,185.0,165.0,42.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15820','Santo 1965 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4730','EPSG','4326','EPSG','3194',44.0,170.0,42.0,84.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15821','Viti Levu 1916 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4731','EPSG','4326','EPSG','3195',44.0,51.0,391.0,-36.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15822','Marshall Islands 1960 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4732','EPSG','4326','EPSG','3191',6.0,102.0,52.0,-38.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15823','Wake Island 1952 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4733','EPSG','4326','EPSG','3190',44.0,276.0,-57.0,149.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15824','Old Hawaiian to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4135','EPSG','4326','EPSG','1334',38.0,61.0,-285.0,-181.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15825','Old Hawaiian to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4135','EPSG','4326','EPSG','1546',44.0,89.0,-279.0,-183.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15826','Old Hawaiian to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4135','EPSG','4326','EPSG','1549',35.0,45.0,-290.0,-172.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15827','Old Hawaiian to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4135','EPSG','4326','EPSG','1547',44.0,65.0,-290.0,-190.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15828','Old Hawaiian to WGS 84 (7)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4135','EPSG','4326','EPSG','1548',14.0,58.0,-283.0,-182.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15829','SIGD61 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4726','EPSG','4326','EPSG','3186',1.0,44.4,109.0,151.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15830','GCGD59 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4723','EPSG','4326','EPSG','3185',1.0,67.8,106.1,138.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15831','Korea 2000 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4737','EPSG','4326','EPSG','1135',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15832','RGPF to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4687','EPSG','4326','EPSG','1098',0.5,0.072,-0.507,-0.245,'EPSG','9001',0.0183,-0.0003,0.007,'EPSG','9104',-0.0093,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15833','RGPF to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4687','EPSG','4326','EPSG','1098',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15842','Hong Kong 1963(67) to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4739','EPSG','4326','EPSG','1118',1.0,-156.0,-271.0,-189.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15843','PZ-90 to WGS 84 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4740','EPSG','4326','EPSG','1262',1.5,0.0,0.0,1.5,'EPSG','9001',0.0,0.0,-0.076,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15844','Pulkovo 1942 to PZ-90 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4284','EPSG','4740','EPSG','2423',4.0,25.0,-141.0,-80.0,'EPSG','9001',0.0,-0.35,-0.66,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15845','Pampa del Castillo to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4161','EPSG','4326','EPSG','1265',25.0,27.5,14.0,186.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15846','Egypt Gulf of Suez S-650 TL to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4706','EPSG','4326','EPSG','2341',5.0,-146.21,112.63,4.05,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15847','MOP78 to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4639','EPSG','4326','EPSG','2815',10.0,253.0,-132.0,-127.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15848','ST84 Ile des Pins to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4642','EPSG','4326','EPSG','2820',10.0,-13.0,-348.0,292.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15849','Beduaram to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4213','EPSG','4326','EPSG','2771',15.0,-106.0,-87.0,188.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15850','IGN 1962 Kerguelen to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4698','EPSG','4326','EPSG','2816',10.0,145.0,-187.0,103.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15852','NAD27 to WGS 84 (80)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','3358',5.0,-3.0,154.0,177.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15853','NAD27 to WGS 84 (81)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','3359',5.0,-7.0,151.0,175.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15854','NAD27 to WGS 84 (82)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','3360',5.0,-7.0,151.0,178.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15855','NAD27 to WGS 84 (83)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','3361',5.0,-8.0,125.0,190.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15856','NAD27 to WGS 84 (84)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','3357',8.0,-7.0,158.0,172.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15860','Mauritania 1999 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4702','EPSG','4326','EPSG','1157',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15865','Pulkovo 1942 to WGS 84 (16)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4284','EPSG','4326','EPSG','2423',4.5,25.0,-141.0,-78.5,'EPSG','9001',0.0,-0.35,-0.736,'EPSG','9104',0.0,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15866','FD54 to ED50 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4741','EPSG','4230','EPSG','3248',0.0,-153.33,-169.41,86.39,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15867','PD/83 to ETRS89 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4746','EPSG','4258','EPSG','2544',0.1,599.4,72.4,419.2,'EPSG','9001',-0.062,-0.022,-2.723,'EPSG','9104',6.46,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15868','RD/83 to ETRS89 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4745','EPSG','4258','EPSG','2545',0.1,612.4,77.0,440.2,'EPSG','9001',-0.054,0.057,-2.797,'EPSG','9104',2.55,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15869','DHDN to WGS 84 (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4314','EPSG','4326','EPSG','1343',2.0,612.4,77.0,440.2,'EPSG','9001',-0.054,0.057,-2.797,'EPSG','9104',2.55,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15870','Jouik 1961 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4679','EPSG','4326','EPSG','2967',1.0,-80.01,253.26,291.19,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15871','Nahrwan 1967 to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4270','EPSG','4326','EPSG','3625',5.0,-242.2,-144.9,370.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15872','Karbala 1979 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4743','EPSG','4326','EPSG','3397',5.0,84.1,-320.1,218.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15873','Douala 1948 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4192','EPSG','4326','EPSG','2555',10.0,-206.1,-174.7,-87.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15874','Nord Sahara 1959 to WGS 84 (7)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4307','EPSG','4326','EPSG','3402',5.0,-169.559,-72.34,303.102,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15875','Fiji 1956 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4721','EPSG','4326','EPSG','3398',7.0,265.025,384.929,-194.046,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15876','Fiji 1986 to WGS 84 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4720','EPSG','4326','EPSG','1094',2.0,0.0,0.0,4.5,'EPSG','9001',0.0,0.0,0.554,'EPSG','9104',0.2263,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15877','Fiji 1986 to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4720','EPSG','4326','EPSG','3398',40.0,-35.173,136.571,-36.964,'EPSG','9001',1.37,-0.842,-4.718,'EPSG','9104',-1.537,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15878','Vanua Levu 1915 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4748','EPSG','4326','EPSG','3401',50.0,51.0,391.0,-36.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15879','GR96 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4747','EPSG','4326','EPSG','1107',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15880','RGNC91-93 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4749','EPSG','4326','EPSG','1174',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15881','ST87 Ouvea to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4750','EPSG','4326','EPSG','2813',1.0,-56.263,16.136,-22.856,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15882','IGN72 Grande Terre to RGNC91-93 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4662','EPSG','4749','EPSG','2822',2.0,-11.64,-348.6,291.98,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15883','IGN56 Lifou to RGNC91-93 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4633','EPSG','4749','EPSG','2814',1.0,335.47,222.58,-230.94,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15884','IGN53 Mare to RGNC91-93 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4641','EPSG','4749','EPSG','2819',2.0,287.58,177.78,-135.41,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15885','ST87 Ouvea to RGNC91-93 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4750','EPSG','4749','EPSG','2813',0.5,-56.263,16.136,-22.856,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15886','NEA74 Noumea to RGNC91-93 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4644','EPSG','4749','EPSG','2823',1.0,-10.18,-350.43,291.37,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15887','IGN72 Grande Terre to RGNC91-93 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4662','EPSG','4749','EPSG','2822',0.3,97.297,-263.243,310.879,'EPSG','9001',1.5999,-0.8387,-3.1409,'EPSG','9104',13.326,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15888','IGN72 Grande Terre to RGNC91-93 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4662','EPSG','4749','EPSG','2823',0.1,48.812,-205.932,343.993,'EPSG','9001',3.4427,0.4999,-4.0878,'EPSG','9104',6.5215,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15889','NEA74 Noumea to RGNC91-93 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4644','EPSG','4749','EPSG','2823',0.1,-166.0684,-154.7826,254.8282,'EPSG','9001',37.546,-7.7018,10.2029,'EPSG','9104',-30.84,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15890','IGN56 Lifou to RGNC91-93 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4633','EPSG','4749','EPSG','2814',0.1,137.092,131.675,91.478,'EPSG','9001',1.9435,11.5995,4.3316,'EPSG','9104',-7.4801,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15891','IGN53 Mare to RGNC91-93 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4641','EPSG','4749','EPSG','2819',0.1,-408.809,366.857,-412.987,'EPSG','9001',-1.8843,0.5308,-2.1657,'EPSG','9104',-121.0994,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15892','ST87 Ouvea to RGNC91-93 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4750','EPSG','4749','EPSG','2813',0.1,-122.386,-188.707,103.334,'EPSG','9001',-3.511,4.9665,5.7048,'EPSG','9104',4.4799,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15893','ST84 Ile des Pins to RGNC91-93 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4642','EPSG','4749','EPSG','2820',0.1,244.42,85.352,168.129,'EPSG','9001',8.936,-7.752,-12.5952,'EPSG','9104',14.2723,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15894','SIRGAS 2000 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4674','EPSG','4326','EPSG','3418',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15896','Kertau (RSO) to Kertau 1968 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4751','EPSG','4245','EPSG','1309',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15897','Viti Levu 1912 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4752','EPSG','4326','EPSG','3195',44.0,51.0,391.0,-36.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15898','Qornoq to GR96 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4747','EPSG','4747','EPSG','1107',1.0,163.511,127.533,-159.789,'EPSG','9001',0.0,0.0,0.814,'EPSG','9104',-0.6,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15899','Scoresbysund 1952 to GR96 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4195','EPSG','4747','EPSG','2570',1.0,105.0,326.0,-102.5,'EPSG','9001',0.0,0.0,0.814,'EPSG','9104',-0.6,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15900','Ammassalik 1958 to GR96 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4196','EPSG','4747','EPSG','2571',1.0,-45.0,417.0,-3.5,'EPSG','9001',0.0,0.0,0.814,'EPSG','9104',-0.6,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15901','IGN53 Mare to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4641','EPSG','4326','EPSG','2819',2.0,287.58,177.78,-135.41,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15902','IGN56 Lifou to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4633','EPSG','4326','EPSG','2814',1.0,335.47,222.58,-230.94,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15903','IGN72 Grande Terre to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4662','EPSG','4326','EPSG','2822',2.0,-11.64,-348.6,291.98,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15904','NEA74 Noumea to WGS 84 (2)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4644','EPSG','4326','EPSG','2823',1.0,-10.18,-350.43,291.37,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15908','LGD2006 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4754','EPSG','4326','EPSG','1143',0.1,-208.4058,-109.8777,-2.5764,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15909','ELD79 to WGS 84 (8)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4159','EPSG','4326','EPSG','3271',5.0,-115.8543,-99.0583,-152.4616,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15910','ELD79 to LGD2006 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4159','EPSG','4754','EPSG','3271',5.0,-92.5515,-10.8194,149.8852,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15911','ID74 to DGN95 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4238','EPSG','4755','EPSG','4020',3.0,-1.977,-13.06,-9.993,'EPSG','9001',-0.364,-0.254,-0.689,'EPSG','9104',-1.037,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15912','DGN95 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4755','EPSG','4326','EPSG','1122',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15913','NAD27 to WGS 84 (86)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','3461',5.0,0.0,125.0,196.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15918','Beijing 1954 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4214','EPSG','4326','EPSG','3466',1.0,12.646,-155.176,-80.863,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15919','Beijing 1954 to WGS 84 (2)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4214','EPSG','4326','EPSG','3469',15.0,15.53,-113.82,-41.38,'EPSG','9001',0.0,0.0,0.814,'EPSG','9104',-0.38,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15920','Beijing 1954 to WGS 84 (3)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4214','EPSG','4326','EPSG','3470',15.0,31.4,-144.3,-74.8,'EPSG','9001',0.0,0.0,0.814,'EPSG','9104',-0.38,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15921','Beijing 1954 to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4214','EPSG','4326','EPSG','3507',1.0,15.8,-154.4,-82.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15923','ELD79 to WGS 84 (9)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4159','EPSG','4326','EPSG','3477',2.0,-117.7,-100.3,-152.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15924','ELD79 to LGD2006 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4159','EPSG','4754','EPSG','3271',5.0,92.5515,10.8194,-149.8852,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15925','JAD2001 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4758','EPSG','4326','EPSG','1128',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15926','JAD69 to JAD2001 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4242','EPSG','4758','EPSG','3342',0.5,-33.722,153.789,94.959,'EPSG','9001',8.581,4.478,-4.54,'EPSG','9104',8.95,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15927','JAD69 to WGS 84 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4242','EPSG','4326','EPSG','3342',1.0,-33.722,153.789,94.959,'EPSG','9001',8.581,4.478,-4.54,'EPSG','9104',8.95,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15928','BD72 to ETRS89 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4313','EPSG','4258','EPSG','1347',0.2,-106.8686,52.2978,-103.7239,'EPSG','9001',-0.3366,0.457,-1.8422,'EPSG','9104',-1.2747,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15929','BD72 to WGS 84 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4313','EPSG','4326','EPSG','1347',1.0,-106.8686,52.2978,-103.7239,'EPSG','9001',-0.3366,0.457,-1.8422,'EPSG','9104',-1.2747,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15930','NAD83(HARN) to NAD83(NSRS2007) (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4152','EPSG','4326','EPSG','1323',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15931','NAD83(NSRS2007) to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4759','EPSG','4326','EPSG','1511',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15934','Amersfoort to WGS 84 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4289','EPSG','4326','EPSG','1275',1.0,565.2369,50.0087,465.658,'EPSG','9001',1.9725,-1.7004,9.0677,'EPSG','9109',4.0812,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15935','Beijing 1954 to WGS 84 (5)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4214','EPSG','4326','EPSG','3561',10.0,18.0,-136.8,-73.7,'EPSG','9001',0.0,0.0,0.814,'EPSG','9104',-0.38,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15936','Beijing 1954 to WGS 84 (6)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4214','EPSG','4326','EPSG','3466',1.0,11.911,-154.833,-80.079,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15937','Nahrwan 1967 to WGS 84 (7)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4270','EPSG','4326','EPSG','3509',2.0,-245.8,-152.2,382.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15938','Nahrwan 1967 to WGS 84 (8)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4270','EPSG','4326','EPSG','3509',5.0,-225.4,-158.7,380.8,'EPSG','9001',0.0,0.0,0.814,'EPSG','9104',-0.38,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15952','Nahrwan 1967 to WGS 84 (9)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4270','EPSG','4326','EPSG','3530',5.0,-244.2,-149.8,379.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15953','Nahrwan 1967 to WGS 84 (10)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4270','EPSG','4326','EPSG','3531',5.0,-250.7,-157.9,380.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15957','Qornoq 1927 to GR96 (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4194','EPSG','4747','EPSG','3362',1.0,163.511,127.533,-159.789,'EPSG','9001',0.0,0.0,0.814,'EPSG','9104',-0.6,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15963','Yacare to SIRGAS (1)',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4309','EPSG','4170','EPSG','1247',1.5,-124.45,183.74,44.64,'EPSG','9001',-0.4384,0.5446,-0.9706,'EPSG','9104',-2.1365,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15964','ED50 to WGS 84 (42)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','3537',5.0,-86.277,-108.879,-120.181,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15965','S-JTSK to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4156','EPSG','4326','EPSG','1306',6.0,589.0,76.0,480.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15966','HTRS96 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4761','EPSG','4258','EPSG','1076',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15967','HTRS96 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4761','EPSG','4326','EPSG','1076',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15969','Bermuda 1957 to BDA2000 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4216','EPSG','4762','EPSG','3221',1.0,-292.295,248.758,429.447,'EPSG','9001',-4.9971,-2.99,-6.6906,'EPSG','9104',1.0289,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15970','Bermuda 1957 to WGS 84 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4216','EPSG','4326','EPSG','3221',1.0,-292.295,248.758,429.447,'EPSG','9001',-4.9971,-2.99,-6.6906,'EPSG','9104',1.0289,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15971','BDA2000 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4762','EPSG','4326','EPSG','1047',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15972','Pitcairn 2006 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4763','EPSG','4326','EPSG','3208',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15973','Popular Visualisation CRS to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4055','EPSG','4326','EPSG','1262',800.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15974','RSRGD2000 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4764','EPSG','4326','EPSG','3558',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15975','NZGD49 to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4272','EPSG','4326','EPSG','3285',5.0,54.4,-20.1,183.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15976','Slovenia 1996 to WGS 84 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4765','EPSG','4326','EPSG','1212',1.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15977','Slovenia 1996 to ETRS89 (1)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4765','EPSG','4258','EPSG','1212',0.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15978','NAD27 to WGS 84 (88)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4267','EPSG','4326','EPSG','1077',1.0,2.478,149.752,197.726,'EPSG','9001',-0.526,-0.498,0.501,'EPSG','9104',0.685,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15979','AGD66 to GDA94 (12)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4202','EPSG','4283','EPSG','3559',3.0,-117.808,-51.536,137.784,'EPSG','9001',-0.303,-0.446,-0.234,'EPSG','9104',-0.29,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15980','AGD66 to WGS 84 (18)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4202','EPSG','4326','EPSG','3559',3.0,-117.808,-51.536,137.784,'EPSG','9001',-0.303,-0.446,-0.234,'EPSG','9104',-0.29,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15981','MGI to Slovenia 1996 (1)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4312','EPSG','4765','EPSG','1212',1.0,409.545,72.164,486.872,'EPSG','9001',-3.085957,-5.46911,11.020289,'EPSG','9104',17.919665,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15982','MGI to WGS 84 (9)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4312','EPSG','4326','EPSG','1212',1.0,409.545,72.164,486.872,'EPSG','9001',-3.085957,-5.46911,11.020289,'EPSG','9104',17.919665,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15983','MGI to Slovenia 1996 (2)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4312','EPSG','4765','EPSG','3564',0.5,315.393,186.223,499.609,'EPSG','9001',-6.445954,-8.131631,13.208641,'EPSG','9104',23.449046,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15984','MGI to Slovenia 1996 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4312','EPSG','4765','EPSG','3565',0.5,464.939,-21.478,504.497,'EPSG','9001',0.403,-4.228747,9.954942,'EPSG','9104',12.795378,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15985','MGI to Slovenia 1996 (4)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4312','EPSG','4765','EPSG','3566',0.5,459.968,82.193,458.756,'EPSG','9001',-3.565234,-3.700593,10.860523,'EPSG','9104',15.507563,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15986','MGI to Slovenia 1996 (5)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4312','EPSG','4765','EPSG','3567',0.3,427.914,105.528,510.908,'EPSG','9001',-4.992523,-5.898813,10.306673,'EPSG','9104',12.431493,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15987','MGI to Slovenia 1996 (6)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4312','EPSG','4765','EPSG','3568',0.3,468.63,81.389,445.221,'EPSG','9001',-3.839242,-3.262525,10.566866,'EPSG','9104',16.132726,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15988','MGI to Slovenia 1996 (7)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4312','EPSG','4765','EPSG','3569',0.3,439.5,-11.77,494.976,'EPSG','9001',-0.026585,-4.65641,10.155824,'EPSG','9104',16.270002,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15989','MGI to Slovenia 1996 (8)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4312','EPSG','4765','EPSG','3570',0.3,524.442,3.275,519.002,'EPSG','9001',0.013287,-3.119714,10.232693,'EPSG','9104',4.184981,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15990','MGI to Slovenia 1996 (9)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4312','EPSG','4765','EPSG','3571',0.3,281.529,45.963,537.515,'EPSG','9001',-2.570437,-9.648271,10.759507,'EPSG','9104',26.465548,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15991','MGI to Slovenia 1996 (10)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4312','EPSG','4765','EPSG','3572',0.3,355.845,274.282,462.979,'EPSG','9001',-9.086933,-6.491055,14.502181,'EPSG','9104',20.888647,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15992','MGI to Slovenia 1996 (11)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4312','EPSG','4765','EPSG','3573',0.3,400.629,90.651,472.249,'EPSG','9001',-3.261138,-5.263404,11.83739,'EPSG','9104',20.022676,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "helmert_transformation" VALUES('EPSG','15993','Pulkovo 1942(58) to ETRS89 (3)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4179','EPSG','4258','EPSG','1197',10.0,68.1564,32.7756,80.2249,'EPSG','9001',2.20333014,2.19256447,-2.54166911,'EPSG','9104',-0.14155333,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15994','Pulkovo 1942(58) to ETRS89 (4)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4179','EPSG','4258','EPSG','1197',3.0,2.3287,-147.0425,-92.0802,'EPSG','9001',0.3092483,-0.32482185,-0.49729934,'EPSG','9104',5.68906266,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15995','Pulkovo 1942(58) to WGS 84 (19)',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4179','EPSG','4326','EPSG','1197',3.0,2.329,-147.042,-92.08,'EPSG','9001',0.309,-0.325,-0.497,'EPSG','9104',5.69,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15996','Pulkovo 1942(83) to WGS 84 (3)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4178','EPSG','4326','EPSG','1119',4.0,28.0,-121.0,-77.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15997','Pulkovo 1942(58) to WGS 84 (4)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4179','EPSG','4326','EPSG','3293',6.0,23.0,-124.0,-82.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15998','Pulkovo 1942(83) to WGS 84 (5)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4178','EPSG','4326','EPSG','1306',5.0,26.0,-121.0,-78.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('EPSG','15999','Pulkovo 1942(58) to WGS 84 (8)',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4179','EPSG','4326','EPSG','3212',6.0,24.0,-130.0,-92.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); diff --git a/data/sql/ignf.sql b/data/sql/ignf.sql new file mode 100644 index 00000000..de78c865 --- /dev/null +++ b/data/sql/ignf.sql @@ -0,0 +1,1120 @@ +--- This file has been generated by scripts/build_db_create_ignf.py from the PROJ4 IGNF definition file. DO NOT EDIT ! + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_AMST63','Ile d''Amsterdam 1963',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','AMST63','Ile d''Amsterdam 1963',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_AMST63','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_AMST63_TO_EPSG_4978','Ile d''Amsterdam 1963 to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','AMST63','EPSG','4978','EPSG','1262',NULL,109.7530,-528.1330,-362.2440,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_ANAA92','MOP92 (Anaa) Tuamotu',NULL,NULL,'EPSG','7030','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','ANAA92','MOP92 (Anaa) Tuamotu',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_ANAA92','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_ANAA92_TO_EPSG_4978','MOP92 (Anaa) Tuamotu to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','ANAA92','EPSG','4978','EPSG','1262',NULL,1.5000,3.8400,4.8100,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_APAT86','MOP86 (Apataki, Rapa, Hao) Tuamotu',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','APAT86','MOP86 (Apataki, Rapa, Hao) Tuamotu',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_APAT86','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_APAT86_TO_EPSG_4978','MOP86 (Apataki, Rapa, Hao) Tuamotu to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','APAT86','EPSG','4978','EPSG','1262',NULL,216.8400,118.8100,19.6100,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_ATI','Ancienne Triangulation des Ingenieurs',NULL,NULL,'EPSG','7027','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','ATI','Ancienne Triangulation des Ingenieurs',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_ATI','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_ATI_TO_EPSG_4978','Ancienne Triangulation des Ingenieurs to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','ATI','EPSG','4978','EPSG','1262',NULL,1127.0000,22.0000,57.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_CAD97','Cadastre 1997',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','CAD97','Cadastre 1997',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_CAD97','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_CAD97_TO_EPSG_4978','Cadastre 1997 to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','CAD97','EPSG','4978','EPSG','1262',NULL,-381.7880,-57.5010,-256.6730,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_CIOBIH','CIO-BIH',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','CIOBIH','CIO-BIH',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_CIOBIH','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_CIOBIH_TO_EPSG_4978','CIO-BIH to WGS 84',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','IGNF','CIOBIH','EPSG','4978','EPSG','1262',NULL,0.0000,0.0000,0.5000,'EPSG','9001',0.0000,0.0000,0.0140,'EPSG','9104',-0.100000,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_CROZ63','Crozet 1963',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','CROZ63','Crozet 1963',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_CROZ63','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_CROZ63_TO_EPSG_4978','Crozet 1963 to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','CROZ63','EPSG','4978','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_CSG67','Guyane CSG67',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','CSG67','Guyane CSG67',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_CSG67','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_CSG67_TO_EPSG_4978','Guyane CSG67 to WGS 84',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','IGNF','CSG67','EPSG','4978','EPSG','1262',NULL,-193.0660,236.9930,105.4470,'EPSG','9001',0.4814,-0.8074,0.1276,'EPSG','9104',1.564900,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_ED50','ED50',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','ED50','ED50',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_ED50','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_ED50_TO_EPSG_4978','ED50 to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','ED50','EPSG','4978','EPSG','1262',NULL,-84.0000,-97.0000,-117.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_EFATE57','EFATE-IGN 1957',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','EFATE57','EFATE-IGN 1957',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_EFATE57','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_EFATE57_TO_EPSG_4978','EFATE-IGN 1957 to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','EFATE57','EPSG','4978','EPSG','1262',NULL,-127.0000,-769.0000,472.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_ETRS89','Systeme de reference terrestre Europeen (1989)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','ETRS89','Systeme de reference terrestre Europeen (1989)',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_ETRS89','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_ETRS89_TO_EPSG_4978','Systeme de reference terrestre Europeen (1989) to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','ETRS89','EPSG','4978','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_FANGA84','MOP84 (Fangataufa 1984)',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','FANGA84','MOP84 (Fangataufa 1984)',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_FANGA84','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_FANGA84_TO_EPSG_4978','MOP84 (Fangataufa 1984) to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','FANGA84','EPSG','4978','EPSG','1262',NULL,150.5700,158.3300,118.3200,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_GUAD48','Guadeloupe Ste Anne',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','GUAD48','Guadeloupe Ste Anne',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_GUAD48','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_GUAD48_TO_EPSG_4978','Guadeloupe Ste Anne to WGS 84',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','IGNF','GUAD48','EPSG','4978','EPSG','1262',NULL,-472.2900,-5.6300,-304.1200,'EPSG','9001',0.4362,-0.8374,0.2563,'EPSG','9104',1.898400,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_GUADFM49','Guadeloupe Fort Marigot',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','GUADFM49','Guadeloupe Fort Marigot',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_GUADFM49','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_GUADFM49_TO_EPSG_4978','Guadeloupe Fort Marigot to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','GUADFM49','EPSG','4978','EPSG','1262',NULL,136.5960,248.1480,-429.7890,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_IGN63','IGN 1963 (Hiva Oa, Tahuata, Mohotani)',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','IGN63','IGN 1963 (Hiva Oa, Tahuata, Mohotani)',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_IGN63','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_IGN63_TO_EPSG_4978','IGN 1963 (Hiva Oa, Tahuata, Mohotani) to WGS 84',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','IGNF','IGN63','EPSG','4978','EPSG','1262',NULL,410.7210,55.0490,80.7460,'EPSG','9001',-2.5779,-2.3514,-0.6664,'EPSG','9104',17.331100,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_IGN72','IGN 1972 Grande-Terre / Ile des Pins',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','IGN72','IGN 1972 Grande-Terre / Ile des Pins',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_IGN72','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_IGN72_TO_EPSG_4978','IGN 1972 Grande-Terre / Ile des Pins to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','IGN72','EPSG','4978','EPSG','1262',NULL,-11.6400,-348.6000,291.6800,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_KAUE70','MHPF70 (Kauehi) Tuamotu',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','KAUE70','MHPF70 (Kauehi) Tuamotu',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_KAUE70','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_KAUE70_TO_EPSG_4978','MHPF70 (Kauehi) Tuamotu to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','KAUE70','EPSG','4978','EPSG','1262',NULL,126.7400,300.1000,-75.4900,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_KERG62CAR','Kerguelen - K0',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','KERG62CAR','Kerguelen - K0',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_KERG62CAR','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_KERG62CAR_TO_EPSG_4978','Kerguelen - K0 to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','KERG62CAR','EPSG','4978','EPSG','1262',NULL,144.8990,-186.7700,100.9230,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_LIFOU56','Lifou - Iles Loyaute (IGN56)',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','LIFOU56','Lifou - Iles Loyaute (IGN56)',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_LIFOU56','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_LIFOU56_TO_EPSG_4978','Lifou - Iles Loyaute (IGN56) to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','LIFOU56','EPSG','4978','EPSG','1262',NULL,336.0000,223.0000,-231.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_LUREF','Nouvelle Triangulation du Grand Duche du Luxembourg',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','LUREF','Nouvelle Triangulation du Grand Duche du Luxembourg',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_LUREF','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_LUREF_TO_EPSG_4978','Nouvelle Triangulation du Grand Duche du Luxembourg to WGS 84',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','IGNF','LUREF','EPSG','4978','EPSG','1262',NULL,-192.9860,13.6730,-39.3090,'EPSG','9001',-0.4099,-2.9332,2.6881,'EPSG','9104',0.430000,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_MARE53','Mare - Iles Loyaute (IGN53)',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','MARE53','Mare - Iles Loyaute (IGN53)',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_MARE53','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_MARE53_TO_EPSG_4978','Mare - Iles Loyaute (IGN53) to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','MARE53','EPSG','4978','EPSG','1262',NULL,287.0000,178.0000,-136.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_MARQUI72','IGN 1972 (Eiao, Hiva Oa, Mohotani) Marquises',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','MARQUI72','IGN 1972 (Eiao, Hiva Oa, Mohotani) Marquises',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_MARQUI72','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_MARQUI72_TO_EPSG_4978','IGN 1972 (Eiao, Hiva Oa, Mohotani) Marquises to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','MARQUI72','EPSG','4978','EPSG','1262',NULL,327.8400,-14.9600,59.3300,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_MART38','Martinique Fort-Desaix',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','MART38','Martinique Fort-Desaix',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_MART38','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_MART38_TO_EPSG_4978','Martinique Fort-Desaix to WGS 84',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','IGNF','MART38','EPSG','4978','EPSG','1262',NULL,126.9260,547.9390,130.4090,'EPSG','9001',-2.7867,5.1612,-0.8584,'EPSG','9104',13.822650,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_MAYO50','Mayotte Combani',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','MAYO50','Mayotte Combani',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_MAYO50','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_MAYO50_TO_EPSG_4978','Mayotte Combani to WGS 84',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','IGNF','MAYO50','EPSG','4978','EPSG','1262',NULL,-599.9280,-275.5520,-195.6650,'EPSG','9001',-0.0835,-0.4715,0.0602,'EPSG','9104',49.281400,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_MHEFO55F','MHEFO 1955 (Fatu Huku)',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','MHEFO55F','MHEFO 1955 (Fatu Huku)',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_MHEFO55F','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_MHEFO55F_TO_EPSG_4978','MHEFO 1955 (Fatu Huku) to WGS 84',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','IGNF','MHEFO55F','EPSG','4978','EPSG','1262',NULL,347.1030,1078.1250,2623.9220,'EPSG','9001',33.8875,-70.6773,9.3943,'EPSG','9104',186.074000,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_MHPF67','MHPF67 (Mangareva, Agakauitai, Aukena, Mekiro) Gambiers (Iles)',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','MHPF67','MHPF67 (Mangareva, Agakauitai, Aukena, Mekiro) Gambiers (Iles)',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_MHPF67','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_MHPF67_TO_EPSG_4978','MHPF67 (Mangareva, Agakauitai, Aukena, Mekiro) Gambiers (Iles) to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','MHPF67','EPSG','4978','EPSG','1262',NULL,338.0800,212.5800,-296.1700,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_MOOREA87','Moorea 1987',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','MOOREA87','Moorea 1987',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_MOOREA87','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_MOOREA87_TO_EPSG_4978','Moorea 1987 to WGS 84',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','IGNF','MOOREA87','EPSG','4978','EPSG','1262',NULL,215.9820,149.5930,176.2290,'EPSG','9001',3.2624,1.6920,1.1571,'EPSG','9104',10.477300,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_MOP90','MOP90 (Tetiaroa) Iles de la Societe',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','MOP90','MOP90 (Tetiaroa) Iles de la Societe',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_MOP90','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_MOP90_TO_EPSG_4978','MOP90 (Tetiaroa) Iles de la Societe to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','MOP90','EPSG','4978','EPSG','1262',NULL,217.0370,86.9590,23.9560,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_NTF','Nouvelle Triangulation Francaise',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','NTF','Nouvelle Triangulation Francaise',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_NTF','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_NTF_TO_EPSG_4978','Nouvelle Triangulation Francaise to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','NTF','EPSG','4978','EPSG','1262',NULL,-168.0000,-60.0000,320.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('IGNF','IGNF_NTF_TO_EPSG_4978_GRID','Nouvelle Triangulation Francaise to WGS 84 (2)',NULL,NULL,'EPSG','9615','NTv2','IGNF','NTF','EPSG','4978','EPSG','1262',NULL,'EPSG','8656','Latitude and longitude difference file','ntf_r93.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_NUKU72','IGN 1972 Nuku Hiva',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','NUKU72','IGN 1972 Nuku Hiva',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_NUKU72','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_NUKU72_TO_EPSG_4978','IGN 1972 Nuku Hiva to WGS 84',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','IGNF','NUKU72','EPSG','4978','EPSG','1262',NULL,165.7320,216.7200,180.5050,'EPSG','9001',-0.6434,-0.4512,-0.0791,'EPSG','9104',7.420400,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_NUKU94','SAT94 (Nukutavake) Tuamotu',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','NUKU94','SAT94 (Nukutavake) Tuamotu',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_NUKU94','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_NUKU94_TO_EPSG_4978','SAT94 (Nukutavake) Tuamotu to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','NUKU94','EPSG','4978','EPSG','1262',NULL,197.1600,200.1700,-48.0800,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_OUVEA72CAR','Ouvea - Iles Loyaute (MHNC 1972 - OUVEA)',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','OUVEA72CAR','Ouvea - Iles Loyaute (MHNC 1972 - OUVEA)',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_OUVEA72CAR','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_OUVEA72CAR_TO_EPSG_4978','Ouvea - Iles Loyaute (MHNC 1972 - OUVEA) to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','OUVEA72CAR','EPSG','4978','EPSG','1262',NULL,-13.0000,-348.0000,292.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_PETRELS72','Petrels - IGN 1972',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','PETRELS72','Petrels - IGN 1972',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_PETRELS72','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_PETRELS72_TO_EPSG_4978','Petrels - IGN 1972 to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','PETRELS72','EPSG','4978','EPSG','1262',NULL,365.0000,194.0000,166.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_RAIA53','IGN53 (IGN Raiatea-Tahaa) Raiatea-Tahaa-Bora Bora-Huahine',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','RAIA53','IGN53 (IGN Raiatea-Tahaa) Raiatea-Tahaa-Bora Bora-Huahine',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_RAIA53','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RAIA53_TO_EPSG_4978','IGN53 (IGN Raiatea-Tahaa) Raiatea-Tahaa-Bora Bora-Huahine to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','RAIA53','EPSG','4978','EPSG','1262',NULL,65.0300,341.5500,76.6700,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_REUN47','Reunion 1947',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','REUN47','Reunion 1947',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_REUN47','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_REUN47_TO_EPSG_4978','Reunion 1947 to WGS 84',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','IGNF','REUN47','EPSG','4978','EPSG','1262',NULL,789.5240,-626.4860,-89.9040,'EPSG','9001',0.6006,76.7946,-10.5788,'EPSG','9104',-32.324100,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_RGF93','Reseau geodesique francais 1993',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','RGF93','Reseau geodesique francais 1993',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_RGF93','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RGF93_TO_EPSG_4978','Reseau geodesique francais 1993 to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','RGF93','EPSG','4978','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_RGFG95','Reseau geodesique francais de Guyane 1995',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','RGFG95','Reseau geodesique francais de Guyane 1995',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_RGFG95','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RGFG95_TO_EPSG_4978','Reseau geodesique francais de Guyane 1995 to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','RGFG95','EPSG','4978','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_RGM04','RGM04 (Reseau Geodesique de Mayotte 2004)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','RGM04','RGM04 (Reseau Geodesique de Mayotte 2004)',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_RGM04','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RGM04_TO_EPSG_4978','RGM04 (Reseau Geodesique de Mayotte 2004) to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','RGM04','EPSG','4978','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_RGNC','Reseau Geodesique de Nouvelle-Caledonie',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','RGNC','Reseau Geodesique de Nouvelle-Caledonie',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_RGNC','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RGNC_TO_EPSG_4978','Reseau Geodesique de Nouvelle-Caledonie to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','RGNC','EPSG','4978','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_RGPF','RGPF (Reseau Geodesique de Polynesie Francaise)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','RGPF','RGPF (Reseau Geodesique de Polynesie Francaise)',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_RGPF','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RGPF_TO_EPSG_4978','RGPF (Reseau Geodesique de Polynesie Francaise) to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','RGPF','EPSG','4978','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_RGR92','Reseau geodesique Reunion 1992',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','RGR92','Reseau geodesique Reunion 1992',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_RGR92','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RGR92_TO_EPSG_4978','Reseau geodesique Reunion 1992 to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','RGR92','EPSG','4978','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_RGSPM06','Reseau Geodesique Saint-Pierre-et-Miquelon (2006)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','RGSPM06','Reseau Geodesique Saint-Pierre-et-Miquelon (2006)',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_RGSPM06','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RGSPM06_TO_EPSG_4978','Reseau Geodesique Saint-Pierre-et-Miquelon (2006) to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','RGSPM06','EPSG','4978','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_RGTAAF07','Reseau Geodesique des TAAF (2007)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','RGTAAF07','Reseau Geodesique des TAAF (2007)',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_RGTAAF07','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RGTAAF07_TO_EPSG_4978','Reseau Geodesique des TAAF (2007) to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','RGTAAF07','EPSG','4978','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_RRAF91','RRAF 1991 (Reseau de Reference des Antilles Francaises)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','RRAF91','RRAF 1991 (Reseau de Reference des Antilles Francaises)',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_RRAF91','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RRAF91_TO_EPSG_4978','RRAF 1991 (Reseau de Reference des Antilles Francaises) to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','RRAF91','EPSG','4978','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_SAT84','SAT84 (Rurutu) Iles Australes',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','SAT84','SAT84 (Rurutu) Iles Australes',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_SAT84','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_SAT84_TO_EPSG_4978','SAT84 (Rurutu) Iles Australes to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','SAT84','EPSG','4978','EPSG','1262',NULL,202.1300,174.6000,-15.7400,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_SHOM84','SHOM 1984 Martinique Montagne Du Vauclin',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','SHOM84','SHOM 1984 Martinique Montagne Du Vauclin',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_SHOM84','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_SHOM84_TO_EPSG_4978','SHOM 1984 Martinique Montagne Du Vauclin to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','SHOM84','EPSG','4978','EPSG','1262',NULL,189.5060,486.5470,148.7830,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_STPL69','Ile de Saint-Paul 1969',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','STPL69','Ile de Saint-Paul 1969',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_STPL69','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_STPL69_TO_EPSG_4978','Ile de Saint-Paul 1969 to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','STPL69','EPSG','4978','EPSG','1262',NULL,225.5710,-346.6080,-46.5670,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_STPM50','St Pierre et Miquelon 1950',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','STPM50','St Pierre et Miquelon 1950',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_STPM50','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_STPM50_TO_EPSG_4978','St Pierre et Miquelon 1950 to WGS 84',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','IGNF','STPM50','EPSG','4978','EPSG','1262',NULL,-95.5930,573.7630,173.4420,'EPSG','9001',-0.9602,1.2510,-1.3918,'EPSG','9104',42.626500,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_TAHAA','Raiatea - Tahaa 51-54 (Tahaa, Base Terme Est)',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','TAHAA','Raiatea - Tahaa 51-54 (Tahaa, Base Terme Est)',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_TAHAA','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_TAHAA_TO_EPSG_4978','Raiatea - Tahaa 51-54 (Tahaa, Base Terme Est) to WGS 84',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','IGNF','TAHAA','EPSG','4978','EPSG','1262',NULL,72.4380,345.9180,79.4860,'EPSG','9001',-1.6045,-0.8823,-0.5565,'EPSG','9104',1.374600,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_TAHI51','Tahiti-Terme Nord 1951',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','TAHI51','Tahiti-Terme Nord 1951',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_TAHI51','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_TAHI51_TO_EPSG_4978','Tahiti-Terme Nord 1951 to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','TAHI51','EPSG','4978','EPSG','1262',NULL,162.0000,117.0000,154.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_TAHI79','IGN79 (Tahiti) Iles de la Societe',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','TAHI79','IGN79 (Tahiti) Iles de la Societe',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_TAHI79','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_TAHI79_TO_EPSG_4978','IGN79 (Tahiti) Iles de la Societe to WGS 84',NULL,NULL,'EPSG','1033','Position Vector transformation (geocentric domain)','IGNF','TAHI79','EPSG','4978','EPSG','1262',NULL,221.5250,152.9480,176.7680,'EPSG','9001',2.3847,1.3896,0.8770,'EPSG','9104',11.474100,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_TANNA','Tanna Bloc Sud',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','TANNA','Tanna Bloc Sud',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_TANNA','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_TANNA_TO_EPSG_4978','Tanna Bloc Sud to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','TANNA','EPSG','4978','EPSG','1262',NULL,-139.0000,-967.0000,436.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_TERA50','Pointe Geologie - Perroud 1950',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','TERA50','Pointe Geologie - Perroud 1950',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_TERA50','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_TERA50_TO_EPSG_4978','Pointe Geologie - Perroud 1950 to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','TERA50','EPSG','4978','EPSG','1262',NULL,324.9120,153.2820,172.0260,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_TUBU69','MHPF 1969 (Tubuai) Iles Australes',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','TUBU69','MHPF 1969 (Tubuai) Iles Australes',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_TUBU69','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_TUBU69_TO_EPSG_4978','MHPF 1969 (Tubuai) Iles Australes to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','TUBU69','EPSG','4978','EPSG','1262',NULL,237.1700,171.6100,-77.8400,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_WALL78','Wallis-Uvea 1978 (MOP78)',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','WALL78','Wallis-Uvea 1978 (MOP78)',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_WALL78','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_WALL78_TO_EPSG_4978','Wallis-Uvea 1978 (MOP78) to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','WALL78','EPSG','4978','EPSG','1262',NULL,253.0000,-133.0000,-127.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_WGS72','World Geodetic System 1972',NULL,NULL,'EPSG','7043','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','WGS72','World Geodetic System 1972',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_WGS72','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_WGS72_TO_EPSG_4978','World Geodetic System 1972 to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','WGS72','EPSG','4978','EPSG','1262',NULL,0.0000,12.0000,6.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_WGS84','World Geodetic System 1984',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','WGS84','World Geodetic System 1984',NULL,NULL,'geocentric','EPSG','6500','IGNF','DATUM_WGS84','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_WGS84_TO_EPSG_4978','World Geodetic System 1984 to WGS 84',NULL,NULL,'EPSG','1031','Geocentric translations (geocentric domain)','IGNF','WGS84','EPSG','4978','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','AMST63GEO','Ile d''Amsterdam 1963',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_AMST63','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_AMST63GEO_TO_EPSG_4326','Ile d''Amsterdam 1963 to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','AMST63GEO','EPSG','4326','EPSG','1262',NULL,109.7530,-528.1330,-362.2440,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','ANAA92GEO','MOP92 (Anaa) Tuamotu',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_ANAA92','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_ANAA92GEO_TO_EPSG_4326','MOP92 (Anaa) Tuamotu to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','ANAA92GEO','EPSG','4326','EPSG','1262',NULL,1.5000,3.8400,4.8100,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','APAT86GEO','MOP86 (Apataki, Rapa, Hao) Tuamotu',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_APAT86','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_APAT86GEO_TO_EPSG_4326','MOP86 (Apataki, Rapa, Hao) Tuamotu to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','APAT86GEO','EPSG','4326','EPSG','1262',NULL,216.8400,118.8100,19.6100,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','ATIGEO','Ancienne Triangulation des Ingenieurs',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_ATI','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_ATIGEO_TO_EPSG_4326','Ancienne Triangulation des Ingenieurs to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','ATIGEO','EPSG','4326','EPSG','1262',NULL,1127.0000,22.0000,57.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','CAD97GEO','Cadastre 1997',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_CAD97','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_CAD97GEO_TO_EPSG_4326','Cadastre 1997 to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','CAD97GEO','EPSG','4326','EPSG','1262',NULL,-381.7880,-57.5010,-256.6730,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','CROZ63GEO','Crozet 1963',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_CROZ63','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_CROZ63GEO_TO_EPSG_4326','Crozet 1963 to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','CROZ63GEO','EPSG','4326','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','CSG67GEO','Guyane CSG67',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_CSG67','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_CSG67GEO_TO_EPSG_4326','Guyane CSG67 to WGS 84',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','IGNF','CSG67GEO','EPSG','4326','EPSG','1262',NULL,-193.0660,236.9930,105.4470,'EPSG','9001',0.4814,-0.8074,0.1276,'EPSG','9104',1.564900,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','ED50G','ED50',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_ED50','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_ED50G_TO_EPSG_4326','ED50 to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','ED50G','EPSG','4326','EPSG','1262',NULL,-84.0000,-97.0000,-117.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','EFATE57GEO','EFATE-IGN 1957',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_EFATE57','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_EFATE57GEO_TO_EPSG_4326','EFATE-IGN 1957 to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','EFATE57GEO','EPSG','4326','EPSG','1262',NULL,-127.0000,-769.0000,472.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_ETRS89GEO','ETRS89 geographiques (dms)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','ETRS89GEO','ETRS89 geographiques (dms)',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_ETRS89GEO','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_ETRS89GEO_TO_EPSG_4326','ETRS89 geographiques (dms) to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','ETRS89GEO','EPSG','4326','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','FANGA84GEO','MOP84 (Fangataufa 1984)',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_FANGA84','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_FANGA84GEO_TO_EPSG_4326','MOP84 (Fangataufa 1984) to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','FANGA84GEO','EPSG','4326','EPSG','1262',NULL,150.5700,158.3300,118.3200,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','GUAD48GEO','Guadeloupe Ste Anne',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_GUAD48','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_GUAD48GEO_TO_EPSG_4326','Guadeloupe Ste Anne to WGS 84',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','IGNF','GUAD48GEO','EPSG','4326','EPSG','1262',NULL,-472.2900,-5.6300,-304.1200,'EPSG','9001',0.4362,-0.8374,0.2563,'EPSG','9104',1.898400,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','GUADFM49GEO','Guadeloupe Fort Marigot',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_GUADFM49','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_GUADFM49GEO_TO_EPSG_4326','Guadeloupe Fort Marigot to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','GUADFM49GEO','EPSG','4326','EPSG','1262',NULL,136.5960,248.1480,-429.7890,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','IGN63GEO','IGN 1963 (Hiva Oa, Tahuata, Mohotani)',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_IGN63','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_IGN63GEO_TO_EPSG_4326','IGN 1963 (Hiva Oa, Tahuata, Mohotani) to WGS 84',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','IGNF','IGN63GEO','EPSG','4326','EPSG','1262',NULL,410.7210,55.0490,80.7460,'EPSG','9001',-2.5779,-2.3514,-0.6664,'EPSG','9104',17.331100,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','IGN72GEO','IGN 1972 Grande-Terre / Ile des Pins',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_IGN72','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_IGN72GEO_TO_EPSG_4326','IGN 1972 Grande-Terre / Ile des Pins to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','IGN72GEO','EPSG','4326','EPSG','1262',NULL,-11.6400,-348.6000,291.6800,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','KAUE70GEO','MHPF70 (Kauehi) Tuamotu',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_KAUE70','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_KAUE70GEO_TO_EPSG_4326','MHPF70 (Kauehi) Tuamotu to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','KAUE70GEO','EPSG','4326','EPSG','1262',NULL,126.7400,300.1000,-75.4900,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','KERG62GEO','Kerguelen - K0',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_KERG62CAR','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_KERG62GEO_TO_EPSG_4326','Kerguelen - K0 to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','KERG62GEO','EPSG','4326','EPSG','1262',NULL,144.8990,-186.7700,100.9230,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','LIFOU56GEO','Lifou - Iles Loyaute (IGN56)',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_LIFOU56','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_LIFOU56GEO_TO_EPSG_4326','Lifou - Iles Loyaute (IGN56) to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','LIFOU56GEO','EPSG','4326','EPSG','1262',NULL,336.0000,223.0000,-231.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','LUXGEO','Nouvelle Triangulation du Grand Duche du Luxembourg',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_LUREF','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_LUXGEO_TO_EPSG_4326','Nouvelle Triangulation du Grand Duche du Luxembourg to WGS 84',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','IGNF','LUXGEO','EPSG','4326','EPSG','1262',NULL,-192.9860,13.6730,-39.3090,'EPSG','9001',-0.4099,-2.9332,2.6881,'EPSG','9104',0.430000,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','MARE53GEO','Mare - Iles Loyaute (IGN53)',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_MARE53','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_MARE53GEO_TO_EPSG_4326','Mare - Iles Loyaute (IGN53) to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','MARE53GEO','EPSG','4326','EPSG','1262',NULL,287.0000,178.0000,-136.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','MARQUI72GEO','IGN 1972 (Eiao, Hiva Oa, Mohotani) Marquises',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_MARQUI72','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_MARQUI72GEO_TO_EPSG_4326','IGN 1972 (Eiao, Hiva Oa, Mohotani) Marquises to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','MARQUI72GEO','EPSG','4326','EPSG','1262',NULL,327.8400,-14.9600,59.3300,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','MART38GEO','Martinique Fort-Desaix',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_MART38','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_MART38GEO_TO_EPSG_4326','Martinique Fort-Desaix to WGS 84',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','IGNF','MART38GEO','EPSG','4326','EPSG','1262',NULL,126.9260,547.9390,130.4090,'EPSG','9001',-2.7867,5.1612,-0.8584,'EPSG','9104',13.822650,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','MAYO50GEO','Mayotte Combani',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_MAYO50','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_MAYO50GEO_TO_EPSG_4326','Mayotte Combani to WGS 84',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','IGNF','MAYO50GEO','EPSG','4326','EPSG','1262',NULL,-599.9280,-275.5520,-195.6650,'EPSG','9001',-0.0835,-0.4715,0.0602,'EPSG','9104',49.281400,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','MHEFO55FGEO','MHEFO 1955 (Fatu Huku)',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_MHEFO55F','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_MHEFO55FGEO_TO_EPSG_4326','MHEFO 1955 (Fatu Huku) to WGS 84',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','IGNF','MHEFO55FGEO','EPSG','4326','EPSG','1262',NULL,347.1030,1078.1250,2623.9220,'EPSG','9001',33.8875,-70.6773,9.3943,'EPSG','9104',186.074000,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','MHPF67GEO','MHPF67 (Mangareva, Agakauitai, Aukena, Mekiro) Gambiers (Iles)',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_MHPF67','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_MHPF67GEO_TO_EPSG_4326','MHPF67 (Mangareva, Agakauitai, Aukena, Mekiro) Gambiers (Iles) to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','MHPF67GEO','EPSG','4326','EPSG','1262',NULL,338.0800,212.5800,-296.1700,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','MOOREA87GEO','Moorea 1987',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_MOOREA87','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_MOOREA87GEO_TO_EPSG_4326','Moorea 1987 to WGS 84',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','IGNF','MOOREA87GEO','EPSG','4326','EPSG','1262',NULL,215.9820,149.5930,176.2290,'EPSG','9001',3.2624,1.6920,1.1571,'EPSG','9104',10.477300,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','MOP90GEO','MOP90 (Tetiaroa) Iles de la Societe',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_MOP90','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_MOP90GEO_TO_EPSG_4326','MOP90 (Tetiaroa) Iles de la Societe to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','MOP90GEO','EPSG','4326','EPSG','1262',NULL,217.0370,86.9590,23.9560,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_NTFG','Nouvelle Triangulation Francaise Greenwich degres sexagesimaux',NULL,NULL,'EPSG','7011','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','NTFG','Nouvelle Triangulation Francaise Greenwich degres sexagesimaux',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_NTFG','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_NTFG_TO_EPSG_4326','Nouvelle Triangulation Francaise Greenwich degres sexagesimaux to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','NTFG','EPSG','4326','EPSG','1262',NULL,-168.0000,-60.0000,320.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('IGNF','IGNF_NTFG_TO_EPSG_4326_GRID','Nouvelle Triangulation Francaise Greenwich degres sexagesimaux to WGS 84 (2)',NULL,NULL,'EPSG','9615','NTv2','IGNF','NTFG','EPSG','4326','EPSG','1262',NULL,'EPSG','8656','Latitude and longitude difference file','ntf_r93.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_NTFP','Nouvelle Triangulation Francaise Paris grades',NULL,NULL,'EPSG','7011','EPSG','8903','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','NTFP','Nouvelle Triangulation Francaise Paris grades',NULL,NULL,'geographic 2D','EPSG','6425','IGNF','DATUM_NTFP','EPSG','1262',NULL,0); +INSERT INTO "other_transformation" VALUES('IGNF','IGNF_NTFP_TO_IGNF_NTFG','Nouvelle Triangulation Francaise Paris grades to Nouvelle Triangulation Francaise Greenwich degres sexagesimaux',NULL,NULL,'EPSG','9601','Longitude rotation','IGNF','NTFP','IGNF','NTFG','EPSG','1262',0.0,'EPSG','8602','Longitude offset',2.5969213,'EPSG','9105',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('IGNF','IGNF_NTFP_TO_EPSG_4326','Nouvelle Triangulation Francaise Paris grades to WGS 84',NULL,NULL,'IGNF','NTFP','EPSG','4326','EPSG','1262',NULL,'IGNF','IGNF_NTFP_TO_IGNF_NTFG','IGNF','IGNF_NTFG_TO_EPSG_4326',NULL,NULL,0); +INSERT INTO "concatenated_operation" VALUES('IGNF','IGNF_NTFP_TO_EPSG_4326_GRID','Nouvelle Triangulation Francaise Paris grades to WGS 84 (2)',NULL,NULL,'IGNF','NTFP','EPSG','4326','EPSG','1262',NULL,'IGNF','IGNF_NTFP_TO_IGNF_NTFG','IGNF','IGNF_NTFG_TO_EPSG_4326_GRID',NULL,NULL,0); +INSERT INTO "geodetic_crs" VALUES('IGNF','NUKU72GEO','IGN 1972 Nuku Hiva',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_NUKU72','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_NUKU72GEO_TO_EPSG_4326','IGN 1972 Nuku Hiva to WGS 84',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','IGNF','NUKU72GEO','EPSG','4326','EPSG','1262',NULL,165.7320,216.7200,180.5050,'EPSG','9001',-0.6434,-0.4512,-0.0791,'EPSG','9104',7.420400,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','NUKU94GEO','SAT94 (Nukutavake) Tuamotu',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_NUKU94','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_NUKU94GEO_TO_EPSG_4326','SAT94 (Nukutavake) Tuamotu to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','NUKU94GEO','EPSG','4326','EPSG','1262',NULL,197.1600,200.1700,-48.0800,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','OUVEA72GEO','Ouvea - Iles Loyaute (MHNC 1972 - OUVEA)',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_OUVEA72CAR','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_OUVEA72GEO_TO_EPSG_4326','Ouvea - Iles Loyaute (MHNC 1972 - OUVEA) to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','OUVEA72GEO','EPSG','4326','EPSG','1262',NULL,-13.0000,-348.0000,292.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','RAIA53GEO','IGN53 (IGN Raiatea-Tahaa) Raiatea-Tahaa-Bora Bora-Huahine',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_RAIA53','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RAIA53GEO_TO_EPSG_4326','IGN53 (IGN Raiatea-Tahaa) Raiatea-Tahaa-Bora Bora-Huahine to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','RAIA53GEO','EPSG','4326','EPSG','1262',NULL,65.0300,341.5500,76.6700,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','REUN47GEO','Reunion 1947',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_REUN47','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_REUN47GEO_TO_EPSG_4326','Reunion 1947 to WGS 84',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','IGNF','REUN47GEO','EPSG','4326','EPSG','1262',NULL,789.5240,-626.4860,-89.9040,'EPSG','9001',0.6006,76.7946,-10.5788,'EPSG','9104',-32.324100,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','RGF93G','Reseau geodesique francais 1993',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_RGF93','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RGF93G_TO_EPSG_4326','Reseau geodesique francais 1993 to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','RGF93G','EPSG','4326','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','RGFG95GEO','Reseau geodesique francais de Guyane 1995',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_RGFG95','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RGFG95GEO_TO_EPSG_4326','Reseau geodesique francais de Guyane 1995 to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','RGFG95GEO','EPSG','4326','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','RGM04GEO','RGM04 (Reseau Geodesique de Mayotte 2004)',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_RGM04','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RGM04GEO_TO_EPSG_4326','RGM04 (Reseau Geodesique de Mayotte 2004) to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','RGM04GEO','EPSG','4326','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','RGNCGEO','Reseau Geodesique de Nouvelle-Caledonie',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_RGNC','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RGNCGEO_TO_EPSG_4326','Reseau Geodesique de Nouvelle-Caledonie to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','RGNCGEO','EPSG','4326','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','RGPFGEO','RGPF (Reseau Geodesique de Polynesie Francaise)',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_RGPF','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RGPFGEO_TO_EPSG_4326','RGPF (Reseau Geodesique de Polynesie Francaise) to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','RGPFGEO','EPSG','4326','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_RGR92GEO','Reseau geodesique de la Reunion 1992',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','RGR92GEO','Reseau geodesique de la Reunion 1992',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_RGR92GEO','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RGR92GEO_TO_EPSG_4326','Reseau geodesique de la Reunion 1992 to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','RGR92GEO','EPSG','4326','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_RGSPM06GEO','Saint-Pierre-et-Miquelon (2006)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','RGSPM06GEO','Saint-Pierre-et-Miquelon (2006)',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_RGSPM06GEO','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RGSPM06GEO_TO_EPSG_4326','Saint-Pierre-et-Miquelon (2006) to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','RGSPM06GEO','EPSG','4326','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_RGTAAF07G','Reseau Geodesique des TAAF (2007) (dms)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','RGTAAF07G','Reseau Geodesique des TAAF (2007) (dms)',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_RGTAAF07G','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_RGTAAF07G_TO_EPSG_4326','Reseau Geodesique des TAAF (2007) (dms) to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','RGTAAF07G','EPSG','4326','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','SAT84GEO','SAT84 (Rurutu) Iles Australes',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_SAT84','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_SAT84GEO_TO_EPSG_4326','SAT84 (Rurutu) Iles Australes to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','SAT84GEO','EPSG','4326','EPSG','1262',NULL,202.1300,174.6000,-15.7400,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','SHOM84GEO','SHOM 1984 Martinique Montagne Du Vauclin',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_SHOM84','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_SHOM84GEO_TO_EPSG_4326','SHOM 1984 Martinique Montagne Du Vauclin to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','SHOM84GEO','EPSG','4326','EPSG','1262',NULL,189.5060,486.5470,148.7830,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','STPL69GEO','Ile de Saint-Paul 1969',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_STPL69','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_STPL69GEO_TO_EPSG_4326','Ile de Saint-Paul 1969 to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','STPL69GEO','EPSG','4326','EPSG','1262',NULL,225.5710,-346.6080,-46.5670,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_STPM50GEO','St Pierre et Miquelon 1950 ',NULL,NULL,'EPSG','7008','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','STPM50GEO','St Pierre et Miquelon 1950 ',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_STPM50GEO','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_STPM50GEO_TO_EPSG_4326','St Pierre et Miquelon 1950 to WGS 84',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','IGNF','STPM50GEO','EPSG','4326','EPSG','1262',NULL,-95.5930,573.7630,173.4420,'EPSG','9001',-0.9602,1.2510,-1.3918,'EPSG','9104',42.626500,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','TAHAAGEO','Raiatea - Tahaa 51-54 (Tahaa, Base Terme Est)',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_TAHAA','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_TAHAAGEO_TO_EPSG_4326','Raiatea - Tahaa 51-54 (Tahaa, Base Terme Est) to WGS 84',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','IGNF','TAHAAGEO','EPSG','4326','EPSG','1262',NULL,72.4380,345.9180,79.4860,'EPSG','9001',-1.6045,-0.8823,-0.5565,'EPSG','9104',1.374600,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','TAHI51GEO','Tahiti-Terme Nord 1951',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_TAHI51','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_TAHI51GEO_TO_EPSG_4326','Tahiti-Terme Nord 1951 to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','TAHI51GEO','EPSG','4326','EPSG','1262',NULL,162.0000,117.0000,154.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','TAHI79GEO','IGN79 (Tahiti) Iles de la Societe',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_TAHI79','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_TAHI79GEO_TO_EPSG_4326','IGN79 (Tahiti) Iles de la Societe to WGS 84',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','IGNF','TAHI79GEO','EPSG','4326','EPSG','1262',NULL,221.5250,152.9480,176.7680,'EPSG','9001',2.3847,1.3896,0.8770,'EPSG','9104',11.474100,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','TANNAGEO','Tanna Bloc Sud',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_TANNA','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_TANNAGEO_TO_EPSG_4326','Tanna Bloc Sud to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','TANNAGEO','EPSG','4326','EPSG','1262',NULL,-139.0000,-967.0000,436.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','TERA50G','Pointe Geologie - Perroud 1950',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_TERA50','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_TERA50G_TO_EPSG_4326','Pointe Geologie - Perroud 1950 to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','TERA50G','EPSG','4326','EPSG','1262',NULL,324.9120,153.2820,172.0260,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','TUBU69GEO','MHPF 1969 (Tubuai) Iles Australes',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_TUBU69','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_TUBU69GEO_TO_EPSG_4326','MHPF 1969 (Tubuai) Iles Australes to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','TUBU69GEO','EPSG','4326','EPSG','1262',NULL,237.1700,171.6100,-77.8400,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_WALL78GEO','Wallis - Uvea 1978 (MOP78)',NULL,NULL,'EPSG','7022','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','WALL78GEO','Wallis - Uvea 1978 (MOP78)',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_WALL78GEO','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_WALL78GEO_TO_EPSG_4326','Wallis - Uvea 1978 (MOP78) to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','WALL78GEO','EPSG','4326','EPSG','1262',NULL,253.0000,-133.0000,-127.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_WGS72G','WGS72',NULL,NULL,'EPSG','7043','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','WGS72G','WGS72',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_WGS72G','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_WGS72G_TO_EPSG_4326','WGS72 to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','WGS72G','EPSG','4326','EPSG','1262',NULL,0.0000,12.0000,6.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_crs" VALUES('IGNF','WGS84G','World Geodetic System 1984',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_WGS84','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_WGS84G_TO_EPSG_4326','World Geodetic System 1984 to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','WGS84G','EPSG','4326','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_WGS84RRAFGEO','Reseau de reference des Antilles francaises (1988-1991)',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','WGS84RRAFGEO','Reseau de reference des Antilles francaises (1988-1991)',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_WGS84RRAFGEO','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_WGS84RRAFGEO_TO_EPSG_4326','Reseau de reference des Antilles francaises (1988-1991) to WGS 84',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','IGNF','WGS84RRAFGEO','EPSG','4326','EPSG','1262',NULL,0.0000,0.0000,0.0000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "geodetic_datum" VALUES('IGNF','DATUM_XGEO','Systeme CIO-BIH',NULL,NULL,'EPSG','7019','EPSG','8901','EPSG','1262',0); +INSERT INTO "geodetic_crs" VALUES('IGNF','XGEO','Systeme CIO-BIH',NULL,NULL,'geographic 2D','EPSG','6424','IGNF','DATUM_XGEO','EPSG','1262',NULL,0); +INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_XGEO_TO_EPSG_4326','Systeme CIO-BIH to WGS 84',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','IGNF','XGEO','EPSG','4326','EPSG','1262',NULL,0.0000,0.0000,0.5000,'EPSG','9001',0.0000,0.0000,0.0140,'EPSG','9104',-0.100000,'EPSG', '9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_AMST63UTM43S','Conversion for Amsterdam 1963',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',75.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','AMST63UTM43S','Amsterdam 1963',NULL,NULL,'EPSG','4499','IGNF','AMST63GEO','IGNF','CONV_AMST63UTM43S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_ANAA92UTM6S','Conversion for MOP92 (Anaa) Tuamotu - UTM fuseau 6 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-147.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','ANAA92UTM6S','MOP92 (Anaa) Tuamotu - UTM fuseau 6 Sud',NULL,NULL,'EPSG','4499','IGNF','ANAA92GEO','IGNF','CONV_ANAA92UTM6S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_APAT86UTM6S','Conversion for MOP86 (Apataki, Rapa, Hao) Tuamotu - UTM fuseau 6 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-147.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','APAT86UTM6S','MOP86 (Apataki, Rapa, Hao) Tuamotu - UTM fuseau 6 Sud',NULL,NULL,'EPSG','4499','IGNF','APAT86GEO','IGNF','CONV_APAT86UTM6S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_APAT86UTM7S','Conversion for MOP86 (Apataki, Rapa, Hao) Tuamotu - UTM fuseau 7 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-141.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','APAT86UTM7S','MOP86 (Apataki, Rapa, Hao) Tuamotu - UTM fuseau 7 Sud',NULL,NULL,'EPSG','4499','IGNF','APAT86GEO','IGNF','CONV_APAT86UTM7S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_CAD97UTM38S','Conversion for Cadastre 1997 - UTM fuseau 38 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',45.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','CAD97UTM38S','Cadastre 1997 - UTM fuseau 38 Sud',NULL,NULL,'EPSG','4499','IGNF','CAD97GEO','IGNF','CONV_CAD97UTM38S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_CROZ63UTM39S','Conversion for Crozet 1963',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',51.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','CROZ63UTM39S','Crozet 1963',NULL,NULL,'EPSG','4499','IGNF','CROZ63GEO','IGNF','CONV_CROZ63UTM39S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_CSG67UTM21','Conversion for Guyane CSG67 UTM fuseau 21',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-57.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','CSG67UTM21','Guyane CSG67 UTM fuseau 21',NULL,NULL,'EPSG','4499','IGNF','CSG67GEO','IGNF','CONV_CSG67UTM21','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_CSG67UTM22','Conversion for Guyane CSG67 UTM fuseau 22',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-51.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','CSG67UTM22','Guyane CSG67 UTM fuseau 22',NULL,NULL,'EPSG','4499','IGNF','CSG67GEO','IGNF','CONV_CSG67UTM22','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_EFATE57UT59S','Conversion for EFATE-IGN 1957 - UTM fuseau 59 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',171.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','EFATE57UT59S','EFATE-IGN 1957 - UTM fuseau 59 Sud',NULL,NULL,'EPSG','4499','IGNF','EFATE57GEO','IGNF','CONV_EFATE57UT59S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_ETRS89LAEA','Conversion for ETRS89 Lambert Azimutal Equal Area',NULL,NULL,'EPSG','1262','EPSG','9820','Lambert Azimuthal Equal Area','EPSG','8801','Latitude of natural origin',52.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',10.000000000,'EPSG','9102','EPSG','8806','False easting',4321000.000,'EPSG','9001','EPSG','8807','False northing',3210000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','ETRS89LAEA','ETRS89 Lambert Azimutal Equal Area',NULL,NULL,'EPSG','4499','IGNF','ETRS89GEO','IGNF','CONV_ETRS89LAEA','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_ETRS89LCC','Conversion for ETRS89 Lambert Conformal Conic',NULL,NULL,'EPSG','1262','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',52.000000000,'EPSG','9102','EPSG','8822','Longitude of false origin',9.999999995,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',35.000000000,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',65.000000000,'EPSG','9102','EPSG','8826','Easting at false origin',4000000.000,'EPSG','9001','EPSG','8827','Northing at false origin',2800000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','ETRS89LCC','ETRS89 Lambert Conformal Conic',NULL,NULL,'EPSG','4499','IGNF','ETRS89GEO','IGNF','CONV_ETRS89LCC','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_FANGA84UTM7S','Conversion for Fangataufa 1984 - UTM fuseau 7 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-141.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','FANGA84UTM7S','Fangataufa 1984 - UTM fuseau 7 Sud',NULL,NULL,'EPSG','4499','IGNF','FANGA84GEO','IGNF','CONV_FANGA84UTM7S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_GEOPORTALANF','Conversion for Geoportail - Antilles francaises',NULL,NULL,'EPSG','1262','EPSG','1028','Equidistant Cylindrical','EPSG','8823','Latitude of 1st standard parallel',15.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8806','False easting',0.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','GEOPORTALANF','Geoportail - Antilles francaises',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_GEOPORTALANF','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_GEOPORTALASP','Conversion for Geoportail - Amsterdam et Saint-Paul',NULL,NULL,'EPSG','1262','EPSG','1028','Equidistant Cylindrical','EPSG','8823','Latitude of 1st standard parallel',-38.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8806','False easting',0.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','GEOPORTALASP','Geoportail - Amsterdam et Saint-Paul',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_GEOPORTALASP','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_GEOPORTALCRZ','Conversion for Geoportail - Crozet',NULL,NULL,'EPSG','1262','EPSG','1028','Equidistant Cylindrical','EPSG','8823','Latitude of 1st standard parallel',-46.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8806','False easting',0.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','GEOPORTALCRZ','Geoportail - Crozet',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_GEOPORTALCRZ','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_GEOPORTALFXX','Conversion for Geoportail - France metropolitaine',NULL,NULL,'EPSG','1262','EPSG','1028','Equidistant Cylindrical','EPSG','8823','Latitude of 1st standard parallel',46.500000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8806','False easting',0.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','GEOPORTALFXX','Geoportail - France metropolitaine',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_GEOPORTALFXX','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_GEOPORTALGUF','Conversion for Geoportail - Guyane',NULL,NULL,'EPSG','1262','EPSG','1028','Equidistant Cylindrical','EPSG','8823','Latitude of 1st standard parallel',4.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8806','False easting',0.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','GEOPORTALGUF','Geoportail - Guyane',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_GEOPORTALGUF','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_GEOPORTALKER','Conversion for Geoportail - Kerguelen',NULL,NULL,'EPSG','1262','EPSG','1028','Equidistant Cylindrical','EPSG','8823','Latitude of 1st standard parallel',-49.500000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8806','False easting',0.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','GEOPORTALKER','Geoportail - Kerguelen',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_GEOPORTALKER','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_GEOPORTALMYT','Conversion for Geoportail - Mayotte',NULL,NULL,'EPSG','1262','EPSG','1028','Equidistant Cylindrical','EPSG','8823','Latitude of 1st standard parallel',-12.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8806','False easting',0.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','GEOPORTALMYT','Geoportail - Mayotte',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_GEOPORTALMYT','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_GEOPORTALNCL','Conversion for Geoportail - Nouvelle-Caledonie',NULL,NULL,'EPSG','1262','EPSG','1028','Equidistant Cylindrical','EPSG','8823','Latitude of 1st standard parallel',-22.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8806','False easting',0.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','GEOPORTALNCL','Geoportail - Nouvelle-Caledonie',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_GEOPORTALNCL','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_GEOPORTALPYF','Conversion for Geoportail - Polynesie francaise',NULL,NULL,'EPSG','1262','EPSG','1028','Equidistant Cylindrical','EPSG','8823','Latitude of 1st standard parallel',-15.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8806','False easting',0.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','GEOPORTALPYF','Geoportail - Polynesie francaise',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_GEOPORTALPYF','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_GEOPORTALREU','Conversion for Geoportail - Reunion et dependances',NULL,NULL,'EPSG','1262','EPSG','1028','Equidistant Cylindrical','EPSG','8823','Latitude of 1st standard parallel',-21.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8806','False easting',0.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','GEOPORTALREU','Geoportail - Reunion et dependances',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_GEOPORTALREU','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_GEOPORTALSPM','Conversion for Geoportail - Saint-Pierre et Miquelon',NULL,NULL,'EPSG','1262','EPSG','1028','Equidistant Cylindrical','EPSG','8823','Latitude of 1st standard parallel',47.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8806','False easting',0.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','GEOPORTALSPM','Geoportail - Saint-Pierre et Miquelon',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_GEOPORTALSPM','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_GEOPORTALWLF','Conversion for Geoportail - Wallis et Futuna',NULL,NULL,'EPSG','1262','EPSG','1028','Equidistant Cylindrical','EPSG','8823','Latitude of 1st standard parallel',-14.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8806','False easting',0.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','GEOPORTALWLF','Geoportail - Wallis et Futuna',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_GEOPORTALWLF','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_GUAD48UTM20','Conversion for Guadeloupe Ste Anne',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-63.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','GUAD48UTM20','Guadeloupe Ste Anne',NULL,NULL,'EPSG','4499','IGNF','GUAD48GEO','IGNF','CONV_GUAD48UTM20','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_GUADFM49U20','Conversion for Guadeloupe Fort Marigot ',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-63.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','GUADFM49U20','Guadeloupe Fort Marigot ',NULL,NULL,'EPSG','4499','IGNF','GUADFM49GEO','IGNF','CONV_GUADFM49U20','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_IGN63UTM7S','Conversion for IGN 1963 - Hiva Oa, Tahuata, Mohotani - UTM fuseau 7 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-141.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','IGN63UTM7S','IGN 1963 - Hiva Oa, Tahuata, Mohotani - UTM fuseau 7 Sud',NULL,NULL,'EPSG','4499','IGNF','IGN63GEO','IGNF','CONV_IGN63UTM7S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_IGN72LAM','Conversion for IGN 1972 - Lambert Nouvelle Caledonie',NULL,NULL,'EPSG','1262','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-21.499999999,'EPSG','9102','EPSG','8822','Longitude of false origin',166.000000000,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-20.666666667,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',-22.333333333,'EPSG','9102','EPSG','8826','Easting at false origin',400000.000,'EPSG','9001','EPSG','8827','Northing at false origin',300000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','IGN72LAM','IGN 1972 - Lambert Nouvelle Caledonie',NULL,NULL,'EPSG','4499','IGNF','IGN72GEO','IGNF','CONV_IGN72LAM','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_IGN72UTM58S','Conversion for IGN 1972 - UTM fuseau 58 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',165.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','IGN72UTM58S','IGN 1972 - UTM fuseau 58 Sud',NULL,NULL,'EPSG','4499','IGNF','IGN72GEO','IGNF','CONV_IGN72UTM58S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_KAUE70UTM6S','Conversion for MHPF70 (Kauehi) Tuamotu - UTM fuseau 6 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-147.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','KAUE70UTM6S','MHPF70 (Kauehi) Tuamotu - UTM fuseau 6 Sud',NULL,NULL,'EPSG','4499','IGNF','KAUE70GEO','IGNF','CONV_KAUE70UTM6S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_KERG62UTM42S','Conversion for Kerguelen 1962',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',69.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','KERG62UTM42S','Kerguelen 1962',NULL,NULL,'EPSG','4499','IGNF','KERG62GEO','IGNF','CONV_KERG62UTM42S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_LAMB1','Conversion for Lambert I',NULL,NULL,'EPSG','1262','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',49.500000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99987734,'EPSG','9201','EPSG','8806','False easting',600000.000,'EPSG','9001','EPSG','8807','False northing',200000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','LAMB1','Lambert I',NULL,NULL,'EPSG','4499','IGNF','NTFP','IGNF','CONV_LAMB1','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_LAMB1C','Conversion for Lambert I Carto',NULL,NULL,'EPSG','1262','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',49.500000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99987734,'EPSG','9201','EPSG','8806','False easting',600000.000,'EPSG','9001','EPSG','8807','False northing',1200000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','LAMB1C','Lambert I Carto',NULL,NULL,'EPSG','4499','IGNF','NTFP','IGNF','CONV_LAMB1C','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_LAMB2','Conversion for Lambert II',NULL,NULL,'EPSG','1262','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',46.800000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99987742,'EPSG','9201','EPSG','8806','False easting',600000.000,'EPSG','9001','EPSG','8807','False northing',200000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','LAMB2','Lambert II',NULL,NULL,'EPSG','4499','IGNF','NTFP','IGNF','CONV_LAMB2','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_LAMB2C','Conversion for Lambert II Carto',NULL,NULL,'EPSG','1262','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',46.800000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99987742,'EPSG','9201','EPSG','8806','False easting',600000.000,'EPSG','9001','EPSG','8807','False northing',2200000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','LAMB2C','Lambert II Carto',NULL,NULL,'EPSG','4499','IGNF','NTFP','IGNF','CONV_LAMB2C','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_LAMB3','Conversion for Lambert III',NULL,NULL,'EPSG','1262','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.100000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99987750,'EPSG','9201','EPSG','8806','False easting',600000.000,'EPSG','9001','EPSG','8807','False northing',200000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','LAMB3','Lambert III',NULL,NULL,'EPSG','4499','IGNF','NTFP','IGNF','CONV_LAMB3','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_LAMB3C','Conversion for Lambert III Carto',NULL,NULL,'EPSG','1262','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',44.100000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99987750,'EPSG','9201','EPSG','8806','False easting',600000.000,'EPSG','9001','EPSG','8807','False northing',3200000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','LAMB3C','Lambert III Carto',NULL,NULL,'EPSG','4499','IGNF','NTFP','IGNF','CONV_LAMB3C','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_LAMB4','Conversion for Lambert IV',NULL,NULL,'EPSG','1262','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',42.165000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99994471,'EPSG','9201','EPSG','8806','False easting',234.358,'EPSG','9001','EPSG','8807','False northing',185861.369,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','LAMB4','Lambert IV',NULL,NULL,'EPSG','4499','IGNF','NTFP','IGNF','CONV_LAMB4','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_LAMB4C','Conversion for Lambert IV Carto',NULL,NULL,'EPSG','1262','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',42.165000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99994471,'EPSG','9201','EPSG','8806','False easting',234.358,'EPSG','9001','EPSG','8807','False northing',4185861.369,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','LAMB4C','Lambert IV Carto',NULL,NULL,'EPSG','4499','IGNF','NTFP','IGNF','CONV_LAMB4C','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_LAMB93','Conversion for Lambert 93',NULL,NULL,'EPSG','1262','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',46.500000000,'EPSG','9102','EPSG','8822','Longitude of false origin',3.000000000,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',44.000000000,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',49.000000000,'EPSG','9102','EPSG','8826','Easting at false origin',700000.000,'EPSG','9001','EPSG','8827','Northing at false origin',6600000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','LAMB93','Lambert 93',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_LAMB93','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_LAMBE','Conversion for Lambert II etendu',NULL,NULL,'EPSG','1262','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',46.800000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99987742,'EPSG','9201','EPSG','8806','False easting',600000.000,'EPSG','9001','EPSG','8807','False northing',2200000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','LAMBE','Lambert II etendu',NULL,NULL,'EPSG','4499','IGNF','NTFP','IGNF','CONV_LAMBE','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_LAMBGC','Conversion for Lambert grand champ',NULL,NULL,'EPSG','1262','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',47.000000000,'EPSG','9102','EPSG','8822','Longitude of false origin',0.000000000,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',45.000000000,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',49.000000000,'EPSG','9102','EPSG','8826','Easting at false origin',600000.000,'EPSG','9001','EPSG','8827','Northing at false origin',600000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','LAMBGC','Lambert grand champ',NULL,NULL,'EPSG','4499','IGNF','NTFP','IGNF','CONV_LAMBGC','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_LUXGAUSSK','Conversion for Luxembourg 1929',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',49.833333333,'EPSG','9102','EPSG','8802','Longitude of natural origin',6.166666667,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.00000000,'EPSG','9201','EPSG','8806','False easting',80000.000,'EPSG','9001','EPSG','8807','False northing',100000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','LUXGAUSSK','Luxembourg 1929',NULL,NULL,'EPSG','4499','IGNF','LUXGEO','IGNF','CONV_LUXGAUSSK','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_MARE53UTM58S','Conversion for Mare - Iles Loyaute - UTM fuseau 58 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',165.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','MARE53UTM58S','Mare - Iles Loyaute - UTM fuseau 58 Sud',NULL,NULL,'EPSG','4499','IGNF','MARE53GEO','IGNF','CONV_MARE53UTM58S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_MART38UTM20','Conversion for Martinique Fort-Desaix',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-63.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','MART38UTM20','Martinique Fort-Desaix',NULL,NULL,'EPSG','4499','IGNF','MART38GEO','IGNF','CONV_MART38UTM20','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_MAYO50UTM38S','Conversion for Mayotte Combani',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',45.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','MAYO50UTM38S','Mayotte Combani',NULL,NULL,'EPSG','4499','IGNF','MAYO50GEO','IGNF','CONV_MAYO50UTM38S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_MHPF67UTM8S','Conversion for MHPF67 (Mangareva, Agakauitai, Aukena, Mekiro) Gambiers (Iles) - UTM 8 S',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-135.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','MHPF67UTM8S','MHPF67 (Mangareva, Agakauitai, Aukena, Mekiro) Gambiers (Iles) - UTM 8 S',NULL,NULL,'EPSG','4499','IGNF','MHPF67GEO','IGNF','CONV_MHPF67UTM8S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_MILLER','Conversion for Geoportail - Monde',NULL,NULL,'EPSG','1262',NULL,NULL,'PROJ mill',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','MILLER','Geoportail - Monde',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_MILLER','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_MOOREA87U6S','Conversion for Moorea 1987 - UTM fuseau 6 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-147.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','MOOREA87U6S','Moorea 1987 - UTM fuseau 6 Sud',NULL,NULL,'EPSG','4499','IGNF','MOOREA87GEO','IGNF','CONV_MOOREA87U6S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_MOP90UTM6S','Conversion for MOP90 (Tetiaroa) Iles de la Societe - UTM fuseau 6 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-147.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','MOP90UTM6S','MOP90 (Tetiaroa) Iles de la Societe - UTM fuseau 6 Sud',NULL,NULL,'EPSG','4499','IGNF','MOP90GEO','IGNF','CONV_MOP90UTM6S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_NUKU72U7S','Conversion for IGN 1972 Nuku Hiva - UTM fuseau 7 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-141.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','NUKU72U7S','IGN 1972 Nuku Hiva - UTM fuseau 7 Sud',NULL,NULL,'EPSG','4499','IGNF','NUKU72GEO','IGNF','CONV_NUKU72U7S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_NUKU94UTM7S','Conversion for IGN 1994 Nuku Hiva - UTM fuseau 7 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-141.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','NUKU94UTM7S','IGN 1994 Nuku Hiva - UTM fuseau 7 Sud',NULL,NULL,'EPSG','4499','IGNF','NUKU94GEO','IGNF','CONV_NUKU94UTM7S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_OUVEA72U58S','Conversion for Ouvea - Iles Loyaute - UTM fuseau 58 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',165.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','OUVEA72U58S','Ouvea - Iles Loyaute - UTM fuseau 58 Sud',NULL,NULL,'EPSG','4499','IGNF','OUVEA72GEO','IGNF','CONV_OUVEA72U58S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RAIA53UTM5S','Conversion for IGN53 (IGN Raiatea-Tahaa) Raiatea-Tahaa-Bora Bora-Huahine - UTM fuseau 5',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-153.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RAIA53UTM5S','IGN53 (IGN Raiatea-Tahaa) Raiatea-Tahaa-Bora Bora-Huahine - UTM fuseau 5',NULL,NULL,'EPSG','4499','IGNF','RAIA53GEO','IGNF','CONV_RAIA53UTM5S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_REUN47GAUSSL','Conversion for Reunion Gauss Laborde',NULL,NULL,'EPSG','1262',NULL,NULL,'Gauss Schreiber Transverse Mercator','EPSG','8801','Latitude of natural origin',-21.116666667,'EPSG','9102','EPSG','8802','Longitude of natural origin',55.533333333,'EPSG','9102','EPSG','8805','Scale factor at natural origin',1.00000000,'EPSG','9201','EPSG','8806','False easting',160000.000,'EPSG','9001','EPSG','8807','False northing',50000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','REUN47GAUSSL','Reunion Gauss Laborde',NULL,NULL,'EPSG','4499','IGNF','REUN47GEO','IGNF','CONV_REUN47GAUSSL','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGF93CC42','Conversion for Projection conique conforme Zone 1',NULL,NULL,'EPSG','1262','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',42.000000000,'EPSG','9102','EPSG','8822','Longitude of false origin',3.000000000,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',41.250000000,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',42.750000000,'EPSG','9102','EPSG','8826','Easting at false origin',1700000.000,'EPSG','9001','EPSG','8827','Northing at false origin',1200000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGF93CC42','Projection conique conforme Zone 1',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_RGF93CC42','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGF93CC43','Conversion for Projection conique conforme Zone 2',NULL,NULL,'EPSG','1262','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',43.000000000,'EPSG','9102','EPSG','8822','Longitude of false origin',3.000000000,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',42.250000000,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',43.750000000,'EPSG','9102','EPSG','8826','Easting at false origin',1700000.000,'EPSG','9001','EPSG','8827','Northing at false origin',2200000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGF93CC43','Projection conique conforme Zone 2',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_RGF93CC43','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGF93CC44','Conversion for Projection conique conforme Zone 3',NULL,NULL,'EPSG','1262','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',44.000000000,'EPSG','9102','EPSG','8822','Longitude of false origin',3.000000000,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',43.250000000,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',44.750000000,'EPSG','9102','EPSG','8826','Easting at false origin',1700000.000,'EPSG','9001','EPSG','8827','Northing at false origin',3200000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGF93CC44','Projection conique conforme Zone 3',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_RGF93CC44','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGF93CC45','Conversion for Projection conique conforme Zone 4',NULL,NULL,'EPSG','1262','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',45.000000000,'EPSG','9102','EPSG','8822','Longitude of false origin',3.000000000,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',44.250000000,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',45.750000000,'EPSG','9102','EPSG','8826','Easting at false origin',1700000.000,'EPSG','9001','EPSG','8827','Northing at false origin',4200000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGF93CC45','Projection conique conforme Zone 4',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_RGF93CC45','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGF93CC46','Conversion for Projection conique conforme Zone 5',NULL,NULL,'EPSG','1262','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',46.000000000,'EPSG','9102','EPSG','8822','Longitude of false origin',3.000000000,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',45.250000000,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',46.750000000,'EPSG','9102','EPSG','8826','Easting at false origin',1700000.000,'EPSG','9001','EPSG','8827','Northing at false origin',5200000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGF93CC46','Projection conique conforme Zone 5',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_RGF93CC46','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGF93CC47','Conversion for Projection conique conforme Zone 6',NULL,NULL,'EPSG','1262','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',47.000000000,'EPSG','9102','EPSG','8822','Longitude of false origin',3.000000000,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',46.250000000,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',47.750000000,'EPSG','9102','EPSG','8826','Easting at false origin',1700000.000,'EPSG','9001','EPSG','8827','Northing at false origin',6200000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGF93CC47','Projection conique conforme Zone 6',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_RGF93CC47','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGF93CC48','Conversion for Projection conique conforme Zone 7',NULL,NULL,'EPSG','1262','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',48.000000000,'EPSG','9102','EPSG','8822','Longitude of false origin',3.000000000,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',47.250000000,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',48.750000000,'EPSG','9102','EPSG','8826','Easting at false origin',1700000.000,'EPSG','9001','EPSG','8827','Northing at false origin',7200000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGF93CC48','Projection conique conforme Zone 7',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_RGF93CC48','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGF93CC49','Conversion for Projection conique conforme Zone 8',NULL,NULL,'EPSG','1262','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',49.000000000,'EPSG','9102','EPSG','8822','Longitude of false origin',3.000000000,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',48.250000000,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',49.750000000,'EPSG','9102','EPSG','8826','Easting at false origin',1700000.000,'EPSG','9001','EPSG','8827','Northing at false origin',8200000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGF93CC49','Projection conique conforme Zone 8',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_RGF93CC49','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGF93CC50','Conversion for Projection conique conforme Zone 9',NULL,NULL,'EPSG','1262','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',50.000000000,'EPSG','9102','EPSG','8822','Longitude of false origin',3.000000000,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',49.250000000,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',50.750000000,'EPSG','9102','EPSG','8826','Easting at false origin',1700000.000,'EPSG','9001','EPSG','8827','Northing at false origin',9200000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGF93CC50','Projection conique conforme Zone 9',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_RGF93CC50','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGM04UTM38S','Conversion for UTM fuseau 38 Sud (Reseau Geodesique de Mayotte 2004)',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',45.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGM04UTM38S','UTM fuseau 38 Sud (Reseau Geodesique de Mayotte 2004)',NULL,NULL,'EPSG','4499','IGNF','RGM04GEO','IGNF','CONV_RGM04UTM38S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGNCLAM','Conversion for Reseau Geodesique de Nouvelle-Caledonie - Lambert Nouvelle Caledonie',NULL,NULL,'EPSG','1262','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',-21.499999999,'EPSG','9102','EPSG','8822','Longitude of false origin',166.000000000,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',-20.666666667,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',-22.333333333,'EPSG','9102','EPSG','8826','Easting at false origin',400000.000,'EPSG','9001','EPSG','8827','Northing at false origin',300000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGNCLAM','Reseau Geodesique de Nouvelle-Caledonie - Lambert Nouvelle Caledonie',NULL,NULL,'EPSG','4499','IGNF','RGNCGEO','IGNF','CONV_RGNCLAM','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGNCUTM57S','Conversion for Reseau Geodesique de Nouvelle-Caledonie - UTM fuseau 57 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',159.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGNCUTM57S','Reseau Geodesique de Nouvelle-Caledonie - UTM fuseau 57 Sud',NULL,NULL,'EPSG','4499','IGNF','RGNCGEO','IGNF','CONV_RGNCUTM57S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGNCUTM58S','Conversion for Reseau Geodesique de Nouvelle-Caledonie - UTM fuseau 58 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',165.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGNCUTM58S','Reseau Geodesique de Nouvelle-Caledonie - UTM fuseau 58 Sud',NULL,NULL,'EPSG','4499','IGNF','RGNCGEO','IGNF','CONV_RGNCUTM58S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGNCUTM59S','Conversion for Reseau Geodesique de Nouvelle-Caledonie - UTM fuseau 59 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',171.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGNCUTM59S','Reseau Geodesique de Nouvelle-Caledonie - UTM fuseau 59 Sud',NULL,NULL,'EPSG','4499','IGNF','RGNCGEO','IGNF','CONV_RGNCUTM59S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGPFUTM5S','Conversion for RGPF - UTM fuseau 5 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-153.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGPFUTM5S','RGPF - UTM fuseau 5 Sud',NULL,NULL,'EPSG','4499','IGNF','RGPFGEO','IGNF','CONV_RGPFUTM5S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGPFUTM6S','Conversion for RGPF - UTM fuseau 6 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-147.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGPFUTM6S','RGPF - UTM fuseau 6 Sud',NULL,NULL,'EPSG','4499','IGNF','RGPFGEO','IGNF','CONV_RGPFUTM6S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGPFUTM7S','Conversion for RGPF - UTM fuseau 7 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-141.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGPFUTM7S','RGPF - UTM fuseau 7 Sud',NULL,NULL,'EPSG','4499','IGNF','RGPFGEO','IGNF','CONV_RGPFUTM7S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGR92UTM40S','Conversion for RGR92 UTM fuseau 40 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',57.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGR92UTM40S','RGR92 UTM fuseau 40 Sud',NULL,NULL,'EPSG','4499','IGNF','RGR92GEO','IGNF','CONV_RGR92UTM40S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_RGSPM06U21','Conversion for Saint-Pierre-et-Miquelon (2006) UTM Fuseau 21 Nord',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-57.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','RGSPM06U21','Saint-Pierre-et-Miquelon (2006) UTM Fuseau 21 Nord',NULL,NULL,'EPSG','4499','IGNF','RGSPM06GEO','IGNF','CONV_RGSPM06U21','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_SAT84UTM5S','Conversion for SAT84 (Rurutu) Iles Australes - UTM fuseau 5 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-153.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','SAT84UTM5S','SAT84 (Rurutu) Iles Australes - UTM fuseau 5 Sud',NULL,NULL,'EPSG','4499','IGNF','SAT84GEO','IGNF','CONV_SAT84UTM5S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_STPL69UTM43S','Conversion for Saint-Paul 1969',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',75.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','STPL69UTM43S','Saint-Paul 1969',NULL,NULL,'EPSG','4499','IGNF','STPL69GEO','IGNF','CONV_STPL69UTM43S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_STPM50UTM21','Conversion for St Pierre et Miquelon 1950',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-57.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','STPM50UTM21','St Pierre et Miquelon 1950',NULL,NULL,'EPSG','4499','IGNF','STPM50GEO','IGNF','CONV_STPM50UTM21','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_TAHAAUTM05S','Conversion for Tahaa 1951',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-153.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','TAHAAUTM05S','Tahaa 1951',NULL,NULL,'EPSG','4499','IGNF','TAHAAGEO','IGNF','CONV_TAHAAUTM05S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_TAHI51UTM06S','Conversion for Tahiti-Terme Nord UTM fuseau 6 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-147.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','TAHI51UTM06S','Tahiti-Terme Nord UTM fuseau 6 Sud',NULL,NULL,'EPSG','4499','IGNF','TAHI51GEO','IGNF','CONV_TAHI51UTM06S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_TAHI79UTM6S','Conversion for Tahiti 1979',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-147.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','TAHI79UTM6S','Tahiti 1979',NULL,NULL,'EPSG','4499','IGNF','TAHI79GEO','IGNF','CONV_TAHI79UTM6S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_TANNAUTM59S','Conversion for Tanna Bloc Sud - UTM fuseau 59 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',171.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','TANNAUTM59S','Tanna Bloc Sud - UTM fuseau 59 Sud',NULL,NULL,'EPSG','4499','IGNF','TANNAGEO','IGNF','CONV_TANNAUTM59S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_TERA50STEREO','Conversion for Terre Adelie 1950',NULL,NULL,'EPSG','1262','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',-67.000000000,'EPSG','9102','EPSG','8833','Longitude of origin',140.000000000,'EPSG','9102','EPSG','8806','False easting',300000.000,'EPSG','9001','EPSG','8807','False northing',-2299363.482,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','TERA50STEREO','Terre Adelie 1950',NULL,NULL,'EPSG','1025','IGNF','TERA50G','IGNF','CONV_TERA50STEREO','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_TUBU69UTM6S','Conversion for Tubuai - Iles Australes - UTM fuseau 6 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-147.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','TUBU69UTM6S','Tubuai - Iles Australes - UTM fuseau 6 Sud',NULL,NULL,'EPSG','4499','IGNF','TUBU69GEO','IGNF','CONV_TUBU69UTM6S','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM01SW72','Conversion for World Geodetic System 1972 UTM fuseau 01 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-177.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM01SW72','World Geodetic System 1972 UTM fuseau 01 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS72G','IGNF','CONV_UTM01SW72','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM01SW84','Conversion for World Geodetic System 1984 UTM fuseau 01 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-177.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM01SW84','World Geodetic System 1984 UTM fuseau 01 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM01SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM01W84','Conversion for World Geodetic System 1984 UTM fuseau 01',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-177.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM01W84','World Geodetic System 1984 UTM fuseau 01',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM01W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM02SW84','Conversion for World Geodetic System 1984 UTM fuseau 02 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-171.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM02SW84','World Geodetic System 1984 UTM fuseau 02 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM02SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM02W84','Conversion for World Geodetic System 1984 UTM fuseau 02',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-171.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM02W84','World Geodetic System 1984 UTM fuseau 02',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM02W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM03SW84','Conversion for World Geodetic System 1984 UTM fuseau 03 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-165.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM03SW84','World Geodetic System 1984 UTM fuseau 03 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM03SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM03W84','Conversion for World Geodetic System 1984 UTM fuseau 03',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-165.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM03W84','World Geodetic System 1984 UTM fuseau 03',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM03W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM04SW84','Conversion for World Geodetic System 1984 UTM fuseau 04 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-159.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM04SW84','World Geodetic System 1984 UTM fuseau 04 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM04SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM04W84','Conversion for World Geodetic System 1984 UTM fuseau 04',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-159.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM04W84','World Geodetic System 1984 UTM fuseau 04',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM04W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM05SW84','Conversion for World Geodetic System 1984 UTM fuseau 05 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-153.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM05SW84','World Geodetic System 1984 UTM fuseau 05 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM05SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM05W84','Conversion for World Geodetic System 1984 UTM fuseau 05',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-153.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM05W84','World Geodetic System 1984 UTM fuseau 05',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM05W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM06SW84','Conversion for World Geodetic System 1984 UTM fuseau 06 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-147.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM06SW84','World Geodetic System 1984 UTM fuseau 06 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM06SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM06W84','Conversion for World Geodetic System 1984 UTM fuseau 06',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-147.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM06W84','World Geodetic System 1984 UTM fuseau 06',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM06W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM07SW84','Conversion for World Geodetic System 1984 UTM fuseau 07 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-141.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM07SW84','World Geodetic System 1984 UTM fuseau 07 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM07SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM07W84','Conversion for World Geodetic System 1984 UTM fuseau 07',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-141.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM07W84','World Geodetic System 1984 UTM fuseau 07',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM07W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM08SW84','Conversion for World Geodetic System 1984 UTM fuseau 08 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-135.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM08SW84','World Geodetic System 1984 UTM fuseau 08 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM08SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM08W84','Conversion for World Geodetic System 1984 UTM fuseau 08',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-135.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM08W84','World Geodetic System 1984 UTM fuseau 08',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM08W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM09SW84','Conversion for World Geodetic System 1984 UTM fuseau 09 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-129.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM09SW84','World Geodetic System 1984 UTM fuseau 09 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM09SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM09W84','Conversion for World Geodetic System 1984 UTM fuseau 09',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-129.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM09W84','World Geodetic System 1984 UTM fuseau 09',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM09W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM10SW84','Conversion for World Geodetic System 1984 UTM fuseau 10 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-123.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM10SW84','World Geodetic System 1984 UTM fuseau 10 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM10SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM10W84','Conversion for World Geodetic System 1984 UTM fuseau 10',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-123.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM10W84','World Geodetic System 1984 UTM fuseau 10',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM10W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM11SW84','Conversion for World Geodetic System 1984 UTM fuseau 11 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-117.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM11SW84','World Geodetic System 1984 UTM fuseau 11 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM11SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM11W84','Conversion for World Geodetic System 1984 UTM fuseau 11',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-117.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM11W84','World Geodetic System 1984 UTM fuseau 11',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM11W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM12SW84','Conversion for World Geodetic System 1984 UTM fuseau 12 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-111.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM12SW84','World Geodetic System 1984 UTM fuseau 12 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM12SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM12W84','Conversion for World Geodetic System 1984 UTM fuseau 12',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-111.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM12W84','World Geodetic System 1984 UTM fuseau 12',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM12W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM13SW84','Conversion for World Geodetic System 1984 UTM fuseau 13 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-105.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM13SW84','World Geodetic System 1984 UTM fuseau 13 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM13SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM13W84','Conversion for World Geodetic System 1984 UTM fuseau 13',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-105.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM13W84','World Geodetic System 1984 UTM fuseau 13',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM13W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM14SW84','Conversion for World Geodetic System 1984 UTM fuseau 14 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-99.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM14SW84','World Geodetic System 1984 UTM fuseau 14 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM14SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM14W84','Conversion for World Geodetic System 1984 UTM fuseau 14',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-99.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM14W84','World Geodetic System 1984 UTM fuseau 14',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM14W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM15SW84','Conversion for World Geodetic System 1984 UTM fuseau 15 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-93.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM15SW84','World Geodetic System 1984 UTM fuseau 15 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM15SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM15W84','Conversion for World Geodetic System 1984 UTM fuseau 15',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-93.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM15W84','World Geodetic System 1984 UTM fuseau 15',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM15W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM16SW84','Conversion for World Geodetic System 1984 UTM fuseau 16 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-87.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM16SW84','World Geodetic System 1984 UTM fuseau 16 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM16SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM16W84','Conversion for World Geodetic System 1984 UTM fuseau 16',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-87.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM16W84','World Geodetic System 1984 UTM fuseau 16',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM16W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM17SW84','Conversion for World Geodetic System 1984 UTM fuseau 17 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-81.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM17SW84','World Geodetic System 1984 UTM fuseau 17 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM17SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM17W84','Conversion for World Geodetic System 1984 UTM fuseau 17',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-81.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM17W84','World Geodetic System 1984 UTM fuseau 17',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM17W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM18SW84','Conversion for World Geodetic System 1984 UTM fuseau 18 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-75.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM18SW84','World Geodetic System 1984 UTM fuseau 18 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM18SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM18W84','Conversion for World Geodetic System 1984 UTM fuseau 18',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-75.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM18W84','World Geodetic System 1984 UTM fuseau 18',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM18W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM19SW84','Conversion for World Geodetic System 1984 UTM fuseau 19 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-69.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM19SW84','World Geodetic System 1984 UTM fuseau 19 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM19SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM19W84','Conversion for World Geodetic System 1984 UTM fuseau 19',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-69.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM19W84','World Geodetic System 1984 UTM fuseau 19',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM19W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM20SW84','Conversion for World Geodetic System 1984 UTM fuseau 20 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-63.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM20SW84','World Geodetic System 1984 UTM fuseau 20 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM20SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM20W84','Conversion for World Geodetic System 1984 UTM fuseau 20',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-63.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM20W84','World Geodetic System 1984 UTM fuseau 20',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM20W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM20W84GUAD','Conversion for World Geodetic System 1984 UTM fuseau 20 Nord-Guadeloupe',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-63.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM20W84GUAD','World Geodetic System 1984 UTM fuseau 20 Nord-Guadeloupe',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM20W84GUAD','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM20W84MART','Conversion for World Geodetic System 1984 UTM fuseau 20 Nord-Martinique',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-63.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM20W84MART','World Geodetic System 1984 UTM fuseau 20 Nord-Martinique',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM20W84MART','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM21SW84','Conversion for World Geodetic System 1984 UTM fuseau 21 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-57.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM21SW84','World Geodetic System 1984 UTM fuseau 21 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM21SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM21W84','Conversion for World Geodetic System 1984 UTM fuseau 21',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-57.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM21W84','World Geodetic System 1984 UTM fuseau 21',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM21W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM22RGFG95','Conversion for RGFG95 UTM fuseau 22 Nord-Guyane',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-51.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM22RGFG95','RGFG95 UTM fuseau 22 Nord-Guyane',NULL,NULL,'EPSG','4499','IGNF','RGFG95GEO','IGNF','CONV_UTM22RGFG95','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM22SW84','Conversion for World Geodetic System 1984 UTM fuseau 22 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-51.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM22SW84','World Geodetic System 1984 UTM fuseau 22 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM22SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM22W84','Conversion for World Geodetic System 1984 UTM fuseau 22',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-51.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM22W84','World Geodetic System 1984 UTM fuseau 22',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM22W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM23SW84','Conversion for World Geodetic System 1984 UTM fuseau 23 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-45.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM23SW84','World Geodetic System 1984 UTM fuseau 23 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM23SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM23W84','Conversion for World Geodetic System 1984 UTM fuseau 23',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-45.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM23W84','World Geodetic System 1984 UTM fuseau 23',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM23W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM24SW84','Conversion for World Geodetic System 1984 UTM fuseau 24 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-39.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM24SW84','World Geodetic System 1984 UTM fuseau 24 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM24SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM24W84','Conversion for World Geodetic System 1984 UTM fuseau 24',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-39.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM24W84','World Geodetic System 1984 UTM fuseau 24',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM24W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM25SW84','Conversion for World Geodetic System 1984 UTM fuseau 25 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-33.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM25SW84','World Geodetic System 1984 UTM fuseau 25 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM25SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM25W84','Conversion for World Geodetic System 1984 UTM fuseau 25',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-33.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM25W84','World Geodetic System 1984 UTM fuseau 25',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM25W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM26ETRS89','Conversion for Europe - de 30d a 24d Ouest',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-27.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM26ETRS89','Europe - de 30d a 24d Ouest',NULL,NULL,'EPSG','4499','IGNF','ETRS89GEO','IGNF','CONV_UTM26ETRS89','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM26SW84','Conversion for World Geodetic System 1984 UTM fuseau 26 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-27.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM26SW84','World Geodetic System 1984 UTM fuseau 26 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM26SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM26W84','Conversion for World Geodetic System 1984 UTM fuseau 26',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-27.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM26W84','World Geodetic System 1984 UTM fuseau 26',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM26W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM27ETRS89','Conversion for Europe - de 24d a 18d Ouest',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-21.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM27ETRS89','Europe - de 24d a 18d Ouest',NULL,NULL,'EPSG','4499','IGNF','ETRS89GEO','IGNF','CONV_UTM27ETRS89','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM27SW84','Conversion for World Geodetic System 1984 UTM fuseau 27 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-21.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM27SW84','World Geodetic System 1984 UTM fuseau 27 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM27SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM27W84','Conversion for World Geodetic System 1984 UTM fuseau 27',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-21.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM27W84','World Geodetic System 1984 UTM fuseau 27',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM27W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM28ETRS89','Conversion for Europe - de 18d a 12d Ouest',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-15.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM28ETRS89','Europe - de 18d a 12d Ouest',NULL,NULL,'EPSG','4499','IGNF','ETRS89GEO','IGNF','CONV_UTM28ETRS89','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM28SW84','Conversion for World Geodetic System 1984 UTM fuseau 28 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-15.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM28SW84','World Geodetic System 1984 UTM fuseau 28 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM28SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM28W84','Conversion for World Geodetic System 1984 UTM fuseau 28',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-15.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM28W84','World Geodetic System 1984 UTM fuseau 28',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM28W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM29ETRS89','Conversion for Europe - de 12d a 6d Ouest',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-9.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM29ETRS89','Europe - de 12d a 6d Ouest',NULL,NULL,'EPSG','4499','IGNF','ETRS89GEO','IGNF','CONV_UTM29ETRS89','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM29SW84','Conversion for World Geodetic System 1984 UTM fuseau 29 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-9.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM29SW84','World Geodetic System 1984 UTM fuseau 29 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM29SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM29W84','Conversion for World Geodetic System 1984 UTM fuseau 29',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-9.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM29W84','World Geodetic System 1984 UTM fuseau 29',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM29W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM30','Conversion for European Datum 1950 UTM fuseau 30',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-3.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM30','European Datum 1950 UTM fuseau 30',NULL,NULL,'EPSG','4499','IGNF','ED50G','IGNF','CONV_UTM30','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM30ETRS89','Conversion for Europe - de -6d a 0d Ouest',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-3.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM30ETRS89','Europe - de -6d a 0d Ouest',NULL,NULL,'EPSG','4499','IGNF','ETRS89GEO','IGNF','CONV_UTM30ETRS89','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM30RGF93','Conversion for RGF93 UTM fuseau 30',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-3.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM30RGF93','RGF93 UTM fuseau 30',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_UTM30RGF93','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM30SW84','Conversion for World Geodetic System 1984 UTM fuseau 30 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-3.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM30SW84','World Geodetic System 1984 UTM fuseau 30 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM30SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM30W72','Conversion for World Geodetic System 1972 UTM fuseau 30',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-3.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM30W72','World Geodetic System 1972 UTM fuseau 30',NULL,NULL,'EPSG','4499','IGNF','WGS72G','IGNF','CONV_UTM30W72','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM30W84','Conversion for World Geodetic System 1984 UTM fuseau 30',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-3.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM30W84','World Geodetic System 1984 UTM fuseau 30',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM30W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM31','Conversion for European Datum 1950 UTM fuseau 31',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',3.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM31','European Datum 1950 UTM fuseau 31',NULL,NULL,'EPSG','4499','IGNF','ED50G','IGNF','CONV_UTM31','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM31ETRS89','Conversion for Europe - de 0d a 6d Est',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',3.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM31ETRS89','Europe - de 0d a 6d Est',NULL,NULL,'EPSG','4499','IGNF','ETRS89GEO','IGNF','CONV_UTM31ETRS89','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM31RGF93','Conversion for RGF93 UTM fuseau 31',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',3.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM31RGF93','RGF93 UTM fuseau 31',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_UTM31RGF93','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM31SW84','Conversion for World Geodetic System 1984 UTM fuseau 31 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',3.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM31SW84','World Geodetic System 1984 UTM fuseau 31 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM31SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM31W72','Conversion for World Geodetic System 1972 UTM fuseau 31',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',3.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM31W72','World Geodetic System 1972 UTM fuseau 31',NULL,NULL,'EPSG','4499','IGNF','WGS72G','IGNF','CONV_UTM31W72','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM31W84','Conversion for World Geodetic System 1984 UTM fuseau 31',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',3.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM31W84','World Geodetic System 1984 UTM fuseau 31',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM31W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM32','Conversion for European Datum 1950 UTM fuseau 32',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',9.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM32','European Datum 1950 UTM fuseau 32',NULL,NULL,'EPSG','4499','IGNF','ED50G','IGNF','CONV_UTM32','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM32ETRS89','Conversion for Europe - de 6d a 12d Est',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',9.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM32ETRS89','Europe - de 6d a 12d Est',NULL,NULL,'EPSG','4499','IGNF','ETRS89GEO','IGNF','CONV_UTM32ETRS89','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM32RGF93','Conversion for RGF93 UTM fuseau 32',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',9.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM32RGF93','RGF93 UTM fuseau 32',NULL,NULL,'EPSG','4499','IGNF','RGF93G','IGNF','CONV_UTM32RGF93','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM32SW84','Conversion for World Geodetic System 1984 UTM fuseau 32 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',9.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM32SW84','World Geodetic System 1984 UTM fuseau 32 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM32SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM32W72','Conversion for World Geodetic System 1972 UTM fuseau 32',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',9.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM32W72','World Geodetic System 1972 UTM fuseau 32',NULL,NULL,'EPSG','4499','IGNF','WGS72G','IGNF','CONV_UTM32W72','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM32W84','Conversion for World Geodetic System 1984 UTM fuseau 32',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',9.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM32W84','World Geodetic System 1984 UTM fuseau 32',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM32W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM33ETRS89','Conversion for Europe - de 12d a 18d Est',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM33ETRS89','Europe - de 12d a 18d Est',NULL,NULL,'EPSG','4499','IGNF','ETRS89GEO','IGNF','CONV_UTM33ETRS89','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM33SW84','Conversion for World Geodetic System 1984 UTM fuseau 33 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM33SW84','World Geodetic System 1984 UTM fuseau 33 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM33SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM33W84','Conversion for World Geodetic System 1984 UTM fuseau 33',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',15.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM33W84','World Geodetic System 1984 UTM fuseau 33',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM33W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM34ETRS89','Conversion for Europe - de 18d a 24d Est',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM34ETRS89','Europe - de 18d a 24d Est',NULL,NULL,'EPSG','4499','IGNF','ETRS89GEO','IGNF','CONV_UTM34ETRS89','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM34SW84','Conversion for World Geodetic System 1984 UTM fuseau 34 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM34SW84','World Geodetic System 1984 UTM fuseau 34 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM34SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM34W84','Conversion for World Geodetic System 1984 UTM fuseau 34',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',21.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM34W84','World Geodetic System 1984 UTM fuseau 34',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM34W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM35ETRS89','Conversion for Europe - de 24d a 30d Est',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',27.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM35ETRS89','Europe - de 24d a 30d Est',NULL,NULL,'EPSG','4499','IGNF','ETRS89GEO','IGNF','CONV_UTM35ETRS89','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM35SW84','Conversion for World Geodetic System 1984 UTM fuseau 35 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',27.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM35SW84','World Geodetic System 1984 UTM fuseau 35 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM35SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM35W84','Conversion for World Geodetic System 1984 UTM fuseau 35',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',27.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM35W84','World Geodetic System 1984 UTM fuseau 35',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM35W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM36ETRS89','Conversion for Europe - de 30d a 36d Est',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',33.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM36ETRS89','Europe - de 30d a 36d Est',NULL,NULL,'EPSG','4499','IGNF','ETRS89GEO','IGNF','CONV_UTM36ETRS89','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM36SW84','Conversion for World Geodetic System 1984 UTM fuseau 36 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',33.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM36SW84','World Geodetic System 1984 UTM fuseau 36 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM36SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM36W84','Conversion for World Geodetic System 1984 UTM fuseau 36',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',33.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM36W84','World Geodetic System 1984 UTM fuseau 36',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM36W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM37ETRS89','Conversion for Europe - de 36d a 42d Est',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',39.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM37ETRS89','Europe - de 36d a 42d Est',NULL,NULL,'EPSG','4499','IGNF','ETRS89GEO','IGNF','CONV_UTM37ETRS89','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM37SW84','Conversion for World Geodetic System 1984 UTM fuseau 37 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',39.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM37SW84','World Geodetic System 1984 UTM fuseau 37 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM37SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM37W84','Conversion for World Geodetic System 1984 UTM fuseau 37',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',39.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM37W84','World Geodetic System 1984 UTM fuseau 37',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM37W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM38ETRS89','Conversion for Europe - de 42d a 48d Est',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',45.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM38ETRS89','Europe - de 42d a 48d Est',NULL,NULL,'EPSG','4499','IGNF','ETRS89GEO','IGNF','CONV_UTM38ETRS89','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM38SW84','Conversion for World Geodetic System 1984 UTM fuseau 38 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',45.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM38SW84','World Geodetic System 1984 UTM fuseau 38 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM38SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM38W84','Conversion for World Geodetic System 1984 UTM fuseau 38',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',45.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM38W84','World Geodetic System 1984 UTM fuseau 38',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM38W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM39SW84','Conversion for World Geodetic System 1984 UTM fuseau 39 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',51.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM39SW84','World Geodetic System 1984 UTM fuseau 39 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM39SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM39W84','Conversion for World Geodetic System 1984 UTM fuseau 39',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',51.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM39W84','World Geodetic System 1984 UTM fuseau 39',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM39W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM40SW84','Conversion for World Geodetic System 1984 UTM fuseau 40 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',57.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM40SW84','World Geodetic System 1984 UTM fuseau 40 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM40SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM40W84','Conversion for World Geodetic System 1984 UTM fuseau 40',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',57.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM40W84','World Geodetic System 1984 UTM fuseau 40',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM40W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM41SW84','Conversion for World Geodetic System 1984 UTM fuseau 41 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',63.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM41SW84','World Geodetic System 1984 UTM fuseau 41 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM41SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM41W84','Conversion for World Geodetic System 1984 UTM fuseau 41',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',63.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM41W84','World Geodetic System 1984 UTM fuseau 41',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM41W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM42SW84','Conversion for World Geodetic System 1984 UTM fuseau 42 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',69.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM42SW84','World Geodetic System 1984 UTM fuseau 42 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM42SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM42W84','Conversion for World Geodetic System 1984 UTM fuseau 42',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',69.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM42W84','World Geodetic System 1984 UTM fuseau 42',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM42W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM43SW84','Conversion for World Geodetic System 1984 UTM fuseau 43 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',75.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM43SW84','World Geodetic System 1984 UTM fuseau 43 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM43SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM43W84','Conversion for World Geodetic System 1984 UTM fuseau 43',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',75.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM43W84','World Geodetic System 1984 UTM fuseau 43',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM43W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM44SW84','Conversion for World Geodetic System 1984 UTM fuseau 44 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',81.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM44SW84','World Geodetic System 1984 UTM fuseau 44 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM44SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM44W84','Conversion for World Geodetic System 1984 UTM fuseau 44',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',81.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM44W84','World Geodetic System 1984 UTM fuseau 44',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM44W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM45SW84','Conversion for World Geodetic System 1984 UTM fuseau 45 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',87.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM45SW84','World Geodetic System 1984 UTM fuseau 45 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM45SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM45W84','Conversion for World Geodetic System 1984 UTM fuseau 45',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',87.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM45W84','World Geodetic System 1984 UTM fuseau 45',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM45W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM46SW84','Conversion for World Geodetic System 1984 UTM fuseau 46 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',93.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM46SW84','World Geodetic System 1984 UTM fuseau 46 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM46SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM46W84','Conversion for World Geodetic System 1984 UTM fuseau 46',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',93.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM46W84','World Geodetic System 1984 UTM fuseau 46',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM46W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM47SW84','Conversion for World Geodetic System 1984 UTM fuseau 47 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',99.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM47SW84','World Geodetic System 1984 UTM fuseau 47 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM47SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM47W84','Conversion for World Geodetic System 1984 UTM fuseau 47',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',99.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM47W84','World Geodetic System 1984 UTM fuseau 47',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM47W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM48SW84','Conversion for World Geodetic System 1984 UTM fuseau 48 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',105.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM48SW84','World Geodetic System 1984 UTM fuseau 48 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM48SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM48W84','Conversion for World Geodetic System 1984 UTM fuseau 48',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',105.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM48W84','World Geodetic System 1984 UTM fuseau 48',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM48W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM49SW84','Conversion for World Geodetic System 1984 UTM fuseau 49 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',111.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM49SW84','World Geodetic System 1984 UTM fuseau 49 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM49SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM49W84','Conversion for World Geodetic System 1984 UTM fuseau 49',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',111.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM49W84','World Geodetic System 1984 UTM fuseau 49',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM49W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM50SW84','Conversion for World Geodetic System 1984 UTM fuseau 50 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',117.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM50SW84','World Geodetic System 1984 UTM fuseau 50 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM50SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM50W84','Conversion for World Geodetic System 1984 UTM fuseau 50',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',117.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM50W84','World Geodetic System 1984 UTM fuseau 50',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM50W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM51SW84','Conversion for World Geodetic System 1984 UTM fuseau 51 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',123.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM51SW84','World Geodetic System 1984 UTM fuseau 51 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM51SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM51W84','Conversion for World Geodetic System 1984 UTM fuseau 51',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',123.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM51W84','World Geodetic System 1984 UTM fuseau 51',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM51W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM52SW84','Conversion for World Geodetic System 1984 UTM fuseau 52 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',129.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM52SW84','World Geodetic System 1984 UTM fuseau 52 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM52SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM52W84','Conversion for World Geodetic System 1984 UTM fuseau 52',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',129.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM52W84','World Geodetic System 1984 UTM fuseau 52',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM52W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM53SW84','Conversion for World Geodetic System 1984 UTM fuseau 53 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',135.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM53SW84','World Geodetic System 1984 UTM fuseau 53 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM53SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM53W84','Conversion for World Geodetic System 1984 UTM fuseau 53',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',135.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM53W84','World Geodetic System 1984 UTM fuseau 53',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM53W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM54SW84','Conversion for World Geodetic System 1984 UTM fuseau 54 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',141.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM54SW84','World Geodetic System 1984 UTM fuseau 54 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM54SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM54W84','Conversion for World Geodetic System 1984 UTM fuseau 54',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',141.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM54W84','World Geodetic System 1984 UTM fuseau 54',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM54W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM55SW84','Conversion for World Geodetic System 1984 UTM fuseau 55 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',147.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM55SW84','World Geodetic System 1984 UTM fuseau 55 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM55SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM55W84','Conversion for World Geodetic System 1984 UTM fuseau 55',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',147.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM55W84','World Geodetic System 1984 UTM fuseau 55',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM55W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM56SW84','Conversion for World Geodetic System 1984 UTM fuseau 56 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',153.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM56SW84','World Geodetic System 1984 UTM fuseau 56 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM56SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM56W84','Conversion for World Geodetic System 1984 UTM fuseau 56',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',153.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM56W84','World Geodetic System 1984 UTM fuseau 56',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM56W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM57SW84','Conversion for World Geodetic System 1984 UTM fuseau 57 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',159.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM57SW84','World Geodetic System 1984 UTM fuseau 57 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM57SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM57W84','Conversion for World Geodetic System 1984 UTM fuseau 57',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',159.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM57W84','World Geodetic System 1984 UTM fuseau 57',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM57W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM58SW84','Conversion for World Geodetic System 1984 UTM fuseau 58 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',165.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM58SW84','World Geodetic System 1984 UTM fuseau 58 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM58SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM58W84','Conversion for World Geodetic System 1984 UTM fuseau 58',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',165.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM58W84','World Geodetic System 1984 UTM fuseau 58',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM58W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM59SW84','Conversion for World Geodetic System 1984 UTM fuseau 59 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',171.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM59SW84','World Geodetic System 1984 UTM fuseau 59 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM59SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM59W84','Conversion for World Geodetic System 1984 UTM fuseau 59',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',171.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM59W84','World Geodetic System 1984 UTM fuseau 59',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM59W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM60SW84','Conversion for World Geodetic System 1984 UTM fuseau 60 Sud',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',177.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM60SW84','World Geodetic System 1984 UTM fuseau 60 Sud',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM60SW84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_UTM60W84','Conversion for World Geodetic System 1984 UTM fuseau 60',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',177.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',0.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','UTM60W84','World Geodetic System 1984 UTM fuseau 60',NULL,NULL,'EPSG','4499','IGNF','WGS84G','IGNF','CONV_UTM60W84','EPSG','1262',NULL,0); + +INSERT INTO "conversion" VALUES('IGNF','CONV_WALL78UTM1S','Conversion for Wallis-Uvea 1978 (MOP78) UTM 1 SUD',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',0.000000000,'EPSG','9102','EPSG','8802','Longitude of natural origin',-177.000000000,'EPSG','9102','EPSG','8805','Scale factor at natural origin',0.99960000,'EPSG','9201','EPSG','8806','False easting',500000.000,'EPSG','9001','EPSG','8807','False northing',10000000.000,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "projected_crs" VALUES('IGNF','WALL78UTM1S','Wallis-Uvea 1978 (MOP78) UTM 1 SUD',NULL,NULL,'EPSG','4499','IGNF','WALL78GEO','IGNF','CONV_WALL78UTM1S','EPSG','1262',NULL,0); + +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('ntf_r93.gsb', -- as referenced by the IGNF registry + 'ntf_r93.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); + diff --git a/data/sql/metadata.sql b/data/sql/metadata.sql new file mode 100644 index 00000000..df5a651c --- /dev/null +++ b/data/sql/metadata.sql @@ -0,0 +1,2 @@ +INSERT INTO "metadata" VALUES('EPSG', 'v9.5.4'); +INSERT INTO "metadata" VALUES('IGNF', 'v1.0.0'); diff --git a/data/sql/method_triggers.sql b/data/sql/method_triggers.sql new file mode 100644 index 00000000..86eb1afd --- /dev/null +++ b/data/sql/method_triggers.sql @@ -0,0 +1,165 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +CREATE TRIGGER conversion_method_check_insert_trigger +BEFORE INSERT ON conversion +FOR EACH ROW BEGIN + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Conic Conformal (2SP)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9802' AND (NEW.method_name != 'Lambert Conic Conformal (2SP)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8821' OR NEW.param1_name != 'Latitude of false origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8822' OR NEW.param2_name != 'Longitude of false origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8823' OR NEW.param3_name != 'Latitude of 1st standard parallel' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8824' OR NEW.param4_name != 'Latitude of 2nd standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8826' OR NEW.param5_name != 'Easting at false origin' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8827' OR NEW.param6_name != 'Northing at false origin' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Transverse Mercator') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9807' AND (NEW.method_name != 'Transverse Mercator' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Mercator (variant A)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9804' AND (NEW.method_name != 'Mercator (variant A)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Popular Visualisation Pseudo Mercator') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1024' AND (NEW.method_name != 'Popular Visualisation Pseudo Mercator' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Azimuthal Equal Area (Spherical)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1027' AND (NEW.method_name != 'Lambert Azimuthal Equal Area (Spherical)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Equidistant Cylindrical') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1028' AND (NEW.method_name != 'Equidistant Cylindrical' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8823' OR NEW.param1_name != 'Latitude of 1st standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Equidistant Cylindrical (Spherical)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1029' AND (NEW.method_name != 'Equidistant Cylindrical (Spherical)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8823' OR NEW.param1_name != 'Latitude of 1st standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Cassini-Soldner') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9806' AND (NEW.method_name != 'Cassini-Soldner' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Bonne (South Orientated)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9828' AND (NEW.method_name != 'Bonne (South Orientated)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Albers Equal Area') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9822' AND (NEW.method_name != 'Albers Equal Area' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8821' OR NEW.param1_name != 'Latitude of false origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8822' OR NEW.param2_name != 'Longitude of false origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8823' OR NEW.param3_name != 'Latitude of 1st standard parallel' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8824' OR NEW.param4_name != 'Latitude of 2nd standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8826' OR NEW.param5_name != 'Easting at false origin' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8827' OR NEW.param6_name != 'Northing at false origin' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Krovak (North Orientated)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1041' AND (NEW.method_name != 'Krovak (North Orientated)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8833' OR NEW.param2_name != 'Longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '1036' OR NEW.param3_name != 'Co-latitude of cone axis' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8818' OR NEW.param4_name != 'Latitude of pseudo standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8819' OR NEW.param5_name != 'Scale factor on pseudo standard parallel' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8806' OR NEW.param6_name != 'False easting' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8807' OR NEW.param7_name != 'False northing' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length'); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Krovak Modified') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1042' AND (NEW.method_name != 'Krovak Modified' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8833' OR NEW.param2_name != 'Longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '1036' OR NEW.param3_name != 'Co-latitude of cone axis' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8818' OR NEW.param4_name != 'Latitude of pseudo standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8819' OR NEW.param5_name != 'Scale factor on pseudo standard parallel' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8806' OR NEW.param6_name != 'False easting' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8807' OR NEW.param7_name != 'False northing' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length'); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Krovak Modified (North Orientated)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1043' AND (NEW.method_name != 'Krovak Modified (North Orientated)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8833' OR NEW.param2_name != 'Longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '1036' OR NEW.param3_name != 'Co-latitude of cone axis' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8818' OR NEW.param4_name != 'Latitude of pseudo standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8819' OR NEW.param5_name != 'Scale factor on pseudo standard parallel' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8806' OR NEW.param6_name != 'False easting' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8807' OR NEW.param7_name != 'False northing' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length'); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Conic Conformal (1SP)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9801' AND (NEW.method_name != 'Lambert Conic Conformal (1SP)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for American Polyconic') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9818' AND (NEW.method_name != 'American Polyconic' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Polar Stereographic (variant A)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9810' AND (NEW.method_name != 'Polar Stereographic (variant A)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Krovak') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9819' AND (NEW.method_name != 'Krovak' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8833' OR NEW.param2_name != 'Longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '1036' OR NEW.param3_name != 'Co-latitude of cone axis' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8818' OR NEW.param4_name != 'Latitude of pseudo standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8819' OR NEW.param5_name != 'Scale factor on pseudo standard parallel' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8806' OR NEW.param6_name != 'False easting' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8807' OR NEW.param7_name != 'False northing' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length'); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Oblique Stereographic') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9809' AND (NEW.method_name != 'Oblique Stereographic' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Mercator (variant B)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9805' AND (NEW.method_name != 'Mercator (variant B)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8823' OR NEW.param1_name != 'Latitude of 1st standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Polar Stereographic (variant B)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9829' AND (NEW.method_name != 'Polar Stereographic (variant B)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8832' OR NEW.param1_name != 'Latitude of standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8833' OR NEW.param2_name != 'Longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Conic Conformal (2SP Michigan)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1051' AND (NEW.method_name != 'Lambert Conic Conformal (2SP Michigan)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8821' OR NEW.param1_name != 'Latitude of false origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8822' OR NEW.param2_name != 'Longitude of false origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8823' OR NEW.param3_name != 'Latitude of 1st standard parallel' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8824' OR NEW.param4_name != 'Latitude of 2nd standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8826' OR NEW.param5_name != 'Easting at false origin' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8827' OR NEW.param6_name != 'Northing at false origin' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '1038' OR NEW.param7_name != 'Ellipsoid scaling factor' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'scale'); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Colombia Urban') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1052' AND (NEW.method_name != 'Colombia Urban' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '1039' OR NEW.param5_name != 'Projection plane origin height' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Hotine Oblique Mercator (variant A)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9812' AND (NEW.method_name != 'Hotine Oblique Mercator (variant A)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8812' OR NEW.param2_name != 'Longitude of projection centre' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8813' OR NEW.param3_name != 'Azimuth of initial line' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8814' OR NEW.param4_name != 'Angle from Rectified to Skew Grid' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8815' OR NEW.param5_name != 'Scale factor on initial line' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8806' OR NEW.param6_name != 'False easting' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8807' OR NEW.param7_name != 'False northing' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length'); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Cylindrical Equal Area') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9835' AND (NEW.method_name != 'Lambert Cylindrical Equal Area' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8823' OR NEW.param1_name != 'Latitude of 1st standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Azimuthal Equal Area') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9820' AND (NEW.method_name != 'Lambert Azimuthal Equal Area' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Height Depth Reversal') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1068' AND (NEW.method_name != 'Height Depth Reversal' OR NEW.param1_auth_name IS NOT NULL OR NEW.param1_code IS NOT NULL OR NEW.param1_name IS NOT NULL OR NEW.param1_value IS NOT NULL OR NEW.param1_uom_auth_name IS NOT NULL OR NEW.param1_uom_code IS NOT NULL OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Change of Vertical Unit') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1069' AND (NEW.method_name != 'Change of Vertical Unit' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '1051' OR NEW.param1_name != 'Unit conversion scalar' OR (NOT((NEW.param1_value IS NULL AND NEW.param1_uom_auth_name IS NULL AND NEW.param1_uom_code IS NULL) OR (NEW.param1_value IS NOT NULL AND (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) = 'scale'))) OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Hotine Oblique Mercator (variant B)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9815' AND (NEW.method_name != 'Hotine Oblique Mercator (variant B)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8812' OR NEW.param2_name != 'Longitude of projection centre' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8813' OR NEW.param3_name != 'Azimuth of initial line' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8814' OR NEW.param4_name != 'Angle from Rectified to Skew Grid' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8815' OR NEW.param5_name != 'Scale factor on initial line' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'scale' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8816' OR NEW.param6_name != 'Easting at projection centre' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name != 'EPSG' OR NEW.param7_code != '8817' OR NEW.param7_name != 'Northing at projection centre' OR NEW.param7_value IS NULL OR NEW.param7_uom_auth_name IS NULL OR NEW.param7_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param7_uom_auth_name AND code = NEW.param7_uom_code) != 'length'); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Laborde Oblique Mercator') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9813' AND (NEW.method_name != 'Laborde Oblique Mercator' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8811' OR NEW.param1_name != 'Latitude of projection centre' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8812' OR NEW.param2_name != 'Longitude of projection centre' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8813' OR NEW.param3_name != 'Azimuth of initial line' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8815' OR NEW.param4_name != 'Scale factor on initial line' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'scale' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8806' OR NEW.param5_name != 'False easting' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8807' OR NEW.param6_name != 'False northing' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Equal Earth') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '1078' AND (NEW.method_name != 'Equal Earth' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8802' OR NEW.param1_name != 'Longitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8806' OR NEW.param2_name != 'False easting' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'length' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8807' OR NEW.param3_name != 'False northing' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Modified Azimuthal Equidistant') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9832' AND (NEW.method_name != 'Modified Azimuthal Equidistant' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Guam Projection') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9831' AND (NEW.method_name != 'Guam Projection' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Axis Order Reversal (2D)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9843' AND (NEW.method_name != 'Axis Order Reversal (2D)' OR NEW.param1_auth_name IS NOT NULL OR NEW.param1_code IS NOT NULL OR NEW.param1_name IS NOT NULL OR NEW.param1_value IS NOT NULL OR NEW.param1_uom_auth_name IS NOT NULL OR NEW.param1_uom_code IS NOT NULL OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Axis Order Reversal (Geographic3D horizontal)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9844' AND (NEW.method_name != 'Axis Order Reversal (Geographic3D horizontal)' OR NEW.param1_auth_name IS NOT NULL OR NEW.param1_code IS NOT NULL OR NEW.param1_name IS NOT NULL OR NEW.param1_value IS NOT NULL OR NEW.param1_uom_auth_name IS NOT NULL OR NEW.param1_uom_code IS NOT NULL OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Geographic/geocentric conversions') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9602' AND (NEW.method_name != 'Geographic/geocentric conversions' OR NEW.param1_auth_name IS NOT NULL OR NEW.param1_code IS NOT NULL OR NEW.param1_name IS NOT NULL OR NEW.param1_value IS NOT NULL OR NEW.param1_uom_auth_name IS NOT NULL OR NEW.param1_uom_code IS NOT NULL OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Geographic3D to 2D conversion') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9659' AND (NEW.method_name != 'Geographic3D to 2D conversion' OR NEW.param1_auth_name IS NOT NULL OR NEW.param1_code IS NOT NULL OR NEW.param1_name IS NOT NULL OR NEW.param1_value IS NOT NULL OR NEW.param1_uom_auth_name IS NOT NULL OR NEW.param1_uom_code IS NOT NULL OR NEW.param2_auth_name IS NOT NULL OR NEW.param2_code IS NOT NULL OR NEW.param2_name IS NOT NULL OR NEW.param2_value IS NOT NULL OR NEW.param2_uom_auth_name IS NOT NULL OR NEW.param2_uom_code IS NOT NULL OR NEW.param3_auth_name IS NOT NULL OR NEW.param3_code IS NOT NULL OR NEW.param3_name IS NOT NULL OR NEW.param3_value IS NOT NULL OR NEW.param3_uom_auth_name IS NOT NULL OR NEW.param3_uom_code IS NOT NULL OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Geographic/topocentric conversions') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9837' AND (NEW.method_name != 'Geographic/topocentric conversions' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8834' OR NEW.param1_name != 'Latitude of topocentric origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8835' OR NEW.param2_name != 'Longitude of topocentric origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8836' OR NEW.param3_name != 'Ellipsoidal height of topocentric origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Geocentric/topocentric conversions') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9836' AND (NEW.method_name != 'Geocentric/topocentric conversions' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8837' OR NEW.param1_name != 'Geocentric X of topocentric origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'length' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8838' OR NEW.param2_name != 'Geocentric Y of topocentric origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'length' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8839' OR NEW.param3_name != 'Geocentric Z of topocentric origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name IS NOT NULL OR NEW.param4_code IS NOT NULL OR NEW.param4_name IS NOT NULL OR NEW.param4_value IS NOT NULL OR NEW.param4_uom_auth_name IS NOT NULL OR NEW.param4_uom_code IS NOT NULL OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Transverse Mercator Zoned Grid System') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9824' AND (NEW.method_name != 'Transverse Mercator Zoned Grid System' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8830' OR NEW.param2_name != 'Initial longitude' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8831' OR NEW.param3_name != 'Zone width' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8805' OR NEW.param4_name != 'Scale factor at natural origin' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'scale' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8806' OR NEW.param5_name != 'False easting' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8807' OR NEW.param6_name != 'False northing' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Transverse Mercator (South Orientated)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9808' AND (NEW.method_name != 'Transverse Mercator (South Orientated)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Conic Conformal (West Orientated)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9826' AND (NEW.method_name != 'Lambert Conic Conformal (West Orientated)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Equidistant Cylindrical') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9842' AND (NEW.method_name != 'Equidistant Cylindrical' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8822' OR NEW.param2_name != 'Longitude of false origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Mercator (1SP) (Spherical)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9841' AND (NEW.method_name != 'Mercator (1SP) (Spherical)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Vertical Perspective') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9838' AND (NEW.method_name != 'Vertical Perspective' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8834' OR NEW.param1_name != 'Latitude of topocentric origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8835' OR NEW.param2_name != 'Longitude of topocentric origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8836' OR NEW.param3_name != 'Ellipsoidal height of topocentric origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8840' OR NEW.param4_name != 'Viewpoint height' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Azimuthal Equal Area (Spherical)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9821' AND (NEW.method_name != 'Lambert Azimuthal Equal Area (Spherical)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8828' OR NEW.param1_name != 'Spherical latitude of origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8829' OR NEW.param2_name != 'Spherical longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Cylindrical Equal Area (Spherical)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9834' AND (NEW.method_name != 'Lambert Cylindrical Equal Area (Spherical)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8823' OR NEW.param1_name != 'Latitude of 1st standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Hyperbolic Cassini-Soldner') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9833' AND (NEW.method_name != 'Hyperbolic Cassini-Soldner' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Conic Conformal (2SP Belgium)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9803' AND (NEW.method_name != 'Lambert Conic Conformal (2SP Belgium)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8821' OR NEW.param1_name != 'Latitude of false origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8822' OR NEW.param2_name != 'Longitude of false origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8823' OR NEW.param3_name != 'Latitude of 1st standard parallel' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'angle' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8824' OR NEW.param4_name != 'Latitude of 2nd standard parallel' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'angle' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8826' OR NEW.param5_name != 'Easting at false origin' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name != 'EPSG' OR NEW.param6_code != '8827' OR NEW.param6_name != 'Northing at false origin' OR NEW.param6_value IS NULL OR NEW.param6_uom_auth_name IS NULL OR NEW.param6_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param6_uom_auth_name AND code = NEW.param6_uom_code) != 'length' OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for New Zealand Map Grid') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9811' AND (NEW.method_name != 'New Zealand Map Grid' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Tunisia Mining Grid') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9816' AND (NEW.method_name != 'Tunisia Mining Grid' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8821' OR NEW.param1_name != 'Latitude of false origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8822' OR NEW.param2_name != 'Longitude of false origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8826' OR NEW.param3_name != 'Easting at false origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8827' OR NEW.param4_name != 'Northing at false origin' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Lambert Conic Near-Conformal') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9817' AND (NEW.method_name != 'Lambert Conic Near-Conformal' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8805' OR NEW.param3_name != 'Scale factor at natural origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'scale' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8806' OR NEW.param4_name != 'False easting' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name != 'EPSG' OR NEW.param5_code != '8807' OR NEW.param5_name != 'False northing' OR NEW.param5_value IS NULL OR NEW.param5_uom_auth_name IS NULL OR NEW.param5_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param5_uom_auth_name AND code = NEW.param5_uom_code) != 'length' OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Equidistant Cylindrical (Spherical)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9823' AND (NEW.method_name != 'Equidistant Cylindrical (Spherical)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8801' OR NEW.param1_name != 'Latitude of natural origin' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8802' OR NEW.param2_name != 'Longitude of natural origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8806' OR NEW.param3_name != 'False easting' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8807' OR NEW.param4_name != 'False northing' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for Polar Stereographic (variant C)') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '9830' AND (NEW.method_name != 'Polar Stereographic (variant C)' OR NEW.param1_auth_name != 'EPSG' OR NEW.param1_code != '8832' OR NEW.param1_name != 'Latitude of standard parallel' OR NEW.param1_value IS NULL OR NEW.param1_uom_auth_name IS NULL OR NEW.param1_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param1_uom_auth_name AND code = NEW.param1_uom_code) != 'angle' OR NEW.param2_auth_name != 'EPSG' OR NEW.param2_code != '8833' OR NEW.param2_name != 'Longitude of origin' OR NEW.param2_value IS NULL OR NEW.param2_uom_auth_name IS NULL OR NEW.param2_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param2_uom_auth_name AND code = NEW.param2_uom_code) != 'angle' OR NEW.param3_auth_name != 'EPSG' OR NEW.param3_code != '8826' OR NEW.param3_name != 'Easting at false origin' OR NEW.param3_value IS NULL OR NEW.param3_uom_auth_name IS NULL OR NEW.param3_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param3_uom_auth_name AND code = NEW.param3_uom_code) != 'length' OR NEW.param4_auth_name != 'EPSG' OR NEW.param4_code != '8827' OR NEW.param4_name != 'Northing at false origin' OR NEW.param4_value IS NULL OR NEW.param4_uom_auth_name IS NULL OR NEW.param4_uom_code IS NULL OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param4_uom_auth_name AND code = NEW.param4_uom_code) != 'length' OR NEW.param5_auth_name IS NOT NULL OR NEW.param5_code IS NOT NULL OR NEW.param5_name IS NOT NULL OR NEW.param5_value IS NOT NULL OR NEW.param5_uom_auth_name IS NOT NULL OR NEW.param5_uom_code IS NOT NULL OR NEW.param6_auth_name IS NOT NULL OR NEW.param6_code IS NOT NULL OR NEW.param6_name IS NOT NULL OR NEW.param6_value IS NOT NULL OR NEW.param6_uom_auth_name IS NOT NULL OR NEW.param6_uom_code IS NOT NULL OR NEW.param7_auth_name IS NOT NULL OR NEW.param7_code IS NOT NULL OR NEW.param7_name IS NOT NULL OR NEW.param7_value IS NOT NULL OR NEW.param7_uom_auth_name IS NOT NULL OR NEW.param7_uom_code IS NOT NULL); +END; diff --git a/data/sql/other_transformation.sql b/data/sql/other_transformation.sql new file mode 100644 index 00000000..6a871461 --- /dev/null +++ b/data/sql/other_transformation.sql @@ -0,0 +1,312 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +INSERT INTO "other_transformation" VALUES('EPSG','1258','Bogota 1975 (Bogota) to Bogota 1975 (Greenwich)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4802','EPSG','4218','EPSG','1070',NULL,'EPSG','8602','Longitude offset',-74.04513,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1259','Lisbon (Lisbon) to Lisbon (Greenwich)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4803','EPSG','4207','EPSG','1294',NULL,'EPSG','8602','Longitude offset',-9.0754862,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1260','Makassar (Jakarta) to Makassar (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4804','EPSG','4257','EPSG','1316',0.0,'EPSG','8602','Longitude offset',106.482779,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1261','MGI (Ferro) to MGI (Greenwich)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4805','EPSG','4312','EPSG','1166',NULL,'EPSG','8602','Longitude offset',-17.4,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1262','Monte Mario (Rome) to Monte Mario (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4806','EPSG','4265','EPSG','3343',0.0,'EPSG','8602','Longitude offset',12.27084,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1263','Padang (Jakarta) to Padang (Greenwich)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4808','EPSG','4280','EPSG','1355',NULL,'EPSG','8602','Longitude offset',106.482779,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1264','Belge 1950 (Brussels) to Belge 1950 (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4809','EPSG','4215','EPSG','1347',0.0,'EPSG','8602','Longitude offset',4.220471,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1265','Tananarive (Paris) to Tananarive (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4810','EPSG','4297','EPSG','3273',0.0,'EPSG','8602','Longitude offset',2.5969213,'EPSG','9105',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1266','Voirol 1875 (Paris) to Voirol 1875 (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4811','EPSG','4304','EPSG','1365',0.0,'EPSG','8602','Longitude offset',2.5969213,'EPSG','9105',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1268','Batavia (Jakarta) to Batavia (Greenwich)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4813','EPSG','4211','EPSG','1285',NULL,'EPSG','8602','Longitude offset',106.482779,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1269','RT38 (Stockholm) to RT38 (Greenwich)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4814','EPSG','4308','EPSG','1225',NULL,'EPSG','8602','Longitude offset',18.03298,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1270','Greek (Athens) to Greek (Greenwich)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4815','EPSG','4120','EPSG','1106',NULL,'EPSG','8602','Longitude offset',23.4258815,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1335','Tokyo to WGS 84 (6)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','4301','EPSG','4326','EPSG','2425',2.0,'EPSG','8601','Latitude offset',7.92,'EPSG','9108','EPSG','8602','Longitude offset',-13.88,'EPSG','9104','EPSG','8604','Geoid undulation',26.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1336','Tokyo + JSLD to WGS 84 (7)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2426',1.0,'EPSG','8601','Latitude offset',7.94,'EPSG','9104','EPSG','8602','Longitude offset',-13.97,'EPSG','9104','EPSG','8604','Geoid undulation',26.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1337','Tokyo + JSLD to WGS 84 (8)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2427',1.0,'EPSG','8601','Latitude offset',8.1,'EPSG','9104','EPSG','8602','Longitude offset',-13.81,'EPSG','9104','EPSG','8604','Geoid undulation',27.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1338','Tokyo + JSLD to WGS 84 (9)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2428',1.0,'EPSG','8601','Latitude offset',8.15,'EPSG','9104','EPSG','8602','Longitude offset',-13.95,'EPSG','9104','EPSG','8604','Geoid undulation',28.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1339','Tokyo + JSLD to WGS 84 (10)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2429',1.0,'EPSG','8601','Latitude offset',8.37,'EPSG','9104','EPSG','8602','Longitude offset',-13.65,'EPSG','9104','EPSG','8604','Geoid undulation',29.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1340','Tokyo + JSLD to WGS 84 (11)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2430',1.0,'EPSG','8601','Latitude offset',8.44,'EPSG','9104','EPSG','8602','Longitude offset',-13.87,'EPSG','9104','EPSG','8604','Geoid undulation',30.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1341','Tokyo + JSLD to WGS 84 (12)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2431',1.0,'EPSG','8601','Latitude offset',8.61,'EPSG','9104','EPSG','8602','Longitude offset',-14.08,'EPSG','9104','EPSG','8604','Geoid undulation',30.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1342','Tokyo + JSLD to WGS 84 (13)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2432',1.0,'EPSG','8601','Latitude offset',8.73,'EPSG','9104','EPSG','8602','Longitude offset',-14.3,'EPSG','9104','EPSG','8604','Geoid undulation',30.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1343','Tokyo + JSLD to WGS 84 (14)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2433',1.0,'EPSG','8601','Latitude offset',8.63,'EPSG','9104','EPSG','8602','Longitude offset',-13.49,'EPSG','9104','EPSG','8604','Geoid undulation',30.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1344','Tokyo + JSLD to WGS 84 (15)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2434',1.0,'EPSG','8601','Latitude offset',8.71,'EPSG','9104','EPSG','8602','Longitude offset',-13.73,'EPSG','9104','EPSG','8604','Geoid undulation',31.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1345','Tokyo + JSLD to WGS 84 (16)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2435',1.0,'EPSG','8601','Latitude offset',8.84,'EPSG','9104','EPSG','8602','Longitude offset',-14.03,'EPSG','9104','EPSG','8604','Geoid undulation',31.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1346','Tokyo + JSLD to WGS 84 (17)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2436',1.0,'EPSG','8601','Latitude offset',8.98,'EPSG','9104','EPSG','8602','Longitude offset',-14.33,'EPSG','9104','EPSG','8604','Geoid undulation',32.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1347','Tokyo + JSLD to WGS 84 (18)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2437',1.0,'EPSG','8601','Latitude offset',9.1,'EPSG','9104','EPSG','8602','Longitude offset',-14.56,'EPSG','9104','EPSG','8604','Geoid undulation',32.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1348','Tokyo + JSLD to WGS 84 (19)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2438',1.0,'EPSG','8601','Latitude offset',8.79,'EPSG','9104','EPSG','8602','Longitude offset',-13.0,'EPSG','9104','EPSG','8604','Geoid undulation',33.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1349','Tokyo + JSLD to WGS 84 (20)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2439',1.0,'EPSG','8601','Latitude offset',8.84,'EPSG','9104','EPSG','8602','Longitude offset',-13.31,'EPSG','9104','EPSG','8604','Geoid undulation',31.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1350','Tokyo + JSLD to WGS 84 (21)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2440',1.0,'EPSG','8601','Latitude offset',8.98,'EPSG','9104','EPSG','8602','Longitude offset',-13.59,'EPSG','9104','EPSG','8604','Geoid undulation',30.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1351','Tokyo + JSLD to WGS 84 (22)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2441',1.0,'EPSG','8601','Latitude offset',9.1,'EPSG','9104','EPSG','8602','Longitude offset',-13.91,'EPSG','9104','EPSG','8604','Geoid undulation',29.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1352','Tokyo + JSLD to WGS 84 (23)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2442',1.0,'EPSG','8601','Latitude offset',9.17,'EPSG','9104','EPSG','8602','Longitude offset',-14.27,'EPSG','9104','EPSG','8604','Geoid undulation',31.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1353','Tokyo + JSLD to WGS 84 (24)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2443',1.0,'EPSG','8601','Latitude offset',9.23,'EPSG','9104','EPSG','8602','Longitude offset',-14.52,'EPSG','9104','EPSG','8604','Geoid undulation',31.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1354','Tokyo + JSLD to WGS 84 (25)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2444',1.0,'EPSG','8601','Latitude offset',8.9,'EPSG','9104','EPSG','8602','Longitude offset',-12.68,'EPSG','9104','EPSG','8604','Geoid undulation',34.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1355','Tokyo + JSLD to WGS 84 (26)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2445',1.0,'EPSG','8601','Latitude offset',8.99,'EPSG','9104','EPSG','8602','Longitude offset',-12.8,'EPSG','9104','EPSG','8604','Geoid undulation',34.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1356','Tokyo + JSLD to WGS 84 (27)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2446',1.0,'EPSG','8601','Latitude offset',9.0,'EPSG','9104','EPSG','8602','Longitude offset',-13.07,'EPSG','9104','EPSG','8604','Geoid undulation',31.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1357','Tokyo + JSLD to WGS 84 (28)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2447',1.0,'EPSG','8601','Latitude offset',9.21,'EPSG','9104','EPSG','8602','Longitude offset',-13.51,'EPSG','9104','EPSG','8604','Geoid undulation',27.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1358','Tokyo + JSLD to WGS 84 (29)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2448',1.0,'EPSG','8601','Latitude offset',9.33,'EPSG','9104','EPSG','8602','Longitude offset',-13.66,'EPSG','9104','EPSG','8604','Geoid undulation',23.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1359','Tokyo + JSLD to WGS 84 (30)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2449',1.0,'EPSG','8601','Latitude offset',9.25,'EPSG','9104','EPSG','8602','Longitude offset',-12.72,'EPSG','9104','EPSG','8604','Geoid undulation',34.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1360','Tokyo + JSLD to WGS 84 (31)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2450',1.0,'EPSG','8601','Latitude offset',9.39,'EPSG','9104','EPSG','8602','Longitude offset',-12.91,'EPSG','9104','EPSG','8604','Geoid undulation',31.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1361','Tokyo + JSLD to WGS 84 (32)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2451',1.0,'EPSG','8601','Latitude offset',9.55,'EPSG','9104','EPSG','8602','Longitude offset',-12.63,'EPSG','9104','EPSG','8604','Geoid undulation',35.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1362','Tokyo + JSLD to WGS 84 (33)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2452',1.0,'EPSG','8601','Latitude offset',9.62,'EPSG','9104','EPSG','8602','Longitude offset',-12.82,'EPSG','9104','EPSG','8604','Geoid undulation',34.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1363','Tokyo + JSLD to WGS 84 (34)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2453',1.0,'EPSG','8601','Latitude offset',9.81,'EPSG','9104','EPSG','8602','Longitude offset',-12.29,'EPSG','9104','EPSG','8604','Geoid undulation',36.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1364','Tokyo + JSLD to WGS 84 (35)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2454',1.0,'EPSG','8601','Latitude offset',9.81,'EPSG','9104','EPSG','8602','Longitude offset',-12.45,'EPSG','9104','EPSG','8604','Geoid undulation',37.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1365','Tokyo + JSLD to WGS 84 (36)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2455',1.0,'EPSG','8601','Latitude offset',9.92,'EPSG','9104','EPSG','8602','Longitude offset',-12.79,'EPSG','9104','EPSG','8604','Geoid undulation',38.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1366','Tokyo + JSLD to WGS 84 (37)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2456',1.0,'EPSG','8601','Latitude offset',9.91,'EPSG','9104','EPSG','8602','Longitude offset',-12.21,'EPSG','9104','EPSG','8604','Geoid undulation',36.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1367','Tokyo + JSLD to WGS 84 (38)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2457',1.0,'EPSG','8601','Latitude offset',10.08,'EPSG','9104','EPSG','8602','Longitude offset',-12.35,'EPSG','9104','EPSG','8604','Geoid undulation',39.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1368','Tokyo + JSLD to WGS 84 (39)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2458',1.0,'EPSG','8601','Latitude offset',10.19,'EPSG','9104','EPSG','8602','Longitude offset',-12.74,'EPSG','9104','EPSG','8604','Geoid undulation',40.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1369','Tokyo + JSLD to WGS 84 (40)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2459',1.0,'EPSG','8601','Latitude offset',10.29,'EPSG','9104','EPSG','8602','Longitude offset',-12.13,'EPSG','9104','EPSG','8604','Geoid undulation',38.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1370','Tokyo + JSLD to WGS 84 (41)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2460',1.0,'EPSG','8601','Latitude offset',10.33,'EPSG','9104','EPSG','8602','Longitude offset',-12.27,'EPSG','9104','EPSG','8604','Geoid undulation',40.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1371','Tokyo + JSLD to WGS 84 (42)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2461',1.0,'EPSG','8601','Latitude offset',10.45,'EPSG','9104','EPSG','8602','Longitude offset',-12.61,'EPSG','9104','EPSG','8604','Geoid undulation',41.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1372','Tokyo + JSLD to WGS 84 (43)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2462',1.0,'EPSG','8601','Latitude offset',10.54,'EPSG','9104','EPSG','8602','Longitude offset',-11.96,'EPSG','9104','EPSG','8604','Geoid undulation',39.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1373','Tokyo + JSLD to WGS 84 (44)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2463',1.0,'EPSG','8601','Latitude offset',10.65,'EPSG','9104','EPSG','8602','Longitude offset',-12.27,'EPSG','9104','EPSG','8604','Geoid undulation',41.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1374','Tokyo + JSLD to WGS 84 (45)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2464',1.0,'EPSG','8601','Latitude offset',10.67,'EPSG','9104','EPSG','8602','Longitude offset',-12.5,'EPSG','9104','EPSG','8604','Geoid undulation',41.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1375','Tokyo + JSLD to WGS 84 (46)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2465',1.0,'EPSG','8601','Latitude offset',10.67,'EPSG','9104','EPSG','8602','Longitude offset',-10.86,'EPSG','9104','EPSG','8604','Geoid undulation',38.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1376','Tokyo + JSLD to WGS 84 (47)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2466',1.0,'EPSG','8601','Latitude offset',10.68,'EPSG','9104','EPSG','8602','Longitude offset',-10.97,'EPSG','9104','EPSG','8604','Geoid undulation',36.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1377','Tokyo + JSLD to WGS 84 (48)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2467',1.0,'EPSG','8601','Latitude offset',10.8,'EPSG','9104','EPSG','8602','Longitude offset',-11.53,'EPSG','9104','EPSG','8604','Geoid undulation',39.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1378','Tokyo + JSLD to WGS 84 (49)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2468',1.0,'EPSG','8601','Latitude offset',10.8,'EPSG','9104','EPSG','8602','Longitude offset',-11.73,'EPSG','9104','EPSG','8604','Geoid undulation',40.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1379','Tokyo + JSLD to WGS 84 (50)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2469',1.0,'EPSG','8601','Latitude offset',10.92,'EPSG','9104','EPSG','8602','Longitude offset',-12.16,'EPSG','9104','EPSG','8604','Geoid undulation',42.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1380','Tokyo + JSLD to WGS 84 (51)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2470',1.0,'EPSG','8601','Latitude offset',11.0,'EPSG','9104','EPSG','8602','Longitude offset',-12.25,'EPSG','9104','EPSG','8604','Geoid undulation',41.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1381','Tokyo + JSLD to WGS 84 (52)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2471',1.0,'EPSG','8601','Latitude offset',10.83,'EPSG','9104','EPSG','8602','Longitude offset',-10.77,'EPSG','9104','EPSG','8604','Geoid undulation',36.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1382','Tokyo + JSLD to WGS 84 (53)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2472',1.0,'EPSG','8601','Latitude offset',10.95,'EPSG','9104','EPSG','8602','Longitude offset',-11.0,'EPSG','9104','EPSG','8604','Geoid undulation',38.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1383','Tokyo + JSLD to WGS 84 (54)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2473',1.0,'EPSG','8601','Latitude offset',10.97,'EPSG','9104','EPSG','8602','Longitude offset',-11.34,'EPSG','9104','EPSG','8604','Geoid undulation',40.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1384','Tokyo + JSLD to WGS 84 (55)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2474',1.0,'EPSG','8601','Latitude offset',11.04,'EPSG','9104','EPSG','8602','Longitude offset',-11.69,'EPSG','9104','EPSG','8604','Geoid undulation',43.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1385','Tokyo + JSLD to WGS 84 (56)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2475',1.0,'EPSG','8601','Latitude offset',11.17,'EPSG','9104','EPSG','8602','Longitude offset',-12.05,'EPSG','9104','EPSG','8604','Geoid undulation',42.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1386','Tokyo + JSLD to WGS 84 (57)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2476',1.0,'EPSG','8601','Latitude offset',11.11,'EPSG','9104','EPSG','8602','Longitude offset',-10.59,'EPSG','9104','EPSG','8604','Geoid undulation',37.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1387','Tokyo + JSLD to WGS 84 (58)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2477',1.0,'EPSG','8601','Latitude offset',11.16,'EPSG','9104','EPSG','8602','Longitude offset',-10.97,'EPSG','9104','EPSG','8604','Geoid undulation',40.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1388','Tokyo + JSLD to WGS 84 (59)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2478',1.0,'EPSG','8601','Latitude offset',11.29,'EPSG','9104','EPSG','8602','Longitude offset',-11.23,'EPSG','9104','EPSG','8604','Geoid undulation',42.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1389','Tokyo + JSLD to WGS 84 (60)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2479',1.0,'EPSG','8601','Latitude offset',11.36,'EPSG','9104','EPSG','8602','Longitude offset',-11.59,'EPSG','9104','EPSG','8604','Geoid undulation',42.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1390','Tokyo + JSLD to WGS 84 (61)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2480',1.0,'EPSG','8601','Latitude offset',11.44,'EPSG','9104','EPSG','8602','Longitude offset',-11.88,'EPSG','9104','EPSG','8604','Geoid undulation',40.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1391','Tokyo + JSLD to WGS 84 (62)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2481',1.0,'EPSG','8601','Latitude offset',11.27,'EPSG','9104','EPSG','8602','Longitude offset',-9.31,'EPSG','9104','EPSG','8604','Geoid undulation',30.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1392','Tokyo + JSLD to WGS 84 (63)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2482',1.0,'EPSG','8601','Latitude offset',11.33,'EPSG','9104','EPSG','8602','Longitude offset',-9.52,'EPSG','9104','EPSG','8604','Geoid undulation',33.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1393','Tokyo + JSLD to WGS 84 (64)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2483',1.0,'EPSG','8601','Latitude offset',11.38,'EPSG','9104','EPSG','8602','Longitude offset',-9.86,'EPSG','9104','EPSG','8604','Geoid undulation',34.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1394','Tokyo + JSLD to WGS 84 (65)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2484',1.0,'EPSG','8601','Latitude offset',11.41,'EPSG','9104','EPSG','8602','Longitude offset',-10.14,'EPSG','9104','EPSG','8604','Geoid undulation',35.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1395','Tokyo + JSLD to WGS 84 (66)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2485',1.0,'EPSG','8601','Latitude offset',11.39,'EPSG','9104','EPSG','8602','Longitude offset',-10.52,'EPSG','9104','EPSG','8604','Geoid undulation',37.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1396','Tokyo + JSLD to WGS 84 (67)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2486',1.0,'EPSG','8601','Latitude offset',11.49,'EPSG','9104','EPSG','8602','Longitude offset',-10.83,'EPSG','9104','EPSG','8604','Geoid undulation',39.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1397','Tokyo + JSLD to WGS 84 (68)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2487',1.0,'EPSG','8601','Latitude offset',11.58,'EPSG','9104','EPSG','8602','Longitude offset',-11.21,'EPSG','9104','EPSG','8604','Geoid undulation',41.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1398','Tokyo + JSLD to WGS 84 (69)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2488',1.0,'EPSG','8601','Latitude offset',11.65,'EPSG','9104','EPSG','8602','Longitude offset',-11.53,'EPSG','9104','EPSG','8604','Geoid undulation',38.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1399','Tokyo + JSLD to WGS 84 (70)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2489',1.0,'EPSG','8601','Latitude offset',11.72,'EPSG','9104','EPSG','8602','Longitude offset',-11.8,'EPSG','9104','EPSG','8604','Geoid undulation',34.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1400','Tokyo + JSLD to WGS 84 (71)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2490',1.0,'EPSG','8601','Latitude offset',11.44,'EPSG','9104','EPSG','8602','Longitude offset',-9.21,'EPSG','9104','EPSG','8604','Geoid undulation',32.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1401','Tokyo + JSLD to WGS 84 (72)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2491',1.0,'EPSG','8601','Latitude offset',11.47,'EPSG','9104','EPSG','8602','Longitude offset',-9.52,'EPSG','9104','EPSG','8604','Geoid undulation',35.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1402','Tokyo + JSLD to WGS 84 (73)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2492',1.0,'EPSG','8601','Latitude offset',11.55,'EPSG','9104','EPSG','8602','Longitude offset',-9.8,'EPSG','9104','EPSG','8604','Geoid undulation',35.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1403','Tokyo + JSLD to WGS 84 (74)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2493',1.0,'EPSG','8601','Latitude offset',11.61,'EPSG','9104','EPSG','8602','Longitude offset',-10.12,'EPSG','9104','EPSG','8604','Geoid undulation',35.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1404','Tokyo + JSLD to WGS 84 (75)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2494',1.0,'EPSG','8601','Latitude offset',11.66,'EPSG','9104','EPSG','8602','Longitude offset',-10.47,'EPSG','9104','EPSG','8604','Geoid undulation',37.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1405','Tokyo + JSLD to WGS 84 (76)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2495',1.0,'EPSG','8601','Latitude offset',11.78,'EPSG','9104','EPSG','8602','Longitude offset',-10.79,'EPSG','9104','EPSG','8604','Geoid undulation',39.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1406','Tokyo + JSLD to WGS 84 (77)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2496',1.0,'EPSG','8601','Latitude offset',11.85,'EPSG','9104','EPSG','8602','Longitude offset',-11.13,'EPSG','9104','EPSG','8604','Geoid undulation',39.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1407','Tokyo + JSLD to WGS 84 (78)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2497',1.0,'EPSG','8601','Latitude offset',11.9,'EPSG','9104','EPSG','8602','Longitude offset',-11.47,'EPSG','9104','EPSG','8604','Geoid undulation',36.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1408','Tokyo + JSLD to WGS 84 (79)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2498',1.0,'EPSG','8601','Latitude offset',11.91,'EPSG','9104','EPSG','8602','Longitude offset',-11.69,'EPSG','9104','EPSG','8604','Geoid undulation',33.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1409','Tokyo + JSLD to WGS 84 (80)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2499',1.0,'EPSG','8601','Latitude offset',11.65,'EPSG','9104','EPSG','8602','Longitude offset',-8.59,'EPSG','9104','EPSG','8604','Geoid undulation',29.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1410','Tokyo + JSLD to WGS 84 (81)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2500',1.0,'EPSG','8601','Latitude offset',11.68,'EPSG','9104','EPSG','8602','Longitude offset',-8.8,'EPSG','9104','EPSG','8604','Geoid undulation',30.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1411','Tokyo + JSLD to WGS 84 (82)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2501',1.0,'EPSG','8601','Latitude offset',11.73,'EPSG','9104','EPSG','8602','Longitude offset',-9.04,'EPSG','9104','EPSG','8604','Geoid undulation',30.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1412','Tokyo + JSLD to WGS 84 (83)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2502',1.0,'EPSG','8601','Latitude offset',11.72,'EPSG','9104','EPSG','8602','Longitude offset',-9.48,'EPSG','9104','EPSG','8604','Geoid undulation',35.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1413','Tokyo + JSLD to WGS 84 (84)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2503',1.0,'EPSG','8601','Latitude offset',11.81,'EPSG','9104','EPSG','8602','Longitude offset',9.74,'EPSG','9104','EPSG','8604','Geoid undulation',35.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1414','Tokyo + JSLD to WGS 84 (85)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2504',1.0,'EPSG','8601','Latitude offset',11.88,'EPSG','9104','EPSG','8602','Longitude offset',-10.1,'EPSG','9104','EPSG','8604','Geoid undulation',37.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1415','Tokyo + JSLD to WGS 84 (86)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2505',1.0,'EPSG','8601','Latitude offset',11.91,'EPSG','9104','EPSG','8602','Longitude offset',-10.35,'EPSG','9104','EPSG','8604','Geoid undulation',37.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1416','Tokyo + JSLD to WGS 84 (87)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2506',1.0,'EPSG','8601','Latitude offset',11.9,'EPSG','9104','EPSG','8602','Longitude offset',-10.7,'EPSG','9104','EPSG','8604','Geoid undulation',39.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1417','Tokyo + JSLD to WGS 84 (88)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2507',1.0,'EPSG','8601','Latitude offset',12.02,'EPSG','9104','EPSG','8602','Longitude offset',-11.09,'EPSG','9104','EPSG','8604','Geoid undulation',38.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1418','Tokyo + JSLD to WGS 84 (89)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2508',1.0,'EPSG','8601','Latitude offset',11.87,'EPSG','9104','EPSG','8602','Longitude offset',-8.23,'EPSG','9104','EPSG','8604','Geoid undulation',29.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1419','Tokyo + JSLD to WGS 84 (90)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2509',1.0,'EPSG','8601','Latitude offset',11.84,'EPSG','9104','EPSG','8602','Longitude offset',-8.44,'EPSG','9104','EPSG','8604','Geoid undulation',30.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1420','Tokyo + JSLD to WGS 84 (91)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2510',1.0,'EPSG','8601','Latitude offset',11.94,'EPSG','9104','EPSG','8602','Longitude offset',-8.71,'EPSG','9104','EPSG','8604','Geoid undulation',30.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1421','Tokyo + JSLD to WGS 84 (92)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2511',1.0,'EPSG','8601','Latitude offset',11.99,'EPSG','9104','EPSG','8602','Longitude offset',-9.02,'EPSG','9104','EPSG','8604','Geoid undulation',30.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1422','Tokyo + JSLD to WGS 84 (93)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2512',1.0,'EPSG','8601','Latitude offset',12.05,'EPSG','9104','EPSG','8602','Longitude offset',-9.36,'EPSG','9104','EPSG','8604','Geoid undulation',35.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1423','Tokyo + JSLD to WGS 84 (94)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2513',1.0,'EPSG','8601','Latitude offset',12.1,'EPSG','9104','EPSG','8602','Longitude offset',-9.64,'EPSG','9104','EPSG','8604','Geoid undulation',35.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1424','Tokyo + JSLD to WGS 84 (95)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2514',1.0,'EPSG','8601','Latitude offset',12.1,'EPSG','9104','EPSG','8602','Longitude offset',-10.08,'EPSG','9104','EPSG','8604','Geoid undulation',37.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1425','Tokyo + JSLD to WGS 84 (96)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2515',1.0,'EPSG','8601','Latitude offset',12.07,'EPSG','9104','EPSG','8602','Longitude offset',-10.25,'EPSG','9104','EPSG','8604','Geoid undulation',37.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1426','Tokyo + JSLD to WGS 84 (97)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2516',1.0,'EPSG','8601','Latitude offset',12.0,'EPSG','9104','EPSG','8602','Longitude offset',-8.15,'EPSG','9104','EPSG','8604','Geoid undulation',32.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1427','Tokyo + JSLD to WGS 84 (98)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2517',1.0,'EPSG','8601','Latitude offset',12.06,'EPSG','9104','EPSG','8602','Longitude offset',-8.38,'EPSG','9104','EPSG','8604','Geoid undulation',31.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1428','Tokyo + JSLD to WGS 84 (99)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2518',1.0,'EPSG','8601','Latitude offset',12.17,'EPSG','9104','EPSG','8602','Longitude offset',-8.69,'EPSG','9104','EPSG','8604','Geoid undulation',30.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1429','Tokyo + JSLD to WGS 84 (100)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2519',1.0,'EPSG','8601','Latitude offset',12.23,'EPSG','9104','EPSG','8602','Longitude offset',-8.99,'EPSG','9104','EPSG','8604','Geoid undulation',31.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1430','Tokyo + JSLD to WGS 84 (101)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2520',1.0,'EPSG','8601','Latitude offset',12.21,'EPSG','9104','EPSG','8602','Longitude offset',-9.21,'EPSG','9104','EPSG','8604','Geoid undulation',34.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1431','Tokyo + JSLD to WGS 84 (102)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2521',1.0,'EPSG','8601','Latitude offset',12.28,'EPSG','9104','EPSG','8602','Longitude offset',-9.6,'EPSG','9104','EPSG','8604','Geoid undulation',33.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1432','Tokyo + JSLD to WGS 84 (103)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2522',1.0,'EPSG','8601','Latitude offset',12.28,'EPSG','9104','EPSG','8602','Longitude offset',-8.25,'EPSG','9104','EPSG','8604','Geoid undulation',31.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1433','Tokyo + JSLD to WGS 84 (104)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2523',1.0,'EPSG','8601','Latitude offset',12.37,'EPSG','9104','EPSG','8602','Longitude offset',-8.55,'EPSG','9104','EPSG','8604','Geoid undulation',29.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1434','Tokyo + JSLD to WGS 84 (105)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2524',1.0,'EPSG','8601','Latitude offset',12.53,'EPSG','9104','EPSG','8602','Longitude offset',-8.21,'EPSG','9104','EPSG','8604','Geoid undulation',31.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1435','Tokyo + JSLD to WGS 84 (106)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2525',1.0,'EPSG','8601','Latitude offset',12.57,'EPSG','9104','EPSG','8602','Longitude offset',-8.4,'EPSG','9104','EPSG','8604','Geoid undulation',28.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1436','Tokyo + JSLD to WGS 84 (107)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2526',1.0,'EPSG','8601','Latitude offset',12.71,'EPSG','9104','EPSG','8602','Longitude offset',-8.17,'EPSG','9104','EPSG','8604','Geoid undulation',29.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1447','Anguilla 1957 to WGS 84 (1)',NULL,NULL,'EPSG','9619','Geographic2D offsets','EPSG','4600','EPSG','4326','EPSG','3214',10.0,'EPSG','8601','Latitude offset',-18.0,'EPSG','9104','EPSG','8602','Longitude offset',4.4,'EPSG','9104',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1466','NGO 1948 (Oslo) to NGO1948 (Greenwich)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4817','EPSG','4273','EPSG','1352',NULL,'EPSG','8602','Longitude offset',10.43225,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1467','NTF (Paris) to NTF (Greenwich) (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4807','EPSG','4275','EPSG','1096',NULL,'EPSG','8602','Longitude offset',2.5969213,'EPSG','9105',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1468','NTF (Paris) to NTF (Greenwich) (2)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4807','EPSG','4275','EPSG','1096',NULL,'EPSG','8602','Longitude offset',2.201395,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1519','Bern 1898 (Bern) to CH1903 (Greenwich)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4801','EPSG','4149','EPSG','1286',NULL,'EPSG','8602','Longitude offset',7.26225,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1755','Bogota 1975 (Bogota) to Bogota 1975 (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4802','EPSG','4218','EPSG','3229',0.0,'EPSG','8602','Longitude offset',-74.04513,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1756','Lisbon (Lisbon) to Lisbon (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4803','EPSG','4207','EPSG','1294',0.0,'EPSG','8602','Longitude offset',-9.0754862,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1757','MGI (Ferro) to MGI (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4805','EPSG','4312','EPSG','1321',0.0,'EPSG','8602','Longitude offset',-17.4,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1758','Padang (Jakarta) to Padang (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4808','EPSG','4280','EPSG','1355',0.0,'EPSG','8602','Longitude offset',106.482779,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1759','Batavia (Jakarta) to Batavia (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4813','EPSG','4211','EPSG','1285',0.0,'EPSG','8602','Longitude offset',106.482779,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1760','RT38 (Stockholm) to RT38 (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4814','EPSG','4308','EPSG','3313',0.0,'EPSG','8602','Longitude offset',18.03298,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1761','Greek (Athens) to Greek (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4815','EPSG','4120','EPSG','3254',0.0,'EPSG','8602','Longitude offset',23.4258815,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1762','NGO 1948 (Oslo) to NGO1948 (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4817','EPSG','4273','EPSG','1352',0.0,'EPSG','8602','Longitude offset',10.43225,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1763','NTF (Paris) to NTF (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4807','EPSG','4275','EPSG','3694',0.0,'EPSG','8602','Longitude offset',2.5969213,'EPSG','9105',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1764','NTF (Paris) to NTF (2)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4807','EPSG','4275','EPSG','3694',0.0,'EPSG','8602','Longitude offset',2.201395,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1765','Bern 1898 (Bern) to CH1903 (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4801','EPSG','4149','EPSG','1286',0.0,'EPSG','8602','Longitude offset',7.26225,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1827','Tokyo + JSLD to WGS 84 (6)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4326','EPSG','2425',1.0,'EPSG','8601','Latitude offset',7.92,'EPSG','9104','EPSG','8602','Longitude offset',-13.88,'EPSG','9104','EPSG','8604','Geoid undulation',26.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1881','Carthage (Paris) to Carthage (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4816','EPSG','4223','EPSG','1618',0.0,'EPSG','8602','Longitude offset',2.5969213,'EPSG','9105',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1882','Nord Sahara 1959 (Paris) to Nord Sahara 1959 (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4819','EPSG','4307','EPSG','1026',0.0,'EPSG','8602','Longitude offset',2.5969213,'EPSG','9105',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','1883','Segara (Jakarta) to Segara (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4820','EPSG','4613','EPSG','1360',0.0,'EPSG','8602','Longitude offset',106.482779,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1884','S-JTSK (Ferro) to S-JTSK (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4818','EPSG','4156','EPSG','1306',0.0,'EPSG','8602','Longitude offset',-17.4,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1891','Greek to GGRS87 (1)',NULL,NULL,'EPSG','9619','Geographic2D offsets','EPSG','4120','EPSG','4121','EPSG','3254',5.0,'EPSG','8601','Latitude offset',-5.86,'EPSG','9104','EPSG','8602','Longitude offset',0.28,'EPSG','9104',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','1991','Lisbon 1890 (Lisbon) to Lisbon 1890 (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4904','EPSG','4666','EPSG','1294',0.0,'EPSG','8602','Longitude offset',-9.0754862,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','3895','MGI (Ferro) to MGI (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4805','EPSG','4312','EPSG','1037',0.0,'EPSG','8602','Longitude offset',-17.4,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','3913','MGI (Ferro) to MGI 1901 (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','4805','EPSG','3906','EPSG','2370',1.0,'EPSG','8602','Longitude offset',-17.394602,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','4441','NZVD2009 height to One Tree Point 1964 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','4440','EPSG','5767','EPSG','3762',0.03,'EPSG','8603','Vertical Offset',0.06,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','4442','NZVD2009 height to Auckland 1946 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','4440','EPSG','5759','EPSG','3764',0.05,'EPSG','8603','Vertical Offset',0.34,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','4443','NZVD2009 height to Moturiki 1953 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','4440','EPSG','5764','EPSG','3768',0.06,'EPSG','8603','Vertical Offset',0.24,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','4444','NZVD2009 height to Nelson 1955 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','4440','EPSG','5766','EPSG','3802',0.07,'EPSG','8603','Vertical Offset',0.29,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','4445','NZVD2009 height to Gisborne 1926 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','4440','EPSG','5762','EPSG','3771',0.02,'EPSG','8603','Vertical Offset',0.34,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','4446','NZVD2009 height to Napier 1962 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','4440','EPSG','5765','EPSG','3772',0.05,'EPSG','8603','Vertical Offset',0.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','4447','NZVD2009 height to Taranaki 1970 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','4440','EPSG','5769','EPSG','3769',0.05,'EPSG','8603','Vertical Offset',0.32,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','4448','NZVD2009 height to Wellington 1953 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','4440','EPSG','5770','EPSG','3773',0.04,'EPSG','8603','Vertical Offset',0.44,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','4449','NZVD2009 height to Lyttelton 1937 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','4440','EPSG','5763','EPSG','3804',0.09,'EPSG','8603','Vertical Offset',0.47,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','4450','NZVD2009 height to Dunedin 1958 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','4440','EPSG','5761','EPSG','3803',0.07,'EPSG','8603','Vertical Offset',0.49,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','4451','NZVD2009 height to Bluff 1955 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','4440','EPSG','5760','EPSG','3801',0.05,'EPSG','8603','Vertical Offset',0.36,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','4452','NZVD2009 height to Stewart Island 1977 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','4440','EPSG','5772','EPSG','3338',0.15,'EPSG','8603','Vertical Offset',0.39,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','4453','NZVD2009 height to Dunedin-Bluff 1960 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','4440','EPSG','4458','EPSG','3806',0.04,'EPSG','8603','Vertical Offset',0.38,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','5133','Tokyo 1892 to Tokyo (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','5132','EPSG','4301','EPSG','1364',0.0,'EPSG','8602','Longitude offset',10.405,'EPSG','9104',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','5134','Tokyo 1892 to Korean 1985 (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','5132','EPSG','4162','EPSG','3266',0.0,'EPSG','8602','Longitude offset',10.405,'EPSG','9104',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','5238','S-JTSK/05 (Ferro) to S-JTSK/05 (1)',NULL,NULL,'EPSG','9601','Longitude rotation','EPSG','5229','EPSG','5228','EPSG','1079',0.0,'EPSG','8602','Longitude offset',-17.4,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','5241','S-JTSK to S-JTSK/05 (1)',NULL,NULL,'EPSG','9619','Geographic2D offsets','EPSG','4156','EPSG','5228','EPSG','1079',0.0,'EPSG','8601','Latitude offset',0.0,'EPSG','9104','EPSG','8602','Longitude offset',0.0,'EPSG','9104',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','5400','Baltic height to Caspian depth (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5705','EPSG','5706','EPSG','1291',0.0,'EPSG','8603','Vertical Offset',-28.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','5401','Belfast to Malin Head',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5732','EPSG','5731','EPSG','1305',0.01,'EPSG','8603','Vertical Offset',-0.037,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','5402','Baltic height to AIOC95 depth (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5705','EPSG','5734','EPSG','2592',0.0,'EPSG','8603','Vertical Offset',-26.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','5403','AIOC95 depth to Caspian depth (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5734','EPSG','5706','EPSG','2592',0.0,'EPSG','8603','Vertical Offset',-1.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','5404','Baltic to Black Sea (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5705','EPSG','5735','EPSG','1102',0.0,'EPSG','8603','Vertical Offset',-0.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','5405','Hong Kong Principal height to Hong Kong Chart depth (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5738','EPSG','5739','EPSG','1118',0.0,'EPSG','8603','Vertical Offset',0.146,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','5406','Belfast to Malin Head (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5732','EPSG','5731','EPSG','1305',0.01,'EPSG','8603','Vertical Offset',0.037,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','5407','Poolbeg to Malin Head (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5754','EPSG','5731','EPSG','1305',0.1,'EPSG','8603','Vertical Offset',2.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','5408','Poolbeg to Belfast (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5754','EPSG','5732','EPSG','1305',0.1,'EPSG','8603','Vertical Offset',2.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','5412','KOC CD to Kuwait PWD (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5790','EPSG','5788','EPSG','1136',0.1,'EPSG','8603','Vertical Offset',0.49,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','5413','KOC CD height to KOC WD depth (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5790','EPSG','5789','EPSG','3267',0.1,'EPSG','8603','Vertical Offset',4.74,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','5414','KOC WD to Kuwait PWD (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5789','EPSG','5788','EPSG','1136',0.1,'EPSG','8603','Vertical Offset',-4.25,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','5419','NGF IGN69 height to EVRF2000 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5720','EPSG','5730','EPSG','1326',0.1,'EPSG','8603','Vertical Offset',-0.486,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','5425','NAP height to EVRF2000 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5709','EPSG','5730','EPSG','1275',0.1,'EPSG','8603','Vertical Offset',-0.005,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','5427','Cascais height to EVRF2000 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5780','EPSG','5730','EPSG','1294',0.1,'EPSG','8603','Vertical Offset',-0.315,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','5432','N60 height to EVRF2000 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5717','EPSG','5730','EPSG','3333',0.1,'EPSG','8603','Vertical Offset',0.213,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','5438','Baltic 1977 height to Caspian height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5705','EPSG','5611','EPSG','1291',0.0,'EPSG','8603','Vertical Offset',28.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','5440','Baltic 1977 depth to Caspian depth (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5612','EPSG','5706','EPSG','1291',0.0,'EPSG','8603','Vertical Offset',-28.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','5441','Baltic depth to Caspian height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5612','EPSG','5611','EPSG','1291',0.0,'EPSG','8603','Vertical Offset',28.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','5442','Baltic height to Baltic depth (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5705','EPSG','5612','EPSG','1284',0.0,'EPSG','8603','Vertical Offset',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','5443','Baltic 1977 height to AIOC95 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5705','EPSG','5797','EPSG','2592',0.0,'EPSG','8603','Vertical Offset',26.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','5445','Baltic 1977 depth to AIOC95 depth (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5612','EPSG','5734','EPSG','2592',0.0,'EPSG','8603','Vertical Offset',-26.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','5446','Baltic depth to AIOC95 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5612','EPSG','5797','EPSG','2592',0.0,'EPSG','8603','Vertical Offset',26.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','5447','Baltic 1977 height to Black Sea height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5705','EPSG','5735','EPSG','3251',0.0,'EPSG','8603','Vertical Offset',0.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','5448','Poolbeg height to Malin Head height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5754','EPSG','5731','EPSG','1305',0.1,'EPSG','8603','Vertical Offset',-2.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','5449','Poolbeg height to Belfast height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5754','EPSG','5732','EPSG','2530',0.1,'EPSG','8603','Vertical Offset',-2.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','5450','KOC CD height to Kuwait PWD height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5790','EPSG','5788','EPSG','3267',0.1,'EPSG','8603','Vertical Offset',-0.49,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','5452','Belfast height to Malin Head height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5732','EPSG','5731','EPSG','2530',0.01,'EPSG','8603','Vertical Offset',-0.037,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','5453','KOC CD height to KOC WD depth (ft) (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5790','EPSG','5614','EPSG','3267',0.1,'EPSG','8603','Vertical Offset',15.55,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','5454','HKPD height to HKCD depth (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5738','EPSG','5739','EPSG','1118',0.0,'EPSG','8603','Vertical Offset',-0.146,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','5455','KOC WD depth to Kuwait PWD height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5789','EPSG','5788','EPSG','3267',0.1,'EPSG','8603','Vertical Offset',4.25,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','6699','JGD2000 (vertical) height to JGD2011 (vertical) height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','6694','EPSG','6695','EPSG','4165',0.01,'EPSG','8603','Vertical Offset',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','7653','EGM96 height to Kumul 34 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5773','EPSG','7651','EPSG','4013',0.0,'EPSG','8603','Vertical Offset',-0.87,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','7654','EGM2008 height to Kiunga height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','3855','EPSG','7652','EPSG','4383',0.0,'EPSG','8603','Vertical Offset',-3.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','7873','EGM96 height to POM96 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5773','EPSG','7832','EPSG','4425',0.0,'EPSG','8603','Vertical Offset',-1.58,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','7874','EGM2008 height to POM08 height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','3855','EPSG','7841','EPSG','4425',0.0,'EPSG','8603','Vertical Offset',-0.93,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','7964','Poolbeg height (m) to Malin Head height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','7962','EPSG','5731','EPSG','1305',0.1,'EPSG','8603','Vertical Offset',-2.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','7966','Poolbeg height (m) to Belfast height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','7962','EPSG','5732','EPSG','1305',0.1,'EPSG','8603','Vertical Offset',-2.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','7977','HKPD depth to HKCD depth (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','7976','EPSG','5739','EPSG','3335',0.0,'EPSG','8603','Vertical Offset',-0.146,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','7980','KOC CD height to KOC WD height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5790','EPSG','7979','EPSG','3267',0.1,'EPSG','8603','Vertical Offset',-4.74,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','7981','Kuwait PWD height to KOC WD height (1)',NULL,NULL,'EPSG','9616','Vertical Offset','EPSG','5788','EPSG','7979','EPSG','3267',0.1,'EPSG','8603','Vertical Offset',-4.25,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','10087','Jamaica 1875 / Jamaica (Old Grid) to JAD69 / Jamaica National Grid (1)',NULL,NULL,'EPSG','9624','Affine parametric transformation','EPSG','24100','EPSG','24200','EPSG','3342',1.5,'EPSG','8623','A0',82357.457,'EPSG','9001','EPSG','8624','A1',0.304794369,'EPSG','9203','EPSG','8625','A2',1.5417425e-05,'EPSG','9203','EPSG','8639','B0',28091.324,'EPSG','9001','EPSG','8640','B1',-1.5417425e-05,'EPSG','9203','EPSG','8641','B2',0.304794369,'EPSG','9203',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','10088','JAD69 / Jamaica National Grid to Jamaica 1875 / Jamaica (Old Grid) (1)',NULL,NULL,'EPSG','9624','Affine parametric transformation','EPSG','24200','EPSG','24100','EPSG','3342',1.5,'EPSG','8623','A0',-270201.96,'EPSG','9005','EPSG','8624','A1',0.00016595792,'EPSG','9203','EPSG','8625','A2',3.2809005,'EPSG','9203','EPSG','8639','B0',-92178.51,'EPSG','9005','EPSG','8640','B1',3.2809005,'EPSG','9203','EPSG','8641','B2',-0.00016595792,'EPSG','9203',NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','10095','Mauritania 1999 / UTM zone 28N to WGS 84 / UTM zone 28N (1)',NULL,NULL,'EPSG','9624','Affine parametric transformation','EPSG','3103','EPSG','32628','EPSG','2971',40.0,'EPSG','8623','A0',NULL,'EPSG',NULL,'EPSG','8624','A1',NULL,'EPSG',NULL,'EPSG','8625','A2',NULL,'EPSG',NULL,'EPSG','8639','B0',NULL,'EPSG',NULL,'EPSG','8640','B1',NULL,'EPSG',NULL,'EPSG','8641','B2',NULL,'EPSG',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','10096','Mauritania 1999 / UTM zone 29N to WGS 84 / UTM zone 29N (1)',NULL,NULL,'EPSG','9624','Affine parametric transformation','EPSG','3104','EPSG','32629','EPSG','2970',40.0,'EPSG','8623','A0',NULL,'EPSG',NULL,'EPSG','8624','A1',NULL,'EPSG',NULL,'EPSG','8625','A2',NULL,'EPSG',NULL,'EPSG','8639','B0',NULL,'EPSG',NULL,'EPSG','8640','B1',NULL,'EPSG',NULL,'EPSG','8641','B2',NULL,'EPSG',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','10097','Mauritania 1999 / UTM zone 30N to WGS 84 / UTM zone 30N (1)',NULL,NULL,'EPSG','9624','Affine parametric transformation','EPSG','3105','EPSG','32630','EPSG','2969',40.0,'EPSG','8623','A0',NULL,'EPSG',NULL,'EPSG','8624','A1',NULL,'EPSG',NULL,'EPSG','8625','A2',NULL,'EPSG',NULL,'EPSG','8639','B0',NULL,'EPSG',NULL,'EPSG','8640','B1',NULL,'EPSG',NULL,'EPSG','8641','B2',NULL,'EPSG',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1); +INSERT INTO "other_transformation" VALUES('EPSG','15596','Tokyo + JSLD height to WGS 84 (7)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2426',1.0,'EPSG','8601','Latitude offset',7.94,'EPSG','9104','EPSG','8602','Longitude offset',-13.97,'EPSG','9104','EPSG','8604','Geoid undulation',26.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15597','Tokyo + JSLD height to WGS 84 (8)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2427',1.0,'EPSG','8601','Latitude offset',8.1,'EPSG','9104','EPSG','8602','Longitude offset',-13.81,'EPSG','9104','EPSG','8604','Geoid undulation',27.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15598','Tokyo + JSLD height to WGS 84 (9)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2428',1.0,'EPSG','8601','Latitude offset',8.15,'EPSG','9104','EPSG','8602','Longitude offset',-13.95,'EPSG','9104','EPSG','8604','Geoid undulation',28.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15599','Tokyo + JSLD height to WGS 84 (10)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2429',1.0,'EPSG','8601','Latitude offset',8.37,'EPSG','9104','EPSG','8602','Longitude offset',-13.65,'EPSG','9104','EPSG','8604','Geoid undulation',29.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15600','Tokyo + JSLD height to WGS 84 (11)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2430',1.0,'EPSG','8601','Latitude offset',8.44,'EPSG','9104','EPSG','8602','Longitude offset',-13.87,'EPSG','9104','EPSG','8604','Geoid undulation',30.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15601','Tokyo + JSLD height to WGS 84 (12)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2431',1.0,'EPSG','8601','Latitude offset',8.61,'EPSG','9104','EPSG','8602','Longitude offset',-14.08,'EPSG','9104','EPSG','8604','Geoid undulation',30.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15602','Tokyo + JSLD height to WGS 84 (13)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2432',1.0,'EPSG','8601','Latitude offset',8.73,'EPSG','9104','EPSG','8602','Longitude offset',-14.3,'EPSG','9104','EPSG','8604','Geoid undulation',30.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15603','Tokyo + JSLD height to WGS 84 (14)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2433',1.0,'EPSG','8601','Latitude offset',8.63,'EPSG','9104','EPSG','8602','Longitude offset',-13.49,'EPSG','9104','EPSG','8604','Geoid undulation',30.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15604','Tokyo + JSLD height to WGS 84 (15)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2434',1.0,'EPSG','8601','Latitude offset',8.71,'EPSG','9104','EPSG','8602','Longitude offset',-13.73,'EPSG','9104','EPSG','8604','Geoid undulation',31.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15605','Tokyo + JSLD height to WGS 84 (16)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2435',1.0,'EPSG','8601','Latitude offset',8.84,'EPSG','9104','EPSG','8602','Longitude offset',-14.03,'EPSG','9104','EPSG','8604','Geoid undulation',31.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15606','Tokyo + JSLD height to WGS 84 (17)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2436',1.0,'EPSG','8601','Latitude offset',8.98,'EPSG','9104','EPSG','8602','Longitude offset',-14.33,'EPSG','9104','EPSG','8604','Geoid undulation',32.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15607','Tokyo + JSLD height to WGS 84 (18)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2437',1.0,'EPSG','8601','Latitude offset',9.1,'EPSG','9104','EPSG','8602','Longitude offset',-14.56,'EPSG','9104','EPSG','8604','Geoid undulation',32.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15608','Tokyo + JSLD height to WGS 84 (19)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2438',1.0,'EPSG','8601','Latitude offset',8.79,'EPSG','9104','EPSG','8602','Longitude offset',-13.0,'EPSG','9104','EPSG','8604','Geoid undulation',33.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15609','Tokyo + JSLD height to WGS 84 (20)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2439',1.0,'EPSG','8601','Latitude offset',8.84,'EPSG','9104','EPSG','8602','Longitude offset',-13.31,'EPSG','9104','EPSG','8604','Geoid undulation',31.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15610','Tokyo + JSLD height to WGS 84 (21)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2440',1.0,'EPSG','8601','Latitude offset',8.98,'EPSG','9104','EPSG','8602','Longitude offset',-13.59,'EPSG','9104','EPSG','8604','Geoid undulation',30.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15611','Tokyo + JSLD height to WGS 84 (22)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2441',1.0,'EPSG','8601','Latitude offset',9.1,'EPSG','9104','EPSG','8602','Longitude offset',-13.91,'EPSG','9104','EPSG','8604','Geoid undulation',29.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15612','Tokyo + JSLD height to WGS 84 (23)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2442',1.0,'EPSG','8601','Latitude offset',9.17,'EPSG','9104','EPSG','8602','Longitude offset',-14.27,'EPSG','9104','EPSG','8604','Geoid undulation',31.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15613','Tokyo + JSLD height to WGS 84 (24)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2443',1.0,'EPSG','8601','Latitude offset',9.23,'EPSG','9104','EPSG','8602','Longitude offset',-14.52,'EPSG','9104','EPSG','8604','Geoid undulation',31.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15614','Tokyo + JSLD height to WGS 84 (25)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2444',1.0,'EPSG','8601','Latitude offset',8.9,'EPSG','9104','EPSG','8602','Longitude offset',-12.68,'EPSG','9104','EPSG','8604','Geoid undulation',34.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15615','Tokyo + JSLD height to WGS 84 (26)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2445',1.0,'EPSG','8601','Latitude offset',8.99,'EPSG','9104','EPSG','8602','Longitude offset',-12.8,'EPSG','9104','EPSG','8604','Geoid undulation',34.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15616','Tokyo + JSLD height to WGS 84 (27)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2446',1.0,'EPSG','8601','Latitude offset',9.0,'EPSG','9104','EPSG','8602','Longitude offset',-13.07,'EPSG','9104','EPSG','8604','Geoid undulation',31.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15617','Tokyo + JSLD height to WGS 84 (28)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2447',1.0,'EPSG','8601','Latitude offset',9.21,'EPSG','9104','EPSG','8602','Longitude offset',-13.51,'EPSG','9104','EPSG','8604','Geoid undulation',27.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15618','Tokyo + JSLD height to WGS 84 (29)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2448',1.0,'EPSG','8601','Latitude offset',9.33,'EPSG','9104','EPSG','8602','Longitude offset',-13.66,'EPSG','9104','EPSG','8604','Geoid undulation',23.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15619','Tokyo + JSLD height to WGS 84 (30)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2449',1.0,'EPSG','8601','Latitude offset',9.25,'EPSG','9104','EPSG','8602','Longitude offset',-12.72,'EPSG','9104','EPSG','8604','Geoid undulation',34.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15620','Tokyo + JSLD height to WGS 84 (31)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2450',1.0,'EPSG','8601','Latitude offset',9.39,'EPSG','9104','EPSG','8602','Longitude offset',-12.91,'EPSG','9104','EPSG','8604','Geoid undulation',31.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15621','Tokyo + JSLD height to WGS 84 (32)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2451',1.0,'EPSG','8601','Latitude offset',9.55,'EPSG','9104','EPSG','8602','Longitude offset',-12.63,'EPSG','9104','EPSG','8604','Geoid undulation',35.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15622','Tokyo + JSLD height to WGS 84 (33)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2452',1.0,'EPSG','8601','Latitude offset',9.62,'EPSG','9104','EPSG','8602','Longitude offset',-12.82,'EPSG','9104','EPSG','8604','Geoid undulation',34.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15623','Tokyo + JSLD height to WGS 84 (34)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2453',1.0,'EPSG','8601','Latitude offset',9.81,'EPSG','9104','EPSG','8602','Longitude offset',-12.29,'EPSG','9104','EPSG','8604','Geoid undulation',36.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15624','Tokyo + JSLD height to WGS 84 (35)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2454',1.0,'EPSG','8601','Latitude offset',9.81,'EPSG','9104','EPSG','8602','Longitude offset',-12.45,'EPSG','9104','EPSG','8604','Geoid undulation',37.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15625','Tokyo + JSLD height to WGS 84 (36)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2455',1.0,'EPSG','8601','Latitude offset',9.92,'EPSG','9104','EPSG','8602','Longitude offset',-12.79,'EPSG','9104','EPSG','8604','Geoid undulation',38.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15626','Tokyo + JSLD height to WGS 84 (37)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2456',1.0,'EPSG','8601','Latitude offset',9.91,'EPSG','9104','EPSG','8602','Longitude offset',-12.21,'EPSG','9104','EPSG','8604','Geoid undulation',36.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15627','Tokyo + JSLD height to WGS 84 (38)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2457',1.0,'EPSG','8601','Latitude offset',10.08,'EPSG','9104','EPSG','8602','Longitude offset',-12.35,'EPSG','9104','EPSG','8604','Geoid undulation',39.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15628','Tokyo + JSLD height to WGS 84 (39)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2458',1.0,'EPSG','8601','Latitude offset',10.19,'EPSG','9104','EPSG','8602','Longitude offset',-12.74,'EPSG','9104','EPSG','8604','Geoid undulation',40.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15629','Tokyo + JSLD height to WGS 84 (40)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2459',1.0,'EPSG','8601','Latitude offset',10.29,'EPSG','9104','EPSG','8602','Longitude offset',-12.13,'EPSG','9104','EPSG','8604','Geoid undulation',38.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15630','Tokyo + JSLD height to WGS 84 (41)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2460',1.0,'EPSG','8601','Latitude offset',10.33,'EPSG','9104','EPSG','8602','Longitude offset',-12.27,'EPSG','9104','EPSG','8604','Geoid undulation',40.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15631','Tokyo + JSLD height to WGS 84 (42)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2461',1.0,'EPSG','8601','Latitude offset',10.45,'EPSG','9104','EPSG','8602','Longitude offset',-12.61,'EPSG','9104','EPSG','8604','Geoid undulation',41.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15632','Tokyo + JSLD height to WGS 84 (43)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2462',1.0,'EPSG','8601','Latitude offset',10.54,'EPSG','9104','EPSG','8602','Longitude offset',-11.96,'EPSG','9104','EPSG','8604','Geoid undulation',39.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15633','Tokyo + JSLD height to WGS 84 (44)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2463',1.0,'EPSG','8601','Latitude offset',10.65,'EPSG','9104','EPSG','8602','Longitude offset',-12.27,'EPSG','9104','EPSG','8604','Geoid undulation',41.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15634','Tokyo + JSLD height to WGS 84 (45)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2464',1.0,'EPSG','8601','Latitude offset',10.67,'EPSG','9104','EPSG','8602','Longitude offset',-12.5,'EPSG','9104','EPSG','8604','Geoid undulation',41.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15635','Tokyo + JSLD height to WGS 84 (46)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2465',1.0,'EPSG','8601','Latitude offset',10.67,'EPSG','9104','EPSG','8602','Longitude offset',-10.86,'EPSG','9104','EPSG','8604','Geoid undulation',38.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15636','Tokyo + JSLD height to WGS 84 (47)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2466',1.0,'EPSG','8601','Latitude offset',10.68,'EPSG','9104','EPSG','8602','Longitude offset',-10.97,'EPSG','9104','EPSG','8604','Geoid undulation',36.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15637','Tokyo + JSLD height to WGS 84 (48)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2467',1.0,'EPSG','8601','Latitude offset',10.8,'EPSG','9104','EPSG','8602','Longitude offset',-11.53,'EPSG','9104','EPSG','8604','Geoid undulation',39.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15638','Tokyo + JSLD height to WGS 84 (49)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2468',1.0,'EPSG','8601','Latitude offset',10.8,'EPSG','9104','EPSG','8602','Longitude offset',-11.73,'EPSG','9104','EPSG','8604','Geoid undulation',40.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15639','Tokyo + JSLD height to WGS 84 (50)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2469',1.0,'EPSG','8601','Latitude offset',10.92,'EPSG','9104','EPSG','8602','Longitude offset',-12.16,'EPSG','9104','EPSG','8604','Geoid undulation',42.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15640','Tokyo + JSLD height to WGS 84 (51)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2470',1.0,'EPSG','8601','Latitude offset',11.0,'EPSG','9104','EPSG','8602','Longitude offset',-12.25,'EPSG','9104','EPSG','8604','Geoid undulation',41.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15641','Tokyo + JSLD height to WGS 84 (52)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2471',1.0,'EPSG','8601','Latitude offset',10.83,'EPSG','9104','EPSG','8602','Longitude offset',-10.77,'EPSG','9104','EPSG','8604','Geoid undulation',36.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15642','Tokyo + JSLD height to WGS 84 (53)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2472',1.0,'EPSG','8601','Latitude offset',10.95,'EPSG','9104','EPSG','8602','Longitude offset',-11.0,'EPSG','9104','EPSG','8604','Geoid undulation',38.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15643','Tokyo + JSLD height to WGS 84 (54)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2473',1.0,'EPSG','8601','Latitude offset',10.97,'EPSG','9104','EPSG','8602','Longitude offset',-11.34,'EPSG','9104','EPSG','8604','Geoid undulation',40.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15644','Tokyo + JSLD height to WGS 84 (55)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2474',1.0,'EPSG','8601','Latitude offset',11.04,'EPSG','9104','EPSG','8602','Longitude offset',-11.69,'EPSG','9104','EPSG','8604','Geoid undulation',43.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15645','Tokyo + JSLD height to WGS 84 (56)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2475',1.0,'EPSG','8601','Latitude offset',11.17,'EPSG','9104','EPSG','8602','Longitude offset',-12.05,'EPSG','9104','EPSG','8604','Geoid undulation',42.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15646','Tokyo + JSLD height to WGS 84 (57)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2476',1.0,'EPSG','8601','Latitude offset',11.11,'EPSG','9104','EPSG','8602','Longitude offset',-10.59,'EPSG','9104','EPSG','8604','Geoid undulation',37.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15647','Tokyo + JSLD height to WGS 84 (58)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2477',1.0,'EPSG','8601','Latitude offset',11.16,'EPSG','9104','EPSG','8602','Longitude offset',-10.97,'EPSG','9104','EPSG','8604','Geoid undulation',40.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15648','Tokyo + JSLD height to WGS 84 (59)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2478',1.0,'EPSG','8601','Latitude offset',11.29,'EPSG','9104','EPSG','8602','Longitude offset',-11.23,'EPSG','9104','EPSG','8604','Geoid undulation',42.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15649','Tokyo + JSLD height to WGS 84 (60)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2479',1.0,'EPSG','8601','Latitude offset',11.36,'EPSG','9104','EPSG','8602','Longitude offset',-11.59,'EPSG','9104','EPSG','8604','Geoid undulation',42.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15650','Tokyo + JSLD height to WGS 84 (61)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2480',1.0,'EPSG','8601','Latitude offset',11.44,'EPSG','9104','EPSG','8602','Longitude offset',-11.88,'EPSG','9104','EPSG','8604','Geoid undulation',40.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15651','Tokyo + JSLD height to WGS 84 (62)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2481',1.0,'EPSG','8601','Latitude offset',11.27,'EPSG','9104','EPSG','8602','Longitude offset',-9.31,'EPSG','9104','EPSG','8604','Geoid undulation',30.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15652','Tokyo + JSLD height to WGS 84 (63)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2482',1.0,'EPSG','8601','Latitude offset',11.33,'EPSG','9104','EPSG','8602','Longitude offset',-9.52,'EPSG','9104','EPSG','8604','Geoid undulation',33.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15653','Tokyo + JSLD height to WGS 84 (64)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2483',1.0,'EPSG','8601','Latitude offset',11.38,'EPSG','9104','EPSG','8602','Longitude offset',-9.86,'EPSG','9104','EPSG','8604','Geoid undulation',34.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15654','Tokyo + JSLD height to WGS 84 (65)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2484',1.0,'EPSG','8601','Latitude offset',11.41,'EPSG','9104','EPSG','8602','Longitude offset',-10.14,'EPSG','9104','EPSG','8604','Geoid undulation',35.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15655','Tokyo + JSLD height to WGS 84 (66)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2485',1.0,'EPSG','8601','Latitude offset',11.39,'EPSG','9104','EPSG','8602','Longitude offset',-10.52,'EPSG','9104','EPSG','8604','Geoid undulation',37.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15656','Tokyo + JSLD height to WGS 84 (67)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2486',1.0,'EPSG','8601','Latitude offset',11.49,'EPSG','9104','EPSG','8602','Longitude offset',-10.83,'EPSG','9104','EPSG','8604','Geoid undulation',39.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15657','Tokyo + JSLD height to WGS 84 (68)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2487',1.0,'EPSG','8601','Latitude offset',11.58,'EPSG','9104','EPSG','8602','Longitude offset',-11.21,'EPSG','9104','EPSG','8604','Geoid undulation',41.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15658','Tokyo + JSLD height to WGS 84 (69)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2488',1.0,'EPSG','8601','Latitude offset',11.65,'EPSG','9104','EPSG','8602','Longitude offset',-11.53,'EPSG','9104','EPSG','8604','Geoid undulation',38.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15659','Tokyo + JSLD height to WGS 84 (70)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2489',1.0,'EPSG','8601','Latitude offset',11.72,'EPSG','9104','EPSG','8602','Longitude offset',-11.8,'EPSG','9104','EPSG','8604','Geoid undulation',34.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15660','Tokyo + JSLD height to WGS 84 (71)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2490',1.0,'EPSG','8601','Latitude offset',11.44,'EPSG','9104','EPSG','8602','Longitude offset',-9.21,'EPSG','9104','EPSG','8604','Geoid undulation',32.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15661','Tokyo + JSLD height to WGS 84 (72)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2491',1.0,'EPSG','8601','Latitude offset',11.47,'EPSG','9104','EPSG','8602','Longitude offset',-9.52,'EPSG','9104','EPSG','8604','Geoid undulation',35.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15662','Tokyo + JSLD height to WGS 84 (73)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2492',1.0,'EPSG','8601','Latitude offset',11.55,'EPSG','9104','EPSG','8602','Longitude offset',-9.8,'EPSG','9104','EPSG','8604','Geoid undulation',35.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15663','Tokyo + JSLD height to WGS 84 (74)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2493',1.0,'EPSG','8601','Latitude offset',11.61,'EPSG','9104','EPSG','8602','Longitude offset',-10.12,'EPSG','9104','EPSG','8604','Geoid undulation',35.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15664','Tokyo + JSLD height to WGS 84 (75)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2494',1.0,'EPSG','8601','Latitude offset',11.66,'EPSG','9104','EPSG','8602','Longitude offset',-10.47,'EPSG','9104','EPSG','8604','Geoid undulation',37.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15665','Tokyo + JSLD height to WGS 84 (76)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2495',1.0,'EPSG','8601','Latitude offset',11.78,'EPSG','9104','EPSG','8602','Longitude offset',-10.79,'EPSG','9104','EPSG','8604','Geoid undulation',39.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15666','Tokyo + JSLD height to WGS 84 (77)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2496',1.0,'EPSG','8601','Latitude offset',11.85,'EPSG','9104','EPSG','8602','Longitude offset',-11.13,'EPSG','9104','EPSG','8604','Geoid undulation',39.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15667','Tokyo + JSLD height to WGS 84 (78)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2497',1.0,'EPSG','8601','Latitude offset',11.9,'EPSG','9104','EPSG','8602','Longitude offset',-11.47,'EPSG','9104','EPSG','8604','Geoid undulation',36.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15668','Tokyo + JSLD height to WGS 84 (79)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2498',1.0,'EPSG','8601','Latitude offset',11.91,'EPSG','9104','EPSG','8602','Longitude offset',-11.69,'EPSG','9104','EPSG','8604','Geoid undulation',33.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15669','Tokyo + JSLD height to WGS 84 (80)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2499',1.0,'EPSG','8601','Latitude offset',11.65,'EPSG','9104','EPSG','8602','Longitude offset',-8.59,'EPSG','9104','EPSG','8604','Geoid undulation',29.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15670','Tokyo + JSLD height to WGS 84 (81)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2500',1.0,'EPSG','8601','Latitude offset',11.68,'EPSG','9104','EPSG','8602','Longitude offset',-8.8,'EPSG','9104','EPSG','8604','Geoid undulation',30.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15671','Tokyo + JSLD height to WGS 84 (82)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2501',1.0,'EPSG','8601','Latitude offset',11.73,'EPSG','9104','EPSG','8602','Longitude offset',-9.04,'EPSG','9104','EPSG','8604','Geoid undulation',30.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15672','Tokyo + JSLD height to WGS 84 (83)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2502',1.0,'EPSG','8601','Latitude offset',11.72,'EPSG','9104','EPSG','8602','Longitude offset',-9.48,'EPSG','9104','EPSG','8604','Geoid undulation',35.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15673','Tokyo + JSLD height to WGS 84 (84)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2503',1.0,'EPSG','8601','Latitude offset',11.81,'EPSG','9104','EPSG','8602','Longitude offset',9.74,'EPSG','9104','EPSG','8604','Geoid undulation',35.8,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15674','Tokyo + JSLD height to WGS 84 (85)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2504',1.0,'EPSG','8601','Latitude offset',11.88,'EPSG','9104','EPSG','8602','Longitude offset',-10.1,'EPSG','9104','EPSG','8604','Geoid undulation',37.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15675','Tokyo + JSLD height to WGS 84 (86)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2505',1.0,'EPSG','8601','Latitude offset',11.91,'EPSG','9104','EPSG','8602','Longitude offset',-10.35,'EPSG','9104','EPSG','8604','Geoid undulation',37.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15676','Tokyo + JSLD height to WGS 84 (87)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2506',1.0,'EPSG','8601','Latitude offset',11.9,'EPSG','9104','EPSG','8602','Longitude offset',-10.7,'EPSG','9104','EPSG','8604','Geoid undulation',39.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15677','Tokyo + JSLD height to WGS 84 (88)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2507',1.0,'EPSG','8601','Latitude offset',12.02,'EPSG','9104','EPSG','8602','Longitude offset',-11.09,'EPSG','9104','EPSG','8604','Geoid undulation',38.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15678','Tokyo + JSLD height to WGS 84 (89)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2508',1.0,'EPSG','8601','Latitude offset',11.87,'EPSG','9104','EPSG','8602','Longitude offset',-8.23,'EPSG','9104','EPSG','8604','Geoid undulation',29.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15679','Tokyo + JSLD height to WGS 84 (90)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2509',1.0,'EPSG','8601','Latitude offset',11.84,'EPSG','9104','EPSG','8602','Longitude offset',-8.44,'EPSG','9104','EPSG','8604','Geoid undulation',30.6,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15680','Tokyo + JSLD height to WGS 84 (91)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2510',1.0,'EPSG','8601','Latitude offset',11.94,'EPSG','9104','EPSG','8602','Longitude offset',-8.71,'EPSG','9104','EPSG','8604','Geoid undulation',30.2,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15681','Tokyo + JSLD height to WGS 84 (92)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2511',1.0,'EPSG','8601','Latitude offset',11.99,'EPSG','9104','EPSG','8602','Longitude offset',-9.02,'EPSG','9104','EPSG','8604','Geoid undulation',30.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15682','Tokyo + JSLD height to WGS 84 (93)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2512',1.0,'EPSG','8601','Latitude offset',12.05,'EPSG','9104','EPSG','8602','Longitude offset',-9.36,'EPSG','9104','EPSG','8604','Geoid undulation',35.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15683','Tokyo + JSLD height to WGS 84 (94)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2513',1.0,'EPSG','8601','Latitude offset',12.1,'EPSG','9104','EPSG','8602','Longitude offset',-9.64,'EPSG','9104','EPSG','8604','Geoid undulation',35.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15684','Tokyo + JSLD height to WGS 84 (95)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2514',1.0,'EPSG','8601','Latitude offset',12.1,'EPSG','9104','EPSG','8602','Longitude offset',-10.08,'EPSG','9104','EPSG','8604','Geoid undulation',37.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15685','Tokyo + JSLD height to WGS 84 (96)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2515',1.0,'EPSG','8601','Latitude offset',12.07,'EPSG','9104','EPSG','8602','Longitude offset',-10.25,'EPSG','9104','EPSG','8604','Geoid undulation',37.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15686','Tokyo + JSLD height to WGS 84 (97)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2516',1.0,'EPSG','8601','Latitude offset',12.0,'EPSG','9104','EPSG','8602','Longitude offset',-8.15,'EPSG','9104','EPSG','8604','Geoid undulation',32.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15687','Tokyo + JSLD height to WGS 84 (98)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2517',1.0,'EPSG','8601','Latitude offset',12.06,'EPSG','9104','EPSG','8602','Longitude offset',-8.38,'EPSG','9104','EPSG','8604','Geoid undulation',31.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15688','Tokyo + JSLD height to WGS 84 (99)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2518',1.0,'EPSG','8601','Latitude offset',12.17,'EPSG','9104','EPSG','8602','Longitude offset',-8.69,'EPSG','9104','EPSG','8604','Geoid undulation',30.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15689','Tokyo + JSLD height to WGS 84 (100)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2519',1.0,'EPSG','8601','Latitude offset',12.23,'EPSG','9104','EPSG','8602','Longitude offset',-8.99,'EPSG','9104','EPSG','8604','Geoid undulation',31.7,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15690','Tokyo + JSLD height to WGS 84 (101)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2520',1.0,'EPSG','8601','Latitude offset',12.21,'EPSG','9104','EPSG','8602','Longitude offset',-9.21,'EPSG','9104','EPSG','8604','Geoid undulation',34.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15691','Tokyo + JSLD height to WGS 84 (102)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2521',1.0,'EPSG','8601','Latitude offset',12.28,'EPSG','9104','EPSG','8602','Longitude offset',-9.6,'EPSG','9104','EPSG','8604','Geoid undulation',33.3,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15692','Tokyo + JSLD height to WGS 84 (103)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2522',1.0,'EPSG','8601','Latitude offset',12.28,'EPSG','9104','EPSG','8602','Longitude offset',-8.25,'EPSG','9104','EPSG','8604','Geoid undulation',31.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15693','Tokyo + JSLD height to WGS 84 (104)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2523',1.0,'EPSG','8601','Latitude offset',12.37,'EPSG','9104','EPSG','8602','Longitude offset',-8.55,'EPSG','9104','EPSG','8604','Geoid undulation',29.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15694','Tokyo + JSLD height to WGS 84 (105)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2524',1.0,'EPSG','8601','Latitude offset',12.53,'EPSG','9104','EPSG','8602','Longitude offset',-8.21,'EPSG','9104','EPSG','8604','Geoid undulation',31.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15695','Tokyo + JSLD height to WGS 84 (106)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2525',1.0,'EPSG','8601','Latitude offset',12.57,'EPSG','9104','EPSG','8602','Longitude offset',-8.4,'EPSG','9104','EPSG','8604','Geoid undulation',28.4,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15696','Tokyo + JSLD height to WGS 84 (107)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2526',1.0,'EPSG','8601','Latitude offset',12.71,'EPSG','9104','EPSG','8602','Longitude offset',-8.17,'EPSG','9104','EPSG','8604','Geoid undulation',29.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15697','Tokyo + JSLD height to WGS 84 (6)',NULL,NULL,'EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979','EPSG','2425',1.0,'EPSG','8601','Latitude offset',7.92,'EPSG','9104','EPSG','8602','Longitude offset',-13.88,'EPSG','9104','EPSG','8604','Geoid undulation',26.1,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15857','IGN Astro 1960 / UTM zone 28N to Mauritania 1999 / UTM zone 28N (1)',NULL,NULL,'EPSG','9624','Affine parametric transformation','EPSG','3367','EPSG','3343','EPSG','2971',40.0,'EPSG','8623','A0',-532.876,'EPSG','9001','EPSG','8624','A1',1.00017216658401,'EPSG','9203','EPSG','8625','A2',9.029305555e-05,'EPSG','9203','EPSG','8639','B0',-34.015,'EPSG','9001','EPSG','8640','B1',-9.029305555e-05,'EPSG','9203','EPSG','8641','B2',1.00017216658401,'EPSG','9203',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15858','IGN Astro 1960 / UTM zone 29N to Mauritania 1999 / UTM zone 29N (1)',NULL,NULL,'EPSG','9624','Affine parametric transformation','EPSG','3368','EPSG','3344','EPSG','2970',40.0,'EPSG','8623','A0',-409.264,'EPSG','9001','EPSG','8624','A1',1.00017432259949,'EPSG','9203','EPSG','8625','A2',9.14562824e-05,'EPSG','9203','EPSG','8639','B0',-88.803,'EPSG','9001','EPSG','8640','B1',-9.14562824e-05,'EPSG','9203','EPSG','8641','B2',1.00017432259949,'EPSG','9203',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15859','IGN Astro 1960 / UTM zone 30N to Mauritania 1999 / UTM zone 30N (1)',NULL,NULL,'EPSG','9624','Affine parametric transformation','EPSG','3369','EPSG','3345','EPSG','2969',40.0,'EPSG','8623','A0',-286.351,'EPSG','9001','EPSG','8624','A1',1.0001754456884,'EPSG','9203','EPSG','8625','A2',9.270672363e-05,'EPSG','9203','EPSG','8639','B0',-146.722,'EPSG','9001','EPSG','8640','B1',-9.270672363e-05,'EPSG','9203','EPSG','8641','B2',1.0001754456884,'EPSG','9203',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15861','IGN Astro 1960 / UTM zone 28N to WGS 84 / UTM zone 28N (1)',NULL,NULL,'EPSG','9624','Affine parametric transformation','EPSG','3367','EPSG','32628','EPSG','2971',40.0,'EPSG','8623','A0',-532.876,'EPSG','9001','EPSG','8624','A1',1.00017216658401,'EPSG','9203','EPSG','8625','A2',9.029305555e-05,'EPSG','9203','EPSG','8639','B0',-34.015,'EPSG','9001','EPSG','8640','B1',-9.029305555e-05,'EPSG','9203','EPSG','8641','B2',1.00017216658401,'EPSG','9203',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15862','IGN Astro 1960 / UTM zone 29N to WGS 84 / UTM zone 29N (1)',NULL,NULL,'EPSG','9624','Affine parametric transformation','EPSG','3368','EPSG','32629','EPSG','2970',1.0,'EPSG','8623','A0',-409.264,'EPSG','9001','EPSG','8624','A1',1.00017432259949,'EPSG','9203','EPSG','8625','A2',9.14562824e-05,'EPSG','9203','EPSG','8639','B0',-88.803,'EPSG','9001','EPSG','8640','B1',-9.14562824e-05,'EPSG','9203','EPSG','8641','B2',1.00017432259949,'EPSG','9203',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "other_transformation" VALUES('EPSG','15863','IGN Astro 1960 / UTM zone 30N to WGS 84 / UTM zone 30N (1)',NULL,NULL,'EPSG','9624','Affine parametric transformation','EPSG','3369','EPSG','32630','EPSG','2969',1.0,'EPSG','8623','A0',-286.351,'EPSG','9001','EPSG','8624','A1',1.0001754456884,'EPSG','9203','EPSG','8625','A2',9.270672363e-05,'EPSG','9203','EPSG','8639','B0',-146.722,'EPSG','9001','EPSG','8640','B1',-9.270672363e-05,'EPSG','9203','EPSG','8641','B2',1.0001754456884,'EPSG','9203',NULL,NULL,NULL,NULL,NULL,NULL,0); diff --git a/data/sql/prime_meridian.sql b/data/sql/prime_meridian.sql new file mode 100644 index 00000000..5fa9a349 --- /dev/null +++ b/data/sql/prime_meridian.sql @@ -0,0 +1,16 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +INSERT INTO "prime_meridian" VALUES('EPSG','8901','Greenwich',0.0,'EPSG','9102',0); +INSERT INTO "prime_meridian" VALUES('EPSG','8902','Lisbon',-9.0754862,'EPSG','9110',0); +INSERT INTO "prime_meridian" VALUES('EPSG','8903','Paris',2.5969213,'EPSG','9105',0); +INSERT INTO "prime_meridian" VALUES('EPSG','8904','Bogota',-74.04513,'EPSG','9110',0); +INSERT INTO "prime_meridian" VALUES('EPSG','8905','Madrid',-3.411658,'EPSG','9110',0); +INSERT INTO "prime_meridian" VALUES('EPSG','8906','Rome',12.27084,'EPSG','9110',0); +INSERT INTO "prime_meridian" VALUES('EPSG','8907','Bern',7.26225,'EPSG','9110',0); +INSERT INTO "prime_meridian" VALUES('EPSG','8908','Jakarta',106.482779,'EPSG','9110',0); +INSERT INTO "prime_meridian" VALUES('EPSG','8909','Ferro',-17.4,'EPSG','9110',0); +INSERT INTO "prime_meridian" VALUES('EPSG','8910','Brussels',4.220471,'EPSG','9110',0); +INSERT INTO "prime_meridian" VALUES('EPSG','8911','Stockholm',18.03298,'EPSG','9110',0); +INSERT INTO "prime_meridian" VALUES('EPSG','8912','Athens',23.4258815,'EPSG','9110',0); +INSERT INTO "prime_meridian" VALUES('EPSG','8913','Oslo',10.43225,'EPSG','9110',0); +INSERT INTO "prime_meridian" VALUES('EPSG','8914','Paris RGS',2.201395,'EPSG','9110',0); diff --git a/data/sql/proj_db_table_defs.sql b/data/sql/proj_db_table_defs.sql new file mode 100644 index 00000000..126ad375 --- /dev/null +++ b/data/sql/proj_db_table_defs.sql @@ -0,0 +1,1044 @@ +--- Table structures + +PRAGMA page_size = 4096; +PRAGMA foreign_keys = 1; + +CREATE TABLE metadata( + key TEXT NOT NULL PRIMARY KEY CHECK (length(key) >= 1), + value TEXT NOT NULL +); + +CREATE TABLE unit_of_measure( + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + name TEXT NOT NULL CHECK (length(name) >= 2), + type TEXT NOT NULL CHECK (type IN ('length', 'angle', 'scale', 'time')), + conv_factor FLOAT, + deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)), + CONSTRAINT pk_unit_of_measure PRIMARY KEY (auth_name, code) +); + +CREATE TABLE celestial_body ( + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + name TEXT NOT NULL CHECK (length(name) >= 2), + semi_major_axis FLOAT NOT NULL CHECK (semi_major_axis > 0), -- approximate (in metre) + CONSTRAINT pk_celestial_body PRIMARY KEY (auth_name, code) +); + +INSERT INTO celestial_body VALUES('PROJ', 'EARTH', 'Earth', 6378137.0); + +CREATE TABLE ellipsoid ( + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + name TEXT NOT NULL CHECK (length(name) >= 2), + description TEXT, + celestial_body_auth_name TEXT NOT NULL, + celestial_body_code TEXT NOT NULL, + semi_major_axis FLOAT NOT NULL CHECK (semi_major_axis > 0), + uom_auth_name TEXT NOT NULL, + uom_code TEXT NOT NULL, + inv_flattening FLOAT CHECK (inv_flattening = 0 OR inv_flattening >= 1.0), + semi_minor_axis FLOAT CHECK (semi_minor_axis > 0 AND semi_minor_axis <= semi_major_axis), + deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)), + CONSTRAINT pk_ellipsoid PRIMARY KEY (auth_name, code), + CONSTRAINT fk_ellipsoid_celestial_body FOREIGN KEY (celestial_body_auth_name, celestial_body_code) REFERENCES celestial_body(auth_name, code), + CONSTRAINT fk_ellipsoid_unit_of_measure FOREIGN KEY (uom_auth_name, uom_code) REFERENCES unit_of_measure(auth_name, code) +); + +CREATE TRIGGER ellipsoid_insert_trigger +BEFORE INSERT ON ellipsoid +FOR EACH ROW BEGIN + SELECT RAISE(ABORT, 'insert on ellipsoid violates constraint: inv_flattening (exclusive) or semi_minor_axis should be defined') + WHERE (NEW.inv_flattening IS NULL AND NEW.semi_minor_axis IS NULL) OR (NEW.inv_flattening IS NOT NULL AND NEW.semi_minor_axis IS NOT NULL); + SELECT RAISE(ABORT, 'insert on ellipsoid violates constraint: uom should be of type ''length''') + WHERE (SELECT type FROM unit_of_measure WHERE auth_name = NEW.uom_auth_name AND code = NEW.uom_code) != 'length'; +END; + +CREATE TABLE area( + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + name TEXT NOT NULL CHECK (length(name) >= 2), + description TEXT NOT NULL, + south_lat FLOAT CHECK (south_lat BETWEEN -90 AND 90), + north_lat FLOAT CHECK (north_lat BETWEEN -90 AND 90), + west_lon FLOAT CHECK (west_lon BETWEEN -180 AND 180), + east_lon FLOAT CHECK (east_lon BETWEEN -180 AND 180), + deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)), + CONSTRAINT pk_area PRIMARY KEY (auth_name, code) +); + +CREATE TRIGGER area_insert_trigger +BEFORE INSERT ON area +FOR EACH ROW BEGIN + SELECT RAISE(ABORT, 'insert on area violates constraint: south_lat <= north_lat') + WHERE NEW.south_lat > NEW.north_lat; + SELECT RAISE(ABORT, 'insert on area violates constraint: west_lon <= east_lon OR (east_lon + 360 - west_lon <= 200)') + WHERE NOT(NEW.west_lon <= NEW.east_lon OR (NEW.east_lon + 360 - NEW.west_lon <= 200)); +END; + +CREATE TABLE prime_meridian( + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + name TEXT NOT NULL CHECK (length(name) >= 2), + longitude FLOAT NOT NULL CHECK (longitude BETWEEN -180 AND 180), + uom_auth_name TEXT NOT NULL, + uom_code TEXT NOT NULL, + deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)), + CONSTRAINT pk_prime_meridian PRIMARY KEY (auth_name, code), + CONSTRAINT fk_prime_meridian_unit_of_measure FOREIGN KEY (uom_auth_name, uom_code) REFERENCES unit_of_measure(auth_name, code) +); + +CREATE TRIGGER prime_meridian_insert_trigger +BEFORE INSERT ON prime_meridian +FOR EACH ROW BEGIN + SELECT RAISE(ABORT, 'insert on prime_meridian violates constraint: uom should be of type ''angle''') + WHERE (SELECT type FROM unit_of_measure WHERE auth_name = NEW.uom_auth_name AND code = NEW.uom_code) != 'angle'; +END; + +CREATE TABLE geodetic_datum ( + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + name TEXT NOT NULL CHECK (length(name) >= 2), + description TEXT, + scope TEXT, + ellipsoid_auth_name TEXT NOT NULL, + ellipsoid_code TEXT NOT NULL, + prime_meridian_auth_name TEXT NOT NULL, + prime_meridian_code TEXT NOT NULL, + area_of_use_auth_name TEXT NOT NULL, + area_of_use_code TEXT NOT NULL, + deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)), + CONSTRAINT pk_geodetic_datum PRIMARY KEY (auth_name, code), + CONSTRAINT fk_geodetic_datum_ellipsoid FOREIGN KEY (ellipsoid_auth_name, ellipsoid_code) REFERENCES ellipsoid(auth_name, code), + CONSTRAINT fk_geodetic_datum_prime_meridian FOREIGN KEY (prime_meridian_auth_name, prime_meridian_code) REFERENCES prime_meridian(auth_name, code), + CONSTRAINT fk_geodetic_datum_area FOREIGN KEY (area_of_use_auth_name, area_of_use_code) REFERENCES area(auth_name, code) +); + +CREATE TABLE vertical_datum ( + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + name TEXT NOT NULL CHECK (length(name) >= 2), + description TEXT, + scope TEXT, + area_of_use_auth_name TEXT NOT NULL, + area_of_use_code TEXT NOT NULL, + deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)), + CONSTRAINT pk_vertical_datum PRIMARY KEY (auth_name, code), + CONSTRAINT fk_vertical_datum_area FOREIGN KEY (area_of_use_auth_name, area_of_use_code) REFERENCES area(auth_name, code) +); + +CREATE TABLE coordinate_system( + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + type TEXT NOT NULL CHECK (type IN ('Cartesian', 'vertical', 'ellipsoidal', 'spherical')), + dimension SMALLINT NOT NULL CHECK (dimension BETWEEN 1 AND 3), + CONSTRAINT pk_coordinate_system PRIMARY KEY (auth_name, code) +); + +CREATE TRIGGER coordinate_system_insert_trigger +BEFORE INSERT ON coordinate_system +FOR EACH ROW BEGIN + SELECT RAISE(ABORT, 'insert on coordinate_system violates constraint: dimension must be equal to 1 for type = ''vertical''') + WHERE NEW.type = 'vertical' AND NEW.dimension != 1; + SELECT RAISE(ABORT, 'insert on coordinate_system violates constraint: dimension must be equal to 2 or 3 for type = ''Cartesian''') + WHERE NEW.type = 'Cartesian' AND NEW.dimension NOT IN (2, 3); + SELECT RAISE(ABORT, 'insert on coordinate_system violates constraint: dimension must be equal to 2 or 3 for type = ''ellipsoidal''') + WHERE NEW.type = 'ellipsoidal' AND NEW.dimension NOT IN (2, 3); +END; + +CREATE TABLE axis( + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + name TEXT NOT NULL CHECK (length(name) >= 2), + abbrev TEXT NOT NULL, + orientation TEXT NOT NULL, + coordinate_system_auth_name TEXT NOT NULL, + coordinate_system_code TEXT NOT NULL, + coordinate_system_order SMALLINT NOT NULL CHECK (coordinate_system_order BETWEEN 1 AND 3), + uom_auth_name TEXT NOT NULL, + uom_code TEXT NOT NULL, + CONSTRAINT pk_axis PRIMARY KEY (auth_name, code), + CONSTRAINT fk_axis_coordinate_system FOREIGN KEY (coordinate_system_auth_name, coordinate_system_code) REFERENCES coordinate_system(auth_name, code), + CONSTRAINT fk_axis_unit_of_measure FOREIGN KEY (uom_auth_name, uom_code) REFERENCES unit_of_measure(auth_name, code) +); + +CREATE TRIGGER axis_insert_trigger +BEFORE INSERT ON axis +FOR EACH ROW BEGIN + SELECT RAISE(ABORT, 'insert on axis violates constraint: coordinate_system_order should be <= coordinate_system.dimension') + WHERE NEW.coordinate_system_order > (SELECT dimension FROM coordinate_system WHERE auth_name = NEW.coordinate_system_auth_name AND code = NEW.coordinate_system_code); +END; + +CREATE TABLE geodetic_crs( + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + name TEXT NOT NULL CHECK (length(name) >= 2), + description TEXT, + scope TEXT, + type TEXT NOT NULL CHECK (type IN ('geographic 2D', 'geographic 3D', 'geocentric')), + coordinate_system_auth_name TEXT, + coordinate_system_code TEXT, + datum_auth_name TEXT, + datum_code TEXT, + area_of_use_auth_name TEXT, + area_of_use_code TEXT, + text_definition TEXT, -- PROJ string or WKT string. Use of this is discouraged as prone to definition ambiguities + deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)), + CONSTRAINT pk_geodetic_crs PRIMARY KEY (auth_name, code), + CONSTRAINT fk_geodetic_crs_coordinate_system FOREIGN KEY (coordinate_system_auth_name, coordinate_system_code) REFERENCES coordinate_system(auth_name, code), + CONSTRAINT fk_geodetic_crs_datum FOREIGN KEY (datum_auth_name, datum_code) REFERENCES geodetic_datum(auth_name, code), + CONSTRAINT fk_geodetic_crs_area FOREIGN KEY (area_of_use_auth_name, area_of_use_code) REFERENCES area(auth_name, code) +); + +CREATE TRIGGER geodetic_crs_insert_trigger +BEFORE INSERT ON geodetic_crs +FOR EACH ROW BEGIN + + SELECT RAISE(ABORT, 'insert on geodetic_crs violates constraint: (auth_name, code) must not already exist in crs_view') + WHERE EXISTS (SELECT 1 FROM crs_view WHERE crs_view.auth_name = NEW.auth_name AND crs_view.code = NEW.code); + + SELECT RAISE(ABORT, 'insert on geodetic_crs violates constraint: coordinate_system must be defined when text_definition is NULL') + WHERE (NEW.coordinate_system_auth_name IS NULL OR NEW.coordinate_system_code IS NULL) AND NEW.text_definition IS NULL; + + SELECT RAISE(ABORT, 'insert on geodetic_crs violates constraint: datum must be defined when text_definition is NULL') + WHERE (NEW.datum_auth_name IS NULL OR NEW.datum_code IS NULL) AND NEW.text_definition IS NULL; + + SELECT RAISE(ABORT, 'insert on geodetic_crs violates constraint: coordinate_system must NOT be defined when text_definition is NOT NULL') + WHERE (NOT(NEW.coordinate_system_auth_name IS NULL OR NEW.coordinate_system_code IS NULL)) AND NEW.text_definition IS NOT NULL; + + SELECT RAISE(ABORT, 'insert on geodetic_crs violates constraint: datum must NOT be defined when text_definition is NOT NULL') + WHERE (NOT(NEW.datum_auth_name IS NULL OR NEW.datum_code IS NULL)) AND NEW.text_definition IS NOT NULL; + + SELECT RAISE(ABORT, 'insert on geodetic_crs violates constraint: area_of_use must be defined when text_definition is NULL') + WHERE (NEW.area_of_use_auth_name IS NULL OR NEW.area_of_use_code IS NULL) AND NEW.text_definition IS NULL; + + SELECT RAISE(ABORT, 'insert on geodetic_crs violates constraint: coordinate_system.dimension must be 3 for type = ''geocentric''') + WHERE NEW.type = 'geocentric' AND (SELECT dimension FROM coordinate_system WHERE coordinate_system.auth_name = NEW.coordinate_system_auth_name AND coordinate_system.code = NEW.coordinate_system_code) != 3; + + SELECT RAISE(ABORT, 'insert on geodetic_crs violates constraint: coordinate_system.type must be ''Cartesian'' for type = ''geocentric''') + WHERE NEW.type = 'geocentric' AND (SELECT type FROM coordinate_system WHERE coordinate_system.auth_name = NEW.coordinate_system_auth_name AND coordinate_system.code = NEW.coordinate_system_code) != 'Cartesian'; + + SELECT RAISE(ABORT, 'insert on geodetic_crs violates constraint: coordinate_system.type must be ''ellipsoidal'' for type = ''geographic 2D'' or ''geographic 3D''') + WHERE NEW.type IN ('geographic 2D', 'geographic 3D') AND (SELECT type FROM coordinate_system WHERE coordinate_system.auth_name = NEW.coordinate_system_auth_name AND coordinate_system.code = NEW.coordinate_system_code) != 'ellipsoidal'; + + SELECT RAISE(ABORT, 'insert on geodetic_crs violates constraint: coordinate_system.dimension must be 2 for type = ''geographic 2D''') + WHERE NEW.type = 'geographic 2D' AND NEW.deprecated != 1 AND (SELECT dimension FROM coordinate_system WHERE coordinate_system.auth_name = NEW.coordinate_system_auth_name AND coordinate_system.code = NEW.coordinate_system_code) != 2; + + SELECT RAISE(ABORT, 'insert on geodetic_crs violates constraint: coordinate_system.dimension must be 3 for type = ''geographic 3D''') + WHERE NEW.type = 'geographic 3D' AND (SELECT dimension FROM coordinate_system WHERE coordinate_system.auth_name = NEW.coordinate_system_auth_name AND coordinate_system.code = NEW.coordinate_system_code) != 3; +END; + +CREATE TABLE vertical_crs( + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + name TEXT NOT NULL CHECK (length(name) >= 2), + description TEXT, + scope TEXT, + coordinate_system_auth_name TEXT NOT NULL, + coordinate_system_code TEXT NOT NULL, + datum_auth_name TEXT NOT NULL, + datum_code TEXT NOT NULL, + area_of_use_auth_name TEXT NOT NULL, + area_of_use_code TEXT NOT NULL, + deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)), + CONSTRAINT pk_vertical_crs PRIMARY KEY (auth_name, code), + CONSTRAINT fk_vertical_crs_coordinate_system FOREIGN KEY (coordinate_system_auth_name, coordinate_system_code) REFERENCES coordinate_system(auth_name, code), + CONSTRAINT fk_vertical_crs_datum FOREIGN KEY (datum_auth_name, datum_code) REFERENCES vertical_datum(auth_name, code), + CONSTRAINT fk_vertical_crs_area FOREIGN KEY (area_of_use_auth_name, area_of_use_code) REFERENCES area(auth_name, code) +); + +CREATE TRIGGER vertical_crs_insert_trigger +BEFORE INSERT ON vertical_crs +FOR EACH ROW BEGIN + + SELECT RAISE(ABORT, 'insert on vertical_crs violates constraint: (auth_name, code) must not already exist in crs_view') + WHERE EXISTS (SELECT 1 FROM crs_view WHERE crs_view.auth_name = NEW.auth_name AND crs_view.code = NEW.code); + + SELECT RAISE(ABORT, 'insert on vertical_crs violates constraint: coordinate_system.type must be ''vertical''') + WHERE (SELECT type FROM coordinate_system WHERE coordinate_system.auth_name = NEW.coordinate_system_auth_name AND coordinate_system.code = NEW.coordinate_system_code) != 'vertical'; + SELECT RAISE(ABORT, 'insert on vertical_crs violates constraint: coordinate_system.dimension must be 1') + WHERE (SELECT dimension FROM coordinate_system WHERE coordinate_system.auth_name = NEW.coordinate_system_auth_name AND coordinate_system.code = NEW.coordinate_system_code) != 1; +END; + + +CREATE TABLE conversion( + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + name TEXT NOT NULL CHECK (length(name) >= 2), + + description TEXT, + scope TEXT, + + area_of_use_auth_name TEXT NOT NULL, + area_of_use_code TEXT NOT NULL, + + method_auth_name TEXT CHECK (method_auth_name IS NULL OR length(method_auth_name) >= 1), + method_code TEXT CHECK (method_code IS NULL OR length(method_code) >= 1), + method_name NOT NULL CHECK (length(method_name) >= 2), + + param1_auth_name TEXT, + param1_code TEXT, + param1_name TEXT, + param1_value FLOAT, + param1_uom_auth_name TEXT, + param1_uom_code TEXT, + + param2_auth_name TEXT, + param2_code TEXT, + param2_name TEXT, + param2_value FLOAT, + param2_uom_auth_name TEXT, + param2_uom_code TEXT, + + param3_auth_name TEXT, + param3_code TEXT, + param3_name TEXT, + param3_value FLOAT, + param3_uom_auth_name TEXT, + param3_uom_code TEXT, + + param4_auth_name TEXT, + param4_code TEXT, + param4_name TEXT, + param4_value FLOAT, + param4_uom_auth_name TEXT, + param4_uom_code TEXT, + + param5_auth_name TEXT, + param5_code TEXT, + param5_name TEXT, + param5_value FLOAT, + param5_uom_auth_name TEXT, + param5_uom_code TEXT, + + param6_auth_name TEXT, + param6_code TEXT, + param6_name TEXT, + param6_value FLOAT, + param6_uom_auth_name TEXT, + param6_uom_code TEXT, + + param7_auth_name TEXT, + param7_code TEXT, + param7_name TEXT, + param7_value FLOAT, + param7_uom_auth_name TEXT, + param7_uom_code TEXT, + + deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)), + + CONSTRAINT pk_conversion PRIMARY KEY (auth_name, code), + CONSTRAINT fk_conversion_area FOREIGN KEY (area_of_use_auth_name, area_of_use_code) REFERENCES area(auth_name, code), + --CONSTRAINT fk_conversion_coordinate_operation FOREIGN KEY (auth_name, code) REFERENCES coordinate_operation(auth_name, code), + CONSTRAINT fk_conversion_param1_uom FOREIGN KEY (param1_uom_auth_name, param1_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_conversion_param2_uom FOREIGN KEY (param2_uom_auth_name, param2_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_conversion_param3_uom FOREIGN KEY (param3_uom_auth_name, param3_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_conversion_param4_uom FOREIGN KEY (param4_uom_auth_name, param4_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_conversion_param5_uom FOREIGN KEY (param5_uom_auth_name, param5_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_conversion_param6_uom FOREIGN KEY (param6_uom_auth_name, param6_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_conversion_param7_uom FOREIGN KEY (param7_uom_auth_name, param7_uom_code) REFERENCES unit_of_measure(auth_name, code) +); + +CREATE TRIGGER conversion_insert_trigger +BEFORE INSERT ON conversion +FOR EACH ROW BEGIN + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: (auth_name, code) must not already exist in coordinate_operation_with_conversion_view') + WHERE EXISTS (SELECT 1 FROM coordinate_operation_with_conversion_view covwv WHERE covwv.auth_name = NEW.auth_name AND covwv.code = NEW.code); + + SELECT RAISE(ABORT, 'insert on conversion violates constraint: method should be known') + WHERE ((CASE WHEN NEW.method_auth_name is NULL THEN '' ELSE NEW.method_auth_name END) || '_' || (CASE WHEN NEW.method_code is NULL THEN '' ELSE NEW.method_code END) || '_' || NEW.method_name) NOT IN ( + 'EPSG_1024_Popular Visualisation Pseudo Mercator', + 'EPSG_1027_Lambert Azimuthal Equal Area (Spherical)', + 'EPSG_1028_Equidistant Cylindrical', + 'EPSG_1029_Equidistant Cylindrical (Spherical)', + 'EPSG_1041_Krovak (North Orientated)', + 'EPSG_1042_Krovak Modified', + 'EPSG_1043_Krovak Modified (North Orientated)', + 'EPSG_1051_Lambert Conic Conformal (2SP Michigan)', + 'EPSG_1052_Colombia Urban', + 'EPSG_1068_Height Depth Reversal', + 'EPSG_1069_Change of Vertical Unit', + 'EPSG_1078_Equal Earth', + 'EPSG_9602_Geographic/geocentric conversions', + 'EPSG_9659_Geographic3D to 2D conversion', + 'EPSG_9801_Lambert Conic Conformal (1SP)', + 'EPSG_9802_Lambert Conic Conformal (2SP)', + 'EPSG_9803_Lambert Conic Conformal (2SP Belgium)', + 'EPSG_9804_Mercator (variant A)', + 'EPSG_9805_Mercator (variant B)', + 'EPSG_9806_Cassini-Soldner', + 'EPSG_9807_Transverse Mercator', + 'EPSG_9808_Transverse Mercator (South Orientated)', + 'EPSG_9809_Oblique Stereographic', + 'EPSG_9810_Polar Stereographic (variant A)', + 'EPSG_9811_New Zealand Map Grid', + 'EPSG_9812_Hotine Oblique Mercator (variant A)', + 'EPSG_9813_Laborde Oblique Mercator', + 'EPSG_9815_Hotine Oblique Mercator (variant B)', + 'EPSG_9816_Tunisia Mining Grid', + 'EPSG_9817_Lambert Conic Near-Conformal', + 'EPSG_9818_American Polyconic', + 'EPSG_9819_Krovak', + 'EPSG_9820_Lambert Azimuthal Equal Area', + 'EPSG_9821_Lambert Azimuthal Equal Area (Spherical)', + 'EPSG_9822_Albers Equal Area', + 'EPSG_9823_Equidistant Cylindrical (Spherical)', + 'EPSG_9824_Transverse Mercator Zoned Grid System', + 'EPSG_9826_Lambert Conic Conformal (West Orientated)', + 'EPSG_9828_Bonne (South Orientated)', + 'EPSG_9829_Polar Stereographic (variant B)', + 'EPSG_9830_Polar Stereographic (variant C)', + 'EPSG_9831_Guam Projection', + 'EPSG_9832_Modified Azimuthal Equidistant', + 'EPSG_9833_Hyperbolic Cassini-Soldner', + 'EPSG_9834_Lambert Cylindrical Equal Area (Spherical)', + 'EPSG_9835_Lambert Cylindrical Equal Area', + 'EPSG_9836_Geocentric/topocentric conversions', + 'EPSG_9837_Geographic/topocentric conversions', + 'EPSG_9838_Vertical Perspective', + 'EPSG_9841_Mercator (1SP) (Spherical)', + 'EPSG_9842_Equidistant Cylindrical', + 'EPSG_9843_Axis Order Reversal (2D)', + 'EPSG_9844_Axis Order Reversal (Geographic3D horizontal)', + 'EPSG_9827_Bonne', + '__Gauss Schreiber Transverse Mercator', + '__PROJ mill'); +END; + +CREATE TABLE projected_crs( + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + name TEXT NOT NULL CHECK (length(name) >= 2), + description TEXT, + scope TEXT, + coordinate_system_auth_name TEXT, + coordinate_system_code TEXT, + geodetic_crs_auth_name TEXT, + geodetic_crs_code TEXT, + conversion_auth_name TEXT, + conversion_code TEXT, + area_of_use_auth_name TEXT, + area_of_use_code TEXT, + text_definition TEXT, -- PROJ string or WKT string. Use of this is discouraged as prone to definition ambiguities + deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)), + CONSTRAINT pk_projected_crs PRIMARY KEY (auth_name, code), + CONSTRAINT fk_projected_crs_coordinate_system FOREIGN KEY (coordinate_system_auth_name, coordinate_system_code) REFERENCES coordinate_system(auth_name, code), + CONSTRAINT fk_projected_crs_geodetic_crs FOREIGN KEY (geodetic_crs_auth_name, geodetic_crs_code) REFERENCES geodetic_crs(auth_name, code), + CONSTRAINT fk_projected_crs_conversion FOREIGN KEY (conversion_auth_name, conversion_code) REFERENCES conversion(auth_name, code), + CONSTRAINT fk_projected_crs_area FOREIGN KEY (area_of_use_auth_name, area_of_use_code) REFERENCES area(auth_name, code) +); + +CREATE TRIGGER projected_crs_insert_trigger +BEFORE INSERT ON projected_crs +FOR EACH ROW BEGIN + + SELECT RAISE(ABORT, 'insert on projected_crs violates constraint: (auth_name, code) must not already exist in crs_view') + WHERE EXISTS (SELECT 1 FROM crs_view WHERE crs_view.auth_name = NEW.auth_name AND crs_view.code = NEW.code); + + SELECT RAISE(ABORT, 'insert on projected_crs violates constraint: coordinate_system must be defined when text_definition is NULL') + WHERE (NEW.coordinate_system_auth_name IS NULL OR NEW.coordinate_system_code IS NULL) AND NEW.text_definition IS NULL; + + SELECT RAISE(ABORT, 'insert on projected_crs violates constraint: geodetic_crs must be defined when text_definition is NULL') + WHERE (NEW.geodetic_crs_auth_name IS NULL OR NEW.geodetic_crs_code IS NULL) AND NEW.text_definition IS NULL; + + SELECT RAISE(ABORT, 'insert on projected_crs violates constraint: conversion must be defined when text_definition is NULL') + WHERE (NEW.conversion_auth_name IS NULL OR NEW.conversion_code IS NULL) AND NEW.text_definition IS NULL; + + SELECT RAISE(ABORT, 'insert on projected_crs violates constraint: coordinate_system must NOT be defined when text_definition is NOT NULL') + WHERE (NOT(NEW.coordinate_system_auth_name IS NULL OR NEW.coordinate_system_code IS NULL)) AND NEW.text_definition IS NOT NULL; + + --SELECT RAISE(ABORT, 'insert on projected_crs violates constraint: geodetic_crs must NOT be defined when text_definition is NOT NULL') + -- WHERE (NOT(NEW.geodetic_crs_auth_name IS NULL OR NEW.geodetic_crs_code IS NULL)) AND NEW.text_definition IS NOT NULL; + + SELECT RAISE(ABORT, 'insert on projected_crs violates constraint: conversion must NOT be defined when text_definition is NULL') + WHERE (NOT(NEW.conversion_auth_name IS NULL OR NEW.conversion_code IS NULL)) AND NEW.text_definition IS NOT NULL; + + SELECT RAISE(ABORT, 'insert on projected_crs violates constraint: area_of_use must be defined when text_definition is NULL') + WHERE (NEW.area_of_use_auth_name IS NULL OR NEW.area_of_use_code IS NULL) AND NEW.text_definition IS NULL; + + SELECT RAISE(ABORT, 'insert on projected_crs violates constraint: coordinate_system.type must be ''cartesian''') + WHERE (SELECT type FROM coordinate_system WHERE coordinate_system.auth_name = NEW.coordinate_system_auth_name AND coordinate_system.code = NEW.coordinate_system_code) != 'Cartesian'; + + SELECT RAISE(ABORT, 'insert on projected_crs violates constraint: coordinate_system.dimension must be 2') + -- EPSG:4461 is topocentric + WHERE NOT(NEW.coordinate_system_auth_name = 'EPSG' AND NEW.coordinate_system_code = '4461') AND (SELECT dimension FROM coordinate_system WHERE coordinate_system.auth_name = NEW.coordinate_system_auth_name AND coordinate_system.code = NEW.coordinate_system_code) != 2; +END; + +CREATE TABLE compound_crs( + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + name TEXT NOT NULL CHECK (length(name) >= 2), + description TEXT, + scope TEXT, + horiz_crs_auth_name TEXT NOT NULL, + horiz_crs_code TEXT NOT NULL, + vertical_crs_auth_name TEXT NOT NULL, + vertical_crs_code TEXT NOT NULL, + area_of_use_auth_name TEXT NOT NULL, + area_of_use_code TEXT NOT NULL, + deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)), + CONSTRAINT pk_compound_crs PRIMARY KEY (auth_name, code), + CONSTRAINT fk_compound_crs_vertical_crs FOREIGN KEY (vertical_crs_auth_name, vertical_crs_code) REFERENCES vertical_crs(auth_name, code), + CONSTRAINT fk_compoundcrs_area FOREIGN KEY (area_of_use_auth_name, area_of_use_code) REFERENCES area(auth_name, code) +); + +CREATE TRIGGER compound_crs_insert_trigger +BEFORE INSERT ON compound_crs +FOR EACH ROW BEGIN + + SELECT RAISE(ABORT, 'insert on compound_crs violates constraint: (auth_name, code) must not already exist in crs_view') + WHERE EXISTS (SELECT 1 FROM crs_view WHERE crs_view.auth_name = NEW.auth_name AND crs_view.code = NEW.code); + + SELECT RAISE(ABORT, 'insert on compound_crs violates constraint: horiz_crs(auth_name, code) not found') + WHERE NOT EXISTS (SELECT 1 FROM crs_view WHERE crs_view.auth_name = NEW.horiz_crs_auth_name AND crs_view.code = NEW.horiz_crs_code); + + SELECT RAISE(ABORT, 'insert on compound_crs violates constraint: horiz_crs must be equal to ''geographic 2D'' or ''projected''') + WHERE (SELECT type FROM crs_view WHERE crs_view.auth_name = NEW.horiz_crs_auth_name AND crs_view.code = NEW.horiz_crs_code) NOT IN ('geographic 2D', 'projected'); + + SELECT RAISE(ABORT, 'insert on compound_crs violates constraint: vertical_crs must be equal to ''vertical''') + WHERE (SELECT type FROM crs_view WHERE crs_view.auth_name = NEW.vertical_crs_auth_name AND crs_view.code = NEW.vertical_crs_code) NOT IN ('vertical'); +END; + +CREATE TABLE helmert_transformation( + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + name TEXT NOT NULL CHECK (length(name) >= 2), + + description TEXT, + scope TEXT, + + method_auth_name TEXT NOT NULL CHECK (length(method_auth_name) >= 1), + method_code TEXT NOT NULL CHECK (length(method_code) >= 1), + method_name NOT NULL CHECK (length(method_name) >= 2), + + source_crs_auth_name TEXT NOT NULL, + source_crs_code TEXT NOT NULL, + target_crs_auth_name TEXT NOT NULL, + target_crs_code TEXT NOT NULL, + + area_of_use_auth_name TEXT NOT NULL, + area_of_use_code TEXT NOT NULL, + + accuracy FLOAT CHECK (accuracy >= 0), + + tx FLOAT NOT NULL, + ty FLOAT NOT NULL, + tz FLOAT NOT NULL, + translation_uom_auth_name TEXT NOT NULL, + translation_uom_code TEXT NOT NULL, + rx FLOAT, + ry FLOAT, + rz FLOAT, + rotation_uom_auth_name TEXT, + rotation_uom_code TEXT, + scale_difference FLOAT, + scale_difference_uom_auth_name TEXT, + scale_difference_uom_code TEXT, + rate_tx FLOAT, + rate_ty FLOAT, + rate_tz FLOAT, + rate_translation_uom_auth_name TEXT, + rate_translation_uom_code TEXT, + rate_rx FLOAT, + rate_ry FLOAT, + rate_rz FLOAT, + rate_rotation_uom_auth_name TEXT, + rate_rotation_uom_code TEXT, + rate_scale_difference FLOAT, + rate_scale_difference_uom_auth_name TEXT, + rate_scale_difference_uom_code TEXT, + epoch FLOAT, + epoch_uom_auth_name TEXT, + epoch_uom_code TEXT, + px FLOAT, -- Pivot / evaluation point for Molodensky-Badekas + py FLOAT, + pz FLOAT, + pivot_uom_auth_name TEXT, + pivot_uom_code TEXT, + + deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)), + + CONSTRAINT pk_helmert_transformation PRIMARY KEY (auth_name, code), + CONSTRAINT fk_helmert_transformation_source_crs FOREIGN KEY (source_crs_auth_name, source_crs_code) REFERENCES geodetic_crs(auth_name, code), + CONSTRAINT fk_helmert_transformation_target_crs FOREIGN KEY (target_crs_auth_name, target_crs_code) REFERENCES geodetic_crs(auth_name, code), + CONSTRAINT fk_helmert_transformation_area FOREIGN KEY (area_of_use_auth_name, area_of_use_code) REFERENCES area(auth_name, code), + --CONSTRAINT fk_helmert_transformation_coordinate_operation FOREIGN KEY (auth_name, code) REFERENCES coordinate_operation(auth_name, code), + CONSTRAINT fk_helmert_translation_uom FOREIGN KEY (translation_uom_auth_name, translation_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_helmert_rotation_uom FOREIGN KEY (rotation_uom_auth_name, rotation_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_helmert_scale_difference_uom FOREIGN KEY (scale_difference_uom_auth_name, scale_difference_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_helmert_rate_translation_uom FOREIGN KEY (rate_translation_uom_auth_name, rate_translation_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_helmert_rate_rotation_uom FOREIGN KEY (rate_rotation_uom_auth_name, rate_rotation_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_helmert_rate_scale_difference_uom FOREIGN KEY (rate_scale_difference_uom_auth_name, rate_scale_difference_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_helmert_epoch_uom FOREIGN KEY (epoch_uom_auth_name, epoch_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_helmert_pivot_uom FOREIGN KEY (pivot_uom_auth_name, pivot_uom_code) REFERENCES unit_of_measure(auth_name, code) +); + +CREATE TRIGGER helmert_transformation_insert_trigger +BEFORE INSERT ON helmert_transformation +FOR EACH ROW BEGIN + SELECT RAISE(ABORT, 'insert on helmert_transformation violates constraint: (auth_name, code) must not already exist in coordinate_operation_with_conversion_view') + WHERE EXISTS (SELECT 1 FROM coordinate_operation_with_conversion_view covwv WHERE covwv.auth_name = NEW.auth_name AND covwv.code = NEW.code); + + SELECT RAISE(ABORT, 'insert on helmert_transformation violates constraint: translation_uom.type must be ''length''') + WHERE (SELECT type FROM unit_of_measure WHERE unit_of_measure.auth_name = NEW.translation_uom_auth_name AND unit_of_measure.code = NEW.translation_uom_code) != 'length'; + SELECT RAISE(ABORT, 'insert on helmert_transformation violates constraint: rotation_uom.type must be ''angle''') + WHERE (SELECT type FROM unit_of_measure WHERE unit_of_measure.auth_name = NEW.rotation_uom_auth_name AND unit_of_measure.code = NEW.rotation_uom_code) != 'angle'; + SELECT RAISE(ABORT, 'insert on helmert_transformation violates constraint: scale_difference_uom.type must be ''scale''') + WHERE (SELECT type FROM unit_of_measure WHERE unit_of_measure.auth_name = NEW.scale_difference_uom_auth_name AND unit_of_measure.code = NEW.scale_difference_uom_code) != 'scale'; + SELECT RAISE(ABORT, 'insert on helmert_transformation violates constraint: rate_translation_uom.type must be ''length''') + WHERE (SELECT type FROM unit_of_measure WHERE unit_of_measure.auth_name = NEW.rate_translation_uom_auth_name AND unit_of_measure.code = NEW.rate_translation_uom_code) != 'length'; + SELECT RAISE(ABORT, 'insert on helmert_transformation violates constraint: rate_rotation_uom.type must be ''angle''') + WHERE (SELECT type FROM unit_of_measure WHERE unit_of_measure.auth_name = NEW.rate_rotation_uom_auth_name AND unit_of_measure.code = NEW.rate_rotation_uom_code) != 'angle'; + SELECT RAISE(ABORT, 'insert on helmert_transformation violates constraint: rate_scale_difference_uom.type must be ''scale''') + WHERE (SELECT type FROM unit_of_measure WHERE unit_of_measure.auth_name = NEW.rate_scale_difference_uom_auth_name AND unit_of_measure.code = NEW.rate_scale_difference_uom_code) != 'scale'; + SELECT RAISE(ABORT, 'insert on helmert_transformation violates constraint: epoch_uom.type must be ''time''') + WHERE (SELECT type FROM unit_of_measure WHERE unit_of_measure.auth_name = NEW.epoch_uom_auth_name AND unit_of_measure.code = NEW.epoch_uom_code) != 'time'; + SELECT RAISE(ABORT, 'insert on helmert_transformation violates constraint: pivot_uom.type must be ''length''') + WHERE (SELECT type FROM unit_of_measure WHERE unit_of_measure.auth_name = NEW.pivot_uom_auth_name AND unit_of_measure.code = NEW.pivot_uom_code) != 'length'; +END; + +CREATE TABLE grid_transformation( + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + name TEXT NOT NULL CHECK (length(name) >= 2), + + description TEXT, + scope TEXT, + + method_auth_name TEXT NOT NULL CHECK (length(method_auth_name) >= 1), + method_code TEXT NOT NULL CHECK (length(method_code) >= 1), + method_name NOT NULL CHECK (length(method_name) >= 2), + + source_crs_auth_name TEXT NOT NULL, + source_crs_code TEXT NOT NULL, + target_crs_auth_name TEXT NOT NULL, + target_crs_code TEXT NOT NULL, + + area_of_use_auth_name TEXT NOT NULL, + area_of_use_code TEXT NOT NULL, + + accuracy FLOAT CHECK (accuracy >= 0), + + grid_param_auth_name TEXT NOT NULL, + grid_param_code TEXT NOT NULL, + grid_param_name TEXT NOT NULL, + grid_name TEXT NOT NULL, + + grid2_param_auth_name TEXT, + grid2_param_code TEXT, + grid2_param_name TEXT, + grid2_name TEXT, + + interpolation_crs_auth_name TEXT, + interpolation_crs_code TEXT, + + deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)), + + CONSTRAINT pk_grid_transformation PRIMARY KEY (auth_name, code), + --CONSTRAINT fk_grid_transformation_coordinate_operation FOREIGN KEY (auth_name, code) REFERENCES coordinate_operation(auth_name, code), + --CONSTRAINT fk_grid_transformation_source_crs FOREIGN KEY (source_crs_auth_name, source_crs_code) REFERENCES crs(auth_name, code), + --CONSTRAINT fk_grid_transformation_target_crs FOREIGN KEY (target_crs_auth_name, target_crs_code) REFERENCES crs(auth_name, code), + CONSTRAINT fk_grid_transformation_interpolation_crs FOREIGN KEY (interpolation_crs_auth_name, interpolation_crs_code) REFERENCES geodetic_crs(auth_name, code), + CONSTRAINT fk_grid_transformation_transformation_area FOREIGN KEY (area_of_use_auth_name, area_of_use_code) REFERENCES area(auth_name, code) +); + +CREATE TRIGGER grid_transformation_insert_trigger +BEFORE INSERT ON grid_transformation +FOR EACH ROW BEGIN + SELECT RAISE(ABORT, 'insert on grid_transformation violates constraint: (auth_name, code) must not already exist in coordinate_operation_with_conversion_view') + WHERE EXISTS (SELECT 1 FROM coordinate_operation_with_conversion_view covwv WHERE covwv.auth_name = NEW.auth_name AND covwv.code = NEW.code); + + SELECT RAISE(ABORT, 'insert on grid_transformation violates constraint: source_crs(auth_name, code) not found') + WHERE NOT EXISTS (SELECT 1 FROM crs_view WHERE crs_view.auth_name = NEW.source_crs_auth_name AND crs_view.code = NEW.source_crs_code); + + SELECT RAISE(ABORT, 'insert on grid_transformation violates constraint: target_crs(auth_name, code) not found') + WHERE NOT EXISTS (SELECT 1 FROM crs_view WHERE crs_view.auth_name = NEW.target_crs_auth_name AND crs_view.code = NEW.target_crs_code); + +END; + +-- Table that describe packages/archives that contain several grids +CREATE TABLE grid_packages( + package_name TEXT NOT NULL NULL PRIMARY KEY, -- package name that contains the file + description TEXT, + url TEXT, -- optional URL where to download the PROJ grid + direct_download BOOLEAN CHECK (direct_download IN (0, 1)), -- whether the URL can be used directly (if 0, authentication etc mightbe needed) + open_license BOOLEAN CHECK (open_license IN (0, 1)) +); + +CREATE TRIGGER grid_packages_insert_trigger +BEFORE INSERT ON grid_packages +FOR EACH ROW BEGIN + SELECT RAISE(ABORT, 'insert on grid_packages violates constraint: open_license must be set when url is not NULL') + WHERE NEW.open_license IS NULL AND NEW.url IS NOT NULL; + SELECT RAISE(ABORT, 'insert on grid_packages violates constraint: direct_download must be set when url is not NULL') + WHERE NEW.direct_download IS NULL AND NEW.url IS NOT NULL; +END; + +-- Table that contain alternative names for original grid names coming from the authority +CREATE TABLE grid_alternatives( + original_grid_name TEXT NOT NULL PRIMARY KEY, -- original grid name (e.g. Und_min2.5x2.5_egm2008_isw=82_WGS84_TideFree.gz). For LOS/LAS format, the .las files + proj_grid_name TEXT NOT NULL, -- PROJ grid name (e.g egm08_25.gtx) + proj_grid_format TEXT NOT NULL, -- one of 'CTable2', 'NTv1', 'NTv2', 'GTX' + proj_method TEXT NOT NULL, -- hgridshift or vgridshift + inverse_direction BOOLEAN NOT NULL CHECK (inverse_direction IN (0, 1)), -- whether the PROJ grid direction is reversed w.r.t to the authority one (TRUE in that case) + package_name TEXT, -- package name that contains the file + url TEXT, -- optional URL where to download the PROJ grid + direct_download BOOLEAN CHECK (direct_download IN (0, 1)), -- whether the URL can be used directly (if 0, authentication etc might be needed) + open_license BOOLEAN CHECK (open_license IN (0, 1)), + directory TEXT, -- optional directory where the file might be located + + CONSTRAINT fk_grid_alternatives_grid_packages FOREIGN KEY (package_name) REFERENCES grid_packages(package_name) +); + +CREATE TRIGGER grid_alternatives_insert_trigger +BEFORE INSERT ON grid_alternatives +FOR EACH ROW BEGIN + SELECT RAISE(ABORT, 'insert on grid_alternatives violates constraint: proj_grid_format must be one of ''CTable2'', ''NTv1'', ''NTv2'', ''GTX''') + WHERE NEW.proj_grid_format NOT IN ('CTable2', 'NTv1', 'NTv2', 'GTX'); + SELECT RAISE(ABORT, 'insert on grid_alternatives violates constraint: proj_method must be one of ''hgridshift'', ''vgridshift''') + WHERE NEW.proj_method NOT IN ('hgridshift', 'vgridshift'); + SELECT RAISE(ABORT, 'insert on grid_alternatives violates constraint: proj_method must be ''hgridshift'' when proj_grid_format is ''CTable2'', ''NTv1'', ''NTv2''') + WHERE NEW.proj_method != 'hgridshift' AND NEW.proj_grid_format IN ('CTable2', 'NTv1', 'NTv2'); + SELECT RAISE(ABORT, 'insert on grid_alternatives violates constraint: proj_method must be ''vridshift'' when proj_grid_format is ''GTX''') + WHERE NEW.proj_method != 'vgridshift' AND NEW.proj_grid_format IN ('GTX'); + SELECT RAISE(ABORT, 'insert on grid_alternatives violates constraint: original_grid_name must be referenced in grid_transformation.grid_name') + WHERE NEW.original_grid_name NOT IN ('null') AND NEW.original_grid_name NOT IN (SELECT grid_name FROM grid_transformation); + SELECT RAISE(ABORT, 'insert on grid_alternatives violates constraint: NEW.inverse_direction must be 0 when original_grid_name = proj_grid_name') + WHERE NEW.original_grid_name = NEW.proj_grid_name AND NEW.inverse_direction != 0; + SELECT RAISE(ABORT, 'insert on grid_alternatives violates constraint: package_name must be NULL when url is not NULL') + WHERE NEW.package_name IS NOT NULL AND NEW.url IS NOT NULL; + SELECT RAISE(ABORT, 'insert on grid_alternatives violates constraint: direct_download must be set when url is not NULL') + WHERE NEW.direct_download IS NULL AND NEW.url IS NOT NULL; + SELECT RAISE(ABORT, 'insert on grid_alternatives violates constraint: open_license must be set when url is not NULL') + WHERE NEW.open_license IS NULL AND NEW.url IS NOT NULL; +END; + +CREATE TABLE other_transformation( + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + name TEXT NOT NULL CHECK (length(name) >= 2), + + description TEXT, + scope TEXT, + + -- if method_auth_name = 'PROJ', method_code can be 'PROJString' for a + -- PROJ string and then method_name is a PROJ string (typically a pipeline) + -- if method_auth_name = 'PROJ', method_code can be 'WKT' for a + -- PROJ string and then method_name is a WKT string (CoordinateOperation) + method_auth_name TEXT NOT NULL CHECK (length(method_auth_name) >= 1), + method_code TEXT NOT NULL CHECK (length(method_code) >= 1), + method_name NOT NULL CHECK (length(method_name) >= 2), + + source_crs_auth_name TEXT NOT NULL, + source_crs_code TEXT NOT NULL, + target_crs_auth_name TEXT NOT NULL, + target_crs_code TEXT NOT NULL, + + area_of_use_auth_name TEXT NOT NULL, + area_of_use_code TEXT NOT NULL, + + accuracy FLOAT CHECK (accuracy >= 0), + + param1_auth_name TEXT, + param1_code TEXT, + param1_name TEXT, + param1_value FLOAT, + param1_uom_auth_name TEXT, + param1_uom_code TEXT, + + param2_auth_name TEXT, + param2_code TEXT, + param2_name TEXT, + param2_value FLOAT, + param2_uom_auth_name TEXT, + param2_uom_code TEXT, + + param3_auth_name TEXT, + param3_code TEXT, + param3_name TEXT, + param3_value FLOAT, + param3_uom_auth_name TEXT, + param3_uom_code TEXT, + + param4_auth_name TEXT, + param4_code TEXT, + param4_name TEXT, + param4_value FLOAT, + param4_uom_auth_name TEXT, + param4_uom_code TEXT, + + param5_auth_name TEXT, + param5_code TEXT, + param5_name TEXT, + param5_value FLOAT, + param5_uom_auth_name TEXT, + param5_uom_code TEXT, + + param6_auth_name TEXT, + param6_code TEXT, + param6_name TEXT, + param6_value FLOAT, + param6_uom_auth_name TEXT, + param6_uom_code TEXT, + + param7_auth_name TEXT, + param7_code TEXT, + param7_name TEXT, + param7_value FLOAT, + param7_uom_auth_name TEXT, + param7_uom_code TEXT, + + deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)), + + CONSTRAINT pk_other_transformation PRIMARY KEY (auth_name, code), + --CONSTRAINT fk_other_transformation_coordinate_operation FOREIGN KEY (auth_name, code) REFERENCES coordinate_operation(auth_name, code), + --CONSTRAINT fk_other_transformation_source_crs FOREIGN1 KEY (source_crs_auth_name, source_crs_code) REFERENCES crs(auth_name, code), + --CONSTRAINT fk_other_transformation_target_crs FOREIGN KEY (target_crs_auth_name, target_crs_code) REFERENCES crs(auth_name, code), + CONSTRAINT fk_other_transformation_area FOREIGN KEY (area_of_use_auth_name, area_of_use_code) REFERENCES area(auth_name, code) + CONSTRAINT fk_other_transformation_param1_uom FOREIGN KEY (param1_uom_auth_name, param1_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_other_transformation_param2_uom FOREIGN KEY (param2_uom_auth_name, param2_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_other_transformation_param3_uom FOREIGN KEY (param3_uom_auth_name, param3_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_other_transformation_param4_uom FOREIGN KEY (param4_uom_auth_name, param4_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_other_transformation_param5_uom FOREIGN KEY (param5_uom_auth_name, param5_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_other_transformation_param6_uom FOREIGN KEY (param6_uom_auth_name, param6_uom_code) REFERENCES unit_of_measure(auth_name, code), + CONSTRAINT fk_other_transformation_param7_uom FOREIGN KEY (param7_uom_auth_name, param7_uom_code) REFERENCES unit_of_measure(auth_name, code) +); + +CREATE TRIGGER other_transformation_insert_trigger +BEFORE INSERT ON other_transformation +FOR EACH ROW BEGIN + SELECT RAISE(ABORT, 'insert on other_transformation violates constraint: (auth_name, code) must not already exist in coordinate_operation_with_conversion_view') + WHERE EXISTS (SELECT 1 FROM coordinate_operation_with_conversion_view covwv WHERE covwv.auth_name = NEW.auth_name AND covwv.code = NEW.code); + + SELECT RAISE(ABORT, 'insert on other_transformation violates constraint: source_crs(auth_name, code) not found') + WHERE NOT EXISTS (SELECT 1 FROM crs_view WHERE crs_view.auth_name = NEW.source_crs_auth_name AND crs_view.code = NEW.source_crs_code); + + SELECT RAISE(ABORT, 'insert on other_transformation violates constraint: target_crs(auth_name, code) not found') + WHERE NOT EXISTS (SELECT 1 FROM crs_view WHERE crs_view.auth_name = NEW.target_crs_auth_name AND crs_view.code = NEW.target_crs_code); + + SELECT RAISE(ABORT, 'insert on other_transformation violates constraint: method_code should be in (PROJString, WKT) when method_auth_name = PROJ') + WHERE NEW.method_auth_name = 'PROJ' AND NEW.method_code NOT IN ('PROJString', 'WKT'); + +END; + +-- Note: in EPSG, the steps might be to be chained in reverse order, so we cannot +-- enforce that source_crs_code == step1.source_crs_code etc +CREATE TABLE concatenated_operation( + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + name TEXT NOT NULL CHECK (length(name) >= 2), + + description TEXT, + scope TEXT, + + source_crs_auth_name TEXT NOT NULL, + source_crs_code TEXT NOT NULL, + target_crs_auth_name TEXT NOT NULL, + target_crs_code TEXT NOT NULL, + + area_of_use_auth_name TEXT NOT NULL, + area_of_use_code TEXT NOT NULL, + + accuracy FLOAT CHECK (accuracy >= 0), + + step1_auth_name TEXT NOT NULL, + step1_code TEXT NOT NULL, + + step2_auth_name TEXT NOT NULL, + step2_code TEXT NOT NULL, + + step3_auth_name TEXT, + step3_code TEXT, + + deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)), + + CONSTRAINT pk_concatenated_operation PRIMARY KEY (auth_name, code), + --CONSTRAINT fk_concatenated_operation_coordinate_operation FOREIGN KEY (auth_name, code) REFERENCES coordinate_operation(auth_name, code), + --CONSTRAINT fk_concatenated_operation_source_crs FOREIGN KEY (source_crs_auth_name, source_crs_code) REFERENCES crs(auth_name, code), + --CONSTRAINT fk_concatenated_operation_target_crs FOREIGN KEY (target_crs_auth_name, target_crs_code) REFERENCES crs(auth_name, code), + --CONSTRAINT fk_concatenated_operation_step1 FOREIGN KEY (step1_auth_name, step1_code) REFERENCES coordinate_operation(auth_name, code), + --CONSTRAINT fk_concatenated_operation_step2 FOREIGN KEY (step2_auth_name, step2_code) REFERENCES coordinate_operation(auth_name, code), + --CONSTRAINT fk_concatenated_operation_step3 FOREIGN KEY (step3_auth_name, step3_code) REFERENCES coordinate_operation(auth_name, code), + CONSTRAINT fk_concatenated_operation_transformation_area FOREIGN KEY (area_of_use_auth_name, area_of_use_code) REFERENCES area(auth_name, code) +); + +CREATE TRIGGER concatenated_operation_insert_trigger +BEFORE INSERT ON concatenated_operation +FOR EACH ROW BEGIN + + SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: (auth_name, code) must not already exist in coordinate_operation_with_conversion_view') + WHERE EXISTS (SELECT 1 FROM coordinate_operation_with_conversion_view covwv WHERE covwv.auth_name = NEW.auth_name AND covwv.code = NEW.code); + + SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: step1(auth_name, code) must already exist in coordinate_operation_with_conversion_view') + WHERE NOT EXISTS (SELECT 1 FROM coordinate_operation_with_conversion_view covwv WHERE covwv.auth_name = NEW.step1_auth_name AND covwv.code = NEW.step1_code); + + SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: step2(auth_name, code) must already exist in coordinate_operation_with_conversion_view') + WHERE NOT EXISTS (SELECT 1 FROM coordinate_operation_with_conversion_view covwv WHERE covwv.auth_name = NEW.step2_auth_name AND covwv.code = NEW.step2_code); + + SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: step3(auth_name, code) must already exist in coordinate_operation_with_conversion_view') + WHERE NEW.step3_auth_name IS NOT NULL AND NOT EXISTS (SELECT 1 FROM coordinate_operation_with_conversion_view covwv WHERE covwv.auth_name = NEW.step3_auth_name AND covwv.code = NEW.step3_code); + + SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: source_crs(auth_name, code) not found') + WHERE NOT EXISTS (SELECT 1 FROM crs_view WHERE crs_view.auth_name = NEW.source_crs_auth_name AND crs_view.code = NEW.source_crs_code); + + SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: target_crs(auth_name, code) not found') + WHERE NOT EXISTS (SELECT 1 FROM crs_view WHERE crs_view.auth_name = NEW.target_crs_auth_name AND crs_view.code = NEW.target_crs_code); + + SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: step1 should not be a concatenated_operation') + WHERE EXISTS(SELECT 1 FROM concatenated_operation WHERE auth_name = NEW.step1_auth_name AND code = NEW.step1_code); + SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: step2 should not be a concatenated_operation') + WHERE EXISTS(SELECT 1 FROM concatenated_operation WHERE auth_name = NEW.step2_auth_name AND code = NEW.step2_code); + SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: step3 should not be a concatenated_operation') + WHERE EXISTS(SELECT 1 FROM concatenated_operation WHERE auth_name = NEW.step3_auth_name AND code = NEW.step3_code); +END; + + +CREATE TABLE alias_name( + table_name TEXT NOT NULL CHECK (table_name IN ( + 'unit_of_measure', 'celestial_body', 'ellipsoid', + 'area', 'prime_meridian', 'geodetic_datum', 'vertical_datum', 'geodetic_crs', + 'projected_crs', 'vertical_crs', 'compound_crs', 'conversion', 'grid_transformation', + 'helmert_transformation', 'other_transformation', 'concatenated_operation')), + auth_name TEXT NOT NULL CHECK (length(auth_name) >= 1), + code TEXT NOT NULL CHECK (length(code) >= 1), + alt_name TEXT NOT NULL CHECK (length(alt_name) >= 2), + source TEXT +); + +CREATE TRIGGER alias_name_insert_trigger +BEFORE INSERT ON alias_name +FOR EACH ROW BEGIN + SELECT RAISE(ABORT, 'insert on alias_name violates constraint: new entry refers to unexisting code') + WHERE NOT EXISTS (SELECT 1 FROM object_view o WHERE o.table_name = NEW.table_name AND o.auth_name = NEW.auth_name AND o.code = NEW.code); +END; + +-- For ESRI stuff +-- typically deprecated is the 'wkid' column of deprecated = 'yes' entries in the .csv files, and non_deprecates is the 'latestWkid' column +CREATE TABLE link_from_deprecated_to_non_deprecated( + table_name TEXT NOT NULL CHECK (table_name IN ( + 'unit_of_measure', 'celestial_body', 'ellipsoid', + 'area', 'prime_meridian', 'geodetic_datum', 'vertical_datum', 'geodetic_crs', + 'projected_crs', 'vertical_crs', 'compound_crs', 'conversion', 'grid_transformation', + 'helmert_transformation', 'other_transformation', 'concatenated_operation')), + deprecated_auth_name TEXT NOT NULL, + deprecated_code TEXT NOT NULL, + non_deprecated_auth_name TEXT NOT NULL, + non_deprecated_code TEXT NOT NULL, + source TEXT +); + +CREATE TRIGGER link_from_deprecated_to_non_deprecated_insert_trigger +BEFORE INSERT ON link_from_deprecated_to_non_deprecated +FOR EACH ROW BEGIN + SELECT RAISE(ABORT, 'insert on link_from_deprecated_to_non_deprecated violates constraint: deprecated entry refers to unexisting code') + WHERE NOT EXISTS (SELECT 1 FROM object_view o WHERE o.table_name = NEW.table_name AND o.auth_name = NEW.deprecated_auth_name AND o.code = NEW.deprecated_code); + + SELECT RAISE(ABORT, 'insert on link_from_deprecated_to_non_deprecated violates constraint: non_deprecated entry refers to unexisting code') + WHERE NOT EXISTS (SELECT 1 FROM object_view o WHERE o.table_name = NEW.table_name AND o.auth_name = NEW.non_deprecated_auth_name AND o.code = NEW.non_deprecated_code); +END; + + + +CREATE VIEW coordinate_operation_view AS + SELECT 'grid_transformation' AS table_name, auth_name, code, name, + description, scope, + method_auth_name, method_code, method_name, source_crs_auth_name, + source_crs_code, target_crs_auth_name, target_crs_code, + area_of_use_auth_name, area_of_use_code, + accuracy, deprecated FROM grid_transformation + UNION ALL + SELECT 'helmert_transformation' AS table_name, auth_name, code, name, + description, scope, + method_auth_name, method_code, method_name, source_crs_auth_name, + source_crs_code, target_crs_auth_name, target_crs_code, + area_of_use_auth_name, area_of_use_code, + accuracy, deprecated FROM helmert_transformation + UNION ALL + SELECT 'other_transformation' AS table_name, auth_name, code, name, + description, scope, + method_auth_name, method_code, method_name, source_crs_auth_name, + source_crs_code, target_crs_auth_name, target_crs_code, + area_of_use_auth_name, area_of_use_code, + accuracy, deprecated FROM other_transformation + UNION ALL + SELECT 'concatenated_operation' AS table_name, auth_name, code, name, + description, scope, + NULL, NULL, NULL, source_crs_auth_name, + source_crs_code, target_crs_auth_name, target_crs_code, + area_of_use_auth_name, area_of_use_code, + accuracy, deprecated FROM concatenated_operation +; + +CREATE VIEW coordinate_operation_with_conversion_view AS + SELECT auth_name, code, table_name AS type FROM coordinate_operation_view UNION ALL + SELECT auth_name, code, 'conversion' FROM conversion; + +CREATE VIEW crs_view AS + SELECT 'geodetic_crs' AS table_name, auth_name, code, name, type, + description, scope, + area_of_use_auth_name, area_of_use_code, + deprecated FROM geodetic_crs + UNION ALL + SELECT 'projected_crs' AS table_name, auth_name, code, name, 'projected', + description, scope, + area_of_use_auth_name, area_of_use_code, + deprecated FROM projected_crs + UNION ALL + SELECT 'vertical_crs' AS table_name, auth_name, code, name, 'vertical', + description, scope, + area_of_use_auth_name, area_of_use_code, + deprecated FROM vertical_crs + UNION ALL + SELECT 'compound_crs' AS table_name, auth_name, code, name, 'compound', + description, scope, + area_of_use_auth_name, area_of_use_code, + deprecated FROM compound_crs +; + +CREATE VIEW object_view AS + SELECT 'unit_of_measure' AS table_name, auth_name, code, name, NULL as type, NULL as area_of_use_auth_name, NULL as area_of_use_code, deprecated FROM unit_of_measure + UNION ALL + SELECT 'celestial_body', auth_name, code, name, NULL, NULL, NULL, 0 FROM celestial_body + UNION ALL + SELECT 'ellipsoid', auth_name, code, name, NULL, NULL, NULL, deprecated FROM ellipsoid + UNION ALL + SELECT 'area', auth_name, code, name, NULL, NULL, NULL, deprecated FROM area + UNION ALL + SELECT 'prime_meridian', auth_name, code, name, NULL, NULL, NULL, deprecated FROM prime_meridian + UNION ALL + SELECT 'geodetic_datum', auth_name, code, name, NULL, area_of_use_auth_name, area_of_use_code, deprecated FROM geodetic_datum + UNION ALL + SELECT 'vertical_datum', auth_name, code, name, NULL, area_of_use_auth_name, area_of_use_code, deprecated FROM vertical_datum + UNION ALL + SELECT 'axis', auth_name, code, name, NULL, NULL, NULL, 0 as deprecated FROM axis + UNION ALL + SELECT table_name, auth_name, code, name, type, area_of_use_auth_name, area_of_use_code, deprecated FROM crs_view + UNION ALL + SELECT 'conversion', auth_name, code, name, NULL, area_of_use_auth_name, area_of_use_code, deprecated FROM conversion + UNION ALL + SELECT table_name, auth_name, code, name, NULL, area_of_use_auth_name, area_of_use_code, deprecated FROM coordinate_operation_view +; + +CREATE VIEW authority_list AS + SELECT DISTINCT auth_name FROM unit_of_measure + UNION + SELECT DISTINCT auth_name FROM celestial_body + UNION + SELECT DISTINCT auth_name FROM ellipsoid + UNION + SELECT DISTINCT auth_name FROM area + UNION + SELECT DISTINCT auth_name FROM prime_meridian + UNION + SELECT DISTINCT auth_name FROM geodetic_datum + UNION + SELECT DISTINCT auth_name FROM vertical_datum + UNION + SELECT DISTINCT auth_name FROM axis + UNION + SELECT DISTINCT auth_name FROM crs_view + UNION + SELECT DISTINCT auth_name FROM coordinate_operation_view +; diff --git a/data/sql/projected_crs.sql b/data/sql/projected_crs.sql new file mode 100644 index 00000000..8d9e87a2 --- /dev/null +++ b/data/sql/projected_crs.sql @@ -0,0 +1,5034 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +INSERT INTO "projected_crs" VALUES('EPSG','2000','Anguilla 1957 / British West Indies Grid',NULL,NULL,'EPSG','4400','EPSG','4600','EPSG','19942','EPSG','3214',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2001','Antigua 1943 / British West Indies Grid',NULL,NULL,'EPSG','4400','EPSG','4601','EPSG','19942','EPSG','1273',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2002','Dominica 1945 / British West Indies Grid',NULL,NULL,'EPSG','4400','EPSG','4602','EPSG','19942','EPSG','3239',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2003','Grenada 1953 / British West Indies Grid',NULL,NULL,'EPSG','4400','EPSG','4603','EPSG','19942','EPSG','1551',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2004','Montserrat 1958 / British West Indies Grid',NULL,NULL,'EPSG','4400','EPSG','4604','EPSG','19942','EPSG','3279',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2005','St. Kitts 1955 / British West Indies Grid',NULL,NULL,'EPSG','4400','EPSG','4605','EPSG','19942','EPSG','3297',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2006','St. Lucia 1955 / British West Indies Grid',NULL,NULL,'EPSG','4400','EPSG','4606','EPSG','19942','EPSG','3298',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2007','St. Vincent 45 / British West Indies Grid',NULL,NULL,'EPSG','4400','EPSG','4607','EPSG','19942','EPSG','3300',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2008','NAD27(CGQ77) / SCoPQ zone 2',NULL,NULL,'EPSG','4499','EPSG','4609','EPSG','17700','EPSG','1420',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2009','NAD27(CGQ77) / SCoPQ zone 3',NULL,NULL,'EPSG','4499','EPSG','4609','EPSG','17703','EPSG','1446',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2010','NAD27(CGQ77) / SCoPQ zone 4',NULL,NULL,'EPSG','4499','EPSG','4609','EPSG','17704','EPSG','1422',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2011','NAD27(CGQ77) / SCoPQ zone 5',NULL,NULL,'EPSG','4499','EPSG','4609','EPSG','17705','EPSG','1423',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2012','NAD27(CGQ77) / SCoPQ zone 6',NULL,NULL,'EPSG','4499','EPSG','4609','EPSG','17706','EPSG','1424',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2013','NAD27(CGQ77) / SCoPQ zone 7',NULL,NULL,'EPSG','4499','EPSG','4609','EPSG','17707','EPSG','1425',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2014','NAD27(CGQ77) / SCoPQ zone 8',NULL,NULL,'EPSG','4499','EPSG','4609','EPSG','17708','EPSG','1426',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2015','NAD27(CGQ77) / SCoPQ zone 9',NULL,NULL,'EPSG','4499','EPSG','4609','EPSG','17709','EPSG','1427',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2016','NAD27(CGQ77) / SCoPQ zone 10',NULL,NULL,'EPSG','4499','EPSG','4609','EPSG','17710','EPSG','1428',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2017','NAD27(76) / MTM zone 8',NULL,NULL,'EPSG','4499','EPSG','4608','EPSG','17708','EPSG','1429',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2018','NAD27(76) / MTM zone 9',NULL,NULL,'EPSG','4499','EPSG','4608','EPSG','17709','EPSG','1430',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2019','NAD27(76) / MTM zone 10',NULL,NULL,'EPSG','4499','EPSG','4608','EPSG','17710','EPSG','1431',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2020','NAD27(76) / MTM zone 11',NULL,NULL,'EPSG','4400','EPSG','4608','EPSG','17711','EPSG','1432',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2021','NAD27(76) / MTM zone 12',NULL,NULL,'EPSG','4400','EPSG','4608','EPSG','17712','EPSG','1433',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2022','NAD27(76) / MTM zone 13',NULL,NULL,'EPSG','4400','EPSG','4608','EPSG','17713','EPSG','1434',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2023','NAD27(76) / MTM zone 14',NULL,NULL,'EPSG','4400','EPSG','4608','EPSG','17714','EPSG','1435',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2024','NAD27(76) / MTM zone 15',NULL,NULL,'EPSG','4400','EPSG','4608','EPSG','17715','EPSG','1436',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2025','NAD27(76) / MTM zone 16',NULL,NULL,'EPSG','4400','EPSG','4608','EPSG','17716','EPSG','1437',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2026','NAD27(76) / MTM zone 17',NULL,NULL,'EPSG','4400','EPSG','4608','EPSG','17717','EPSG','1438',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2027','NAD27(76) / UTM zone 15N',NULL,NULL,'EPSG','4400','EPSG','4608','EPSG','16015','EPSG','1439',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2028','NAD27(76) / UTM zone 16N',NULL,NULL,'EPSG','4400','EPSG','4608','EPSG','16016','EPSG','1440',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2029','NAD27(76) / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4608','EPSG','16017','EPSG','1441',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2030','NAD27(76) / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4608','EPSG','16018','EPSG','1442',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2031','NAD27(CGQ77) / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4609','EPSG','16017','EPSG','1428',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2032','NAD27(CGQ77) / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4609','EPSG','16018','EPSG','1443',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2033','NAD27(CGQ77) / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4609','EPSG','16019','EPSG','1444',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2034','NAD27(CGQ77) / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4609','EPSG','16020','EPSG','1445',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2035','NAD27(CGQ77) / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4609','EPSG','16021','EPSG','1446',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2036','NAD83(CSRS98) / New Brunswick Stereo',NULL,NULL,'EPSG','4500','EPSG','4140','EPSG','19946','EPSG','1447',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2037','NAD83(CSRS98) / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4140','EPSG','16019','EPSG','1448',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2038','NAD83(CSRS98) / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4140','EPSG','16020','EPSG','1449',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2039','Israel 1993 / Israeli TM Grid',NULL,NULL,'EPSG','4400','EPSG','4141','EPSG','18204','EPSG','2603',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2040','Locodjo 1965 / UTM zone 30N',NULL,NULL,'EPSG','4400','EPSG','4142','EPSG','16030','EPSG','1450',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2041','Abidjan 1987 / UTM zone 30N',NULL,NULL,'EPSG','4400','EPSG','4143','EPSG','16030','EPSG','1450',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2042','Locodjo 1965 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4142','EPSG','16029','EPSG','1451',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2043','Abidjan 1987 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4143','EPSG','16029','EPSG','1451',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2044','Hanoi 1972 / Gauss-Kruger zone 18',NULL,NULL,'EPSG','4530','EPSG','4147','EPSG','16218','EPSG','1452',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2045','Hanoi 1972 / Gauss-Kruger zone 19',NULL,NULL,'EPSG','4530','EPSG','4147','EPSG','16219','EPSG','1453',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2046','Hartebeesthoek94 / Lo15',NULL,NULL,'EPSG','6503','EPSG','4148','EPSG','17515','EPSG','1454',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2047','Hartebeesthoek94 / Lo17',NULL,NULL,'EPSG','6503','EPSG','4148','EPSG','17517','EPSG','1455',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2048','Hartebeesthoek94 / Lo19',NULL,NULL,'EPSG','6503','EPSG','4148','EPSG','17519','EPSG','1456',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2049','Hartebeesthoek94 / Lo21',NULL,NULL,'EPSG','6503','EPSG','4148','EPSG','17521','EPSG','1457',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2050','Hartebeesthoek94 / Lo23',NULL,NULL,'EPSG','6503','EPSG','4148','EPSG','17523','EPSG','1458',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2051','Hartebeesthoek94 / Lo25',NULL,NULL,'EPSG','6503','EPSG','4148','EPSG','17525','EPSG','1459',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2052','Hartebeesthoek94 / Lo27',NULL,NULL,'EPSG','6503','EPSG','4148','EPSG','17527','EPSG','1460',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2053','Hartebeesthoek94 / Lo29',NULL,NULL,'EPSG','6503','EPSG','4148','EPSG','17529','EPSG','1461',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2054','Hartebeesthoek94 / Lo31',NULL,NULL,'EPSG','6503','EPSG','4148','EPSG','17531','EPSG','1462',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2055','Hartebeesthoek94 / Lo33',NULL,NULL,'EPSG','6503','EPSG','4148','EPSG','17533','EPSG','1463',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2056','CH1903+ / LV95',NULL,NULL,'EPSG','4400','EPSG','4150','EPSG','19950','EPSG','1286',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2057','Rassadiran / Nakhl e Taqi',NULL,NULL,'EPSG','4400','EPSG','4153','EPSG','19951','EPSG','1338',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2058','ED50(ED77) / UTM zone 38N',NULL,NULL,'EPSG','4400','EPSG','4154','EPSG','16038','EPSG','1464',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2059','ED50(ED77) / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','4154','EPSG','16039','EPSG','1465',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2060','ED50(ED77) / UTM zone 40N',NULL,NULL,'EPSG','4400','EPSG','4154','EPSG','16040','EPSG','1466',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2061','ED50(ED77) / UTM zone 41N',NULL,NULL,'EPSG','4400','EPSG','4154','EPSG','16041','EPSG','1467',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2062','Madrid 1870 (Madrid) / Spain',NULL,NULL,'EPSG','4499','EPSG','4903','EPSG','19921','EPSG','2366',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2063','Dabola 1981 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4315','EPSG','16028','EPSG','1468',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2064','Dabola 1981 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4315','EPSG','16029','EPSG','1469',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2065','S-JTSK (Ferro) / Krovak',NULL,NULL,'EPSG','6501','EPSG','4818','EPSG','19952','EPSG','1306',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2066','Mount Dillon / Tobago Grid',NULL,NULL,'EPSG','4407','EPSG','4157','EPSG','19924','EPSG','1322',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2067','Naparima 1955 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4158','EPSG','16020','EPSG','3143',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2068','ELD79 / Libya zone 5',NULL,NULL,'EPSG','4499','EPSG','4159','EPSG','18240','EPSG','1470',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2069','ELD79 / Libya zone 6',NULL,NULL,'EPSG','4499','EPSG','4159','EPSG','18241','EPSG','1471',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2070','ELD79 / Libya zone 7',NULL,NULL,'EPSG','4499','EPSG','4159','EPSG','18242','EPSG','1472',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2071','ELD79 / Libya zone 8',NULL,NULL,'EPSG','4499','EPSG','4159','EPSG','18243','EPSG','1473',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2072','ELD79 / Libya zone 9',NULL,NULL,'EPSG','4499','EPSG','4159','EPSG','18244','EPSG','1474',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2073','ELD79 / Libya zone 10',NULL,NULL,'EPSG','4499','EPSG','4159','EPSG','18245','EPSG','1475',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2074','ELD79 / Libya zone 11',NULL,NULL,'EPSG','4499','EPSG','4159','EPSG','18246','EPSG','1476',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2075','ELD79 / Libya zone 12',NULL,NULL,'EPSG','4499','EPSG','4159','EPSG','18247','EPSG','1477',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2076','ELD79 / Libya zone 13',NULL,NULL,'EPSG','4499','EPSG','4159','EPSG','18248','EPSG','1478',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2077','ELD79 / UTM zone 32N',NULL,NULL,'EPSG','4400','EPSG','4159','EPSG','16032','EPSG','1479',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2078','ELD79 / UTM zone 33N',NULL,NULL,'EPSG','4400','EPSG','4159','EPSG','16033','EPSG','1480',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2079','ELD79 / UTM zone 34N',NULL,NULL,'EPSG','4400','EPSG','4159','EPSG','16034','EPSG','1481',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2080','ELD79 / UTM zone 35N',NULL,NULL,'EPSG','4400','EPSG','4159','EPSG','16035','EPSG','1478',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2081','Chos Malal 1914 / Argentina 2',NULL,NULL,'EPSG','4530','EPSG','4160','EPSG','18032','EPSG','1483',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2082','Pampa del Castillo / Argentina 2',NULL,NULL,'EPSG','4530','EPSG','4161','EPSG','18032','EPSG','1484',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2083','Hito XVIII 1963 / Argentina 2',NULL,NULL,'EPSG','4530','EPSG','4254','EPSG','18032','EPSG','1485',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2084','Hito XVIII 1963 / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','4254','EPSG','16119','EPSG','2596',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2085','NAD27 / Cuba Norte',NULL,NULL,'EPSG','4532','EPSG','4267','EPSG','18061','EPSG','1487',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2086','NAD27 / Cuba Sur',NULL,NULL,'EPSG','4532','EPSG','4267','EPSG','18062','EPSG','1488',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2087','ELD79 / TM 12 NE',NULL,NULL,'EPSG','4400','EPSG','4159','EPSG','16412','EPSG','1482',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2088','Carthage / TM 11 NE',NULL,NULL,'EPSG','4400','EPSG','4223','EPSG','16411','EPSG','1489',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2089','Yemen NGN96 / UTM zone 38N',NULL,NULL,'EPSG','4400','EPSG','4163','EPSG','16038','EPSG','1490',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2090','Yemen NGN96 / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','4163','EPSG','16039','EPSG','1491',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2091','South Yemen / Gauss Kruger zone 8',NULL,NULL,'EPSG','4530','EPSG','4164','EPSG','16208','EPSG','1492',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2092','South Yemen / Gauss Kruger zone 9',NULL,NULL,'EPSG','4530','EPSG','4164','EPSG','16209','EPSG','1493',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2093','Hanoi 1972 / GK 106 NE',NULL,NULL,'EPSG','4530','EPSG','4147','EPSG','16586','EPSG','1494',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2094','WGS 72BE / TM 106 NE',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16506','EPSG','1495',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2095','Bissau / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4165','EPSG','16028','EPSG','3258',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2096','Korean 1985 / East Belt',NULL,NULL,'EPSG','4530','EPSG','4162','EPSG','18251','EPSG','1496',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2097','Korean 1985 / Central Belt',NULL,NULL,'EPSG','4530','EPSG','4162','EPSG','18252','EPSG','3730',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2098','Korean 1985 / West Belt',NULL,NULL,'EPSG','4530','EPSG','4162','EPSG','18253','EPSG','1498',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2099','Qatar 1948 / Qatar Grid',NULL,NULL,'EPSG','4400','EPSG','4286','EPSG','19953','EPSG','1346',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2100','GGRS87 / Greek Grid',NULL,NULL,'EPSG','4400','EPSG','4121','EPSG','19930','EPSG','3254',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2101','Lake / Maracaibo Grid M1',NULL,NULL,'EPSG','4499','EPSG','4249','EPSG','18260','EPSG','1319',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2102','Lake / Maracaibo Grid',NULL,NULL,'EPSG','4499','EPSG','4249','EPSG','18261','EPSG','1319',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2103','Lake / Maracaibo Grid M3',NULL,NULL,'EPSG','4499','EPSG','4249','EPSG','18262','EPSG','1319',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2104','Lake / Maracaibo La Rosa Grid',NULL,NULL,'EPSG','4499','EPSG','4249','EPSG','18263','EPSG','1499',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2105','NZGD2000 / Mount Eden 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17931','EPSG','3781',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2106','NZGD2000 / Bay of Plenty 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17932','EPSG','3779',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2107','NZGD2000 / Poverty Bay 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17933','EPSG','3780',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2108','NZGD2000 / Hawkes Bay 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17934','EPSG','3772',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2109','NZGD2000 / Taranaki 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17935','EPSG','3777',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2110','NZGD2000 / Tuhirangi 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17936','EPSG','3778',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2111','NZGD2000 / Wanganui 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17937','EPSG','3776',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2112','NZGD2000 / Wairarapa 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17938','EPSG','3775',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2113','NZGD2000 / Wellington 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17939','EPSG','3774',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2114','NZGD2000 / Collingwood 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17940','EPSG','3782',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2115','NZGD2000 / Nelson 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17941','EPSG','3784',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2116','NZGD2000 / Karamea 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17942','EPSG','3783',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2117','NZGD2000 / Buller 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17943','EPSG','3786',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2118','NZGD2000 / Grey 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17944','EPSG','3787',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2119','NZGD2000 / Amuri 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17945','EPSG','3788',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2120','NZGD2000 / Marlborough 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17946','EPSG','3785',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2121','NZGD2000 / Hokitika 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17947','EPSG','3789',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2122','NZGD2000 / Okarito 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17948','EPSG','3791',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2123','NZGD2000 / Jacksons Bay 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17949','EPSG','3794',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2124','NZGD2000 / Mount Pleasant 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17950','EPSG','3790',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2125','NZGD2000 / Gawler 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17951','EPSG','3792',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2126','NZGD2000 / Timaru 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17952','EPSG','3793',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2127','NZGD2000 / Lindis Peak 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17953','EPSG','3795',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2128','NZGD2000 / Mount Nicholas 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17954','EPSG','3797',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2129','NZGD2000 / Mount York 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17955','EPSG','3799',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2130','NZGD2000 / Observation Point 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17956','EPSG','3796',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2131','NZGD2000 / North Taieri 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17957','EPSG','3798',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2132','NZGD2000 / Bluff 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17958','EPSG','3800',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2133','NZGD2000 / UTM zone 58S',NULL,NULL,'EPSG','4400','EPSG','4167','EPSG','16158','EPSG','1502',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2134','NZGD2000 / UTM zone 59S',NULL,NULL,'EPSG','4400','EPSG','4167','EPSG','16159','EPSG','1503',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2135','NZGD2000 / UTM zone 60S',NULL,NULL,'EPSG','4400','EPSG','4167','EPSG','16160','EPSG','1504',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2136','Accra / Ghana National Grid',NULL,NULL,'EPSG','4404','EPSG','4168','EPSG','19959','EPSG','3252',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2137','Accra / TM 1 NW',NULL,NULL,'EPSG','4400','EPSG','4168','EPSG','17001','EPSG','1505',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2138','NAD27(CGQ77) / Quebec Lambert',NULL,NULL,'EPSG','4499','EPSG','4609','EPSG','19944','EPSG','1368',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2139','NAD83(CSRS98) / SCoPQ zone 2',NULL,NULL,'EPSG','4499','EPSG','4140','EPSG','17700','EPSG','1420',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2140','NAD83(CSRS98) / MTM zone 3',NULL,NULL,'EPSG','4496','EPSG','4140','EPSG','17703','EPSG','1421',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2141','NAD83(CSRS98) / MTM zone 4',NULL,NULL,'EPSG','4496','EPSG','4140','EPSG','17704','EPSG','1422',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2142','NAD83(CSRS98) / MTM zone 5',NULL,NULL,'EPSG','4496','EPSG','4140','EPSG','17705','EPSG','1423',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2143','NAD83(CSRS98) / MTM zone 6',NULL,NULL,'EPSG','4496','EPSG','4140','EPSG','17706','EPSG','1424',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2144','NAD83(CSRS98) / MTM zone 7',NULL,NULL,'EPSG','4496','EPSG','4140','EPSG','17707','EPSG','1425',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2145','NAD83(CSRS98) / MTM zone 8',NULL,NULL,'EPSG','4496','EPSG','4140','EPSG','17708','EPSG','1426',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2146','NAD83(CSRS98) / MTM zone 9',NULL,NULL,'EPSG','4496','EPSG','4140','EPSG','17709','EPSG','1427',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2147','NAD83(CSRS98) / MTM zone 10',NULL,NULL,'EPSG','4496','EPSG','4140','EPSG','17710','EPSG','1428',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2148','NAD83(CSRS98) / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4140','EPSG','16021','EPSG','1446',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2149','NAD83(CSRS98) / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4140','EPSG','16018','EPSG','1443',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2150','NAD83(CSRS98) / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4140','EPSG','16017','EPSG','1428',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2151','NAD83(CSRS98) / UTM zone 13N',NULL,NULL,'EPSG','4400','EPSG','4140','EPSG','16013','EPSG','1506',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2152','NAD83(CSRS98) / UTM zone 12N',NULL,NULL,'EPSG','4400','EPSG','4140','EPSG','16012','EPSG','1507',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2153','NAD83(CSRS98) / UTM zone 11N',NULL,NULL,'EPSG','4400','EPSG','4140','EPSG','16011','EPSG','1508',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2154','RGF93 / Lambert-93',NULL,NULL,'EPSG','4499','EPSG','4171','EPSG','18085','EPSG','1096',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2155','American Samoa 1962 / American Samoa Lambert',NULL,NULL,'EPSG','4497','EPSG','4169','EPSG','15300','EPSG','1027',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2156','NAD83(HARN) / UTM zone 59S',NULL,NULL,'EPSG','4400','EPSG','4152','EPSG','16159','EPSG','1027',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2157','IRENET95 / Irish Transverse Mercator',NULL,NULL,'EPSG','4400','EPSG','4173','EPSG','19962','EPSG','1305',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2158','IRENET95 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4173','EPSG','16029','EPSG','1305',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2159','Sierra Leone 1924 / New Colony Grid',NULL,NULL,'EPSG','4404','EPSG','4174','EPSG','19963','EPSG','1342',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2160','Sierra Leone 1924 / New War Office Grid',NULL,NULL,'EPSG','4404','EPSG','4174','EPSG','19964','EPSG','1342',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2161','Sierra Leone 1968 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4175','EPSG','16028','EPSG','1509',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2162','Sierra Leone 1968 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4175','EPSG','16029','EPSG','1510',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2163','US National Atlas Equal Area',NULL,NULL,'EPSG','4499','EPSG','4052','EPSG','3899','EPSG','1245',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2164','Locodjo 1965 / TM 5 NW',NULL,NULL,'EPSG','4400','EPSG','4142','EPSG','17005','EPSG','2296',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2165','Abidjan 1987 / TM 5 NW',NULL,NULL,'EPSG','4400','EPSG','4143','EPSG','17005','EPSG','2296',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2166','Pulkovo 1942(83) / Gauss Kruger zone 3',NULL,NULL,'EPSG','4530','EPSG','4178','EPSG','16263','EPSG','1512',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2167','Pulkovo 1942(83) / Gauss Kruger zone 4',NULL,NULL,'EPSG','4530','EPSG','4178','EPSG','16264','EPSG','1513',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2168','Pulkovo 1942(83) / Gauss Kruger zone 5',NULL,NULL,'EPSG','4530','EPSG','4178','EPSG','16265','EPSG','1512',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2169','Luxembourg 1930 / Gauss',NULL,NULL,'EPSG','4530','EPSG','4181','EPSG','19966','EPSG','1146',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2170','MGI / Slovenia Grid',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','19967','EPSG','1212',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2171','Pulkovo 1942(58) / Poland zone I',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','18281','EPSG','1515',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2172','Pulkovo 1942(58) / Poland zone II',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','18282','EPSG','1516',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2173','Pulkovo 1942(58) / Poland zone III',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','18283','EPSG','1517',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2174','Pulkovo 1942(58) / Poland zone IV',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','18284','EPSG','1518',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2175','Pulkovo 1942(58) / Poland zone V',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','18285','EPSG','1519',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2176','ETRS89 / Poland CS2000 zone 5',NULL,NULL,'EPSG','4531','EPSG','4258','EPSG','18305','EPSG','1520',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2177','ETRS89 / Poland CS2000 zone 6',NULL,NULL,'EPSG','4531','EPSG','4258','EPSG','18306','EPSG','1521',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2178','ETRS89 / Poland CS2000 zone 7',NULL,NULL,'EPSG','4531','EPSG','4258','EPSG','18307','EPSG','1522',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2179','ETRS89 / Poland CS2000 zone 8',NULL,NULL,'EPSG','4531','EPSG','4258','EPSG','18308','EPSG','1523',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2180','ETRS89 / Poland CS92',NULL,NULL,'EPSG','4531','EPSG','4258','EPSG','18300','EPSG','1192',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2188','Azores Occidental 1939 / UTM zone 25N',NULL,NULL,'EPSG','4400','EPSG','4182','EPSG','16025','EPSG','1344',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2189','Azores Central 1948 / UTM zone 26N',NULL,NULL,'EPSG','4400','EPSG','4183','EPSG','16026','EPSG','1301',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2190','Azores Oriental 1940 / UTM zone 26N',NULL,NULL,'EPSG','4400','EPSG','4184','EPSG','16026','EPSG','1345',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2191','Madeira 1936 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4185','EPSG','16028','EPSG','1314',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2192','ED50 / France EuroLambert',NULL,NULL,'EPSG','4499','EPSG','4230','EPSG','18086','EPSG','1326',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2193','NZGD2000 / New Zealand Transverse Mercator 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','19971','EPSG','3973',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2194','American Samoa 1962 / American Samoa Lambert',NULL,NULL,'EPSG','4497','EPSG','4169','EPSG','15301','EPSG','1027',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2195','NAD83(HARN) / UTM zone 2S',NULL,NULL,'EPSG','4400','EPSG','4152','EPSG','16102','EPSG','3110',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2196','ETRS89 / Kp2000 Jutland',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','18401','EPSG','2531',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2197','ETRS89 / Kp2000 Zealand',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','18402','EPSG','2532',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2198','ETRS89 / Kp2000 Bornholm',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','18403','EPSG','2533',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2199','Albanian 1987 / Gauss Kruger zone 4',NULL,NULL,'EPSG','4530','EPSG','4191','EPSG','16204','EPSG','1025',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2200','ATS77 / New Brunswick Stereographic (ATS77)',NULL,NULL,'EPSG','4500','EPSG','4122','EPSG','19945','EPSG','1447',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2201','REGVEN / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4189','EPSG','16018','EPSG','1693',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2202','REGVEN / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4189','EPSG','16019','EPSG','3859',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2203','REGVEN / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4189','EPSG','16020','EPSG','3858',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2204','NAD27 / Tennessee',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15302','EPSG','1411',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2205','NAD83 / Kentucky North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15303','EPSG','2202',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2206','ED50 / 3-degree Gauss-Kruger zone 9',NULL,NULL,'EPSG','4530','EPSG','4230','EPSG','16269','EPSG','1524',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2207','ED50 / 3-degree Gauss-Kruger zone 10',NULL,NULL,'EPSG','4530','EPSG','4230','EPSG','16270','EPSG','1525',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2208','ED50 / 3-degree Gauss-Kruger zone 11',NULL,NULL,'EPSG','4530','EPSG','4230','EPSG','16271','EPSG','1526',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2209','ED50 / 3-degree Gauss-Kruger zone 12',NULL,NULL,'EPSG','4530','EPSG','4230','EPSG','16272','EPSG','1527',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2210','ED50 / 3-degree Gauss-Kruger zone 13',NULL,NULL,'EPSG','4530','EPSG','4230','EPSG','16273','EPSG','1528',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2211','ED50 / 3-degree Gauss-Kruger zone 14',NULL,NULL,'EPSG','4530','EPSG','4230','EPSG','16274','EPSG','1529',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2212','ED50 / 3-degree Gauss-Kruger zone 15',NULL,NULL,'EPSG','4530','EPSG','4230','EPSG','16275','EPSG','1530',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2213','ETRS89 / TM 30 NE',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','16430','EPSG','2546',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2214','Douala 1948 / AOF west',NULL,NULL,'EPSG','4400','EPSG','4192','EPSG','18415','EPSG','2555',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2215','Manoca 1962 / UTM zone 32N',NULL,NULL,'EPSG','4400','EPSG','4193','EPSG','16032','EPSG','2555',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2216','Qornoq 1927 / UTM zone 22N',NULL,NULL,'EPSG','4400','EPSG','4194','EPSG','16022','EPSG','2573',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2217','Qornoq 1927 / UTM zone 23N',NULL,NULL,'EPSG','4400','EPSG','4194','EPSG','16023','EPSG','2572',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2218','Scoresbysund 1952 / Greenland zone 5 east',NULL,NULL,'EPSG','1031','EPSG','4195','EPSG','18425','EPSG','3370',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2219','ATS77 / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4122','EPSG','16019','EPSG','1531',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2220','ATS77 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4122','EPSG','16020','EPSG','1532',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2221','Scoresbysund 1952 / Greenland zone 6 east',NULL,NULL,'EPSG','1031','EPSG','4195','EPSG','18426','EPSG','3369',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2222','NAD83 / Arizona East (ft)',NULL,NULL,'EPSG','4495','EPSG','4269','EPSG','15304','EPSG','2167',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2223','NAD83 / Arizona Central (ft)',NULL,NULL,'EPSG','4495','EPSG','4269','EPSG','15305','EPSG','2166',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2224','NAD83 / Arizona West (ft)',NULL,NULL,'EPSG','4495','EPSG','4269','EPSG','15306','EPSG','2168',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2225','NAD83 / California zone 1 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15307','EPSG','2175',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2226','NAD83 / California zone 2 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15308','EPSG','2176',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2227','NAD83 / California zone 3 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15309','EPSG','2177',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2228','NAD83 / California zone 4 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15310','EPSG','2178',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2229','NAD83 / California zone 5 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15311','EPSG','2182',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2230','NAD83 / California zone 6 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15312','EPSG','2180',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2231','NAD83 / Colorado North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15313','EPSG','2184',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2232','NAD83 / Colorado Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15314','EPSG','2183',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2233','NAD83 / Colorado South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15315','EPSG','2185',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2234','NAD83 / Connecticut (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15316','EPSG','1377',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2235','NAD83 / Delaware (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15317','EPSG','1378',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2236','NAD83 / Florida East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15318','EPSG','2186',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2237','NAD83 / Florida West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15319','EPSG','2188',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2238','NAD83 / Florida North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15320','EPSG','2187',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2239','NAD83 / Georgia East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15321','EPSG','2189',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2240','NAD83 / Georgia West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15322','EPSG','2190',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2241','NAD83 / Idaho East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15323','EPSG','2192',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2242','NAD83 / Idaho Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15324','EPSG','2191',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2243','NAD83 / Idaho West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15325','EPSG','2193',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2244','NAD83 / Indiana East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15326','EPSG','2196',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2245','NAD83 / Indiana West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15327','EPSG','2197',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2246','NAD83 / Kentucky North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15328','EPSG','2202',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2247','NAD83 / Kentucky South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15329','EPSG','2203',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2248','NAD83 / Maryland (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15330','EPSG','1389',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2249','NAD83 / Massachusetts Mainland (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15331','EPSG','2209',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2250','NAD83 / Massachusetts Island (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15332','EPSG','2208',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2251','NAD83 / Michigan North (ft)',NULL,NULL,'EPSG','4495','EPSG','4269','EPSG','15333','EPSG','1723',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2252','NAD83 / Michigan Central (ft)',NULL,NULL,'EPSG','4495','EPSG','4269','EPSG','15334','EPSG','1724',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2253','NAD83 / Michigan South (ft)',NULL,NULL,'EPSG','4495','EPSG','4269','EPSG','15335','EPSG','1725',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2254','NAD83 / Mississippi East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15336','EPSG','2216',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2255','NAD83 / Mississippi West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15337','EPSG','2217',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2256','NAD83 / Montana (ft)',NULL,NULL,'EPSG','4495','EPSG','4269','EPSG','15338','EPSG','1395',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2257','NAD83 / New Mexico East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15339','EPSG','2228',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2258','NAD83 / New Mexico Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15340','EPSG','2231',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2259','NAD83 / New Mexico West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15341','EPSG','2232',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2260','NAD83 / New York East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15342','EPSG','2234',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2261','NAD83 / New York Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15343','EPSG','2233',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2262','NAD83 / New York West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15344','EPSG','2236',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2263','NAD83 / New York Long Island (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15345','EPSG','2235',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2264','NAD83 / North Carolina (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15346','EPSG','1402',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2265','NAD83 / North Dakota North (ft)',NULL,NULL,'EPSG','4495','EPSG','4269','EPSG','15347','EPSG','2237',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2266','NAD83 / North Dakota South (ft)',NULL,NULL,'EPSG','4495','EPSG','4269','EPSG','15348','EPSG','2238',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2267','NAD83 / Oklahoma North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15349','EPSG','2241',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2268','NAD83 / Oklahoma South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15350','EPSG','2242',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2269','NAD83 / Oregon North (ft)',NULL,NULL,'EPSG','4495','EPSG','4269','EPSG','15351','EPSG','2243',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2270','NAD83 / Oregon South (ft)',NULL,NULL,'EPSG','4495','EPSG','4269','EPSG','15352','EPSG','2244',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2271','NAD83 / Pennsylvania North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15353','EPSG','2245',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2272','NAD83 / Pennsylvania South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15354','EPSG','2246',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2273','NAD83 / South Carolina (ft)',NULL,NULL,'EPSG','4495','EPSG','4269','EPSG','15355','EPSG','1409',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2274','NAD83 / Tennessee (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15356','EPSG','1411',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2275','NAD83 / Texas North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15357','EPSG','2253',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2276','NAD83 / Texas North Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15358','EPSG','2254',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2277','NAD83 / Texas Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15359','EPSG','2252',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2278','NAD83 / Texas South Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15360','EPSG','2527',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2279','NAD83 / Texas South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15361','EPSG','2528',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2280','NAD83 / Utah North (ft)',NULL,NULL,'EPSG','4495','EPSG','4269','EPSG','15362','EPSG','2258',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2281','NAD83 / Utah Central (ft)',NULL,NULL,'EPSG','4495','EPSG','4269','EPSG','15363','EPSG','2257',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2282','NAD83 / Utah South (ft)',NULL,NULL,'EPSG','4495','EPSG','4269','EPSG','15364','EPSG','2259',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2283','NAD83 / Virginia North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15365','EPSG','2260',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2284','NAD83 / Virginia South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15366','EPSG','2261',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2285','NAD83 / Washington North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15367','EPSG','2273',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2286','NAD83 / Washington South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15368','EPSG','2274',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2287','NAD83 / Wisconsin North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15369','EPSG','2267',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2288','NAD83 / Wisconsin Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15370','EPSG','2266',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2289','NAD83 / Wisconsin South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15371','EPSG','2268',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2290','ATS77 / Prince Edward Isl. Stereographic (ATS77)',NULL,NULL,'EPSG','4496','EPSG','4122','EPSG','19933','EPSG','1533',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2291','NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83)',NULL,NULL,'EPSG','4496','EPSG','4122','EPSG','19960','EPSG','1533',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2292','NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83)',NULL,NULL,'EPSG','4496','EPSG','4140','EPSG','19960','EPSG','1533',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2294','ATS77 / MTM Nova Scotia zone 4',NULL,NULL,'EPSG','4400','EPSG','4122','EPSG','17794','EPSG','1534',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2295','ATS77 / MTM Nova Scotia zone 5',NULL,NULL,'EPSG','4400','EPSG','4122','EPSG','17795','EPSG','1535',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2296','Ammassalik 1958 / Greenland zone 7 east',NULL,NULL,'EPSG','1031','EPSG','4196','EPSG','18427','EPSG','2571',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2297','Qornoq 1927 / Greenland zone 1 east',NULL,NULL,'EPSG','4501','EPSG','4194','EPSG','18421','EPSG','2556',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2298','Qornoq 1927 / Greenland zone 2 east',NULL,NULL,'EPSG','4501','EPSG','4194','EPSG','18422','EPSG','2557',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2299','Qornoq 1927 / Greenland zone 2 west',NULL,NULL,'EPSG','1031','EPSG','4194','EPSG','18432','EPSG','3368',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2300','Qornoq 1927 / Greenland zone 3 east',NULL,NULL,'EPSG','4501','EPSG','4194','EPSG','18423','EPSG','2558',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2301','Qornoq 1927 / Greenland zone 3 west',NULL,NULL,'EPSG','1031','EPSG','4194','EPSG','18433','EPSG','3367',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2302','Qornoq 1927 / Greenland zone 4 east',NULL,NULL,'EPSG','4501','EPSG','4194','EPSG','18424','EPSG','2559',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2303','Qornoq 1927 / Greenland zone 4 west',NULL,NULL,'EPSG','1031','EPSG','4194','EPSG','18434','EPSG','3366',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2304','Qornoq 1927 / Greenland zone 5 west',NULL,NULL,'EPSG','1031','EPSG','4194','EPSG','18435','EPSG','3365',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2305','Qornoq 1927 / Greenland zone 6 west',NULL,NULL,'EPSG','1031','EPSG','4194','EPSG','18436','EPSG','3364',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2306','Qornoq 1927 / Greenland zone 7 west',NULL,NULL,'EPSG','1031','EPSG','4194','EPSG','18437','EPSG','3363',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2307','Qornoq 1927 / Greenland zone 8 east',NULL,NULL,'EPSG','1031','EPSG','4194','EPSG','18428','EPSG','3846',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2308','Batavia / TM 109 SE',NULL,NULL,'EPSG','4400','EPSG','4211','EPSG','16709','EPSG','2577',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2309','WGS 84 / TM 116 SE',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16716','EPSG','2588',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2310','WGS 84 / TM 132 SE',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16732','EPSG','2589',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2311','WGS 84 / TM 6 NE',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16406','EPSG','2981',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2312','Garoua / UTM zone 33N',NULL,NULL,'EPSG','4400','EPSG','4197','EPSG','16033','EPSG','2590',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2313','Kousseri / UTM zone 33N',NULL,NULL,'EPSG','4400','EPSG','4198','EPSG','16033','EPSG','2591',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2314','Trinidad 1903 / Trinidad Grid (ftCla)',NULL,NULL,'EPSG','4403','EPSG','4302','EPSG','19975','EPSG','1339',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2315','Campo Inchauspe / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','4221','EPSG','16119','EPSG','2596',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2316','Campo Inchauspe / UTM zone 20S',NULL,NULL,'EPSG','4400','EPSG','4221','EPSG','16120','EPSG','2597',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2317','PSAD56 / ICN Regional',NULL,NULL,'EPSG','4499','EPSG','4248','EPSG','19976','EPSG','3327',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2318','Ain el Abd / Aramco Lambert',NULL,NULL,'EPSG','4400','EPSG','4204','EPSG','19977','EPSG','3303',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2319','ED50 / TM27',NULL,NULL,'EPSG','4530','EPSG','4230','EPSG','16305','EPSG','1524',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2320','ED50 / TM30',NULL,NULL,'EPSG','4530','EPSG','4230','EPSG','16370','EPSG','1525',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2321','ED50 / TM33',NULL,NULL,'EPSG','4530','EPSG','4230','EPSG','16306','EPSG','1526',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2322','ED50 / TM36',NULL,NULL,'EPSG','4530','EPSG','4230','EPSG','16372','EPSG','1527',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2323','ED50 / TM39',NULL,NULL,'EPSG','4530','EPSG','4230','EPSG','16307','EPSG','1528',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2324','ED50 / TM42',NULL,NULL,'EPSG','4530','EPSG','4230','EPSG','16374','EPSG','1529',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2325','ED50 / TM45',NULL,NULL,'EPSG','4530','EPSG','4230','EPSG','16308','EPSG','1530',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2326','Hong Kong 1980 Grid System',NULL,NULL,'EPSG','4500','EPSG','4611','EPSG','19978','EPSG','1118',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2327','Xian 1980 / Gauss-Kruger zone 13',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16213','EPSG','1587',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2328','Xian 1980 / Gauss-Kruger zone 14',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16214','EPSG','1588',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2329','Xian 1980 / Gauss-Kruger zone 15',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16215','EPSG','1589',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2330','Xian 1980 / Gauss-Kruger zone 16',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16216','EPSG','1590',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2331','Xian 1980 / Gauss-Kruger zone 17',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16217','EPSG','1591',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2332','Xian 1980 / Gauss-Kruger zone 18',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16218','EPSG','1592',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2333','Xian 1980 / Gauss-Kruger zone 19',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16219','EPSG','1593',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2334','Xian 1980 / Gauss-Kruger zone 20',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16220','EPSG','1594',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2335','Xian 1980 / Gauss-Kruger zone 21',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16221','EPSG','1595',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2336','Xian 1980 / Gauss-Kruger zone 22',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16222','EPSG','1596',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2337','Xian 1980 / Gauss-Kruger zone 23',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16223','EPSG','1597',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2338','Xian 1980 / Gauss-Kruger CM 75E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16313','EPSG','1587',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2339','Xian 1980 / Gauss-Kruger CM 81E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16314','EPSG','1588',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2340','Xian 1980 / Gauss-Kruger CM 87E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16315','EPSG','1589',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2341','Xian 1980 / Gauss-Kruger CM 93E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16316','EPSG','1590',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2342','Xian 1980 / Gauss-Kruger CM 99E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16317','EPSG','1591',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2343','Xian 1980 / Gauss-Kruger CM 105E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16318','EPSG','1592',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2344','Xian 1980 / Gauss-Kruger CM 111E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16319','EPSG','1593',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2345','Xian 1980 / Gauss-Kruger CM 117E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16320','EPSG','1594',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2346','Xian 1980 / Gauss-Kruger CM 123E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16321','EPSG','1595',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2347','Xian 1980 / Gauss-Kruger CM 129E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16322','EPSG','1596',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2348','Xian 1980 / Gauss-Kruger CM 135E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16323','EPSG','1597',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2349','Xian 1980 / 3-degree Gauss-Kruger zone 25',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16285','EPSG','2711',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2350','Xian 1980 / 3-degree Gauss-Kruger zone 26',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16286','EPSG','2712',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2351','Xian 1980 / 3-degree Gauss-Kruger zone 27',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16287','EPSG','2713',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2352','Xian 1980 / 3-degree Gauss-Kruger zone 28',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16288','EPSG','2714',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2353','Xian 1980 / 3-degree Gauss-Kruger zone 29',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16289','EPSG','2715',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2354','Xian 1980 / 3-degree Gauss-Kruger zone 30',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16290','EPSG','2716',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2355','Xian 1980 / 3-degree Gauss-Kruger zone 31',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16291','EPSG','2717',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2356','Xian 1980 / 3-degree Gauss-Kruger zone 32',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16292','EPSG','2718',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2357','Xian 1980 / 3-degree Gauss-Kruger zone 33',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16293','EPSG','2719',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2358','Xian 1980 / 3-degree Gauss-Kruger zone 34',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16294','EPSG','2720',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2359','Xian 1980 / 3-degree Gauss-Kruger zone 35',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16295','EPSG','2721',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2360','Xian 1980 / 3-degree Gauss-Kruger zone 36',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16296','EPSG','2722',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2361','Xian 1980 / 3-degree Gauss-Kruger zone 37',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16297','EPSG','2723',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2362','Xian 1980 / 3-degree Gauss-Kruger zone 38',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16298','EPSG','2724',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2363','Xian 1980 / 3-degree Gauss-Kruger zone 39',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16299','EPSG','2725',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2364','Xian 1980 / 3-degree Gauss-Kruger zone 40',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16070','EPSG','2726',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2365','Xian 1980 / 3-degree Gauss-Kruger zone 41',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16071','EPSG','2727',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2366','Xian 1980 / 3-degree Gauss-Kruger zone 42',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16072','EPSG','2728',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2367','Xian 1980 / 3-degree Gauss-Kruger zone 43',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16073','EPSG','2729',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2368','Xian 1980 / 3-degree Gauss-Kruger zone 44',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16074','EPSG','2730',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2369','Xian 1980 / 3-degree Gauss-Kruger zone 45',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16075','EPSG','2731',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2370','Xian 1980 / 3-degree Gauss-Kruger CM 75E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16313','EPSG','2711',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2371','Xian 1980 / 3-degree Gauss-Kruger CM 78E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16386','EPSG','2712',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2372','Xian 1980 / 3-degree Gauss-Kruger CM 81E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16314','EPSG','2713',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2373','Xian 1980 / 3-degree Gauss-Kruger CM 84E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16388','EPSG','2714',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2374','Xian 1980 / 3-degree Gauss-Kruger CM 87E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16315','EPSG','2715',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2375','Xian 1980 / 3-degree Gauss-Kruger CM 90E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16390','EPSG','2716',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2376','Xian 1980 / 3-degree Gauss-Kruger CM 93E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16316','EPSG','2717',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2377','Xian 1980 / 3-degree Gauss-Kruger CM 96E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16392','EPSG','2718',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2378','Xian 1980 / 3-degree Gauss-Kruger CM 99E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16317','EPSG','2719',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2379','Xian 1980 / 3-degree Gauss-Kruger CM 102E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16394','EPSG','2720',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2380','Xian 1980 / 3-degree Gauss-Kruger CM 105E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16318','EPSG','2721',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2381','Xian 1980 / 3-degree Gauss-Kruger CM 108E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16396','EPSG','2722',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2382','Xian 1980 / 3-degree Gauss-Kruger CM 111E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16319','EPSG','2723',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2383','Xian 1980 / 3-degree Gauss-Kruger CM 114E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16398','EPSG','2724',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2384','Xian 1980 / 3-degree Gauss-Kruger CM 117E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16320','EPSG','2725',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2385','Xian 1980 / 3-degree Gauss-Kruger CM 120E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16170','EPSG','2726',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2386','Xian 1980 / 3-degree Gauss-Kruger CM 123E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16321','EPSG','2727',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2387','Xian 1980 / 3-degree Gauss-Kruger CM 126E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16172','EPSG','2728',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2388','Xian 1980 / 3-degree Gauss-Kruger CM 129E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16322','EPSG','2729',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2389','Xian 1980 / 3-degree Gauss-Kruger CM 132E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16174','EPSG','2730',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2390','Xian 1980 / 3-degree Gauss-Kruger CM 135E',NULL,NULL,'EPSG','4530','EPSG','4610','EPSG','16323','EPSG','2731',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2391','KKJ / Finland zone 1',NULL,NULL,'EPSG','4530','EPSG','4123','EPSG','18191','EPSG','1536',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2392','KKJ / Finland zone 2',NULL,NULL,'EPSG','4530','EPSG','4123','EPSG','18192','EPSG','1537',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2393','KKJ / Finland Uniform Coordinate System',NULL,NULL,'EPSG','4530','EPSG','4123','EPSG','18193','EPSG','1538',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2394','KKJ / Finland zone 4',NULL,NULL,'EPSG','4530','EPSG','4123','EPSG','18194','EPSG','1539',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2395','South Yemen / Gauss-Kruger zone 8',NULL,NULL,'EPSG','4530','EPSG','4164','EPSG','16208','EPSG','1492',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2396','South Yemen / Gauss-Kruger zone 9',NULL,NULL,'EPSG','4530','EPSG','4164','EPSG','16209','EPSG','1493',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2397','Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 3',NULL,NULL,'EPSG','4530','EPSG','4178','EPSG','16263','EPSG','1512',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2398','Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 4',NULL,NULL,'EPSG','4530','EPSG','4178','EPSG','16264','EPSG','1513',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2399','Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 5',NULL,NULL,'EPSG','4530','EPSG','4178','EPSG','16265','EPSG','1514',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2400','RT90 2.5 gon W',NULL,NULL,'EPSG','4530','EPSG','4124','EPSG','19929','EPSG','1225',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2401','Beijing 1954 / 3-degree Gauss-Kruger zone 25',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16285','EPSG','2711',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2402','Beijing 1954 / 3-degree Gauss-Kruger zone 26',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16286','EPSG','2712',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2403','Beijing 1954 / 3-degree Gauss-Kruger zone 27',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16287','EPSG','2713',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2404','Beijing 1954 / 3-degree Gauss-Kruger zone 28',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16288','EPSG','2714',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2405','Beijing 1954 / 3-degree Gauss-Kruger zone 29',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16289','EPSG','2715',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2406','Beijing 1954 / 3-degree Gauss-Kruger zone 30',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16290','EPSG','2716',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2407','Beijing 1954 / 3-degree Gauss-Kruger zone 31',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16291','EPSG','2717',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2408','Beijing 1954 / 3-degree Gauss-Kruger zone 32',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16292','EPSG','2718',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2409','Beijing 1954 / 3-degree Gauss-Kruger zone 33',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16293','EPSG','2719',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2410','Beijing 1954 / 3-degree Gauss-Kruger zone 34',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16294','EPSG','2720',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2411','Beijing 1954 / 3-degree Gauss-Kruger zone 35',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16295','EPSG','2721',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2412','Beijing 1954 / 3-degree Gauss-Kruger zone 36',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16296','EPSG','2722',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2413','Beijing 1954 / 3-degree Gauss-Kruger zone 37',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16297','EPSG','2723',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2414','Beijing 1954 / 3-degree Gauss-Kruger zone 38',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16298','EPSG','2724',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2415','Beijing 1954 / 3-degree Gauss-Kruger zone 39',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16299','EPSG','2725',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2416','Beijing 1954 / 3-degree Gauss-Kruger zone 40',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16070','EPSG','2726',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2417','Beijing 1954 / 3-degree Gauss-Kruger zone 41',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16071','EPSG','2727',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2418','Beijing 1954 / 3-degree Gauss-Kruger zone 42',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16072','EPSG','2728',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2419','Beijing 1954 / 3-degree Gauss-Kruger zone 43',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16073','EPSG','2729',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2420','Beijing 1954 / 3-degree Gauss-Kruger zone 44',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16074','EPSG','2730',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2421','Beijing 1954 / 3-degree Gauss-Kruger zone 45',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16075','EPSG','2731',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2422','Beijing 1954 / 3-degree Gauss-Kruger CM 75E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16313','EPSG','2711',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2423','Beijing 1954 / 3-degree Gauss-Kruger CM 78E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16386','EPSG','2712',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2424','Beijing 1954 / 3-degree Gauss-Kruger CM 81E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16314','EPSG','2713',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2425','Beijing 1954 / 3-degree Gauss-Kruger CM 84E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16388','EPSG','2714',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2426','Beijing 1954 / 3-degree Gauss-Kruger CM 87E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16315','EPSG','2715',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2427','Beijing 1954 / 3-degree Gauss-Kruger CM 90E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16390','EPSG','2716',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2428','Beijing 1954 / 3-degree Gauss-Kruger CM 93E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16316','EPSG','2717',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2429','Beijing 1954 / 3-degree Gauss-Kruger CM 96E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16392','EPSG','2718',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2430','Beijing 1954 / 3-degree Gauss-Kruger CM 99E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16317','EPSG','2719',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2431','Beijing 1954 / 3-degree Gauss-Kruger CM 102E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16394','EPSG','2720',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2432','Beijing 1954 / 3-degree Gauss-Kruger CM 105E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16318','EPSG','2721',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2433','Beijing 1954 / 3-degree Gauss-Kruger CM 108E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16396','EPSG','2722',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2434','Beijing 1954 / 3-degree Gauss-Kruger CM 111E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16319','EPSG','2723',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2435','Beijing 1954 / 3-degree Gauss-Kruger CM 114E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16398','EPSG','2724',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2436','Beijing 1954 / 3-degree Gauss-Kruger CM 117E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16320','EPSG','2725',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2437','Beijing 1954 / 3-degree Gauss-Kruger CM 120E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16170','EPSG','2726',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2438','Beijing 1954 / 3-degree Gauss-Kruger CM 123E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16321','EPSG','2727',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2439','Beijing 1954 / 3-degree Gauss-Kruger CM 126E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16172','EPSG','2728',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2440','Beijing 1954 / 3-degree Gauss-Kruger CM 129E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16322','EPSG','2729',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2441','Beijing 1954 / 3-degree Gauss-Kruger CM 132E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16174','EPSG','2730',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2442','Beijing 1954 / 3-degree Gauss-Kruger CM 135E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16323','EPSG','2731',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2443','JGD2000 / Japan Plane Rectangular CS I',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17801','EPSG','1854',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2444','JGD2000 / Japan Plane Rectangular CS II',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17802','EPSG','1855',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2445','JGD2000 / Japan Plane Rectangular CS III',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17803','EPSG','1856',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2446','JGD2000 / Japan Plane Rectangular CS IV',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17804','EPSG','1857',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2447','JGD2000 / Japan Plane Rectangular CS V',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17805','EPSG','1858',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2448','JGD2000 / Japan Plane Rectangular CS VI',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17806','EPSG','1859',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2449','JGD2000 / Japan Plane Rectangular CS VII',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17807','EPSG','1860',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2450','JGD2000 / Japan Plane Rectangular CS VIII',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17808','EPSG','1861',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2451','JGD2000 / Japan Plane Rectangular CS IX',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17809','EPSG','1862',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2452','JGD2000 / Japan Plane Rectangular CS X',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17810','EPSG','1863',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2453','JGD2000 / Japan Plane Rectangular CS XI',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17811','EPSG','1864',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2454','JGD2000 / Japan Plane Rectangular CS XII',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17812','EPSG','1865',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2455','JGD2000 / Japan Plane Rectangular CS XIII',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17813','EPSG','1866',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2456','JGD2000 / Japan Plane Rectangular CS XIV',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17814','EPSG','1867',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2457','JGD2000 / Japan Plane Rectangular CS XV',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17815','EPSG','1868',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2458','JGD2000 / Japan Plane Rectangular CS XVI',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17816','EPSG','1869',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2459','JGD2000 / Japan Plane Rectangular CS XVII',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17817','EPSG','1870',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2460','JGD2000 / Japan Plane Rectangular CS XVIII',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17818','EPSG','1871',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2461','JGD2000 / Japan Plane Rectangular CS XIX',NULL,NULL,'EPSG','4530','EPSG','4612','EPSG','17819','EPSG','1872',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2462','Albanian 1987 / Gauss-Kruger zone 4',NULL,NULL,'EPSG','4530','EPSG','4191','EPSG','16204','EPSG','3212',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2463','Pulkovo 1995 / Gauss-Kruger CM 21E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16304','EPSG','1763',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2464','Pulkovo 1995 / Gauss-Kruger CM 27E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16305','EPSG','1764',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2465','Pulkovo 1995 / Gauss-Kruger CM 33E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16306','EPSG','1765',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2466','Pulkovo 1995 / Gauss-Kruger CM 39E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16307','EPSG','1766',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2467','Pulkovo 1995 / Gauss-Kruger CM 45E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16308','EPSG','1767',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2468','Pulkovo 1995 / Gauss-Kruger CM 51E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16309','EPSG','1768',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2469','Pulkovo 1995 / Gauss-Kruger CM 57E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16310','EPSG','1769',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2470','Pulkovo 1995 / Gauss-Kruger CM 63E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16311','EPSG','1770',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2471','Pulkovo 1995 / Gauss-Kruger CM 69E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16312','EPSG','1771',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2472','Pulkovo 1995 / Gauss-Kruger CM 75E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16313','EPSG','1772',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2473','Pulkovo 1995 / Gauss-Kruger CM 81E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16314','EPSG','1773',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2474','Pulkovo 1995 / Gauss-Kruger CM 87E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16315','EPSG','1774',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2475','Pulkovo 1995 / Gauss-Kruger CM 93E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16316','EPSG','1775',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2476','Pulkovo 1995 / Gauss-Kruger CM 99E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16317','EPSG','1776',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2477','Pulkovo 1995 / Gauss-Kruger CM 105E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16318','EPSG','1777',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2478','Pulkovo 1995 / Gauss-Kruger CM 111E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16319','EPSG','1778',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2479','Pulkovo 1995 / Gauss-Kruger CM 117E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16320','EPSG','1779',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2480','Pulkovo 1995 / Gauss-Kruger CM 123E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16321','EPSG','1780',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2481','Pulkovo 1995 / Gauss-Kruger CM 129E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16322','EPSG','1781',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2482','Pulkovo 1995 / Gauss-Kruger CM 135E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16323','EPSG','1782',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2483','Pulkovo 1995 / Gauss-Kruger CM 141E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16324','EPSG','1783',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2484','Pulkovo 1995 / Gauss-Kruger CM 147E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16325','EPSG','1784',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2485','Pulkovo 1995 / Gauss-Kruger CM 153E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16326','EPSG','1785',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2486','Pulkovo 1995 / Gauss-Kruger CM 159E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16327','EPSG','1786',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2487','Pulkovo 1995 / Gauss-Kruger CM 165E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16328','EPSG','1787',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2488','Pulkovo 1995 / Gauss-Kruger CM 171E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16329','EPSG','1788',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2489','Pulkovo 1995 / Gauss-Kruger CM 177E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16330','EPSG','1789',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2490','Pulkovo 1995 / Gauss-Kruger CM 177W',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16331','EPSG','1790',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2491','Pulkovo 1995 / Gauss-Kruger CM 171W',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16332','EPSG','1791',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2492','Pulkovo 1942 / Gauss-Kruger CM 9E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16302','EPSG','1805',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2493','Pulkovo 1942 / Gauss-Kruger CM 15E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16303','EPSG','1792',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2494','Pulkovo 1942 / Gauss-Kruger CM 21E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16304','EPSG','1793',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2495','Pulkovo 1942 / Gauss-Kruger CM 27E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16305','EPSG','1794',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2496','Pulkovo 1942 / Gauss-Kruger CM 33E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16306','EPSG','1795',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2497','Pulkovo 1942 / Gauss-Kruger CM 39E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16307','EPSG','1796',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2498','Pulkovo 1942 / Gauss-Kruger CM 45E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16308','EPSG','1797',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2499','Pulkovo 1942 / Gauss-Kruger CM 51E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16309','EPSG','1798',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2500','Pulkovo 1942 / Gauss-Kruger CM 57E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16310','EPSG','1799',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2501','Pulkovo 1942 / Gauss-Kruger CM 63E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16311','EPSG','1800',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2502','Pulkovo 1942 / Gauss-Kruger CM 69E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16312','EPSG','1801',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2503','Pulkovo 1942 / Gauss-Kruger CM 75E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16313','EPSG','1802',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2504','Pulkovo 1942 / Gauss-Kruger CM 81E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16314','EPSG','1803',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2505','Pulkovo 1942 / Gauss-Kruger CM 87E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16315','EPSG','1804',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2506','Pulkovo 1942 / Gauss-Kruger CM 93E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16316','EPSG','1775',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2507','Pulkovo 1942 / Gauss-Kruger CM 99E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16317','EPSG','1776',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2508','Pulkovo 1942 / Gauss-Kruger CM 105E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16318','EPSG','1777',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2509','Pulkovo 1942 / Gauss-Kruger CM 111E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16319','EPSG','1778',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2510','Pulkovo 1942 / Gauss-Kruger CM 117E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16320','EPSG','1779',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2511','Pulkovo 1942 / Gauss-Kruger CM 123E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16321','EPSG','1780',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2512','Pulkovo 1942 / Gauss-Kruger CM 129E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16322','EPSG','1781',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2513','Pulkovo 1942 / Gauss-Kruger CM 135E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16323','EPSG','1782',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2514','Pulkovo 1942 / Gauss-Kruger CM 141E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16324','EPSG','1783',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2515','Pulkovo 1942 / Gauss-Kruger CM 147E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16325','EPSG','1784',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2516','Pulkovo 1942 / Gauss-Kruger CM 153E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16326','EPSG','1785',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2517','Pulkovo 1942 / Gauss-Kruger CM 159E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16327','EPSG','1786',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2518','Pulkovo 1942 / Gauss-Kruger CM 165E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16328','EPSG','1787',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2519','Pulkovo 1942 / Gauss-Kruger CM 171E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16329','EPSG','1788',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2520','Pulkovo 1942 / Gauss-Kruger CM 177E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16330','EPSG','1789',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2521','Pulkovo 1942 / Gauss-Kruger CM 177W',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16331','EPSG','1790',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2522','Pulkovo 1942 / Gauss-Kruger CM 171W',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16332','EPSG','1791',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2523','Pulkovo 1942 / 3-degree Gauss-Kruger zone 7',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16267','EPSG','2653',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2524','Pulkovo 1942 / 3-degree Gauss-Kruger zone 8',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16268','EPSG','2654',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2525','Pulkovo 1942 / 3-degree Gauss-Kruger zone 9',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16269','EPSG','2655',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2526','Pulkovo 1942 / 3-degree Gauss-Kruger zone 10',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16270','EPSG','2656',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2527','Pulkovo 1942 / 3-degree Gauss-Kruger zone 11',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16271','EPSG','2657',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2528','Pulkovo 1942 / 3-degree Gauss-Kruger zone 12',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16272','EPSG','2658',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2529','Pulkovo 1942 / 3-degree Gauss-Kruger zone 13',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16273','EPSG','2659',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2530','Pulkovo 1942 / 3-degree Gauss-Kruger zone 14',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16274','EPSG','2660',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2531','Pulkovo 1942 / 3-degree Gauss-Kruger zone 15',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16275','EPSG','2661',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2532','Pulkovo 1942 / 3-degree Gauss-Kruger zone 16',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16276','EPSG','2662',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2533','Pulkovo 1942 / 3-degree Gauss-Kruger zone 17',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16277','EPSG','2663',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2534','Pulkovo 1942 / 3-degree Gauss-Kruger zone 18',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16278','EPSG','2664',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2535','Pulkovo 1942 / 3-degree Gauss-Kruger zone 19',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16279','EPSG','2665',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2536','Pulkovo 1942 / 3-degree Gauss-Kruger zone 20',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16280','EPSG','2666',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2537','Pulkovo 1942 / 3-degree Gauss-Kruger zone 21',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16281','EPSG','2667',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2538','Pulkovo 1942 / 3-degree Gauss-Kruger zone 22',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16282','EPSG','2668',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2539','Pulkovo 1942 / 3-degree Gauss-Kruger zone 23',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16283','EPSG','2669',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2540','Pulkovo 1942 / 3-degree Gauss-Kruger zone 24',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16284','EPSG','2670',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2541','Pulkovo 1942 / 3-degree Gauss-Kruger zone 25',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16285','EPSG','2671',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2542','Pulkovo 1942 / 3-degree Gauss-Kruger zone 26',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16286','EPSG','2672',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2543','Pulkovo 1942 / 3-degree Gauss-Kruger zone 27',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16287','EPSG','2673',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2544','Pulkovo 1942 / 3-degree Gauss-Kruger zone 28',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16288','EPSG','2674',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2545','Pulkovo 1942 / 3-degree Gauss-Kruger zone 29',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16289','EPSG','2675',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2546','Pulkovo 1942 / 3-degree Gauss-Kruger zone 30',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16290','EPSG','2676',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2547','Pulkovo 1942 / 3-degree Gauss-Kruger zone 31',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16291','EPSG','2677',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2548','Pulkovo 1942 / 3-degree Gauss-Kruger zone 32',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16292','EPSG','2678',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2549','Pulkovo 1942 / 3-degree Gauss-Kruger zone 33',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16293','EPSG','2679',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2550','Samboja / UTM zone 50S',NULL,NULL,'EPSG','4400','EPSG','4125','EPSG','16150','EPSG','1328',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2551','Pulkovo 1942 / 3-degree Gauss-Kruger zone 34',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16294','EPSG','2680',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2552','Pulkovo 1942 / 3-degree Gauss-Kruger zone 35',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16295','EPSG','2681',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2553','Pulkovo 1942 / 3-degree Gauss-Kruger zone 36',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16296','EPSG','2682',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2554','Pulkovo 1942 / 3-degree Gauss-Kruger zone 37',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16297','EPSG','2683',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2555','Pulkovo 1942 / 3-degree Gauss-Kruger zone 38',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16298','EPSG','2684',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2556','Pulkovo 1942 / 3-degree Gauss-Kruger zone 39',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16299','EPSG','2685',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2557','Pulkovo 1942 / 3-degree Gauss-Kruger zone 40',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16070','EPSG','2686',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2558','Pulkovo 1942 / 3-degree Gauss-Kruger zone 41',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16071','EPSG','2687',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2559','Pulkovo 1942 / 3-degree Gauss-Kruger zone 42',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16072','EPSG','2688',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2560','Pulkovo 1942 / 3-degree Gauss-Kruger zone 43',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16073','EPSG','2689',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2561','Pulkovo 1942 / 3-degree Gauss-Kruger zone 44',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16074','EPSG','2690',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2562','Pulkovo 1942 / 3-degree Gauss-Kruger zone 45',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16075','EPSG','2691',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2563','Pulkovo 1942 / 3-degree Gauss-Kruger zone 46',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16076','EPSG','2692',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2564','Pulkovo 1942 / 3-degree Gauss-Kruger zone 47',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16077','EPSG','2693',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2565','Pulkovo 1942 / 3-degree Gauss-Kruger zone 48',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16078','EPSG','2694',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2566','Pulkovo 1942 / 3-degree Gauss-Kruger zone 49',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16079','EPSG','2695',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2567','Pulkovo 1942 / 3-degree Gauss-Kruger zone 50',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16080','EPSG','2696',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2568','Pulkovo 1942 / 3-degree Gauss-Kruger zone 51',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16081','EPSG','2697',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2569','Pulkovo 1942 / 3-degree Gauss-Kruger zone 52',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16082','EPSG','2698',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2570','Pulkovo 1942 / 3-degree Gauss-Kruger zone 53',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16083','EPSG','2699',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2571','Pulkovo 1942 / 3-degree Gauss-Kruger zone 54',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16084','EPSG','2700',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2572','Pulkovo 1942 / 3-degree Gauss-Kruger zone 55',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16085','EPSG','2701',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2573','Pulkovo 1942 / 3-degree Gauss-Kruger zone 56',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16086','EPSG','2702',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2574','Pulkovo 1942 / 3-degree Gauss-Kruger zone 57',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16087','EPSG','2703',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2575','Pulkovo 1942 / 3-degree Gauss-Kruger zone 58',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16088','EPSG','2704',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2576','Pulkovo 1942 / 3-degree Gauss-Kruger zone 59',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16089','EPSG','2705',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2577','Pulkovo 1942 / 3-degree Gauss-Kruger zone 60',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16090','EPSG','2706',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2578','Pulkovo 1942 / 3-degree Gauss-Kruger zone 61',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16091','EPSG','2707',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2579','Pulkovo 1942 / 3-degree Gauss-Kruger zone 62',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16092','EPSG','2708',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2580','Pulkovo 1942 / 3-degree Gauss-Kruger zone 63',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16093','EPSG','2709',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2581','Pulkovo 1942 / 3-degree Gauss-Kruger zone 64',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16094','EPSG','2710',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2582','Pulkovo 1942 / 3-degree Gauss-Kruger CM 21E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16304','EPSG','2653',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2583','Pulkovo 1942 / 3-degree Gauss-Kruger CM 24E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16368','EPSG','2654',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2584','Pulkovo 1942 / 3-degree Gauss-Kruger CM 27E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16305','EPSG','2655',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2585','Pulkovo 1942 / 3-degree Gauss-Kruger CM 30E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16370','EPSG','2656',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2586','Pulkovo 1942 / 3-degree Gauss-Kruger CM 33E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16306','EPSG','2657',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2587','Pulkovo 1942 / 3-degree Gauss-Kruger CM 36E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16372','EPSG','2658',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2588','Pulkovo 1942 / 3-degree Gauss-Kruger CM 39E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16307','EPSG','2659',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2589','Pulkovo 1942 / 3-degree Gauss-Kruger CM 42E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16374','EPSG','2660',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2590','Pulkovo 1942 / 3-degree Gauss-Kruger CM 45E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16308','EPSG','2661',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2591','Pulkovo 1942 / 3-degree Gauss-Kruger CM 48E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16376','EPSG','2662',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2592','Pulkovo 1942 / 3-degree Gauss-Kruger CM 51E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16309','EPSG','2663',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2593','Pulkovo 1942 / 3-degree Gauss-Kruger CM 54E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16378','EPSG','2664',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2594','Pulkovo 1942 / 3-degree Gauss-Kruger CM 57E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16310','EPSG','2665',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2595','Pulkovo 1942 / 3-degree Gauss-Kruger CM 60E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16380','EPSG','2666',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2596','Pulkovo 1942 / 3-degree Gauss-Kruger CM 63E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16311','EPSG','2667',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2597','Pulkovo 1942 / 3-degree Gauss-Kruger CM 66E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16382','EPSG','2668',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2598','Pulkovo 1942 / 3-degree Gauss-Kruger CM 69E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16312','EPSG','2669',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2599','Pulkovo 1942 / 3-degree Gauss-Kruger CM 72E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16384','EPSG','2670',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2600','Lietuvos Koordinoei Sistema 1994',NULL,NULL,'EPSG','4530','EPSG','4669','EPSG','19934','EPSG','1145',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2601','Pulkovo 1942 / 3-degree Gauss-Kruger CM 75E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16313','EPSG','2671',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2602','Pulkovo 1942 / 3-degree Gauss-Kruger CM 78E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16386','EPSG','2672',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2603','Pulkovo 1942 / 3-degree Gauss-Kruger CM 81E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16314','EPSG','2673',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2604','Pulkovo 1942 / 3-degree Gauss-Kruger CM 84E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16388','EPSG','2674',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2605','Pulkovo 1942 / 3-degree Gauss-Kruger CM 87E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16315','EPSG','2675',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2606','Pulkovo 1942 / 3-degree Gauss-Kruger CM 90E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16390','EPSG','2676',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2607','Pulkovo 1942 / 3-degree Gauss-Kruger CM 93E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16316','EPSG','2677',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2608','Pulkovo 1942 / 3-degree Gauss-Kruger CM 96E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16392','EPSG','2678',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2609','Pulkovo 1942 / 3-degree Gauss-Kruger CM 99E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16317','EPSG','2679',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2610','Pulkovo 1942 / 3-degree Gauss-Kruger CM 102E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16394','EPSG','2680',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2611','Pulkovo 1942 / 3-degree Gauss-Kruger CM 105E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16318','EPSG','2681',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2612','Pulkovo 1942 / 3-degree Gauss-Kruger CM 108E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16396','EPSG','2682',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2613','Pulkovo 1942 / 3-degree Gauss-Kruger CM 111E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16319','EPSG','2683',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2614','Pulkovo 1942 / 3-degree Gauss-Kruger CM 114E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16398','EPSG','2684',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2615','Pulkovo 1942 / 3-degree Gauss-Kruger CM 117E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16320','EPSG','2685',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2616','Pulkovo 1942 / 3-degree Gauss-Kruger CM 120E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16170','EPSG','2686',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2617','Pulkovo 1942 / 3-degree Gauss-Kruger CM 123E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16321','EPSG','2687',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2618','Pulkovo 1942 / 3-degree Gauss-Kruger CM 126E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16172','EPSG','2688',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2619','Pulkovo 1942 / 3-degree Gauss-Kruger CM 129E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16322','EPSG','2689',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2620','Pulkovo 1942 / 3-degree Gauss-Kruger CM 132E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16174','EPSG','2690',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2621','Pulkovo 1942 / 3-degree Gauss-Kruger CM 135E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16323','EPSG','2691',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2622','Pulkovo 1942 / 3-degree Gauss-Kruger CM 138E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16176','EPSG','2692',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2623','Pulkovo 1942 / 3-degree Gauss-Kruger CM 141E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16324','EPSG','2693',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2624','Pulkovo 1942 / 3-degree Gauss-Kruger CM 144E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16178','EPSG','2694',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2625','Pulkovo 1942 / 3-degree Gauss-Kruger CM 147E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16325','EPSG','2695',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2626','Pulkovo 1942 / 3-degree Gauss-Kruger CM 150E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16180','EPSG','2696',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2627','Pulkovo 1942 / 3-degree Gauss-Kruger CM 153E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16326','EPSG','2697',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2628','Pulkovo 1942 / 3-degree Gauss-Kruger CM 156E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16182','EPSG','2698',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2629','Pulkovo 1942 / 3-degree Gauss-Kruger CM 159E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16327','EPSG','2699',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2630','Pulkovo 1942 / 3-degree Gauss-Kruger CM 162E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16184','EPSG','2700',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2631','Pulkovo 1942 / 3-degree Gauss-Kruger CM 165E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16328','EPSG','2701',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2632','Pulkovo 1942 / 3-degree Gauss-Kruger CM 168E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16186','EPSG','2702',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2633','Pulkovo 1942 / 3-degree Gauss-Kruger CM 171E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16329','EPSG','2703',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2634','Pulkovo 1942 / 3-degree Gauss-Kruger CM 174E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16188','EPSG','2704',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2635','Pulkovo 1942 / 3-degree Gauss-Kruger CM 177E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16330','EPSG','2705',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2636','Pulkovo 1942 / 3-degree Gauss-Kruger CM 180E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16190','EPSG','2706',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2637','Pulkovo 1942 / 3-degree Gauss-Kruger CM 177W',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16331','EPSG','2707',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2638','Pulkovo 1942 / 3-degree Gauss-Kruger CM 174W',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16192','EPSG','2708',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2639','Pulkovo 1942 / 3-degree Gauss-Kruger CM 171W',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16332','EPSG','2709',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2640','Pulkovo 1942 / 3-degree Gauss-Kruger CM 168W',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16194','EPSG','2710',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2641','Pulkovo 1995 / 3-degree Gauss-Kruger zone 7',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16267','EPSG','2747',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2642','Pulkovo 1995 / 3-degree Gauss-Kruger zone 8',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16268','EPSG','2748',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2643','Pulkovo 1995 / 3-degree Gauss-Kruger zone 9',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16269','EPSG','2749',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2644','Pulkovo 1995 / 3-degree Gauss-Kruger zone 10',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16270','EPSG','2750',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2645','Pulkovo 1995 / 3-degree Gauss-Kruger zone 11',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16271','EPSG','2751',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2646','Pulkovo 1995 / 3-degree Gauss-Kruger zone 12',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16272','EPSG','2752',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2647','Pulkovo 1995 / 3-degree Gauss-Kruger zone 13',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16273','EPSG','2753',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2648','Pulkovo 1995 / 3-degree Gauss-Kruger zone 14',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16274','EPSG','2754',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2649','Pulkovo 1995 / 3-degree Gauss-Kruger zone 15',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16275','EPSG','2755',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2650','Pulkovo 1995 / 3-degree Gauss-Kruger zone 16',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16276','EPSG','2756',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2651','Pulkovo 1995 / 3-degree Gauss-Kruger zone 17',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16277','EPSG','2757',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2652','Pulkovo 1995 / 3-degree Gauss-Kruger zone 18',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16278','EPSG','2758',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2653','Pulkovo 1995 / 3-degree Gauss-Kruger zone 19',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16279','EPSG','2759',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2654','Pulkovo 1995 / 3-degree Gauss-Kruger zone 20',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16280','EPSG','2760',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2655','Pulkovo 1995 / 3-degree Gauss-Kruger zone 21',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16281','EPSG','2761',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2656','Pulkovo 1995 / 3-degree Gauss-Kruger zone 22',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16282','EPSG','2762',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2657','Pulkovo 1995 / 3-degree Gauss-Kruger zone 23',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16283','EPSG','2763',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2658','Pulkovo 1995 / 3-degree Gauss-Kruger zone 24',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16284','EPSG','2764',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2659','Pulkovo 1995 / 3-degree Gauss-Kruger zone 25',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16285','EPSG','2765',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2660','Pulkovo 1995 / 3-degree Gauss-Kruger zone 26',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16286','EPSG','2766',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2661','Pulkovo 1995 / 3-degree Gauss-Kruger zone 27',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16287','EPSG','2767',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2662','Pulkovo 1995 / 3-degree Gauss-Kruger zone 28',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16288','EPSG','2768',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2663','Pulkovo 1995 / 3-degree Gauss-Kruger zone 29',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16289','EPSG','2769',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2664','Pulkovo 1995 / 3-degree Gauss-Kruger zone 30',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16290','EPSG','2676',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2665','Pulkovo 1995 / 3-degree Gauss-Kruger zone 31',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16291','EPSG','2677',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2666','Pulkovo 1995 / 3-degree Gauss-Kruger zone 32',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16292','EPSG','2678',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2667','Pulkovo 1995 / 3-degree Gauss-Kruger zone 33',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16293','EPSG','2679',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2668','Pulkovo 1995 / 3-degree Gauss-Kruger zone 34',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16294','EPSG','2680',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2669','Pulkovo 1995 / 3-degree Gauss-Kruger zone 35',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16295','EPSG','2681',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2670','Pulkovo 1995 / 3-degree Gauss-Kruger zone 36',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16296','EPSG','2682',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2671','Pulkovo 1995 / 3-degree Gauss-Kruger zone 37',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16297','EPSG','2683',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2672','Pulkovo 1995 / 3-degree Gauss-Kruger zone 38',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16298','EPSG','2684',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2673','Pulkovo 1995 / 3-degree Gauss-Kruger zone 39',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16299','EPSG','2685',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2674','Pulkovo 1995 / 3-degree Gauss-Kruger zone 40',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16070','EPSG','2686',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2675','Pulkovo 1995 / 3-degree Gauss-Kruger zone 41',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16071','EPSG','2687',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2676','Pulkovo 1995 / 3-degree Gauss-Kruger zone 42',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16072','EPSG','2688',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2677','Pulkovo 1995 / 3-degree Gauss-Kruger zone 43',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16073','EPSG','2689',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2678','Pulkovo 1995 / 3-degree Gauss-Kruger zone 44',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16074','EPSG','2690',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2679','Pulkovo 1995 / 3-degree Gauss-Kruger zone 45',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16075','EPSG','2691',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2680','Pulkovo 1995 / 3-degree Gauss-Kruger zone 46',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16076','EPSG','2692',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2681','Pulkovo 1995 / 3-degree Gauss-Kruger zone 47',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16077','EPSG','2693',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2682','Pulkovo 1995 / 3-degree Gauss-Kruger zone 48',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16078','EPSG','2694',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2683','Pulkovo 1995 / 3-degree Gauss-Kruger zone 49',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16079','EPSG','2695',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2684','Pulkovo 1995 / 3-degree Gauss-Kruger zone 50',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16080','EPSG','2696',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2685','Pulkovo 1995 / 3-degree Gauss-Kruger zone 51',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16081','EPSG','2697',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2686','Pulkovo 1995 / 3-degree Gauss-Kruger zone 52',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16082','EPSG','2698',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2687','Pulkovo 1995 / 3-degree Gauss-Kruger zone 53',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16083','EPSG','2699',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2688','Pulkovo 1995 / 3-degree Gauss-Kruger zone 54',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16084','EPSG','2700',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2689','Pulkovo 1995 / 3-degree Gauss-Kruger zone 55',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16085','EPSG','2701',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2690','Pulkovo 1995 / 3-degree Gauss-Kruger zone 56',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16086','EPSG','2702',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2691','Pulkovo 1995 / 3-degree Gauss-Kruger zone 57',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16087','EPSG','2703',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2692','Pulkovo 1995 / 3-degree Gauss-Kruger zone 58',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16088','EPSG','2704',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2693','Pulkovo 1995 / 3-degree Gauss-Kruger zone 59',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16089','EPSG','2705',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2694','Pulkovo 1995 / 3-degree Gauss-Kruger zone 60',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16090','EPSG','2706',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2695','Pulkovo 1995 / 3-degree Gauss-Kruger zone 61',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16091','EPSG','2707',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2696','Pulkovo 1995 / 3-degree Gauss-Kruger zone 62',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16092','EPSG','2708',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2697','Pulkovo 1995 / 3-degree Gauss-Kruger zone 63',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16093','EPSG','2709',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2698','Pulkovo 1995 / 3-degree Gauss-Kruger zone 64',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16094','EPSG','2710',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2699','Pulkovo 1995 / 3-degree Gauss-Kruger CM 21E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16304','EPSG','2747',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2700','Pulkovo 1995 / 3-degree Gauss-Kruger CM 24E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16368','EPSG','2748',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2701','Pulkovo 1995 / 3-degree Gauss-Kruger CM 27E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16305','EPSG','2749',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2702','Pulkovo 1995 / 3-degree Gauss-Kruger CM 30E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16370','EPSG','2750',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2703','Pulkovo 1995 / 3-degree Gauss-Kruger CM 33E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16306','EPSG','2751',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2704','Pulkovo 1995 / 3-degree Gauss-Kruger CM 36E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16372','EPSG','2752',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2705','Pulkovo 1995 / 3-degree Gauss-Kruger CM 39E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16307','EPSG','2753',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2706','Pulkovo 1995 / 3-degree Gauss-Kruger CM 42E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16374','EPSG','2754',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2707','Pulkovo 1995 / 3-degree Gauss-Kruger CM 45E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16308','EPSG','2755',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2708','Pulkovo 1995 / 3-degree Gauss-Kruger CM 48E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16376','EPSG','2756',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2709','Pulkovo 1995 / 3-degree Gauss-Kruger CM 51E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16309','EPSG','2757',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2710','Pulkovo 1995 / 3-degree Gauss-Kruger CM 54E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16378','EPSG','2758',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2711','Pulkovo 1995 / 3-degree Gauss-Kruger CM 57E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16310','EPSG','2759',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2712','Pulkovo 1995 / 3-degree Gauss-Kruger CM 60E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16380','EPSG','2760',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2713','Pulkovo 1995 / 3-degree Gauss-Kruger CM 63E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16311','EPSG','2761',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2714','Pulkovo 1995 / 3-degree Gauss-Kruger CM 66E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16382','EPSG','2762',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2715','Pulkovo 1995 / 3-degree Gauss-Kruger CM 69E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16312','EPSG','2763',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2716','Pulkovo 1995 / 3-degree Gauss-Kruger CM 72E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16384','EPSG','2764',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2717','Pulkovo 1995 / 3-degree Gauss-Kruger CM 75E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16313','EPSG','2765',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2718','Pulkovo 1995 / 3-degree Gauss-Kruger CM 78E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16386','EPSG','2766',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2719','Pulkovo 1995 / 3-degree Gauss-Kruger CM 81E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16314','EPSG','2767',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2720','Pulkovo 1995 / 3-degree Gauss-Kruger CM 84E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16388','EPSG','2768',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2721','Pulkovo 1995 / 3-degree Gauss-Kruger CM 87E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16315','EPSG','2769',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2722','Pulkovo 1995 / 3-degree Gauss-Kruger CM 90E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16390','EPSG','2676',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2723','Pulkovo 1995 / 3-degree Gauss-Kruger CM 93E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16316','EPSG','2677',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2724','Pulkovo 1995 / 3-degree Gauss-Kruger CM 96E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16392','EPSG','2678',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2725','Pulkovo 1995 / 3-degree Gauss-Kruger CM 99E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16317','EPSG','2679',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2726','Pulkovo 1995 / 3-degree Gauss-Kruger CM 102E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16394','EPSG','2680',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2727','Pulkovo 1995 / 3-degree Gauss-Kruger CM 105E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16318','EPSG','2681',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2728','Pulkovo 1995 / 3-degree Gauss-Kruger CM 108E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16396','EPSG','2682',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2729','Pulkovo 1995 / 3-degree Gauss-Kruger CM 111E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16319','EPSG','2683',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2730','Pulkovo 1995 / 3-degree Gauss-Kruger CM 114E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16398','EPSG','2684',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2731','Pulkovo 1995 / 3-degree Gauss-Kruger CM 117E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16320','EPSG','2685',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2732','Pulkovo 1995 / 3-degree Gauss-Kruger CM 120E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16170','EPSG','2686',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2733','Pulkovo 1995 / 3-degree Gauss-Kruger CM 123E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16321','EPSG','2687',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2734','Pulkovo 1995 / 3-degree Gauss-Kruger CM 126E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16172','EPSG','2688',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2735','Pulkovo 1995 / 3-degree Gauss-Kruger CM 129E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16322','EPSG','2689',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2736','Tete / UTM zone 36S',NULL,NULL,'EPSG','4400','EPSG','4127','EPSG','16136','EPSG','1540',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2737','Tete / UTM zone 37S',NULL,NULL,'EPSG','4400','EPSG','4127','EPSG','16137','EPSG','1541',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2738','Pulkovo 1995 / 3-degree Gauss-Kruger CM 132E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16174','EPSG','2690',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2739','Pulkovo 1995 / 3-degree Gauss-Kruger CM 135E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16323','EPSG','2691',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2740','Pulkovo 1995 / 3-degree Gauss-Kruger CM 138E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16176','EPSG','2692',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2741','Pulkovo 1995 / 3-degree Gauss-Kruger CM 141E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16324','EPSG','2693',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2742','Pulkovo 1995 / 3-degree Gauss-Kruger CM 144E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16178','EPSG','2694',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2743','Pulkovo 1995 / 3-degree Gauss-Kruger CM 147E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16325','EPSG','2695',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2744','Pulkovo 1995 / 3-degree Gauss-Kruger CM 150E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16180','EPSG','2696',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2745','Pulkovo 1995 / 3-degree Gauss-Kruger CM 153E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16326','EPSG','2697',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2746','Pulkovo 1995 / 3-degree Gauss-Kruger CM 156E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16182','EPSG','2698',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2747','Pulkovo 1995 / 3-degree Gauss-Kruger CM 159E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16327','EPSG','2699',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2748','Pulkovo 1995 / 3-degree Gauss-Kruger CM 162E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16184','EPSG','2700',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2749','Pulkovo 1995 / 3-degree Gauss-Kruger CM 165E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16328','EPSG','2701',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2750','Pulkovo 1995 / 3-degree Gauss-Kruger CM 168E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16186','EPSG','2702',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2751','Pulkovo 1995 / 3-degree Gauss-Kruger CM 171E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16329','EPSG','2703',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2752','Pulkovo 1995 / 3-degree Gauss-Kruger CM 174E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16188','EPSG','2704',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2753','Pulkovo 1995 / 3-degree Gauss-Kruger CM 177E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16330','EPSG','2705',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2754','Pulkovo 1995 / 3-degree Gauss-Kruger CM 180E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16190','EPSG','2706',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2755','Pulkovo 1995 / 3-degree Gauss-Kruger CM 177W',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16331','EPSG','2707',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2756','Pulkovo 1995 / 3-degree Gauss-Kruger CM 174W',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16192','EPSG','2708',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2757','Pulkovo 1995 / 3-degree Gauss-Kruger CM 171W',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16332','EPSG','2709',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2758','Pulkovo 1995 / 3-degree Gauss-Kruger CM 168W',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16194','EPSG','2710',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2759','NAD83(HARN) / Alabama East',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10131','EPSG','2154',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2760','NAD83(HARN) / Alabama West',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10132','EPSG','2155',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2761','NAD83(HARN) / Arizona East',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10231','EPSG','2167',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2762','NAD83(HARN) / Arizona Central',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10232','EPSG','2166',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2763','NAD83(HARN) / Arizona West',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10233','EPSG','2168',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2764','NAD83(HARN) / Arkansas North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10331','EPSG','2169',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2765','NAD83(HARN) / Arkansas South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10332','EPSG','2170',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2766','NAD83(HARN) / California zone 1',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10431','EPSG','2175',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2767','NAD83(HARN) / California zone 2',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10432','EPSG','2176',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2768','NAD83(HARN) / California zone 3',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10433','EPSG','2177',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2769','NAD83(HARN) / California zone 4',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10434','EPSG','2178',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2770','NAD83(HARN) / California zone 5',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10435','EPSG','2182',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2771','NAD83(HARN) / California zone 6',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10436','EPSG','2180',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2772','NAD83(HARN) / Colorado North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10531','EPSG','2184',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2773','NAD83(HARN) / Colorado Central',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10532','EPSG','2183',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2774','NAD83(HARN) / Colorado South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10533','EPSG','2185',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2775','NAD83(HARN) / Connecticut',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10630','EPSG','1377',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2776','NAD83(HARN) / Delaware',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10730','EPSG','1378',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2777','NAD83(HARN) / Florida East',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10931','EPSG','2186',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2778','NAD83(HARN) / Florida West',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10932','EPSG','2188',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2779','NAD83(HARN) / Florida North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10933','EPSG','2187',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2780','NAD83(HARN) / Georgia East',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11031','EPSG','2189',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2781','NAD83(HARN) / Georgia West',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11032','EPSG','2190',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2782','NAD83(HARN) / Hawaii zone 1',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','15131','EPSG','1546',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2783','NAD83(HARN) / Hawaii zone 2',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','15132','EPSG','1547',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2784','NAD83(HARN) / Hawaii zone 3',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','15133','EPSG','1548',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2785','NAD83(HARN) / Hawaii zone 4',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','15134','EPSG','1549',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2786','NAD83(HARN) / Hawaii zone 5',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','15135','EPSG','1550',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2787','NAD83(HARN) / Idaho East',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11131','EPSG','2192',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2788','NAD83(HARN) / Idaho Central',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11132','EPSG','2191',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2789','NAD83(HARN) / Idaho West',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11133','EPSG','2193',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2790','NAD83(HARN) / Illinois East',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11231','EPSG','2194',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2791','NAD83(HARN) / Illinois West',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11232','EPSG','2195',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2792','NAD83(HARN) / Indiana East',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11331','EPSG','2196',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2793','NAD83(HARN) / Indiana West',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11332','EPSG','2197',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2794','NAD83(HARN) / Iowa North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11431','EPSG','2198',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2795','NAD83(HARN) / Iowa South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11432','EPSG','2199',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2796','NAD83(HARN) / Kansas North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11531','EPSG','2200',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2797','NAD83(HARN) / Kansas South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11532','EPSG','2201',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2798','NAD83(HARN) / Kentucky North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','15303','EPSG','2202',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2799','NAD83(HARN) / Kentucky South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11632','EPSG','2203',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2800','NAD83(HARN) / Louisiana North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11731','EPSG','2204',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2801','NAD83(HARN) / Louisiana South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11732','EPSG','2529',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2802','NAD83(HARN) / Maine East',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11831','EPSG','2206',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2803','NAD83(HARN) / Maine West',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11832','EPSG','2207',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2804','NAD83(HARN) / Maryland',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11930','EPSG','1389',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2805','NAD83(HARN) / Massachusetts Mainland',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12031','EPSG','2209',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2806','NAD83(HARN) / Massachusetts Island',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12032','EPSG','2208',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2807','NAD83(HARN) / Michigan North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12141','EPSG','1723',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2808','NAD83(HARN) / Michigan Central',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12142','EPSG','1724',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2809','NAD83(HARN) / Michigan South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12143','EPSG','1725',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2810','NAD83(HARN) / Minnesota North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12231','EPSG','2214',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2811','NAD83(HARN) / Minnesota Central',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12232','EPSG','2213',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2812','NAD83(HARN) / Minnesota South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12233','EPSG','2215',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2813','NAD83(HARN) / Mississippi East',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12331','EPSG','2216',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2814','NAD83(HARN) / Mississippi West',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12332','EPSG','2217',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2815','NAD83(HARN) / Missouri East',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12431','EPSG','2219',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2816','NAD83(HARN) / Missouri Central',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12432','EPSG','2218',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2817','NAD83(HARN) / Missouri West',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12433','EPSG','2220',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2818','NAD83(HARN) / Montana',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12530','EPSG','1395',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2819','NAD83(HARN) / Nebraska',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12630','EPSG','1396',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2820','NAD83(HARN) / Nevada East',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12731','EPSG','2224',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2821','NAD83(HARN) / Nevada Central',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12732','EPSG','2223',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2822','NAD83(HARN) / Nevada West',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12733','EPSG','2225',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2823','NAD83(HARN) / New Hampshire',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12830','EPSG','1398',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2824','NAD83(HARN) / New Jersey',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12930','EPSG','1399',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2825','NAD83(HARN) / New Mexico East',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13031','EPSG','2228',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2826','NAD83(HARN) / New Mexico Central',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13032','EPSG','2231',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2827','NAD83(HARN) / New Mexico West',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13033','EPSG','2232',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2828','NAD83(HARN) / New York East',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13131','EPSG','2234',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2829','NAD83(HARN) / New York Central',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13132','EPSG','2233',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2830','NAD83(HARN) / New York West',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13133','EPSG','2236',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2831','NAD83(HARN) / New York Long Island',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13134','EPSG','2235',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2832','NAD83(HARN) / North Dakota North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13331','EPSG','2237',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2833','NAD83(HARN) / North Dakota South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13332','EPSG','2238',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2834','NAD83(HARN) / Ohio North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13431','EPSG','2239',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2835','NAD83(HARN) / Ohio South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13432','EPSG','2240',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2836','NAD83(HARN) / Oklahoma North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13531','EPSG','2241',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2837','NAD83(HARN) / Oklahoma South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13532','EPSG','2242',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2838','NAD83(HARN) / Oregon North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13631','EPSG','2243',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2839','NAD83(HARN) / Oregon South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13632','EPSG','2244',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2840','NAD83(HARN) / Rhode Island',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13830','EPSG','1408',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2841','NAD83(HARN) / South Dakota North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14031','EPSG','2249',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2842','NAD83(HARN) / South Dakota South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14032','EPSG','2250',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2843','NAD83(HARN) / Tennessee',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14130','EPSG','1411',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2844','NAD83(HARN) / Texas North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14231','EPSG','2253',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2845','NAD83(HARN) / Texas North Central',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14232','EPSG','2254',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2846','NAD83(HARN) / Texas Central',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14233','EPSG','2252',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2847','NAD83(HARN) / Texas South Central',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14234','EPSG','2527',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2848','NAD83(HARN) / Texas South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14235','EPSG','2528',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2849','NAD83(HARN) / Utah North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14331','EPSG','2258',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2850','NAD83(HARN) / Utah Central',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14332','EPSG','2257',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2851','NAD83(HARN) / Utah South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14333','EPSG','2259',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2852','NAD83(HARN) / Vermont',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14430','EPSG','1414',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2853','NAD83(HARN) / Virginia North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14531','EPSG','2260',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2854','NAD83(HARN) / Virginia South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14532','EPSG','2261',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2855','NAD83(HARN) / Washington North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14631','EPSG','2273',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2856','NAD83(HARN) / Washington South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14632','EPSG','2274',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2857','NAD83(HARN) / West Virginia North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14731','EPSG','2264',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2858','NAD83(HARN) / West Virginia South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14732','EPSG','2265',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2859','NAD83(HARN) / Wisconsin North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14831','EPSG','2267',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2860','NAD83(HARN) / Wisconsin Central',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14832','EPSG','2266',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2861','NAD83(HARN) / Wisconsin South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14833','EPSG','2268',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2862','NAD83(HARN) / Wyoming East',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14931','EPSG','2269',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2863','NAD83(HARN) / Wyoming East Central',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14932','EPSG','2270',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2864','NAD83(HARN) / Wyoming West Central',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14933','EPSG','2272',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2865','NAD83(HARN) / Wyoming West',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14934','EPSG','2271',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2866','NAD83(HARN) / Puerto Rico and Virgin Is.',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','15230','EPSG','3634',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2867','NAD83(HARN) / Arizona East (ft)',NULL,NULL,'EPSG','4495','EPSG','4152','EPSG','15304','EPSG','2167',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2868','NAD83(HARN) / Arizona Central (ft)',NULL,NULL,'EPSG','4495','EPSG','4152','EPSG','15305','EPSG','2166',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2869','NAD83(HARN) / Arizona West (ft)',NULL,NULL,'EPSG','4495','EPSG','4152','EPSG','15306','EPSG','2168',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2870','NAD83(HARN) / California zone 1 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15307','EPSG','2175',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2871','NAD83(HARN) / California zone 2 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15308','EPSG','2176',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2872','NAD83(HARN) / California zone 3 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15309','EPSG','2177',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2873','NAD83(HARN) / California zone 4 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15310','EPSG','2178',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2874','NAD83(HARN) / California zone 5 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15311','EPSG','2182',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2875','NAD83(HARN) / California zone 6 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15312','EPSG','2180',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2876','NAD83(HARN) / Colorado North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15313','EPSG','2184',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2877','NAD83(HARN) / Colorado Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15314','EPSG','2183',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2878','NAD83(HARN) / Colorado South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15315','EPSG','2185',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2879','NAD83(HARN) / Connecticut (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15316','EPSG','1377',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2880','NAD83(HARN) / Delaware (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15317','EPSG','1378',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2881','NAD83(HARN) / Florida East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15318','EPSG','2186',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2882','NAD83(HARN) / Florida West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15319','EPSG','2188',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2883','NAD83(HARN) / Florida North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15320','EPSG','2187',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2884','NAD83(HARN) / Georgia East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15321','EPSG','2189',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2885','NAD83(HARN) / Georgia West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15322','EPSG','2190',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2886','NAD83(HARN) / Idaho East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15323','EPSG','2192',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2887','NAD83(HARN) / Idaho Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15324','EPSG','2191',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2888','NAD83(HARN) / Idaho West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15325','EPSG','2193',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2889','NAD83(HARN) / Indiana East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15326','EPSG','2196',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2890','NAD83(HARN) / Indiana West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15327','EPSG','2197',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2891','NAD83(HARN) / Kentucky North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15328','EPSG','2202',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2892','NAD83(HARN) / Kentucky South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15329','EPSG','2203',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2893','NAD83(HARN) / Maryland (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15330','EPSG','1389',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2894','NAD83(HARN) / Massachusetts Mainland (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15331','EPSG','2209',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2895','NAD83(HARN) / Massachusetts Island (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15332','EPSG','2208',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2896','NAD83(HARN) / Michigan North (ft)',NULL,NULL,'EPSG','4495','EPSG','4152','EPSG','15333','EPSG','1723',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2897','NAD83(HARN) / Michigan Central (ft)',NULL,NULL,'EPSG','4495','EPSG','4152','EPSG','15334','EPSG','1724',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2898','NAD83(HARN) / Michigan South (ft)',NULL,NULL,'EPSG','4495','EPSG','4152','EPSG','15335','EPSG','1725',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2899','NAD83(HARN) / Mississippi East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15336','EPSG','2216',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2900','NAD83(HARN) / Mississippi West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15337','EPSG','2217',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2901','NAD83(HARN) / Montana (ft)',NULL,NULL,'EPSG','4495','EPSG','4152','EPSG','15338','EPSG','1395',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2902','NAD83(HARN) / New Mexico East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15339','EPSG','2228',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2903','NAD83(HARN) / New Mexico Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15340','EPSG','2231',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2904','NAD83(HARN) / New Mexico West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15341','EPSG','2232',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2905','NAD83(HARN) / New York East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15342','EPSG','2234',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2906','NAD83(HARN) / New York Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15343','EPSG','2233',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2907','NAD83(HARN) / New York West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15344','EPSG','2236',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2908','NAD83(HARN) / New York Long Island (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15345','EPSG','2235',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2909','NAD83(HARN) / North Dakota North (ft)',NULL,NULL,'EPSG','4495','EPSG','4152','EPSG','15347','EPSG','2237',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2910','NAD83(HARN) / North Dakota South (ft)',NULL,NULL,'EPSG','4495','EPSG','4152','EPSG','15348','EPSG','2238',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2911','NAD83(HARN) / Oklahoma North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15349','EPSG','2241',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2912','NAD83(HARN) / Oklahoma South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15350','EPSG','2242',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2913','NAD83(HARN) / Oregon North (ft)',NULL,NULL,'EPSG','4495','EPSG','4152','EPSG','15351','EPSG','2243',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2914','NAD83(HARN) / Oregon South (ft)',NULL,NULL,'EPSG','4495','EPSG','4152','EPSG','15352','EPSG','2244',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2915','NAD83(HARN) / Tennessee (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15356','EPSG','1411',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2916','NAD83(HARN) / Texas North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15357','EPSG','2253',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2917','NAD83(HARN) / Texas North Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15358','EPSG','2254',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2918','NAD83(HARN) / Texas Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15359','EPSG','2252',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2919','NAD83(HARN) / Texas South Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15360','EPSG','2527',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2920','NAD83(HARN) / Texas South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15361','EPSG','2528',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2921','NAD83(HARN) / Utah North (ft)',NULL,NULL,'EPSG','4495','EPSG','4152','EPSG','15362','EPSG','2258',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2922','NAD83(HARN) / Utah Central (ft)',NULL,NULL,'EPSG','4495','EPSG','4152','EPSG','15363','EPSG','2257',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2923','NAD83(HARN) / Utah South (ft)',NULL,NULL,'EPSG','4495','EPSG','4152','EPSG','15364','EPSG','2259',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2924','NAD83(HARN) / Virginia North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15365','EPSG','2260',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2925','NAD83(HARN) / Virginia South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15366','EPSG','2261',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2926','NAD83(HARN) / Washington North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15367','EPSG','2273',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2927','NAD83(HARN) / Washington South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15368','EPSG','2274',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2928','NAD83(HARN) / Wisconsin North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15369','EPSG','2267',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2929','NAD83(HARN) / Wisconsin Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15370','EPSG','2266',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2930','NAD83(HARN) / Wisconsin South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15371','EPSG','2268',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2931','Beduaram / TM 13 NE',NULL,NULL,'EPSG','4499','EPSG','4213','EPSG','16413','EPSG','2771',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2932','QND95 / Qatar National Grid',NULL,NULL,'EPSG','4400','EPSG','4614','EPSG','19919','EPSG','1346',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2933','Segara / UTM zone 50S',NULL,NULL,'EPSG','4400','EPSG','4613','EPSG','16150','EPSG','1328',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2934','Segara (Jakarta) / NEIEZ',NULL,NULL,'EPSG','4499','EPSG','4820','EPSG','19905','EPSG','1360',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2935','Pulkovo 1942 / CS63 zone A1',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','18441','EPSG','2772',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2936','Pulkovo 1942 / CS63 zone A2',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','18442','EPSG','2773',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2937','Pulkovo 1942 / CS63 zone A3',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','18443','EPSG','2774',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2938','Pulkovo 1942 / CS63 zone A4',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','18444','EPSG','2775',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2939','Pulkovo 1942 / CS63 zone K2',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','18446','EPSG','2776',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2940','Pulkovo 1942 / CS63 zone K3',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','18447','EPSG','2777',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2941','Pulkovo 1942 / CS63 zone K4',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','18448','EPSG','2778',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2942','Porto Santo / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4615','EPSG','16028','EPSG','1314',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2943','Selvagem Grande / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4616','EPSG','16028','EPSG','2779',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2944','NAD83(CSRS) / SCoPQ zone 2',NULL,NULL,'EPSG','4499','EPSG','4617','EPSG','17700','EPSG','1420',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2945','NAD83(CSRS) / MTM zone 3',NULL,NULL,'EPSG','4496','EPSG','4617','EPSG','17703','EPSG','2290',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2946','NAD83(CSRS) / MTM zone 4',NULL,NULL,'EPSG','4496','EPSG','4617','EPSG','17704','EPSG','2276',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2947','NAD83(CSRS) / MTM zone 5',NULL,NULL,'EPSG','4496','EPSG','4617','EPSG','17705','EPSG','2277',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2948','NAD83(CSRS) / MTM zone 6',NULL,NULL,'EPSG','4496','EPSG','4617','EPSG','17706','EPSG','2278',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2949','NAD83(CSRS) / MTM zone 7',NULL,NULL,'EPSG','4496','EPSG','4617','EPSG','17707','EPSG','1425',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2950','NAD83(CSRS) / MTM zone 8',NULL,NULL,'EPSG','4496','EPSG','4617','EPSG','17708','EPSG','2279',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2951','NAD83(CSRS) / MTM zone 9',NULL,NULL,'EPSG','4496','EPSG','4617','EPSG','17709','EPSG','2280',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2952','NAD83(CSRS) / MTM zone 10',NULL,NULL,'EPSG','4496','EPSG','4617','EPSG','17710','EPSG','2281',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2953','NAD83(CSRS) / New Brunswick Stereographic',NULL,NULL,'EPSG','4500','EPSG','4617','EPSG','19946','EPSG','1447',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2954','NAD83(CSRS) / Prince Edward Isl. Stereographic (NAD83)',NULL,NULL,'EPSG','4496','EPSG','4617','EPSG','19960','EPSG','1533',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2955','NAD83(CSRS) / UTM zone 11N',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','16011','EPSG','3528',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2956','NAD83(CSRS) / UTM zone 12N',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','16012','EPSG','3527',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2957','NAD83(CSRS) / UTM zone 13N',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','16013','EPSG','3526',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2958','NAD83(CSRS) / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','16017','EPSG','3416',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2959','NAD83(CSRS) / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','16018','EPSG','3417',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2960','NAD83(CSRS) / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','16019','EPSG','3524',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2961','NAD83(CSRS) / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','16020','EPSG','3525',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2962','NAD83(CSRS) / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','16021','EPSG','2151',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2963','Lisbon 1890 (Lisbon) / Portugal Bonne',NULL,NULL,'EPSG','6509','EPSG','4904','EPSG','19979','EPSG','1294',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2964','NAD27 / Alaska Albers',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15020','EPSG','1330',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2965','NAD83 / Indiana East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15372','EPSG','2196',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2966','NAD83 / Indiana West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15373','EPSG','2197',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2967','NAD83(HARN) / Indiana East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15372','EPSG','2196',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2968','NAD83(HARN) / Indiana West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15373','EPSG','2197',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2969','Fort Marigot / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4621','EPSG','16020','EPSG','2828',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2970','Guadeloupe 1948 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4622','EPSG','16020','EPSG','2829',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2971','CSG67 / UTM zone 22N',NULL,NULL,'EPSG','4400','EPSG','4623','EPSG','16022','EPSG','3766',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2972','RGFG95 / UTM zone 22N',NULL,NULL,'EPSG','4400','EPSG','4624','EPSG','16022','EPSG','3144',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2973','Martinique 1938 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4625','EPSG','16020','EPSG','3276',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2975','RGR92 / UTM zone 40S',NULL,NULL,'EPSG','4400','EPSG','4627','EPSG','16140','EPSG','3911',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2976','Tahiti 52 / UTM zone 6S',NULL,NULL,'EPSG','4400','EPSG','4628','EPSG','16106','EPSG','2811',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2977','Tahaa 54 / UTM zone 5S',NULL,NULL,'EPSG','4400','EPSG','4629','EPSG','16105','EPSG','2812',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2978','IGN72 Nuku Hiva / UTM zone 7S',NULL,NULL,'EPSG','4400','EPSG','4630','EPSG','16107','EPSG','3129',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2979','K0 1949 / UTM zone 42S',NULL,NULL,'EPSG','4400','EPSG','4631','EPSG','16142','EPSG','2816',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2980','Combani 1950 / UTM zone 38S',NULL,NULL,'EPSG','4400','EPSG','4632','EPSG','16138','EPSG','3340',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2981','IGN56 Lifou / UTM zone 58S',NULL,NULL,'EPSG','4400','EPSG','4633','EPSG','16158','EPSG','2814',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2982','IGN72 Grand Terre / UTM zone 58S',NULL,NULL,'EPSG','4400','EPSG','4634','EPSG','16158','EPSG','2822',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2983','ST87 Ouvea / UTM zone 58S',NULL,NULL,'EPSG','4400','EPSG','4635','EPSG','16158','EPSG','2813',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2984','RGNC 1991 / Lambert New Caledonia',NULL,NULL,'EPSG','4499','EPSG','4645','EPSG','19981','EPSG','1174',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2985','Petrels 1972 / Terre Adelie Polar Stereographic',NULL,NULL,'EPSG','1025','EPSG','4636','EPSG','19983','EPSG','2817',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2986','Perroud 1950 / Terre Adelie Polar Stereographic',NULL,NULL,'EPSG','1025','EPSG','4637','EPSG','19983','EPSG','2818',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2987','Saint Pierre et Miquelon 1950 / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4638','EPSG','16021','EPSG','3299',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2988','MOP78 / UTM zone 1S',NULL,NULL,'EPSG','4400','EPSG','4639','EPSG','16101','EPSG','2815',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2989','RRAF 1991 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4640','EPSG','16020','EPSG','2824',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2990','Reunion 1947 / TM Reunion',NULL,NULL,'EPSG','4499','EPSG','4626','EPSG','19982','EPSG','3337',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','2991','NAD83 / Oregon LCC (m)',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13633','EPSG','1406',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2992','NAD83 / Oregon GIC Lambert (ft)',NULL,NULL,'EPSG','4495','EPSG','4269','EPSG','15374','EPSG','1406',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2993','NAD83(HARN) / Oregon LCC (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13633','EPSG','1406',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2994','NAD83(HARN) / Oregon GIC Lambert (ft)',NULL,NULL,'EPSG','4495','EPSG','4152','EPSG','15374','EPSG','1406',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2995','IGN53 Mare / UTM zone 58S',NULL,NULL,'EPSG','4400','EPSG','4641','EPSG','16158','EPSG','3434',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2996','ST84 Ile des Pins / UTM zone 58S',NULL,NULL,'EPSG','4400','EPSG','4642','EPSG','16158','EPSG','2820',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2997','ST71 Belep / UTM zone 58S',NULL,NULL,'EPSG','4400','EPSG','4643','EPSG','16158','EPSG','2821',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2998','NEA74 Noumea / UTM zone 58S',NULL,NULL,'EPSG','4400','EPSG','4644','EPSG','16158','EPSG','2823',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','2999','Grand Comoros / UTM zone 38S',NULL,NULL,'EPSG','4400','EPSG','4646','EPSG','16138','EPSG','2807',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3000','Segara / NEIEZ',NULL,NULL,'EPSG','4499','EPSG','4613','EPSG','19905','EPSG','1360',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3001','Batavia / NEIEZ',NULL,NULL,'EPSG','4499','EPSG','4211','EPSG','19905','EPSG','1285',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3002','Makassar / NEIEZ',NULL,NULL,'EPSG','4499','EPSG','4257','EPSG','19905','EPSG','1316',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3003','Monte Mario / Italy zone 1',NULL,NULL,'EPSG','4499','EPSG','4265','EPSG','18121','EPSG','1718',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3004','Monte Mario / Italy zone 2',NULL,NULL,'EPSG','4499','EPSG','4265','EPSG','18122','EPSG','1719',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3005','NAD83 / BC Albers',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','19984','EPSG','2832',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3006','SWEREF99 TM',NULL,NULL,'EPSG','4500','EPSG','4619','EPSG','17333','EPSG','1225',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3007','SWEREF99 12 00',NULL,NULL,'EPSG','4500','EPSG','4619','EPSG','17321','EPSG','2833',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3008','SWEREF99 13 30',NULL,NULL,'EPSG','4500','EPSG','4619','EPSG','17322','EPSG','2834',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3009','SWEREF99 15 00',NULL,NULL,'EPSG','4500','EPSG','4619','EPSG','17323','EPSG','2835',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3010','SWEREF99 16 30',NULL,NULL,'EPSG','4500','EPSG','4619','EPSG','17324','EPSG','2836',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3011','SWEREF99 18 00',NULL,NULL,'EPSG','4500','EPSG','4619','EPSG','17325','EPSG','2837',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3012','SWEREF99 14 15',NULL,NULL,'EPSG','4500','EPSG','4619','EPSG','17326','EPSG','2838',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3013','SWEREF99 15 45',NULL,NULL,'EPSG','4500','EPSG','4619','EPSG','17327','EPSG','2839',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3014','SWEREF99 17 15',NULL,NULL,'EPSG','4500','EPSG','4619','EPSG','17328','EPSG','2840',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3015','SWEREF99 18 45',NULL,NULL,'EPSG','4500','EPSG','4619','EPSG','17329','EPSG','2841',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3016','SWEREF99 20 15',NULL,NULL,'EPSG','4500','EPSG','4619','EPSG','17330','EPSG','2842',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3017','SWEREF99 21 45',NULL,NULL,'EPSG','4500','EPSG','4619','EPSG','17331','EPSG','2843',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3018','SWEREF99 23 15',NULL,NULL,'EPSG','4500','EPSG','4619','EPSG','17332','EPSG','2844',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3019','RT90 7.5 gon V',NULL,NULL,'EPSG','4530','EPSG','4124','EPSG','17334','EPSG','2845',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3020','RT90 5 gon V',NULL,NULL,'EPSG','4530','EPSG','4124','EPSG','17335','EPSG','2846',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3021','RT90 2.5 gon V',NULL,NULL,'EPSG','4530','EPSG','4124','EPSG','19929','EPSG','2847',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3022','RT90 0 gon',NULL,NULL,'EPSG','4530','EPSG','4124','EPSG','17336','EPSG','2848',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3023','RT90 2.5 gon O',NULL,NULL,'EPSG','4530','EPSG','4124','EPSG','17337','EPSG','2849',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3024','RT90 5 gon O',NULL,NULL,'EPSG','4530','EPSG','4124','EPSG','17338','EPSG','2850',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3025','RT38 7.5 gon V',NULL,NULL,'EPSG','4530','EPSG','4308','EPSG','17334','EPSG','2845',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3026','RT38 5 gon V',NULL,NULL,'EPSG','4530','EPSG','4308','EPSG','17335','EPSG','2846',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3027','RT38 2.5 gon V',NULL,NULL,'EPSG','4530','EPSG','4308','EPSG','19929','EPSG','2847',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3028','RT38 0 gon',NULL,NULL,'EPSG','4530','EPSG','4308','EPSG','17336','EPSG','2848',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3029','RT38 2.5 gon O',NULL,NULL,'EPSG','4530','EPSG','4308','EPSG','17337','EPSG','2849',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3030','RT38 5 gon O',NULL,NULL,'EPSG','4530','EPSG','4308','EPSG','17338','EPSG','2850',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3031','WGS 84 / Antarctic Polar Stereographic',NULL,NULL,'EPSG','4490','EPSG','4326','EPSG','19992','EPSG','1031',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3032','WGS 84 / Australian Antarctic Polar Stereographic',NULL,NULL,'EPSG','4489','EPSG','4326','EPSG','19993','EPSG','1278',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3033','WGS 84 / Australian Antarctic Lambert',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','19994','EPSG','2880',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3034','ETRS89 / LCC Europe',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','19985','EPSG','1298',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3035','ETRS89 / LAEA Europe',NULL,NULL,'EPSG','4532','EPSG','4258','EPSG','19986','EPSG','1298',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3036','Moznet / UTM zone 36S',NULL,NULL,'EPSG','4400','EPSG','4130','EPSG','16136','EPSG','3929',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3037','Moznet / UTM zone 37S',NULL,NULL,'EPSG','4400','EPSG','4130','EPSG','16137','EPSG','3931',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3038','ETRS89 / TM26',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16026','EPSG','2855',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3039','ETRS89 / TM27',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16027','EPSG','2856',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3040','ETRS89 / UTM zone 28N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16028','EPSG','2122',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3041','ETRS89 / UTM zone 29N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16029','EPSG','2123',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3042','ETRS89 / UTM zone 30N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16030','EPSG','2124',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3043','ETRS89 / UTM zone 31N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16031','EPSG','2860',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3044','ETRS89 / UTM zone 32N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16032','EPSG','2861',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3045','ETRS89 / UTM zone 33N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16033','EPSG','2862',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3046','ETRS89 / UTM zone 34N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16034','EPSG','2128',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3047','ETRS89 / UTM zone 35N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16035','EPSG','2129',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3048','ETRS89 / UTM zone 36N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16036','EPSG','2130',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3049','ETRS89 / UTM zone 37N (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16037','EPSG','2131',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3050','ETRS89 / TM38',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16038','EPSG','2867',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3051','ETRS89 / TM39',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16039','EPSG','2868',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3052','Reykjavik 1900 / Lambert 1900',NULL,NULL,'EPSG','4491','EPSG','4657','EPSG','19987','EPSG','3262',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3053','Hjorsey 1955 / Lambert 1955',NULL,NULL,'EPSG','4491','EPSG','4658','EPSG','19988','EPSG','3262',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3054','Hjorsey 1955 / UTM zone 26N',NULL,NULL,'EPSG','4400','EPSG','4658','EPSG','16026','EPSG','2851',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3055','Hjorsey 1955 / UTM zone 27N',NULL,NULL,'EPSG','4400','EPSG','4658','EPSG','16027','EPSG','2852',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3056','Hjorsey 1955 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4658','EPSG','16028','EPSG','2853',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3057','ISN93 / Lambert 1993',NULL,NULL,'EPSG','4499','EPSG','4659','EPSG','19989','EPSG','1120',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3058','Helle 1954 / Jan Mayen Grid',NULL,NULL,'EPSG','4531','EPSG','4660','EPSG','19991','EPSG','2869',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3059','LKS92 / Latvia TM',NULL,NULL,'EPSG','4530','EPSG','4661','EPSG','19990','EPSG','1139',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3060','IGN72 Grande Terre / UTM zone 58S',NULL,NULL,'EPSG','4400','EPSG','4662','EPSG','16158','EPSG','2822',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3061','Porto Santo 1995 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4663','EPSG','16028','EPSG','1314',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3062','Azores Oriental 1995 / UTM zone 26N',NULL,NULL,'EPSG','4400','EPSG','4664','EPSG','16026','EPSG','1345',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3063','Azores Central 1995 / UTM zone 26N',NULL,NULL,'EPSG','4400','EPSG','4665','EPSG','16026','EPSG','1301',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3064','IGM95 / UTM zone 32N',NULL,NULL,'EPSG','4400','EPSG','4670','EPSG','16032','EPSG','1718',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3065','IGM95 / UTM zone 33N',NULL,NULL,'EPSG','4400','EPSG','4670','EPSG','16033','EPSG','1719',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3066','ED50 / Jordan TM',NULL,NULL,'EPSG','4400','EPSG','4230','EPSG','19995','EPSG','1130',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3067','ETRS89 / TM35FIN(E,N)',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','16065','EPSG','1095',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3068','DHDN / Soldner Berlin',NULL,NULL,'EPSG','4531','EPSG','4314','EPSG','19996','EPSG','2898',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3069','NAD27 / Wisconsin Transverse Mercator',NULL,NULL,'EPSG','4499','EPSG','4267','EPSG','14811','EPSG','1418',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3070','NAD83 / Wisconsin Transverse Mercator',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14841','EPSG','1418',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3071','NAD83(HARN) / Wisconsin Transverse Mercator',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14841','EPSG','1418',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3072','NAD83 / Maine CS2000 East',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11851','EPSG','2960',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3073','NAD83 / Maine CS2000 Central',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11852','EPSG','2959',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3074','NAD83 / Maine CS2000 West',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11853','EPSG','2958',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3075','NAD83(HARN) / Maine CS2000 East',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11851','EPSG','2960',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3076','NAD83(HARN) / Maine CS2000 Central',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11852','EPSG','2959',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3077','NAD83(HARN) / Maine CS2000 West',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11853','EPSG','2958',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3078','NAD83 / Michigan Oblique Mercator',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12150','EPSG','1391',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3079','NAD83(HARN) / Michigan Oblique Mercator',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12150','EPSG','1391',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3080','NAD27 / Shackleford',NULL,NULL,'EPSG','4495','EPSG','4267','EPSG','14252','EPSG','1412',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3081','NAD83 / Texas State Mapping System',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14251','EPSG','1412',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3082','NAD83 / Texas Centric Lambert Conformal',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14253','EPSG','1412',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3083','NAD83 / Texas Centric Albers Equal Area',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14254','EPSG','1412',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3084','NAD83(HARN) / Texas Centric Lambert Conformal',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14253','EPSG','1412',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3085','NAD83(HARN) / Texas Centric Albers Equal Area',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14254','EPSG','1412',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3086','NAD83 / Florida GDL Albers',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10934','EPSG','1379',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3087','NAD83(HARN) / Florida GDL Albers',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10934','EPSG','1379',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3088','NAD83 / Kentucky Single Zone',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11630','EPSG','1386',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3089','NAD83 / Kentucky Single Zone (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15375','EPSG','1386',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3090','NAD83(HARN) / Kentucky Single Zone',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11630','EPSG','1386',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3091','NAD83(HARN) / Kentucky Single Zone (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15375','EPSG','1386',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3092','Tokyo / UTM zone 51N',NULL,NULL,'EPSG','4400','EPSG','4301','EPSG','16051','EPSG','2951',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3093','Tokyo / UTM zone 52N',NULL,NULL,'EPSG','4400','EPSG','4301','EPSG','16052','EPSG','2952',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3094','Tokyo / UTM zone 53N',NULL,NULL,'EPSG','4400','EPSG','4301','EPSG','16053','EPSG','2953',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3095','Tokyo / UTM zone 54N',NULL,NULL,'EPSG','4400','EPSG','4301','EPSG','16054','EPSG','2954',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3096','Tokyo / UTM zone 55N',NULL,NULL,'EPSG','4400','EPSG','4301','EPSG','16055','EPSG','2955',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3097','JGD2000 / UTM zone 51N',NULL,NULL,'EPSG','4400','EPSG','4612','EPSG','16051','EPSG','3959',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3098','JGD2000 / UTM zone 52N',NULL,NULL,'EPSG','4400','EPSG','4612','EPSG','16052','EPSG','3960',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3099','JGD2000 / UTM zone 53N',NULL,NULL,'EPSG','4400','EPSG','4612','EPSG','16053','EPSG','3961',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3100','JGD2000 / UTM zone 54N',NULL,NULL,'EPSG','4400','EPSG','4612','EPSG','16054','EPSG','3962',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3101','JGD2000 / UTM zone 55N',NULL,NULL,'EPSG','4400','EPSG','4612','EPSG','16055','EPSG','3963',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3102','American Samoa 1962 / American Samoa Lambert',NULL,NULL,'EPSG','4497','EPSG','4169','EPSG','15376','EPSG','3109',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3103','Mauritania 1999 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4681','EPSG','16028','EPSG','2971',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3104','Mauritania 1999 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4681','EPSG','16029','EPSG','2970',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3105','Mauritania 1999 / UTM zone 30N',NULL,NULL,'EPSG','4400','EPSG','4681','EPSG','16030','EPSG','2969',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3106','Gulshan 303 / Bangladesh Transverse Mercator',NULL,NULL,'EPSG','4400','EPSG','4682','EPSG','16490','EPSG','1041',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3107','GDA94 / SA Lambert',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','17359','EPSG','2986',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3108','ETRS89 / Guernsey Grid',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','19998','EPSG','2989',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3109','ETRS89 / Jersey Transverse Mercator',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','19999','EPSG','2988',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3110','AGD66 / Vicgrid66',NULL,NULL,'EPSG','4400','EPSG','4202','EPSG','17360','EPSG','2285',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3111','GDA94 / Vicgrid',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','17361','EPSG','2285',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3112','GDA94 / Geoscience Australia Lambert',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','17362','EPSG','2575',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3113','GDA94 / BCSG02',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','17363','EPSG','2990',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3114','MAGNA-SIRGAS / Colombia Far West zone',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','18055','EPSG','3091',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3115','MAGNA-SIRGAS / Colombia West zone',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','18056','EPSG','3090',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3116','MAGNA-SIRGAS / Colombia Bogota zone',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','18057','EPSG','1599',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3117','MAGNA-SIRGAS / Colombia East Central zone',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','18058','EPSG','1600',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3118','MAGNA-SIRGAS / Colombia East zone',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','18059','EPSG','1601',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3119','Douala 1948 / AEF west',NULL,NULL,'EPSG','4400','EPSG','4192','EPSG','18415','EPSG','2555',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3120','Pulkovo 1942(58) / Poland zone I',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','18280','EPSG','1515',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3121','PRS92 / Philippines zone 1',NULL,NULL,'EPSG','4499','EPSG','4683','EPSG','18171','EPSG','1698',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3122','PRS92 / Philippines zone 2',NULL,NULL,'EPSG','4499','EPSG','4683','EPSG','18172','EPSG','1699',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3123','PRS92 / Philippines zone 3',NULL,NULL,'EPSG','4499','EPSG','4683','EPSG','18173','EPSG','1700',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3124','PRS92 / Philippines zone 4',NULL,NULL,'EPSG','4499','EPSG','4683','EPSG','18174','EPSG','1701',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3125','PRS92 / Philippines zone 5',NULL,NULL,'EPSG','4499','EPSG','4683','EPSG','18175','EPSG','1702',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3126','ETRS89 / ETRS-GK19FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','18183','EPSG','3092',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3127','ETRS89 / ETRS-GK20FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','18184','EPSG','3093',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3128','ETRS89 / ETRS-GK21FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','18185','EPSG','3094',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3129','ETRS89 / ETRS-GK22FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','18186','EPSG','3095',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3130','ETRS89 / ETRS-GK23FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','18187','EPSG','3096',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3131','ETRS89 / ETRS-GK24FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','18188','EPSG','3097',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3132','ETRS89 / ETRS-GK25FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','18189','EPSG','3098',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3133','ETRS89 / ETRS-GK26FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','18190','EPSG','3099',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3134','ETRS89 / ETRS-GK27FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','18195','EPSG','3100',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3135','ETRS89 / ETRS-GK28FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','18196','EPSG','3101',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3136','ETRS89 / ETRS-GK29FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','18197','EPSG','3102',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3137','ETRS89 / ETRS-GK30FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','18198','EPSG','3103',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3138','ETRS89 / ETRS-GK31FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','18199','EPSG','3104',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3139','Vanua Levu 1915 / Vanua Levu Grid',NULL,NULL,'EPSG','4533','EPSG','4748','EPSG','19878','EPSG','3401',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3140','Viti Levu 1912 / Viti Levu Grid',NULL,NULL,'EPSG','4533','EPSG','4752','EPSG','19879','EPSG','3195',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3141','Fiji 1956 / UTM zone 60S',NULL,NULL,'EPSG','4400','EPSG','4721','EPSG','16160','EPSG','3399',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3142','Fiji 1956 / UTM zone 1S',NULL,NULL,'EPSG','4400','EPSG','4721','EPSG','16101','EPSG','3400',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3143','Fiji 1986 / Fiji Map Grid',NULL,NULL,'EPSG','4400','EPSG','4720','EPSG','19880','EPSG','1094',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3144','FD54 / Faroe Lambert',NULL,NULL,'EPSG','1031','EPSG','4741','EPSG','19870','EPSG','3248',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3145','ETRS89 / Faroe Lambert',NULL,NULL,'EPSG','1031','EPSG','4258','EPSG','19870','EPSG','3248',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3146','Pulkovo 1942 / 3-degree Gauss-Kruger zone 6',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16266','EPSG','3403',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3147','Pulkovo 1942 / 3-degree Gauss-Kruger CM 18E',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16366','EPSG','3403',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3148','Indian 1960 / UTM zone 48N',NULL,NULL,'EPSG','4400','EPSG','4131','EPSG','16048','EPSG','1542',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3149','Indian 1960 / UTM zone 49N',NULL,NULL,'EPSG','4400','EPSG','4131','EPSG','16049','EPSG','1453',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3150','Pulkovo 1995 / 3-degree Gauss-Kruger zone 6',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16266','EPSG','3403',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3151','Pulkovo 1995 / 3-degree Gauss-Kruger CM 18E',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16366','EPSG','3403',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3152','ST74',NULL,NULL,'EPSG','4531','EPSG','4619','EPSG','19876','EPSG','3408',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3153','NAD83(CSRS) / BC Albers',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','19984','EPSG','2832',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3154','NAD83(CSRS) / UTM zone 7N',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','16007','EPSG','3409',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3155','NAD83(CSRS) / UTM zone 8N',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','16008','EPSG','3410',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3156','NAD83(CSRS) / UTM zone 9N',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','16009','EPSG','3411',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3157','NAD83(CSRS) / UTM zone 10N',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','16010','EPSG','3412',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3158','NAD83(CSRS) / UTM zone 14N',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','16014','EPSG','3413',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3159','NAD83(CSRS) / UTM zone 15N',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','16015','EPSG','3414',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3160','NAD83(CSRS) / UTM zone 16N',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','16016','EPSG','3415',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3161','NAD83 / Ontario MNR Lambert',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','19875','EPSG','1367',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3162','NAD83(CSRS) / Ontario MNR Lambert',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','19875','EPSG','1367',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3163','RGNC91-93 / Lambert New Caledonia',NULL,NULL,'EPSG','4499','EPSG','4749','EPSG','19981','EPSG','3430',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3164','ST87 Ouvea / UTM zone 58S',NULL,NULL,'EPSG','4400','EPSG','4750','EPSG','16158','EPSG','2813',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3165','NEA74 Noumea / Noumea Lambert',NULL,NULL,'EPSG','4499','EPSG','4644','EPSG','19873','EPSG','2823',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3166','NEA74 Noumea / Noumea Lambert 2',NULL,NULL,'EPSG','4499','EPSG','4644','EPSG','19874','EPSG','2823',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3167','Kertau (RSO) / RSO Malaya (ch)',NULL,NULL,'EPSG','4410','EPSG','4751','EPSG','19871','EPSG','1690',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3168','Kertau (RSO) / RSO Malaya (m)',NULL,NULL,'EPSG','4400','EPSG','4751','EPSG','19872','EPSG','1690',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3169','RGNC91-93 / UTM zone 57S',NULL,NULL,'EPSG','4400','EPSG','4749','EPSG','16157','EPSG','3431',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3170','RGNC91-93 / UTM zone 58S',NULL,NULL,'EPSG','4400','EPSG','4749','EPSG','16158','EPSG','3432',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3171','RGNC91-93 / UTM zone 59S',NULL,NULL,'EPSG','4400','EPSG','4749','EPSG','16159','EPSG','3433',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3172','IGN53 Mare / UTM zone 59S',NULL,NULL,'EPSG','4400','EPSG','4641','EPSG','16159','EPSG','3435',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3173','fk89 / Faroe Lambert FK89',NULL,NULL,'EPSG','1031','EPSG','4753','EPSG','19877','EPSG','3248',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3174','NAD83 / Great Lakes Albers',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15397','EPSG','3467',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3175','NAD83 / Great Lakes and St Lawrence Albers',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15398','EPSG','3468',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3176','Indian 1960 / TM 106 NE',NULL,NULL,'EPSG','4400','EPSG','4131','EPSG','16506','EPSG','1495',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3177','LGD2006 / Libya TM',NULL,NULL,'EPSG','4499','EPSG','4754','EPSG','18319','EPSG','1143',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3178','GR96 / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','16018','EPSG','3449',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3179','GR96 / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','16019','EPSG','3450',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3180','GR96 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','16020','EPSG','3451',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3181','GR96 / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','16021','EPSG','3452',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3182','GR96 / UTM zone 22N',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','16022','EPSG','3453',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3183','GR96 / UTM zone 23N',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','16023','EPSG','3454',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3184','GR96 / UTM zone 24N',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','16024','EPSG','3455',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3185','GR96 / UTM zone 25N',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','16025','EPSG','3456',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3186','GR96 / UTM zone 26N',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','16026','EPSG','3457',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3187','GR96 / UTM zone 27N',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','16027','EPSG','3458',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3188','GR96 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','16028','EPSG','3459',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3189','GR96 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','16029','EPSG','3460',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3190','LGD2006 / Libya TM zone 5',NULL,NULL,'EPSG','4499','EPSG','4754','EPSG','18310','EPSG','1470',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3191','LGD2006 / Libya TM zone 6',NULL,NULL,'EPSG','4499','EPSG','4754','EPSG','18311','EPSG','1471',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3192','LGD2006 / Libya TM zone 7',NULL,NULL,'EPSG','4499','EPSG','4754','EPSG','18312','EPSG','1472',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3193','LGD2006 / Libya TM zone 8',NULL,NULL,'EPSG','4499','EPSG','4754','EPSG','18313','EPSG','1473',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3194','LGD2006 / Libya TM zone 9',NULL,NULL,'EPSG','4499','EPSG','4754','EPSG','18314','EPSG','1474',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3195','LGD2006 / Libya TM zone 10',NULL,NULL,'EPSG','4499','EPSG','4754','EPSG','18315','EPSG','1475',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3196','LGD2006 / Libya TM zone 11',NULL,NULL,'EPSG','4499','EPSG','4754','EPSG','18316','EPSG','1476',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3197','LGD2006 / Libya TM zone 12',NULL,NULL,'EPSG','4499','EPSG','4754','EPSG','18317','EPSG','1477',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3198','LGD2006 / Libya TM zone 13',NULL,NULL,'EPSG','4499','EPSG','4754','EPSG','18318','EPSG','1478',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3199','LGD2006 / UTM zone 32N',NULL,NULL,'EPSG','4400','EPSG','4754','EPSG','16032','EPSG','3949',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3200','FD58 / Iraq zone',NULL,NULL,'EPSG','4400','EPSG','4132','EPSG','19906','EPSG','1300',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3201','LGD2006 / UTM zone 33N',NULL,NULL,'EPSG','4400','EPSG','4754','EPSG','16033','EPSG','3950',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3202','LGD2006 / UTM zone 34N',NULL,NULL,'EPSG','4400','EPSG','4754','EPSG','16034','EPSG','3951',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3203','LGD2006 / UTM zone 35N',NULL,NULL,'EPSG','4400','EPSG','4754','EPSG','16035','EPSG','3941',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3204','WGS 84 / SCAR IMW SP19-20',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17204','EPSG','2991',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3205','WGS 84 / SCAR IMW SP21-22',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17205','EPSG','2992',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3206','WGS 84 / SCAR IMW SP23-24',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17206','EPSG','2993',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3207','WGS 84 / SCAR IMW SQ01-02',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17207','EPSG','2994',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3208','WGS 84 / SCAR IMW SQ19-20',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17208','EPSG','2995',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3209','WGS 84 / SCAR IMW SQ21-22',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17209','EPSG','2996',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3210','WGS 84 / SCAR IMW SQ37-38',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17210','EPSG','2997',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3211','WGS 84 / SCAR IMW SQ39-40',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17211','EPSG','2998',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3212','WGS 84 / SCAR IMW SQ41-42',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17212','EPSG','2999',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3213','WGS 84 / SCAR IMW SQ43-44',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17213','EPSG','3000',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3214','WGS 84 / SCAR IMW SQ45-46',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17214','EPSG','3001',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3215','WGS 84 / SCAR IMW SQ47-48',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17215','EPSG','3002',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3216','WGS 84 / SCAR IMW SQ49-50',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17216','EPSG','3003',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3217','WGS 84 / SCAR IMW SQ51-52',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17217','EPSG','3004',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3218','WGS 84 / SCAR IMW SQ53-54',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17218','EPSG','3005',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3219','WGS 84 / SCAR IMW SQ55-56',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17219','EPSG','3006',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3220','WGS 84 / SCAR IMW SQ57-58',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17220','EPSG','3007',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3221','WGS 84 / SCAR IMW SR13-14',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17221','EPSG','3008',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3222','WGS 84 / SCAR IMW SR15-16',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17222','EPSG','3009',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3223','WGS 84 / SCAR IMW SR17-18',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17223','EPSG','3010',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3224','WGS 84 / SCAR IMW SR19-20',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17224','EPSG','3011',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3225','WGS 84 / SCAR IMW SR27-28',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17225','EPSG','3012',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3226','WGS 84 / SCAR IMW SR29-30',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17226','EPSG','3013',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3227','WGS 84 / SCAR IMW SR31-32',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17227','EPSG','3014',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3228','WGS 84 / SCAR IMW SR33-34',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17228','EPSG','3015',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3229','WGS 84 / SCAR IMW SR35-36',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17229','EPSG','3016',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3230','WGS 84 / SCAR IMW SR37-38',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17230','EPSG','3017',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3231','WGS 84 / SCAR IMW SR39-40',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17231','EPSG','3018',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3232','WGS 84 / SCAR IMW SR41-42',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17232','EPSG','3019',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3233','WGS 84 / SCAR IMW SR43-44',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17233','EPSG','3020',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3234','WGS 84 / SCAR IMW SR45-46',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17234','EPSG','3021',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3235','WGS 84 / SCAR IMW SR47-48',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17235','EPSG','3022',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3236','WGS 84 / SCAR IMW SR49-50',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17236','EPSG','3023',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3237','WGS 84 / SCAR IMW SR51-52',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17237','EPSG','3024',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3238','WGS 84 / SCAR IMW SR53-54',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17238','EPSG','3025',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3239','WGS 84 / SCAR IMW SR55-56',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17239','EPSG','3026',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3240','WGS 84 / SCAR IMW SR57-58',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17240','EPSG','3027',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3241','WGS 84 / SCAR IMW SR59-60',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17241','EPSG','3028',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3242','WGS 84 / SCAR IMW SS04-06',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17242','EPSG','3029',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3243','WGS 84 / SCAR IMW SS07-09',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17243','EPSG','3030',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3244','WGS 84 / SCAR IMW SS10-12',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17244','EPSG','3031',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3245','WGS 84 / SCAR IMW SS13-15',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17245','EPSG','3032',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3246','WGS 84 / SCAR IMW SS16-18',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17246','EPSG','3033',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3247','WGS 84 / SCAR IMW SS19-21',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17247','EPSG','3034',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3248','WGS 84 / SCAR IMW SS25-27',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17248','EPSG','3035',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3249','WGS 84 / SCAR IMW SS28-30',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17249','EPSG','3036',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3250','WGS 84 / SCAR IMW SS31-33',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17250','EPSG','3037',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3251','WGS 84 / SCAR IMW SS34-36',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17251','EPSG','3038',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3252','WGS 84 / SCAR IMW SS37-39',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17252','EPSG','3039',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3253','WGS 84 / SCAR IMW SS40-42',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17253','EPSG','3040',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3254','WGS 84 / SCAR IMW SS43-45',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17254','EPSG','3041',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3255','WGS 84 / SCAR IMW SS46-48',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17255','EPSG','3042',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3256','WGS 84 / SCAR IMW SS49-51',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17256','EPSG','3043',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3257','WGS 84 / SCAR IMW SS52-54',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17257','EPSG','3044',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3258','WGS 84 / SCAR IMW SS55-57',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17258','EPSG','3045',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3259','WGS 84 / SCAR IMW SS58-60',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17259','EPSG','3046',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3260','WGS 84 / SCAR IMW ST01-04',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17260','EPSG','3047',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3261','WGS 84 / SCAR IMW ST05-08',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17261','EPSG','3048',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3262','WGS 84 / SCAR IMW ST09-12',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17262','EPSG','3049',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3263','WGS 84 / SCAR IMW ST13-16',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17263','EPSG','3050',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3264','WGS 84 / SCAR IMW ST17-20',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17264','EPSG','3051',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3265','WGS 84 / SCAR IMW ST21-24',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17265','EPSG','3052',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3266','WGS 84 / SCAR IMW ST25-28',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17266','EPSG','3053',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3267','WGS 84 / SCAR IMW ST29-32',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17267','EPSG','3054',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3268','WGS 84 / SCAR IMW ST33-36',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17268','EPSG','3055',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3269','WGS 84 / SCAR IMW ST37-40',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17269','EPSG','3056',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3270','WGS 84 / SCAR IMW ST41-44',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17270','EPSG','3057',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3271','WGS 84 / SCAR IMW ST45-48',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17271','EPSG','3058',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3272','WGS 84 / SCAR IMW ST49-52',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17272','EPSG','3059',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3273','WGS 84 / SCAR IMW ST53-56',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17273','EPSG','3060',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3274','WGS 84 / SCAR IMW ST57-60',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17274','EPSG','3061',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3275','WGS 84 / SCAR IMW SU01-05',NULL,NULL,'EPSG','4471','EPSG','4326','EPSG','17275','EPSG','3062',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3276','WGS 84 / SCAR IMW SU06-10',NULL,NULL,'EPSG','4473','EPSG','4326','EPSG','17276','EPSG','3063',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3277','WGS 84 / SCAR IMW SU11-15',NULL,NULL,'EPSG','4474','EPSG','4326','EPSG','17277','EPSG','3064',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3278','WGS 84 / SCAR IMW SU16-20',NULL,NULL,'EPSG','4476','EPSG','4326','EPSG','17278','EPSG','3065',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3279','WGS 84 / SCAR IMW SU21-25',NULL,NULL,'EPSG','4477','EPSG','4326','EPSG','17279','EPSG','3066',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3280','WGS 84 / SCAR IMW SU26-30',NULL,NULL,'EPSG','4479','EPSG','4326','EPSG','17280','EPSG','3067',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3281','WGS 84 / SCAR IMW SU31-35',NULL,NULL,'EPSG','4480','EPSG','4326','EPSG','17281','EPSG','3068',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3282','WGS 84 / SCAR IMW SU36-40',NULL,NULL,'EPSG','4482','EPSG','4326','EPSG','17282','EPSG','3069',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3283','WGS 84 / SCAR IMW SU41-45',NULL,NULL,'EPSG','4483','EPSG','4326','EPSG','17283','EPSG','3070',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3284','WGS 84 / SCAR IMW SU46-50',NULL,NULL,'EPSG','4485','EPSG','4326','EPSG','17284','EPSG','3071',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3285','WGS 84 / SCAR IMW SU51-55',NULL,NULL,'EPSG','4486','EPSG','4326','EPSG','17285','EPSG','3072',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3286','WGS 84 / SCAR IMW SU56-60',NULL,NULL,'EPSG','4488','EPSG','4326','EPSG','17286','EPSG','3073',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3287','WGS 84 / SCAR IMW SV01-10',NULL,NULL,'EPSG','4472','EPSG','4326','EPSG','17287','EPSG','3074',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3288','WGS 84 / SCAR IMW SV11-20',NULL,NULL,'EPSG','4475','EPSG','4326','EPSG','17288','EPSG','3075',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3289','WGS 84 / SCAR IMW SV21-30',NULL,NULL,'EPSG','4478','EPSG','4326','EPSG','17289','EPSG','3076',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3290','WGS 84 / SCAR IMW SV31-40',NULL,NULL,'EPSG','4481','EPSG','4326','EPSG','17290','EPSG','3077',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3291','WGS 84 / SCAR IMW SV41-50',NULL,NULL,'EPSG','4484','EPSG','4326','EPSG','17291','EPSG','3078',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3292','WGS 84 / SCAR IMW SV51-60',NULL,NULL,'EPSG','4487','EPSG','4326','EPSG','17292','EPSG','3079',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3293','WGS 84 / SCAR IMW SW01-60',NULL,NULL,'EPSG','4490','EPSG','4326','EPSG','17293','EPSG','3080',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3294','WGS 84 / USGS Transantarctic Mountains',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','17294','EPSG','3081',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3295','Guam 1963 / Yap Islands',NULL,NULL,'EPSG','4499','EPSG','4675','EPSG','15399','EPSG','3108',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3296','RGPF / UTM zone 5S',NULL,NULL,'EPSG','4400','EPSG','4687','EPSG','16105','EPSG','3120',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3297','RGPF / UTM zone 6S',NULL,NULL,'EPSG','4400','EPSG','4687','EPSG','16106','EPSG','3121',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3298','RGPF / UTM zone 7S',NULL,NULL,'EPSG','4400','EPSG','4687','EPSG','16107','EPSG','3122',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3299','RGPF / UTM zone 8S',NULL,NULL,'EPSG','4400','EPSG','4687','EPSG','16108','EPSG','3123',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3300','Estonian Coordinate System of 1992',NULL,NULL,'EPSG','4530','EPSG','4133','EPSG','19938','EPSG','3246',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3301','Estonian Coordinate System of 1997',NULL,NULL,'EPSG','4530','EPSG','4180','EPSG','19938','EPSG','1090',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3302','IGN63 Hiva Oa / UTM zone 7S',NULL,NULL,'EPSG','4400','EPSG','4689','EPSG','16107','EPSG','3130',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3303','Fatu Iva 72 / UTM zone 7S',NULL,NULL,'EPSG','4400','EPSG','4688','EPSG','16107','EPSG','3133',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3304','Tahiti 79 / UTM zone 6S',NULL,NULL,'EPSG','4400','EPSG','4690','EPSG','16106','EPSG','3124',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3305','Moorea 87 / UTM zone 6S',NULL,NULL,'EPSG','4400','EPSG','4691','EPSG','16106','EPSG','3125',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3306','Maupiti 83 / UTM zone 5S',NULL,NULL,'EPSG','4400','EPSG','4692','EPSG','16105','EPSG','3126',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3307','Nakhl-e Ghanem / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','4693','EPSG','16039','EPSG','2362',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3308','GDA94 / NSW Lambert',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','17364','EPSG','3139',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3309','NAD27 / California Albers',NULL,NULL,'EPSG','4499','EPSG','4267','EPSG','10420','EPSG','1375',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3310','NAD83 / California Albers',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10420','EPSG','1375',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3311','NAD83(HARN) / California Albers',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','10420','EPSG','1375',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3312','CSG67 / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4623','EPSG','16021','EPSG','3765',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3313','RGFG95 / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4624','EPSG','16021','EPSG','3145',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3314','Katanga 1955 / Katanga Lambert',NULL,NULL,'EPSG','4400','EPSG','4695','EPSG','17401','EPSG','3147',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3315','Katanga 1955 / Katanga TM',NULL,NULL,'EPSG','4400','EPSG','4695','EPSG','17402','EPSG','3147',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3316','Kasai 1953 / Congo TM zone 22',NULL,NULL,'EPSG','4400','EPSG','4696','EPSG','17422','EPSG','3163',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3317','Kasai 1953 / Congo TM zone 24',NULL,NULL,'EPSG','4400','EPSG','4696','EPSG','17424','EPSG','3164',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3318','IGC 1962 / Congo TM zone 12',NULL,NULL,'EPSG','4400','EPSG','4697','EPSG','17412','EPSG','3150',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3319','IGC 1962 / Congo TM zone 14',NULL,NULL,'EPSG','4400','EPSG','4697','EPSG','17414','EPSG','3151',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3320','IGC 1962 / Congo TM zone 16',NULL,NULL,'EPSG','4400','EPSG','4697','EPSG','17416','EPSG','3160',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3321','IGC 1962 / Congo TM zone 18',NULL,NULL,'EPSG','4400','EPSG','4697','EPSG','17418','EPSG','3161',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3322','IGC 1962 / Congo TM zone 20',NULL,NULL,'EPSG','4400','EPSG','4697','EPSG','17420','EPSG','3162',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3323','IGC 1962 / Congo TM zone 22',NULL,NULL,'EPSG','4400','EPSG','4697','EPSG','17422','EPSG','3163',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3324','IGC 1962 / Congo TM zone 24',NULL,NULL,'EPSG','4400','EPSG','4697','EPSG','17424','EPSG','3164',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3325','IGC 1962 / Congo TM zone 26',NULL,NULL,'EPSG','4400','EPSG','4697','EPSG','17426','EPSG','3165',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3326','IGC 1962 / Congo TM zone 28',NULL,NULL,'EPSG','4400','EPSG','4697','EPSG','17428','EPSG','3166',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3327','IGC 1962 / Congo TM zone 30',NULL,NULL,'EPSG','4400','EPSG','4697','EPSG','17430','EPSG','3167',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3328','Pulkovo 1942(58) / GUGiK-80',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','18286','EPSG','3293',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3329','Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 5',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','16265','EPSG','3580',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3330','Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 6',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','16266','EPSG','3581',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3331','Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 7',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','16267','EPSG','3583',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3332','Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 8',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','16268','EPSG','3585',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3333','Pulkovo 1942(58) / Gauss-Kruger zone 3',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','16203','EPSG','1792',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3334','Pulkovo 1942(58) / Gauss-Kruger zone 4',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','16204','EPSG','3577',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3335','Pulkovo 1942(58) / Gauss-Kruger zone 5',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','16205','EPSG','3579',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3336','IGN 1962 Kerguelen / UTM zone 42S',NULL,NULL,'EPSG','4400','EPSG','4698','EPSG','16142','EPSG','2816',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3337','Le Pouce 1934 / Mauritius Grid',NULL,NULL,'EPSG','4400','EPSG','4699','EPSG','19899','EPSG','3209',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3338','NAD83 / Alaska Albers',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15021','EPSG','1330',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3339','IGCB 1955 / Congo TM zone 12',NULL,NULL,'EPSG','4400','EPSG','4701','EPSG','17412','EPSG','3150',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3340','IGCB 1955 / Congo TM zone 14',NULL,NULL,'EPSG','4400','EPSG','4701','EPSG','17414','EPSG','3151',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3341','IGCB 1955 / Congo TM zone 16',NULL,NULL,'EPSG','4400','EPSG','4701','EPSG','17416','EPSG','4012',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3342','IGCB 1955 / UTM zone 33S',NULL,NULL,'EPSG','4400','EPSG','4701','EPSG','16133','EPSG','3171',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3343','Mauritania 1999 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4702','EPSG','16028','EPSG','3938',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3344','Mauritania 1999 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4702','EPSG','16029','EPSG','2970',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3345','Mauritania 1999 / UTM zone 30N',NULL,NULL,'EPSG','4400','EPSG','4702','EPSG','16030','EPSG','2969',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3346','LKS94 / Lithuania TM',NULL,NULL,'EPSG','4530','EPSG','4669','EPSG','19934','EPSG','1145',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3347','NAD83 / Statistics Canada Lambert',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','19897','EPSG','1061',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3348','NAD83(CSRS) / Statistics Canada Lambert',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','19897','EPSG','1061',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3349','WGS 84 / PDC Mercator',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','19898','EPSG','3172',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3350','Pulkovo 1942 / CS63 zone C0',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','18450','EPSG','3173',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3351','Pulkovo 1942 / CS63 zone C1',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','18451','EPSG','3174',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3352','Pulkovo 1942 / CS63 zone C2',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','18452','EPSG','3175',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3353','Mhast (onshore) / UTM zone 32S',NULL,NULL,'EPSG','4400','EPSG','4704','EPSG','16132','EPSG','3179',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3354','Mhast (offshore) / UTM zone 32S',NULL,NULL,'EPSG','4400','EPSG','4705','EPSG','16132','EPSG','3180',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3355','Egypt Gulf of Suez S-650 TL / Red Belt',NULL,NULL,'EPSG','4400','EPSG','4706','EPSG','18072','EPSG','2341',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3356','Grand Cayman 1959 / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4723','EPSG','16017','EPSG','3185',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3357','Little Cayman 1961 / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4726','EPSG','16017','EPSG','3186',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3358','NAD83(HARN) / North Carolina',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13230','EPSG','1402',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3359','NAD83(HARN) / North Carolina (ftUS)',NULL,NULL,'EPSG','4495','EPSG','4152','EPSG','15346','EPSG','1402',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3360','NAD83(HARN) / South Carolina',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13930','EPSG','1409',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3361','NAD83(HARN) / South Carolina (ft)',NULL,NULL,'EPSG','4495','EPSG','4152','EPSG','15355','EPSG','1409',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3362','NAD83(HARN) / Pennsylvania North',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13731','EPSG','2245',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3363','NAD83(HARN) / Pennsylvania North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15353','EPSG','2245',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3364','NAD83(HARN) / Pennsylvania South',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','13732','EPSG','2246',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3365','NAD83(HARN) / Pennsylvania South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15354','EPSG','2246',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3366','Hong Kong 1963 Grid System',NULL,NULL,'EPSG','4500','EPSG','4738','EPSG','19896','EPSG','1118',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3367','IGN Astro 1960 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4700','EPSG','16028','EPSG','2971',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3368','IGN Astro 1960 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4700','EPSG','16029','EPSG','2970',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3369','IGN Astro 1960 / UTM zone 30N',NULL,NULL,'EPSG','4400','EPSG','4700','EPSG','16030','EPSG','2969',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3370','NAD27 / UTM zone 59N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16059','EPSG','3372',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3371','NAD27 / UTM zone 60N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16060','EPSG','3373',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3372','NAD83 / UTM zone 59N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16059','EPSG','3372',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3373','NAD83 / UTM zone 60N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16060','EPSG','3373',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3374','FD54 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4741','EPSG','16029','EPSG','3248',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3375','GDM2000 / Peninsula RSO',NULL,NULL,'EPSG','4400','EPSG','4742','EPSG','19895','EPSG','3955',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3376','GDM2000 / East Malaysia BRSO',NULL,NULL,'EPSG','4400','EPSG','4742','EPSG','19894','EPSG','3977',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3377','GDM2000 / Johor Grid',NULL,NULL,'EPSG','4400','EPSG','4742','EPSG','19893','EPSG','3376',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3378','GDM2000 / Sembilan and Melaka Grid',NULL,NULL,'EPSG','4400','EPSG','4742','EPSG','19892','EPSG','3377',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3379','GDM2000 / Pahang Grid',NULL,NULL,'EPSG','4400','EPSG','4742','EPSG','19891','EPSG','3378',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3380','GDM2000 / Selangor Grid',NULL,NULL,'EPSG','4400','EPSG','4742','EPSG','19890','EPSG','3379',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3381','GDM2000 / Terengganu Grid',NULL,NULL,'EPSG','4400','EPSG','4742','EPSG','19889','EPSG','3380',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3382','GDM2000 / Pinang Grid',NULL,NULL,'EPSG','4400','EPSG','4742','EPSG','19888','EPSG','3381',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3383','GDM2000 / Kedah and Perlis Grid',NULL,NULL,'EPSG','4400','EPSG','4742','EPSG','19887','EPSG','3382',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3384','GDM2000 / Perak Grid',NULL,NULL,'EPSG','4400','EPSG','4742','EPSG','19886','EPSG','3383',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3385','GDM2000 / Kelantan Grid',NULL,NULL,'EPSG','4400','EPSG','4742','EPSG','19885','EPSG','3384',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3386','KKJ / Finland zone 0',NULL,NULL,'EPSG','4530','EPSG','4123','EPSG','18180','EPSG','3092',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3387','KKJ / Finland zone 5',NULL,NULL,'EPSG','4530','EPSG','4123','EPSG','18205','EPSG','3385',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3388','Pulkovo 1942 / Caspian Sea Mercator',NULL,NULL,'EPSG','4534','EPSG','4284','EPSG','19884','EPSG','1291',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3389','Pulkovo 1942 / 3-degree Gauss-Kruger zone 60',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16099','EPSG','2706',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3390','Pulkovo 1995 / 3-degree Gauss-Kruger zone 60',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16099','EPSG','2706',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3391','Karbala 1979 / UTM zone 37N',NULL,NULL,'EPSG','4400','EPSG','4743','EPSG','16037','EPSG','3387',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3392','Karbala 1979 / UTM zone 38N',NULL,NULL,'EPSG','4400','EPSG','4743','EPSG','16038','EPSG','3388',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3393','Karbala 1979 / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','4743','EPSG','16039','EPSG','3389',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3394','Nahrwan 1934 / Iraq zone',NULL,NULL,'EPSG','4400','EPSG','4744','EPSG','19906','EPSG','4238',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3395','WGS 84 / World Mercator',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','19883','EPSG','3391',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3396','PD/83 / 3-degree Gauss-Kruger zone 3',NULL,NULL,'EPSG','4530','EPSG','4746','EPSG','16263','EPSG','3392',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3397','PD/83 / 3-degree Gauss-Kruger zone 4',NULL,NULL,'EPSG','4530','EPSG','4746','EPSG','16264','EPSG','3393',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3398','RD/83 / 3-degree Gauss-Kruger zone 4',NULL,NULL,'EPSG','4530','EPSG','4745','EPSG','16264','EPSG','3395',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3399','RD/83 / 3-degree Gauss-Kruger zone 5',NULL,NULL,'EPSG','4530','EPSG','4745','EPSG','16265','EPSG','3394',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3400','NAD83 / Alberta 10-TM (Forest)',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','19881','EPSG','2376',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3401','NAD83 / Alberta 10-TM (Resource)',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','19882','EPSG','2376',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3402','NAD83(CSRS) / Alberta 10-TM (Forest)',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','19881','EPSG','2376',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3403','NAD83(CSRS) / Alberta 10-TM (Resource)',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','19882','EPSG','2376',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3404','NAD83(HARN) / North Carolina (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15346','EPSG','1402',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3405','VN-2000 / UTM zone 48N',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','16048','EPSG','1452',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3406','VN-2000 / UTM zone 49N',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','16049','EPSG','1453',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3407','Hong Kong 1963 Grid System',NULL,NULL,'EPSG','4502','EPSG','4738','EPSG','19896','EPSG','1118',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3408','NSIDC EASE-Grid North',NULL,NULL,'EPSG','4469','EPSG','4053','EPSG','3897','EPSG','3475',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3409','NSIDC EASE-Grid South',NULL,NULL,'EPSG','4470','EPSG','4053','EPSG','3898','EPSG','3474',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3410','NSIDC EASE-Grid Global',NULL,NULL,'EPSG','4499','EPSG','4053','EPSG','19869','EPSG','3463',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3411','NSIDC Sea Ice Polar Stereographic North',NULL,NULL,'EPSG','4468','EPSG','4054','EPSG','19865','EPSG','1996',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3412','NSIDC Sea Ice Polar Stereographic South',NULL,NULL,'EPSG','4470','EPSG','4054','EPSG','19866','EPSG','1997',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3413','WGS 84 / NSIDC Sea Ice Polar Stereographic North',NULL,NULL,'EPSG','4468','EPSG','4326','EPSG','19865','EPSG','1996',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3414','SVY21 / Singapore TM',NULL,NULL,'EPSG','4500','EPSG','4757','EPSG','19864','EPSG','1210',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3415','WGS 72BE / South China Sea Lambert',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','19863','EPSG','3470',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3416','ETRS89 / Austria Lambert',NULL,NULL,'EPSG','4530','EPSG','4258','EPSG','19947','EPSG','1037',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3417','NAD83 / Iowa North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15377','EPSG','2198',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3418','NAD83 / Iowa South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15378','EPSG','2199',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3419','NAD83 / Kansas North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15379','EPSG','2200',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3420','NAD83 / Kansas South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15380','EPSG','2201',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3421','NAD83 / Nevada East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15381','EPSG','2224',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3422','NAD83 / Nevada Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15382','EPSG','2223',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3423','NAD83 / Nevada West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15383','EPSG','2225',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3424','NAD83 / New Jersey (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15384','EPSG','1399',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3425','NAD83(HARN) / Iowa North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15377','EPSG','2198',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3426','NAD83(HARN) / Iowa South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15378','EPSG','2199',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3427','NAD83(HARN) / Kansas North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15379','EPSG','2200',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3428','NAD83(HARN) / Kansas South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15380','EPSG','2201',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3429','NAD83(HARN) / Nevada East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15381','EPSG','2224',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3430','NAD83(HARN) / Nevada Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15382','EPSG','2223',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3431','NAD83(HARN) / Nevada West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15383','EPSG','2225',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3432','NAD83(HARN) / New Jersey (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15384','EPSG','1399',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3433','NAD83 / Arkansas North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15385','EPSG','2169',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3434','NAD83 / Arkansas South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15386','EPSG','2170',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3435','NAD83 / Illinois East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15387','EPSG','2194',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3436','NAD83 / Illinois West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15388','EPSG','2195',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3437','NAD83 / New Hampshire (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15389','EPSG','1398',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3438','NAD83 / Rhode Island (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15390','EPSG','1408',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3439','PSD93 / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','4134','EPSG','16039','EPSG','1544',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3440','PSD93 / UTM zone 40N',NULL,NULL,'EPSG','4400','EPSG','4134','EPSG','16040','EPSG','1545',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3441','NAD83(HARN) / Arkansas North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15385','EPSG','2169',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3442','NAD83(HARN) / Arkansas South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15386','EPSG','2170',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3443','NAD83(HARN) / Illinois East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15387','EPSG','2194',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3444','NAD83(HARN) / Illinois West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15388','EPSG','2195',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3445','NAD83(HARN) / New Hampshire (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15389','EPSG','1398',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3446','NAD83(HARN) / Rhode Island (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15390','EPSG','1408',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3447','ETRS89 / Belgian Lambert 2005',NULL,NULL,'EPSG','4499','EPSG','4258','EPSG','19862','EPSG','1347',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3448','JAD2001 / Jamaica Metric Grid',NULL,NULL,'EPSG','4400','EPSG','4758','EPSG','19860','EPSG','3342',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3449','JAD2001 / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4758','EPSG','16017','EPSG','3478',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3450','JAD2001 / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4758','EPSG','16018','EPSG','3479',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3451','NAD83 / Louisiana North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15391','EPSG','2204',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3452','NAD83 / Louisiana South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15392','EPSG','2529',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3453','NAD83 / Louisiana Offshore (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15393','EPSG','1387',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3454','NAD83 / South Dakota North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15395','EPSG','2249',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3455','NAD83 / South Dakota South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15395','EPSG','2250',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3456','NAD83(HARN) / Louisiana North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15391','EPSG','2204',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3457','NAD83(HARN) / Louisiana South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15392','EPSG','2529',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3458','NAD83(HARN) / South Dakota North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15394','EPSG','2249',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3459','NAD83(HARN) / South Dakota South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15395','EPSG','2250',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3460','Fiji 1986 / Fiji Map Grid',NULL,NULL,'EPSG','4400','EPSG','4720','EPSG','19859','EPSG','1094',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3461','Dabola 1981 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4155','EPSG','16028','EPSG','1468',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3462','Dabola 1981 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4155','EPSG','16029','EPSG','1469',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3463','NAD83 / Maine CS2000 Central',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11854','EPSG','2959',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3464','NAD83(HARN) / Maine CS2000 Central',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11854','EPSG','2959',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3465','NAD83(NSRS2007) / Alabama East',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10131','EPSG','2154',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3466','NAD83(NSRS2007) / Alabama West',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10132','EPSG','2155',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3467','NAD83(NSRS2007) / Alaska Albers',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','15021','EPSG','1330',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3468','NAD83(NSRS2007) / Alaska zone 1',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','15031','EPSG','2156',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3469','NAD83(NSRS2007) / Alaska zone 2',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','15032','EPSG','2158',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3470','NAD83(NSRS2007) / Alaska zone 3',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','15033','EPSG','2159',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3471','NAD83(NSRS2007) / Alaska zone 4',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','15034','EPSG','2160',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3472','NAD83(NSRS2007) / Alaska zone 5',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','15035','EPSG','2161',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3473','NAD83(NSRS2007) / Alaska zone 6',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','15036','EPSG','2162',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3474','NAD83(NSRS2007) / Alaska zone 7',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','15037','EPSG','2163',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3475','NAD83(NSRS2007) / Alaska zone 8',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','15038','EPSG','2164',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3476','NAD83(NSRS2007) / Alaska zone 9',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','15039','EPSG','2165',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3477','NAD83(NSRS2007) / Alaska zone 10',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','15040','EPSG','2157',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3478','NAD83(NSRS2007) / Arizona Central',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10232','EPSG','2166',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3479','NAD83(NSRS2007) / Arizona Central (ft)',NULL,NULL,'EPSG','4495','EPSG','4759','EPSG','15305','EPSG','2166',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3480','NAD83(NSRS2007) / Arizona East',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10231','EPSG','2167',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3481','NAD83(NSRS2007) / Arizona East (ft)',NULL,NULL,'EPSG','4495','EPSG','4759','EPSG','15304','EPSG','2167',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3482','NAD83(NSRS2007) / Arizona West',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10233','EPSG','2168',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3483','NAD83(NSRS2007) / Arizona West (ft)',NULL,NULL,'EPSG','4495','EPSG','4759','EPSG','15306','EPSG','2168',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3484','NAD83(NSRS2007) / Arkansas North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10331','EPSG','2169',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3485','NAD83(NSRS2007) / Arkansas North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15385','EPSG','2169',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3486','NAD83(NSRS2007) / Arkansas South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10332','EPSG','2170',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3487','NAD83(NSRS2007) / Arkansas South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15386','EPSG','2170',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3488','NAD83(NSRS2007) / California Albers',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10420','EPSG','1375',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3489','NAD83(NSRS2007) / California zone 1',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10431','EPSG','2175',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3490','NAD83(NSRS2007) / California zone 1 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15307','EPSG','2175',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3491','NAD83(NSRS2007) / California zone 2',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10432','EPSG','2176',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3492','NAD83(NSRS2007) / California zone 2 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15308','EPSG','2176',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3493','NAD83(NSRS2007) / California zone 3',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10433','EPSG','2177',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3494','NAD83(NSRS2007) / California zone 3 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15309','EPSG','2177',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3495','NAD83(NSRS2007) / California zone 4',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10434','EPSG','2178',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3496','NAD83(NSRS2007) / California zone 4 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15310','EPSG','2178',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3497','NAD83(NSRS2007) / California zone 5',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10435','EPSG','2182',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3498','NAD83(NSRS2007) / California zone 5 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15311','EPSG','2182',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3499','NAD83(NSRS2007) / California zone 6',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10436','EPSG','2180',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3500','NAD83(NSRS2007) / California zone 6 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15312','EPSG','2180',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3501','NAD83(NSRS2007) / Colorado Central',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10532','EPSG','2183',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3502','NAD83(NSRS2007) / Colorado Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15314','EPSG','2183',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3503','NAD83(NSRS2007) / Colorado North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10531','EPSG','2184',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3504','NAD83(NSRS2007) / Colorado North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15313','EPSG','2184',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3505','NAD83(NSRS2007) / Colorado South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10533','EPSG','2185',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3506','NAD83(NSRS2007) / Colorado South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15315','EPSG','2185',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3507','NAD83(NSRS2007) / Connecticut',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10630','EPSG','1377',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3508','NAD83(NSRS2007) / Connecticut (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15316','EPSG','1377',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3509','NAD83(NSRS2007) / Delaware',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10730','EPSG','1378',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3510','NAD83(NSRS2007) / Delaware (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15317','EPSG','1378',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3511','NAD83(NSRS2007) / Florida East',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10931','EPSG','2186',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3512','NAD83(NSRS2007) / Florida East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15318','EPSG','2186',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3513','NAD83(NSRS2007) / Florida GDL Albers',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10934','EPSG','1379',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3514','NAD83(NSRS2007) / Florida North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10933','EPSG','2187',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3515','NAD83(NSRS2007) / Florida North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15320','EPSG','2187',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3516','NAD83(NSRS2007) / Florida West',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','10932','EPSG','2188',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3517','NAD83(NSRS2007) / Florida West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15319','EPSG','2188',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3518','NAD83(NSRS2007) / Georgia East',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11031','EPSG','2189',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3519','NAD83(NSRS2007) / Georgia East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15321','EPSG','2189',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3520','NAD83(NSRS2007) / Georgia West',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11032','EPSG','2190',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3521','NAD83(NSRS2007) / Georgia West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15322','EPSG','2190',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3522','NAD83(NSRS2007) / Idaho Central',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11132','EPSG','2191',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3523','NAD83(NSRS2007) / Idaho Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15324','EPSG','2191',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3524','NAD83(NSRS2007) / Idaho East',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11131','EPSG','2192',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3525','NAD83(NSRS2007) / Idaho East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15323','EPSG','2192',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3526','NAD83(NSRS2007) / Idaho West',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11133','EPSG','2193',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3527','NAD83(NSRS2007) / Idaho West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15325','EPSG','2193',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3528','NAD83(NSRS2007) / Illinois East',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11231','EPSG','2194',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3529','NAD83(NSRS2007) / Illinois East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15387','EPSG','2194',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3530','NAD83(NSRS2007) / Illinois West',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11232','EPSG','2195',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3531','NAD83(NSRS2007) / Illinois West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15388','EPSG','2195',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3532','NAD83(NSRS2007) / Indiana East',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11331','EPSG','2196',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3533','NAD83(NSRS2007) / Indiana East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15372','EPSG','2196',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3534','NAD83(NSRS2007) / Indiana West',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11332','EPSG','2197',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3535','NAD83(NSRS2007) / Indiana West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15373','EPSG','2197',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3536','NAD83(NSRS2007) / Iowa North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11431','EPSG','2198',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3537','NAD83(NSRS2007) / Iowa North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15377','EPSG','2198',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3538','NAD83(NSRS2007) / Iowa South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11432','EPSG','2199',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3539','NAD83(NSRS2007) / Iowa South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15378','EPSG','2199',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3540','NAD83(NSRS2007) / Kansas North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11531','EPSG','2200',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3541','NAD83(NSRS2007) / Kansas North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15379','EPSG','2200',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3542','NAD83(NSRS2007) / Kansas South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11532','EPSG','2201',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3543','NAD83(NSRS2007) / Kansas South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15380','EPSG','2201',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3544','NAD83(NSRS2007) / Kentucky North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','15303','EPSG','2202',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3545','NAD83(NSRS2007) / Kentucky North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15328','EPSG','2202',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3546','NAD83(NSRS2007) / Kentucky Single Zone',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11630','EPSG','1386',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3547','NAD83(NSRS2007) / Kentucky Single Zone (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15375','EPSG','1386',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3548','NAD83(NSRS2007) / Kentucky South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11632','EPSG','2203',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3549','NAD83(NSRS2007) / Kentucky South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15329','EPSG','2203',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3550','NAD83(NSRS2007) / Louisiana North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11731','EPSG','2204',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3551','NAD83(NSRS2007) / Louisiana North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15391','EPSG','2204',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3552','NAD83(NSRS2007) / Louisiana South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11732','EPSG','2529',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3553','NAD83(NSRS2007) / Louisiana South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15392','EPSG','2529',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3554','NAD83(NSRS2007) / Maine CS2000 Central',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11854','EPSG','2959',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3555','NAD83(NSRS2007) / Maine CS2000 East',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11851','EPSG','2960',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3556','NAD83(NSRS2007) / Maine CS2000 West',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11853','EPSG','2958',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3557','NAD83(NSRS2007) / Maine East',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11831','EPSG','2206',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3558','NAD83(NSRS2007) / Maine West',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11832','EPSG','2207',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3559','NAD83(NSRS2007) / Maryland',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11930','EPSG','1389',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3560','NAD83 / Utah North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15297','EPSG','2258',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3561','Old Hawaiian / Hawaii zone 1',NULL,NULL,'EPSG','4497','EPSG','4135','EPSG','15101','EPSG','1546',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3562','Old Hawaiian / Hawaii zone 2',NULL,NULL,'EPSG','4497','EPSG','4135','EPSG','15102','EPSG','1547',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3563','Old Hawaiian / Hawaii zone 3',NULL,NULL,'EPSG','4497','EPSG','4135','EPSG','15103','EPSG','1548',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3564','Old Hawaiian / Hawaii zone 4',NULL,NULL,'EPSG','4497','EPSG','4135','EPSG','15104','EPSG','1549',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3565','Old Hawaiian / Hawaii zone 5',NULL,NULL,'EPSG','4497','EPSG','4135','EPSG','15105','EPSG','1550',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3566','NAD83 / Utah Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15298','EPSG','2257',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3567','NAD83 / Utah South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15299','EPSG','2259',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3568','NAD83(HARN) / Utah North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15297','EPSG','2258',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3569','NAD83(HARN) / Utah Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15298','EPSG','2257',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3570','NAD83(HARN) / Utah South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15299','EPSG','2259',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3571','WGS 84 / North Pole LAEA Bering Sea',NULL,NULL,'EPSG','4464','EPSG','4326','EPSG','17295','EPSG','3480',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3572','WGS 84 / North Pole LAEA Alaska',NULL,NULL,'EPSG','4467','EPSG','4326','EPSG','17296','EPSG','3480',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3573','WGS 84 / North Pole LAEA Canada',NULL,NULL,'EPSG','4466','EPSG','4326','EPSG','17297','EPSG','3480',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3574','WGS 84 / North Pole LAEA Atlantic',NULL,NULL,'EPSG','4465','EPSG','4326','EPSG','17298','EPSG','3480',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3575','WGS 84 / North Pole LAEA Europe',NULL,NULL,'EPSG','4463','EPSG','4326','EPSG','17299','EPSG','3480',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3576','WGS 84 / North Pole LAEA Russia',NULL,NULL,'EPSG','1035','EPSG','4326','EPSG','17300','EPSG','3480',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3577','GDA94 / Australian Albers',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','17365','EPSG','2575',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3578','NAD83 / Yukon Albers',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','19858','EPSG','2417',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3579','NAD83(CSRS) / Yukon Albers',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','19858','EPSG','2417',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3580','NAD83 / NWT Lambert',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','19857','EPSG','3481',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3581','NAD83(CSRS) / NWT Lambert',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','19857','EPSG','3481',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3582','NAD83(NSRS2007) / Maryland (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15330','EPSG','1389',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3583','NAD83(NSRS2007) / Massachusetts Island',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12032','EPSG','2208',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3584','NAD83(NSRS2007) / Massachusetts Island (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15332','EPSG','2208',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3585','NAD83(NSRS2007) / Massachusetts Mainland',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12031','EPSG','2209',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3586','NAD83(NSRS2007) / Massachusetts Mainland (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15331','EPSG','2209',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3587','NAD83(NSRS2007) / Michigan Central',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12142','EPSG','1724',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3588','NAD83(NSRS2007) / Michigan Central (ft)',NULL,NULL,'EPSG','4495','EPSG','4759','EPSG','15334','EPSG','1724',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3589','NAD83(NSRS2007) / Michigan North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12141','EPSG','1723',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3590','NAD83(NSRS2007) / Michigan North (ft)',NULL,NULL,'EPSG','4495','EPSG','4759','EPSG','15333','EPSG','1723',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3591','NAD83(NSRS2007) / Michigan Oblique Mercator',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12150','EPSG','1391',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3592','NAD83(NSRS2007) / Michigan South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12143','EPSG','1725',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3593','NAD83(NSRS2007) / Michigan South (ft)',NULL,NULL,'EPSG','4495','EPSG','4759','EPSG','15335','EPSG','1725',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3594','NAD83(NSRS2007) / Minnesota Central',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12232','EPSG','2213',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3595','NAD83(NSRS2007) / Minnesota North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12231','EPSG','2214',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3596','NAD83(NSRS2007) / Minnesota South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12233','EPSG','2215',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3597','NAD83(NSRS2007) / Mississippi East',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12331','EPSG','2216',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3598','NAD83(NSRS2007) / Mississippi East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15336','EPSG','2216',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3599','NAD83(NSRS2007) / Mississippi West',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12332','EPSG','2217',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3600','NAD83(NSRS2007) / Mississippi West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15337','EPSG','2217',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3601','NAD83(NSRS2007) / Missouri Central',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12432','EPSG','2218',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3602','NAD83(NSRS2007) / Missouri East',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12431','EPSG','2219',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3603','NAD83(NSRS2007) / Missouri West',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12433','EPSG','2220',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3604','NAD83(NSRS2007) / Montana',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12530','EPSG','1395',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3605','NAD83(NSRS2007) / Montana (ft)',NULL,NULL,'EPSG','4495','EPSG','4759','EPSG','15338','EPSG','1395',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3606','NAD83(NSRS2007) / Nebraska',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12630','EPSG','1396',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3607','NAD83(NSRS2007) / Nevada Central',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12732','EPSG','2223',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3608','NAD83(NSRS2007) / Nevada Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15382','EPSG','2223',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3609','NAD83(NSRS2007) / Nevada East',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12731','EPSG','2224',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3610','NAD83(NSRS2007) / Nevada East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15381','EPSG','2224',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3611','NAD83(NSRS2007) / Nevada West',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12733','EPSG','2225',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3612','NAD83(NSRS2007) / Nevada West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15383','EPSG','2225',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3613','NAD83(NSRS2007) / New Hampshire',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12830','EPSG','1398',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3614','NAD83(NSRS2007) / New Hampshire (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15389','EPSG','1398',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3615','NAD83(NSRS2007) / New Jersey',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12930','EPSG','1399',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3616','NAD83(NSRS2007) / New Jersey (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15384','EPSG','1399',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3617','NAD83(NSRS2007) / New Mexico Central',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13032','EPSG','2231',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3618','NAD83(NSRS2007) / New Mexico Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15340','EPSG','2231',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3619','NAD83(NSRS2007) / New Mexico East',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13031','EPSG','2228',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3620','NAD83(NSRS2007) / New Mexico East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15339','EPSG','2228',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3621','NAD83(NSRS2007) / New Mexico West',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13033','EPSG','2232',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3622','NAD83(NSRS2007) / New Mexico West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15341','EPSG','2232',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3623','NAD83(NSRS2007) / New York Central',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13132','EPSG','2233',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3624','NAD83(NSRS2007) / New York Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15343','EPSG','2233',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3625','NAD83(NSRS2007) / New York East',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13131','EPSG','2234',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3626','NAD83(NSRS2007) / New York East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15342','EPSG','2234',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3627','NAD83(NSRS2007) / New York Long Island',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13134','EPSG','2235',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3628','NAD83(NSRS2007) / New York Long Island (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15345','EPSG','2235',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3629','NAD83(NSRS2007) / New York West',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13133','EPSG','2236',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3630','NAD83(NSRS2007) / New York West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15344','EPSG','2236',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3631','NAD83(NSRS2007) / North Carolina',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13230','EPSG','1402',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3632','NAD83(NSRS2007) / North Carolina (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15346','EPSG','1402',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3633','NAD83(NSRS2007) / North Dakota North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13331','EPSG','2237',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3634','NAD83(NSRS2007) / North Dakota North (ft)',NULL,NULL,'EPSG','4495','EPSG','4759','EPSG','15347','EPSG','2237',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3635','NAD83(NSRS2007) / North Dakota South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13332','EPSG','2238',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3636','NAD83(NSRS2007) / North Dakota South (ft)',NULL,NULL,'EPSG','4495','EPSG','4759','EPSG','15348','EPSG','2238',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3637','NAD83(NSRS2007) / Ohio North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13431','EPSG','2239',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3638','NAD83(NSRS2007) / Ohio South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13432','EPSG','2240',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3639','NAD83(NSRS2007) / Oklahoma North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13531','EPSG','2241',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3640','NAD83(NSRS2007) / Oklahoma North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15349','EPSG','2241',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3641','NAD83(NSRS2007) / Oklahoma South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13532','EPSG','2242',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3642','NAD83(NSRS2007) / Oklahoma South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15350','EPSG','2242',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3643','NAD83(NSRS2007) / Oregon LCC (m)',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13633','EPSG','1406',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3644','NAD83(NSRS2007) / Oregon GIC Lambert (ft)',NULL,NULL,'EPSG','4495','EPSG','4759','EPSG','15374','EPSG','1406',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3645','NAD83(NSRS2007) / Oregon North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13631','EPSG','2243',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3646','NAD83(NSRS2007) / Oregon North (ft)',NULL,NULL,'EPSG','4495','EPSG','4759','EPSG','15351','EPSG','2243',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3647','NAD83(NSRS2007) / Oregon South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13632','EPSG','2244',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3648','NAD83(NSRS2007) / Oregon South (ft)',NULL,NULL,'EPSG','4495','EPSG','4759','EPSG','15352','EPSG','2244',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3649','NAD83(NSRS2007) / Pennsylvania North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13731','EPSG','2245',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3650','NAD83(NSRS2007) / Pennsylvania North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15353','EPSG','2245',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3651','NAD83(NSRS2007) / Pennsylvania South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13732','EPSG','2246',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3652','NAD83(NSRS2007) / Pennsylvania South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15354','EPSG','2246',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3653','NAD83(NSRS2007) / Rhode Island',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13830','EPSG','1408',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3654','NAD83(NSRS2007) / Rhode Island (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15390','EPSG','1408',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3655','NAD83(NSRS2007) / South Carolina',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','13930','EPSG','1409',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3656','NAD83(NSRS2007) / South Carolina (ft)',NULL,NULL,'EPSG','4495','EPSG','4759','EPSG','15355','EPSG','1409',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3657','NAD83(NSRS2007) / South Dakota North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14031','EPSG','2249',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3658','NAD83(NSRS2007) / South Dakota North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15394','EPSG','2249',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3659','NAD83(NSRS2007) / South Dakota South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14032','EPSG','2250',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3660','NAD83(NSRS2007) / South Dakota South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15395','EPSG','2250',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3661','NAD83(NSRS2007) / Tennessee',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14130','EPSG','1411',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3662','NAD83(NSRS2007) / Tennessee (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15356','EPSG','1411',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3663','NAD83(NSRS2007) / Texas Central',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14233','EPSG','2252',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3664','NAD83(NSRS2007) / Texas Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15359','EPSG','2252',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3665','NAD83(NSRS2007) / Texas Centric Albers Equal Area',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14254','EPSG','1412',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3666','NAD83(NSRS2007) / Texas Centric Lambert Conformal',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14253','EPSG','1412',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3667','NAD83(NSRS2007) / Texas North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14231','EPSG','2253',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3668','NAD83(NSRS2007) / Texas North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15357','EPSG','2253',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3669','NAD83(NSRS2007) / Texas North Central',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14232','EPSG','2254',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3670','NAD83(NSRS2007) / Texas North Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15358','EPSG','2254',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3671','NAD83(NSRS2007) / Texas South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14235','EPSG','2528',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3672','NAD83(NSRS2007) / Texas South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15361','EPSG','2528',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3673','NAD83(NSRS2007) / Texas South Central',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14234','EPSG','2527',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3674','NAD83(NSRS2007) / Texas South Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15360','EPSG','2527',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3675','NAD83(NSRS2007) / Utah Central',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14332','EPSG','2257',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3676','NAD83(NSRS2007) / Utah Central (ft)',NULL,NULL,'EPSG','4495','EPSG','4759','EPSG','15363','EPSG','2257',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3677','NAD83(NSRS2007) / Utah Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15298','EPSG','2257',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3678','NAD83(NSRS2007) / Utah North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14331','EPSG','2258',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3679','NAD83(NSRS2007) / Utah North (ft)',NULL,NULL,'EPSG','4495','EPSG','4759','EPSG','15362','EPSG','2258',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3680','NAD83(NSRS2007) / Utah North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15297','EPSG','2258',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3681','NAD83(NSRS2007) / Utah South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14333','EPSG','2259',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3682','NAD83(NSRS2007) / Utah South (ft)',NULL,NULL,'EPSG','4495','EPSG','4759','EPSG','15364','EPSG','2259',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3683','NAD83(NSRS2007) / Utah South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15299','EPSG','2259',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3684','NAD83(NSRS2007) / Vermont',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14430','EPSG','1414',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3685','NAD83(NSRS2007) / Virginia North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14531','EPSG','2260',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3686','NAD83(NSRS2007) / Virginia North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15365','EPSG','2260',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3687','NAD83(NSRS2007) / Virginia South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14532','EPSG','2261',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3688','NAD83(NSRS2007) / Virginia South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15366','EPSG','2261',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3689','NAD83(NSRS2007) / Washington North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14631','EPSG','2273',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3690','NAD83(NSRS2007) / Washington North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15367','EPSG','2273',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3691','NAD83(NSRS2007) / Washington South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14632','EPSG','2274',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3692','NAD83(NSRS2007) / Washington South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15368','EPSG','2274',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3693','NAD83(NSRS2007) / West Virginia North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14731','EPSG','2264',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3694','NAD83(NSRS2007) / West Virginia South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14732','EPSG','2265',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3695','NAD83(NSRS2007) / Wisconsin Central',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14832','EPSG','2266',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3696','NAD83(NSRS2007) / Wisconsin Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15370','EPSG','2266',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3697','NAD83(NSRS2007) / Wisconsin North',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14831','EPSG','2267',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3698','NAD83(NSRS2007) / Wisconsin North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15369','EPSG','2267',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3699','NAD83(NSRS2007) / Wisconsin South',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14833','EPSG','2268',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3700','NAD83(NSRS2007) / Wisconsin South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15371','EPSG','2268',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3701','NAD83(NSRS2007) / Wisconsin Transverse Mercator',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14841','EPSG','1418',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3702','NAD83(NSRS2007) / Wyoming East',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14931','EPSG','2269',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3703','NAD83(NSRS2007) / Wyoming East Central',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14932','EPSG','2270',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3704','NAD83(NSRS2007) / Wyoming West Central',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14933','EPSG','2272',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3705','NAD83(NSRS2007) / Wyoming West',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14934','EPSG','2271',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3706','NAD83(NSRS2007) / UTM zone 59N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16059','EPSG','3372',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3707','NAD83(NSRS2007) / UTM zone 60N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16060','EPSG','3373',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3708','NAD83(NSRS2007) / UTM zone 1N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16001','EPSG','3374',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3709','NAD83(NSRS2007) / UTM zone 2N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16002','EPSG','3375',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3710','NAD83(NSRS2007) / UTM zone 3N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16003','EPSG','2133',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3711','NAD83(NSRS2007) / UTM zone 4N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16004','EPSG','2134',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3712','NAD83(NSRS2007) / UTM zone 5N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16005','EPSG','2135',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3713','NAD83(NSRS2007) / UTM zone 6N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16006','EPSG','2136',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3714','NAD83(NSRS2007) / UTM zone 7N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16007','EPSG','3494',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3715','NAD83(NSRS2007) / UTM zone 8N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16008','EPSG','3495',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3716','NAD83(NSRS2007) / UTM zone 9N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16009','EPSG','3496',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3717','NAD83(NSRS2007) / UTM zone 10N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16010','EPSG','3497',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3718','NAD83(NSRS2007) / UTM zone 11N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16011','EPSG','3498',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3719','NAD83(NSRS2007) / UTM zone 12N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16012','EPSG','3499',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3720','NAD83(NSRS2007) / UTM zone 13N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16013','EPSG','3500',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3721','NAD83(NSRS2007) / UTM zone 14N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16014','EPSG','3501',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3722','NAD83(NSRS2007) / UTM zone 15N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16015','EPSG','3502',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3723','NAD83(NSRS2007) / UTM zone 16N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16016','EPSG','3503',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3724','NAD83(NSRS2007) / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16017','EPSG','3504',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3725','NAD83(NSRS2007) / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16018','EPSG','3505',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3726','NAD83(NSRS2007) / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','16019','EPSG','3506',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3727','Reunion 1947 / TM Reunion',NULL,NULL,'EPSG','4499','EPSG','4626','EPSG','19856','EPSG','3337',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3728','NAD83(NSRS2007) / Ohio North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','13433','EPSG','2239',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3729','NAD83(NSRS2007) / Ohio South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','13434','EPSG','2240',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3730','NAD83(NSRS2007) / Wyoming East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','14935','EPSG','2269',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3731','NAD83(NSRS2007) / Wyoming East Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','14936','EPSG','2270',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3732','NAD83(NSRS2007) / Wyoming West Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','14937','EPSG','2272',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3733','NAD83(NSRS2007) / Wyoming West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','14938','EPSG','2271',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3734','NAD83 / Ohio North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','13433','EPSG','2239',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3735','NAD83 / Ohio South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','13434','EPSG','2240',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3736','NAD83 / Wyoming East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','14935','EPSG','2269',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3737','NAD83 / Wyoming East Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','14936','EPSG','2270',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3738','NAD83 / Wyoming West Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','14937','EPSG','2272',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3739','NAD83 / Wyoming West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','14938','EPSG','2271',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3740','NAD83(HARN) / UTM zone 10N',NULL,NULL,'EPSG','4400','EPSG','4152','EPSG','16010','EPSG','3857',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3741','NAD83(HARN) / UTM zone 11N',NULL,NULL,'EPSG','4400','EPSG','4152','EPSG','16011','EPSG','3852',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3742','NAD83(HARN) / UTM zone 12N',NULL,NULL,'EPSG','4400','EPSG','4152','EPSG','16012','EPSG','3499',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3743','NAD83(HARN) / UTM zone 13N',NULL,NULL,'EPSG','4400','EPSG','4152','EPSG','16013','EPSG','3500',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3744','NAD83(HARN) / UTM zone 14N',NULL,NULL,'EPSG','4400','EPSG','4152','EPSG','16014','EPSG','3860',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3745','NAD83(HARN) / UTM zone 15N',NULL,NULL,'EPSG','4400','EPSG','4152','EPSG','16015','EPSG','3861',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3746','NAD83(HARN) / UTM zone 16N',NULL,NULL,'EPSG','4400','EPSG','4152','EPSG','16016','EPSG','3862',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3747','NAD83(HARN) / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4152','EPSG','16017','EPSG','3863',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3748','NAD83(HARN) / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4152','EPSG','16018','EPSG','3868',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3749','NAD83(HARN) / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4152','EPSG','16019','EPSG','3871',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3750','NAD83(HARN) / UTM zone 4N',NULL,NULL,'EPSG','4400','EPSG','4152','EPSG','16004','EPSG','3488',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3751','NAD83(HARN) / UTM zone 5N',NULL,NULL,'EPSG','4400','EPSG','4152','EPSG','16005','EPSG','3491',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3752','WGS 84 / Mercator 41',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','19855','EPSG','3508',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3753','NAD83(HARN) / Ohio North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','13433','EPSG','2239',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3754','NAD83(HARN) / Ohio South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','13434','EPSG','2240',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3755','NAD83(HARN) / Wyoming East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','14935','EPSG','2269',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3756','NAD83(HARN) / Wyoming East Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','14936','EPSG','2270',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3757','NAD83(HARN) / Wyoming West Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','14937','EPSG','2272',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3758','NAD83(HARN) / Wyoming West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','14938','EPSG','2271',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3759','NAD83 / Hawaii zone 3 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15138','EPSG','1548',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3760','NAD83(HARN) / Hawaii zone 3 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15138','EPSG','1548',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3761','NAD83(CSRS) / UTM zone 22N',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','16022','EPSG','2152',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3762','WGS 84 / South Georgia Lambert',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','19854','EPSG','3529',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3763','ETRS89 / Portugal TM06',NULL,NULL,'EPSG','4499','EPSG','4258','EPSG','19853','EPSG','1294',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3764','NZGD2000 / Chatham Island Circuit 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17959','EPSG','2889',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3765','HTRS96 / Croatia TM',NULL,NULL,'EPSG','4400','EPSG','4761','EPSG','19851','EPSG','3234',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3766','HTRS96 / Croatia LCC',NULL,NULL,'EPSG','4400','EPSG','4761','EPSG','19852','EPSG','1076',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3767','HTRS96 / UTM zone 33N',NULL,NULL,'EPSG','4400','EPSG','4761','EPSG','16033','EPSG','3539',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3768','HTRS96 / UTM zone 34N',NULL,NULL,'EPSG','4400','EPSG','4761','EPSG','16034','EPSG','3538',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3769','Bermuda 1957 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4216','EPSG','16020','EPSG','3221',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3770','BDA2000 / Bermuda 2000 National Grid',NULL,NULL,'EPSG','4400','EPSG','4762','EPSG','19849','EPSG','1047',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3771','NAD27 / Alberta 3TM ref merid 111 W',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','17722','EPSG','3543',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3772','NAD27 / Alberta 3TM ref merid 114 W',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','17723','EPSG','3542',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3773','NAD27 / Alberta 3TM ref merid 117 W',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','17724','EPSG','3541',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3774','NAD27 / Alberta 3TM ref merid 120 W',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','17725','EPSG','3540',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3775','NAD83 / Alberta 3TM ref merid 111 W',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','17722','EPSG','3543',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3776','NAD83 / Alberta 3TM ref merid 114 W',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','17723','EPSG','3542',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3777','NAD83 / Alberta 3TM ref merid 117 W',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','17724','EPSG','3541',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3778','NAD83 / Alberta 3TM ref merid 120 W',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','17725','EPSG','3540',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3779','NAD83(CSRS) / Alberta 3TM ref merid 111 W',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','17722','EPSG','3543',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3780','NAD83(CSRS) / Alberta 3TM ref merid 114 W',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','17723','EPSG','3542',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3781','NAD83(CSRS) / Alberta 3TM ref merid 117 W',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','17724','EPSG','3541',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3782','NAD83(CSRS) / Alberta 3TM ref merid 120 W',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','17725','EPSG','3540',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3783','Pitcairn 2006 / Pitcairn TM 2006',NULL,NULL,'EPSG','4400','EPSG','4763','EPSG','19848','EPSG','3208',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3784','Pitcairn 1967 / UTM zone 9S',NULL,NULL,'EPSG','4400','EPSG','4729','EPSG','16109','EPSG','3208',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3785','Popular Visualisation CRS / Mercator',NULL,NULL,'EPSG','4499','EPSG','4055','EPSG','19847','EPSG','3544',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3786','World Equidistant Cylindrical (Sphere)',NULL,NULL,'EPSG','4499','EPSG','4047','EPSG','19968','EPSG','1262',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3787','MGI / Slovene National Grid',NULL,NULL,'EPSG','4498','EPSG','4312','EPSG','19845','EPSG','1212',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3788','NZGD2000 / Auckland Islands TM 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17960','EPSG','3554',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3789','NZGD2000 / Campbell Island TM 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17961','EPSG','3555',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3790','NZGD2000 / Antipodes Islands TM 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17962','EPSG','3556',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3791','NZGD2000 / Raoul Island TM 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17963','EPSG','3557',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3793','NZGD2000 / Chatham Islands TM 2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17965','EPSG','2889',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3794','Slovenia 1996 / Slovene National Grid',NULL,NULL,'EPSG','4400','EPSG','4765','EPSG','19845','EPSG','1212',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3795','NAD27 / Cuba Norte',NULL,NULL,'EPSG','4532','EPSG','4267','EPSG','18063','EPSG','1487',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3796','NAD27 / Cuba Sur',NULL,NULL,'EPSG','4532','EPSG','4267','EPSG','18064','EPSG','1488',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3797','NAD27 / MTQ Lambert',NULL,NULL,'EPSG','4499','EPSG','4267','EPSG','19844','EPSG','1368',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3798','NAD83 / MTQ Lambert',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','19844','EPSG','1368',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3799','NAD83(CSRS) / MTQ Lambert',NULL,NULL,'EPSG','4499','EPSG','4617','EPSG','19844','EPSG','1368',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3800','NAD27 / Alberta 3TM ref merid 120 W',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','17726','EPSG','3540',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3801','NAD83 / Alberta 3TM ref merid 120 W',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','17726','EPSG','3540',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3802','NAD83(CSRS) / Alberta 3TM ref merid 120 W',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','17726','EPSG','3540',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3812','ETRS89 / Belgian Lambert 2008',NULL,NULL,'EPSG','4499','EPSG','4258','EPSG','3811','EPSG','1347',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3814','NAD83 / Mississippi TM',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','3813','EPSG','1393',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3815','NAD83(HARN) / Mississippi TM',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','3813','EPSG','1393',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3816','NAD83(NSRS2007) / Mississippi TM',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','3813','EPSG','1393',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3825','TWD97 / TM2 zone 119',NULL,NULL,'EPSG','4499','EPSG','3824','EPSG','3818','EPSG','3563',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3826','TWD97 / TM2 zone 121',NULL,NULL,'EPSG','4499','EPSG','3824','EPSG','3820','EPSG','3562',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3827','TWD67 / TM2 zone 119',NULL,NULL,'EPSG','4499','EPSG','3821','EPSG','3818','EPSG','3591',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3828','TWD67 / TM2 zone 121',NULL,NULL,'EPSG','4499','EPSG','3821','EPSG','3820','EPSG','3982',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3829','Hu Tzu Shan 1950 / UTM zone 51N',NULL,NULL,'EPSG','4400','EPSG','4236','EPSG','16051','EPSG','3315',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3832','WGS 84 / PDC Mercator',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','3831','EPSG','3172',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3833','Pulkovo 1942(58) / Gauss-Kruger zone 2',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','16202','EPSG','3575',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3834','Pulkovo 1942(83) / Gauss-Kruger zone 2',NULL,NULL,'EPSG','4530','EPSG','4178','EPSG','16202','EPSG','3575',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3835','Pulkovo 1942(83) / Gauss-Kruger zone 3',NULL,NULL,'EPSG','4530','EPSG','4178','EPSG','16203','EPSG','3576',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3836','Pulkovo 1942(83) / Gauss-Kruger zone 4',NULL,NULL,'EPSG','4530','EPSG','4178','EPSG','16204','EPSG','3578',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3837','Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 3',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','16263','EPSG','1512',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3838','Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 4',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','16264','EPSG','1513',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3839','Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 9',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','16269','EPSG','3587',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3840','Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 10',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','16270','EPSG','3588',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3841','Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 6',NULL,NULL,'EPSG','4530','EPSG','4178','EPSG','16266','EPSG','3582',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3842','Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7',NULL,NULL,'EPSG','4530','EPSG','4178','EPSG','16266','EPSG','3584',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3843','Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8',NULL,NULL,'EPSG','4530','EPSG','4178','EPSG','16266','EPSG','3586',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3844','Pulkovo 1942(58) / Stereo70',NULL,NULL,'EPSG','4530','EPSG','4179','EPSG','19926','EPSG','1197',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3845','SWEREF99 / RT90 7.5 gon V emulation',NULL,NULL,'EPSG','4530','EPSG','4619','EPSG','17339','EPSG','2845',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3846','SWEREF99 / RT90 5 gon V emulation',NULL,NULL,'EPSG','4530','EPSG','4619','EPSG','17340','EPSG','2846',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3847','SWEREF99 / RT90 2.5 gon V emulation',NULL,NULL,'EPSG','4530','EPSG','4619','EPSG','17341','EPSG','2847',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3848','SWEREF99 / RT90 0 gon emulation',NULL,NULL,'EPSG','4530','EPSG','4619','EPSG','17342','EPSG','2848',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3849','SWEREF99 / RT90 2.5 gon O emulation',NULL,NULL,'EPSG','4530','EPSG','4619','EPSG','17343','EPSG','2849',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3850','SWEREF99 / RT90 5 gon O emulation',NULL,NULL,'EPSG','4530','EPSG','4619','EPSG','17344','EPSG','2850',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3851','NZGD2000 / NZCS2000',NULL,NULL,'EPSG','4500','EPSG','4167','EPSG','17964','EPSG','3593',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3852','RSRGD2000 / DGLC2000',NULL,NULL,'EPSG','4500','EPSG','4764','EPSG','17966','EPSG','3592',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3854','County ST74',NULL,NULL,'EPSG','4531','EPSG','4619','EPSG','3853','EPSG','3608',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3857','WGS 84 / Pseudo-Mercator',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','3856','EPSG','3544',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3873','ETRS89 / GK19FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','3860','EPSG','3595',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3874','ETRS89 / GK20FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','3861','EPSG','3596',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3875','ETRS89 / GK21FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','3862','EPSG','3597',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3876','ETRS89 / GK22FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','3863','EPSG','3598',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3877','ETRS89 / GK23FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','3864','EPSG','3599',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3878','ETRS89 / GK24FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','3865','EPSG','3600',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3879','ETRS89 / GK25FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','3866','EPSG','3601',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3880','ETRS89 / GK26FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','3867','EPSG','3602',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3881','ETRS89 / GK27FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','3868','EPSG','3603',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3882','ETRS89 / GK28FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','3869','EPSG','3604',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3883','ETRS89 / GK29FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','3870','EPSG','3605',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3884','ETRS89 / GK30FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','3871','EPSG','3606',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3885','ETRS89 / GK31FIN',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','3872','EPSG','3607',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3890','IGRS / UTM zone 37N',NULL,NULL,'EPSG','4400','EPSG','3889','EPSG','16037','EPSG','3387',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3891','IGRS / UTM zone 38N',NULL,NULL,'EPSG','4400','EPSG','3889','EPSG','16038','EPSG','3388',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3892','IGRS / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','3889','EPSG','16039','EPSG','3956',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3893','ED50 / Iraq National Grid',NULL,NULL,'EPSG','4400','EPSG','4230','EPSG','19907','EPSG','3625',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3907','MGI 1901 / Balkans zone 5',NULL,NULL,'EPSG','4530','EPSG','3906','EPSG','18275','EPSG','1709',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3908','MGI 1901 / Balkans zone 6',NULL,NULL,'EPSG','4530','EPSG','3906','EPSG','18276','EPSG','1710',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3909','MGI 1901 / Balkans zone 7',NULL,NULL,'EPSG','4530','EPSG','3906','EPSG','18277','EPSG','1711',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3910','MGI 1901 / Balkans zone 8',NULL,NULL,'EPSG','4530','EPSG','3906','EPSG','18278','EPSG','1712',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3911','MGI 1901 / Slovenia Grid',NULL,NULL,'EPSG','4530','EPSG','3906','EPSG','19967','EPSG','1212',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3912','MGI 1901 / Slovene National Grid',NULL,NULL,'EPSG','4498','EPSG','3906','EPSG','19845','EPSG','1212',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3920','Puerto Rico / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4139','EPSG','16020','EPSG','3329',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3942','RGF93 / CC42',NULL,NULL,'EPSG','4499','EPSG','4171','EPSG','18101','EPSG','3545',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3943','RGF93 / CC43',NULL,NULL,'EPSG','4499','EPSG','4171','EPSG','18102','EPSG','3546',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3944','RGF93 / CC44',NULL,NULL,'EPSG','4499','EPSG','4171','EPSG','18103','EPSG','3547',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3945','RGF93 / CC45',NULL,NULL,'EPSG','4499','EPSG','4171','EPSG','18104','EPSG','3548',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3946','RGF93 / CC46',NULL,NULL,'EPSG','4499','EPSG','4171','EPSG','18105','EPSG','3549',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3947','RGF93 / CC47',NULL,NULL,'EPSG','4499','EPSG','4171','EPSG','18106','EPSG','3550',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3948','RGF93 / CC48',NULL,NULL,'EPSG','4499','EPSG','4171','EPSG','18107','EPSG','3551',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3949','RGF93 / CC49',NULL,NULL,'EPSG','4499','EPSG','4171','EPSG','18108','EPSG','3552',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3950','RGF93 / CC50',NULL,NULL,'EPSG','4499','EPSG','4171','EPSG','18109','EPSG','3553',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3968','NAD83 / Virginia Lambert',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','3967','EPSG','1415',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3969','NAD83(HARN) / Virginia Lambert',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','3967','EPSG','1415',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3970','NAD83(NSRS2007) / Virginia Lambert',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','3967','EPSG','1415',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3973','WGS 84 / NSIDC EASE-Grid North',NULL,NULL,'EPSG','4469','EPSG','4326','EPSG','3897','EPSG','3475',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3974','WGS 84 / NSIDC EASE-Grid South',NULL,NULL,'EPSG','4470','EPSG','4326','EPSG','3898','EPSG','3474',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3975','WGS 84 / NSIDC EASE-Grid Global',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','19869','EPSG','3463',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3976','WGS 84 / NSIDC Sea Ice Polar Stereographic South',NULL,NULL,'EPSG','4470','EPSG','4326','EPSG','19866','EPSG','1997',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3978','NAD83 / Canada Atlas Lambert',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','3977','EPSG','1061',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3979','NAD83(CSRS) / Canada Atlas Lambert',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','3977','EPSG','1061',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3985','Katanga 1955 / Katanga Lambert',NULL,NULL,'EPSG','4499','EPSG','4695','EPSG','3980','EPSG','3147',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','3986','Katanga 1955 / Katanga Gauss zone A',NULL,NULL,'EPSG','4499','EPSG','4695','EPSG','3981','EPSG','3612',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3987','Katanga 1955 / Katanga Gauss zone B',NULL,NULL,'EPSG','4499','EPSG','4695','EPSG','3982','EPSG','3611',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3988','Katanga 1955 / Katanga Gauss zone C',NULL,NULL,'EPSG','4499','EPSG','4695','EPSG','3983','EPSG','3610',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3989','Katanga 1955 / Katanga Gauss zone D',NULL,NULL,'EPSG','4499','EPSG','4695','EPSG','3984','EPSG','3609',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3991','Puerto Rico State Plane CS of 1927',NULL,NULL,'EPSG','4497','EPSG','4139','EPSG','15201','EPSG','3294',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3992','Puerto Rico / St. Croix',NULL,NULL,'EPSG','4497','EPSG','4139','EPSG','15202','EPSG','3330',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3993','Guam 1963 / Guam SPCS',NULL,NULL,'EPSG','4499','EPSG','4675','EPSG','15400','EPSG','3255',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3994','WGS 84 / Mercator 41',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','19843','EPSG','3508',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3995','WGS 84 / Arctic Polar Stereographic',NULL,NULL,'EPSG','4469','EPSG','4326','EPSG','19842','EPSG','1996',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3996','WGS 84 / IBCAO Polar Stereographic',NULL,NULL,'EPSG','4469','EPSG','4326','EPSG','19840','EPSG','1996',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','3997','WGS 84 / Dubai Local TM',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','19839','EPSG','3531',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4026','MOLDREF99 / Moldova TM',NULL,NULL,'EPSG','4530','EPSG','4023','EPSG','3999','EPSG','1162',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4037','WGS 84 / TMzn35N',NULL,NULL,'EPSG','4500','EPSG','4326','EPSG','16035','EPSG','3615',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4038','WGS 84 / TMzn36N',NULL,NULL,'EPSG','4500','EPSG','4326','EPSG','16036','EPSG','3616',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4048','RGRDC 2005 / Congo TM zone 12',NULL,NULL,'EPSG','4499','EPSG','4046','EPSG','17412','EPSG','3937',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4049','RGRDC 2005 / Congo TM zone 14',NULL,NULL,'EPSG','4499','EPSG','4046','EPSG','17414','EPSG','3151',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4050','RGRDC 2005 / Congo TM zone 16',NULL,NULL,'EPSG','4499','EPSG','4046','EPSG','17416','EPSG','3617',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4051','RGRDC 2005 / Congo TM zone 18',NULL,NULL,'EPSG','4499','EPSG','4046','EPSG','17418','EPSG','3618',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4056','RGRDC 2005 / Congo TM zone 20',NULL,NULL,'EPSG','4499','EPSG','4046','EPSG','17420','EPSG','3620',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4057','RGRDC 2005 / Congo TM zone 22',NULL,NULL,'EPSG','4499','EPSG','4046','EPSG','17422','EPSG','3621',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4058','RGRDC 2005 / Congo TM zone 24',NULL,NULL,'EPSG','4499','EPSG','4046','EPSG','17424','EPSG','3622',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4059','RGRDC 2005 / Congo TM zone 26',NULL,NULL,'EPSG','4499','EPSG','4046','EPSG','17426','EPSG','3623',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4060','RGRDC 2005 / Congo TM zone 28',NULL,NULL,'EPSG','4499','EPSG','4046','EPSG','17428','EPSG','3624',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4061','RGRDC 2005 / UTM zone 33S',NULL,NULL,'EPSG','4499','EPSG','4046','EPSG','16133','EPSG','3626',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4062','RGRDC 2005 / UTM zone 34S',NULL,NULL,'EPSG','4499','EPSG','4046','EPSG','16134','EPSG','3627',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4063','RGRDC 2005 / UTM zone 35S',NULL,NULL,'EPSG','4499','EPSG','4046','EPSG','16135','EPSG','3628',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4071','Chua / UTM zone 23S',NULL,NULL,'EPSG','4400','EPSG','4224','EPSG','16123','EPSG','3619',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4082','REGCAN95 / UTM zone 27N',NULL,NULL,'EPSG','4400','EPSG','4081','EPSG','16027','EPSG','3629',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4083','REGCAN95 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4081','EPSG','16028','EPSG','3630',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4087','WGS 84 / World Equidistant Cylindrical',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','4085','EPSG','1262',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4088','World Equidistant Cylindrical (Sphere)',NULL,NULL,'EPSG','4499','EPSG','4047','EPSG','4086','EPSG','1262',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4093','ETRS89 / DKTM1',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','4089','EPSG','3631',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4094','ETRS89 / DKTM2',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','4090','EPSG','3632',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4095','ETRS89 / DKTM3',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','4091','EPSG','2532',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4096','ETRS89 / DKTM4',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','4092','EPSG','2533',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4217','NAD83 / BLM 59N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','4186','EPSG','3372',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4390','Kertau 1968 / Johor Grid',NULL,NULL,'EPSG','4400','EPSG','4245','EPSG','4114','EPSG','3376',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4391','Kertau 1968 / Sembilan and Melaka Grid',NULL,NULL,'EPSG','4400','EPSG','4245','EPSG','4115','EPSG','3377',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4392','Kertau 1968 / Pahang Grid',NULL,NULL,'EPSG','4400','EPSG','4245','EPSG','4116','EPSG','3378',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4393','Kertau 1968 / Selangor Grid',NULL,NULL,'EPSG','4400','EPSG','4245','EPSG','4117','EPSG','3379',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4394','Kertau 1968 / Terengganu Grid',NULL,NULL,'EPSG','4400','EPSG','4245','EPSG','4177','EPSG','3380',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4395','Kertau 1968 / Pinang Grid',NULL,NULL,'EPSG','4400','EPSG','4245','EPSG','4305','EPSG','3381',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4396','Kertau 1968 / Kedah and Perlis Grid',NULL,NULL,'EPSG','4400','EPSG','4245','EPSG','4320','EPSG','3382',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4397','Kertau 1968 / Perak Revised Grid',NULL,NULL,'EPSG','4400','EPSG','4245','EPSG','4321','EPSG','3383',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4398','Kertau 1968 / Kelantan Grid',NULL,NULL,'EPSG','4400','EPSG','4245','EPSG','4323','EPSG','3384',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4399','NAD27 / BLM 59N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4186','EPSG','3372',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4400','NAD27 / BLM 60N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4187','EPSG','3373',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4401','NAD27 / BLM 1N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4101','EPSG','3374',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4402','NAD27 / BLM 2N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4102','EPSG','3375',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4403','NAD27 / BLM 3N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4103','EPSG','2133',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4404','NAD27 / BLM 4N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4104','EPSG','2134',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4405','NAD27 / BLM 5N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4105','EPSG','2135',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4406','NAD27 / BLM 6N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4106','EPSG','2136',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4407','NAD27 / BLM 7N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4107','EPSG','3494',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4408','NAD27 / BLM 8N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4108','EPSG','3495',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4409','NAD27 / BLM 9N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4109','EPSG','3496',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4410','NAD27 / BLM 10N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4110','EPSG','3497',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4411','NAD27 / BLM 11N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4111','EPSG','3498',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4412','NAD27 / BLM 12N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4112','EPSG','3499',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4413','NAD27 / BLM 13N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4113','EPSG','3500',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4414','NAD83(HARN) / Guam Map Grid',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','4325','EPSG','3255',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4415','Katanga 1955 / Katanga Lambert',NULL,NULL,'EPSG','4499','EPSG','4695','EPSG','4416','EPSG','3147',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4417','Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7',NULL,NULL,'EPSG','4530','EPSG','4178','EPSG','16267','EPSG','3584',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4418','NAD27 / BLM 18N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4118','EPSG','3505',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4419','NAD27 / BLM 19N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4119','EPSG','3506',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4420','NAD83 / BLM 60N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','4187','EPSG','3373',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4421','NAD83 / BLM 1N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','4101','EPSG','3374',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4422','NAD83 / BLM 2N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','4102','EPSG','3375',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4423','NAD83 / BLM 3N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','4103','EPSG','2133',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4424','NAD83 / BLM 4N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','4104','EPSG','2134',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4425','NAD83 / BLM 5N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','4105','EPSG','2135',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4426','NAD83 / BLM 6N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','4106','EPSG','2136',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4427','NAD83 / BLM 7N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','4107','EPSG','3494',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4428','NAD83 / BLM 8N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','4108','EPSG','3495',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4429','NAD83 / BLM 9N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','4109','EPSG','3496',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4430','NAD83 / BLM 10N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','4110','EPSG','3497',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4431','NAD83 / BLM 11N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','4111','EPSG','3498',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4432','NAD83 / BLM 12N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','4112','EPSG','3499',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4433','NAD83 / BLM 13N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','4113','EPSG','3500',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4434','Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8',NULL,NULL,'EPSG','4530','EPSG','4178','EPSG','16268','EPSG','3586',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4437','NAD83(NSRS2007) / Puerto Rico and Virgin Is.',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','15230','EPSG','3634',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4438','NAD83 / BLM 18N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','4118','EPSG','3505',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4439','NAD83 / BLM 19N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','4119','EPSG','3506',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4455','NAD27 / Pennsylvania South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4436','EPSG','2246',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4456','NAD27 / New York Long Island',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','4454','EPSG','2235',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4457','NAD83 / South Dakota North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15394','EPSG','2249',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4462','WGS 84 / Australian Centre for Remote Sensing Lambert',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','4460','EPSG','2575',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4467','RGSPM06 / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4463','EPSG','16021','EPSG','1220',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4471','RGM04 / UTM zone 38S',NULL,NULL,'EPSG','4400','EPSG','4470','EPSG','16138','EPSG','1159',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4474','Cadastre 1997 / UTM zone 38S',NULL,NULL,'EPSG','4400','EPSG','4632','EPSG','16138','EPSG','3340',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4484','Mexico ITRF92 / UTM zone 11N',NULL,NULL,'EPSG','4400','EPSG','4483','EPSG','16011','EPSG','3423',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4485','Mexico ITRF92 / UTM zone 12N',NULL,NULL,'EPSG','4400','EPSG','4483','EPSG','16012','EPSG','3424',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4486','Mexico ITRF92 / UTM zone 13N',NULL,NULL,'EPSG','4400','EPSG','4483','EPSG','16013','EPSG','3425',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4487','Mexico ITRF92 / UTM zone 14N',NULL,NULL,'EPSG','4400','EPSG','4483','EPSG','16014','EPSG','3426',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4488','Mexico ITRF92 / UTM zone 15N',NULL,NULL,'EPSG','4400','EPSG','4483','EPSG','16015','EPSG','3633',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4489','Mexico ITRF92 / UTM zone 16N',NULL,NULL,'EPSG','4400','EPSG','4483','EPSG','16016','EPSG','3635',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4491','CGCS2000 / Gauss-Kruger zone 13',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16213','EPSG','1587',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4492','CGCS2000 / Gauss-Kruger zone 14',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16214','EPSG','1588',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4493','CGCS2000 / Gauss-Kruger zone 15',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16215','EPSG','1589',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4494','CGCS2000 / Gauss-Kruger zone 16',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16216','EPSG','1590',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4495','CGCS2000 / Gauss-Kruger zone 17',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16217','EPSG','1591',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4496','CGCS2000 / Gauss-Kruger zone 18',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16218','EPSG','3944',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4497','CGCS2000 / Gauss-Kruger zone 19',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16219','EPSG','3945',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4498','CGCS2000 / Gauss-Kruger zone 20',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16220','EPSG','3946',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4499','CGCS2000 / Gauss-Kruger zone 21',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16221','EPSG','3947',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4500','CGCS2000 / Gauss-Kruger zone 22',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16222','EPSG','3948',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4501','CGCS2000 / Gauss-Kruger zone 23',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16223','EPSG','1597',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4502','CGCS2000 / Gauss-Kruger CM 75E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16313','EPSG','1587',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4503','CGCS2000 / Gauss-Kruger CM 81E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16314','EPSG','1588',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4504','CGCS2000 / Gauss-Kruger CM 87E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16315','EPSG','1589',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4505','CGCS2000 / Gauss-Kruger CM 93E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16316','EPSG','1590',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4506','CGCS2000 / Gauss-Kruger CM 99E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16317','EPSG','1591',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4507','CGCS2000 / Gauss-Kruger CM 105E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16318','EPSG','3944',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4508','CGCS2000 / Gauss-Kruger CM 111E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16319','EPSG','3945',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4509','CGCS2000 / Gauss-Kruger CM 117E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16320','EPSG','3946',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4510','CGCS2000 / Gauss-Kruger CM 123E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16321','EPSG','3947',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4511','CGCS2000 / Gauss-Kruger CM 129E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16322','EPSG','3948',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4512','CGCS2000 / Gauss-Kruger CM 135E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16323','EPSG','1597',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4513','CGCS2000 / 3-degree Gauss-Kruger zone 25',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16285','EPSG','2711',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4514','CGCS2000 / 3-degree Gauss-Kruger zone 26',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16286','EPSG','2712',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4515','CGCS2000 / 3-degree Gauss-Kruger zone 27',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16287','EPSG','2713',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4516','CGCS2000 / 3-degree Gauss-Kruger zone 28',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16288','EPSG','2714',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4517','CGCS2000 / 3-degree Gauss-Kruger zone 29',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16289','EPSG','2715',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4518','CGCS2000 / 3-degree Gauss-Kruger zone 30',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16290','EPSG','2716',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4519','CGCS2000 / 3-degree Gauss-Kruger zone 31',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16291','EPSG','2717',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4520','CGCS2000 / 3-degree Gauss-Kruger zone 32',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16292','EPSG','2718',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4521','CGCS2000 / 3-degree Gauss-Kruger zone 33',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16293','EPSG','2719',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4522','CGCS2000 / 3-degree Gauss-Kruger zone 34',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16294','EPSG','2720',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4523','CGCS2000 / 3-degree Gauss-Kruger zone 35',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16295','EPSG','2721',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4524','CGCS2000 / 3-degree Gauss-Kruger zone 36',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16296','EPSG','2722',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4525','CGCS2000 / 3-degree Gauss-Kruger zone 37',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16297','EPSG','2723',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4526','CGCS2000 / 3-degree Gauss-Kruger zone 38',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16298','EPSG','2724',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4527','CGCS2000 / 3-degree Gauss-Kruger zone 39',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16299','EPSG','2725',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4528','CGCS2000 / 3-degree Gauss-Kruger zone 40',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16070','EPSG','2726',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4529','CGCS2000 / 3-degree Gauss-Kruger zone 41',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16071','EPSG','2727',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4530','CGCS2000 / 3-degree Gauss-Kruger zone 42',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16072','EPSG','2728',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4531','CGCS2000 / 3-degree Gauss-Kruger zone 43',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16073','EPSG','2729',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4532','CGCS2000 / 3-degree Gauss-Kruger zone 44',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16074','EPSG','2730',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4533','CGCS2000 / 3-degree Gauss-Kruger zone 45',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16075','EPSG','2731',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4534','CGCS2000 / 3-degree Gauss-Kruger CM 75E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16313','EPSG','2711',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4535','CGCS2000 / 3-degree Gauss-Kruger CM 78E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16386','EPSG','2712',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4536','CGCS2000 / 3-degree Gauss-Kruger CM 81E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16314','EPSG','2713',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4537','CGCS2000 / 3-degree Gauss-Kruger CM 84E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16388','EPSG','2714',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4538','CGCS2000 / 3-degree Gauss-Kruger CM 87E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16315','EPSG','2715',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4539','CGCS2000 / 3-degree Gauss-Kruger CM 90E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16390','EPSG','2716',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4540','CGCS2000 / 3-degree Gauss-Kruger CM 93E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16316','EPSG','2717',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4541','CGCS2000 / 3-degree Gauss-Kruger CM 96E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16392','EPSG','2718',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4542','CGCS2000 / 3-degree Gauss-Kruger CM 99E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16317','EPSG','2719',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4543','CGCS2000 / 3-degree Gauss-Kruger CM 102E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16394','EPSG','2720',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4544','CGCS2000 / 3-degree Gauss-Kruger CM 105E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16318','EPSG','2721',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4545','CGCS2000 / 3-degree Gauss-Kruger CM 108E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16396','EPSG','2722',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4546','CGCS2000 / 3-degree Gauss-Kruger CM 111E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16319','EPSG','2723',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4547','CGCS2000 / 3-degree Gauss-Kruger CM 114E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16398','EPSG','2724',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4548','CGCS2000 / 3-degree Gauss-Kruger CM 117E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16320','EPSG','2725',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4549','CGCS2000 / 3-degree Gauss-Kruger CM 120E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16170','EPSG','2726',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4550','CGCS2000 / 3-degree Gauss-Kruger CM 123E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16321','EPSG','2727',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4551','CGCS2000 / 3-degree Gauss-Kruger CM 126E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16172','EPSG','2728',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4552','CGCS2000 / 3-degree Gauss-Kruger CM 129E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16322','EPSG','2729',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4553','CGCS2000 / 3-degree Gauss-Kruger CM 132E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16174','EPSG','2730',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4554','CGCS2000 / 3-degree Gauss-Kruger CM 135E',NULL,NULL,'EPSG','4530','EPSG','4490','EPSG','16323','EPSG','2731',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4559','RRAF 1991 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4558','EPSG','16020','EPSG','3825',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4568','New Beijing / Gauss-Kruger zone 13',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16213','EPSG','1587',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4569','New Beijing / Gauss-Kruger zone 14',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16214','EPSG','1588',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4570','New Beijing / Gauss-Kruger zone 15',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16215','EPSG','1589',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4571','New Beijing / Gauss-Kruger zone 16',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16216','EPSG','1590',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4572','New Beijing / Gauss-Kruger zone 17',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16217','EPSG','1591',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4573','New Beijing / Gauss-Kruger zone 18',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16218','EPSG','1592',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4574','New Beijing / Gauss-Kruger zone 19',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16219','EPSG','1593',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4575','New Beijing / Gauss-Kruger zone 20',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16220','EPSG','1594',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4576','New Beijing / Gauss-Kruger zone 21',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16221','EPSG','1595',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4577','New Beijing / Gauss-Kruger zone 22',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16222','EPSG','1596',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4578','New Beijing / Gauss-Kruger zone 23',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16223','EPSG','1597',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4579','New Beijing / Gauss-Kruger CM 75E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16313','EPSG','1587',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4580','New Beijing / Gauss-Kruger CM 81E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16314','EPSG','1588',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4581','New Beijing / Gauss-Kruger CM 87E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16315','EPSG','1589',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4582','New Beijing / Gauss-Kruger CM 93E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16316','EPSG','1590',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4583','New Beijing / Gauss-Kruger CM 99E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16317','EPSG','1591',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4584','New Beijing / Gauss-Kruger CM 105E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16318','EPSG','1592',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4585','New Beijing / Gauss-Kruger CM 111E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16319','EPSG','1593',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4586','New Beijing / Gauss-Kruger CM 117E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16320','EPSG','1594',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4587','New Beijing / Gauss-Kruger CM 123E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16321','EPSG','1595',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4588','New Beijing / Gauss-Kruger CM 129E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16322','EPSG','1596',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4589','New Beijing / Gauss-Kruger CM 135E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16323','EPSG','1597',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4647','ETRS89 / UTM zone 32N (zE-N)',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','4648','EPSG','2861',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4652','New Beijing / 3-degree Gauss-Kruger zone 25',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16285','EPSG','2711',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4653','New Beijing / 3-degree Gauss-Kruger zone 26',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16286','EPSG','2712',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4654','New Beijing / 3-degree Gauss-Kruger zone 27',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16287','EPSG','2713',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4655','New Beijing / 3-degree Gauss-Kruger zone 28',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16288','EPSG','2714',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4656','New Beijing / 3-degree Gauss-Kruger zone 29',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16289','EPSG','2715',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4766','New Beijing / 3-degree Gauss-Kruger zone 30',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16290','EPSG','2716',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4767','New Beijing / 3-degree Gauss-Kruger zone 31',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16291','EPSG','2717',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4768','New Beijing / 3-degree Gauss-Kruger zone 32',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16292','EPSG','2718',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4769','New Beijing / 3-degree Gauss-Kruger zone 33',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16293','EPSG','2719',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4770','New Beijing / 3-degree Gauss-Kruger zone 34',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16294','EPSG','2720',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4771','New Beijing / 3-degree Gauss-Kruger zone 35',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16295','EPSG','2721',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4772','New Beijing / 3-degree Gauss-Kruger zone 36',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16296','EPSG','2722',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4773','New Beijing / 3-degree Gauss-Kruger zone 37',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16297','EPSG','2723',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4774','New Beijing / 3-degree Gauss-Kruger zone 38',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16298','EPSG','2724',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4775','New Beijing / 3-degree Gauss-Kruger zone 39',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16299','EPSG','2725',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4776','New Beijing / 3-degree Gauss-Kruger zone 40',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16070','EPSG','2726',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4777','New Beijing / 3-degree Gauss-Kruger zone 41',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16071','EPSG','2727',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4778','New Beijing / 3-degree Gauss-Kruger zone 42',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16072','EPSG','2728',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4779','New Beijing / 3-degree Gauss-Kruger zone 43',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16073','EPSG','2729',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4780','New Beijing / 3-degree Gauss-Kruger zone 44',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16074','EPSG','2730',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4781','New Beijing / 3-degree Gauss-Kruger zone 45',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16075','EPSG','2731',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4782','New Beijing / 3-degree Gauss-Kruger CM 75E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16313','EPSG','2711',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4783','New Beijing / 3-degree Gauss-Kruger CM 78E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16386','EPSG','2712',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4784','New Beijing / 3-degree Gauss-Kruger CM 81E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16314','EPSG','2713',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4785','New Beijing / 3-degree Gauss-Kruger CM 84E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16388','EPSG','2714',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4786','New Beijing / 3-degree Gauss-Kruger CM 87E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16315','EPSG','2715',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4787','New Beijing / 3-degree Gauss-Kruger CM 90E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16390','EPSG','2716',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4788','New Beijing / 3-degree Gauss-Kruger CM 93E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16316','EPSG','2717',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4789','New Beijing / 3-degree Gauss-Kruger CM 96E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16392','EPSG','2718',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4790','New Beijing / 3-degree Gauss-Kruger CM 99E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16317','EPSG','2719',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4791','New Beijing / 3-degree Gauss-Kruger CM 102E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16394','EPSG','2720',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4792','New Beijing / 3-degree Gauss-Kruger CM 105E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16318','EPSG','2721',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4793','New Beijing / 3-degree Gauss-Kruger CM 108E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16396','EPSG','2722',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4794','New Beijing / 3-degree Gauss-Kruger CM 111E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16319','EPSG','2723',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4795','New Beijing / 3-degree Gauss-Kruger CM 114E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16398','EPSG','2724',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4796','New Beijing / 3-degree Gauss-Kruger CM 117E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16320','EPSG','2725',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4797','New Beijing / 3-degree Gauss-Kruger CM 120E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16170','EPSG','2726',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4798','New Beijing / 3-degree Gauss-Kruger CM 123E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16321','EPSG','2727',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4799','New Beijing / 3-degree Gauss-Kruger CM 126E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16172','EPSG','2728',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4800','New Beijing / 3-degree Gauss-Kruger CM 129E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16322','EPSG','2729',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4812','New Beijing / 3-degree Gauss-Kruger CM 132E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16174','EPSG','2730',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4822','New Beijing / 3-degree Gauss-Kruger CM 135E',NULL,NULL,'EPSG','4530','EPSG','4555','EPSG','16323','EPSG','2731',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4826','WGS 84 / Cape Verde National',NULL,NULL,'EPSG','1024','EPSG','4326','EPSG','4825','EPSG','1062',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4839','ETRS89 / LCC Germany (N-E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','4838','EPSG','3339',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','4855','ETRS89 / NTM zone 5',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','4845','EPSG','3636',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4856','ETRS89 / NTM zone 6',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','4846','EPSG','3639',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4857','ETRS89 / NTM zone 7',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','4847','EPSG','3647',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4858','ETRS89 / NTM zone 8',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','4848','EPSG','3648',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4859','ETRS89 / NTM zone 9',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','4849','EPSG','3649',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4860','ETRS89 / NTM zone 10',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','4850','EPSG','3650',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4861','ETRS89 / NTM zone 11',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','4851','EPSG','3651',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4862','ETRS89 / NTM zone 12',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','4852','EPSG','3653',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4863','ETRS89 / NTM zone 13',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','4853','EPSG','3654',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4864','ETRS89 / NTM zone 14',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','4854','EPSG','3655',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4865','ETRS89 / NTM zone 15',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','4841','EPSG','3656',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4866','ETRS89 / NTM zone 16',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','4842','EPSG','3657',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4867','ETRS89 / NTM zone 17',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','4843','EPSG','3658',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4868','ETRS89 / NTM zone 18',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','4844','EPSG','3660',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4869','ETRS89 / NTM zone 19',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','4881','EPSG','3661',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4870','ETRS89 / NTM zone 20',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5000','EPSG','3662',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4871','ETRS89 / NTM zone 21',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5001','EPSG','3663',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4872','ETRS89 / NTM zone 22',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5002','EPSG','3665',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4873','ETRS89 / NTM zone 23',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5003','EPSG','3667',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4874','ETRS89 / NTM zone 24',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5004','EPSG','3668',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4875','ETRS89 / NTM zone 25',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5005','EPSG','3669',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4876','ETRS89 / NTM zone 26',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5006','EPSG','3671',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4877','ETRS89 / NTM zone 27',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5007','EPSG','3672',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4878','ETRS89 / NTM zone 28',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5008','EPSG','3673',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4879','ETRS89 / NTM zone 29',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5009','EPSG','3674',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','4880','ETRS89 / NTM zone 30',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5010','EPSG','3676',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5014','PTRA08 / UTM zone 25N',NULL,NULL,'EPSG','4400','EPSG','5013','EPSG','16025','EPSG','3682',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5015','PTRA08 / UTM zone 26N',NULL,NULL,'EPSG','4400','EPSG','5013','EPSG','16026','EPSG','3677',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5016','PTRA08 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','5013','EPSG','16028','EPSG','3678',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5017','Lisbon 1890 / Portugal Bonne New',NULL,NULL,'EPSG','6509','EPSG','4666','EPSG','5019','EPSG','1294',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5018','Lisbon / Portuguese Grid New',NULL,NULL,'EPSG','4499','EPSG','4207','EPSG','5020','EPSG','1294',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5041','WGS 84 / UPS North (E,N)',NULL,NULL,'EPSG','1026','EPSG','4326','EPSG','16061','EPSG','1996',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5042','WGS 84 / UPS South (E,N)',NULL,NULL,'EPSG','1027','EPSG','4326','EPSG','16161','EPSG','1997',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5048','ETRS89 / TM35FIN(N,E)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','16065','EPSG','1095',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5069','NAD27 / Conus Albers',NULL,NULL,'EPSG','4499','EPSG','4267','EPSG','5068','EPSG','1323',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5070','NAD83 / Conus Albers',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','5068','EPSG','1323',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5071','NAD83(HARN) / Conus Albers',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','5068','EPSG','1323',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5072','NAD83(NSRS2007) / Conus Albers',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','5068','EPSG','1323',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5105','ETRS89 / NTM zone 5',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5135','EPSG','3636',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5106','ETRS89 / NTM zone 6',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5136','EPSG','3639',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5107','ETRS89 / NTM zone 7',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5137','EPSG','3647',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5108','ETRS89 / NTM zone 8',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5138','EPSG','3648',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5109','ETRS89 / NTM zone 9',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5139','EPSG','3649',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5110','ETRS89 / NTM zone 10',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5140','EPSG','3650',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5111','ETRS89 / NTM zone 11',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5141','EPSG','3651',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5112','ETRS89 / NTM zone 12',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5142','EPSG','3653',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5113','ETRS89 / NTM zone 13',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5143','EPSG','3654',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5114','ETRS89 / NTM zone 14',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5144','EPSG','3655',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5115','ETRS89 / NTM zone 15',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5145','EPSG','3656',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5116','ETRS89 / NTM zone 16',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5146','EPSG','3657',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5117','ETRS89 / NTM zone 17',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5147','EPSG','3658',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5118','ETRS89 / NTM zone 18',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5148','EPSG','3660',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5119','ETRS89 / NTM zone 19',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5149','EPSG','3661',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5120','ETRS89 / NTM zone 20',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5150','EPSG','3662',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5121','ETRS89 / NTM zone 21',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5151','EPSG','3663',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5122','ETRS89 / NTM zone 22',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5152','EPSG','3665',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5123','ETRS89 / NTM zone 23',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5153','EPSG','3667',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5124','ETRS89 / NTM zone 24',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5154','EPSG','3668',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5125','ETRS89 / NTM zone 25',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5155','EPSG','3669',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5126','ETRS89 / NTM zone 26',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5156','EPSG','3671',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5127','ETRS89 / NTM zone 27',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5157','EPSG','3672',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5128','ETRS89 / NTM zone 28',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5158','EPSG','3673',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5129','ETRS89 / NTM zone 29',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5159','EPSG','3674',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5130','ETRS89 / NTM zone 30',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5160','EPSG','3676',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5167','Korean 1985 / East Sea Belt',NULL,NULL,'EPSG','4530','EPSG','4162','EPSG','5049','EPSG','3720',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5168','Korean 1985 / Central Belt Jeju',NULL,NULL,'EPSG','4530','EPSG','4162','EPSG','5131','EPSG','3721',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5169','Tokyo 1892 / Korea West Belt',NULL,NULL,'EPSG','4530','EPSG','5132','EPSG','18253','EPSG','3713',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5170','Tokyo 1892 / Korea Central Belt',NULL,NULL,'EPSG','4530','EPSG','5132','EPSG','18252','EPSG','3716',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5171','Tokyo 1892 / Korea East Belt',NULL,NULL,'EPSG','4530','EPSG','5132','EPSG','18251','EPSG','3726',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5172','Tokyo 1892 / Korea East Sea Belt',NULL,NULL,'EPSG','4530','EPSG','5132','EPSG','5049','EPSG','3727',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5173','Korean 1985 / Modified West Belt',NULL,NULL,'EPSG','4530','EPSG','4162','EPSG','5161','EPSG','1498',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5174','Korean 1985 / Modified Central Belt',NULL,NULL,'EPSG','4530','EPSG','4162','EPSG','5162','EPSG','3730',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5175','Korean 1985 / Modified Central Belt Jeju',NULL,NULL,'EPSG','4530','EPSG','4162','EPSG','5163','EPSG','3721',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5176','Korean 1985 / Modified East Belt',NULL,NULL,'EPSG','4530','EPSG','4162','EPSG','5164','EPSG','1496',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5177','Korean 1985 / Modified East Sea Belt',NULL,NULL,'EPSG','4530','EPSG','4162','EPSG','5165','EPSG','3720',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5178','Korean 1985 / Unified CS',NULL,NULL,'EPSG','4530','EPSG','4162','EPSG','5100','EPSG','3266',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5179','Korea 2000 / Unified CS',NULL,NULL,'EPSG','4530','EPSG','4737','EPSG','5100','EPSG','1135',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5180','Korea 2000 / West Belt',NULL,NULL,'EPSG','4530','EPSG','4737','EPSG','18253','EPSG','1498',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5181','Korea 2000 / Central Belt',NULL,NULL,'EPSG','4530','EPSG','4737','EPSG','18252','EPSG','3730',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5182','Korea 2000 / Central Belt Jeju',NULL,NULL,'EPSG','4530','EPSG','4737','EPSG','5131','EPSG','3721',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5183','Korea 2000 / East Belt',NULL,NULL,'EPSG','4530','EPSG','4737','EPSG','18251','EPSG','1496',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5184','Korea 2000 / East Sea Belt',NULL,NULL,'EPSG','4530','EPSG','4737','EPSG','5049','EPSG','3720',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5185','Korea 2000 / West Belt 2010',NULL,NULL,'EPSG','4530','EPSG','4737','EPSG','5101','EPSG','1498',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5186','Korea 2000 / Central Belt 2010',NULL,NULL,'EPSG','4530','EPSG','4737','EPSG','5102','EPSG','1497',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5187','Korea 2000 / East Belt 2010',NULL,NULL,'EPSG','4530','EPSG','4737','EPSG','5103','EPSG','1496',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5188','Korea 2000 / East Sea Belt 2010',NULL,NULL,'EPSG','4530','EPSG','4737','EPSG','5104','EPSG','3720',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5221','S-JTSK (Ferro) / Krovak East North',NULL,NULL,'EPSG','4499','EPSG','4818','EPSG','5218','EPSG','1306',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5223','WGS 84 / Gabon TM',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','5222','EPSG','3249',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5224','S-JTSK/05 (Ferro) / Modified Krovak',NULL,NULL,'EPSG','6501','EPSG','5229','EPSG','5219','EPSG','1079',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5225','S-JTSK/05 (Ferro) / Modified Krovak East North',NULL,NULL,'EPSG','4499','EPSG','5229','EPSG','5220','EPSG','1079',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5234','Kandawala / Sri Lanka Grid',NULL,NULL,'EPSG','4400','EPSG','4244','EPSG','5231','EPSG','3310',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5235','SLD99 / Sri Lanka Grid 1999',NULL,NULL,'EPSG','4400','EPSG','5233','EPSG','5232','EPSG','3310',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5243','ETRS89 / LCC Germany (E-N)',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','4838','EPSG','3339',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5247','GDBD2009 / Brunei BRSO',NULL,NULL,'EPSG','4400','EPSG','5246','EPSG','19894','EPSG','1055',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5253','TUREF / TM27',NULL,NULL,'EPSG','4530','EPSG','5252','EPSG','16305','EPSG','1524',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5254','TUREF / TM30',NULL,NULL,'EPSG','4530','EPSG','5252','EPSG','16370','EPSG','1525',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5255','TUREF / TM33',NULL,NULL,'EPSG','4530','EPSG','5252','EPSG','16306','EPSG','1526',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5256','TUREF / TM36',NULL,NULL,'EPSG','4530','EPSG','5252','EPSG','16372','EPSG','1527',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5257','TUREF / TM39',NULL,NULL,'EPSG','4530','EPSG','5252','EPSG','16307','EPSG','1528',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5258','TUREF / TM42',NULL,NULL,'EPSG','4530','EPSG','5252','EPSG','16374','EPSG','1529',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5259','TUREF / TM45',NULL,NULL,'EPSG','4530','EPSG','5252','EPSG','16308','EPSG','1530',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5266','DRUKREF 03 / Bhutan National Grid',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5265','EPSG','1048',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5269','TUREF / 3-degree Gauss-Kruger zone 9',NULL,NULL,'EPSG','4530','EPSG','5252','EPSG','16269','EPSG','1524',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5270','TUREF / 3-degree Gauss-Kruger zone 10',NULL,NULL,'EPSG','4530','EPSG','5252','EPSG','16270','EPSG','1525',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5271','TUREF / 3-degree Gauss-Kruger zone 11',NULL,NULL,'EPSG','4530','EPSG','5252','EPSG','16271','EPSG','1526',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5272','TUREF / 3-degree Gauss-Kruger zone 12',NULL,NULL,'EPSG','4530','EPSG','5252','EPSG','16272','EPSG','1527',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5273','TUREF / 3-degree Gauss-Kruger zone 13',NULL,NULL,'EPSG','4530','EPSG','5252','EPSG','16273','EPSG','1528',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5274','TUREF / 3-degree Gauss-Kruger zone 14',NULL,NULL,'EPSG','4530','EPSG','5252','EPSG','16274','EPSG','1529',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5275','TUREF / 3-degree Gauss-Kruger zone 15',NULL,NULL,'EPSG','4530','EPSG','5252','EPSG','16275','EPSG','1530',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5292','DRUKREF 03 / Bumthang TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5268','EPSG','3734',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5293','DRUKREF 03 / Chhukha TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5276','EPSG','3737',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5294','DRUKREF 03 / Dagana TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5277','EPSG','3738',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5295','DRUKREF 03 / Gasa TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5278','EPSG','3740',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5296','DRUKREF 03 / Ha TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5279','EPSG','3742',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5297','DRUKREF 03 / Lhuentse TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5280','EPSG','3743',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5298','DRUKREF 03 / Mongar TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5281','EPSG','3745',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5299','DRUKREF 03 / Paro TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5282','EPSG','3746',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5300','DRUKREF 03 / Pemagatshel TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5283','EPSG','3747',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5301','DRUKREF 03 / Punakha TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5313','EPSG','3749',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5302','DRUKREF 03 / Samdrup Jongkhar TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5285','EPSG','3750',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5303','DRUKREF 03 / Samtse TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5286','EPSG','3751',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5304','DRUKREF 03 / Sarpang TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5287','EPSG','3752',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5305','DRUKREF 03 / Thimphu TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5312','EPSG','3753',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5306','DRUKREF 03 / Trashigang TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5289','EPSG','3754',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5307','DRUKREF 03 / Trongsa TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5290','EPSG','3755',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5308','DRUKREF 03 / Tsirang TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5284','EPSG','3757',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5309','DRUKREF 03 / Wangdue Phodrang TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5288','EPSG','3758',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5310','DRUKREF 03 / Yangtse TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5314','EPSG','3760',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5311','DRUKREF 03 / Zhemgang TM',NULL,NULL,'EPSG','4400','EPSG','5264','EPSG','5291','EPSG','3761',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5316','ETRS89 / Faroe TM',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','5315','EPSG','1093',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5320','NAD83 / Teranet Ontario Lambert',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','5319','EPSG','1367',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5321','NAD83(CSRS) / Teranet Ontario Lambert',NULL,NULL,'EPSG','4499','EPSG','4617','EPSG','5319','EPSG','1367',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5325','ISN2004 / Lambert 2004',NULL,NULL,'EPSG','4499','EPSG','5324','EPSG','5326','EPSG','1120',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5329','Segara (Jakarta) / NEIEZ',NULL,NULL,'EPSG','4499','EPSG','4820','EPSG','5328','EPSG','1360',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5330','Batavia (Jakarta) / NEIEZ',NULL,NULL,'EPSG','4499','EPSG','4813','EPSG','5328','EPSG','1285',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5331','Makassar (Jakarta) / NEIEZ',NULL,NULL,'EPSG','4499','EPSG','4804','EPSG','5328','EPSG','1316',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5337','Aratu / UTM zone 25S',NULL,NULL,'EPSG','4400','EPSG','4208','EPSG','16125','EPSG','3808',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5343','POSGAR 2007 / Argentina 1',NULL,NULL,'EPSG','4530','EPSG','5340','EPSG','18031','EPSG','1608',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5344','POSGAR 2007 / Argentina 2',NULL,NULL,'EPSG','4530','EPSG','5340','EPSG','18032','EPSG','1609',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5345','POSGAR 2007 / Argentina 3',NULL,NULL,'EPSG','4530','EPSG','5340','EPSG','18033','EPSG','1610',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5346','POSGAR 2007 / Argentina 4',NULL,NULL,'EPSG','4530','EPSG','5340','EPSG','18034','EPSG','1611',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5347','POSGAR 2007 / Argentina 5',NULL,NULL,'EPSG','4530','EPSG','5340','EPSG','18035','EPSG','1612',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5348','POSGAR 2007 / Argentina 6',NULL,NULL,'EPSG','4530','EPSG','5340','EPSG','18036','EPSG','1613',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5349','POSGAR 2007 / Argentina 7',NULL,NULL,'EPSG','4530','EPSG','5340','EPSG','18037','EPSG','1614',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5355','MARGEN / UTM zone 20S',NULL,NULL,'EPSG','4400','EPSG','5354','EPSG','16120','EPSG','1761',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5356','MARGEN / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','5354','EPSG','16119','EPSG','3827',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5357','MARGEN / UTM zone 21S',NULL,NULL,'EPSG','4400','EPSG','5354','EPSG','16121','EPSG','3733',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5361','SIRGAS-Chile / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','5360','EPSG','16119','EPSG','3811',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5362','SIRGAS-Chile / UTM zone 18S',NULL,NULL,'EPSG','4400','EPSG','5360','EPSG','16118','EPSG','3829',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5367','CR05 / CRTM05',NULL,NULL,'EPSG','4500','EPSG','5365','EPSG','5366','EPSG','3849',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5382','SIRGAS-ROU98 / UTM zone 21S',NULL,NULL,'EPSG','4400','EPSG','5381','EPSG','16121','EPSG','3826',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5383','SIRGAS-ROU98 / UTM zone 22S',NULL,NULL,'EPSG','4400','EPSG','5381','EPSG','16122','EPSG','3828',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5387','Peru96 / UTM zone 18S',NULL,NULL,'EPSG','4400','EPSG','5373','EPSG','16118','EPSG','3838',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5388','Peru96 / UTM zone 17S',NULL,NULL,'EPSG','4400','EPSG','5373','EPSG','16017','EPSG','3837',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5389','Peru96 / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','5373','EPSG','16119','EPSG','3836',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5396','SIRGAS 2000 / UTM zone 26S',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16126','EPSG','3842',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5456','Ocotepeque 1935 / Costa Rica Norte',NULL,NULL,'EPSG','4499','EPSG','5451','EPSG','5390','EPSG','3869',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5457','Ocotepeque 1935 / Costa Rica Sur',NULL,NULL,'EPSG','4499','EPSG','5451','EPSG','5394','EPSG','3870',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5458','Ocotepeque 1935 / Guatemala Norte',NULL,NULL,'EPSG','4499','EPSG','4267','EPSG','18211','EPSG','2120',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5459','Ocotepeque 1935 / Guatemala Sur',NULL,NULL,'EPSG','4499','EPSG','5451','EPSG','18212','EPSG','2121',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5460','Ocotepeque 1935 / El Salvador Lambert',NULL,NULL,'EPSG','4499','EPSG','5451','EPSG','5399','EPSG','3243',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5461','Ocotepeque 1935 / Nicaragua Norte',NULL,NULL,'EPSG','4499','EPSG','5451','EPSG','5439','EPSG','3844',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5462','Ocotepeque 1935 / Nicaragua Sur',NULL,NULL,'EPSG','4499','EPSG','5451','EPSG','5444','EPSG','3847',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5463','SAD69 / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4618','EPSG','16017','EPSG','3830',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5466','Sibun Gorge 1922 / Colony Grid',NULL,NULL,'EPSG','4499','EPSG','5464','EPSG','5465','EPSG','3219',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5469','Panama-Colon 1911 / Panama Lambert',NULL,NULL,'EPSG','4499','EPSG','5467','EPSG','5468','EPSG','3290',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5472','Panama-Colon 1911 / Panama Polyconic',NULL,NULL,'EPSG','1028','EPSG','5467','EPSG','5471','EPSG','3290',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5479','RSRGD2000 / MSLC2000',NULL,NULL,'EPSG','4500','EPSG','4764','EPSG','5475','EPSG','3853',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5480','RSRGD2000 / BCLC2000',NULL,NULL,'EPSG','4500','EPSG','4764','EPSG','5476','EPSG','3854',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5481','RSRGD2000 / PCLC2000',NULL,NULL,'EPSG','4500','EPSG','4764','EPSG','5477','EPSG','3855',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5482','RSRGD2000 / RSPS2000',NULL,NULL,'EPSG','1044','EPSG','4764','EPSG','5478','EPSG','3856',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5490','RGAF09 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','5489','EPSG','16020','EPSG','3825',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5513','S-JTSK / Krovak',NULL,NULL,'EPSG','6501','EPSG','4156','EPSG','5509','EPSG','1306',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5514','S-JTSK / Krovak East North',NULL,NULL,'EPSG','4499','EPSG','4156','EPSG','5510','EPSG','1306',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5515','S-JTSK/05 / Modified Krovak',NULL,NULL,'EPSG','6501','EPSG','5228','EPSG','5511','EPSG','1079',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5516','S-JTSK/05 / Modified Krovak East North',NULL,NULL,'EPSG','4499','EPSG','5228','EPSG','5512','EPSG','1079',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5518','CI1971 / Chatham Islands Map Grid',NULL,NULL,'EPSG','4500','EPSG','4672','EPSG','5517','EPSG','2889',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5519','CI1979 / Chatham Islands Map Grid',NULL,NULL,'EPSG','4500','EPSG','4673','EPSG','5517','EPSG','2889',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5520','DHDN / 3-degree Gauss-Kruger zone 1',NULL,NULL,'EPSG','4530','EPSG','4314','EPSG','16261','EPSG','3892',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5523','WGS 84 / Gabon TM 2011',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','5522','EPSG','1100',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5530','SAD69(96) / Brazil Polyconic',NULL,NULL,'EPSG','4499','EPSG','5527','EPSG','19941','EPSG','1053',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5531','SAD69(96) / UTM zone 21S',NULL,NULL,'EPSG','4400','EPSG','5527','EPSG','16121','EPSG','3881',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5532','SAD69(96) / UTM zone 22S',NULL,NULL,'EPSG','4400','EPSG','4618','EPSG','16122','EPSG','3878',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5533','SAD69(96) / UTM zone 23S',NULL,NULL,'EPSG','4400','EPSG','5527','EPSG','16123','EPSG','3445',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5534','SAD69(96) / UTM zone 24S',NULL,NULL,'EPSG','4400','EPSG','5527','EPSG','16124','EPSG','3446',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5535','SAD69(96) / UTM zone 25S',NULL,NULL,'EPSG','4400','EPSG','5527','EPSG','16125','EPSG','3447',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5536','Corrego Alegre 1961 / UTM zone 21S',NULL,NULL,'EPSG','4400','EPSG','5524','EPSG','16121','EPSG','3355',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5537','Corrego Alegre 1961 / UTM zone 22S',NULL,NULL,'EPSG','4400','EPSG','5524','EPSG','16122','EPSG','3176',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5538','Corrego Alegre 1961 / UTM zone 23S',NULL,NULL,'EPSG','4400','EPSG','5524','EPSG','16123','EPSG','3177',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5539','Corrego Alegre 1961 / UTM zone 24S',NULL,NULL,'EPSG','4400','EPSG','5524','EPSG','16124','EPSG','3877',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5550','PNG94 / PNGMG94 zone 54',NULL,NULL,'EPSG','4400','EPSG','5546','EPSG','5547','EPSG','3882',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5551','PNG94 / PNGMG94 zone 55',NULL,NULL,'EPSG','4400','EPSG','5546','EPSG','5548','EPSG','3885',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5552','PNG94 / PNGMG94 zone 56',NULL,NULL,'EPSG','4400','EPSG','5546','EPSG','5549','EPSG','3888',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5559','Ocotepeque 1935 / Guatemala Norte',NULL,NULL,'EPSG','4499','EPSG','5451','EPSG','18211','EPSG','2120',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5562','UCS-2000 / Gauss-Kruger zone 4',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16204','EPSG','3895',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5563','UCS-2000 / Gauss-Kruger zone 5',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16205','EPSG','3898',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5564','UCS-2000 / Gauss-Kruger zone 6',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16206','EPSG','3903',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5565','UCS-2000 / Gauss-Kruger zone 7',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16207','EPSG','3905',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5566','UCS-2000 / Gauss-Kruger CM 21E',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16304','EPSG','3895',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5567','UCS-2000 / Gauss-Kruger CM 27E',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16305','EPSG','3898',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5568','UCS-2000 / Gauss-Kruger CM 33E',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16306','EPSG','3903',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5569','UCS-2000 / Gauss-Kruger CM 39E',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16307','EPSG','3905',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5570','UCS-2000 / 3-degree Gauss-Kruger zone 7',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16267','EPSG','3906',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5571','UCS-2000 / 3-degree Gauss-Kruger zone 8',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16268','EPSG','3907',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5572','UCS-2000 / 3-degree Gauss-Kruger zone 9',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16269','EPSG','3908',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5573','UCS-2000 / 3-degree Gauss-Kruger zone 10',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16270','EPSG','3909',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5574','UCS-2000 / 3-degree Gauss-Kruger zone 11',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16271','EPSG','3910',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5575','UCS-2000 / 3-degree Gauss-Kruger zone 12',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16272','EPSG','3912',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5576','UCS-2000 / 3-degree Gauss-Kruger zone 13',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16273','EPSG','3913',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5577','UCS-2000 / 3-degree Gauss-Kruger CM 21E',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16304','EPSG','3906',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5578','UCS-2000 / 3-degree Gauss-Kruger CM 24E',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16368','EPSG','3907',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5579','UCS-2000 / 3-degree Gauss-Kruger CM 27E',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16305','EPSG','3908',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5580','UCS-2000 / 3-degree Gauss-Kruger CM 30E',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16370','EPSG','3909',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5581','UCS-2000 / 3-degree Gauss-Kruger CM 33E',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16306','EPSG','3910',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5582','UCS-2000 / 3-degree Gauss-Kruger CM 36E',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16372','EPSG','3912',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5583','UCS-2000 / 3-degree Gauss-Kruger CM 39E',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','16307','EPSG','3913',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','5588','NAD27 / New Brunswick Stereographic (NAD27)',NULL,NULL,'EPSG','1029','EPSG','4267','EPSG','5587','EPSG','1447',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5589','Sibun Gorge 1922 / Colony Grid',NULL,NULL,'EPSG','4403','EPSG','5464','EPSG','5465','EPSG','3219',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5596','FEH2010 / Fehmarnbelt TM',NULL,NULL,'EPSG','4400','EPSG','5593','EPSG','5595','EPSG','3889',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5623','NAD27 / Michigan East',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12101','EPSG','1720',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5624','NAD27 / Michigan Old Central',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12102','EPSG','1721',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5625','NAD27 / Michigan West',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12103','EPSG','3652',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5627','ED50 / TM 6 NE',NULL,NULL,'EPSG','4400','EPSG','4230','EPSG','16406','EPSG','3897',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5629','Moznet / UTM zone 38S',NULL,NULL,'EPSG','4400','EPSG','4130','EPSG','16138','EPSG','1541',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5631','Pulkovo 1942(58) / Gauss-Kruger zone 2 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4179','EPSG','16202','EPSG','3575',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5632','PTRA08 / LCC Europe',NULL,NULL,'EPSG','4500','EPSG','5013','EPSG','19985','EPSG','3670',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5633','PTRA08 / LAEA Europe',NULL,NULL,'EPSG','4532','EPSG','5013','EPSG','19986','EPSG','3670',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5634','REGCAN95 / LCC Europe',NULL,NULL,'EPSG','4500','EPSG','4081','EPSG','19985','EPSG','3199',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5635','REGCAN95 / LAEA Europe',NULL,NULL,'EPSG','4500','EPSG','4081','EPSG','19986','EPSG','3199',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5636','TUREF / LAEA Europe',NULL,NULL,'EPSG','4532','EPSG','5252','EPSG','19986','EPSG','1237',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5637','TUREF / LCC Europe',NULL,NULL,'EPSG','4500','EPSG','5252','EPSG','19985','EPSG','1237',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5638','ISN2004 / LAEA Europe',NULL,NULL,'EPSG','4532','EPSG','5324','EPSG','19986','EPSG','1120',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5639','ISN2004 / LCC Europe',NULL,NULL,'EPSG','4500','EPSG','5324','EPSG','19985','EPSG','1120',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5641','SIRGAS 2000 / Brazil Mercator',NULL,NULL,'EPSG','4499','EPSG','4674','EPSG','5640','EPSG','3896',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5643','ED50 / SPBA LCC',NULL,NULL,'EPSG','4400','EPSG','4230','EPSG','5642','EPSG','3899',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5644','RGR92 / UTM zone 39S',NULL,NULL,'EPSG','4400','EPSG','4627','EPSG','16139','EPSG','3915',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5646','NAD83 / Vermont (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','5645','EPSG','1414',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5649','ETRS89 / UTM zone 31N (zE-N)',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','5647','EPSG','2860',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5650','ETRS89 / UTM zone 33N (zE-N)',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','5648','EPSG','2862',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5651','ETRS89 / UTM zone 31N (N-zE)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5647','EPSG','2860',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5652','ETRS89 / UTM zone 32N (N-zE)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','4648','EPSG','2861',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5653','ETRS89 / UTM zone 33N (N-zE)',NULL,NULL,'EPSG','4500','EPSG','4258','EPSG','5648','EPSG','2862',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5654','NAD83(HARN) / Vermont (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','5645','EPSG','1414',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5655','NAD83(NSRS2007) / Vermont (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','5645','EPSG','1414',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5659','Monte Mario / TM Emilia-Romagna',NULL,NULL,'EPSG','4499','EPSG','4265','EPSG','5658','EPSG','4035',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5663','Pulkovo 1942(58) / Gauss-Kruger zone 3 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4179','EPSG','16203','EPSG','1792',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5664','Pulkovo 1942(83) / Gauss-Kruger zone 2 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4178','EPSG','16202','EPSG','3575',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5665','Pulkovo 1942(83) / Gauss-Kruger zone 3 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4178','EPSG','16203','EPSG','3576',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5666','PD/83 / 3-degree Gauss-Kruger zone 3 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4746','EPSG','16263','EPSG','3392',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5667','PD/83 / 3-degree Gauss-Kruger zone 4 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4746','EPSG','16264','EPSG','3393',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5668','RD/83 / 3-degree Gauss-Kruger zone 4 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4745','EPSG','16264','EPSG','3395',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5669','RD/83 / 3-degree Gauss-Kruger zone 5 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4745','EPSG','16265','EPSG','3394',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5670','Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 3 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4179','EPSG','16263','EPSG','1512',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5671','Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 4 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4179','EPSG','16264','EPSG','1513',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5672','Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 5 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4179','EPSG','16265','EPSG','3580',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5673','Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 3 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4178','EPSG','16263','EPSG','1512',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5674','Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 4 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4178','EPSG','16264','EPSG','1513',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5675','Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 5 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4178','EPSG','16265','EPSG','1514',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5676','DHDN / 3-degree Gauss-Kruger zone 2 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4314','EPSG','16262','EPSG','1624',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5677','DHDN / 3-degree Gauss-Kruger zone 3 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4314','EPSG','16263','EPSG','1625',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5678','DHDN / 3-degree Gauss-Kruger zone 4 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4314','EPSG','16264','EPSG','1626',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5679','DHDN / 3-degree Gauss-Kruger zone 5 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4314','EPSG','16265','EPSG','1627',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5680','DHDN / 3-degree Gauss-Kruger zone 1 (E-N)',NULL,NULL,'EPSG','4400','EPSG','4314','EPSG','16261','EPSG','3892',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5682','DB_REF / 3-degree Gauss-Kruger zone 2 (E-N)',NULL,NULL,'EPSG','4400','EPSG','5681','EPSG','16262','EPSG','1624',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5683','DB_REF / 3-degree Gauss-Kruger zone 3 (E-N)',NULL,NULL,'EPSG','4400','EPSG','5681','EPSG','16263','EPSG','3993',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5684','DB_REF / 3-degree Gauss-Kruger zone 4 (E-N)',NULL,NULL,'EPSG','4400','EPSG','5681','EPSG','16264','EPSG','3996',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5685','DB_REF / 3-degree Gauss-Kruger zone 5 (E-N)',NULL,NULL,'EPSG','4400','EPSG','5681','EPSG','16265','EPSG','3998',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5700','NZGD2000 / UTM zone 1S',NULL,NULL,'EPSG','4400','EPSG','4167','EPSG','16101','EPSG','3992',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5819','EPSG topocentric example A',NULL,NULL,'EPSG','4461','EPSG','4979','EPSG','15594','EPSG','4393',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5820','EPSG topocentric example B',NULL,NULL,'EPSG','4461','EPSG','4978','EPSG','15595','EPSG','4393',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5825','AGD66 / ACT Standard Grid',NULL,NULL,'EPSG','4400','EPSG','4202','EPSG','5824','EPSG','2283',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5836','Yemen NGN96 / UTM zone 37N',NULL,NULL,'EPSG','4400','EPSG','4163','EPSG','16037','EPSG','4006',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5837','Yemen NGN96 / UTM zone 40N',NULL,NULL,'EPSG','4400','EPSG','4163','EPSG','16040','EPSG','4002',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5839','Peru96 / UTM zone 17S',NULL,NULL,'EPSG','4400','EPSG','5373','EPSG','16117','EPSG','3837',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5842','WGS 84 / TM 12 SE',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16612','EPSG','4025',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5844','RGRDC 2005 / Congo TM zone 30',NULL,NULL,'EPSG','4499','EPSG','4046','EPSG','17430','EPSG','4018',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5858','SAD69(96) / UTM zone 22S',NULL,NULL,'EPSG','4400','EPSG','5527','EPSG','16122','EPSG','3878',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5875','SAD69(96) / UTM zone 18S',NULL,NULL,'EPSG','4400','EPSG','5527','EPSG','16118','EPSG','4023',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5876','SAD69(96) / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','5527','EPSG','16119','EPSG','4024',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5877','SAD69(96) / UTM zone 20S',NULL,NULL,'EPSG','4400','EPSG','5527','EPSG','16120','EPSG','4026',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5879','Cadastre 1997 / UTM zone 38S',NULL,NULL,'EPSG','4400','EPSG','4475','EPSG','16138','EPSG','3340',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5880','SIRGAS 2000 / Brazil Polyconic',NULL,NULL,'EPSG','4499','EPSG','4674','EPSG','19941','EPSG','1053',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5887','TGD2005 / Tonga Map Grid',NULL,NULL,'EPSG','4400','EPSG','5886','EPSG','5883','EPSG','1234',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5890','JAXA Snow Depth Polar Stereographic North',NULL,NULL,'EPSG','1035','EPSG','4054','EPSG','5889','EPSG','1996',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5896','VN-2000 / TM-3 zone 481',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','5892','EPSG','4193',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5897','VN-2000 / TM-3 zone 482',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','5893','EPSG','4215',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5898','VN-2000 / TM-3 zone 491',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','5894','EPSG','4217',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5899','VN-2000 / TM-3 Da Nang zone',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','5895','EPSG','4218',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5921','WGS 84 / EPSG Arctic Regional zone A1',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5906','EPSG','4019',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5922','WGS 84 / EPSG Arctic Regional zone A2',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5907','EPSG','4027',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5923','WGS 84 / EPSG Arctic Regional zone A3',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5908','EPSG','4028',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5924','WGS 84 / EPSG Arctic Regional zone A4',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5909','EPSG','4029',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5925','WGS 84 / EPSG Arctic Regional zone A5',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5910','EPSG','4031',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5926','WGS 84 / EPSG Arctic Regional zone B1',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5911','EPSG','4032',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5927','WGS 84 / EPSG Arctic Regional zone B2',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5912','EPSG','4033',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5928','WGS 84 / EPSG Arctic Regional zone B3',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5913','EPSG','4034',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5929','WGS 84 / EPSG Arctic Regional zone B4',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5914','EPSG','4037',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5930','WGS 84 / EPSG Arctic Regional zone B5',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5915','EPSG','4038',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5931','WGS 84 / EPSG Arctic Regional zone C1',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5916','EPSG','4040',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5932','WGS 84 / EPSG Arctic Regional zone C2',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5917','EPSG','4041',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5933','WGS 84 / EPSG Arctic Regional zone C3',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5918','EPSG','4042',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5934','WGS 84 / EPSG Arctic Regional zone C4',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5919','EPSG','4043',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5935','WGS 84 / EPSG Arctic Regional zone C5',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5920','EPSG','4045',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5936','WGS 84 / EPSG Alaska Polar Stereographic',NULL,NULL,'EPSG','4467','EPSG','4326','EPSG','5901','EPSG','1996',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5937','WGS 84 / EPSG Canada Polar Stereographic',NULL,NULL,'EPSG','4466','EPSG','4326','EPSG','5902','EPSG','1996',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5938','WGS 84 / EPSG Greenland Polar Stereographic',NULL,NULL,'EPSG','1036','EPSG','4326','EPSG','5903','EPSG','1996',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5939','WGS 84 / EPSG Norway Polar Stereographic',NULL,NULL,'EPSG','1037','EPSG','4326','EPSG','5904','EPSG','1996',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','5940','WGS 84 / EPSG Russia Polar Stereographic',NULL,NULL,'EPSG','1038','EPSG','4326','EPSG','5905','EPSG','1996',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6050','GR96 / EPSG Arctic zone 1-25',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','5979','EPSG','4048',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6051','GR96 / EPSG Arctic zone 2-18',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','5987','EPSG','4039',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6052','GR96 / EPSG Arctic zone 2-20',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','5988','EPSG','4046',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6053','GR96 / EPSG Arctic zone 3-29',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','6002','EPSG','4073',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6054','GR96 / EPSG Arctic zone 3-31',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','6003','EPSG','4074',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6055','GR96 / EPSG Arctic zone 3-33',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','6004','EPSG','4075',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6056','GR96 / EPSG Arctic zone 4-20',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','6009','EPSG','4080',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6057','GR96 / EPSG Arctic zone 4-22',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','6010','EPSG','4081',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6058','GR96 / EPSG Arctic zone 4-24',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','6011','EPSG','4082',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6059','GR96 / EPSG Arctic zone 5-41',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','6035','EPSG','4106',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6060','GR96 / EPSG Arctic zone 5-43',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','6036','EPSG','4107',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6061','GR96 / EPSG Arctic zone 5-45',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','6037','EPSG','4108',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6062','GR96 / EPSG Arctic zone 6-26',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','6045','EPSG','4116',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6063','GR96 / EPSG Arctic zone 6-28',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','6046','EPSG','4117',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6064','GR96 / EPSG Arctic zone 6-30',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','6047','EPSG','4118',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6065','GR96 / EPSG Arctic zone 7-11',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','6048','EPSG','4119',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6066','GR96 / EPSG Arctic zone 7-13',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','6049','EPSG','4120',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6067','GR96 / EPSG Arctic zone 8-20',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','5943','EPSG','4123',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6068','GR96 / EPSG Arctic zone 8-22',NULL,NULL,'EPSG','4400','EPSG','4747','EPSG','5944','EPSG','4124',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6069','ETRS89 / EPSG Arctic zone 2-22',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','5989','EPSG','4053',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6070','ETRS89 / EPSG Arctic zone 3-11',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','5993','EPSG','4058',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6071','ETRS89 / EPSG Arctic zone 4-26',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','6012','EPSG','4083',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6072','ETRS89 / EPSG Arctic zone 4-28',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','6013','EPSG','4084',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6073','ETRS89 / EPSG Arctic zone 5-11',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','6020','EPSG','4091',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6074','ETRS89 / EPSG Arctic zone 5-13',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','6021','EPSG','4092',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6075','WGS 84 / EPSG Arctic zone 2-24',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5990','EPSG','4054',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6076','WGS 84 / EPSG Arctic zone 2-26',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5991','EPSG','4055',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6077','WGS 84 / EPSG Arctic zone 3-13',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5994','EPSG','4059',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6078','WGS 84 / EPSG Arctic zone 3-15',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5995','EPSG','4060',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6079','WGS 84 / EPSG Arctic zone 3-17',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5996','EPSG','4061',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6080','WGS 84 / EPSG Arctic zone 3-19',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5997','EPSG','4062',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6081','WGS 84 / EPSG Arctic zone 4-30',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','6014','EPSG','4085',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6082','WGS 84 / EPSG Arctic zone 4-32',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','6015','EPSG','4086',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6083','WGS 84 / EPSG Arctic zone 4-34',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','6016','EPSG','4087',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6084','WGS 84 / EPSG Arctic zone 4-36',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','6017','EPSG','4088',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6085','WGS 84 / EPSG Arctic zone 4-38',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','6018','EPSG','4089',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6086','WGS 84 / EPSG Arctic zone 4-40',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','6019','EPSG','4090',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6087','WGS 84 / EPSG Arctic zone 5-15',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','6022','EPSG','4093',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6088','WGS 84 / EPSG Arctic zone 5-17',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','6023','EPSG','4094',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6089','WGS 84 / EPSG Arctic zone 5-19',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','6024','EPSG','4095',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6090','WGS 84 / EPSG Arctic zone 5-21',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','6025','EPSG','4096',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6091','WGS 84 / EPSG Arctic zone 5-23',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','6026','EPSG','4097',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6092','WGS 84 / EPSG Arctic zone 5-25',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','6027','EPSG','4098',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6093','WGS 84 / EPSG Arctic zone 5-27',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','6028','EPSG','4099',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6094','NAD83(NSRS2007) / EPSG Arctic zone 5-29',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','6029','EPSG','4100',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6095','NAD83(NSRS2007) / EPSG Arctic zone 5-31',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','6030','EPSG','4101',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6096','NAD83(NSRS2007) / EPSG Arctic zone 6-14',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','6039','EPSG','4110',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6097','NAD83(NSRS2007) / EPSG Arctic zone 6-16',NULL,NULL,'EPSG','4400','EPSG','4759','EPSG','6040','EPSG','4111',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6098','NAD83(CSRS) / EPSG Arctic zone 1-23',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','5978','EPSG','4047',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6099','NAD83(CSRS) / EPSG Arctic zone 2-14',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','5985','EPSG','4030',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6100','NAD83(CSRS) / EPSG Arctic zone 2-16',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','5986','EPSG','4036',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6101','NAD83(CSRS) / EPSG Arctic zone 3-25',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','6000','EPSG','4065',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6102','NAD83(CSRS) / EPSG Arctic zone 3-27',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','6001','EPSG','4070',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6103','NAD83(CSRS) / EPSG Arctic zone 3-29',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','6002','EPSG','4072',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6104','NAD83(CSRS) / EPSG Arctic zone 4-14',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','6006','EPSG','4077',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6105','NAD83(CSRS) / EPSG Arctic zone 4-16',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','6007','EPSG','4078',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6106','NAD83(CSRS) / EPSG Arctic zone 4-18',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','6008','EPSG','4079',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6107','NAD83(CSRS) / EPSG Arctic zone 5-33',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','6031','EPSG','4102',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6108','NAD83(CSRS) / EPSG Arctic zone 5-35',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','6032','EPSG','4103',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6109','NAD83(CSRS) / EPSG Arctic zone 5-37',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','6033','EPSG','4104',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6110','NAD83(CSRS) / EPSG Arctic zone 5-39',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','6034','EPSG','4105',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6111','NAD83(CSRS) / EPSG Arctic zone 6-18',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','6041','EPSG','4112',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6112','NAD83(CSRS) / EPSG Arctic zone 6-20',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','6042','EPSG','4113',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6113','NAD83(CSRS) / EPSG Arctic zone 6-22',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','6043','EPSG','4114',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6114','NAD83(CSRS) / EPSG Arctic zone 6-24',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','6044','EPSG','4115',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6115','WGS 84 / EPSG Arctic zone 1-27',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5980','EPSG','4049',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6116','WGS 84 / EPSG Arctic zone 1-29',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5981','EPSG','4050',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6117','WGS 84 / EPSG Arctic zone 1-31',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5982','EPSG','4051',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6118','WGS 84 / EPSG Arctic zone 1-21',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5977','EPSG','4044',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6119','WGS 84 / EPSG Arctic zone 2-28',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5992','EPSG','4056',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6120','WGS 84 / EPSG Arctic zone 2-10',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5983','EPSG','4057',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6121','WGS 84 / EPSG Arctic zone 2-12',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5984','EPSG','4052',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6122','WGS 84 / EPSG Arctic zone 3-21',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5998','EPSG','4063',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6123','WGS 84 / EPSG Arctic zone 3-23',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','5999','EPSG','4064',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6124','WGS 84 / EPSG Arctic zone 4-12',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','6005','EPSG','4076',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6125','ETRS89 / EPSG Arctic zone 5-47',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','6038','EPSG','4109',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6128','Grand Cayman National Grid 1959',NULL,NULL,'EPSG','1039','EPSG','4723','EPSG','6127','EPSG','3185',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6129','Sister Islands National Grid 1961',NULL,NULL,'EPSG','1039','EPSG','4726','EPSG','6127','EPSG','3186',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6141','Cayman Islands National Grid 2011',NULL,NULL,'EPSG','1039','EPSG','6135','EPSG','6126','EPSG','1063',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','6200','NAD27 / Michigan North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','6197','EPSG','1723',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','6201','NAD27 / Michigan Central',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','6198','EPSG','1724',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6202','NAD27 / Michigan South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','6199','EPSG','1725',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6204','Macedonia State Coordinate System',NULL,NULL,'EPSG','4498','EPSG','3906','EPSG','6203','EPSG','1148',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6210','SIRGAS 2000 / UTM zone 23N',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16023','EPSG','4129',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6211','SIRGAS 2000 / UTM zone 24N',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16024','EPSG','4133',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6244','MAGNA-SIRGAS / Arauca urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6212','EPSG','4122',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6245','MAGNA-SIRGAS / Armenia urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6213','EPSG','4132',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6246','MAGNA-SIRGAS / Barranquilla urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6214','EPSG','4134',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6247','MAGNA-SIRGAS / Bogota urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6215','EPSG','4135',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6248','MAGNA-SIRGAS / Bucaramanga urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6216','EPSG','4136',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6249','MAGNA-SIRGAS / Cali urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6217','EPSG','4137',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6250','MAGNA-SIRGAS / Cartagena urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6218','EPSG','4138',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6251','MAGNA-SIRGAS / Cucuta urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6219','EPSG','4139',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6252','MAGNA-SIRGAS / Florencia urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6220','EPSG','4140',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6253','MAGNA-SIRGAS / Ibague urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6221','EPSG','4141',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6254','MAGNA-SIRGAS / Inirida urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6222','EPSG','4142',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6255','MAGNA-SIRGAS / Leticia urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6223','EPSG','4143',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6256','MAGNA-SIRGAS / Manizales urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6224','EPSG','4144',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6257','MAGNA-SIRGAS / Medellin urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6225','EPSG','4145',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6258','MAGNA-SIRGAS / Mitu urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6226','EPSG','4146',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6259','MAGNA-SIRGAS / Mocoa urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6227','EPSG','4147',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6260','MAGNA-SIRGAS / Monteria urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6228','EPSG','4148',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6261','MAGNA-SIRGAS / Neiva urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6229','EPSG','4149',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6262','MAGNA-SIRGAS / Pasto urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6230','EPSG','4150',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6263','MAGNA-SIRGAS / Pereira urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6231','EPSG','4151',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6264','MAGNA-SIRGAS / Popayan urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6232','EPSG','4152',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6265','MAGNA-SIRGAS / Puerto Carreno urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6233','EPSG','4153',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6266','MAGNA-SIRGAS / Quibdo urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6234','EPSG','4154',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6267','MAGNA-SIRGAS / Riohacha urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6235','EPSG','4155',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6268','MAGNA-SIRGAS / San Andres urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6236','EPSG','4156',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6269','MAGNA-SIRGAS / San Jose del Guaviare urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6237','EPSG','4157',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6270','MAGNA-SIRGAS / Santa Marta urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6238','EPSG','4128',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6271','MAGNA-SIRGAS / Sucre urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6239','EPSG','4130',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6272','MAGNA-SIRGAS / Tunja urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6240','EPSG','4131',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6273','MAGNA-SIRGAS / Valledupar urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6241','EPSG','4158',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6274','MAGNA-SIRGAS / Villavicencio urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6242','EPSG','4159',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6275','MAGNA-SIRGAS / Yopal urban grid',NULL,NULL,'EPSG','4500','EPSG','4686','EPSG','6243','EPSG','4160',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6307','NAD83(CORS96) / Puerto Rico and Virgin Is.',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','15230','EPSG','3634',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6312','CGRS93 / Cyprus Local Transverse Mercator',NULL,NULL,'EPSG','4400','EPSG','6311','EPSG','6308','EPSG','3236',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6316','MGI 1901 / Balkans zone 7',NULL,NULL,'EPSG','4498','EPSG','3906','EPSG','18277','EPSG','1711',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6328','NAD83(2011) / UTM zone 59N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16059','EPSG','3372',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6329','NAD83(2011) / UTM zone 60N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16060','EPSG','3373',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6330','NAD83(2011) / UTM zone 1N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16001','EPSG','3374',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6331','NAD83(2011) / UTM zone 2N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16002','EPSG','3375',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6332','NAD83(2011) / UTM zone 3N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16003','EPSG','2133',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6333','NAD83(2011) / UTM zone 4N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16004','EPSG','2134',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6334','NAD83(2011) / UTM zone 5N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16005','EPSG','2135',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6335','NAD83(2011) / UTM zone 6N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16006','EPSG','2136',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6336','NAD83(2011) / UTM zone 7N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16007','EPSG','3494',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6337','NAD83(2011) / UTM zone 8N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16008','EPSG','3495',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6338','NAD83(2011) / UTM zone 9N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16009','EPSG','3496',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6339','NAD83(2011) / UTM zone 10N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16010','EPSG','3497',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6340','NAD83(2011) / UTM zone 11N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16011','EPSG','3498',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6341','NAD83(2011) / UTM zone 12N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16012','EPSG','3499',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6342','NAD83(2011) / UTM zone 13N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16013','EPSG','3500',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6343','NAD83(2011) / UTM zone 14N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16014','EPSG','3501',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6344','NAD83(2011) / UTM zone 15N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16015','EPSG','3502',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6345','NAD83(2011) / UTM zone 16N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16016','EPSG','3503',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6346','NAD83(2011) / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16017','EPSG','3504',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6347','NAD83(2011) / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16018','EPSG','3505',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6348','NAD83(2011) / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','16019','EPSG','3506',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6350','NAD83(2011) / Conus Albers',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','5068','EPSG','1323',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6351','NAD83(2011) / EPSG Arctic zone 5-29',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','6029','EPSG','4100',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6352','NAD83(2011) / EPSG Arctic zone 5-31',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','6030','EPSG','4101',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6353','NAD83(2011) / EPSG Arctic zone 6-14',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','6039','EPSG','4110',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6354','NAD83(2011) / EPSG Arctic zone 6-16',NULL,NULL,'EPSG','4400','EPSG','6318','EPSG','6040','EPSG','4111',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6355','NAD83(2011) / Alabama East',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10131','EPSG','2154',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6356','NAD83(2011) / Alabama West',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10132','EPSG','2155',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6362','Mexico ITRF92 / LCC',NULL,NULL,'EPSG','4500','EPSG','4483','EPSG','6361','EPSG','1160',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6366','Mexico ITRF2008 / UTM zone 11N',NULL,NULL,'EPSG','4400','EPSG','6365','EPSG','16011','EPSG','3423',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6367','Mexico ITRF2008 / UTM zone 12N',NULL,NULL,'EPSG','4400','EPSG','6365','EPSG','16012','EPSG','3424',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6368','Mexico ITRF2008 / UTM zone 13N',NULL,NULL,'EPSG','4400','EPSG','6365','EPSG','16013','EPSG','3425',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6369','Mexico ITRF2008 / UTM zone 14N',NULL,NULL,'EPSG','4400','EPSG','6365','EPSG','16014','EPSG','3426',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6370','Mexico ITRF2008 / UTM zone 15N',NULL,NULL,'EPSG','4400','EPSG','6365','EPSG','16015','EPSG','3633',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6371','Mexico ITRF2008 / UTM zone 16N',NULL,NULL,'EPSG','4400','EPSG','6365','EPSG','16016','EPSG','3635',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6372','Mexico ITRF2008 / LCC',NULL,NULL,'EPSG','4500','EPSG','6365','EPSG','6361','EPSG','1160',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6381','UCS-2000 / Ukraine TM zone 7',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','6374','EPSG','3906',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6382','UCS-2000 / Ukraine TM zone 8',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','6375','EPSG','3907',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6383','UCS-2000 / Ukraine TM zone 9',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','6376','EPSG','3908',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6384','UCS-2000 / Ukraine TM zone 10',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','6377','EPSG','3909',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6385','UCS-2000 / Ukraine TM zone 11',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','6378','EPSG','3910',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6386','UCS-2000 / Ukraine TM zone 12',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','6379','EPSG','3912',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6387','UCS-2000 / Ukraine TM zone 13',NULL,NULL,'EPSG','4530','EPSG','5561','EPSG','6380','EPSG','3913',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6391','Cayman Islands National Grid 2011',NULL,NULL,'EPSG','1039','EPSG','6135','EPSG','6390','EPSG','1063',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6393','NAD83(2011) / Alaska Albers',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','15021','EPSG','1330',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6394','NAD83(2011) / Alaska zone 1',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','15031','EPSG','2156',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6395','NAD83(2011) / Alaska zone 2',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','15032','EPSG','2158',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6396','NAD83(2011) / Alaska zone 3',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','15033','EPSG','2159',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6397','NAD83(2011) / Alaska zone 4',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','15034','EPSG','2160',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6398','NAD83(2011) / Alaska zone 5',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','15035','EPSG','2161',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6399','NAD83(2011) / Alaska zone 6',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','15036','EPSG','2162',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6400','NAD83(2011) / Alaska zone 7',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','15037','EPSG','2163',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6401','NAD83(2011) / Alaska zone 8',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','15038','EPSG','2164',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6402','NAD83(2011) / Alaska zone 9',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','15039','EPSG','2165',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6403','NAD83(2011) / Alaska zone 10',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','15040','EPSG','2157',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6404','NAD83(2011) / Arizona Central',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10232','EPSG','2166',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6405','NAD83(2011) / Arizona Central (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','15305','EPSG','2166',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6406','NAD83(2011) / Arizona East',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10231','EPSG','2167',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6407','NAD83(2011) / Arizona East (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','15304','EPSG','2167',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6408','NAD83(2011) / Arizona West',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10233','EPSG','2168',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6409','NAD83(2011) / Arizona West (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','15306','EPSG','2168',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6410','NAD83(2011) / Arkansas North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10331','EPSG','2169',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6411','NAD83(2011) / Arkansas North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15385','EPSG','2169',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6412','NAD83(2011) / Arkansas South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10332','EPSG','2170',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6413','NAD83(2011) / Arkansas South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15386','EPSG','2170',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6414','NAD83(2011) / California Albers',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10420','EPSG','1375',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6415','NAD83(2011) / California zone 1',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10431','EPSG','2175',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6416','NAD83(2011) / California zone 1 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15307','EPSG','2175',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6417','NAD83(2011) / California zone 2',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10432','EPSG','2176',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6418','NAD83(2011) / California zone 2 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15308','EPSG','2176',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6419','NAD83(2011) / California zone 3',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10433','EPSG','2177',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6420','NAD83(2011) / California zone 3 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15309','EPSG','2177',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6421','NAD83(2011) / California zone 4',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10434','EPSG','2178',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6422','NAD83(2011) / California zone 4 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15310','EPSG','2178',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6423','NAD83(2011) / California zone 5',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10435','EPSG','2182',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6424','NAD83(2011) / California zone 5 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15311','EPSG','2182',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6425','NAD83(2011) / California zone 6',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10436','EPSG','2180',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6426','NAD83(2011) / California zone 6 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15312','EPSG','2180',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6427','NAD83(2011) / Colorado Central',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10532','EPSG','2183',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6428','NAD83(2011) / Colorado Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15314','EPSG','2183',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6429','NAD83(2011) / Colorado North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10531','EPSG','2184',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6430','NAD83(2011) / Colorado North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15313','EPSG','2184',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6431','NAD83(2011) / Colorado South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10533','EPSG','2185',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6432','NAD83(2011) / Colorado South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15315','EPSG','2185',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6433','NAD83(2011) / Connecticut',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10630','EPSG','1377',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6434','NAD83(2011) / Connecticut (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15316','EPSG','1377',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6435','NAD83(2011) / Delaware',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10730','EPSG','1378',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6436','NAD83(2011) / Delaware (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15317','EPSG','1378',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6437','NAD83(2011) / Florida East',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10931','EPSG','2186',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6438','NAD83(2011) / Florida East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15318','EPSG','2186',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6439','NAD83(2011) / Florida GDL Albers',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10934','EPSG','1379',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6440','NAD83(2011) / Florida North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10933','EPSG','2187',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6441','NAD83(2011) / Florida North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15320','EPSG','2187',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6442','NAD83(2011) / Florida West',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','10932','EPSG','2188',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6443','NAD83(2011) / Florida West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15319','EPSG','2188',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6444','NAD83(2011) / Georgia East',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11031','EPSG','2189',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6445','NAD83(2011) / Georgia East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15321','EPSG','2189',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6446','NAD83(2011) / Georgia West',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11032','EPSG','2190',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6447','NAD83(2011) / Georgia West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15322','EPSG','2190',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6448','NAD83(2011) / Idaho Central',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11132','EPSG','2191',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6449','NAD83(2011) / Idaho Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15324','EPSG','2191',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6450','NAD83(2011) / Idaho East',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11131','EPSG','2192',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6451','NAD83(2011) / Idaho East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15323','EPSG','2192',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6452','NAD83(2011) / Idaho West',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11133','EPSG','2193',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6453','NAD83(2011) / Idaho West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15325','EPSG','2193',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6454','NAD83(2011) / Illinois East',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11231','EPSG','2194',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6455','NAD83(2011) / Illinois East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15387','EPSG','2194',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6456','NAD83(2011) / Illinois West',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11232','EPSG','2195',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6457','NAD83(2011) / Illinois West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15388','EPSG','2195',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6458','NAD83(2011) / Indiana East',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11331','EPSG','2196',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6459','NAD83(2011) / Indiana East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15372','EPSG','2196',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6460','NAD83(2011) / Indiana West',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11332','EPSG','2197',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6461','NAD83(2011) / Indiana West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15373','EPSG','2197',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6462','NAD83(2011) / Iowa North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11431','EPSG','2198',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6463','NAD83(2011) / Iowa North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15377','EPSG','2198',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6464','NAD83(2011) / Iowa South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11432','EPSG','2199',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6465','NAD83(2011) / Iowa South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15378','EPSG','2199',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6466','NAD83(2011) / Kansas North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11531','EPSG','2200',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6467','NAD83(2011) / Kansas North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15379','EPSG','2200',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6468','NAD83(2011) / Kansas South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11532','EPSG','2201',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6469','NAD83(2011) / Kansas South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15380','EPSG','2201',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6470','NAD83(2011) / Kentucky North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','15303','EPSG','2202',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6471','NAD83(2011) / Kentucky North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15328','EPSG','2202',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6472','NAD83(2011) / Kentucky Single Zone',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11630','EPSG','1386',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6473','NAD83(2011) / Kentucky Single Zone (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15375','EPSG','1386',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6474','NAD83(2011) / Kentucky South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11632','EPSG','2203',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6475','NAD83(2011) / Kentucky South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15329','EPSG','2203',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6476','NAD83(2011) / Louisiana North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11731','EPSG','2204',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6477','NAD83(2011) / Louisiana North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15391','EPSG','2204',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6478','NAD83(2011) / Louisiana South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11732','EPSG','2529',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6479','NAD83(2011) / Louisiana South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15392','EPSG','2529',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6480','NAD83(2011) / Maine CS2000 Central',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11854','EPSG','2959',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6481','NAD83(2011) / Maine CS2000 East',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11851','EPSG','2960',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6482','NAD83(2011) / Maine CS2000 West',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11853','EPSG','2958',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6483','NAD83(2011) / Maine East',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11831','EPSG','2206',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6484','NAD83(2011) / Maine East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','11833','EPSG','2206',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6485','NAD83(2011) / Maine West',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11832','EPSG','2207',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6486','NAD83(2011) / Maine West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','11834','EPSG','2207',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6487','NAD83(2011) / Maryland',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','11930','EPSG','1389',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6488','NAD83(2011) / Maryland (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15330','EPSG','1389',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6489','NAD83(2011) / Massachusetts Island',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12032','EPSG','2208',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6490','NAD83(2011) / Massachusetts Island (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15332','EPSG','2208',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6491','NAD83(2011) / Massachusetts Mainland',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12031','EPSG','2209',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6492','NAD83(2011) / Massachusetts Mainland (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15331','EPSG','2209',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6493','NAD83(2011) / Michigan Central',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12142','EPSG','1724',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6494','NAD83(2011) / Michigan Central (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','15334','EPSG','1724',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6495','NAD83(2011) / Michigan North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12141','EPSG','1723',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6496','NAD83(2011) / Michigan North (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','15333','EPSG','1723',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6497','NAD83(2011) / Michigan Oblique Mercator',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12150','EPSG','1391',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6498','NAD83(2011) / Michigan South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12143','EPSG','1725',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6499','NAD83(2011) / Michigan South (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','15335','EPSG','1725',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6500','NAD83(2011) / Minnesota Central',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12232','EPSG','2213',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6501','NAD83(2011) / Minnesota Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','12235','EPSG','2213',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6502','NAD83(2011) / Minnesota North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12231','EPSG','2214',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6503','NAD83(2011) / Minnesota North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','12234','EPSG','2214',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6504','NAD83(2011) / Minnesota South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12233','EPSG','2215',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6505','NAD83(2011) / Minnesota South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','12236','EPSG','2215',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6506','NAD83(2011) / Mississippi East',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12331','EPSG','2216',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6507','NAD83(2011) / Mississippi East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15336','EPSG','2216',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6508','NAD83(2011) / Mississippi TM',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','3813','EPSG','1393',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6509','NAD83(2011) / Mississippi West',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12332','EPSG','2217',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6510','NAD83(2011) / Mississippi West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15337','EPSG','2217',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6511','NAD83(2011) / Missouri Central',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12432','EPSG','2218',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6512','NAD83(2011) / Missouri East',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12431','EPSG','2219',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6513','NAD83(2011) / Missouri West',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12433','EPSG','2220',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6514','NAD83(2011) / Montana',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12530','EPSG','1395',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6515','NAD83(2011) / Montana (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','15338','EPSG','1395',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6516','NAD83(2011) / Nebraska',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12630','EPSG','1396',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6517','NAD83(2011) / Nebraska (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15396','EPSG','1396',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','6518','NAD83(2011) / Nevada Central',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12732','EPSG','2223',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6519','NAD83(2011) / Nevada Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15382','EPSG','2223',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6520','NAD83(2011) / Nevada East',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12731','EPSG','2224',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6521','NAD83(2011) / Nevada East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15381','EPSG','2224',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6522','NAD83(2011) / Nevada West',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12733','EPSG','2225',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6523','NAD83(2011) / Nevada West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15383','EPSG','2225',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6524','NAD83(2011) / New Hampshire',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12830','EPSG','1398',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6525','NAD83(2011) / New Hampshire (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15389','EPSG','1398',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6526','NAD83(2011) / New Jersey',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','12930','EPSG','1399',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6527','NAD83(2011) / New Jersey (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15384','EPSG','1399',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6528','NAD83(2011) / New Mexico Central',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13032','EPSG','2231',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6529','NAD83(2011) / New Mexico Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15340','EPSG','2231',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6530','NAD83(2011) / New Mexico East',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13031','EPSG','2228',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6531','NAD83(2011) / New Mexico East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15339','EPSG','2228',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6532','NAD83(2011) / New Mexico West',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13033','EPSG','2232',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6533','NAD83(2011) / New Mexico West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15341','EPSG','2232',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6534','NAD83(2011) / New York Central',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13132','EPSG','2233',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6535','NAD83(2011) / New York Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15343','EPSG','2233',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6536','NAD83(2011) / New York East',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13131','EPSG','2234',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6537','NAD83(2011) / New York East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15342','EPSG','2234',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6538','NAD83(2011) / New York Long Island',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13134','EPSG','2235',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6539','NAD83(2011) / New York Long Island (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15345','EPSG','2235',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6540','NAD83(2011) / New York West',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13133','EPSG','2236',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6541','NAD83(2011) / New York West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15344','EPSG','2236',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6542','NAD83(2011) / North Carolina',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13230','EPSG','1402',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6543','NAD83(2011) / North Carolina (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15346','EPSG','1402',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6544','NAD83(2011) / North Dakota North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13331','EPSG','2237',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6545','NAD83(2011) / North Dakota North (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','15347','EPSG','2237',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6546','NAD83(2011) / North Dakota South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13332','EPSG','2238',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6547','NAD83(2011) / North Dakota South (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','15348','EPSG','2238',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6548','NAD83(2011) / Ohio North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13431','EPSG','2239',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6549','NAD83(2011) / Ohio North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','13433','EPSG','2239',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6550','NAD83(2011) / Ohio South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13432','EPSG','2240',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6551','NAD83(2011) / Ohio South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','13434','EPSG','2240',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6552','NAD83(2011) / Oklahoma North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13531','EPSG','2241',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6553','NAD83(2011) / Oklahoma North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15349','EPSG','2241',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6554','NAD83(2011) / Oklahoma South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13532','EPSG','2242',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6555','NAD83(2011) / Oklahoma South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15350','EPSG','2242',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6556','NAD83(2011) / Oregon LCC (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13633','EPSG','1406',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6557','NAD83(2011) / Oregon GIC Lambert (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','15374','EPSG','1406',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6558','NAD83(2011) / Oregon North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13631','EPSG','2243',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6559','NAD83(2011) / Oregon North (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','15351','EPSG','2243',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6560','NAD83(2011) / Oregon South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13632','EPSG','2244',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6561','NAD83(2011) / Oregon South (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','15352','EPSG','2244',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6562','NAD83(2011) / Pennsylvania North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13731','EPSG','2245',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6563','NAD83(2011) / Pennsylvania North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15353','EPSG','2245',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6564','NAD83(2011) / Pennsylvania South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13732','EPSG','2246',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6565','NAD83(2011) / Pennsylvania South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15354','EPSG','2246',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6566','NAD83(2011) / Puerto Rico and Virgin Is.',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','15230','EPSG','3634',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6567','NAD83(2011) / Rhode Island',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13830','EPSG','1408',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6568','NAD83(2011) / Rhode Island (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15390','EPSG','1408',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6569','NAD83(2011) / South Carolina',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','13930','EPSG','1409',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6570','NAD83(2011) / South Carolina (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','15355','EPSG','1409',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6571','NAD83(2011) / South Dakota North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14031','EPSG','2249',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6572','NAD83(2011) / South Dakota North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15394','EPSG','2249',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6573','NAD83(2011) / South Dakota South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14032','EPSG','2250',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6574','NAD83(2011) / South Dakota South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15395','EPSG','2250',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6575','NAD83(2011) / Tennessee',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14130','EPSG','1411',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6576','NAD83(2011) / Tennessee (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15356','EPSG','1411',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6577','NAD83(2011) / Texas Central',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14233','EPSG','2252',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6578','NAD83(2011) / Texas Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15359','EPSG','2252',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6579','NAD83(2011) / Texas Centric Albers Equal Area',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14254','EPSG','1412',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6580','NAD83(2011) / Texas Centric Lambert Conformal',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14253','EPSG','1412',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6581','NAD83(2011) / Texas North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14231','EPSG','2253',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6582','NAD83(2011) / Texas North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15357','EPSG','2253',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6583','NAD83(2011) / Texas North Central',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14232','EPSG','2254',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6584','NAD83(2011) / Texas North Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15358','EPSG','2254',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6585','NAD83(2011) / Texas South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14235','EPSG','2528',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6586','NAD83(2011) / Texas South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15361','EPSG','2528',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6587','NAD83(2011) / Texas South Central',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14234','EPSG','2527',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6588','NAD83(2011) / Texas South Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15360','EPSG','2527',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6589','NAD83(2011) / Vermont',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14430','EPSG','1414',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6590','NAD83(2011) / Vermont (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','5645','EPSG','1414',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6591','NAD83(2011) / Virginia Lambert',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','3967','EPSG','1415',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6592','NAD83(2011) / Virginia North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14531','EPSG','2260',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6593','NAD83(2011) / Virginia North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15365','EPSG','2260',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6594','NAD83(2011) / Virginia South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14532','EPSG','2261',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6595','NAD83(2011) / Virginia South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15366','EPSG','2261',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6596','NAD83(2011) / Washington North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14631','EPSG','2273',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6597','NAD83(2011) / Washington North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15367','EPSG','2273',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6598','NAD83(2011) / Washington South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14632','EPSG','2274',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6599','NAD83(2011) / Washington South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15368','EPSG','2274',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6600','NAD83(2011) / West Virginia North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14731','EPSG','2264',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6601','NAD83(2011) / West Virginia North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','14735','EPSG','2264',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6602','NAD83(2011) / West Virginia South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14732','EPSG','2265',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6603','NAD83(2011) / West Virginia South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','14736','EPSG','2265',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6604','NAD83(2011) / Wisconsin Central',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14832','EPSG','2266',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','6605','NAD83(2011) / Wisconsin Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15370','EPSG','2266',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6606','NAD83(2011) / Wisconsin North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14831','EPSG','2267',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6607','NAD83(2011) / Wisconsin North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15369','EPSG','2267',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6608','NAD83(2011) / Wisconsin South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14833','EPSG','2268',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6609','NAD83(2011) / Wisconsin South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15371','EPSG','2268',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6610','NAD83(2011) / Wisconsin Transverse Mercator',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14841','EPSG','1418',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6611','NAD83(2011) / Wyoming East',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14931','EPSG','2269',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6612','NAD83(2011) / Wyoming East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','14935','EPSG','2269',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6613','NAD83(2011) / Wyoming East Central',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14932','EPSG','2270',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6614','NAD83(2011) / Wyoming East Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','14936','EPSG','2270',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6615','NAD83(2011) / Wyoming West',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14934','EPSG','2271',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6616','NAD83(2011) / Wyoming West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','14938','EPSG','2271',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6617','NAD83(2011) / Wyoming West Central',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14933','EPSG','2272',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6618','NAD83(2011) / Wyoming West Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','14937','EPSG','2272',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6619','NAD83(2011) / Utah Central',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14332','EPSG','2257',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6620','NAD83(2011) / Utah North',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14331','EPSG','2258',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6621','NAD83(2011) / Utah South',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14333','EPSG','2259',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6622','NAD83(CSRS) / Quebec Lambert',NULL,NULL,'EPSG','4499','EPSG','4617','EPSG','19944','EPSG','1368',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6623','NAD83 / Quebec Albers',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','6645','EPSG','1368',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6624','NAD83(CSRS) / Quebec Albers',NULL,NULL,'EPSG','4499','EPSG','4617','EPSG','6645','EPSG','1368',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6625','NAD83(2011) / Utah Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15298','EPSG','2257',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6626','NAD83(2011) / Utah North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15297','EPSG','2258',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6627','NAD83(2011) / Utah South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15299','EPSG','2259',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6628','NAD83(PA11) / Hawaii zone 1',NULL,NULL,'EPSG','4499','EPSG','6322','EPSG','15131','EPSG','1546',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6629','NAD83(PA11) / Hawaii zone 2',NULL,NULL,'EPSG','4499','EPSG','6322','EPSG','15132','EPSG','1547',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6630','NAD83(PA11) / Hawaii zone 3',NULL,NULL,'EPSG','4499','EPSG','6322','EPSG','15133','EPSG','1548',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6631','NAD83(PA11) / Hawaii zone 4',NULL,NULL,'EPSG','4499','EPSG','6322','EPSG','15134','EPSG','1549',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6632','NAD83(PA11) / Hawaii zone 5',NULL,NULL,'EPSG','4499','EPSG','6322','EPSG','15135','EPSG','1550',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6633','NAD83(PA11) / Hawaii zone 3 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6322','EPSG','15138','EPSG','1548',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6634','NAD83(PA11) / UTM zone 4N',NULL,NULL,'EPSG','4400','EPSG','6322','EPSG','16004','EPSG','3488',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6635','NAD83(PA11) / UTM zone 5N',NULL,NULL,'EPSG','4400','EPSG','6322','EPSG','16005','EPSG','3491',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6636','NAD83(PA11) / UTM zone 2S',NULL,NULL,'EPSG','4400','EPSG','6322','EPSG','16102','EPSG','3110',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6637','NAD83(MA11) / Guam Map Grid',NULL,NULL,'EPSG','4499','EPSG','6325','EPSG','4325','EPSG','3255',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6646','Karbala 1979 / Iraq National Grid',NULL,NULL,'EPSG','4400','EPSG','4743','EPSG','19907','EPSG','3625',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6669','JGD2011 / Japan Plane Rectangular CS I',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17801','EPSG','1854',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6670','JGD2011 / Japan Plane Rectangular CS II',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17802','EPSG','1855',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6671','JGD2011 / Japan Plane Rectangular CS III',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17803','EPSG','1856',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6672','JGD2011 / Japan Plane Rectangular CS IV',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17804','EPSG','1857',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6673','JGD2011 / Japan Plane Rectangular CS V',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17805','EPSG','1858',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6674','JGD2011 / Japan Plane Rectangular CS VI',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17806','EPSG','1859',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6675','JGD2011 / Japan Plane Rectangular CS VII',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17807','EPSG','1860',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6676','JGD2011 / Japan Plane Rectangular CS VIII',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17808','EPSG','1861',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6677','JGD2011 / Japan Plane Rectangular CS IX',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17809','EPSG','1862',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6678','JGD2011 / Japan Plane Rectangular CS X',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17810','EPSG','1863',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6679','JGD2011 / Japan Plane Rectangular CS XI',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17811','EPSG','1864',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6680','JGD2011 / Japan Plane Rectangular CS XII',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17812','EPSG','1865',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6681','JGD2011 / Japan Plane Rectangular CS XIII',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17813','EPSG','1866',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6682','JGD2011 / Japan Plane Rectangular CS XIV',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17814','EPSG','1867',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6683','JGD2011 / Japan Plane Rectangular CS XV',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17815','EPSG','1868',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6684','JGD2011 / Japan Plane Rectangular CS XVI',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17816','EPSG','1869',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6685','JGD2011 / Japan Plane Rectangular CS XVII',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17817','EPSG','1870',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6686','JGD2011 / Japan Plane Rectangular CS XVIII',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17818','EPSG','1871',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6687','JGD2011 / Japan Plane Rectangular CS XIX',NULL,NULL,'EPSG','4530','EPSG','6668','EPSG','17819','EPSG','1872',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6688','JGD2011 / UTM zone 51N',NULL,NULL,'EPSG','4400','EPSG','6668','EPSG','16051','EPSG','3959',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6689','JGD2011 / UTM zone 52N',NULL,NULL,'EPSG','4400','EPSG','6668','EPSG','16052','EPSG','3960',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6690','JGD2011 / UTM zone 53N',NULL,NULL,'EPSG','4400','EPSG','6668','EPSG','16053','EPSG','3961',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6691','JGD2011 / UTM zone 54N',NULL,NULL,'EPSG','4400','EPSG','6668','EPSG','16054','EPSG','3962',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6692','JGD2011 / UTM zone 55N',NULL,NULL,'EPSG','4400','EPSG','6668','EPSG','16055','EPSG','3963',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6703','WGS 84 / TM 60 SW',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','6702','EPSG','4172',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6707','RDN2008 / UTM zone 32N (N-E)',NULL,NULL,'EPSG','4500','EPSG','6706','EPSG','16032','EPSG','1718',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6708','RDN2008 / UTM zone 33N (N-E)',NULL,NULL,'EPSG','4500','EPSG','6706','EPSG','16033','EPSG','4186',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6709','RDN2008 / UTM zone 34N (N-E)',NULL,NULL,'EPSG','4500','EPSG','6706','EPSG','16034','EPSG','4187',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6720','WGS 84 / CIG92',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','6716','EPSG','4169',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6721','GDA94 / CIG94',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','6717','EPSG','4169',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6722','WGS 84 / CKIG92',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','6718','EPSG','1069',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6723','GDA94 / CKIG94',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','6719','EPSG','1069',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6732','GDA94 / MGA zone 41',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','6725','EPSG','4173',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','6733','GDA94 / MGA zone 42',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','6726','EPSG','4181',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','6734','GDA94 / MGA zone 43',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','6727','EPSG','4184',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','6735','GDA94 / MGA zone 44',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','6728','EPSG','4185',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','6736','GDA94 / MGA zone 46',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','6729','EPSG','4189',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6737','GDA94 / MGA zone 47',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','6730','EPSG','4190',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6738','GDA94 / MGA zone 59',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','6731','EPSG','4179',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6784','NAD83(CORS96) / Oregon Baker zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6741','EPSG','4180',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6785','NAD83(CORS96) / Oregon Baker zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6742','EPSG','4180',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6786','NAD83(2011) / Oregon Baker zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6741','EPSG','4180',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6787','NAD83(2011) / Oregon Baker zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6742','EPSG','4180',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6788','NAD83(CORS96) / Oregon Bend-Klamath Falls zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6743','EPSG','4192',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6789','NAD83(CORS96) / Oregon Bend-Klamath Falls zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6744','EPSG','4192',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6790','NAD83(2011) / Oregon Bend-Klamath Falls zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6743','EPSG','4192',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6791','NAD83(2011) / Oregon Bend-Klamath Falls zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6744','EPSG','4192',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6792','NAD83(CORS96) / Oregon Bend-Redmond-Prineville zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6745','EPSG','4195',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6793','NAD83(CORS96) / Oregon Bend-Redmond-Prineville zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6746','EPSG','4195',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6794','NAD83(2011) / Oregon Bend-Redmond-Prineville zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6745','EPSG','4195',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6795','NAD83(2011) / Oregon Bend-Redmond-Prineville zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6746','EPSG','4195',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6796','NAD83(CORS96) / Oregon Bend-Burns zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6747','EPSG','4182',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6797','NAD83(CORS96) / Oregon Bend-Burns zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6748','EPSG','4182',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6798','NAD83(2011) / Oregon Bend-Burns zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6747','EPSG','4182',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6799','NAD83(2011) / Oregon Bend-Burns zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6748','EPSG','4182',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6800','NAD83(CORS96) / Oregon Canyonville-Grants Pass zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6749','EPSG','4199',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6801','NAD83(CORS96) / Oregon Canyonville-Grants Pass zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6750','EPSG','4199',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6802','NAD83(2011) / Oregon Canyonville-Grants Pass zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6749','EPSG','4199',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6803','NAD83(2011) / Oregon Canyonville-Grants Pass zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6750','EPSG','4199',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6804','NAD83(CORS96) / Oregon Columbia River East zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6751','EPSG','4200',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6805','NAD83(CORS96) / Oregon Columbia River East zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6752','EPSG','4200',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6806','NAD83(2011) / Oregon Columbia River East zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6751','EPSG','4200',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6807','NAD83(2011) / Oregon Columbia River East zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6752','EPSG','4200',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6808','NAD83(CORS96) / Oregon Columbia River West zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6753','EPSG','4202',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6809','NAD83(CORS96) / Oregon Columbia River West zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6754','EPSG','4202',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6810','NAD83(2011) / Oregon Columbia River West zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6753','EPSG','4202',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6811','NAD83(2011) / Oregon Columbia River West zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6754','EPSG','4202',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6812','NAD83(CORS96) / Oregon Cottage Grove-Canyonville zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6755','EPSG','4203',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6813','NAD83(CORS96) / Oregon Cottage Grove-Canyonville zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6756','EPSG','4203',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6814','NAD83(2011) / Oregon Cottage Grove-Canyonville zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6755','EPSG','4203',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6815','NAD83(2011) / Oregon Cottage Grove-Canyonville zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6756','EPSG','4203',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6816','NAD83(CORS96) / Oregon Dufur-Madras zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6757','EPSG','4204',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6817','NAD83(CORS96) / Oregon Dufur-Madras zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6758','EPSG','4204',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6818','NAD83(2011) / Oregon Dufur-Madras zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6757','EPSG','4204',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6819','NAD83(2011) / Oregon Dufur-Madras zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6758','EPSG','4204',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6820','NAD83(CORS96) / Oregon Eugene zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6759','EPSG','4197',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6821','NAD83(CORS96) / Oregon Eugene zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6760','EPSG','4197',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6822','NAD83(2011) / Oregon Eugene zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6759','EPSG','4197',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6823','NAD83(2011) / Oregon Eugene zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6760','EPSG','4197',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6824','NAD83(CORS96) / Oregon Grants Pass-Ashland zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6761','EPSG','4198',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6825','NAD83(CORS96) / Oregon Grants Pass-Ashland zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6762','EPSG','4198',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6826','NAD83(2011) / Oregon Grants Pass-Ashland zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6761','EPSG','4198',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6827','NAD83(2011) / Oregon Grants Pass-Ashland zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6762','EPSG','4198',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6828','NAD83(CORS96) / Oregon Gresham-Warm Springs zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6763','EPSG','4201',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6829','NAD83(CORS96) / Oregon Gresham-Warm Springs zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6764','EPSG','4201',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6830','NAD83(2011) / Oregon Gresham-Warm Springs zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6763','EPSG','4201',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6831','NAD83(2011) / Oregon Gresham-Warm Springs zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6764','EPSG','4201',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6832','NAD83(CORS96) / Oregon La Grande zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6765','EPSG','4206',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6833','NAD83(CORS96) / Oregon La Grande zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6766','EPSG','4206',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6834','NAD83(2011) / Oregon La Grande zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6765','EPSG','4206',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6835','NAD83(2011) / Oregon La Grande zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6766','EPSG','4206',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6836','NAD83(CORS96) / Oregon Ontario zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6767','EPSG','4207',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6837','NAD83(CORS96) / Oregon Ontario zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6768','EPSG','4207',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6838','NAD83(2011) / Oregon Ontario zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6767','EPSG','4207',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6839','NAD83(2011) / Oregon Ontario zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6768','EPSG','4207',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6840','NAD83(CORS96) / Oregon Coast zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6769','EPSG','4208',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6841','NAD83(CORS96) / Oregon Coast zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6770','EPSG','4208',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6842','NAD83(2011) / Oregon Coast zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6769','EPSG','4208',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6843','NAD83(2011) / Oregon Coast zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6770','EPSG','4208',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6844','NAD83(CORS96) / Oregon Pendleton zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6771','EPSG','4209',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6845','NAD83(CORS96) / Oregon Pendleton zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6772','EPSG','4209',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6846','NAD83(2011) / Oregon Pendleton zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6771','EPSG','4209',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6847','NAD83(2011) / Oregon Pendleton zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6772','EPSG','4209',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6848','NAD83(CORS96) / Oregon Pendleton-La Grande zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6773','EPSG','4210',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6849','NAD83(CORS96) / Oregon Pendleton-La Grande zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6774','EPSG','4210',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6850','NAD83(2011) / Oregon Pendleton-La Grande zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6773','EPSG','4210',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6851','NAD83(2011) / Oregon Pendleton-La Grande zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6774','EPSG','4210',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6852','NAD83(CORS96) / Oregon Portland zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6775','EPSG','4211',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6853','NAD83(CORS96) / Oregon Portland zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6776','EPSG','4211',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6854','NAD83(2011) / Oregon Portland zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6775','EPSG','4211',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6855','NAD83(2011) / Oregon Portland zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6776','EPSG','4211',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6856','NAD83(CORS96) / Oregon Salem zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6777','EPSG','4212',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6857','NAD83(CORS96) / Oregon Salem zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6778','EPSG','4212',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6858','NAD83(2011) / Oregon Salem zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6777','EPSG','4212',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6859','NAD83(2011) / Oregon Salem zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6778','EPSG','4212',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6860','NAD83(CORS96) / Oregon Santiam Pass zone (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','6779','EPSG','4213',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6861','NAD83(CORS96) / Oregon Santiam Pass zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','6780','EPSG','4213',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6862','NAD83(2011) / Oregon Santiam Pass zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6779','EPSG','4213',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6863','NAD83(2011) / Oregon Santiam Pass zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','6780','EPSG','4213',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6867','NAD83(CORS96) / Oregon LCC (m)',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','13633','EPSG','1406',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6868','NAD83(CORS96) / Oregon GIC Lambert (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','15374','EPSG','1406',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6870','ETRS89 / Albania TM 2010',NULL,NULL,'EPSG','4530','EPSG','4258','EPSG','6869','EPSG','3212',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6875','RDN2008 / Italy zone (N-E)',NULL,NULL,'EPSG','4500','EPSG','6706','EPSG','6877','EPSG','1127',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6876','RDN2008 / Zone 12 (N-E)',NULL,NULL,'EPSG','4500','EPSG','6706','EPSG','6878','EPSG','1127',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6879','NAD83(2011) / Wisconsin Central',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','14832','EPSG','2266',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6880','NAD83(2011) / Nebraska (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','15396','EPSG','1396',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6884','NAD83(CORS96) / Oregon North',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','13631','EPSG','2243',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6885','NAD83(CORS96) / Oregon North (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','15351','EPSG','2243',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6886','NAD83(CORS96) / Oregon South',NULL,NULL,'EPSG','4499','EPSG','6783','EPSG','13632','EPSG','2244',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6887','NAD83(CORS96) / Oregon South (ft)',NULL,NULL,'EPSG','4495','EPSG','6783','EPSG','15352','EPSG','2244',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6915','South East Island 1943 / UTM zone 40N',NULL,NULL,'EPSG','4400','EPSG','6892','EPSG','16040','EPSG','4183',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6922','NAD83 / Kansas LCC',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','6920','EPSG','1385',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6923','NAD83 / Kansas LCC (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','6921','EPSG','1385',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6924','NAD83(2011) / Kansas LCC',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6920','EPSG','1385',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6925','NAD83(2011) / Kansas LCC (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','6921','EPSG','1385',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6931','WGS 84 / NSIDC EASE-Grid 2.0 North',NULL,NULL,'EPSG','4469','EPSG','4326','EPSG','6929','EPSG','3475',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6932','WGS 84 / NSIDC EASE-Grid 2.0 South',NULL,NULL,'EPSG','4470','EPSG','4326','EPSG','6930','EPSG','3474',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6933','WGS 84 / NSIDC EASE-Grid 2.0 Global',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','6928','EPSG','3463',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6956','VN-2000 / TM-3 zone 481',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','6952','EPSG','4193',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','6957','VN-2000 / TM-3 zone 482',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','6953','EPSG','4215',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','6958','VN-2000 / TM-3 zone 491',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','6954','EPSG','4217',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','6959','VN-2000 / TM-3 Da Nang zone',NULL,NULL,'EPSG','4400','EPSG','4756','EPSG','6955','EPSG','4218',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','6962','ETRS89 / Albania LCC 2010',NULL,NULL,'EPSG','4530','EPSG','4258','EPSG','6961','EPSG','3212',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6966','NAD27 / Michigan North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','6965','EPSG','1723',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6984','Israeli Grid 05',NULL,NULL,'EPSG','4400','EPSG','6983','EPSG','18204','EPSG','2603',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6991','Israeli Grid 05/12',NULL,NULL,'EPSG','4400','EPSG','6990','EPSG','18204','EPSG','2603',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','6996','NAD83(2011) / San Francisco CS13',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','6994','EPSG','4228',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','6997','NAD83(2011) / San Francisco CS13 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','6995','EPSG','4228',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','7005','Nahrwan 1934 / UTM zone 37N',NULL,NULL,'EPSG','4400','EPSG','4744','EPSG','16037','EPSG','3387',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7006','Nahrwan 1934 / UTM zone 38N',NULL,NULL,'EPSG','4400','EPSG','4744','EPSG','16038','EPSG','3388',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7007','Nahrwan 1934 / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','4744','EPSG','16039','EPSG','3956',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7057','NAD83(2011) / IaRCS zone 1',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7043','EPSG','4164',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7058','NAD83(2011) / IaRCS zone 2',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7044','EPSG','4219',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7059','NAD83(2011) / IaRCS zone 3',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7045','EPSG','4230',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7060','NAD83(2011) / IaRCS zone 4',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7046','EPSG','4233',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7061','NAD83(2011) / IaRCS zone 5',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7047','EPSG','4234',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7062','NAD83(2011) / IaRCS zone 6',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7048','EPSG','4235',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7063','NAD83(2011) / IaRCS zone 7',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7049','EPSG','4236',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7064','NAD83(2011) / IaRCS zone 8',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7050','EPSG','4237',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7065','NAD83(2011) / IaRCS zone 9',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7051','EPSG','4239',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7066','NAD83(2011) / IaRCS zone 10',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7052','EPSG','4240',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7067','NAD83(2011) / IaRCS zone 11',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7053','EPSG','4241',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7068','NAD83(2011) / IaRCS zone 12',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7054','EPSG','4242',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7069','NAD83(2011) / IaRCS zone 13',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7055','EPSG','4243',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7070','NAD83(2011) / IaRCS zone 14',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7056','EPSG','4244',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7074','RGTAAF07 / UTM zone 37S',NULL,NULL,'EPSG','4400','EPSG','7073','EPSG','16137','EPSG','3934',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7075','RGTAAF07 / UTM zone 38S',NULL,NULL,'EPSG','4400','EPSG','7073','EPSG','16138','EPSG','4245',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7076','RGTAAF07 / UTM zone 39S',NULL,NULL,'EPSG','4400','EPSG','7073','EPSG','16139','EPSG','4247',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7077','RGTAAF07 / UTM zone 40S',NULL,NULL,'EPSG','4400','EPSG','7073','EPSG','16140','EPSG','4248',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7078','RGTAAF07 / UTM zone 41S',NULL,NULL,'EPSG','4400','EPSG','7073','EPSG','16141','EPSG','4249',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7079','RGTAAF07 / UTM zone 42S',NULL,NULL,'EPSG','4400','EPSG','7073','EPSG','16142','EPSG','4250',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7080','RGTAAF07 / UTM zone 43S',NULL,NULL,'EPSG','4400','EPSG','7073','EPSG','16143','EPSG','4251',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7081','RGTAAF07 / UTM zone 44S',NULL,NULL,'EPSG','4400','EPSG','7073','EPSG','16144','EPSG','4252',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7082','RGTAAF07 / Terre Adelie Polar Stereographic',NULL,NULL,'EPSG','4400','EPSG','7073','EPSG','19983','EPSG','2818',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','7109','NAD83(2011) / RMTCRS St Mary (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7089','EPSG','4310',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7110','NAD83(2011) / RMTCRS Blackfeet (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7091','EPSG','4311',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7111','NAD83(2011) / RMTCRS Milk River (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7093','EPSG','4312',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7112','NAD83(2011) / RMTCRS Fort Belknap (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7095','EPSG','4313',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7113','NAD83(2011) / RMTCRS Fort Peck Assiniboine (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7097','EPSG','4314',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7114','NAD83(2011) / RMTCRS Fort Peck Sioux (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7099','EPSG','4315',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7115','NAD83(2011) / RMTCRS Crow (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7101','EPSG','4316',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7116','NAD83(2011) / RMTCRS Bobcat (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7103','EPSG','4317',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7117','NAD83(2011) / RMTCRS Billings (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7105','EPSG','4318',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7118','NAD83(2011) / RMTCRS Wind River (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7107','EPSG','4319',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7119','NAD83(2011) / RMTCRS St Mary (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','7090','EPSG','4310',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7120','NAD83(2011) / RMTCRS Blackfeet (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','7092','EPSG','4311',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7121','NAD83(2011) / RMTCRS Milk River (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','7094','EPSG','4312',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7122','NAD83(2011) / RMTCRS Fort Belknap (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','7096','EPSG','4313',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7123','NAD83(2011) / RMTCRS Fort Peck Assiniboine (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','7098','EPSG','4314',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7124','NAD83(2011) / RMTCRS Fort Peck Sioux (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','7100','EPSG','4315',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7125','NAD83(2011) / RMTCRS Crow (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','7102','EPSG','4316',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7126','NAD83(2011) / RMTCRS Bobcat (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','7104','EPSG','4317',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7127','NAD83(2011) / RMTCRS Billings (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','7106','EPSG','4318',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7128','NAD83(2011) / RMTCRS Wind River (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7108','EPSG','4319',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7131','NAD83(2011) / San Francisco CS13',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7129','EPSG','4228',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7132','NAD83(2011) / San Francisco CS13 (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7130','EPSG','4228',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7142','Palestine 1923 / Palestine Grid modified',NULL,NULL,'EPSG','4400','EPSG','4281','EPSG','7141','EPSG','1356',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7257','NAD83(2011) / InGCS Adams (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7143','EPSG','4289',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7258','NAD83(2011) / InGCS Adams (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7144','EPSG','4289',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7259','NAD83(2011) / InGCS Allen (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7145','EPSG','4285',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7260','NAD83(2011) / InGCS Allen (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7146','EPSG','4285',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7261','NAD83(2011) / InGCS Bartholomew (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7147','EPSG','4302',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7262','NAD83(2011) / InGCS Bartholomew (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7148','EPSG','4302',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7263','NAD83(2011) / InGCS Benton (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7149','EPSG','4256',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7264','NAD83(2011) / InGCS Benton (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7150','EPSG','4256',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7265','NAD83(2011) / InGCS Blackford-Delaware (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7151','EPSG','4291',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7266','NAD83(2011) / InGCS Blackford-Delaware (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7152','EPSG','4291',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7267','NAD83(2011) / InGCS Boone-Hendricks (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7153','EPSG','4263',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7268','NAD83(2011) / InGCS Boone-Hendricks (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7154','EPSG','4263',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7269','NAD83(2011) / InGCS Brown (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7155','EPSG','4301',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7270','NAD83(2011) / InGCS Brown (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7156','EPSG','4301',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7271','NAD83(2011) / InGCS Carroll (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7157','EPSG','4258',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7272','NAD83(2011) / InGCS Carroll (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7158','EPSG','4258',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7273','NAD83(2011) / InGCS Cass (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7159','EPSG','4286',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7274','NAD83(2011) / InGCS Cass (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7160','EPSG','4286',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7275','NAD83(2011) / InGCS Clark-Floyd-Scott (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7161','EPSG','4308',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7276','NAD83(2011) / InGCS Clark-Floyd-Scott (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7162','EPSG','4308',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7277','NAD83(2011) / InGCS Clay (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7163','EPSG','4265',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7278','NAD83(2011) / InGCS Clay (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7164','EPSG','4265',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7279','NAD83(2011) / InGCS Clinton (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7165','EPSG','4260',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7280','NAD83(2011) / InGCS Clinton (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7166','EPSG','4260',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7281','NAD83(2011) / InGCS Crawford-Lawrence-Orange (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7167','EPSG','4272',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7282','NAD83(2011) / InGCS Crawford-Lawrence-Orange (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7168','EPSG','4272',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7283','NAD83(2011) / InGCS Daviess-Greene (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7169','EPSG','4269',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7284','NAD83(2011) / InGCS Daviess-Greene (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7170','EPSG','4269',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7285','NAD83(2011) / InGCS Dearborn-Ohio-Switzerland (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7171','EPSG','4306',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7286','NAD83(2011) / InGCS Dearborn-Ohio-Switzerland (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7172','EPSG','4306',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7287','NAD83(2011) / InGCS Decatur-Rush (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7173','EPSG','4299',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7288','NAD83(2011) / InGCS Decatur-Rush (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7174','EPSG','4299',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7289','NAD83(2011) / InGCS DeKalb (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7175','EPSG','4283',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7290','NAD83(2011) / InGCS DeKalb (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7176','EPSG','4283',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7291','NAD83(2011) / InGCS Dubois-Martin (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7177','EPSG','4271',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7292','NAD83(2011) / InGCS Dubois-Martin (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7178','EPSG','4271',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7293','NAD83(2011) / InGCS Elkhart-Kosciusko-Wabash (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7179','EPSG','4280',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7294','NAD83(2011) / InGCS Elkhart-Kosciusko-Wabash (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7180','EPSG','4280',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7295','NAD83(2011) / InGCS Fayette-Franklin-Union (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7181','EPSG','4300',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7296','NAD83(2011) / InGCS Fayette-Franklin-Union (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7182','EPSG','4300',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7297','NAD83(2011) / InGCS Fountain-Warren (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7183','EPSG','4259',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7298','NAD83(2011) / InGCS Fountain-Warren (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7184','EPSG','4259',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7299','NAD83(2011) / InGCS Fulton-Marshall-St. Joseph (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7185','EPSG','4279',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7300','NAD83(2011) / InGCS Fulton-Marshall-St. Joseph (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7186','EPSG','4279',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7301','NAD83(2011) / InGCS Gibson (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7187','EPSG','4273',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7302','NAD83(2011) / InGCS Gibson (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7188','EPSG','4273',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7303','NAD83(2011) / InGCS Grant (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7189','EPSG','4290',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7304','NAD83(2011) / InGCS Grant (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7190','EPSG','4290',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7305','NAD83(2011) / InGCS Hamilton-Tipton (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7191','EPSG','4293',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7306','NAD83(2011) / InGCS Hamilton-Tipton (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7192','EPSG','4293',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7307','NAD83(2011) / InGCS Hancock-Madison (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7193','EPSG','4294',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7308','NAD83(2011) / InGCS Hancock-Madison (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7194','EPSG','4294',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7309','NAD83(2011) / InGCS Harrison-Washington (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7195','EPSG','4307',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7310','NAD83(2011) / InGCS Harrison-Washington (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7196','EPSG','4307',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7311','NAD83(2011) / InGCS Henry (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7197','EPSG','4296',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7312','NAD83(2011) / InGCS Henry (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7198','EPSG','4296',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7313','NAD83(2011) / InGCS Howard-Miami (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7199','EPSG','4287',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7314','NAD83(2011) / InGCS Howard-Miami (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7200','EPSG','4287',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7315','NAD83(2011) / InGCS Huntington-Whitley (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7201','EPSG','4284',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7316','NAD83(2011) / InGCS Huntington-Whitley (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7202','EPSG','4284',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7317','NAD83(2011) / InGCS Jackson (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7203','EPSG','4303',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7318','NAD83(2011) / InGCS Jackson (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7204','EPSG','4303',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7319','NAD83(2011) / InGCS Jasper-Porter (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7205','EPSG','4254',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7320','NAD83(2011) / InGCS Jasper-Porter (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7206','EPSG','4254',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7321','NAD83(2011) / InGCS Jay (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7207','EPSG','4292',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7322','NAD83(2011) / InGCS Jay (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7208','EPSG','4292',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7323','NAD83(2011) / InGCS Jefferson (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7209','EPSG','4309',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7324','NAD83(2011) / InGCS Jefferson (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7210','EPSG','4309',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7325','NAD83(2011) / InGCS Jennings (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7211','EPSG','4304',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7326','NAD83(2011) / InGCS Jennings (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7212','EPSG','4304',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7327','NAD83(2011) / InGCS Johnson-Marion (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7213','EPSG','4297',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7328','NAD83(2011) / InGCS Johnson-Marion (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7214','EPSG','4297',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7329','NAD83(2011) / InGCS Knox (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7215','EPSG','4270',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7330','NAD83(2011) / InGCS Knox (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7216','EPSG','4270',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7331','NAD83(2011) / InGCS LaGrange-Noble (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7217','EPSG','4281',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7332','NAD83(2011) / InGCS LaGrange-Noble (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7218','EPSG','4281',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7333','NAD83(2011) / InGCS Lake-Newton (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7219','EPSG','4253',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7334','NAD83(2011) / InGCS Lake-Newton (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7220','EPSG','4253',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7335','NAD83(2011) / InGCS LaPorte-Pulaski-Starke (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7221','EPSG','4255',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7336','NAD83(2011) / InGCS LaPorte-Pulaski-Starke (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7222','EPSG','4255',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7337','NAD83(2011) / InGCS Monroe-Morgan (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7223','EPSG','4267',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7338','NAD83(2011) / InGCS Monroe-Morgan (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7224','EPSG','4267',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7339','NAD83(2011) / InGCS Montgomery-Putnam (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7225','EPSG','4262',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7340','NAD83(2011) / InGCS Montgomery-Putnam (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7226','EPSG','4262',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7341','NAD83(2011) / InGCS Owen (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7227','EPSG','4266',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7342','NAD83(2011) / InGCS Owen (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7228','EPSG','4266',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7343','NAD83(2011) / InGCS Parke-Vermillion (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7229','EPSG','4261',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7344','NAD83(2011) / InGCS Parke-Vermillion (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7230','EPSG','4261',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7345','NAD83(2011) / InGCS Perry (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7231','EPSG','4278',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7346','NAD83(2011) / InGCS Perry (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7232','EPSG','4278',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7347','NAD83(2011) / InGCS Pike-Warrick (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7233','EPSG','4274',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7348','NAD83(2011) / InGCS Pike-Warrick (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7234','EPSG','4274',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7349','NAD83(2011) / InGCS Posey (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7235','EPSG','4275',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7350','NAD83(2011) / InGCS Posey (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7236','EPSG','4275',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7351','NAD83(2011) / InGCS Randolph-Wayne (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7237','EPSG','4295',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7352','NAD83(2011) / InGCS Randolph-Wayne (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7238','EPSG','4295',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7353','NAD83(2011) / InGCS Ripley (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7239','EPSG','4305',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7354','NAD83(2011) / InGCS Ripley (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7240','EPSG','4305',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7355','NAD83(2011) / InGCS Shelby (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7241','EPSG','4298',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7356','NAD83(2011) / InGCS Shelby (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7242','EPSG','4298',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7357','NAD83(2011) / InGCS Spencer (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7243','EPSG','4277',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7358','NAD83(2011) / InGCS Spencer (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7244','EPSG','4277',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7359','NAD83(2011) / InGCS Steuben (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7245','EPSG','4282',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7360','NAD83(2011) / InGCS Steuben (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7246','EPSG','4282',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7361','NAD83(2011) / InGCS Sullivan (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7247','EPSG','4268',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7362','NAD83(2011) / InGCS Sullivan (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7248','EPSG','4268',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7363','NAD83(2011) / InGCS Tippecanoe-White (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7249','EPSG','4257',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7364','NAD83(2011) / InGCS Tippecanoe-White (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7250','EPSG','4257',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7365','NAD83(2011) / InGCS Vanderburgh (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7251','EPSG','4276',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7366','NAD83(2011) / InGCS Vanderburgh (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7252','EPSG','4276',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7367','NAD83(2011) / InGCS Vigo (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7253','EPSG','4264',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7368','NAD83(2011) / InGCS Vigo (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7254','EPSG','4264',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7369','NAD83(2011) / InGCS Wells (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7255','EPSG','4288',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7370','NAD83(2011) / InGCS Wells (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7256','EPSG','4288',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7374','ONGD14 / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','7373','EPSG','16039','EPSG','4322',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7375','ONGD14 / UTM zone 40N',NULL,NULL,'EPSG','4400','EPSG','7373','EPSG','16040','EPSG','4323',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7376','ONGD14 / UTM zone 41N',NULL,NULL,'EPSG','4400','EPSG','7373','EPSG','16041','EPSG','4324',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7528','NAD83(2011) / WISCRS Adams and Juneau (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7484','EPSG','4360',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7529','NAD83(2011) / WISCRS Ashland (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7378','EPSG','4320',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7530','NAD83(2011) / WISCRS Barron (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7426','EPSG','4331',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7531','NAD83(2011) / WISCRS Bayfield (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7380','EPSG','4321',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7532','NAD83(2011) / WISCRS Brown (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7428','EPSG','4336',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7533','NAD83(2011) / WISCRS Buffalo (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7430','EPSG','4337',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7534','NAD83(2011) / WISCRS Burnett (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7382','EPSG','4325',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7535','NAD83(2011) / WISCRS Calumet, Fond du Lac, Outagamie and Winnebago (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7486','EPSG','4361',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7536','NAD83(2011) / WISCRS Chippewa (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7432','EPSG','4338',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7537','NAD83(2011) / WISCRS Clark (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7434','EPSG','4339',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7538','NAD83(2011) / WISCRS Columbia (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7488','EPSG','4362',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7539','NAD83(2011) / WISCRS Crawford (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7490','EPSG','4363',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7540','NAD83(2011) / WISCRS Dane (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7492','EPSG','4364',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7541','NAD83(2011) / WISCRS Dodge and Jefferson (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7494','EPSG','4365',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7542','NAD83(2011) / WISCRS Door (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7436','EPSG','4340',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7543','NAD83(2011) / WISCRS Douglas (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7384','EPSG','4326',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7544','NAD83(2011) / WISCRS Dunn (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7438','EPSG','4341',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7545','NAD83(2011) / WISCRS Eau Claire (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7440','EPSG','4342',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7546','NAD83(2011) / WISCRS Florence (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7386','EPSG','4327',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7547','NAD83(2011) / WISCRS Forest (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7388','EPSG','4328',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7548','NAD83(2011) / WISCRS Grant (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7496','EPSG','4366',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7549','NAD83(2011) / WISCRS Green and Lafayette (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7498','EPSG','4367',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7550','NAD83(2011) / WISCRS Green Lake and Marquette (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7500','EPSG','4368',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7551','NAD83(2011) / WISCRS Iowa (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7502','EPSG','4369',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7552','NAD83(2011) / WISCRS Iron (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7390','EPSG','4329',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7553','NAD83(2011) / WISCRS Jackson (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7450','EPSG','4343',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7554','NAD83(2011) / WISCRS Kenosha, Milwaukee, Ozaukee and Racine (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7504','EPSG','4370',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7555','NAD83(2011) / WISCRS Kewaunee, Manitowoc and Sheboygan (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7506','EPSG','4371',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7556','NAD83(2011) / WISCRS La Crosse (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7508','EPSG','4372',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7557','NAD83(2011) / WISCRS Langlade (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7452','EPSG','4344',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7558','NAD83(2011) / WISCRS Lincoln (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7454','EPSG','4345',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7559','NAD83(2011) / WISCRS Marathon (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7456','EPSG','4346',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7560','NAD83(2011) / WISCRS Marinette (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7458','EPSG','4347',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7561','NAD83(2011) / WISCRS Menominee (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7460','EPSG','4348',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7562','NAD83(2011) / WISCRS Monroe (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7510','EPSG','4373',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7563','NAD83(2011) / WISCRS Oconto (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7462','EPSG','4349',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7564','NAD83(2011) / WISCRS Oneida (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7392','EPSG','4330',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7565','NAD83(2011) / WISCRS Pepin and Pierce (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7464','EPSG','4350',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7566','NAD83(2011) / WISCRS Polk (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7466','EPSG','4351',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7567','NAD83(2011) / WISCRS Portage (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7468','EPSG','4352',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7568','NAD83(2011) / WISCRS Price (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7394','EPSG','4332',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7569','NAD83(2011) / WISCRS Richland (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7512','EPSG','4374',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7570','NAD83(2011) / WISCRS Rock (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7514','EPSG','4375',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7571','NAD83(2011) / WISCRS Rusk (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7470','EPSG','4353',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7572','NAD83(2011) / WISCRS Sauk (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7516','EPSG','4376',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7573','NAD83(2011) / WISCRS Sawyer (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7396','EPSG','4333',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7574','NAD83(2011) / WISCRS Shawano (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7472','EPSG','4354',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7575','NAD83(2011) / WISCRS St. Croix (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7474','EPSG','4355',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7576','NAD83(2011) / WISCRS Taylor (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7476','EPSG','4356',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7577','NAD83(2011) / WISCRS Trempealeau (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7478','EPSG','4357',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7578','NAD83(2011) / WISCRS Vernon (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7518','EPSG','4377',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7579','NAD83(2011) / WISCRS Vilas (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7398','EPSG','4334',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7580','NAD83(2011) / WISCRS Walworth (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7520','EPSG','4378',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7581','NAD83(2011) / WISCRS Washburn (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7424','EPSG','4335',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7582','NAD83(2011) / WISCRS Washington (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7522','EPSG','4379',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7583','NAD83(2011) / WISCRS Waukesha (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7524','EPSG','4380',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7584','NAD83(2011) / WISCRS Waupaca (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7480','EPSG','4358',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7585','NAD83(2011) / WISCRS Waushara (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7526','EPSG','4381',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7586','NAD83(2011) / WISCRS Wood (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','7482','EPSG','4359',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7587','NAD83(2011) / WISCRS Adams and Juneau (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7485','EPSG','4360',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7588','NAD83(2011) / WISCRS Ashland (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7379','EPSG','4320',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7589','NAD83(2011) / WISCRS Barron (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7427','EPSG','4331',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7590','NAD83(2011) / WISCRS Bayfield (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7381','EPSG','4321',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7591','NAD83(2011) / WISCRS Brown (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7429','EPSG','4336',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7592','NAD83(2011) / WISCRS Buffalo (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7431','EPSG','4337',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7593','NAD83(2011) / WISCRS Burnett (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7383','EPSG','4325',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7594','NAD83(2011) / WISCRS Calumet, Fond du Lac, Outagamie and Winnebago (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7487','EPSG','4361',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7595','NAD83(2011) / WISCRS Chippewa (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7433','EPSG','4338',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7596','NAD83(2011) / WISCRS Clark (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7435','EPSG','4339',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7597','NAD83(2011) / WISCRS Columbia (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7489','EPSG','4362',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7598','NAD83(2011) / WISCRS Crawford (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7491','EPSG','4363',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7599','NAD83(2011) / WISCRS Dane (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7493','EPSG','4364',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7600','NAD83(2011) / WISCRS Dodge and Jefferson (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7495','EPSG','4365',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7601','NAD83(2011) / WISCRS Door (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7437','EPSG','4340',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7602','NAD83(2011) / WISCRS Douglas (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7385','EPSG','4326',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7603','NAD83(2011) / WISCRS Dunn (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7439','EPSG','4341',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7604','NAD83(2011) / WISCRS Eau Claire (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7441','EPSG','4342',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7605','NAD83(2011) / WISCRS Florence (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7387','EPSG','4327',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7606','NAD83(2011) / WISCRS Forest (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7389','EPSG','4328',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7607','NAD83(2011) / WISCRS Grant (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7497','EPSG','4366',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7608','NAD83(2011) / WISCRS Green and Lafayette (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7499','EPSG','4367',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7609','NAD83(2011) / WISCRS Green Lake and Marquette (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7501','EPSG','4368',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7610','NAD83(2011) / WISCRS Iowa (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7503','EPSG','4369',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7611','NAD83(2011) / WISCRS Iron (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7391','EPSG','4329',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7612','NAD83(2011) / WISCRS Jackson (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7451','EPSG','4343',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7613','NAD83(2011) / WISCRS Kenosha, Milwaukee, Ozaukee and Racine (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7505','EPSG','4370',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7614','NAD83(2011) / WISCRS Kewaunee, Manitowoc and Sheboygan (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7507','EPSG','4371',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7615','NAD83(2011) / WISCRS La Crosse (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7509','EPSG','4372',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7616','NAD83(2011) / WISCRS Langlade (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7453','EPSG','4344',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7617','NAD83(2011) / WISCRS Lincoln (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7455','EPSG','4345',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7618','NAD83(2011) / WISCRS Marathon (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7457','EPSG','4346',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7619','NAD83(2011) / WISCRS Marinette (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7459','EPSG','4347',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7620','NAD83(2011) / WISCRS Menominee (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7461','EPSG','4348',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7621','NAD83(2011) / WISCRS Monroe (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7511','EPSG','4373',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7622','NAD83(2011) / WISCRS Oconto (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7463','EPSG','4349',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7623','NAD83(2011) / WISCRS Oneida (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7393','EPSG','4330',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7624','NAD83(2011) / WISCRS Pepin and Pierce (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7465','EPSG','4350',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7625','NAD83(2011) / WISCRS Polk (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7467','EPSG','4351',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7626','NAD83(2011) / WISCRS Portage (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7469','EPSG','4352',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7627','NAD83(2011) / WISCRS Price (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7395','EPSG','4332',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7628','NAD83(2011) / WISCRS Richland (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7513','EPSG','4374',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7629','NAD83(2011) / WISCRS Rock (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7515','EPSG','4375',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7630','NAD83(2011) / WISCRS Rusk (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7471','EPSG','4353',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7631','NAD83(2011) / WISCRS Sauk (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7517','EPSG','4376',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7632','NAD83(2011) / WISCRS Sawyer (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7397','EPSG','4333',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7633','NAD83(2011) / WISCRS Shawano (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7473','EPSG','4354',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7634','NAD83(2011) / WISCRS St. Croix (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7475','EPSG','4355',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7635','NAD83(2011) / WISCRS Taylor (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7477','EPSG','4356',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7636','NAD83(2011) / WISCRS Trempealeau (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7479','EPSG','4357',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7637','NAD83(2011) / WISCRS Vernon (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7519','EPSG','4377',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7638','NAD83(2011) / WISCRS Vilas (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7399','EPSG','4334',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7639','NAD83(2011) / WISCRS Walworth (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7521','EPSG','4378',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7640','NAD83(2011) / WISCRS Washburn (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7425','EPSG','4335',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7641','NAD83(2011) / WISCRS Washington (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7523','EPSG','4379',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7642','NAD83(2011) / WISCRS Waukesha (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7525','EPSG','4380',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7643','NAD83(2011) / WISCRS Waupaca (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7481','EPSG','4358',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7644','NAD83(2011) / WISCRS Waushara (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7527','EPSG','4381',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7645','NAD83(2011) / WISCRS Wood (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','7483','EPSG','4359',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7692','Kyrg-06 / zone 1',NULL,NULL,'EPSG','4400','EPSG','7686','EPSG','7687','EPSG','4385',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7693','Kyrg-06 / zone 2',NULL,NULL,'EPSG','4400','EPSG','7686','EPSG','7688','EPSG','4386',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7694','Kyrg-06 / zone 3',NULL,NULL,'EPSG','4400','EPSG','7686','EPSG','7689','EPSG','4387',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7695','Kyrg-06 / zone 4',NULL,NULL,'EPSG','4400','EPSG','7686','EPSG','7690','EPSG','4388',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7696','Kyrg-06 / zone 5',NULL,NULL,'EPSG','4400','EPSG','7686','EPSG','7691','EPSG','4389',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7755','WGS 84 / India NSF LCC',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7722','EPSG','1121',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7756','WGS 84 / Andhra Pradesh',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7723','EPSG','4394',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7757','WGS 84 / Arunachal Pradesh',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7724','EPSG','4395',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7758','WGS 84 / Assam',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7725','EPSG','4396',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7759','WGS 84 / Bihar',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7726','EPSG','4397',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7760','WGS 84 / Delhi',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7727','EPSG','4422',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7761','WGS 84 / Gujarat',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7728','EPSG','4400',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7762','WGS 84 / Haryana',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7729','EPSG','4401',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7763','WGS 84 / Himachal Pradesh',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7730','EPSG','4402',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7764','WGS 84 / Jammu and Kashmir',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7731','EPSG','4403',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7765','WGS 84 / Jharkhand',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7732','EPSG','4404',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7766','WGS 84 / Madhya Pradesh',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7733','EPSG','4407',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7767','WGS 84 / Maharashtra',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7734','EPSG','4408',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7768','WGS 84 / Manipur',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7735','EPSG','4409',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7769','WGS 84 / Meghalaya',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7736','EPSG','4410',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7770','WGS 84 / Nagaland',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7737','EPSG','4412',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7771','WGS 84 / India Northeast',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7738','EPSG','4392',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7772','WGS 84 / Orissa',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7739','EPSG','4413',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7773','WGS 84 / Punjab',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7740','EPSG','4414',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7774','WGS 84 / Rajasthan',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7741','EPSG','4415',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7775','WGS 84 / Uttar Pradesh',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7742','EPSG','4419',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7776','WGS 84 / Uttaranchal',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7743','EPSG','4420',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7777','WGS 84 / Andaman and Nicobar',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7744','EPSG','4423',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7778','WGS 84 / Chhattisgarh',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7745','EPSG','4398',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7779','WGS 84 / Goa',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7746','EPSG','4399',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7780','WGS 84 / Karnataka',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7747','EPSG','4405',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7781','WGS 84 / Kerala',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7748','EPSG','4406',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7782','WGS 84 / Lakshadweep',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7749','EPSG','4424',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7783','WGS 84 / Mizoram',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7750','EPSG','4411',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7784','WGS 84 / Sikkim',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7751','EPSG','4416',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7785','WGS 84 / Tamil Nadu',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7752','EPSG','4417',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7786','WGS 84 / Tripura',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7753','EPSG','4418',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7787','WGS 84 / West Bengal',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','7754','EPSG','4421',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7791','RDN2008 / UTM zone 32N',NULL,NULL,'EPSG','4400','EPSG','6706','EPSG','16032','EPSG','1718',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7792','RDN2008 / UTM zone 33N',NULL,NULL,'EPSG','4400','EPSG','6706','EPSG','16033','EPSG','4186',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7793','RDN2008 / UTM zone 34N',NULL,NULL,'EPSG','4400','EPSG','6706','EPSG','16034','EPSG','4187',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7794','RDN2008 / Italy zone (E-N)',NULL,NULL,'EPSG','4400','EPSG','6706','EPSG','6877','EPSG','1127',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7795','RDN2008 / Zone 12 (E-N)',NULL,NULL,'EPSG','4400','EPSG','6706','EPSG','6878','EPSG','1127',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7799','BGS2005 / UTM zone 34N (N-E)',NULL,NULL,'EPSG','4531','EPSG','7798','EPSG','16034','EPSG','4428',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7800','BGS2005 / UTM zone 35N (N-E)',NULL,NULL,'EPSG','4531','EPSG','7798','EPSG','16035','EPSG','4427',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7801','BGS2005 / CCS2005',NULL,NULL,'EPSG','4531','EPSG','7798','EPSG','7802','EPSG','3224',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7803','BGS2005 / UTM zone 34N',NULL,NULL,'EPSG','4400','EPSG','7798','EPSG','16034','EPSG','4428',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7804','BGS2005 / UTM zone 35N',NULL,NULL,'EPSG','4400','EPSG','7798','EPSG','16034','EPSG','4427',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7805','BGS2005 / UTM zone 36N',NULL,NULL,'EPSG','4400','EPSG','7798','EPSG','16036','EPSG','4426',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7825','Pulkovo 1942 / CS63 zone X1',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','7818','EPSG','4435',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7826','Pulkovo 1942 / CS63 zone X2',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','7819','EPSG','4429',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7827','Pulkovo 1942 / CS63 zone X3',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','7820','EPSG','4430',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7828','Pulkovo 1942 / CS63 zone X4',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','7821','EPSG','4431',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7829','Pulkovo 1942 / CS63 zone X5',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','7822','EPSG','4432',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7830','Pulkovo 1942 / CS63 zone X6',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','7823','EPSG','4433',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7831','Pulkovo 1942 / CS63 zone X7',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','7824','EPSG','4434',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7845','GDA2020 / GA LCC',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','17362','EPSG','2575',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7846','GDA2020 / MGA zone 46',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','6729','EPSG','4189',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7847','GDA2020 / MGA zone 47',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','6730','EPSG','4190',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7848','GDA2020 / MGA zone 48',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','17348','EPSG','4191',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7849','GDA2020 / MGA zone 49',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','17349','EPSG','4176',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7850','GDA2020 / MGA zone 50',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','17350','EPSG','4178',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7851','GDA2020 / MGA zone 51',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','17351','EPSG','1559',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7852','GDA2020 / MGA zone 52',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','17352','EPSG','1560',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7853','GDA2020 / MGA zone 53',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','17353','EPSG','1561',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7854','GDA2020 / MGA zone 54',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','17354','EPSG','1562',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7855','GDA2020 / MGA zone 55',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','17355','EPSG','1563',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7856','GDA2020 / MGA zone 56',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','17356','EPSG','1564',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7857','GDA2020 / MGA zone 57',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','17357','EPSG','4196',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7858','GDA2020 / MGA zone 58',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','17358','EPSG','4175',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7859','GDA2020 / MGA zone 59',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','6731','EPSG','4179',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7877','Astro DOS 71 / SHLG71',NULL,NULL,'EPSG','4400','EPSG','4710','EPSG','7875','EPSG','3183',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7878','Astro DOS 71 / UTM zone 30S',NULL,NULL,'EPSG','4400','EPSG','4710','EPSG','16130','EPSG','3183',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7882','St. Helena Tritan / SHLG(Tritan)',NULL,NULL,'EPSG','4400','EPSG','7881','EPSG','7876','EPSG','3183',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7883','St. Helena Tritan / UTM zone 30S',NULL,NULL,'EPSG','4400','EPSG','7881','EPSG','16130','EPSG','3183',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7887','SHMG2015',NULL,NULL,'EPSG','4400','EPSG','7886','EPSG','16130','EPSG','3183',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7899','GDA2020 / Vicgrid',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','17361','EPSG','2285',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7991','NAD27 / MTM zone 10',NULL,NULL,'EPSG','4499','EPSG','4267','EPSG','17710','EPSG','1431',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','7992','Malongo 1987 / UTM zone 33S',NULL,NULL,'EPSG','4400','EPSG','4259','EPSG','16133','EPSG','4447',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8013','GDA2020 / ALB2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','7993','EPSG','4439',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8014','GDA2020 / BIO2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','7994','EPSG','4438',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8015','GDA2020 / BRO2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','7995','EPSG','4441',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8016','GDA2020 / BCG2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','7996','EPSG','4437',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8017','GDA2020 / CARN2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','7997','EPSG','4442',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8018','GDA2020 / CIG2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','7998','EPSG','4169',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8019','GDA2020 / CKIG2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','7999','EPSG','1069',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8020','GDA2020 / COL2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','8000','EPSG','4443',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8021','GDA2020 / ESP2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','8001','EPSG','4445',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8022','GDA2020 / EXM2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','8002','EPSG','4448',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8023','GDA2020 / GCG2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','8003','EPSG','4449',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8024','GDA2020 / GOLD2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','8004','EPSG','4436',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8025','GDA2020 / JCG2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','8005','EPSG','4440',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8026','GDA2020 / KALB2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','8006','EPSG','4444',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8027','GDA2020 / KAR2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','8007','EPSG','4451',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8028','GDA2020 / KUN2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','8008','EPSG','4452',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8029','GDA2020 / LCG2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','8009','EPSG','4453',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8030','GDA2020 / MRCG2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','8010','EPSG','4457',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8031','GDA2020 / PCG2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','8011','EPSG','4462',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8032','GDA2020 / PHG2020',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','8012','EPSG','4466',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8035','WGS 84 / TM Zone 20N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4326','EPSG','8033','EPSG','4467',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8036','WGS 84 / TM Zone 21N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4326','EPSG','8034','EPSG','4468',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8044','Gusterberg Grid (Ferro)',NULL,NULL,'EPSG','6501','EPSG','8042','EPSG','8040','EPSG','4455',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8045','St. Stephen Grid (Ferro)',NULL,NULL,'EPSG','6501','EPSG','8043','EPSG','8041','EPSG','4456',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8058','GDA2020 / NSW Lambert',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','17364','EPSG','3139',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8059','GDA2020 / SA Lambert',NULL,NULL,'EPSG','4400','EPSG','7844','EPSG','17359','EPSG','2986',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8065','NAD83(2011) / PCCS zone 1 (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8061','EPSG','4472',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8066','NAD83(2011) / PCCS zone 2 (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8062','EPSG','4460',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8067','NAD83(2011) / PCCS zone 3 (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8063','EPSG','4450',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8068','NAD83(2011) / PCCS zone 4 (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8064','EPSG','4473',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8082','NAD83(CSRS)v6 / MTM Nova Scotia zone 4',NULL,NULL,'EPSG','4400','EPSG','8252','EPSG','8080','EPSG','1534',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8083','NAD83(CSRS)v6 / MTM Nova Scotia zone 5',NULL,NULL,'EPSG','4400','EPSG','8252','EPSG','8081','EPSG','1535',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8088','ISN2016 / Lambert 2016',NULL,NULL,'EPSG','4499','EPSG','8086','EPSG','8087','EPSG','1120',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8090','NAD83(HARN) / WISCRS Florence (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7386','EPSG','4327',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8091','NAD83(HARN) / WISCRS Florence (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7387','EPSG','4327',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8092','NAD83(HARN) / WISCRS Eau Claire (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7440','EPSG','4342',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8093','NAD83(HARN) / WISCRS Eau Claire (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7441','EPSG','4342',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8095','NAD83(HARN) / WISCRS Wood (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7482','EPSG','4359',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8096','NAD83(HARN) / WISCRS Wood (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7483','EPSG','4359',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8097','NAD83(HARN) / WISCRS Waushara (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7526','EPSG','4381',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8098','NAD83(HARN) / WISCRS Waushara (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7527','EPSG','4381',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8099','NAD83(HARN) / WISCRS Waupaca (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7480','EPSG','4358',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8100','NAD83(HARN) / WISCRS Waupaca (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7481','EPSG','4358',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8101','NAD83(HARN) / WISCRS Waukesha (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7524','EPSG','4380',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8102','NAD83(HARN) / WISCRS Waukesha (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7525','EPSG','4380',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8103','NAD83(HARN) / WISCRS Washington (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7522','EPSG','4379',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8104','NAD83(HARN) / WISCRS Washington (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7523','EPSG','4379',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8105','NAD83(HARN) / WISCRS Washburn (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7424','EPSG','4335',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8106','NAD83(HARN) / WISCRS Washburn (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7425','EPSG','4335',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8107','NAD83(HARN) / WISCRS Walworth (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7520','EPSG','4378',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8108','NAD83(HARN) / WISCRS Walworth (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7521','EPSG','4378',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8109','NAD83(HARN) / WISCRS Vilas (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7398','EPSG','4334',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8110','NAD83(HARN) / WISCRS Vilas (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7399','EPSG','4334',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8111','NAD83(HARN) / WISCRS Vernon (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7518','EPSG','4377',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8112','NAD83(HARN) / WISCRS Vernon (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7519','EPSG','4377',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8113','NAD83(HARN) / WISCRS Trempealeau (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7478','EPSG','4357',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8114','NAD83(HARN) / WISCRS Trempealeau (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7479','EPSG','4357',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8115','NAD83(HARN) / WISCRS Taylor (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7476','EPSG','4356',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8116','NAD83(HARN) / WISCRS Taylor (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7477','EPSG','4356',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8117','NAD83(HARN) / WISCRS St. Croix (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7474','EPSG','4355',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8118','NAD83(HARN) / WISCRS St. Croix (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7475','EPSG','4355',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8119','NAD83(HARN) / WISCRS Shawano (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7472','EPSG','4354',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8120','NAD83(HARN) / WISCRS Shawano (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7473','EPSG','4354',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8121','NAD83(HARN) / WISCRS Sawyer (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7396','EPSG','4333',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8122','NAD83(HARN) / WISCRS Sawyer (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7397','EPSG','4333',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8123','NAD83(HARN) / WISCRS Sauk (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7516','EPSG','4376',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8124','NAD83(HARN) / WISCRS Sauk (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7517','EPSG','4376',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8125','NAD83(HARN) / WISCRS Rusk (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7470','EPSG','4353',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8126','NAD83(HARN) / WISCRS Rusk (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7471','EPSG','4353',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8127','NAD83(HARN) / WISCRS Rock (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7514','EPSG','4375',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8128','NAD83(HARN) / WISCRS Rock (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7515','EPSG','4375',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8129','NAD83(HARN) / WISCRS Richland (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7512','EPSG','4374',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8130','NAD83(HARN) / WISCRS Richland (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7513','EPSG','4374',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8131','NAD83(HARN) / WISCRS Price (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7394','EPSG','4332',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8132','NAD83(HARN) / WISCRS Price (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7395','EPSG','4332',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8133','NAD83(HARN) / WISCRS Portage (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7468','EPSG','4352',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8134','NAD83(HARN) / WISCRS Portage (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7469','EPSG','4352',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8135','NAD83(HARN) / WISCRS Polk (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7466','EPSG','4351',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8136','NAD83(HARN) / WISCRS Polk (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7467','EPSG','4351',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8137','NAD83(HARN) / WISCRS Pepin and Pierce (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7464','EPSG','4350',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8138','NAD83(HARN) / WISCRS Pepin and Pierce (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7465','EPSG','4350',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8139','NAD83(HARN) / WISCRS Oneida (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7392','EPSG','4330',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8140','NAD83(HARN) / WISCRS Oneida (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7393','EPSG','4330',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8141','NAD83(HARN) / WISCRS Oconto (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7462','EPSG','4349',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8142','NAD83(HARN) / WISCRS Oconto (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7463','EPSG','4349',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8143','NAD83(HARN) / WISCRS Monroe (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7510','EPSG','4373',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8144','NAD83(HARN) / WISCRS Monroe (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7511','EPSG','4373',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8145','NAD83(HARN) / WISCRS Menominee (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7460','EPSG','4348',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8146','NAD83(HARN) / WISCRS Menominee (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7461','EPSG','4348',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8147','NAD83(HARN) / WISCRS Marinette (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7458','EPSG','4347',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8148','NAD83(HARN) / WISCRS Marinette (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7459','EPSG','4347',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8149','NAD83(HARN) / WISCRS Marathon (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7456','EPSG','4346',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8150','NAD83(HARN) / WISCRS Marathon (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7457','EPSG','4346',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8151','NAD83(HARN) / WISCRS Lincoln (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7454','EPSG','4345',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8152','NAD83(HARN) / WISCRS Lincoln (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7455','EPSG','4345',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8153','NAD83(HARN) / WISCRS Langlade (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7452','EPSG','4344',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8154','NAD83(HARN) / WISCRS Langlade (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7453','EPSG','4344',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8155','NAD83(HARN) / WISCRS La Crosse (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7508','EPSG','4372',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8156','NAD83(HARN) / WISCRS La Crosse (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7509','EPSG','4372',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8157','NAD83(HARN) / WISCRS Kewaunee, Manitowoc and Sheboygan (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7506','EPSG','4371',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8158','NAD83(HARN) / WISCRS Kewaunee, Manitowoc and Sheboygan (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7507','EPSG','4371',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8159','NAD83(HARN) / WISCRS Kenosha, Milwaukee, Ozaukee and Racine (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7504','EPSG','4370',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8160','NAD83(HARN) / WISCRS Kenosha, Milwaukee, Ozaukee and Racine (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7505','EPSG','4370',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8161','NAD83(HARN) / WISCRS Jackson (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7450','EPSG','4343',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8162','NAD83(HARN) / WISCRS Jackson (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7451','EPSG','4343',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8163','NAD83(HARN) / WISCRS Iron (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7390','EPSG','4329',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8164','NAD83(HARN) / WISCRS Iron (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7391','EPSG','4329',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8165','NAD83(HARN) / WISCRS Iowa (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7502','EPSG','4369',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8166','NAD83(HARN) / WISCRS Iowa (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7503','EPSG','4369',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8167','NAD83(HARN) / WISCRS Green Lake and Marquette (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7500','EPSG','4368',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8168','NAD83(HARN) / WISCRS Green Lake and Marquette (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7501','EPSG','4368',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8169','NAD83(HARN) / WISCRS Green and Lafayette (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7498','EPSG','4367',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8170','NAD83(HARN) / WISCRS Green and Lafayette (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7499','EPSG','4367',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8171','NAD83(HARN) / WISCRS Grant (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7496','EPSG','4366',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8172','NAD83(HARN) / WISCRS Grant (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7497','EPSG','4366',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8173','NAD83(HARN) / WISCRS Forest (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7388','EPSG','4328',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8177','NAD83(HARN) / WISCRS Forest (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7389','EPSG','4328',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8179','NAD83(HARN) / WISCRS Dunn (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7438','EPSG','4341',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8180','NAD83(HARN) / WISCRS Dunn (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7439','EPSG','4341',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8181','NAD83(HARN) / WISCRS Douglas (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7384','EPSG','4326',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8182','NAD83(HARN) / WISCRS Douglas (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7385','EPSG','4326',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8184','NAD83(HARN) / WISCRS Door (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7436','EPSG','4340',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8185','NAD83(HARN) / WISCRS Door (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7437','EPSG','4340',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8187','NAD83(HARN) / WISCRS Dodge and Jefferson (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7494','EPSG','4365',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8189','NAD83(HARN) / WISCRS Dodge and Jefferson (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7495','EPSG','4365',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8191','NAD83(HARN) / WISCRS Dane (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7492','EPSG','4364',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8193','NAD83(HARN) / WISCRS Dane (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7493','EPSG','4364',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8196','NAD83(HARN) / WISCRS Crawford (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7490','EPSG','4363',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8197','NAD83(HARN) / WISCRS Crawford (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7491','EPSG','4363',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8198','NAD83(HARN) / WISCRS Columbia (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7488','EPSG','4362',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8200','NAD83(HARN) / WISCRS Columbia (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7489','EPSG','4362',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8201','NAD83(HARN) / WISCRS Clark (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7434','EPSG','4339',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8202','NAD83(HARN) / WISCRS Clark (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7435','EPSG','4339',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8203','NAD83(HARN) / WISCRS Chippewa (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7432','EPSG','4338',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8204','NAD83(HARN) / WISCRS Chippewa (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7433','EPSG','4338',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8205','NAD83(HARN) / WISCRS Calumet, Fond du Lac, Outagamie and Winnebago (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7486','EPSG','4361',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8206','NAD83(HARN) / WISCRS Calumet, Fond du Lac, Outagamie and Winnebago (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7487','EPSG','4361',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8207','NAD83(HARN) / WISCRS Burnett (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7382','EPSG','4325',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8208','NAD83(HARN) / WISCRS Burnett (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7383','EPSG','4325',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8209','NAD83(HARN) / WISCRS Buffalo (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7430','EPSG','4337',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8210','NAD83(HARN) / WISCRS Buffalo (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7431','EPSG','4337',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8212','NAD83(HARN) / WISCRS Brown (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7428','EPSG','4336',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8213','NAD83(HARN) / WISCRS Brown (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7429','EPSG','4336',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8214','NAD83(HARN) / WISCRS Bayfield (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7380','EPSG','4321',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8216','NAD83(HARN) / WISCRS Bayfield (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7381','EPSG','4321',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8218','NAD83(HARN) / WISCRS Barron (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7426','EPSG','4331',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8220','NAD83(HARN) / WISCRS Barron (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7427','EPSG','4331',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8222','NAD83(HARN) / WISCRS Ashland (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7378','EPSG','4320',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8224','NAD83(HARN) / WISCRS Ashland (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7379','EPSG','4320',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8225','NAD83(HARN) / WISCRS Adams and Juneau (m)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','7484','EPSG','4360',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8226','NAD83(HARN) / WISCRS Adams and Juneau (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','7485','EPSG','4360',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8311','NAD83(2011) / Oregon Burns-Harper zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8273','EPSG','4459',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8312','NAD83(2011) / Oregon Burns-Harper zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8274','EPSG','4459',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8313','NAD83(2011) / Oregon Canyon City-Burns zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8275','EPSG','4465',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8314','NAD83(2011) / Oregon Canyon City-Burns zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8276','EPSG','4465',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8315','NAD83(2011) / Oregon Coast Range North zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8277','EPSG','4471',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8316','NAD83(2011) / Oregon Coast Range North zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8278','EPSG','4471',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8317','NAD83(2011) / Oregon Dayville-Prairie City zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8279','EPSG','4474',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8318','NAD83(2011) / Oregon Dayville-Prairie City zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8280','EPSG','4474',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8319','NAD83(2011) / Oregon Denio-Burns zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8281','EPSG','4475',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8320','NAD83(2011) / Oregon Denio-Burns zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8282','EPSG','4475',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8321','NAD83(2011) / Oregon Halfway zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8283','EPSG','4476',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8322','NAD83(2011) / Oregon Halfway zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8284','EPSG','4476',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8323','NAD83(2011) / Oregon Medford-Diamond Lake zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8285','EPSG','4477',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8324','NAD83(2011) / Oregon Medford-Diamond Lake zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8286','EPSG','4477',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8325','NAD83(2011) / Oregon Mitchell zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8287','EPSG','4478',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8326','NAD83(2011) / Oregon Mitchell zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8288','EPSG','4478',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8327','NAD83(2011) / Oregon North Central zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8289','EPSG','4479',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8328','NAD83(2011) / Oregon North Central zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8290','EPSG','4479',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8329','NAD83(2011) / Oregon Ochoco Summit zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8291','EPSG','4481',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8330','NAD83(2011) / Oregon Ochoco Summit zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8292','EPSG','4481',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8331','NAD83(2011) / Oregon Owyhee zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8293','EPSG','4482',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8332','NAD83(2011) / Oregon Owyhee zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8294','EPSG','4482',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8333','NAD83(2011) / Oregon Pilot Rock-Ukiah zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8295','EPSG','4483',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8334','NAD83(2011) / Oregon Pilot Rock-Ukiah zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8296','EPSG','4483',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8335','NAD83(2011) / Oregon Prairie City-Brogan zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8297','EPSG','4484',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8336','NAD83(2011) / Oregon Prairie City-Brogan zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8298','EPSG','4484',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8337','NAD83(2011) / Oregon Riley-Lakeview zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8299','EPSG','4458',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8338','NAD83(2011) / Oregon Riley-Lakeview zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8300','EPSG','4458',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8339','NAD83(2011) / Oregon Siskiyou Pass zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8301','EPSG','4463',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8340','NAD83(2011) / Oregon Siskiyou Pass zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8302','EPSG','4463',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8341','NAD83(2011) / Oregon Ukiah-Fox zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8303','EPSG','4470',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8342','NAD83(2011) / Oregon Ukiah-Fox zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8304','EPSG','4470',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8343','NAD83(2011) / Oregon Wallowa zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8305','EPSG','4480',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8344','NAD83(2011) / Oregon Wallowa zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8306','EPSG','4480',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8345','NAD83(2011) / Oregon Warner Highway zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8307','EPSG','4486',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8346','NAD83(2011) / Oregon Warner Highway zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8308','EPSG','4486',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8347','NAD83(2011) / Oregon Willamette Pass zone (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8309','EPSG','4488',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8348','NAD83(2011) / Oregon Willamette Pass zone (ft)',NULL,NULL,'EPSG','4495','EPSG','6318','EPSG','8310','EPSG','4488',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8352','S-JTSK [JTSK03] / Krovak',NULL,NULL,'EPSG','6501','EPSG','8351','EPSG','5509','EPSG','1211',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8353','S-JTSK [JTSK03] / Krovak East North',NULL,NULL,'EPSG','4499','EPSG','8351','EPSG','5510','EPSG','1211',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8379','NAD83 / NCRS Las Vegas (m)',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','8373','EPSG','4485',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8380','NAD83 / NCRS Las Vegas (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','8374','EPSG','4485',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8381','NAD83 / NCRS Las Vegas high (m)',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','8375','EPSG','4487',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8382','NAD83 / NCRS Las Vegas high (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','8376','EPSG','4487',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8383','NAD83(2011) / NCRS Las Vegas (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8373','EPSG','4485',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8384','NAD83(2011) / NCRS Las Vegas (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8374','EPSG','4485',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8385','NAD83(2011) / NCRS Las Vegas high (m)',NULL,NULL,'EPSG','4499','EPSG','6318','EPSG','8375','EPSG','4487',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8387','NAD83(2011) / NCRS Las Vegas high (ftUS)',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8376','EPSG','4487',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8391','GDA94 / WEIPA94',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','8389','EPSG','4491',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8395','ETRS89 / Gauss-Kruger CM 9E',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','16302','EPSG','4490',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8433','Macao 1920 / Macao Grid',NULL,NULL,'EPSG','4500','EPSG','8428','EPSG','8432','EPSG','1147',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8441','Tananarive / Laborde Grid',NULL,NULL,'EPSG','4530','EPSG','4297','EPSG','8440','EPSG','3273',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8455','RGTAAF07 / UTM zone 53S',NULL,NULL,'EPSG','4400','EPSG','7073','EPSG','16153','EPSG','4489',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8456','RGTAAF07 / UTM zone 54S',NULL,NULL,'EPSG','4400','EPSG','7073','EPSG','16154','EPSG','4492',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8518','NAD83(2011) / KS RCS zone 1',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8458','EPSG','4495',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8519','NAD83(2011) / KS RCS zone 2',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8459','EPSG','4496',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8520','NAD83(2011) / KS RCS zone 3',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8490','EPSG','4497',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8521','NAD83(2011) / KS RCS zone 4',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8491','EPSG','4494',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8522','NAD83(2011) / KS RCS zone 5',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8492','EPSG','4498',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8523','NAD83(2011) / KS RCS zone 6',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8493','EPSG','4499',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8524','NAD83(2011) / KS RCS zone 7',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8494','EPSG','4500',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8525','NAD83(2011) / KS RCS zone 8',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8495','EPSG','4501',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8526','NAD83(2011) / KS RCS zone 9',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8498','EPSG','4502',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8527','NAD83(2011) / KS RCS zone 10',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8499','EPSG','4503',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8528','NAD83(2011) / KS RCS zone 11',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8500','EPSG','4504',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8529','NAD83(2011) / KS RCS zone 12',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8501','EPSG','4505',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8531','NAD83(2011) / KS RCS zone 13',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8502','EPSG','4506',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8533','NAD83(2011) / KS RCS zone 14',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8503','EPSG','4507',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8534','NAD83(2011) / KS RCS zone 15',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8504','EPSG','4508',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8535','NAD83(2011) / KS RCS zone 16',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8505','EPSG','4509',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8536','NAD83(2011) / KS RCS zone 17',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8506','EPSG','4510',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8538','NAD83(2011) / KS RCS zone 18',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8507','EPSG','4511',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8539','NAD83(2011) / KS RCS zone 19',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8515','EPSG','4512',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8540','NAD83(2011) / KS RCS zone 20',NULL,NULL,'EPSG','4497','EPSG','6318','EPSG','8516','EPSG','4513',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8677','MGI 1901 / Balkans zone 5',NULL,NULL,'EPSG','4498','EPSG','3906','EPSG','18275','EPSG','1709',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8678','MGI 1901 / Balkans zone 6',NULL,NULL,'EPSG','4498','EPSG','3906','EPSG','18276','EPSG','1710',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8679','MGI 1901 / Balkans zone 8',NULL,NULL,'EPSG','4498','EPSG','3906','EPSG','18278','EPSG','1712',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8682','SRB_ETRS89 / UTM zone 34N',NULL,NULL,'EPSG','4400','EPSG','8685','EPSG','16034','EPSG','3534',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8686','MGI 1901 / Slovenia Grid',NULL,NULL,'EPSG','4498','EPSG','3906','EPSG','19967','EPSG','1212',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8687','Slovenia 1996 / UTM zone 33N',NULL,NULL,'EPSG','4400','EPSG','4765','EPSG','16033','EPSG','1212',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8692','NAD83(MA11) / UTM zone 54N',NULL,NULL,'EPSG','4400','EPSG','6325','EPSG','16054','EPSG','4514',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8693','NAD83(MA11) / UTM zone 55N',NULL,NULL,'EPSG','4400','EPSG','6325','EPSG','16055','EPSG','4518',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8826','NAD83 / Idaho Transverse Mercator',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','8825','EPSG','1381',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8836','MTRF-2000 / UTM zone 36N',NULL,NULL,'EPSG','4400','EPSG','8818','EPSG','16036','EPSG','4524',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8837','MTRF-2000 / UTM zone 37N',NULL,NULL,'EPSG','4400','EPSG','8818','EPSG','16037','EPSG','4526',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8838','MTRF-2000 / UTM zone 38N',NULL,NULL,'EPSG','4400','EPSG','8818','EPSG','16038','EPSG','4527',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8839','MTRF-2000 / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','8818','EPSG','16039','EPSG','4528',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8840','MTRF-2000 / UTM zone 40N',NULL,NULL,'EPSG','4400','EPSG','8818','EPSG','16040','EPSG','3106',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8857','WGS 84 / Equal Earth Greenwich',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','8854','EPSG','1262',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8858','WGS 84 / Equal Earth Americas',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','8855','EPSG','1262',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','8859','WGS 84 / Equal Earth Asia-Pacific',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','8856','EPSG','1262',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20004','Pulkovo 1995 / Gauss-Kruger zone 4',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16204','EPSG','1763',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20005','Pulkovo 1995 / Gauss-Kruger zone 5',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16205','EPSG','1764',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20006','Pulkovo 1995 / Gauss-Kruger zone 6',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16206','EPSG','1765',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20007','Pulkovo 1995 / Gauss-Kruger zone 7',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16207','EPSG','1766',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20008','Pulkovo 1995 / Gauss-Kruger zone 8',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16208','EPSG','1767',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20009','Pulkovo 1995 / Gauss-Kruger zone 9',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16209','EPSG','1768',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20010','Pulkovo 1995 / Gauss-Kruger zone 10',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16210','EPSG','1769',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20011','Pulkovo 1995 / Gauss-Kruger zone 11',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16211','EPSG','1770',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20012','Pulkovo 1995 / Gauss-Kruger zone 12',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16212','EPSG','1771',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20013','Pulkovo 1995 / Gauss-Kruger zone 13',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16213','EPSG','1772',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20014','Pulkovo 1995 / Gauss-Kruger zone 14',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16214','EPSG','1773',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20015','Pulkovo 1995 / Gauss-Kruger zone 15',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16215','EPSG','1774',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20016','Pulkovo 1995 / Gauss-Kruger zone 16',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16216','EPSG','1775',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20017','Pulkovo 1995 / Gauss-Kruger zone 17',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16217','EPSG','1776',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20018','Pulkovo 1995 / Gauss-Kruger zone 18',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16218','EPSG','1777',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20019','Pulkovo 1995 / Gauss-Kruger zone 19',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16219','EPSG','1778',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20020','Pulkovo 1995 / Gauss-Kruger zone 20',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16220','EPSG','1779',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20021','Pulkovo 1995 / Gauss-Kruger zone 21',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16221','EPSG','1780',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20022','Pulkovo 1995 / Gauss-Kruger zone 22',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16222','EPSG','1781',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20023','Pulkovo 1995 / Gauss-Kruger zone 23',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16223','EPSG','1782',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20024','Pulkovo 1995 / Gauss-Kruger zone 24',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16224','EPSG','1783',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20025','Pulkovo 1995 / Gauss-Kruger zone 25',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16225','EPSG','1784',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20026','Pulkovo 1995 / Gauss-Kruger zone 26',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16226','EPSG','1785',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20027','Pulkovo 1995 / Gauss-Kruger zone 27',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16227','EPSG','1786',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20028','Pulkovo 1995 / Gauss-Kruger zone 28',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16228','EPSG','1787',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20029','Pulkovo 1995 / Gauss-Kruger zone 29',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16229','EPSG','1788',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20030','Pulkovo 1995 / Gauss-Kruger zone 30',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16230','EPSG','1789',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20031','Pulkovo 1995 / Gauss-Kruger zone 31',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16231','EPSG','1790',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20032','Pulkovo 1995 / Gauss-Kruger zone 32',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16232','EPSG','1791',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20064','Pulkovo 1995 / Gauss-Kruger 4N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16304','EPSG','1763',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20065','Pulkovo 1995 / Gauss-Kruger 5N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16305','EPSG','1764',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20066','Pulkovo 1995 / Gauss-Kruger 6N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16306','EPSG','1765',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20067','Pulkovo 1995 / Gauss-Kruger 7N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16307','EPSG','1766',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20068','Pulkovo 1995 / Gauss-Kruger 8N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16308','EPSG','1767',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20069','Pulkovo 1995 / Gauss-Kruger 9N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16309','EPSG','1768',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20070','Pulkovo 1995 / Gauss-Kruger 10N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16310','EPSG','1769',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20071','Pulkovo 1995 / Gauss-Kruger 11N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16311','EPSG','1770',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20072','Pulkovo 1995 / Gauss-Kruger 12N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16312','EPSG','1771',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20073','Pulkovo 1995 / Gauss-Kruger 13N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16313','EPSG','1772',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20074','Pulkovo 1995 / Gauss-Kruger 14N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16314','EPSG','1773',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20075','Pulkovo 1995 / Gauss-Kruger 15N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16315','EPSG','1774',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20076','Pulkovo 1995 / Gauss-Kruger 16N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16316','EPSG','1775',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20077','Pulkovo 1995 / Gauss-Kruger 17N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16317','EPSG','1776',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20078','Pulkovo 1995 / Gauss-Kruger 18N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16318','EPSG','1777',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20079','Pulkovo 1995 / Gauss-Kruger 19N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16319','EPSG','1778',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20080','Pulkovo 1995 / Gauss-Kruger 20N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16320','EPSG','1779',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20081','Pulkovo 1995 / Gauss-Kruger 21N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16321','EPSG','1780',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20082','Pulkovo 1995 / Gauss-Kruger 22N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16322','EPSG','1781',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20083','Pulkovo 1995 / Gauss-Kruger 23N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16323','EPSG','1782',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20084','Pulkovo 1995 / Gauss-Kruger 24N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16324','EPSG','1783',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20085','Pulkovo 1995 / Gauss-Kruger 25N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16325','EPSG','1784',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20086','Pulkovo 1995 / Gauss-Kruger 26N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16326','EPSG','1785',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20087','Pulkovo 1995 / Gauss-Kruger 27N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16327','EPSG','1786',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20088','Pulkovo 1995 / Gauss-Kruger 28N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16328','EPSG','1787',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20089','Pulkovo 1995 / Gauss-Kruger 29N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16329','EPSG','1788',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20090','Pulkovo 1995 / Gauss-Kruger 30N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16330','EPSG','1789',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20091','Pulkovo 1995 / Gauss-Kruger 31N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16331','EPSG','1790',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20092','Pulkovo 1995 / Gauss-Kruger 32N',NULL,NULL,'EPSG','4530','EPSG','4200','EPSG','16332','EPSG','1791',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20135','Adindan / UTM zone 35N',NULL,NULL,'EPSG','4400','EPSG','4201','EPSG','16035','EPSG','2827',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20136','Adindan / UTM zone 36N',NULL,NULL,'EPSG','4400','EPSG','4201','EPSG','16036','EPSG','2825',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20137','Adindan / UTM zone 37N',NULL,NULL,'EPSG','4400','EPSG','4201','EPSG','16037','EPSG','1552',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20138','Adindan / UTM zone 38N',NULL,NULL,'EPSG','4400','EPSG','4201','EPSG','16038','EPSG','1553',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20248','AGD66 / AMG zone 48',NULL,NULL,'EPSG','4400','EPSG','4202','EPSG','17448','EPSG','1556',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20249','AGD66 / AMG zone 49',NULL,NULL,'EPSG','4400','EPSG','4202','EPSG','17449','EPSG','1557',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20250','AGD66 / AMG zone 50',NULL,NULL,'EPSG','4400','EPSG','4202','EPSG','17450','EPSG','1558',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20251','AGD66 / AMG zone 51',NULL,NULL,'EPSG','4400','EPSG','4202','EPSG','17451','EPSG','1559',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20252','AGD66 / AMG zone 52',NULL,NULL,'EPSG','4400','EPSG','4202','EPSG','17452','EPSG','1560',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20253','AGD66 / AMG zone 53',NULL,NULL,'EPSG','4400','EPSG','4202','EPSG','17453','EPSG','1561',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20254','AGD66 / AMG zone 54',NULL,NULL,'EPSG','4400','EPSG','4202','EPSG','17454','EPSG','1567',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20255','AGD66 / AMG zone 55',NULL,NULL,'EPSG','4400','EPSG','4202','EPSG','17455','EPSG','1568',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20256','AGD66 / AMG zone 56',NULL,NULL,'EPSG','4400','EPSG','4202','EPSG','17456','EPSG','2291',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20257','AGD66 / AMG zone 57',NULL,NULL,'EPSG','4400','EPSG','4202','EPSG','17457','EPSG','1565',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20258','AGD66 / AMG zone 58',NULL,NULL,'EPSG','4400','EPSG','4202','EPSG','17458','EPSG','1566',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20348','AGD84 / AMG zone 48',NULL,NULL,'EPSG','4400','EPSG','4203','EPSG','17448','EPSG','1556',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20349','AGD84 / AMG zone 49',NULL,NULL,'EPSG','4400','EPSG','4203','EPSG','17449','EPSG','1557',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20350','AGD84 / AMG zone 50',NULL,NULL,'EPSG','4400','EPSG','4203','EPSG','17450','EPSG','1558',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20351','AGD84 / AMG zone 51',NULL,NULL,'EPSG','4400','EPSG','4203','EPSG','17451','EPSG','1559',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20352','AGD84 / AMG zone 52',NULL,NULL,'EPSG','4400','EPSG','4203','EPSG','17452','EPSG','3687',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20353','AGD84 / AMG zone 53',NULL,NULL,'EPSG','4400','EPSG','4203','EPSG','17453','EPSG','3688',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20354','AGD84 / AMG zone 54',NULL,NULL,'EPSG','4400','EPSG','4203','EPSG','17454','EPSG','3689',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20355','AGD84 / AMG zone 55',NULL,NULL,'EPSG','4400','EPSG','4203','EPSG','17455','EPSG','3690',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20356','AGD84 / AMG zone 56',NULL,NULL,'EPSG','4400','EPSG','4203','EPSG','17456','EPSG','3691',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20357','AGD84 / AMG zone 57',NULL,NULL,'EPSG','4400','EPSG','4203','EPSG','17457','EPSG','1565',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20358','AGD84 / AMG zone 58',NULL,NULL,'EPSG','4400','EPSG','4203','EPSG','17458','EPSG','1566',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','20436','Ain el Abd / UTM zone 36N',NULL,NULL,'EPSG','4400','EPSG','4204','EPSG','16036','EPSG','3107',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20437','Ain el Abd / UTM zone 37N',NULL,NULL,'EPSG','4400','EPSG','4204','EPSG','16037','EPSG','1569',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20438','Ain el Abd / UTM zone 38N',NULL,NULL,'EPSG','4400','EPSG','4204','EPSG','16038','EPSG','1571',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20439','Ain el Abd / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','4204','EPSG','16039','EPSG','1570',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20440','Ain el Abd / UTM zone 40N',NULL,NULL,'EPSG','4400','EPSG','4204','EPSG','16040','EPSG','3106',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20499','Ain el Abd / Bahrain Grid',NULL,NULL,'EPSG','4400','EPSG','4204','EPSG','19900','EPSG','3943',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20538','Afgooye / UTM zone 38N',NULL,NULL,'EPSG','4400','EPSG','4205','EPSG','16038','EPSG','1554',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20539','Afgooye / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','4205','EPSG','16039','EPSG','1555',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20790','Lisbon (Lisbon) / Portuguese National Grid',NULL,NULL,'EPSG','4499','EPSG','4803','EPSG','19936','EPSG','1294',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20791','Lisbon (Lisbon) / Portuguese Grid',NULL,NULL,'EPSG','4499','EPSG','4803','EPSG','19969','EPSG','1294',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20822','Aratu / UTM zone 22S',NULL,NULL,'EPSG','4400','EPSG','4208','EPSG','16122','EPSG','1572',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20823','Aratu / UTM zone 23S',NULL,NULL,'EPSG','4400','EPSG','4208','EPSG','16123','EPSG','1573',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20824','Aratu / UTM zone 24S',NULL,NULL,'EPSG','4400','EPSG','4208','EPSG','16124','EPSG','1574',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20934','Arc 1950 / UTM zone 34S',NULL,NULL,'EPSG','4400','EPSG','4209','EPSG','16134','EPSG','1575',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20935','Arc 1950 / UTM zone 35S',NULL,NULL,'EPSG','4400','EPSG','4209','EPSG','16135','EPSG','1576',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','20936','Arc 1950 / UTM zone 36S',NULL,NULL,'EPSG','4400','EPSG','4209','EPSG','16136','EPSG','1577',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21035','Arc 1960 / UTM zone 35S',NULL,NULL,'EPSG','4400','EPSG','4210','EPSG','16135','EPSG','1579',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21036','Arc 1960 / UTM zone 36S',NULL,NULL,'EPSG','4400','EPSG','4210','EPSG','16136','EPSG','1581',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21037','Arc 1960 / UTM zone 37S',NULL,NULL,'EPSG','4400','EPSG','4210','EPSG','16137','EPSG','1583',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21095','Arc 1960 / UTM zone 35N',NULL,NULL,'EPSG','4400','EPSG','4210','EPSG','16035','EPSG','1578',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21096','Arc 1960 / UTM zone 36N',NULL,NULL,'EPSG','4400','EPSG','4210','EPSG','16036','EPSG','1580',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21097','Arc 1960 / UTM zone 37N',NULL,NULL,'EPSG','4400','EPSG','4210','EPSG','16037','EPSG','1582',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21100','Batavia (Jakarta) / NEIEZ',NULL,NULL,'EPSG','4499','EPSG','4813','EPSG','19905','EPSG','1285',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','21148','Batavia / UTM zone 48S',NULL,NULL,'EPSG','4400','EPSG','4211','EPSG','16148','EPSG','1584',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21149','Batavia / UTM zone 49S',NULL,NULL,'EPSG','4400','EPSG','4211','EPSG','16149','EPSG','1586',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21150','Batavia / UTM zone 50S',NULL,NULL,'EPSG','4400','EPSG','4211','EPSG','16150','EPSG','1585',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21291','Barbados 1938 / British West Indies Grid',NULL,NULL,'EPSG','4400','EPSG','4212','EPSG','19942','EPSG','3218',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21292','Barbados 1938 / Barbados National Grid',NULL,NULL,'EPSG','4400','EPSG','4212','EPSG','19943','EPSG','3218',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21413','Beijing 1954 / Gauss-Kruger zone 13',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16213','EPSG','1587',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21414','Beijing 1954 / Gauss-Kruger zone 14',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16214','EPSG','1588',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21415','Beijing 1954 / Gauss-Kruger zone 15',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16215','EPSG','1589',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21416','Beijing 1954 / Gauss-Kruger zone 16',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16216','EPSG','1590',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21417','Beijing 1954 / Gauss-Kruger zone 17',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16217','EPSG','1591',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21418','Beijing 1954 / Gauss-Kruger zone 18',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16218','EPSG','1592',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21419','Beijing 1954 / Gauss-Kruger zone 19',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16219','EPSG','1593',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21420','Beijing 1954 / Gauss-Kruger zone 20',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16220','EPSG','1594',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21421','Beijing 1954 / Gauss-Kruger zone 21',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16221','EPSG','1595',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21422','Beijing 1954 / Gauss-Kruger zone 22',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16222','EPSG','1596',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21423','Beijing 1954 / Gauss-Kruger zone 23',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16223','EPSG','1597',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21453','Beijing 1954 / Gauss-Kruger CM 75E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16313','EPSG','1587',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21454','Beijing 1954 / Gauss-Kruger CM 81E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16314','EPSG','1588',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21455','Beijing 1954 / Gauss-Kruger CM 87E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16315','EPSG','1589',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21456','Beijing 1954 / Gauss-Kruger CM 93E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16316','EPSG','1590',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21457','Beijing 1954 / Gauss-Kruger CM 99E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16317','EPSG','1591',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21458','Beijing 1954 / Gauss-Kruger CM 105E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16318','EPSG','1592',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21459','Beijing 1954 / Gauss-Kruger CM 111E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16319','EPSG','1593',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21460','Beijing 1954 / Gauss-Kruger CM 117E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16320','EPSG','1594',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21461','Beijing 1954 / Gauss-Kruger CM 123E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16321','EPSG','1595',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21462','Beijing 1954 / Gauss-Kruger CM 129E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16322','EPSG','1596',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21463','Beijing 1954 / Gauss-Kruger CM 135E',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16323','EPSG','1597',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21473','Beijing 1954 / Gauss-Kruger 13N',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16313','EPSG','1587',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','21474','Beijing 1954 / Gauss-Kruger 14N',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16314','EPSG','1588',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','21475','Beijing 1954 / Gauss-Kruger 15N',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16315','EPSG','1589',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','21476','Beijing 1954 / Gauss-Kruger 16N',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16316','EPSG','1590',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','21477','Beijing 1954 / Gauss-Kruger 17N',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16317','EPSG','1591',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','21478','Beijing 1954 / Gauss-Kruger 18N',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16318','EPSG','1592',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','21479','Beijing 1954 / Gauss-Kruger 19N',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16319','EPSG','1593',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','21480','Beijing 1954 / Gauss-Kruger 20N',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16320','EPSG','1594',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','21481','Beijing 1954 / Gauss-Kruger 21N',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16321','EPSG','1595',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','21482','Beijing 1954 / Gauss-Kruger 22N',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16322','EPSG','1596',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','21483','Beijing 1954 / Gauss-Kruger 23N',NULL,NULL,'EPSG','4530','EPSG','4214','EPSG','16323','EPSG','1597',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','21500','Belge 1950 (Brussels) / Belge Lambert 50',NULL,NULL,'EPSG','4499','EPSG','4809','EPSG','19901','EPSG','1347',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21780','Bern 1898 (Bern) / LV03C',NULL,NULL,'EPSG','4498','EPSG','4801','EPSG','19923','EPSG','1286',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21781','CH1903 / LV03',NULL,NULL,'EPSG','4498','EPSG','4149','EPSG','19922','EPSG','1286',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21782','CH1903 / LV03C-G',NULL,NULL,'EPSG','4498','EPSG','4149','EPSG','19841','EPSG','1144',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21817','Bogota 1975 / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4218','EPSG','16017','EPSG','1602',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','21818','Bogota 1975 / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4218','EPSG','16018','EPSG','1603',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21891','Bogota 1975 / Colombia West zone',NULL,NULL,'EPSG','4499','EPSG','4218','EPSG','18051','EPSG','1598',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','21892','Bogota 1975 / Colombia Bogota zone',NULL,NULL,'EPSG','4499','EPSG','4218','EPSG','18052','EPSG','1599',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','21893','Bogota 1975 / Colombia East Central zone',NULL,NULL,'EPSG','4499','EPSG','4218','EPSG','18053','EPSG','1600',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','21894','Bogota 1975 / Colombia East',NULL,NULL,'EPSG','4499','EPSG','4218','EPSG','18054','EPSG','1601',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','21896','Bogota 1975 / Colombia West zone',NULL,NULL,'EPSG','4530','EPSG','4218','EPSG','18051','EPSG','1598',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21897','Bogota 1975 / Colombia Bogota zone',NULL,NULL,'EPSG','4530','EPSG','4218','EPSG','18052','EPSG','1599',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21898','Bogota 1975 / Colombia East Central zone',NULL,NULL,'EPSG','4530','EPSG','4218','EPSG','18053','EPSG','1600',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','21899','Bogota 1975 / Colombia East zone',NULL,NULL,'EPSG','4530','EPSG','4218','EPSG','18054','EPSG','1601',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22032','Camacupa / UTM zone 32S',NULL,NULL,'EPSG','4400','EPSG','4220','EPSG','16132','EPSG','1606',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22033','Camacupa / UTM zone 33S',NULL,NULL,'EPSG','4400','EPSG','4220','EPSG','16133','EPSG','1607',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22091','Camacupa / TM 11.30 SE',NULL,NULL,'EPSG','4400','EPSG','4220','EPSG','16611','EPSG','1605',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22092','Camacupa / TM 12 SE',NULL,NULL,'EPSG','4400','EPSG','4220','EPSG','16612','EPSG','1604',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22171','POSGAR 98 / Argentina 1',NULL,NULL,'EPSG','4530','EPSG','4190','EPSG','18031','EPSG','1608',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22172','POSGAR 98 / Argentina 2',NULL,NULL,'EPSG','4530','EPSG','4190','EPSG','18032','EPSG','1609',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22173','POSGAR 98 / Argentina 3',NULL,NULL,'EPSG','4530','EPSG','4190','EPSG','18033','EPSG','1610',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22174','POSGAR 98 / Argentina 4',NULL,NULL,'EPSG','4530','EPSG','4190','EPSG','18034','EPSG','1611',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22175','POSGAR 98 / Argentina 5',NULL,NULL,'EPSG','4530','EPSG','4190','EPSG','18035','EPSG','1612',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22176','POSGAR 98 / Argentina 6',NULL,NULL,'EPSG','4530','EPSG','4190','EPSG','18036','EPSG','1613',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22177','POSGAR 98 / Argentina 7',NULL,NULL,'EPSG','4530','EPSG','4190','EPSG','18037','EPSG','1614',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22181','POSGAR 94 / Argentina 1',NULL,NULL,'EPSG','4530','EPSG','4694','EPSG','18031','EPSG','1608',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22182','POSGAR 94 / Argentina 2',NULL,NULL,'EPSG','4530','EPSG','4694','EPSG','18032','EPSG','1609',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22183','POSGAR 94 / Argentina 3',NULL,NULL,'EPSG','4530','EPSG','4694','EPSG','18033','EPSG','1610',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22184','POSGAR 94 / Argentina 4',NULL,NULL,'EPSG','4530','EPSG','4694','EPSG','18034','EPSG','1611',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22185','POSGAR 94 / Argentina 5',NULL,NULL,'EPSG','4530','EPSG','4694','EPSG','18035','EPSG','1612',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22186','POSGAR 94 / Argentina 6',NULL,NULL,'EPSG','4530','EPSG','4694','EPSG','18036','EPSG','1613',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22187','POSGAR 94 / Argentina 7',NULL,NULL,'EPSG','4530','EPSG','4694','EPSG','18037','EPSG','1614',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22191','Campo Inchauspe / Argentina 1',NULL,NULL,'EPSG','4530','EPSG','4221','EPSG','18031','EPSG','1608',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22192','Campo Inchauspe / Argentina 2',NULL,NULL,'EPSG','4530','EPSG','4221','EPSG','18032','EPSG','1609',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22193','Campo Inchauspe / Argentina 3',NULL,NULL,'EPSG','4530','EPSG','4221','EPSG','18033','EPSG','1610',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22194','Campo Inchauspe / Argentina 4',NULL,NULL,'EPSG','4530','EPSG','4221','EPSG','18034','EPSG','1611',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22195','Campo Inchauspe / Argentina 5',NULL,NULL,'EPSG','4530','EPSG','4221','EPSG','18035','EPSG','1612',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22196','Campo Inchauspe / Argentina 6',NULL,NULL,'EPSG','4530','EPSG','4221','EPSG','18036','EPSG','1613',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22197','Campo Inchauspe / Argentina 7',NULL,NULL,'EPSG','4530','EPSG','4221','EPSG','18037','EPSG','1614',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22234','Cape / UTM zone 34S',NULL,NULL,'EPSG','4400','EPSG','4222','EPSG','16134','EPSG','1615',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22235','Cape / UTM zone 35S',NULL,NULL,'EPSG','4400','EPSG','4222','EPSG','16135','EPSG','1617',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22236','Cape / UTM zone 36S',NULL,NULL,'EPSG','4400','EPSG','4222','EPSG','16136','EPSG','1616',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','22275','Cape / Lo15',NULL,NULL,'EPSG','6503','EPSG','4222','EPSG','17515','EPSG','1454',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22277','Cape / Lo17',NULL,NULL,'EPSG','6503','EPSG','4222','EPSG','17517','EPSG','1455',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22279','Cape / Lo19',NULL,NULL,'EPSG','6503','EPSG','4222','EPSG','17519','EPSG','1456',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22281','Cape / Lo21',NULL,NULL,'EPSG','6503','EPSG','4222','EPSG','17521','EPSG','1457',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22283','Cape / Lo23',NULL,NULL,'EPSG','6503','EPSG','4222','EPSG','17523','EPSG','1458',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22285','Cape / Lo25',NULL,NULL,'EPSG','6503','EPSG','4222','EPSG','17525','EPSG','1459',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22287','Cape / Lo27',NULL,NULL,'EPSG','6503','EPSG','4222','EPSG','17527','EPSG','1460',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22289','Cape / Lo29',NULL,NULL,'EPSG','6503','EPSG','4222','EPSG','17529','EPSG','1461',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22291','Cape / Lo31',NULL,NULL,'EPSG','6503','EPSG','4222','EPSG','17531','EPSG','1462',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22293','Cape / Lo33',NULL,NULL,'EPSG','6503','EPSG','4222','EPSG','17533','EPSG','1463',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22300','Carthage (Paris) / Tunisia Mining Grid',NULL,NULL,'EPSG','4406','EPSG','4816','EPSG','19937','EPSG','1618',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22332','Carthage / UTM zone 32N',NULL,NULL,'EPSG','4400','EPSG','4223','EPSG','16032','EPSG','1489',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22391','Carthage / Nord Tunisie',NULL,NULL,'EPSG','4499','EPSG','4223','EPSG','18181','EPSG','1619',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22392','Carthage / Sud Tunisie',NULL,NULL,'EPSG','4499','EPSG','4223','EPSG','18182','EPSG','1620',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22521','Corrego Alegre 1970-72 / UTM zone 21S',NULL,NULL,'EPSG','4400','EPSG','4225','EPSG','16121','EPSG','3355',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22522','Corrego Alegre 1970-72 / UTM zone 22S',NULL,NULL,'EPSG','4400','EPSG','4225','EPSG','16122','EPSG','3176',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22523','Corrego Alegre 1970-72 / UTM zone 23S',NULL,NULL,'EPSG','4400','EPSG','4225','EPSG','16123','EPSG','3177',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22524','Corrego Alegre 1970-72 / UTM zone 24S',NULL,NULL,'EPSG','4400','EPSG','4225','EPSG','16124','EPSG','1818',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22525','Corrego Alegre 1970-72 / UTM zone 25S',NULL,NULL,'EPSG','4400','EPSG','4225','EPSG','16125','EPSG','3178',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22700','Deir ez Zor / Levant Zone',NULL,NULL,'EPSG','4499','EPSG','4227','EPSG','19940','EPSG','1623',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22770','Deir ez Zor / Syria Lambert',NULL,NULL,'EPSG','4499','EPSG','4227','EPSG','19948','EPSG','1623',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22780','Deir ez Zor / Levant Stereographic',NULL,NULL,'EPSG','4499','EPSG','4227','EPSG','19949','EPSG','1623',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22832','Douala / UTM zone 32N',NULL,NULL,'EPSG','4400','EPSG','4228','EPSG','16032','EPSG','1060',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','22991','Egypt 1907 / Blue Belt',NULL,NULL,'EPSG','4400','EPSG','4229','EPSG','18071','EPSG','1642',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22992','Egypt 1907 / Red Belt',NULL,NULL,'EPSG','4400','EPSG','4229','EPSG','18072','EPSG','1643',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22993','Egypt 1907 / Purple Belt',NULL,NULL,'EPSG','4400','EPSG','4229','EPSG','18073','EPSG','1644',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','22994','Egypt 1907 / Extended Purple Belt',NULL,NULL,'EPSG','4400','EPSG','4229','EPSG','18074','EPSG','1645',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23028','ED50 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4230','EPSG','16028','EPSG','1631',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23029','ED50 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4230','EPSG','16029','EPSG','1632',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23030','ED50 / UTM zone 30N',NULL,NULL,'EPSG','4400','EPSG','4230','EPSG','16030','EPSG','1633',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23031','ED50 / UTM zone 31N',NULL,NULL,'EPSG','4400','EPSG','4230','EPSG','16031','EPSG','1634',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23032','ED50 / UTM zone 32N',NULL,NULL,'EPSG','4400','EPSG','4230','EPSG','16032','EPSG','1635',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23033','ED50 / UTM zone 33N',NULL,NULL,'EPSG','4400','EPSG','4230','EPSG','16033','EPSG','1636',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23034','ED50 / UTM zone 34N',NULL,NULL,'EPSG','4400','EPSG','4230','EPSG','16034','EPSG','1637',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23035','ED50 / UTM zone 35N',NULL,NULL,'EPSG','4400','EPSG','4230','EPSG','16035','EPSG','1638',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23036','ED50 / UTM zone 36N',NULL,NULL,'EPSG','4400','EPSG','4230','EPSG','16036','EPSG','1639',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23037','ED50 / UTM zone 37N',NULL,NULL,'EPSG','4400','EPSG','4230','EPSG','16037','EPSG','1640',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23038','ED50 / UTM zone 38N',NULL,NULL,'EPSG','4400','EPSG','4230','EPSG','16038','EPSG','1641',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23090','ED50 / TM 0 N',NULL,NULL,'EPSG','4400','EPSG','4230','EPSG','16400','EPSG','1629',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23095','ED50 / TM 5 NE',NULL,NULL,'EPSG','4400','EPSG','4230','EPSG','16405','EPSG','1630',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23239','Fahud / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','4232','EPSG','16039','EPSG','1544',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23240','Fahud / UTM zone 40N',NULL,NULL,'EPSG','4400','EPSG','4232','EPSG','16040','EPSG','4008',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23433','Garoua / UTM zone 33N',NULL,NULL,'EPSG','4400','EPSG','4234','EPSG','16033','EPSG','1060',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','23700','HD72 / EOV',NULL,NULL,'EPSG','4498','EPSG','4237','EPSG','19931','EPSG','1119',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23830','DGN95 / Indonesia TM-3 zone 46.2',NULL,NULL,'EPSG','4499','EPSG','4755','EPSG','17432','EPSG','3976',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23831','DGN95 / Indonesia TM-3 zone 47.1',NULL,NULL,'EPSG','4499','EPSG','4755','EPSG','17433','EPSG','3510',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23832','DGN95 / Indonesia TM-3 zone 47.2',NULL,NULL,'EPSG','4499','EPSG','4755','EPSG','17434','EPSG','3511',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23833','DGN95 / Indonesia TM-3 zone 48.1',NULL,NULL,'EPSG','4499','EPSG','4755','EPSG','17435','EPSG','3512',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23834','DGN95 / Indonesia TM-3 zone 48.2',NULL,NULL,'EPSG','4499','EPSG','4755','EPSG','17436','EPSG','3513',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23835','DGN95 / Indonesia TM-3 zone 49.1',NULL,NULL,'EPSG','4499','EPSG','4755','EPSG','17437','EPSG','3514',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23836','DGN95 / Indonesia TM-3 zone 49.2',NULL,NULL,'EPSG','4499','EPSG','4755','EPSG','17438','EPSG','3515',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23837','DGN95 / Indonesia TM-3 zone 50.1',NULL,NULL,'EPSG','4499','EPSG','4755','EPSG','17439','EPSG','3516',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23838','DGN95 / Indonesia TM-3 zone 50.2',NULL,NULL,'EPSG','4499','EPSG','4755','EPSG','17440','EPSG','3517',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23839','DGN95 / Indonesia TM-3 zone 51.1',NULL,NULL,'EPSG','4499','EPSG','4755','EPSG','17441','EPSG','3518',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23840','DGN95 / Indonesia TM-3 zone 51.2',NULL,NULL,'EPSG','4499','EPSG','4755','EPSG','17442','EPSG','3519',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23841','DGN95 / Indonesia TM-3 zone 52.1',NULL,NULL,'EPSG','4499','EPSG','4755','EPSG','17443','EPSG','3520',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23842','DGN95 / Indonesia TM-3 zone 52.2',NULL,NULL,'EPSG','4499','EPSG','4755','EPSG','17444','EPSG','3521',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23843','DGN95 / Indonesia TM-3 zone 53.1',NULL,NULL,'EPSG','4499','EPSG','4755','EPSG','17445','EPSG','3522',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23844','DGN95 / Indonesia TM-3 zone 53.2',NULL,NULL,'EPSG','4499','EPSG','4755','EPSG','17446','EPSG','3523',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23845','DGN95 / Indonesia TM-3 zone 54.1',NULL,NULL,'EPSG','4499','EPSG','4755','EPSG','17447','EPSG','3975',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23846','ID74 / UTM zone 46N',NULL,NULL,'EPSG','4400','EPSG','4238','EPSG','16046','EPSG','3976',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23847','ID74 / UTM zone 47N',NULL,NULL,'EPSG','4400','EPSG','4238','EPSG','16047','EPSG','3978',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23848','ID74 / UTM zone 48N',NULL,NULL,'EPSG','4400','EPSG','4238','EPSG','16048','EPSG','3979',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23849','ID74 / UTM zone 49N',NULL,NULL,'EPSG','4400','EPSG','4238','EPSG','16049','EPSG','3980',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23850','ID74 / UTM zone 50N',NULL,NULL,'EPSG','4400','EPSG','4238','EPSG','16050','EPSG','3981',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23851','ID74 / UTM zone 51N',NULL,NULL,'EPSG','4400','EPSG','4238','EPSG','16051','EPSG','3983',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23852','ID74 / UTM zone 52N',NULL,NULL,'EPSG','4400','EPSG','4238','EPSG','16052','EPSG','3984',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23853','ID74 / UTM zone 53N',NULL,NULL,'EPSG','4400','EPSG','4238','EPSG','16053','EPSG','1661',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','23866','DGN95 / UTM zone 46N',NULL,NULL,'EPSG','4400','EPSG','4755','EPSG','16046','EPSG','1647',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23867','DGN95 / UTM zone 47N',NULL,NULL,'EPSG','4400','EPSG','4755','EPSG','16047','EPSG','1649',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23868','DGN95 / UTM zone 48N',NULL,NULL,'EPSG','4400','EPSG','4755','EPSG','16048','EPSG','1651',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23869','DGN95 / UTM zone 49N',NULL,NULL,'EPSG','4400','EPSG','4755','EPSG','16049','EPSG','1653',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23870','DGN95 / UTM zone 50N',NULL,NULL,'EPSG','4400','EPSG','4755','EPSG','16050','EPSG','1655',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23871','DGN95 / UTM zone 51N',NULL,NULL,'EPSG','4400','EPSG','4755','EPSG','16051','EPSG','1657',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23872','DGN95 / UTM zone 52N',NULL,NULL,'EPSG','4400','EPSG','4755','EPSG','16052','EPSG','1659',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23877','DGN95 / UTM zone 47S',NULL,NULL,'EPSG','4400','EPSG','4755','EPSG','16147','EPSG','1650',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23878','DGN95 / UTM zone 48S',NULL,NULL,'EPSG','4400','EPSG','4755','EPSG','16148','EPSG','1652',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23879','DGN95 / UTM zone 49S',NULL,NULL,'EPSG','4400','EPSG','4755','EPSG','16149','EPSG','1654',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23880','DGN95 / UTM zone 50S',NULL,NULL,'EPSG','4400','EPSG','4755','EPSG','16150','EPSG','1656',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23881','DGN95 / UTM zone 51S',NULL,NULL,'EPSG','4400','EPSG','4755','EPSG','16151','EPSG','1658',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23882','DGN95 / UTM zone 52S',NULL,NULL,'EPSG','4400','EPSG','4755','EPSG','16152','EPSG','1660',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23883','DGN95 / UTM zone 53S',NULL,NULL,'EPSG','4400','EPSG','4755','EPSG','16153','EPSG','1662',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23884','DGN95 / UTM zone 54S',NULL,NULL,'EPSG','4400','EPSG','4755','EPSG','16154','EPSG','1663',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23886','ID74 / UTM zone 46S',NULL,NULL,'EPSG','4400','EPSG','4238','EPSG','16146','EPSG','1648',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','23887','ID74 / UTM zone 47S',NULL,NULL,'EPSG','4400','EPSG','4238','EPSG','16147','EPSG','3985',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23888','ID74 / UTM zone 48S',NULL,NULL,'EPSG','4400','EPSG','4238','EPSG','16148','EPSG','3986',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23889','ID74 / UTM zone 49S',NULL,NULL,'EPSG','4400','EPSG','4238','EPSG','16149','EPSG','3987',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23890','ID74 / UTM zone 50S',NULL,NULL,'EPSG','4400','EPSG','4238','EPSG','16150','EPSG','3988',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23891','ID74 / UTM zone 51S',NULL,NULL,'EPSG','4400','EPSG','4238','EPSG','16151','EPSG','3989',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23892','ID74 / UTM zone 52S',NULL,NULL,'EPSG','4400','EPSG','4238','EPSG','16152','EPSG','3990',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23893','ID74 / UTM zone 53S',NULL,NULL,'EPSG','4400','EPSG','4238','EPSG','16153','EPSG','3991',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23894','ID74 / UTM zone 54S',NULL,NULL,'EPSG','4400','EPSG','4238','EPSG','16154','EPSG','3975',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23946','Indian 1954 / UTM zone 46N',NULL,NULL,'EPSG','4400','EPSG','4239','EPSG','16046','EPSG','1664',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23947','Indian 1954 / UTM zone 47N',NULL,NULL,'EPSG','4400','EPSG','4239','EPSG','16047','EPSG','1665',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','23948','Indian 1954 / UTM zone 48N',NULL,NULL,'EPSG','4400','EPSG','4239','EPSG','16048','EPSG','3735',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24047','Indian 1975 / UTM zone 47N',NULL,NULL,'EPSG','4400','EPSG','4240','EPSG','16047','EPSG','1667',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24048','Indian 1975 / UTM zone 48N',NULL,NULL,'EPSG','4400','EPSG','4240','EPSG','16048','EPSG','1666',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24100','Jamaica 1875 / Jamaica (Old Grid)',NULL,NULL,'EPSG','4403','EPSG','4241','EPSG','19909','EPSG','3342',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24200','JAD69 / Jamaica National Grid',NULL,NULL,'EPSG','4400','EPSG','4242','EPSG','19910','EPSG','3342',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24305','Kalianpur 1937 / UTM zone 45N',NULL,NULL,'EPSG','4400','EPSG','4144','EPSG','16045','EPSG','1674',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24306','Kalianpur 1937 / UTM zone 46N',NULL,NULL,'EPSG','4400','EPSG','4144','EPSG','16046','EPSG','1675',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24311','Kalianpur 1962 / UTM zone 41N',NULL,NULL,'EPSG','4400','EPSG','4145','EPSG','16041','EPSG','1687',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24312','Kalianpur 1962 / UTM zone 42N',NULL,NULL,'EPSG','4400','EPSG','4145','EPSG','16042','EPSG','1688',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24313','Kalianpur 1962 / UTM zone 43N',NULL,NULL,'EPSG','4400','EPSG','4145','EPSG','16043','EPSG','1689',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24342','Kalianpur 1975 / UTM zone 42N',NULL,NULL,'EPSG','4400','EPSG','4146','EPSG','16042','EPSG','1679',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24343','Kalianpur 1975 / UTM zone 43N',NULL,NULL,'EPSG','4400','EPSG','4146','EPSG','16043','EPSG','1680',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24344','Kalianpur 1975 / UTM zone 44N',NULL,NULL,'EPSG','4400','EPSG','4146','EPSG','16044','EPSG','1681',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24345','Kalianpur 1975 / UTM zone 45N',NULL,NULL,'EPSG','4400','EPSG','4146','EPSG','16045','EPSG','1682',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24346','Kalianpur 1975 / UTM zone 46N',NULL,NULL,'EPSG','4400','EPSG','4146','EPSG','16046','EPSG','1683',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24347','Kalianpur 1975 / UTM zone 47N',NULL,NULL,'EPSG','4400','EPSG','4146','EPSG','16047','EPSG','1684',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24370','Kalianpur 1880 / India zone 0',NULL,NULL,'EPSG','4408','EPSG','4243','EPSG','18110','EPSG','1668',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24371','Kalianpur 1880 / India zone I',NULL,NULL,'EPSG','4408','EPSG','4243','EPSG','18111','EPSG','1669',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24372','Kalianpur 1880 / India zone IIa',NULL,NULL,'EPSG','4408','EPSG','4243','EPSG','18112','EPSG','1670',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24373','Kalianpur 1880 / India zone IIIa',NULL,NULL,'EPSG','4408','EPSG','4243','EPSG','18114','EPSG','1672',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24374','Kalianpur 1880 / India zone IVa',NULL,NULL,'EPSG','4408','EPSG','4243','EPSG','18116','EPSG','1673',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24375','Kalianpur 1937 / India zone IIb',NULL,NULL,'EPSG','4400','EPSG','4144','EPSG','18238','EPSG','3217',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24376','Kalianpur 1962 / India zone I',NULL,NULL,'EPSG','4400','EPSG','4145','EPSG','18236','EPSG','1685',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24377','Kalianpur 1962 / India zone IIa',NULL,NULL,'EPSG','4400','EPSG','4145','EPSG','18237','EPSG','1686',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24378','Kalianpur 1975 / India zone I',NULL,NULL,'EPSG','4400','EPSG','4146','EPSG','18231','EPSG','1676',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24379','Kalianpur 1975 / India zone IIa',NULL,NULL,'EPSG','4400','EPSG','4146','EPSG','18232','EPSG','1677',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24380','Kalianpur 1975 / India zone IIb',NULL,NULL,'EPSG','4400','EPSG','4146','EPSG','18235','EPSG','1678',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24381','Kalianpur 1975 / India zone IIIa',NULL,NULL,'EPSG','4400','EPSG','4146','EPSG','18233','EPSG','1672',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24382','Kalianpur 1880 / India zone IIb',NULL,NULL,'EPSG','4408','EPSG','4243','EPSG','18113','EPSG','1671',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24383','Kalianpur 1975 / India zone IVa',NULL,NULL,'EPSG','4400','EPSG','4146','EPSG','18234','EPSG','1673',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24500','Kertau 1968 / Singapore Grid',NULL,NULL,'EPSG','4400','EPSG','4245','EPSG','19920','EPSG','1210',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24547','Kertau 1968 / UTM zone 47N',NULL,NULL,'EPSG','4400','EPSG','4245','EPSG','16047','EPSG','1691',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24548','Kertau 1968 / UTM zone 48N',NULL,NULL,'EPSG','4400','EPSG','4245','EPSG','16048','EPSG','1692',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24571','Kertau / R.S.O. Malaya (ch)',NULL,NULL,'EPSG','4401','EPSG','4245','EPSG','19935','EPSG','1690',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','24600','KOC Lambert',NULL,NULL,'EPSG','4400','EPSG','4246','EPSG','19906','EPSG','3267',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24718','La Canoa / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4247','EPSG','16018','EPSG','1693',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24719','La Canoa / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4247','EPSG','16019','EPSG','1694',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24720','La Canoa / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4247','EPSG','16020','EPSG','1695',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24817','PSAD56 / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4248','EPSG','16017','EPSG','3112',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24818','PSAD56 / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4248','EPSG','16018','EPSG','1756',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24819','PSAD56 / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4248','EPSG','16019','EPSG','1758',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24820','PSAD56 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4248','EPSG','16020','EPSG','1760',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24821','PSAD56 / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4248','EPSG','16021','EPSG','1762',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24877','PSAD56 / UTM zone 17S',NULL,NULL,'EPSG','4400','EPSG','4248','EPSG','16117','EPSG','1755',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24878','PSAD56 / UTM zone 18S',NULL,NULL,'EPSG','4400','EPSG','4248','EPSG','16118','EPSG','1757',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24879','PSAD56 / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','4248','EPSG','16119','EPSG','1759',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24880','PSAD56 / UTM zone 20S',NULL,NULL,'EPSG','4400','EPSG','4248','EPSG','16120','EPSG','1761',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24881','PSAD56 / UTM zone 21S',NULL,NULL,'EPSG','4400','EPSG','4248','EPSG','16121','EPSG','3733',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24882','PSAD56 / UTM zone 22S',NULL,NULL,'EPSG','4400','EPSG','4248','EPSG','16122','EPSG','1754',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24891','PSAD56 / Peru west zone',NULL,NULL,'EPSG','4499','EPSG','4248','EPSG','18161','EPSG','1753',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24892','PSAD56 / Peru central zone',NULL,NULL,'EPSG','4499','EPSG','4248','EPSG','18162','EPSG','1752',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','24893','PSAD56 / Peru east zone',NULL,NULL,'EPSG','4499','EPSG','4248','EPSG','18163','EPSG','1751',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25000','Leigon / Ghana Metre Grid',NULL,NULL,'EPSG','4400','EPSG','4250','EPSG','19904','EPSG','1104',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25231','Lome / UTM zone 31N',NULL,NULL,'EPSG','4400','EPSG','4252','EPSG','16031','EPSG','1232',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25391','Luzon 1911 / Philippines zone I',NULL,NULL,'EPSG','4499','EPSG','4253','EPSG','18171','EPSG','3958',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25392','Luzon 1911 / Philippines zone II',NULL,NULL,'EPSG','4499','EPSG','4253','EPSG','18172','EPSG','3964',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25393','Luzon 1911 / Philippines zone III',NULL,NULL,'EPSG','4499','EPSG','4253','EPSG','18173','EPSG','3965',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25394','Luzon 1911 / Philippines zone IV',NULL,NULL,'EPSG','4499','EPSG','4253','EPSG','18174','EPSG','3966',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25395','Luzon 1911 / Philippines zone V',NULL,NULL,'EPSG','4499','EPSG','4253','EPSG','18175','EPSG','3967',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25700','Makassar (Jakarta) / NEIEZ',NULL,NULL,'EPSG','4499','EPSG','4804','EPSG','19905','EPSG','1316',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','25828','ETRS89 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','16028','EPSG','2122',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25829','ETRS89 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','16029','EPSG','2123',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25830','ETRS89 / UTM zone 30N',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','16030','EPSG','2124',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25831','ETRS89 / UTM zone 31N',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','16031','EPSG','2125',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25832','ETRS89 / UTM zone 32N',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','16032','EPSG','2126',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25833','ETRS89 / UTM zone 33N',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','16033','EPSG','2127',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25834','ETRS89 / UTM zone 34N',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','16034','EPSG','2128',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25835','ETRS89 / UTM zone 35N',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','16035','EPSG','2129',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25836','ETRS89 / UTM zone 36N',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','16036','EPSG','2130',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25837','ETRS89 / UTM zone 37N',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','16037','EPSG','2131',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25838','ETRS89 / UTM zone 38N',NULL,NULL,'EPSG','4400','EPSG','4258','EPSG','16038','EPSG','2132',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','25884','ETRS89 / TM Baltic93',NULL,NULL,'EPSG','4530','EPSG','4258','EPSG','19939','EPSG','1646',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','25932','Malongo 1987 / UTM zone 32S',NULL,NULL,'EPSG','4400','EPSG','4259','EPSG','16132','EPSG','3180',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26191','Merchich / Nord Maroc',NULL,NULL,'EPSG','4499','EPSG','4261','EPSG','18131','EPSG','1703',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26192','Merchich / Sud Maroc',NULL,NULL,'EPSG','4499','EPSG','4261','EPSG','18132','EPSG','2787',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26193','Merchich / Sahara',NULL,NULL,'EPSG','4499','EPSG','4261','EPSG','18133','EPSG','1705',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26194','Merchich / Sahara Nord',NULL,NULL,'EPSG','4499','EPSG','4261','EPSG','18134','EPSG','2788',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26195','Merchich / Sahara Sud',NULL,NULL,'EPSG','4499','EPSG','4261','EPSG','18135','EPSG','2789',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26237','Massawa / UTM zone 37N',NULL,NULL,'EPSG','4400','EPSG','4262','EPSG','16037','EPSG','1089',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26331','Minna / UTM zone 31N',NULL,NULL,'EPSG','4400','EPSG','4263','EPSG','16031','EPSG','1716',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26332','Minna / UTM zone 32N',NULL,NULL,'EPSG','4400','EPSG','4263','EPSG','16032','EPSG','3812',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26391','Minna / Nigeria West Belt',NULL,NULL,'EPSG','4400','EPSG','4263','EPSG','18151','EPSG','1715',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26392','Minna / Nigeria Mid Belt',NULL,NULL,'EPSG','4400','EPSG','4263','EPSG','18152','EPSG','1714',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26393','Minna / Nigeria East Belt',NULL,NULL,'EPSG','4400','EPSG','4263','EPSG','18153','EPSG','1713',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26432','Mhast / UTM zone 32S',NULL,NULL,'EPSG','4400','EPSG','4264','EPSG','16132','EPSG','1318',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26591','Monte Mario (Rome) / Italy zone 1',NULL,NULL,'EPSG','4499','EPSG','4806','EPSG','18121','EPSG','1718',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26592','Monte Mario (Rome) / Italy zone 2',NULL,NULL,'EPSG','4499','EPSG','4806','EPSG','18122','EPSG','1719',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26632','M''poraloko / UTM zone 32N',NULL,NULL,'EPSG','4400','EPSG','4266','EPSG','16032','EPSG','1696',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26692','M''poraloko / UTM zone 32S',NULL,NULL,'EPSG','4400','EPSG','4266','EPSG','16132','EPSG','1697',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26701','NAD27 / UTM zone 1N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16001','EPSG','3374',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26702','NAD27 / UTM zone 2N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16002','EPSG','3375',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26703','NAD27 / UTM zone 3N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16003','EPSG','2133',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26704','NAD27 / UTM zone 4N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16004','EPSG','2134',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26705','NAD27 / UTM zone 5N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16005','EPSG','2135',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26706','NAD27 / UTM zone 6N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16006','EPSG','2136',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26707','NAD27 / UTM zone 7N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16007','EPSG','2137',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26708','NAD27 / UTM zone 8N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16008','EPSG','2138',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26709','NAD27 / UTM zone 9N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16009','EPSG','2139',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26710','NAD27 / UTM zone 10N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16010','EPSG','2140',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26711','NAD27 / UTM zone 11N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16011','EPSG','2141',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26712','NAD27 / UTM zone 12N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16012','EPSG','2142',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26713','NAD27 / UTM zone 13N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16013','EPSG','2143',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26714','NAD27 / UTM zone 14N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16014','EPSG','2144',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26715','NAD27 / UTM zone 15N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16015','EPSG','2145',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26716','NAD27 / UTM zone 16N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16016','EPSG','2146',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26717','NAD27 / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16017','EPSG','2147',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26718','NAD27 / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16018','EPSG','2148',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26719','NAD27 / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16019','EPSG','2149',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26720','NAD27 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16020','EPSG','2150',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26721','NAD27 / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16021','EPSG','3891',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26722','NAD27 / UTM zone 22N',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','16022','EPSG','2152',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26729','NAD27 / Alabama East',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10101','EPSG','2154',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26730','NAD27 / Alabama West',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10102','EPSG','2155',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26731','NAD27 / Alaska zone 1',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15001','EPSG','2156',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26732','NAD27 / Alaska zone 2',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15002','EPSG','2158',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26733','NAD27 / Alaska zone 3',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15003','EPSG','2159',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26734','NAD27 / Alaska zone 4',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15004','EPSG','2160',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26735','NAD27 / Alaska zone 5',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15005','EPSG','2161',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26736','NAD27 / Alaska zone 6',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15006','EPSG','2162',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26737','NAD27 / Alaska zone 7',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15007','EPSG','2163',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26738','NAD27 / Alaska zone 8',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15008','EPSG','2164',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26739','NAD27 / Alaska zone 9',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15009','EPSG','2165',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26740','NAD27 / Alaska zone 10',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15010','EPSG','2157',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26741','NAD27 / California zone I',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10401','EPSG','2175',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26742','NAD27 / California zone II',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10402','EPSG','2176',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26743','NAD27 / California zone III',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10403','EPSG','2177',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26744','NAD27 / California zone IV',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10404','EPSG','2178',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26745','NAD27 / California zone V',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10405','EPSG','2179',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26746','NAD27 / California zone VI',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10406','EPSG','2180',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26747','NAD27 / California zone VII',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10407','EPSG','2181',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26748','NAD27 / Arizona East',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10201','EPSG','2167',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26749','NAD27 / Arizona Central',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10202','EPSG','2166',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26750','NAD27 / Arizona West',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10203','EPSG','2168',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26751','NAD27 / Arkansas North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10301','EPSG','2169',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26752','NAD27 / Arkansas South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10302','EPSG','2170',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26753','NAD27 / Colorado North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10501','EPSG','2184',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26754','NAD27 / Colorado Central',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10502','EPSG','2183',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26755','NAD27 / Colorado South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10503','EPSG','2185',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26756','NAD27 / Connecticut',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10600','EPSG','1377',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26757','NAD27 / Delaware',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10700','EPSG','1378',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26758','NAD27 / Florida East',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10901','EPSG','2186',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26759','NAD27 / Florida West',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10902','EPSG','2188',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26760','NAD27 / Florida North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10903','EPSG','2187',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26766','NAD27 / Georgia East',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11001','EPSG','2189',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26767','NAD27 / Georgia West',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11002','EPSG','2190',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26768','NAD27 / Idaho East',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11101','EPSG','2192',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26769','NAD27 / Idaho Central',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11102','EPSG','2191',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26770','NAD27 / Idaho West',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11103','EPSG','2193',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26771','NAD27 / Illinois East',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11201','EPSG','2194',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26772','NAD27 / Illinois West',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11202','EPSG','2195',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26773','NAD27 / Indiana East',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11301','EPSG','2196',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26774','NAD27 / Indiana West',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11302','EPSG','2197',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26775','NAD27 / Iowa North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11401','EPSG','2198',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26776','NAD27 / Iowa South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11402','EPSG','2199',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26777','NAD27 / Kansas North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11501','EPSG','2200',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26778','NAD27 / Kansas South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11502','EPSG','2201',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26779','NAD27 / Kentucky North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11601','EPSG','2202',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26780','NAD27 / Kentucky South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11602','EPSG','2203',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26781','NAD27 / Louisiana North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11701','EPSG','2204',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26782','NAD27 / Louisiana South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11702','EPSG','2205',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26783','NAD27 / Maine East',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11801','EPSG','2206',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26784','NAD27 / Maine West',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11802','EPSG','2207',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26785','NAD27 / Maryland',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11900','EPSG','1389',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26786','NAD27 / Massachusetts Mainland',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12001','EPSG','2209',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26787','NAD27 / Massachusetts Island',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12002','EPSG','2208',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26791','NAD27 / Minnesota North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12201','EPSG','2214',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26792','NAD27 / Minnesota Central',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12202','EPSG','2213',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26793','NAD27 / Minnesota South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12203','EPSG','2215',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26794','NAD27 / Mississippi East',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12301','EPSG','2216',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26795','NAD27 / Mississippi West',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12302','EPSG','2217',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26796','NAD27 / Missouri East',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12401','EPSG','2219',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26797','NAD27 / Missouri Central',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12402','EPSG','2218',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26798','NAD27 / Missouri West',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12403','EPSG','2220',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26799','NAD27 / California zone VII',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','10408','EPSG','2181',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26801','NAD Michigan / Michigan East',NULL,NULL,'EPSG','4497','EPSG','4268','EPSG','12101','EPSG','1720',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26802','NAD Michigan / Michigan Old Central',NULL,NULL,'EPSG','4497','EPSG','4268','EPSG','12102','EPSG','1721',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26803','NAD Michigan / Michigan West',NULL,NULL,'EPSG','4497','EPSG','4268','EPSG','12103','EPSG','3652',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26811','NAD Michigan / Michigan North',NULL,NULL,'EPSG','4497','EPSG','4268','EPSG','12111','EPSG','1723',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26812','NAD Michigan / Michigan Central',NULL,NULL,'EPSG','4497','EPSG','4268','EPSG','12112','EPSG','1724',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26813','NAD Michigan / Michigan South',NULL,NULL,'EPSG','4497','EPSG','4268','EPSG','12113','EPSG','1725',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26814','NAD83 / Maine East (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11833','EPSG','2206',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26815','NAD83 / Maine West (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11834','EPSG','2207',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26819','NAD83 / Minnesota North (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12234','EPSG','2214',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26820','NAD83 / Minnesota Central (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12235','EPSG','2213',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26821','NAD83 / Minnesota South (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12236','EPSG','2215',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26822','NAD83 / Nebraska (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15396','EPSG','1396',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26823','NAD83 / West Virginia North (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14733','EPSG','2264',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26824','NAD83 / West Virginia South (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14734','EPSG','2265',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26825','NAD83(HARN) / Maine East (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11833','EPSG','2206',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26826','NAD83(HARN) / Maine West (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','11834','EPSG','2207',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26830','NAD83(HARN) / Minnesota North (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12234','EPSG','2214',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26831','NAD83(HARN) / Minnesota Central (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12235','EPSG','2213',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26832','NAD83(HARN) / Minnesota South (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','12236','EPSG','2215',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26833','NAD83(HARN) / Nebraska (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','15396','EPSG','1396',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26834','NAD83(HARN) / West Virginia North (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14733','EPSG','2264',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26835','NAD83(HARN) / West Virginia South (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4152','EPSG','14734','EPSG','2265',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26836','NAD83(NSRS2007) / Maine East (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11833','EPSG','2206',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26837','NAD83(NSRS2007) / Maine West (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','11834','EPSG','2207',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26841','NAD83(NSRS2007) / Minnesota North (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12234','EPSG','2214',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26842','NAD83(NSRS2007) / Minnesota Central (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12235','EPSG','2213',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26843','NAD83(NSRS2007) / Minnesota South (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','12236','EPSG','2215',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26844','NAD83(NSRS2007) / Nebraska (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','15396','EPSG','1396',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26845','NAD83(NSRS2007) / West Virginia North (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14733','EPSG','2264',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26846','NAD83(NSRS2007) / West Virginia South (ftUS)',NULL,NULL,'EPSG','4499','EPSG','4759','EPSG','14734','EPSG','2265',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26847','NAD83 / Maine East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','11833','EPSG','2206',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26848','NAD83 / Maine West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','11834','EPSG','2207',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26849','NAD83 / Minnesota North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','12234','EPSG','2214',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26850','NAD83 / Minnesota Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','12235','EPSG','2213',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26851','NAD83 / Minnesota South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','12236','EPSG','2215',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26852','NAD83 / Nebraska (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15396','EPSG','1396',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26853','NAD83 / West Virginia North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','14735','EPSG','2264',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26854','NAD83 / West Virginia South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','14736','EPSG','2265',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26855','NAD83(HARN) / Maine East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','11833','EPSG','2206',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26856','NAD83(HARN) / Maine West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','11834','EPSG','2207',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26857','NAD83(HARN) / Minnesota North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','12234','EPSG','2214',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26858','NAD83(HARN) / Minnesota Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','12235','EPSG','2213',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26859','NAD83(HARN) / Minnesota South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','12236','EPSG','2215',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26860','NAD83(HARN) / Nebraska (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','15396','EPSG','1396',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26861','NAD83(HARN) / West Virginia North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','14735','EPSG','2264',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26862','NAD83(HARN) / West Virginia South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4152','EPSG','14736','EPSG','2265',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26863','NAD83(NSRS2007) / Maine East (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','11833','EPSG','2206',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26864','NAD83(NSRS2007) / Maine West (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','11834','EPSG','2207',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26865','NAD83(NSRS2007) / Minnesota North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','12234','EPSG','2214',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26866','NAD83(NSRS2007) / Minnesota Central (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','12235','EPSG','2213',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26867','NAD83(NSRS2007) / Minnesota South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','12236','EPSG','2215',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26868','NAD83(NSRS2007) / Nebraska (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','15396','EPSG','1396',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26869','NAD83(NSRS2007) / West Virginia North (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','14735','EPSG','2264',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26870','NAD83(NSRS2007) / West Virginia South (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4759','EPSG','14736','EPSG','2265',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26891','NAD83(CSRS) / MTM zone 11',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','17711','EPSG','1432',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26892','NAD83(CSRS) / MTM zone 12',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','17712','EPSG','1433',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26893','NAD83(CSRS) / MTM zone 13',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','17713','EPSG','1434',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26894','NAD83(CSRS) / MTM zone 14',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','17714','EPSG','1435',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26895','NAD83(CSRS) / MTM zone 15',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','17715','EPSG','1436',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26896','NAD83(CSRS) / MTM zone 16',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','17716','EPSG','1437',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26897','NAD83(CSRS) / MTM zone 17',NULL,NULL,'EPSG','4400','EPSG','4617','EPSG','17717','EPSG','1438',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26898','NAD83(CSRS) / MTM zone 1',NULL,NULL,'EPSG','4496','EPSG','4617','EPSG','17701','EPSG','2226',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26899','NAD83(CSRS) / MTM zone 2',NULL,NULL,'EPSG','4496','EPSG','4617','EPSG','17702','EPSG','2227',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26901','NAD83 / UTM zone 1N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16001','EPSG','3374',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26902','NAD83 / UTM zone 2N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16002','EPSG','3375',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26903','NAD83 / UTM zone 3N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16003','EPSG','2133',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26904','NAD83 / UTM zone 4N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16004','EPSG','3489',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26905','NAD83 / UTM zone 5N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16005','EPSG','3492',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26906','NAD83 / UTM zone 6N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16006','EPSG','2136',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26907','NAD83 / UTM zone 7N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16007','EPSG','3872',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26908','NAD83 / UTM zone 8N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16008','EPSG','3867',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26909','NAD83 / UTM zone 9N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16009','EPSG','3866',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26910','NAD83 / UTM zone 10N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16010','EPSG','3864',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26911','NAD83 / UTM zone 11N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16011','EPSG','3404',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26912','NAD83 / UTM zone 12N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16012','EPSG','3405',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26913','NAD83 / UTM zone 13N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16013','EPSG','3406',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26914','NAD83 / UTM zone 14N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16014','EPSG','3407',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26915','NAD83 / UTM zone 15N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16015','EPSG','3114',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26916','NAD83 / UTM zone 16N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16016','EPSG','3115',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26917','NAD83 / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16017','EPSG','3116',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26918','NAD83 / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16018','EPSG','3117',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26919','NAD83 / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16019','EPSG','3419',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26920','NAD83 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16020','EPSG','3420',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26921','NAD83 / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16021','EPSG','2151',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26922','NAD83 / UTM zone 22N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16022','EPSG','2152',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26923','NAD83 / UTM zone 23N',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','16023','EPSG','2153',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26929','NAD83 / Alabama East',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10131','EPSG','2154',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26930','NAD83 / Alabama West',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10132','EPSG','2155',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26931','NAD83 / Alaska zone 1',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15031','EPSG','2156',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26932','NAD83 / Alaska zone 2',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15032','EPSG','2158',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26933','NAD83 / Alaska zone 3',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15033','EPSG','2159',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26934','NAD83 / Alaska zone 4',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15034','EPSG','2160',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26935','NAD83 / Alaska zone 5',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15035','EPSG','2161',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26936','NAD83 / Alaska zone 6',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15036','EPSG','2162',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26937','NAD83 / Alaska zone 7',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15037','EPSG','2163',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26938','NAD83 / Alaska zone 8',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15038','EPSG','2164',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26939','NAD83 / Alaska zone 9',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15039','EPSG','2165',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26940','NAD83 / Alaska zone 10',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15040','EPSG','2157',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26941','NAD83 / California zone 1',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10431','EPSG','2175',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26942','NAD83 / California zone 2',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10432','EPSG','2176',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26943','NAD83 / California zone 3',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10433','EPSG','2177',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26944','NAD83 / California zone 4',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10434','EPSG','2178',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26945','NAD83 / California zone 5',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10435','EPSG','2182',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26946','NAD83 / California zone 6',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10436','EPSG','2180',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26948','NAD83 / Arizona East',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10231','EPSG','2167',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26949','NAD83 / Arizona Central',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10232','EPSG','2166',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26950','NAD83 / Arizona West',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10233','EPSG','2168',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26951','NAD83 / Arkansas North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10331','EPSG','2169',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26952','NAD83 / Arkansas South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10332','EPSG','2170',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26953','NAD83 / Colorado North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10531','EPSG','2184',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26954','NAD83 / Colorado Central',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10532','EPSG','2183',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26955','NAD83 / Colorado South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10533','EPSG','2185',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26956','NAD83 / Connecticut',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10630','EPSG','1377',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26957','NAD83 / Delaware',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10730','EPSG','1378',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26958','NAD83 / Florida East',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10931','EPSG','2186',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26959','NAD83 / Florida West',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10932','EPSG','2188',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26960','NAD83 / Florida North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','10933','EPSG','2187',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26961','NAD83 / Hawaii zone 1',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15131','EPSG','1546',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26962','NAD83 / Hawaii zone 2',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15132','EPSG','1547',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26963','NAD83 / Hawaii zone 3',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15133','EPSG','1548',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26964','NAD83 / Hawaii zone 4',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15134','EPSG','1549',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26965','NAD83 / Hawaii zone 5',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15135','EPSG','1550',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26966','NAD83 / Georgia East',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11031','EPSG','2189',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26967','NAD83 / Georgia West',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11032','EPSG','2190',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26968','NAD83 / Idaho East',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11131','EPSG','2192',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26969','NAD83 / Idaho Central',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11132','EPSG','2191',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26970','NAD83 / Idaho West',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11133','EPSG','2193',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26971','NAD83 / Illinois East',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11231','EPSG','2194',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26972','NAD83 / Illinois West',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11232','EPSG','2195',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26973','NAD83 / Indiana East',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11331','EPSG','2196',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26974','NAD83 / Indiana West',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11332','EPSG','2197',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26975','NAD83 / Iowa North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11431','EPSG','2198',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26976','NAD83 / Iowa South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11432','EPSG','2199',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26977','NAD83 / Kansas North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11531','EPSG','2200',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26978','NAD83 / Kansas South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11532','EPSG','2201',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26979','NAD83 / Kentucky North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11631','EPSG','2202',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','26980','NAD83 / Kentucky South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11632','EPSG','2203',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26981','NAD83 / Louisiana North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11731','EPSG','2204',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26982','NAD83 / Louisiana South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11732','EPSG','2529',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26983','NAD83 / Maine East',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11831','EPSG','2206',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26984','NAD83 / Maine West',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11832','EPSG','2207',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26985','NAD83 / Maryland',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11930','EPSG','1389',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26986','NAD83 / Massachusetts Mainland',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12031','EPSG','2209',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26987','NAD83 / Massachusetts Island',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12032','EPSG','2208',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26988','NAD83 / Michigan North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12141','EPSG','1723',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26989','NAD83 / Michigan Central',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12142','EPSG','1724',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26990','NAD83 / Michigan South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12143','EPSG','1725',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26991','NAD83 / Minnesota North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12231','EPSG','2214',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26992','NAD83 / Minnesota Central',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12232','EPSG','2213',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26993','NAD83 / Minnesota South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12233','EPSG','2215',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26994','NAD83 / Mississippi East',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12331','EPSG','2216',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26995','NAD83 / Mississippi West',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12332','EPSG','2217',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26996','NAD83 / Missouri East',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12431','EPSG','2219',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26997','NAD83 / Missouri Central',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12432','EPSG','2218',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','26998','NAD83 / Missouri West',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12433','EPSG','2220',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27037','Nahrwan 1967 / UTM zone 37N',NULL,NULL,'EPSG','4400','EPSG','4270','EPSG','16037','EPSG','3387',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','27038','Nahrwan 1967 / UTM zone 38N',NULL,NULL,'EPSG','4400','EPSG','4270','EPSG','16038','EPSG','3386',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','27039','Nahrwan 1967 / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','4270','EPSG','16039','EPSG','1749',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27040','Nahrwan 1967 / UTM zone 40N',NULL,NULL,'EPSG','4400','EPSG','4270','EPSG','16040','EPSG','1750',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27120','Naparima 1972 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4271','EPSG','16020','EPSG','1322',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27200','NZGD49 / New Zealand Map Grid',NULL,NULL,'EPSG','4400','EPSG','4272','EPSG','19917','EPSG','3973',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27205','NZGD49 / Mount Eden Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17901','EPSG','3781',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27206','NZGD49 / Bay of Plenty Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17902','EPSG','3779',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27207','NZGD49 / Poverty Bay Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17903','EPSG','3780',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27208','NZGD49 / Hawkes Bay Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17904','EPSG','3772',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27209','NZGD49 / Taranaki Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17905','EPSG','3777',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27210','NZGD49 / Tuhirangi Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17906','EPSG','3778',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27211','NZGD49 / Wanganui Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17907','EPSG','3776',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27212','NZGD49 / Wairarapa Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17908','EPSG','3775',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27213','NZGD49 / Wellington Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17909','EPSG','3774',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27214','NZGD49 / Collingwood Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17910','EPSG','3782',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27215','NZGD49 / Nelson Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17911','EPSG','3784',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27216','NZGD49 / Karamea Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17912','EPSG','3783',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27217','NZGD49 / Buller Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17913','EPSG','3786',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27218','NZGD49 / Grey Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17914','EPSG','3787',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27219','NZGD49 / Amuri Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17915','EPSG','3788',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27220','NZGD49 / Marlborough Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17916','EPSG','3785',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27221','NZGD49 / Hokitika Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17917','EPSG','3789',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27222','NZGD49 / Okarito Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17918','EPSG','3791',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27223','NZGD49 / Jacksons Bay Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17919','EPSG','3794',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27224','NZGD49 / Mount Pleasant Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17920','EPSG','3790',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27225','NZGD49 / Gawler Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17921','EPSG','3792',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27226','NZGD49 / Timaru Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17922','EPSG','3793',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27227','NZGD49 / Lindis Peak Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17923','EPSG','3795',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27228','NZGD49 / Mount Nicholas Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17924','EPSG','3797',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27229','NZGD49 / Mount York Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17925','EPSG','3799',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27230','NZGD49 / Observation Point Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17926','EPSG','3796',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27231','NZGD49 / North Taieri Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17927','EPSG','3798',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27232','NZGD49 / Bluff Circuit',NULL,NULL,'EPSG','4500','EPSG','4272','EPSG','17928','EPSG','3800',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27258','NZGD49 / UTM zone 58S',NULL,NULL,'EPSG','4400','EPSG','4272','EPSG','16158','EPSG','3970',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27259','NZGD49 / UTM zone 59S',NULL,NULL,'EPSG','4400','EPSG','4272','EPSG','16159','EPSG','3971',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27260','NZGD49 / UTM zone 60S',NULL,NULL,'EPSG','4400','EPSG','4272','EPSG','16160','EPSG','3972',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27291','NZGD49 / North Island Grid',NULL,NULL,'EPSG','4409','EPSG','4272','EPSG','18141','EPSG','1500',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27292','NZGD49 / South Island Grid',NULL,NULL,'EPSG','4409','EPSG','4272','EPSG','18142','EPSG','3344',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27391','NGO 1948 (Oslo) / NGO zone I',NULL,NULL,'EPSG','4531','EPSG','4817','EPSG','18221','EPSG','1741',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27392','NGO 1948 (Oslo) / NGO zone II',NULL,NULL,'EPSG','4531','EPSG','4817','EPSG','18222','EPSG','1742',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27393','NGO 1948 (Oslo) / NGO zone III',NULL,NULL,'EPSG','4531','EPSG','4817','EPSG','18223','EPSG','1743',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27394','NGO 1948 (Oslo) / NGO zone IV',NULL,NULL,'EPSG','4531','EPSG','4817','EPSG','18224','EPSG','1744',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27395','NGO 1948 (Oslo) / NGO zone V',NULL,NULL,'EPSG','4531','EPSG','4817','EPSG','18225','EPSG','1745',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27396','NGO 1948 (Oslo) / NGO zone VI',NULL,NULL,'EPSG','4531','EPSG','4817','EPSG','18226','EPSG','1746',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27397','NGO 1948 (Oslo) / NGO zone VII',NULL,NULL,'EPSG','4531','EPSG','4817','EPSG','18227','EPSG','1747',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27398','NGO 1948 (Oslo) / NGO zone VIII',NULL,NULL,'EPSG','4531','EPSG','4817','EPSG','18228','EPSG','1748',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27429','Datum 73 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4274','EPSG','16029','EPSG','1294',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27492','Datum 73 / Modified Portuguese Grid',NULL,NULL,'EPSG','4530','EPSG','4274','EPSG','19974','EPSG','1294',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','27493','Datum 73 / Modified Portuguese Grid',NULL,NULL,'EPSG','4499','EPSG','4274','EPSG','19974','EPSG','1294',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27500','ATF (Paris) / Nord de Guerre',NULL,NULL,'EPSG','4499','EPSG','4901','EPSG','19903','EPSG','1369',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27561','NTF (Paris) / Lambert Nord France',NULL,NULL,'EPSG','4499','EPSG','4807','EPSG','18091','EPSG','1731',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27562','NTF (Paris) / Lambert Centre France',NULL,NULL,'EPSG','4499','EPSG','4807','EPSG','18092','EPSG','1732',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27563','NTF (Paris) / Lambert Sud France',NULL,NULL,'EPSG','4499','EPSG','4807','EPSG','18093','EPSG','1733',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27564','NTF (Paris) / Lambert Corse',NULL,NULL,'EPSG','4499','EPSG','4807','EPSG','18094','EPSG','1327',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27571','NTF (Paris) / Lambert zone I',NULL,NULL,'EPSG','4499','EPSG','4807','EPSG','18081','EPSG','1731',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27572','NTF (Paris) / Lambert zone II',NULL,NULL,'EPSG','4499','EPSG','4807','EPSG','18082','EPSG','1734',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27573','NTF (Paris) / Lambert zone III',NULL,NULL,'EPSG','4499','EPSG','4807','EPSG','18083','EPSG','1733',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27574','NTF (Paris) / Lambert zone IV',NULL,NULL,'EPSG','4499','EPSG','4807','EPSG','18084','EPSG','1327',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','27581','NTF (Paris) / France I',NULL,NULL,'EPSG','4499','EPSG','4807','EPSG','18081','EPSG','1731',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','27582','NTF (Paris) / France II',NULL,NULL,'EPSG','4499','EPSG','4807','EPSG','18082','EPSG','1734',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','27583','NTF (Paris) / France III',NULL,NULL,'EPSG','4499','EPSG','4807','EPSG','18083','EPSG','1733',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','27584','NTF (Paris) / France IV',NULL,NULL,'EPSG','4499','EPSG','4807','EPSG','18084','EPSG','1327',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','27591','NTF (Paris) / Nord France',NULL,NULL,'EPSG','4499','EPSG','4807','EPSG','18091','EPSG','1731',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','27592','NTF (Paris) / Centre France',NULL,NULL,'EPSG','4499','EPSG','4807','EPSG','18092','EPSG','1732',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','27593','NTF (Paris) / Sud France',NULL,NULL,'EPSG','4499','EPSG','4807','EPSG','18093','EPSG','1733',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','27594','NTF (Paris) / Corse',NULL,NULL,'EPSG','4499','EPSG','4807','EPSG','18094','EPSG','1327',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','27700','OSGB 1936 / British National Grid',NULL,NULL,'EPSG','4400','EPSG','4277','EPSG','19916','EPSG','4390',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28191','Palestine 1923 / Palestine Grid',NULL,NULL,'EPSG','4400','EPSG','4281','EPSG','18201','EPSG','1356',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28192','Palestine 1923 / Palestine Belt',NULL,NULL,'EPSG','4400','EPSG','4281','EPSG','18202','EPSG','1356',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28193','Palestine 1923 / Israeli CS Grid',NULL,NULL,'EPSG','4400','EPSG','4281','EPSG','18203','EPSG','2603',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28232','Pointe Noire / UTM zone 32S',NULL,NULL,'EPSG','4400','EPSG','4282','EPSG','16132','EPSG','1072',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28348','GDA94 / MGA zone 48',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','17348','EPSG','4191',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28349','GDA94 / MGA zone 49',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','17349','EPSG','4176',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28350','GDA94 / MGA zone 50',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','17350','EPSG','4178',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28351','GDA94 / MGA zone 51',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','17351','EPSG','1559',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28352','GDA94 / MGA zone 52',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','17352','EPSG','1560',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28353','GDA94 / MGA zone 53',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','17353','EPSG','1561',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28354','GDA94 / MGA zone 54',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','17354','EPSG','1562',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28355','GDA94 / MGA zone 55',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','17355','EPSG','1563',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28356','GDA94 / MGA zone 56',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','17356','EPSG','1564',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28357','GDA94 / MGA zone 57',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','17357','EPSG','4196',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28358','GDA94 / MGA zone 58',NULL,NULL,'EPSG','4400','EPSG','4283','EPSG','17358','EPSG','4175',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28402','Pulkovo 1942 / Gauss-Kruger zone 2',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16202','EPSG','1805',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28403','Pulkovo 1942 / Gauss-Kruger zone 3',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16203','EPSG','1792',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28404','Pulkovo 1942 / Gauss-Kruger zone 4',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16204','EPSG','1793',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28405','Pulkovo 1942 / Gauss-Kruger zone 5',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16205','EPSG','1794',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28406','Pulkovo 1942 / Gauss-Kruger zone 6',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16206','EPSG','1795',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28407','Pulkovo 1942 / Gauss-Kruger zone 7',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16207','EPSG','1796',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28408','Pulkovo 1942 / Gauss-Kruger zone 8',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16208','EPSG','1797',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28409','Pulkovo 1942 / Gauss-Kruger zone 9',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16209','EPSG','1798',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28410','Pulkovo 1942 / Gauss-Kruger zone 10',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16210','EPSG','1799',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28411','Pulkovo 1942 / Gauss-Kruger zone 11',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16211','EPSG','1800',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28412','Pulkovo 1942 / Gauss-Kruger zone 12',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16212','EPSG','1801',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28413','Pulkovo 1942 / Gauss-Kruger zone 13',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16213','EPSG','1802',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28414','Pulkovo 1942 / Gauss-Kruger zone 14',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16214','EPSG','1803',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28415','Pulkovo 1942 / Gauss-Kruger zone 15',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16215','EPSG','1804',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28416','Pulkovo 1942 / Gauss-Kruger zone 16',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16216','EPSG','1775',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28417','Pulkovo 1942 / Gauss-Kruger zone 17',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16217','EPSG','1776',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28418','Pulkovo 1942 / Gauss-Kruger zone 18',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16218','EPSG','1777',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28419','Pulkovo 1942 / Gauss-Kruger zone 19',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16219','EPSG','1778',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28420','Pulkovo 1942 / Gauss-Kruger zone 20',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16220','EPSG','1779',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28421','Pulkovo 1942 / Gauss-Kruger zone 21',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16221','EPSG','1780',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28422','Pulkovo 1942 / Gauss-Kruger zone 22',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16222','EPSG','1781',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28423','Pulkovo 1942 / Gauss-Kruger zone 23',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16223','EPSG','1782',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28424','Pulkovo 1942 / Gauss-Kruger zone 24',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16224','EPSG','1783',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28425','Pulkovo 1942 / Gauss-Kruger zone 25',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16225','EPSG','1784',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28426','Pulkovo 1942 / Gauss-Kruger zone 26',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16226','EPSG','1785',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28427','Pulkovo 1942 / Gauss-Kruger zone 27',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16227','EPSG','1786',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28428','Pulkovo 1942 / Gauss-Kruger zone 28',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16228','EPSG','1787',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28429','Pulkovo 1942 / Gauss-Kruger zone 29',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16229','EPSG','1788',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28430','Pulkovo 1942 / Gauss-Kruger zone 30',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16230','EPSG','1789',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28431','Pulkovo 1942 / Gauss-Kruger zone 31',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16231','EPSG','1790',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28432','Pulkovo 1942 / Gauss-Kruger zone 32',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16232','EPSG','1791',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28462','Pulkovo 1942 / Gauss-Kruger 2N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16302','EPSG','1805',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28463','Pulkovo 1942 / Gauss-Kruger 3N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16303','EPSG','1792',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28464','Pulkovo 1942 / Gauss-Kruger 4N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16304','EPSG','1793',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28465','Pulkovo 1942 / Gauss-Kruger 5N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16305','EPSG','1794',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28466','Pulkovo 1942 / Gauss-Kruger 6N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16306','EPSG','1795',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28467','Pulkovo 1942 / Gauss-Kruger 7N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16307','EPSG','1796',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28468','Pulkovo 1942 / Gauss-Kruger 8N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16308','EPSG','1797',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28469','Pulkovo 1942 / Gauss-Kruger 9N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16309','EPSG','1798',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28470','Pulkovo 1942 / Gauss-Kruger 10N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16310','EPSG','1799',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28471','Pulkovo 1942 / Gauss-Kruger 11N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16311','EPSG','1800',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28472','Pulkovo 1942 / Gauss-Kruger 12N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16312','EPSG','1801',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28473','Pulkovo 1942 / Gauss-Kruger 13N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16313','EPSG','1802',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28474','Pulkovo 1942 / Gauss-Kruger 14N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16314','EPSG','1803',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28475','Pulkovo 1942 / Gauss-Kruger 15N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16315','EPSG','1804',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28476','Pulkovo 1942 / Gauss-Kruger 16N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16316','EPSG','1775',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28477','Pulkovo 1942 / Gauss-Kruger 17N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16317','EPSG','1776',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28478','Pulkovo 1942 / Gauss-Kruger 18N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16318','EPSG','1777',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28479','Pulkovo 1942 / Gauss-Kruger 19N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16319','EPSG','1778',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28480','Pulkovo 1942 / Gauss-Kruger 20N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16320','EPSG','1779',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28481','Pulkovo 1942 / Gauss-Kruger 21N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16321','EPSG','1780',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28482','Pulkovo 1942 / Gauss-Kruger 22N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16322','EPSG','1781',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28483','Pulkovo 1942 / Gauss-Kruger 23N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16323','EPSG','1782',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28484','Pulkovo 1942 / Gauss-Kruger 24N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16324','EPSG','1783',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28485','Pulkovo 1942 / Gauss-Kruger 25N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16325','EPSG','1784',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28486','Pulkovo 1942 / Gauss-Kruger 26N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16326','EPSG','1785',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28487','Pulkovo 1942 / Gauss-Kruger 27N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16327','EPSG','1786',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28488','Pulkovo 1942 / Gauss-Kruger 28N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16328','EPSG','1787',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28489','Pulkovo 1942 / Gauss-Kruger 29N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16329','EPSG','1788',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28490','Pulkovo 1942 / Gauss-Kruger 30N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16330','EPSG','1789',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28491','Pulkovo 1942 / Gauss-Kruger 31N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16331','EPSG','1790',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28492','Pulkovo 1942 / Gauss-Kruger 32N',NULL,NULL,'EPSG','4530','EPSG','4284','EPSG','16332','EPSG','1791',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','28600','Qatar 1974 / Qatar National Grid',NULL,NULL,'EPSG','4400','EPSG','4285','EPSG','19919','EPSG','1346',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28991','Amersfoort / RD Old',NULL,NULL,'EPSG','4499','EPSG','4289','EPSG','19913','EPSG','1275',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','28992','Amersfoort / RD New',NULL,NULL,'EPSG','4499','EPSG','4289','EPSG','19914','EPSG','1275',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29100','SAD69 / Brazil Polyconic',NULL,NULL,'EPSG','4499','EPSG','4291','EPSG','19941','EPSG','1053',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29101','SAD69 / Brazil Polyconic',NULL,NULL,'EPSG','4499','EPSG','4618','EPSG','19941','EPSG','1053',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29118','SAD69 / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4291','EPSG','16018','EPSG','1807',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29119','SAD69 / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4291','EPSG','16019','EPSG','1809',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29120','SAD69 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4291','EPSG','16020','EPSG','1811',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29121','SAD69 / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4291','EPSG','16021','EPSG','1813',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29122','SAD69 / UTM zone 22N',NULL,NULL,'EPSG','4400','EPSG','4291','EPSG','16022','EPSG','1815',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29168','SAD69 / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4618','EPSG','16018','EPSG','3832',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29169','SAD69 / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4618','EPSG','16019','EPSG','3834',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29170','SAD69 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4618','EPSG','16020','EPSG','3839',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29171','SAD69 / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4618','EPSG','16021','EPSG','3841',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29172','SAD69 / UTM zone 22N',NULL,NULL,'EPSG','4400','EPSG','4618','EPSG','16022','EPSG','1815',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29177','SAD69 / UTM zone 17S',NULL,NULL,'EPSG','4400','EPSG','4291','EPSG','16117','EPSG','1806',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29178','SAD69 / UTM zone 18S',NULL,NULL,'EPSG','4400','EPSG','4291','EPSG','16118','EPSG','1808',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29179','SAD69 / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','4291','EPSG','16119','EPSG','1810',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29180','SAD69 / UTM zone 20S',NULL,NULL,'EPSG','4400','EPSG','4291','EPSG','16120','EPSG','1812',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29181','SAD69 / UTM zone 21S',NULL,NULL,'EPSG','4400','EPSG','4291','EPSG','16121','EPSG','1814',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29182','SAD69 / UTM zone 22S',NULL,NULL,'EPSG','4400','EPSG','4291','EPSG','16122','EPSG','1816',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29183','SAD69 / UTM zone 23S',NULL,NULL,'EPSG','4400','EPSG','4291','EPSG','16123','EPSG','1817',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29184','SAD69 / UTM zone 24S',NULL,NULL,'EPSG','4400','EPSG','4291','EPSG','16124','EPSG','1818',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29185','SAD69 / UTM zone 25S',NULL,NULL,'EPSG','4400','EPSG','4291','EPSG','16125','EPSG','1819',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29187','SAD69 / UTM zone 17S',NULL,NULL,'EPSG','4400','EPSG','4618','EPSG','16117','EPSG','3831',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29188','SAD69 / UTM zone 18S',NULL,NULL,'EPSG','4400','EPSG','4618','EPSG','16118','EPSG','3833',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29189','SAD69 / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','4618','EPSG','16119','EPSG','3835',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29190','SAD69 / UTM zone 20S',NULL,NULL,'EPSG','4400','EPSG','4618','EPSG','16120','EPSG','3840',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29191','SAD69 / UTM zone 21S',NULL,NULL,'EPSG','4400','EPSG','4618','EPSG','16121','EPSG','1814',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29192','SAD69 / UTM zone 22S',NULL,NULL,'EPSG','4400','EPSG','4618','EPSG','16122','EPSG','1816',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29193','SAD69 / UTM zone 23S',NULL,NULL,'EPSG','4400','EPSG','4618','EPSG','16123','EPSG','3445',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29194','SAD69 / UTM zone 24S',NULL,NULL,'EPSG','4400','EPSG','4618','EPSG','16124','EPSG','3446',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29195','SAD69 / UTM zone 25S',NULL,NULL,'EPSG','4400','EPSG','4618','EPSG','16125','EPSG','3447',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29220','Sapper Hill 1943 / UTM zone 20S',NULL,NULL,'EPSG','4400','EPSG','4292','EPSG','16120','EPSG','1820',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29221','Sapper Hill 1943 / UTM zone 21S',NULL,NULL,'EPSG','4400','EPSG','4292','EPSG','16121','EPSG','1821',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29333','Schwarzeck / UTM zone 33S',NULL,NULL,'EPSG','4400','EPSG','4293','EPSG','16133','EPSG','1822',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29371','Schwarzeck / Lo22/11',NULL,NULL,'EPSG','6502','EPSG','4293','EPSG','17611','EPSG','1838',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29373','Schwarzeck / Lo22/13',NULL,NULL,'EPSG','6502','EPSG','4293','EPSG','17613','EPSG','1839',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29375','Schwarzeck / Lo22/15',NULL,NULL,'EPSG','6502','EPSG','4293','EPSG','17615','EPSG','1840',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29377','Schwarzeck / Lo22/17',NULL,NULL,'EPSG','6502','EPSG','4293','EPSG','17617','EPSG','1841',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29379','Schwarzeck / Lo22/19',NULL,NULL,'EPSG','6502','EPSG','4293','EPSG','17619','EPSG','1842',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29381','Schwarzeck / Lo22/21',NULL,NULL,'EPSG','6502','EPSG','4293','EPSG','17621','EPSG','1843',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29383','Schwarzeck / Lo22/23',NULL,NULL,'EPSG','6502','EPSG','4293','EPSG','17623','EPSG','1844',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29385','Schwarzeck / Lo22/25',NULL,NULL,'EPSG','6502','EPSG','4293','EPSG','17625','EPSG','1845',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29635','Sudan / UTM zone 35N',NULL,NULL,'EPSG','4400','EPSG','4296','EPSG','16035','EPSG','1846',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29636','Sudan / UTM zone 36N',NULL,NULL,'EPSG','4400','EPSG','4296','EPSG','16036','EPSG','1847',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29700','Tananarive (Paris) / Laborde Grid',NULL,NULL,'EPSG','4499','EPSG','4810','EPSG','19911','EPSG','3273',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29701','Tananarive (Paris) / Laborde Grid',NULL,NULL,'EPSG','4530','EPSG','4810','EPSG','19861','EPSG','3273',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29702','Tananarive (Paris) / Laborde Grid approximation',NULL,NULL,'EPSG','4530','EPSG','4810','EPSG','19911','EPSG','3273',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29738','Tananarive / UTM zone 38S',NULL,NULL,'EPSG','4400','EPSG','4297','EPSG','16138','EPSG','1848',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29739','Tananarive / UTM zone 39S',NULL,NULL,'EPSG','4400','EPSG','4297','EPSG','16139','EPSG','1849',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29849','Timbalai 1948 / UTM zone 49N',NULL,NULL,'EPSG','4400','EPSG','4298','EPSG','16049','EPSG','1852',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29850','Timbalai 1948 / UTM zone 50N',NULL,NULL,'EPSG','4400','EPSG','4298','EPSG','16050','EPSG','1853',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29871','Timbalai 1948 / RSO Borneo (ch)',NULL,NULL,'EPSG','4402','EPSG','4298','EPSG','19956','EPSG','1362',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29872','Timbalai 1948 / RSO Borneo (ftSe)',NULL,NULL,'EPSG','4405','EPSG','4298','EPSG','19957','EPSG','1851',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29873','Timbalai 1948 / RSO Borneo (m)',NULL,NULL,'EPSG','4400','EPSG','4298','EPSG','19958','EPSG','1362',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29900','TM65 / Irish National Grid',NULL,NULL,'EPSG','4400','EPSG','4299','EPSG','19908','EPSG','1305',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','29901','OSNI 1952 / Irish National Grid',NULL,NULL,'EPSG','4400','EPSG','4188','EPSG','19973','EPSG','2530',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29902','TM65 / Irish Grid',NULL,NULL,'EPSG','4400','EPSG','4299','EPSG','19972','EPSG','3767',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','29903','TM75 / Irish Grid',NULL,NULL,'EPSG','4400','EPSG','4300','EPSG','19972','EPSG','1305',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30161','Tokyo / Japan Plane Rectangular CS I',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17801','EPSG','1854',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30162','Tokyo / Japan Plane Rectangular CS II',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17802','EPSG','1855',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30163','Tokyo / Japan Plane Rectangular CS III',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17803','EPSG','1856',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30164','Tokyo / Japan Plane Rectangular CS IV',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17804','EPSG','1857',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30165','Tokyo / Japan Plane Rectangular CS V',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17805','EPSG','1858',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30166','Tokyo / Japan Plane Rectangular CS VI',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17806','EPSG','1859',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30167','Tokyo / Japan Plane Rectangular CS VII',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17807','EPSG','1860',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30168','Tokyo / Japan Plane Rectangular CS VIII',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17808','EPSG','1861',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30169','Tokyo / Japan Plane Rectangular CS IX',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17809','EPSG','1862',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30170','Tokyo / Japan Plane Rectangular CS X',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17810','EPSG','1863',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30171','Tokyo / Japan Plane Rectangular CS XI',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17811','EPSG','1864',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30172','Tokyo / Japan Plane Rectangular CS XII',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17812','EPSG','1865',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30173','Tokyo / Japan Plane Rectangular CS XIII',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17813','EPSG','1866',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30174','Tokyo / Japan Plane Rectangular CS XIV',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17814','EPSG','1867',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30175','Tokyo / Japan Plane Rectangular CS XV',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17815','EPSG','1868',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30176','Tokyo / Japan Plane Rectangular CS XVI',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17816','EPSG','1869',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30177','Tokyo / Japan Plane Rectangular CS XVII',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17817','EPSG','1870',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30178','Tokyo / Japan Plane Rectangular CS XVIII',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17818','EPSG','1871',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30179','Tokyo / Japan Plane Rectangular CS XIX',NULL,NULL,'EPSG','4530','EPSG','4301','EPSG','17819','EPSG','1872',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30200','Trinidad 1903 / Trinidad Grid',NULL,NULL,'EPSG','4407','EPSG','4302','EPSG','19925','EPSG','1339',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30339','TC(1948) / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','4303','EPSG','16039','EPSG','1850',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30340','TC(1948) / UTM zone 40N',NULL,NULL,'EPSG','4400','EPSG','4303','EPSG','16040','EPSG','4022',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30491','Voirol 1875 / Nord Algerie (ancienne)',NULL,NULL,'EPSG','4499','EPSG','4304','EPSG','18011','EPSG','1728',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30492','Voirol 1875 / Sud Algerie (ancienne)',NULL,NULL,'EPSG','4499','EPSG','4304','EPSG','18012','EPSG','4519',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30493','Voirol 1879 / Nord Algerie (ancienne)',NULL,NULL,'EPSG','4499','EPSG','4671','EPSG','18011','EPSG','1728',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30494','Voirol 1879 / Sud Algerie (ancienne)',NULL,NULL,'EPSG','4499','EPSG','4671','EPSG','18012','EPSG','4519',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30729','Nord Sahara 1959 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4307','EPSG','16029','EPSG','1735',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30730','Nord Sahara 1959 / UTM zone 30N',NULL,NULL,'EPSG','4400','EPSG','4307','EPSG','16030','EPSG','3952',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30731','Nord Sahara 1959 / UTM zone 31N',NULL,NULL,'EPSG','4400','EPSG','4307','EPSG','16031','EPSG','3953',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30732','Nord Sahara 1959 / UTM zone 32N',NULL,NULL,'EPSG','4400','EPSG','4307','EPSG','16032','EPSG','3954',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30791','Nord Sahara 1959 / Nord Algerie',NULL,NULL,'EPSG','4499','EPSG','4307','EPSG','18021','EPSG','1728',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30792','Nord Sahara 1959 / Sud Algerie',NULL,NULL,'EPSG','4499','EPSG','4307','EPSG','18022','EPSG','1729',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','30800','RT38 2.5 gon W',NULL,NULL,'EPSG','4530','EPSG','4308','EPSG','19929','EPSG','1225',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31028','Yoff / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4310','EPSG','16028','EPSG','1207',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31121','Zanderij / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4311','EPSG','16021','EPSG','1222',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31154','Zanderij / TM 54 NW',NULL,NULL,'EPSG','4400','EPSG','4311','EPSG','17054','EPSG','1727',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31170','Zanderij / Suriname Old TM',NULL,NULL,'EPSG','4400','EPSG','4311','EPSG','19954','EPSG','3312',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31171','Zanderij / Suriname TM',NULL,NULL,'EPSG','4400','EPSG','4311','EPSG','19955','EPSG','3312',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31251','MGI (Ferro) / Austria GK West Zone',NULL,NULL,'EPSG','4530','EPSG','4805','EPSG','18001','EPSG','1706',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31252','MGI (Ferro) / Austria GK Central Zone',NULL,NULL,'EPSG','4530','EPSG','4805','EPSG','18002','EPSG','1707',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31253','MGI (Ferro) / Austria GK East Zone',NULL,NULL,'EPSG','4530','EPSG','4805','EPSG','18003','EPSG','1708',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31254','MGI / Austria GK West',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','18004','EPSG','1706',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31255','MGI / Austria GK Central',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','18005','EPSG','1707',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31256','MGI / Austria GK East',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','18006','EPSG','1708',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31257','MGI / Austria GK M28',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','18007','EPSG','1706',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31258','MGI / Austria GK M31',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','18008','EPSG','1707',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31259','MGI / Austria GK M34',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','18009','EPSG','1708',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31265','MGI / 3-degree Gauss zone 5',NULL,NULL,'EPSG','4499','EPSG','4312','EPSG','16265','EPSG','1709',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31266','MGI / 3-degree Gauss zone 6',NULL,NULL,'EPSG','4499','EPSG','4312','EPSG','16266','EPSG','1710',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31267','MGI / 3-degree Gauss zone 7',NULL,NULL,'EPSG','4499','EPSG','4312','EPSG','16267','EPSG','1711',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31268','MGI / 3-degree Gauss zone 8',NULL,NULL,'EPSG','4499','EPSG','4312','EPSG','16268','EPSG','1712',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31275','MGI / Balkans zone 5',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','18275','EPSG','1709',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31276','MGI / Balkans zone 6',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','18276','EPSG','1710',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31277','MGI / Balkans zone 7',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','18277','EPSG','1711',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31278','MGI / Balkans zone 8',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','18277','EPSG','1712',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31279','MGI / Balkans zone 8',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','18278','EPSG','1712',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31281','MGI (Ferro) / Austria West Zone',NULL,NULL,'EPSG','4530','EPSG','4805','EPSG','18041','EPSG','1706',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31282','MGI (Ferro) / Austria Central Zone',NULL,NULL,'EPSG','4530','EPSG','4805','EPSG','18042','EPSG','1707',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31283','MGI (Ferro) / Austria East Zone',NULL,NULL,'EPSG','4530','EPSG','4805','EPSG','18043','EPSG','1708',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31284','MGI / Austria M28',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','18044','EPSG','1706',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31285','MGI / Austria M31',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','18045','EPSG','1707',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31286','MGI / Austria M34',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','18046','EPSG','1708',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31287','MGI / Austria Lambert',NULL,NULL,'EPSG','4530','EPSG','4312','EPSG','19947','EPSG','1037',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31288','MGI (Ferro) / M28',NULL,NULL,'EPSG','4530','EPSG','4805','EPSG','18047','EPSG','1706',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31289','MGI (Ferro) / M31',NULL,NULL,'EPSG','4530','EPSG','4805','EPSG','18048','EPSG','1707',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31290','MGI (Ferro) / M34',NULL,NULL,'EPSG','4530','EPSG','4805','EPSG','18049','EPSG','1708',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31291','MGI (Ferro) / Austria West Zone',NULL,NULL,'EPSG','4499','EPSG','4805','EPSG','18041','EPSG','1706',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31292','MGI (Ferro) / Austria Central Zone',NULL,NULL,'EPSG','4499','EPSG','4805','EPSG','18042','EPSG','1708',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31293','MGI (Ferro) / Austria East Zone',NULL,NULL,'EPSG','4499','EPSG','4805','EPSG','18043','EPSG','1707',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31294','MGI / M28',NULL,NULL,'EPSG','4499','EPSG','4312','EPSG','18044','EPSG','1706',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31295','MGI / M31',NULL,NULL,'EPSG','4499','EPSG','4312','EPSG','18045','EPSG','1707',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31296','MGI / M34',NULL,NULL,'EPSG','4499','EPSG','4312','EPSG','18046','EPSG','1708',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31297','MGI / Austria Lambert',NULL,NULL,'EPSG','4499','EPSG','4312','EPSG','19947','EPSG','1037',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31300','Belge 1972 / Belge Lambert 72',NULL,NULL,'EPSG','4499','EPSG','4313','EPSG','19902','EPSG','1347',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31370','Belge 1972 / Belgian Lambert 72',NULL,NULL,'EPSG','4499','EPSG','4313','EPSG','19961','EPSG','1347',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31461','DHDN / 3-degree Gauss zone 1',NULL,NULL,'EPSG','4499','EPSG','4314','EPSG','16261','EPSG','1628',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31462','DHDN / 3-degree Gauss zone 2',NULL,NULL,'EPSG','4499','EPSG','4314','EPSG','16262','EPSG','1624',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31463','DHDN / 3-degree Gauss zone 3',NULL,NULL,'EPSG','4499','EPSG','4314','EPSG','16263','EPSG','1625',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31464','DHDN / 3-degree Gauss zone 4',NULL,NULL,'EPSG','4499','EPSG','4314','EPSG','16264','EPSG','1626',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31465','DHDN / 3-degree Gauss zone 5',NULL,NULL,'EPSG','4499','EPSG','4314','EPSG','16265','EPSG','1627',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31466','DHDN / 3-degree Gauss-Kruger zone 2',NULL,NULL,'EPSG','4530','EPSG','4314','EPSG','16262','EPSG','1624',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31467','DHDN / 3-degree Gauss-Kruger zone 3',NULL,NULL,'EPSG','4530','EPSG','4314','EPSG','16263','EPSG','1625',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31468','DHDN / 3-degree Gauss-Kruger zone 4',NULL,NULL,'EPSG','4530','EPSG','4314','EPSG','16264','EPSG','1626',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31469','DHDN / 3-degree Gauss-Kruger zone 5',NULL,NULL,'EPSG','4530','EPSG','4314','EPSG','16265','EPSG','1627',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31528','Conakry 1905 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4315','EPSG','16028','EPSG','1468',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31529','Conakry 1905 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4315','EPSG','16029','EPSG','1469',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31600','Dealul Piscului 1930 / Stereo 33',NULL,NULL,'EPSG','4499','EPSG','4316','EPSG','19927','EPSG','3295',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31700','Dealul Piscului 1970/ Stereo 70',NULL,NULL,'EPSG','4530','EPSG','4317','EPSG','19926','EPSG','1197',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31838','NGN / UTM zone 38N',NULL,NULL,'EPSG','4400','EPSG','4318','EPSG','16038','EPSG','1739',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31839','NGN / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','4318','EPSG','16039','EPSG','1740',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31900','KUDAMS / KTM',NULL,NULL,'EPSG','4400','EPSG','4319','EPSG','19928','EPSG','1310',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','31901','KUDAMS / KTM',NULL,NULL,'EPSG','4400','EPSG','4319','EPSG','19997','EPSG','1310',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31965','SIRGAS 2000 / UTM zone 11N',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16011','EPSG','3748',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31966','SIRGAS 2000 / UTM zone 12N',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16012','EPSG','3756',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31967','SIRGAS 2000 / UTM zone 13N',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16013','EPSG','3759',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31968','SIRGAS 2000 / UTM zone 14N',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16014','EPSG','3763',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31969','SIRGAS 2000 / UTM zone 15N',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16015','EPSG','3427',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31970','SIRGAS 2000 / UTM zone 16N',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16016','EPSG','3428',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31971','SIRGAS 2000 / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16017','EPSG','3421',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31972','SIRGAS 2000 / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16018','EPSG','3422',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31973','SIRGAS 2000 / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16019','EPSG','3436',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31974','SIRGAS 2000 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16020','EPSG','3437',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31975','SIRGAS 2000 / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16021','EPSG','3438',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31976','SIRGAS 2000 / UTM zone 22N',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16022','EPSG','3439',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31977','SIRGAS 2000 / UTM zone 17S',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16117','EPSG','1824',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31978','SIRGAS 2000 / UTM zone 18S',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16118','EPSG','3440',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31979','SIRGAS 2000 / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16119','EPSG','3441',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31980','SIRGAS 2000 / UTM zone 20S',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16120','EPSG','3442',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31981','SIRGAS 2000 / UTM zone 21S',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16121','EPSG','3443',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31982','SIRGAS 2000 / UTM zone 22S',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16122','EPSG','3444',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31983','SIRGAS 2000 / UTM zone 23S',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16123','EPSG','3445',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31984','SIRGAS 2000 / UTM zone 24S',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16124','EPSG','3446',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31985','SIRGAS 2000 / UTM zone 25S',NULL,NULL,'EPSG','4400','EPSG','4674','EPSG','16125','EPSG','3447',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31986','SIRGAS 1995 / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4170','EPSG','16017','EPSG','1823',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31987','SIRGAS 1995 / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4170','EPSG','16018','EPSG','1825',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31988','SIRGAS 1995 / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4170','EPSG','16019','EPSG','1827',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31989','SIRGAS 1995 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4170','EPSG','16020','EPSG','1829',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31990','SIRGAS 1995 / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4170','EPSG','16021','EPSG','1831',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31991','SIRGAS 1995 / UTM zone 22N',NULL,NULL,'EPSG','4400','EPSG','4170','EPSG','16022','EPSG','1833',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31992','SIRGAS 1995 / UTM zone 17S',NULL,NULL,'EPSG','4400','EPSG','4170','EPSG','16117','EPSG','3638',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31993','SIRGAS 1995 / UTM zone 18S',NULL,NULL,'EPSG','4400','EPSG','4170','EPSG','16118','EPSG','1826',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31994','SIRGAS 1995 / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','4170','EPSG','16119','EPSG','1828',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31995','SIRGAS 1995 / UTM zone 20S',NULL,NULL,'EPSG','4400','EPSG','4170','EPSG','16120','EPSG','1830',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31996','SIRGAS 1995 / UTM zone 21S',NULL,NULL,'EPSG','4400','EPSG','4170','EPSG','16121','EPSG','1832',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31997','SIRGAS 1995 / UTM zone 22S',NULL,NULL,'EPSG','4400','EPSG','4170','EPSG','16122','EPSG','1834',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31998','SIRGAS 1995 / UTM zone 23S',NULL,NULL,'EPSG','4400','EPSG','4170','EPSG','16123','EPSG','1835',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','31999','SIRGAS 1995 / UTM zone 24S',NULL,NULL,'EPSG','4400','EPSG','4170','EPSG','16124','EPSG','1836',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32000','SIRGAS 1995 / UTM zone 25S',NULL,NULL,'EPSG','4400','EPSG','4170','EPSG','16125','EPSG','1837',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32001','NAD27 / Montana North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12501','EPSG','2211',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32002','NAD27 / Montana Central',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12502','EPSG','2210',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32003','NAD27 / Montana South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12503','EPSG','2212',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32005','NAD27 / Nebraska North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12601','EPSG','2221',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32006','NAD27 / Nebraska South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12602','EPSG','2222',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32007','NAD27 / Nevada East',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12701','EPSG','2224',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32008','NAD27 / Nevada Central',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12702','EPSG','2223',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32009','NAD27 / Nevada West',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12703','EPSG','2225',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32010','NAD27 / New Hampshire',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12800','EPSG','1398',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32011','NAD27 / New Jersey',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','12900','EPSG','1399',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32012','NAD27 / New Mexico East',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13001','EPSG','2228',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32013','NAD27 / New Mexico Central',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13002','EPSG','2229',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32014','NAD27 / New Mexico West',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13003','EPSG','2230',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32015','NAD27 / New York East',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13101','EPSG','2234',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32016','NAD27 / New York Central',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13102','EPSG','2233',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32017','NAD27 / New York West',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13103','EPSG','2236',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32018','NAD27 / New York Long Island',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13104','EPSG','2235',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','32019','NAD27 / North Carolina',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13200','EPSG','1402',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32020','NAD27 / North Dakota North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13301','EPSG','2237',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32021','NAD27 / North Dakota South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13302','EPSG','2238',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32022','NAD27 / Ohio North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13401','EPSG','2239',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32023','NAD27 / Ohio South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13402','EPSG','2240',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32024','NAD27 / Oklahoma North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13501','EPSG','2241',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32025','NAD27 / Oklahoma South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13502','EPSG','2242',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32026','NAD27 / Oregon North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13601','EPSG','2243',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32027','NAD27 / Oregon South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13602','EPSG','2244',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32028','NAD27 / Pennsylvania North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13701','EPSG','2245',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32029','NAD27 / Pennsylvania South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13702','EPSG','2246',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','32030','NAD27 / Rhode Island',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13800','EPSG','1408',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32031','NAD27 / South Carolina North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13901','EPSG','2247',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32033','NAD27 / South Carolina South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','13902','EPSG','2248',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32034','NAD27 / South Dakota North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14001','EPSG','2249',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32035','NAD27 / South Dakota South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14002','EPSG','2250',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32036','NAD27 / Tennessee',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14100','EPSG','1411',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','32037','NAD27 / Texas North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14201','EPSG','2253',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32038','NAD27 / Texas North Central',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14202','EPSG','2254',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32039','NAD27 / Texas Central',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14203','EPSG','2252',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32040','NAD27 / Texas South Central',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14204','EPSG','2256',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32041','NAD27 / Texas South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14205','EPSG','2255',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32042','NAD27 / Utah North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14301','EPSG','2258',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32043','NAD27 / Utah Central',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14302','EPSG','2257',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32044','NAD27 / Utah South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14303','EPSG','2259',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32045','NAD27 / Vermont',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14400','EPSG','1414',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32046','NAD27 / Virginia North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14501','EPSG','2260',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32047','NAD27 / Virginia South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14502','EPSG','2261',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32048','NAD27 / Washington North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14601','EPSG','2262',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32049','NAD27 / Washington South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14602','EPSG','2263',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32050','NAD27 / West Virginia North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14701','EPSG','2264',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32051','NAD27 / West Virginia South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14702','EPSG','2265',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32052','NAD27 / Wisconsin North',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14801','EPSG','2267',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32053','NAD27 / Wisconsin Central',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14802','EPSG','2266',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32054','NAD27 / Wisconsin South',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14803','EPSG','2268',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32055','NAD27 / Wyoming East',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14901','EPSG','2269',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32056','NAD27 / Wyoming East Central',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14902','EPSG','2270',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32057','NAD27 / Wyoming West Central',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14903','EPSG','2272',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32058','NAD27 / Wyoming West',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','14904','EPSG','2271',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32061','NAD27 / Guatemala Norte',NULL,NULL,'EPSG','4499','EPSG','4267','EPSG','18211','EPSG','2120',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','32062','NAD27 / Guatemala Sur',NULL,NULL,'EPSG','4499','EPSG','4267','EPSG','18212','EPSG','2121',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','32064','NAD27 / BLM 14N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15914','EPSG','3637',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32065','NAD27 / BLM 15N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15915','EPSG','3640',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32066','NAD27 / BLM 16N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15916','EPSG','3641',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32067','NAD27 / BLM 17N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15917','EPSG','3642',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32074','NAD27 / BLM 14N (feet)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15914','EPSG','2171',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','32075','NAD27 / BLM 15N (feet)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15915','EPSG','2172',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','32076','NAD27 / BLM 16N (feet)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15916','EPSG','2173',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','32077','NAD27 / BLM 17N (feet)',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','15917','EPSG','2174',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','32081','NAD27 / MTM zone 1',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','17701','EPSG','2226',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32082','NAD27 / MTM zone 2',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','17702','EPSG','2227',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32083','NAD27 / MTM zone 3',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','17703','EPSG','2275',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32084','NAD27 / MTM zone 4',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','17704','EPSG','3875',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32085','NAD27 / MTM zone 5',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','17705','EPSG','3865',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32086','NAD27 / MTM zone 6',NULL,NULL,'EPSG','4400','EPSG','4267','EPSG','17706','EPSG','3880',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32098','NAD27 / Quebec Lambert',NULL,NULL,'EPSG','4499','EPSG','4267','EPSG','19944','EPSG','1368',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32099','NAD27 / Louisiana Offshore',NULL,NULL,'EPSG','4497','EPSG','4267','EPSG','11703','EPSG','1387',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32100','NAD83 / Montana',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12530','EPSG','1395',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32104','NAD83 / Nebraska',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12630','EPSG','1396',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32107','NAD83 / Nevada East',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12731','EPSG','2224',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32108','NAD83 / Nevada Central',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12732','EPSG','2223',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32109','NAD83 / Nevada West',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12733','EPSG','2225',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32110','NAD83 / New Hampshire',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12830','EPSG','1398',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32111','NAD83 / New Jersey',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','12930','EPSG','1399',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32112','NAD83 / New Mexico East',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13031','EPSG','2228',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32113','NAD83 / New Mexico Central',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13032','EPSG','2231',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32114','NAD83 / New Mexico West',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13033','EPSG','2232',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32115','NAD83 / New York East',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13131','EPSG','2234',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32116','NAD83 / New York Central',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13132','EPSG','2233',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32117','NAD83 / New York West',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13133','EPSG','2236',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32118','NAD83 / New York Long Island',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13134','EPSG','2235',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32119','NAD83 / North Carolina',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13230','EPSG','1402',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32120','NAD83 / North Dakota North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13331','EPSG','2237',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32121','NAD83 / North Dakota South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13332','EPSG','2238',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32122','NAD83 / Ohio North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13431','EPSG','2239',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32123','NAD83 / Ohio South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13432','EPSG','2240',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32124','NAD83 / Oklahoma North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13531','EPSG','2241',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32125','NAD83 / Oklahoma South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13532','EPSG','2242',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32126','NAD83 / Oregon North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13631','EPSG','2243',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32127','NAD83 / Oregon South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13632','EPSG','2244',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32128','NAD83 / Pennsylvania North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13731','EPSG','2245',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32129','NAD83 / Pennsylvania South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13732','EPSG','2246',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32130','NAD83 / Rhode Island',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13830','EPSG','1408',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32133','NAD83 / South Carolina',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','13930','EPSG','1409',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32134','NAD83 / South Dakota North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14031','EPSG','2249',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32135','NAD83 / South Dakota South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14032','EPSG','2250',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32136','NAD83 / Tennessee',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14130','EPSG','1411',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32137','NAD83 / Texas North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14231','EPSG','2253',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32138','NAD83 / Texas North Central',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14232','EPSG','2254',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32139','NAD83 / Texas Central',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14233','EPSG','2252',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32140','NAD83 / Texas South Central',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14234','EPSG','2527',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32141','NAD83 / Texas South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14235','EPSG','2528',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32142','NAD83 / Utah North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14331','EPSG','2258',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32143','NAD83 / Utah Central',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14332','EPSG','2257',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32144','NAD83 / Utah South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14333','EPSG','2259',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32145','NAD83 / Vermont',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14430','EPSG','1414',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32146','NAD83 / Virginia North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14531','EPSG','2260',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32147','NAD83 / Virginia South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14532','EPSG','2261',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32148','NAD83 / Washington North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14631','EPSG','2273',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32149','NAD83 / Washington South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14632','EPSG','2274',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32150','NAD83 / West Virginia North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14731','EPSG','2264',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32151','NAD83 / West Virginia South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14732','EPSG','2265',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32152','NAD83 / Wisconsin North',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14831','EPSG','2267',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32153','NAD83 / Wisconsin Central',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14832','EPSG','2266',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32154','NAD83 / Wisconsin South',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14833','EPSG','2268',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32155','NAD83 / Wyoming East',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14931','EPSG','2269',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32156','NAD83 / Wyoming East Central',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14932','EPSG','2270',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32157','NAD83 / Wyoming West Central',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14933','EPSG','2272',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32158','NAD83 / Wyoming West',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','14934','EPSG','2271',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32161','NAD83 / Puerto Rico & Virgin Is.',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','15230','EPSG','2251',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32164','NAD83 / BLM 14N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15914','EPSG','3637',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32165','NAD83 / BLM 15N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15915','EPSG','3640',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32166','NAD83 / BLM 16N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15916','EPSG','3641',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32167','NAD83 / BLM 17N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4269','EPSG','15917','EPSG','3642',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32180','NAD83 / SCoPQ zone 2',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','17700','EPSG','1420',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','32181','NAD83 / MTM zone 1',NULL,NULL,'EPSG','4496','EPSG','4269','EPSG','17701','EPSG','2226',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32182','NAD83 / MTM zone 2',NULL,NULL,'EPSG','4496','EPSG','4269','EPSG','17702','EPSG','2227',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32183','NAD83 / MTM zone 3',NULL,NULL,'EPSG','4496','EPSG','4269','EPSG','17703','EPSG','2290',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32184','NAD83 / MTM zone 4',NULL,NULL,'EPSG','4496','EPSG','4269','EPSG','17704','EPSG','2276',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32185','NAD83 / MTM zone 5',NULL,NULL,'EPSG','4496','EPSG','4269','EPSG','17705','EPSG','2277',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32186','NAD83 / MTM zone 6',NULL,NULL,'EPSG','4496','EPSG','4269','EPSG','17706','EPSG','2278',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32187','NAD83 / MTM zone 7',NULL,NULL,'EPSG','4496','EPSG','4269','EPSG','17707','EPSG','1425',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32188','NAD83 / MTM zone 8',NULL,NULL,'EPSG','4496','EPSG','4269','EPSG','17708','EPSG','2279',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32189','NAD83 / MTM zone 9',NULL,NULL,'EPSG','4496','EPSG','4269','EPSG','17709','EPSG','2280',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32190','NAD83 / MTM zone 10',NULL,NULL,'EPSG','4496','EPSG','4269','EPSG','17710','EPSG','2281',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32191','NAD83 / MTM zone 11',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','17711','EPSG','1432',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32192','NAD83 / MTM zone 12',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','17712','EPSG','1433',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32193','NAD83 / MTM zone 13',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','17713','EPSG','1434',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32194','NAD83 / MTM zone 14',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','17714','EPSG','1435',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32195','NAD83 / MTM zone 15',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','17715','EPSG','1436',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32196','NAD83 / MTM zone 16',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','17716','EPSG','1437',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32197','NAD83 / MTM zone 17',NULL,NULL,'EPSG','4400','EPSG','4269','EPSG','17717','EPSG','1438',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32198','NAD83 / Quebec Lambert',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','19944','EPSG','1368',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32199','NAD83 / Louisiana Offshore',NULL,NULL,'EPSG','4499','EPSG','4269','EPSG','11733','EPSG','1387',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32201','WGS 72 / UTM zone 1N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16001','EPSG','1873',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32202','WGS 72 / UTM zone 2N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16002','EPSG','1875',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32203','WGS 72 / UTM zone 3N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16003','EPSG','1877',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32204','WGS 72 / UTM zone 4N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16004','EPSG','1879',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32205','WGS 72 / UTM zone 5N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16005','EPSG','1881',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32206','WGS 72 / UTM zone 6N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16006','EPSG','1883',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32207','WGS 72 / UTM zone 7N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16007','EPSG','1885',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32208','WGS 72 / UTM zone 8N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16008','EPSG','1887',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32209','WGS 72 / UTM zone 9N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16009','EPSG','1889',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32210','WGS 72 / UTM zone 10N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16010','EPSG','1891',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32211','WGS 72 / UTM zone 11N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16011','EPSG','1893',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32212','WGS 72 / UTM zone 12N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16012','EPSG','1895',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32213','WGS 72 / UTM zone 13N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16013','EPSG','1897',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32214','WGS 72 / UTM zone 14N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16014','EPSG','1899',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32215','WGS 72 / UTM zone 15N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16015','EPSG','1901',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32216','WGS 72 / UTM zone 16N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16016','EPSG','1903',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32217','WGS 72 / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16017','EPSG','1905',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32218','WGS 72 / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16018','EPSG','1907',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32219','WGS 72 / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16019','EPSG','1909',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32220','WGS 72 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16020','EPSG','1911',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32221','WGS 72 / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16021','EPSG','1913',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32222','WGS 72 / UTM zone 22N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16022','EPSG','1915',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32223','WGS 72 / UTM zone 23N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16023','EPSG','1917',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32224','WGS 72 / UTM zone 24N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16024','EPSG','1919',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32225','WGS 72 / UTM zone 25N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16025','EPSG','1921',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32226','WGS 72 / UTM zone 26N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16026','EPSG','1923',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32227','WGS 72 / UTM zone 27N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16027','EPSG','1925',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32228','WGS 72 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16028','EPSG','1927',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32229','WGS 72 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16029','EPSG','1929',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32230','WGS 72 / UTM zone 30N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16030','EPSG','1931',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32231','WGS 72 / UTM zone 31N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16031','EPSG','1933',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32232','WGS 72 / UTM zone 32N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16032','EPSG','1935',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32233','WGS 72 / UTM zone 33N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16033','EPSG','1937',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32234','WGS 72 / UTM zone 34N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16034','EPSG','1939',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32235','WGS 72 / UTM zone 35N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16035','EPSG','1941',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32236','WGS 72 / UTM zone 36N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16036','EPSG','1943',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32237','WGS 72 / UTM zone 37N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16037','EPSG','1945',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32238','WGS 72 / UTM zone 38N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16038','EPSG','1947',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32239','WGS 72 / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16039','EPSG','1949',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32240','WGS 72 / UTM zone 40N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16040','EPSG','1951',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32241','WGS 72 / UTM zone 41N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16041','EPSG','1953',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32242','WGS 72 / UTM zone 42N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16042','EPSG','1955',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32243','WGS 72 / UTM zone 43N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16043','EPSG','1957',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32244','WGS 72 / UTM zone 44N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16044','EPSG','1959',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32245','WGS 72 / UTM zone 45N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16045','EPSG','1961',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32246','WGS 72 / UTM zone 46N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16046','EPSG','1963',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32247','WGS 72 / UTM zone 47N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16047','EPSG','1965',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32248','WGS 72 / UTM zone 48N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16048','EPSG','1967',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32249','WGS 72 / UTM zone 49N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16049','EPSG','1969',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32250','WGS 72 / UTM zone 50N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16050','EPSG','1971',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32251','WGS 72 / UTM zone 51N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16051','EPSG','1973',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32252','WGS 72 / UTM zone 52N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16052','EPSG','1975',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32253','WGS 72 / UTM zone 53N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16053','EPSG','1977',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32254','WGS 72 / UTM zone 54N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16054','EPSG','1979',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32255','WGS 72 / UTM zone 55N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16055','EPSG','1981',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32256','WGS 72 / UTM zone 56N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16056','EPSG','1983',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32257','WGS 72 / UTM zone 57N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16057','EPSG','1985',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32258','WGS 72 / UTM zone 58N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16058','EPSG','1987',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32259','WGS 72 / UTM zone 59N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16059','EPSG','1989',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32260','WGS 72 / UTM zone 60N',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16060','EPSG','1991',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32301','WGS 72 / UTM zone 1S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16101','EPSG','1874',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32302','WGS 72 / UTM zone 2S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16102','EPSG','1876',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32303','WGS 72 / UTM zone 3S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16103','EPSG','1878',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32304','WGS 72 / UTM zone 4S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16104','EPSG','1880',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32305','WGS 72 / UTM zone 5S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16105','EPSG','1882',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32306','WGS 72 / UTM zone 6S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16106','EPSG','1884',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32307','WGS 72 / UTM zone 7S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16107','EPSG','1886',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32308','WGS 72 / UTM zone 8S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16108','EPSG','1888',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32309','WGS 72 / UTM zone 9S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16109','EPSG','1890',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32310','WGS 72 / UTM zone 10S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16110','EPSG','1892',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32311','WGS 72 / UTM zone 11S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16111','EPSG','1894',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32312','WGS 72 / UTM zone 12S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16112','EPSG','1896',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32313','WGS 72 / UTM zone 13S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16113','EPSG','1898',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32314','WGS 72 / UTM zone 14S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16114','EPSG','1900',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32315','WGS 72 / UTM zone 15S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16115','EPSG','1902',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32316','WGS 72 / UTM zone 16S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16116','EPSG','1904',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32317','WGS 72 / UTM zone 17S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16117','EPSG','1906',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32318','WGS 72 / UTM zone 18S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16118','EPSG','1908',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32319','WGS 72 / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16119','EPSG','1910',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32320','WGS 72 / UTM zone 20S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16120','EPSG','1912',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32321','WGS 72 / UTM zone 21S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16121','EPSG','1914',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32322','WGS 72 / UTM zone 22S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16122','EPSG','1916',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32323','WGS 72 / UTM zone 23S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16123','EPSG','1918',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32324','WGS 72 / UTM zone 24S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16124','EPSG','1920',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32325','WGS 72 / UTM zone 25S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16125','EPSG','1922',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32326','WGS 72 / UTM zone 26S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16126','EPSG','1924',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32327','WGS 72 / UTM zone 27S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16127','EPSG','1926',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32328','WGS 72 / UTM zone 28S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16128','EPSG','1928',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32329','WGS 72 / UTM zone 29S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16129','EPSG','1930',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32330','WGS 72 / UTM zone 30S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16130','EPSG','1932',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32331','WGS 72 / UTM zone 31S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16131','EPSG','1934',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32332','WGS 72 / UTM zone 32S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16132','EPSG','1936',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32333','WGS 72 / UTM zone 33S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16133','EPSG','1938',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32334','WGS 72 / UTM zone 34S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16134','EPSG','1940',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32335','WGS 72 / UTM zone 35S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16135','EPSG','1942',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32336','WGS 72 / UTM zone 36S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16136','EPSG','1944',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32337','WGS 72 / UTM zone 37S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16137','EPSG','1946',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32338','WGS 72 / UTM zone 38S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16138','EPSG','1948',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32339','WGS 72 / UTM zone 39S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16139','EPSG','1950',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32340','WGS 72 / UTM zone 40S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16140','EPSG','1952',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32341','WGS 72 / UTM zone 41S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16141','EPSG','1954',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32342','WGS 72 / UTM zone 42S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16142','EPSG','1956',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32343','WGS 72 / UTM zone 43S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16143','EPSG','1958',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32344','WGS 72 / UTM zone 44S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16144','EPSG','1960',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32345','WGS 72 / UTM zone 45S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16145','EPSG','1962',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32346','WGS 72 / UTM zone 46S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16146','EPSG','1964',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32347','WGS 72 / UTM zone 47S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16147','EPSG','1966',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32348','WGS 72 / UTM zone 48S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16148','EPSG','1968',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32349','WGS 72 / UTM zone 49S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16149','EPSG','1970',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32350','WGS 72 / UTM zone 50S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16150','EPSG','1972',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32351','WGS 72 / UTM zone 51S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16151','EPSG','1974',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32352','WGS 72 / UTM zone 52S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16152','EPSG','1976',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32353','WGS 72 / UTM zone 53S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16153','EPSG','1978',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32354','WGS 72 / UTM zone 54S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16154','EPSG','1980',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32355','WGS 72 / UTM zone 55S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16155','EPSG','1982',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32356','WGS 72 / UTM zone 56S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16156','EPSG','1984',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32357','WGS 72 / UTM zone 57S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16157','EPSG','1986',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32358','WGS 72 / UTM zone 58S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16158','EPSG','1988',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32359','WGS 72 / UTM zone 59S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16159','EPSG','1990',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32360','WGS 72 / UTM zone 60S',NULL,NULL,'EPSG','4400','EPSG','4322','EPSG','16160','EPSG','1992',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32401','WGS 72BE / UTM zone 1N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16001','EPSG','1873',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32402','WGS 72BE / UTM zone 2N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16002','EPSG','1876',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32403','WGS 72BE / UTM zone 3N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16003','EPSG','1877',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32404','WGS 72BE / UTM zone 4N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16004','EPSG','1879',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32405','WGS 72BE / UTM zone 5N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16005','EPSG','1881',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32406','WGS 72BE / UTM zone 6N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16006','EPSG','1883',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32407','WGS 72BE / UTM zone 7N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16007','EPSG','1885',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32408','WGS 72BE / UTM zone 8N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16008','EPSG','1887',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32409','WGS 72BE / UTM zone 9N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16009','EPSG','1889',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32410','WGS 72BE / UTM zone 10N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16010','EPSG','1891',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32411','WGS 72BE / UTM zone 11N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16011','EPSG','1893',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32412','WGS 72BE / UTM zone 12N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16012','EPSG','1895',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32413','WGS 72BE / UTM zone 13N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16013','EPSG','1897',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32414','WGS 72BE / UTM zone 14N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16014','EPSG','1899',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32415','WGS 72BE / UTM zone 15N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16015','EPSG','1901',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32416','WGS 72BE / UTM zone 16N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16016','EPSG','1903',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32417','WGS 72BE / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16017','EPSG','1905',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32418','WGS 72BE / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16018','EPSG','1907',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32419','WGS 72BE / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16019','EPSG','1909',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32420','WGS 72BE / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16020','EPSG','1911',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32421','WGS 72BE / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16021','EPSG','1913',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32422','WGS 72BE / UTM zone 22N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16022','EPSG','1915',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32423','WGS 72BE / UTM zone 23N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16023','EPSG','1917',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32424','WGS 72BE / UTM zone 24N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16024','EPSG','1919',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32425','WGS 72BE / UTM zone 25N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16025','EPSG','1921',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32426','WGS 72BE / UTM zone 26N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16026','EPSG','1923',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32427','WGS 72BE / UTM zone 27N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16027','EPSG','1925',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32428','WGS 72BE / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16028','EPSG','1927',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32429','WGS 72BE / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16029','EPSG','1929',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32430','WGS 72BE / UTM zone 30N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16030','EPSG','1931',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32431','WGS 72BE / UTM zone 31N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16031','EPSG','1933',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32432','WGS 72BE / UTM zone 32N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16032','EPSG','1935',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32433','WGS 72BE / UTM zone 33N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16033','EPSG','3464',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32434','WGS 72BE / UTM zone 34N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16034','EPSG','3465',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32435','WGS 72BE / UTM zone 35N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16035','EPSG','1941',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32436','WGS 72BE / UTM zone 36N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16036','EPSG','1943',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32437','WGS 72BE / UTM zone 37N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16037','EPSG','1945',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32438','WGS 72BE / UTM zone 38N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16038','EPSG','1947',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32439','WGS 72BE / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16039','EPSG','1949',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32440','WGS 72BE / UTM zone 40N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16040','EPSG','1951',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32441','WGS 72BE / UTM zone 41N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16041','EPSG','1953',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32442','WGS 72BE / UTM zone 42N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16042','EPSG','1955',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32443','WGS 72BE / UTM zone 43N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16043','EPSG','1957',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32444','WGS 72BE / UTM zone 44N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16044','EPSG','1959',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32445','WGS 72BE / UTM zone 45N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16045','EPSG','1961',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32446','WGS 72BE / UTM zone 46N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16046','EPSG','1963',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32447','WGS 72BE / UTM zone 47N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16047','EPSG','1965',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32448','WGS 72BE / UTM zone 48N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16048','EPSG','1993',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32449','WGS 72BE / UTM zone 49N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16049','EPSG','1994',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32450','WGS 72BE / UTM zone 50N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16050','EPSG','1971',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32451','WGS 72BE / UTM zone 51N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16051','EPSG','1973',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32452','WGS 72BE / UTM zone 52N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16052','EPSG','1975',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32453','WGS 72BE / UTM zone 53N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16053','EPSG','1977',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32454','WGS 72BE / UTM zone 54N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16054','EPSG','1979',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32455','WGS 72BE / UTM zone 55N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16055','EPSG','1981',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32456','WGS 72BE / UTM zone 56N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16056','EPSG','1983',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32457','WGS 72BE / UTM zone 57N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16057','EPSG','1985',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32458','WGS 72BE / UTM zone 58N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16058','EPSG','1987',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32459','WGS 72BE / UTM zone 59N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16059','EPSG','1989',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32460','WGS 72BE / UTM zone 60N',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16060','EPSG','1991',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32501','WGS 72BE / UTM zone 1S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16101','EPSG','1874',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32502','WGS 72BE / UTM zone 2S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16102','EPSG','1876',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32503','WGS 72BE / UTM zone 3S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16103','EPSG','1878',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32504','WGS 72BE / UTM zone 4S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16104','EPSG','1880',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32505','WGS 72BE / UTM zone 5S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16105','EPSG','1882',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32506','WGS 72BE / UTM zone 6S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16106','EPSG','1884',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32507','WGS 72BE / UTM zone 7S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16107','EPSG','1886',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32508','WGS 72BE / UTM zone 8S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16108','EPSG','1888',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32509','WGS 72BE / UTM zone 9S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16109','EPSG','1890',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32510','WGS 72BE / UTM zone 10S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16110','EPSG','1892',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32511','WGS 72BE / UTM zone 11S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16111','EPSG','1894',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32512','WGS 72BE / UTM zone 12S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16112','EPSG','1896',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32513','WGS 72BE / UTM zone 13S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16113','EPSG','1898',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32514','WGS 72BE / UTM zone 14S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16114','EPSG','1900',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32515','WGS 72BE / UTM zone 15S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16115','EPSG','1902',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32516','WGS 72BE / UTM zone 16S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16116','EPSG','1904',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32517','WGS 72BE / UTM zone 17S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16117','EPSG','1906',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32518','WGS 72BE / UTM zone 18S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16118','EPSG','1908',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32519','WGS 72BE / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16119','EPSG','1910',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32520','WGS 72BE / UTM zone 20S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16120','EPSG','1912',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32521','WGS 72BE / UTM zone 21S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16121','EPSG','1914',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32522','WGS 72BE / UTM zone 22S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16122','EPSG','1916',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32523','WGS 72BE / UTM zone 23S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16123','EPSG','1918',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32524','WGS 72BE / UTM zone 24S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16124','EPSG','1920',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32525','WGS 72BE / UTM zone 25S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16125','EPSG','1922',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32526','WGS 72BE / UTM zone 26S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16126','EPSG','1924',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32527','WGS 72BE / UTM zone 27S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16127','EPSG','1926',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32528','WGS 72BE / UTM zone 28S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16128','EPSG','1928',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32529','WGS 72BE / UTM zone 29S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16129','EPSG','1930',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32530','WGS 72BE / UTM zone 30S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16130','EPSG','1932',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32531','WGS 72BE / UTM zone 31S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16131','EPSG','1934',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32532','WGS 72BE / UTM zone 32S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16132','EPSG','1936',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32533','WGS 72BE / UTM zone 33S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16133','EPSG','1938',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32534','WGS 72BE / UTM zone 34S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16134','EPSG','1940',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32535','WGS 72BE / UTM zone 35S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16135','EPSG','1942',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32536','WGS 72BE / UTM zone 36S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16136','EPSG','1944',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32537','WGS 72BE / UTM zone 37S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16137','EPSG','1946',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32538','WGS 72BE / UTM zone 38S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16138','EPSG','1948',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32539','WGS 72BE / UTM zone 39S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16139','EPSG','1950',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32540','WGS 72BE / UTM zone 40S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16140','EPSG','1952',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32541','WGS 72BE / UTM zone 41S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16141','EPSG','1954',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32542','WGS 72BE / UTM zone 42S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16142','EPSG','1956',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32543','WGS 72BE / UTM zone 43S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16143','EPSG','1958',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32544','WGS 72BE / UTM zone 44S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16144','EPSG','1960',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32545','WGS 72BE / UTM zone 45S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16145','EPSG','1962',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32546','WGS 72BE / UTM zone 46S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16146','EPSG','1964',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32547','WGS 72BE / UTM zone 47S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16147','EPSG','1966',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32548','WGS 72BE / UTM zone 48S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16148','EPSG','1968',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32549','WGS 72BE / UTM zone 49S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16149','EPSG','1995',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32550','WGS 72BE / UTM zone 50S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16150','EPSG','1972',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32551','WGS 72BE / UTM zone 51S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16151','EPSG','1974',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32552','WGS 72BE / UTM zone 52S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16152','EPSG','1976',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32553','WGS 72BE / UTM zone 53S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16153','EPSG','1978',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32554','WGS 72BE / UTM zone 54S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16154','EPSG','1980',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32555','WGS 72BE / UTM zone 55S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16155','EPSG','1982',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32556','WGS 72BE / UTM zone 56S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16156','EPSG','1984',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32557','WGS 72BE / UTM zone 57S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16157','EPSG','1986',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32558','WGS 72BE / UTM zone 58S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16158','EPSG','1988',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32559','WGS 72BE / UTM zone 59S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16159','EPSG','1990',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32560','WGS 72BE / UTM zone 60S',NULL,NULL,'EPSG','4400','EPSG','4324','EPSG','16160','EPSG','1992',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32600','WGS 84 / UTM grid system (northern hemisphere)',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16000','EPSG','1998',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32601','WGS 84 / UTM zone 1N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16001','EPSG','2000',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32602','WGS 84 / UTM zone 2N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16002','EPSG','2002',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32603','WGS 84 / UTM zone 3N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16003','EPSG','2004',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32604','WGS 84 / UTM zone 4N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16004','EPSG','2006',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32605','WGS 84 / UTM zone 5N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16005','EPSG','2008',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32606','WGS 84 / UTM zone 6N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16006','EPSG','2010',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32607','WGS 84 / UTM zone 7N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16007','EPSG','2012',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32608','WGS 84 / UTM zone 8N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16008','EPSG','2014',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32609','WGS 84 / UTM zone 9N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16009','EPSG','2016',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32610','WGS 84 / UTM zone 10N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16010','EPSG','2018',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32611','WGS 84 / UTM zone 11N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16011','EPSG','2020',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32612','WGS 84 / UTM zone 12N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16012','EPSG','2022',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32613','WGS 84 / UTM zone 13N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16013','EPSG','2024',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32614','WGS 84 / UTM zone 14N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16014','EPSG','2026',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32615','WGS 84 / UTM zone 15N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16015','EPSG','2028',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32616','WGS 84 / UTM zone 16N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16016','EPSG','2030',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32617','WGS 84 / UTM zone 17N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16017','EPSG','2032',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32618','WGS 84 / UTM zone 18N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16018','EPSG','2034',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32619','WGS 84 / UTM zone 19N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16019','EPSG','2036',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32620','WGS 84 / UTM zone 20N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16020','EPSG','2038',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32621','WGS 84 / UTM zone 21N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16021','EPSG','2040',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32622','WGS 84 / UTM zone 22N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16022','EPSG','2042',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32623','WGS 84 / UTM zone 23N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16023','EPSG','2044',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32624','WGS 84 / UTM zone 24N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16024','EPSG','2046',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32625','WGS 84 / UTM zone 25N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16025','EPSG','2048',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32626','WGS 84 / UTM zone 26N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16026','EPSG','2050',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32627','WGS 84 / UTM zone 27N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16027','EPSG','2052',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32628','WGS 84 / UTM zone 28N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16028','EPSG','2054',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32629','WGS 84 / UTM zone 29N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16029','EPSG','2056',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32630','WGS 84 / UTM zone 30N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16030','EPSG','2058',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32631','WGS 84 / UTM zone 31N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16031','EPSG','2060',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32632','WGS 84 / UTM zone 32N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16032','EPSG','2062',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32633','WGS 84 / UTM zone 33N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16033','EPSG','2064',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32634','WGS 84 / UTM zone 34N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16034','EPSG','2066',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32635','WGS 84 / UTM zone 35N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16035','EPSG','2068',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32636','WGS 84 / UTM zone 36N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16036','EPSG','2070',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32637','WGS 84 / UTM zone 37N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16037','EPSG','2072',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32638','WGS 84 / UTM zone 38N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16038','EPSG','2074',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32639','WGS 84 / UTM zone 39N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16039','EPSG','2076',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32640','WGS 84 / UTM zone 40N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16040','EPSG','2078',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32641','WGS 84 / UTM zone 41N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16041','EPSG','2080',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32642','WGS 84 / UTM zone 42N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16042','EPSG','2082',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32643','WGS 84 / UTM zone 43N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16043','EPSG','2084',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32644','WGS 84 / UTM zone 44N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16044','EPSG','2086',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32645','WGS 84 / UTM zone 45N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16045','EPSG','2088',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32646','WGS 84 / UTM zone 46N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16046','EPSG','2090',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32647','WGS 84 / UTM zone 47N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16047','EPSG','2092',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32648','WGS 84 / UTM zone 48N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16048','EPSG','2094',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32649','WGS 84 / UTM zone 49N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16049','EPSG','2096',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32650','WGS 84 / UTM zone 50N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16050','EPSG','2098',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32651','WGS 84 / UTM zone 51N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16051','EPSG','2100',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32652','WGS 84 / UTM zone 52N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16052','EPSG','2102',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32653','WGS 84 / UTM zone 53N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16053','EPSG','2104',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32654','WGS 84 / UTM zone 54N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16054','EPSG','2106',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32655','WGS 84 / UTM zone 55N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16055','EPSG','2108',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32656','WGS 84 / UTM zone 56N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16056','EPSG','2110',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32657','WGS 84 / UTM zone 57N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16057','EPSG','2112',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32658','WGS 84 / UTM zone 58N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16058','EPSG','2114',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32659','WGS 84 / UTM zone 59N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16059','EPSG','2116',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32660','WGS 84 / UTM zone 60N',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16060','EPSG','2118',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32661','WGS 84 / UPS North (N,E)',NULL,NULL,'EPSG','4493','EPSG','4326','EPSG','16061','EPSG','1996',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32662','WGS 84 / Plate Carree',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','19968','EPSG','1262',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','32663','WGS 84 / World Equidistant Cylindrical',NULL,NULL,'EPSG','4499','EPSG','4326','EPSG','19846','EPSG','1262',NULL,1); +INSERT INTO "projected_crs" VALUES('EPSG','32664','WGS 84 / BLM 14N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4326','EPSG','15914','EPSG','2171',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32665','WGS 84 / BLM 15N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4326','EPSG','15915','EPSG','2172',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32666','WGS 84 / BLM 16N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4326','EPSG','15916','EPSG','2173',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32667','WGS 84 / BLM 17N (ftUS)',NULL,NULL,'EPSG','4497','EPSG','4326','EPSG','15917','EPSG','2174',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32700','WGS 84 / UTM grid system (southern hemisphere)',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16100','EPSG','1999',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32701','WGS 84 / UTM zone 1S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16101','EPSG','2001',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32702','WGS 84 / UTM zone 2S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16102','EPSG','2003',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32703','WGS 84 / UTM zone 3S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16103','EPSG','2005',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32704','WGS 84 / UTM zone 4S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16104','EPSG','2007',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32705','WGS 84 / UTM zone 5S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16105','EPSG','2009',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32706','WGS 84 / UTM zone 6S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16106','EPSG','2011',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32707','WGS 84 / UTM zone 7S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16107','EPSG','2013',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32708','WGS 84 / UTM zone 8S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16108','EPSG','2015',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32709','WGS 84 / UTM zone 9S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16109','EPSG','2017',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32710','WGS 84 / UTM zone 10S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16110','EPSG','2019',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32711','WGS 84 / UTM zone 11S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16111','EPSG','2021',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32712','WGS 84 / UTM zone 12S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16112','EPSG','2023',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32713','WGS 84 / UTM zone 13S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16113','EPSG','2025',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32714','WGS 84 / UTM zone 14S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16114','EPSG','2027',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32715','WGS 84 / UTM zone 15S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16115','EPSG','2029',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32716','WGS 84 / UTM zone 16S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16116','EPSG','2031',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32717','WGS 84 / UTM zone 17S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16117','EPSG','2033',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32718','WGS 84 / UTM zone 18S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16118','EPSG','2035',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32719','WGS 84 / UTM zone 19S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16119','EPSG','2037',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32720','WGS 84 / UTM zone 20S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16120','EPSG','2039',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32721','WGS 84 / UTM zone 21S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16121','EPSG','2041',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32722','WGS 84 / UTM zone 22S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16122','EPSG','2043',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32723','WGS 84 / UTM zone 23S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16123','EPSG','2045',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32724','WGS 84 / UTM zone 24S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16124','EPSG','2047',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32725','WGS 84 / UTM zone 25S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16125','EPSG','2049',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32726','WGS 84 / UTM zone 26S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16126','EPSG','2051',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32727','WGS 84 / UTM zone 27S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16127','EPSG','2053',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32728','WGS 84 / UTM zone 28S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16128','EPSG','2055',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32729','WGS 84 / UTM zone 29S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16129','EPSG','2057',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32730','WGS 84 / UTM zone 30S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16130','EPSG','2059',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32731','WGS 84 / UTM zone 31S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16131','EPSG','2061',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32732','WGS 84 / UTM zone 32S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16132','EPSG','2063',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32733','WGS 84 / UTM zone 33S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16133','EPSG','2065',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32734','WGS 84 / UTM zone 34S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16134','EPSG','2067',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32735','WGS 84 / UTM zone 35S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16135','EPSG','2069',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32736','WGS 84 / UTM zone 36S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16136','EPSG','2071',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32737','WGS 84 / UTM zone 37S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16137','EPSG','2073',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32738','WGS 84 / UTM zone 38S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16138','EPSG','2075',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32739','WGS 84 / UTM zone 39S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16139','EPSG','2077',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32740','WGS 84 / UTM zone 40S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16140','EPSG','2079',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32741','WGS 84 / UTM zone 41S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16141','EPSG','2081',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32742','WGS 84 / UTM zone 42S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16142','EPSG','2083',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32743','WGS 84 / UTM zone 43S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16143','EPSG','2085',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32744','WGS 84 / UTM zone 44S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16144','EPSG','2087',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32745','WGS 84 / UTM zone 45S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16145','EPSG','2089',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32746','WGS 84 / UTM zone 46S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16146','EPSG','2091',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32747','WGS 84 / UTM zone 47S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16147','EPSG','2093',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32748','WGS 84 / UTM zone 48S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16148','EPSG','2095',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32749','WGS 84 / UTM zone 49S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16149','EPSG','2097',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32750','WGS 84 / UTM zone 50S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16150','EPSG','2099',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32751','WGS 84 / UTM zone 51S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16151','EPSG','2101',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32752','WGS 84 / UTM zone 52S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16152','EPSG','2103',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32753','WGS 84 / UTM zone 53S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16153','EPSG','2105',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32754','WGS 84 / UTM zone 54S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16154','EPSG','2107',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32755','WGS 84 / UTM zone 55S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16155','EPSG','2109',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32756','WGS 84 / UTM zone 56S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16156','EPSG','2111',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32757','WGS 84 / UTM zone 57S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16157','EPSG','2113',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32758','WGS 84 / UTM zone 58S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16158','EPSG','2115',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32759','WGS 84 / UTM zone 59S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16159','EPSG','2117',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32760','WGS 84 / UTM zone 60S',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16160','EPSG','2119',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32761','WGS 84 / UPS South (N,E)',NULL,NULL,'EPSG','4494','EPSG','4326','EPSG','16161','EPSG','1997',NULL,0); +INSERT INTO "projected_crs" VALUES('EPSG','32766','WGS 84 / TM 36 SE',NULL,NULL,'EPSG','4400','EPSG','4326','EPSG','16636','EPSG','1726',NULL,0); diff --git a/data/sql/unit_of_measure.sql b/data/sql/unit_of_measure.sql new file mode 100644 index 00000000..a3011c94 --- /dev/null +++ b/data/sql/unit_of_measure.sql @@ -0,0 +1,97 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +INSERT INTO "unit_of_measure" VALUES('EPSG','1024','bin','scale',1.0,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','1025','millimetre','length',0.001,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','1026','metre per second','length',1.0,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','1027','millimetres per year','length',3.16887651727314875889e-11,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','1028','parts per billion','scale',1.0e-09,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','1029','year','time',31556925.445,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','1030','parts per billion per year','scale',3.16887651727314834646e-17,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','1031','milliarc-second','angle',4.84813681109535528357e-09,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','1032','milliarc-seconds per year','angle',1.53631468932075975278e-16,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','1033','centimetre','length',0.01,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','1034','centimetres per year','length',3.1688765172731483714e-10,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','1035','radian per second','angle',1.0,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','1036','unity per second','scale',1.0,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','1040','second','time',1.0,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','1041','parts per million per year','scale',3.1688765172731486173e-14,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','1042','metres per year','length',3.16887651727314861947e-08,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','1043','arc-seconds per year','angle',1.53631468932075975646e-13,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9001','metre','length',1.0,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9002','foot','length',0.3048,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9003','US survey foot','length',3.04800609601219241184e-01,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9005','Clarke''s foot','length',0.3047972654,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9014','fathom','length',1.8288,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9030','nautical mile','length',1852.0,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9031','German legal metre','length',1.0000135965,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9033','US survey chain','length',2.01168402336804703618e+01,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9034','US survey link','length',2.0116840233680469141e-01,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9035','US survey mile','length',1.60934721869443751532e+03,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9036','kilometre','length',1000.0,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9037','Clarke''s yard','length',0.9143917962,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9038','Clarke''s chain','length',20.1166195164,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9039','Clarke''s link','length',0.201166195164,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9040','British yard (Sears 1922)','length',9.14398414616028665236e-01,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9041','British foot (Sears 1922)','length',3.04799471538676203241e-01,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9042','British chain (Sears 1922)','length',2.01167651215526319683e+01,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9043','British link (Sears 1922)','length',2.01167651215526294139e-01,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9050','British yard (Benoit 1895 A)','length',0.9143992,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9051','British foot (Benoit 1895 A)','length',3.04799733333333322526e-01,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9052','British chain (Benoit 1895 A)','length',20.1167824,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9053','British link (Benoit 1895 A)','length',0.201167824,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9060','British yard (Benoit 1895 B)','length',9.14399204289812361778e-01,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9061','British foot (Benoit 1895 B)','length',3.04799734763270768755e-01,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9062','British chain (Benoit 1895 B)','length',2.01167824943758724023e+01,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9063','British link (Benoit 1895 B)','length',2.01167824943758705158e-01,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9070','British foot (1865)','length',3.04800833333333354158e-01,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9080','Indian foot','length',3.04799510248146943158e-01,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9081','Indian foot (1937)','length',0.30479841,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9082','Indian foot (1962)','length',0.3047996,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9083','Indian foot (1975)','length',0.3047995,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9084','Indian yard','length',9.14398530744440773965e-01,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9085','Indian yard (1937)','length',0.91439523,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9086','Indian yard (1962)','length',0.9143988,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9087','Indian yard (1975)','length',0.9143985,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9093','Statute mile','length',1609.344,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9094','Gold Coast foot','length',3.04799710181508809458e-01,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9095','British foot (1936)','length',0.3048007491,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9096','yard','length',0.9144,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9097','chain','length',20.1168,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9098','link','length',0.201168,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9099','British yard (Sears 1922 truncated)','length',0.914398,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9101','radian','angle',1.0,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9102','degree','angle',1.74532925199432781271e-02,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9103','arc-minute','angle',2.90888208665721309346e-04,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9104','arc-second','angle',4.84813681109535476055e-06,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9105','grad','angle',1.57079632679489496205e-02,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9106','gon','angle',1.57079632679489496205e-02,1); +INSERT INTO "unit_of_measure" VALUES('EPSG','9107','degree minute second','angle',NULL,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9108','degree minute second hemisphere','angle',NULL,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9109','microradian','angle',1.0e-06,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9110','sexagesimal DMS','angle',NULL,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9111','sexagesimal DM','angle',NULL,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9112','centesimal minute','angle',1.57079632679489491868e-04,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9113','centesimal second','angle',1.57079632679489496951e-06,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9114','mil_6400','angle',9.81747704246809351283e-04,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9115','degree minute','angle',NULL,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9116','degree hemisphere','angle',NULL,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9117','hemisphere degree','angle',NULL,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9118','degree minute hemisphere','angle',NULL,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9119','hemisphere degree minute','angle',NULL,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9120','hemisphere degree minute second','angle',NULL,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9121','sexagesimal DMS.s','angle',NULL,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9122','degree (supplier to define representation)','angle',1.74532925199432781271e-02,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9201','unity','scale',1.0,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9202','parts per million','scale',1.0e-06,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9203','coefficient','scale',1.0,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9204','Bin width 330 US survey feet','length',1.00584201168402344707e+02,1); +INSERT INTO "unit_of_measure" VALUES('EPSG','9205','Bin width 165 US survey feet','length',5.02921005842011723538e+01,1); +INSERT INTO "unit_of_measure" VALUES('EPSG','9206','Bin width 82.5 US survey feet','length',2.51460502921005861769e+01,1); +INSERT INTO "unit_of_measure" VALUES('EPSG','9207','Bin width 37.5 metres','length',37.5,1); +INSERT INTO "unit_of_measure" VALUES('EPSG','9208','Bin width 25 metres','length',25.0,1); +INSERT INTO "unit_of_measure" VALUES('EPSG','9209','Bin width 12.5 metres','length',12.5,1); +INSERT INTO "unit_of_measure" VALUES('EPSG','9210','Bin width 6.25 metres','length',6.25,1); +INSERT INTO "unit_of_measure" VALUES('EPSG','9211','Bin width 3.125 metres','length',3.125,1); +INSERT INTO "unit_of_measure" VALUES('EPSG','9300','British foot (Sears 1922 truncated)','length',3.04799333333333366535e-01,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9301','British chain (Sears 1922 truncated)','length',20.116756,0); +INSERT INTO "unit_of_measure" VALUES('EPSG','9302','British link (Sears 1922 truncated)','length',0.20116756,0); diff --git a/data/sql/vertical_crs.sql b/data/sql/vertical_crs.sql new file mode 100644 index 00000000..2169846d --- /dev/null +++ b/data/sql/vertical_crs.sql @@ -0,0 +1,213 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +INSERT INTO "vertical_crs" VALUES('EPSG','3855','EGM2008 height',NULL,NULL,'EPSG','6499','EPSG','1027','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','3886','Fao 1979 height',NULL,NULL,'EPSG','6499','EPSG','1028','EPSG','3625',0); +INSERT INTO "vertical_crs" VALUES('EPSG','3900','N2000 height',NULL,NULL,'EPSG','6499','EPSG','1030','EPSG','3333',0); +INSERT INTO "vertical_crs" VALUES('EPSG','4440','NZVD2009 height',NULL,NULL,'EPSG','6499','EPSG','1039','EPSG','1175',0); +INSERT INTO "vertical_crs" VALUES('EPSG','4458','Dunedin-Bluff 1960 height',NULL,NULL,'EPSG','6499','EPSG','1040','EPSG','3806',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5193','Incheon height',NULL,NULL,'EPSG','6499','EPSG','1049','EPSG','3739',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5195','Trieste height',NULL,NULL,'EPSG','6499','EPSG','1050','EPSG','2370',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5214','Genoa height',NULL,NULL,'EPSG','6499','EPSG','1051','EPSG','3736',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5237','SLVD height',NULL,NULL,'EPSG','6499','EPSG','1054','EPSG','3310',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5317','FVR09 height',NULL,NULL,'EPSG','6499','EPSG','1059','EPSG','3248',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5336','Black Sea depth',NULL,NULL,'EPSG','6498','EPSG','5134','EPSG','3251',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5597','FCSVR10 height',NULL,NULL,'EPSG','6499','EPSG','1079','EPSG','3890',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5600','NGPF height',NULL,NULL,'EPSG','6499','EPSG','5195','EPSG','3134',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5601','IGN 1966 height',NULL,NULL,'EPSG','6499','EPSG','5196','EPSG','3124',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5602','Moorea SAU 1981 height',NULL,NULL,'EPSG','6499','EPSG','5197','EPSG','3125',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5603','Raiatea SAU 2001 height',NULL,NULL,'EPSG','6499','EPSG','5198','EPSG','3136',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5604','Maupiti SAU 2001 height',NULL,NULL,'EPSG','6499','EPSG','5199','EPSG','3126',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5605','Huahine SAU 2001 height',NULL,NULL,'EPSG','6499','EPSG','5200','EPSG','3135',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5606','Tahaa SAU 2001 height',NULL,NULL,'EPSG','6499','EPSG','5201','EPSG','3138',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5607','Bora Bora SAU 2001 height',NULL,NULL,'EPSG','6499','EPSG','5202','EPSG','3137',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5608','IGLD 1955 height',NULL,NULL,'EPSG','6499','EPSG','5204','EPSG','3468',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5609','IGLD 1985 height',NULL,NULL,'EPSG','6499','EPSG','5205','EPSG','3468',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5610','HVRS71 height',NULL,NULL,'EPSG','6499','EPSG','5207','EPSG','3234',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5611','Caspian height',NULL,NULL,'EPSG','6499','EPSG','5106','EPSG','1291',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5612','Baltic 1977 depth',NULL,NULL,'EPSG','6498','EPSG','5105','EPSG','2423',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5613','RH2000 height',NULL,NULL,'EPSG','6499','EPSG','5208','EPSG','3313',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5614','KOC WD depth (ft)',NULL,NULL,'EPSG','6495','EPSG','5187','EPSG','3267',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5615','RH00 height',NULL,NULL,'EPSG','6499','EPSG','5209','EPSG','3313',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5616','IGN 1988 LS height',NULL,NULL,'EPSG','6499','EPSG','5210','EPSG','2895',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5617','IGN 1988 MG height',NULL,NULL,'EPSG','6499','EPSG','5211','EPSG','2894',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5618','IGN 1992 LD height',NULL,NULL,'EPSG','6499','EPSG','5212','EPSG','2893',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5619','IGN 1988 SB height',NULL,NULL,'EPSG','6499','EPSG','5213','EPSG','2891',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5620','IGN 1988 SM height',NULL,NULL,'EPSG','6499','EPSG','5214','EPSG','2890',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5621','EVRF2007 height',NULL,NULL,'EPSG','6499','EPSG','5215','EPSG','3594',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5701','ODN height',NULL,NULL,'EPSG','6499','EPSG','5101','EPSG','2792',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5702','NGVD29 height (ftUS)',NULL,NULL,'EPSG','6497','EPSG','5102','EPSG','1323',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5703','NAVD88 height',NULL,NULL,'EPSG','6499','EPSG','5103','EPSG','4161',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5704','Yellow Sea',NULL,NULL,'EPSG','6499','EPSG','5104','EPSG','1067',1); +INSERT INTO "vertical_crs" VALUES('EPSG','5705','Baltic 1977 height',NULL,NULL,'EPSG','6499','EPSG','5105','EPSG','2423',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5706','Caspian depth',NULL,NULL,'EPSG','6498','EPSG','5106','EPSG','1291',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5709','NAP height',NULL,NULL,'EPSG','6499','EPSG','5109','EPSG','1275',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5710','Ostend height',NULL,NULL,'EPSG','6499','EPSG','5110','EPSG','1347',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5711','AHD height',NULL,NULL,'EPSG','6499','EPSG','5111','EPSG','4493',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5712','AHD (Tasmania) height',NULL,NULL,'EPSG','6499','EPSG','5112','EPSG','2947',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5713','CGVD28 height',NULL,NULL,'EPSG','6499','EPSG','5114','EPSG','1289',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5714','MSL height',NULL,NULL,'EPSG','6499','EPSG','5100','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5715','MSL depth',NULL,NULL,'EPSG','6498','EPSG','5100','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5716','Piraeus height',NULL,NULL,'EPSG','6499','EPSG','5115','EPSG','3254',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5717','N60 height',NULL,NULL,'EPSG','6499','EPSG','5116','EPSG','3333',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5718','RH70 height',NULL,NULL,'EPSG','6499','EPSG','5117','EPSG','3313',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5719','NGF Lallemand height',NULL,NULL,'EPSG','6499','EPSG','5118','EPSG','1326',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5720','NGF-IGN69 height',NULL,NULL,'EPSG','6499','EPSG','5119','EPSG','1326',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5721','NGF-IGN78 height',NULL,NULL,'EPSG','6499','EPSG','5120','EPSG','1327',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5722','Maputo height',NULL,NULL,'EPSG','6499','EPSG','5121','EPSG','3281',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5723','JSLD69 height',NULL,NULL,'EPSG','6499','EPSG','5122','EPSG','4166',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5724','PHD93 height',NULL,NULL,'EPSG','6499','EPSG','5123','EPSG','3288',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5725','Fahud HD height',NULL,NULL,'EPSG','6499','EPSG','5124','EPSG','4009',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5726','Ha Tien 1960 height',NULL,NULL,'EPSG','6499','EPSG','5125','EPSG','1302',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5727','Hon Dau 1992 height',NULL,NULL,'EPSG','6499','EPSG','5126','EPSG','4015',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5728','LN02 height',NULL,NULL,'EPSG','6499','EPSG','5127','EPSG','1286',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5729','LHN95 height',NULL,NULL,'EPSG','6499','EPSG','5128','EPSG','1286',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5730','EVRF2000 height',NULL,NULL,'EPSG','6499','EPSG','5129','EPSG','1299',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5731','Malin Head height',NULL,NULL,'EPSG','6499','EPSG','5130','EPSG','1305',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5732','Belfast height',NULL,NULL,'EPSG','6499','EPSG','5131','EPSG','2530',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5733','DNN height',NULL,NULL,'EPSG','6499','EPSG','5132','EPSG','3237',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5734','AIOC95 depth',NULL,NULL,'EPSG','6498','EPSG','5133','EPSG','2592',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5735','Black Sea height',NULL,NULL,'EPSG','6499','EPSG','5134','EPSG','3251',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5736','Yellow Sea 1956 height',NULL,NULL,'EPSG','6499','EPSG','5104','EPSG','3228',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5737','Yellow Sea 1985 height',NULL,NULL,'EPSG','6499','EPSG','5137','EPSG','3228',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5738','HKPD height',NULL,NULL,'EPSG','6499','EPSG','5135','EPSG','3334',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5739','HKCD depth',NULL,NULL,'EPSG','6498','EPSG','5136','EPSG','3335',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5740','ODN Orkney height',NULL,NULL,'EPSG','6499','EPSG','5138','EPSG','2793',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5741','Fair Isle height',NULL,NULL,'EPSG','6499','EPSG','5139','EPSG','2794',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5742','Lerwick height',NULL,NULL,'EPSG','6499','EPSG','5140','EPSG','2795',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5743','Foula height',NULL,NULL,'EPSG','6499','EPSG','5141','EPSG','2796',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5744','Sule Skerry height',NULL,NULL,'EPSG','6499','EPSG','5142','EPSG','2797',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5745','North Rona height',NULL,NULL,'EPSG','6499','EPSG','5143','EPSG','2798',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5746','Stornoway height',NULL,NULL,'EPSG','6499','EPSG','5144','EPSG','2799',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5747','St Kilda height',NULL,NULL,'EPSG','6499','EPSG','5145','EPSG','2800',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5748','Flannan Isles height',NULL,NULL,'EPSG','6499','EPSG','5146','EPSG','2801',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5749','St Marys height',NULL,NULL,'EPSG','6499','EPSG','5147','EPSG','2802',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5750','Douglas height',NULL,NULL,'EPSG','6499','EPSG','5148','EPSG','2803',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5751','Fao height',NULL,NULL,'EPSG','6499','EPSG','5149','EPSG','3390',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5752','Bandar Abbas height',NULL,NULL,'EPSG','6499','EPSG','5150','EPSG','3336',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5753','NGNC height',NULL,NULL,'EPSG','6499','EPSG','5151','EPSG','2822',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5754','Poolbeg height (ft(Br36))',NULL,NULL,'EPSG','6496','EPSG','5152','EPSG','1305',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5755','NGG1977 height',NULL,NULL,'EPSG','6499','EPSG','5153','EPSG','3146',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5756','Martinique 1987 height',NULL,NULL,'EPSG','6499','EPSG','5154','EPSG','3276',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5757','Guadeloupe 1988 height',NULL,NULL,'EPSG','6499','EPSG','5155','EPSG','2892',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5758','Reunion 1989 height',NULL,NULL,'EPSG','6499','EPSG','5156','EPSG','3337',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5759','Auckland 1946 height',NULL,NULL,'EPSG','6499','EPSG','5157','EPSG','3764',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5760','Bluff 1955 height',NULL,NULL,'EPSG','6499','EPSG','5158','EPSG','3801',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5761','Dunedin 1958 height',NULL,NULL,'EPSG','6499','EPSG','5159','EPSG','3803',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5762','Gisborne 1926 height',NULL,NULL,'EPSG','6499','EPSG','5160','EPSG','3771',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5763','Lyttelton 1937 height',NULL,NULL,'EPSG','6499','EPSG','5161','EPSG','3804',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5764','Moturiki 1953 height',NULL,NULL,'EPSG','6499','EPSG','5162','EPSG','3768',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5765','Napier 1962 height',NULL,NULL,'EPSG','6499','EPSG','5163','EPSG','3772',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5766','Nelson 1955 height',NULL,NULL,'EPSG','6499','EPSG','5164','EPSG','3802',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5767','One Tree Point 1964 height',NULL,NULL,'EPSG','6499','EPSG','5165','EPSG','3762',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5768','Tararu 1952 height',NULL,NULL,'EPSG','6499','EPSG','5166','EPSG','3818',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5769','Taranaki 1970 height',NULL,NULL,'EPSG','6499','EPSG','5167','EPSG','3769',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5770','Wellington 1953 height',NULL,NULL,'EPSG','6499','EPSG','5168','EPSG','3773',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5771','Chatham Island 1959 height',NULL,NULL,'EPSG','6499','EPSG','5169','EPSG','3894',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5772','Stewart Island 1977 height',NULL,NULL,'EPSG','6499','EPSG','5170','EPSG','3338',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5773','EGM96 height',NULL,NULL,'EPSG','6499','EPSG','5171','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5774','NG-L height',NULL,NULL,'EPSG','6499','EPSG','5172','EPSG','1146',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5775','Antalya height',NULL,NULL,'EPSG','6499','EPSG','5173','EPSG','3322',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5776','NN54 height',NULL,NULL,'EPSG','6499','EPSG','5174','EPSG','1352',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5777','Durres height',NULL,NULL,'EPSG','6499','EPSG','5175','EPSG','3212',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5778','GHA height',NULL,NULL,'EPSG','6499','EPSG','5176','EPSG','1037',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5779','SVS2000 height',NULL,NULL,'EPSG','6499','EPSG','5177','EPSG','3307',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5780','Cascais height',NULL,NULL,'EPSG','6499','EPSG','5178','EPSG','1294',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5781','Constanta height',NULL,NULL,'EPSG','6499','EPSG','5179','EPSG','3295',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5782','Alicante height',NULL,NULL,'EPSG','6499','EPSG','5180','EPSG','4188',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5783','DHHN92 height',NULL,NULL,'EPSG','6499','EPSG','5181','EPSG','3339',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5784','DHHN85 height',NULL,NULL,'EPSG','6499','EPSG','5182','EPSG','2326',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5785','SNN76 height',NULL,NULL,'EPSG','6499','EPSG','5183','EPSG','1343',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5786','Baltic 1982 height',NULL,NULL,'EPSG','6499','EPSG','5184','EPSG','3224',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5787','EOMA 1980 height',NULL,NULL,'EPSG','6499','EPSG','5185','EPSG','1119',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5788','Kuwait PWD height',NULL,NULL,'EPSG','6499','EPSG','5186','EPSG','3267',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5789','KOC WD depth',NULL,NULL,'EPSG','6498','EPSG','5187','EPSG','3267',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5790','KOC CD height',NULL,NULL,'EPSG','6499','EPSG','5188','EPSG','3267',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5791','NGC 1948 height',NULL,NULL,'EPSG','6499','EPSG','5189','EPSG','1327',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5792','Danger 1950 height',NULL,NULL,'EPSG','6499','EPSG','5190','EPSG','3299',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5793','Mayotte 1950 height',NULL,NULL,'EPSG','6499','EPSG','5191','EPSG','3340',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5794','Martinique 1955 height',NULL,NULL,'EPSG','6499','EPSG','5192','EPSG','3276',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5795','Guadeloupe 1951 height',NULL,NULL,'EPSG','6499','EPSG','5193','EPSG','2892',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5796','Lagos 1955 height',NULL,NULL,'EPSG','6499','EPSG','5194','EPSG','3287',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5797','AIOC95 height',NULL,NULL,'EPSG','6499','EPSG','5133','EPSG','2592',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5798','EGM84 height',NULL,NULL,'EPSG','6499','EPSG','5203','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5799','DVR90 height',NULL,NULL,'EPSG','6499','EPSG','5206','EPSG','3237',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5829','Instantaneous Water Level height',NULL,NULL,'EPSG','6499','EPSG','5113','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5831','Instantaneous Water Level depth',NULL,NULL,'EPSG','6498','EPSG','5113','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5843','Ras Ghumays height',NULL,NULL,'EPSG','6499','EPSG','1146','EPSG','4225',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5861','LAT depth',NULL,NULL,'EPSG','6498','EPSG','1080','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5862','LLWLT depth',NULL,NULL,'EPSG','6498','EPSG','1083','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5863','ISLW depth',NULL,NULL,'EPSG','6498','EPSG','1085','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5864','MLLWS depth',NULL,NULL,'EPSG','6498','EPSG','1086','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5865','MLWS depth',NULL,NULL,'EPSG','6498','EPSG','1087','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5866','MLLW depth',NULL,NULL,'EPSG','6498','EPSG','1089','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5867','MLW depth',NULL,NULL,'EPSG','6498','EPSG','1091','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5868','MHW height',NULL,NULL,'EPSG','6499','EPSG','1092','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5869','MHHW height',NULL,NULL,'EPSG','6499','EPSG','1090','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5870','MHWS height',NULL,NULL,'EPSG','6499','EPSG','1088','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5871','HHWLT height',NULL,NULL,'EPSG','6499','EPSG','1084','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5872','HAT height',NULL,NULL,'EPSG','6499','EPSG','1082','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5873','Low Water depth',NULL,NULL,'EPSG','6498','EPSG','1093','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5874','High Water height',NULL,NULL,'EPSG','6499','EPSG','1094','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','5941','NN2000 height',NULL,NULL,'EPSG','6499','EPSG','1096','EPSG','1352',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6130','GCVD54 height (ft)',NULL,NULL,'EPSG','1030','EPSG','1097','EPSG','3185',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6131','LCVD61 height (ft)',NULL,NULL,'EPSG','1030','EPSG','1098','EPSG','4121',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6132','CBVD61 height (ft)',NULL,NULL,'EPSG','1030','EPSG','1099','EPSG','3207',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6178','Cais da Pontinha - Funchal height',NULL,NULL,'EPSG','6499','EPSG','1101','EPSG','4125',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6179','Cais da Vila - Porto Santo height',NULL,NULL,'EPSG','6499','EPSG','1102','EPSG','3680',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6180','Cais das Velas height',NULL,NULL,'EPSG','6499','EPSG','1103','EPSG','2875',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6181','Horta height',NULL,NULL,'EPSG','6499','EPSG','1104','EPSG','2873',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6182','Cais da Madalena height',NULL,NULL,'EPSG','6499','EPSG','1105','EPSG','2874',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6183','Santa Cruz da Graciosa height',NULL,NULL,'EPSG','6499','EPSG','1106','EPSG','3681',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6184','Cais da Figueirinha - Angra do Heroismo height',NULL,NULL,'EPSG','6499','EPSG','1107','EPSG','2872',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6185','Santa Cruz das Flores height',NULL,NULL,'EPSG','6499','EPSG','1108','EPSG','1344',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6186','Cais da Vila do Porto height',NULL,NULL,'EPSG','6499','EPSG','1109','EPSG','4126',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6187','Ponta Delgada height',NULL,NULL,'EPSG','6499','EPSG','1110','EPSG','2871',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6357','NAVD88 depth',NULL,NULL,'EPSG','6498','EPSG','5103','EPSG','4161',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6358','NAVD88 depth (ftUS)',NULL,NULL,'EPSG','1043','EPSG','5103','EPSG','3664',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6359','NGVD29 depth (ftUS)',NULL,NULL,'EPSG','1043','EPSG','5102','EPSG','1323',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6360','NAVD88 height (ftUS)',NULL,NULL,'EPSG','6497','EPSG','5103','EPSG','3664',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6638','Tutuila 1962 height',NULL,NULL,'EPSG','6499','EPSG','1121','EPSG','2288',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6639','Guam 1963 height',NULL,NULL,'EPSG','6499','EPSG','1122','EPSG','3255',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6640','NMVD03 height',NULL,NULL,'EPSG','6499','EPSG','1119','EPSG','4171',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6641','PRVD02 height',NULL,NULL,'EPSG','6499','EPSG','1123','EPSG','3294',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6642','VIVD09 height',NULL,NULL,'EPSG','6499','EPSG','1124','EPSG','3330',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6643','ASVD02 height',NULL,NULL,'EPSG','6499','EPSG','1125','EPSG','2288',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6644','GUVD04 height',NULL,NULL,'EPSG','6499','EPSG','1126','EPSG','3255',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6647','CGVD2013 height',NULL,NULL,'EPSG','6499','EPSG','1127','EPSG','1061',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6693','JSLD72 height',NULL,NULL,'EPSG','6499','EPSG','1129','EPSG','4168',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6694','JGD2000 (vertical) height',NULL,NULL,'EPSG','6499','EPSG','1130','EPSG','3263',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6695','JGD2011 (vertical) height',NULL,NULL,'EPSG','6499','EPSG','1131','EPSG','3263',0); +INSERT INTO "vertical_crs" VALUES('EPSG','6916','SHD height',NULL,NULL,'EPSG','6499','EPSG','1140','EPSG','1210',0); +INSERT INTO "vertical_crs" VALUES('EPSG','7446','Famagusta 1960 height',NULL,NULL,'EPSG','6499','EPSG','1148','EPSG','3236',0); +INSERT INTO "vertical_crs" VALUES('EPSG','7447','PNG08 height',NULL,NULL,'EPSG','6499','EPSG','1149','EPSG','4384',0); +INSERT INTO "vertical_crs" VALUES('EPSG','7651','Kumul 34 height',NULL,NULL,'EPSG','6499','EPSG','1150','EPSG','4013',0); +INSERT INTO "vertical_crs" VALUES('EPSG','7652','Kiunga height',NULL,NULL,'EPSG','6499','EPSG','1151','EPSG','4383',0); +INSERT INTO "vertical_crs" VALUES('EPSG','7699','DHHN12 height',NULL,NULL,'EPSG','6499','EPSG','1161','EPSG','3339',0); +INSERT INTO "vertical_crs" VALUES('EPSG','7700','Latvia 2000 height',NULL,NULL,'EPSG','6499','EPSG','1162','EPSG','3268',0); +INSERT INTO "vertical_crs" VALUES('EPSG','7707','ODN (Offshore) height',NULL,NULL,'EPSG','6499','EPSG','1164','EPSG','4391',0); +INSERT INTO "vertical_crs" VALUES('EPSG','7832','POM96 height',NULL,NULL,'EPSG','6499','EPSG','1171','EPSG','4425',0); +INSERT INTO "vertical_crs" VALUES('EPSG','7837','DHHN2016 height',NULL,NULL,'EPSG','6499','EPSG','1170','EPSG','3339',0); +INSERT INTO "vertical_crs" VALUES('EPSG','7839','NZVD2016 height',NULL,NULL,'EPSG','6499','EPSG','1169','EPSG','1175',0); +INSERT INTO "vertical_crs" VALUES('EPSG','7841','POM08 height',NULL,NULL,'EPSG','6499','EPSG','1172','EPSG','4425',0); +INSERT INTO "vertical_crs" VALUES('EPSG','7888','Jamestown 1971 height',NULL,NULL,'EPSG','6499','EPSG','1175','EPSG','3183',0); +INSERT INTO "vertical_crs" VALUES('EPSG','7889','St. Helena Tritan 2011 height',NULL,NULL,'EPSG','6499','EPSG','1176','EPSG','3183',0); +INSERT INTO "vertical_crs" VALUES('EPSG','7890','SHVD2015 height',NULL,NULL,'EPSG','6499','EPSG','1177','EPSG','3183',0); +INSERT INTO "vertical_crs" VALUES('EPSG','7962','Poolbeg height (m)',NULL,NULL,'EPSG','6499','EPSG','5152','EPSG','1305',0); +INSERT INTO "vertical_crs" VALUES('EPSG','7968','NGVD29 height (m)',NULL,NULL,'EPSG','6499','EPSG','5102','EPSG','1323',0); +INSERT INTO "vertical_crs" VALUES('EPSG','7976','HKPD depth',NULL,NULL,'EPSG','6498','EPSG','5135','EPSG','3334',0); +INSERT INTO "vertical_crs" VALUES('EPSG','7979','KOC WD height',NULL,NULL,'EPSG','6499','EPSG','5187','EPSG','3267',0); +INSERT INTO "vertical_crs" VALUES('EPSG','8050','MSL height (ft)',NULL,NULL,'EPSG','1030','EPSG','5100','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','8051','MSL depth (ft)',NULL,NULL,'EPSG','6495','EPSG','5100','EPSG','1262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','8052','MSL height (ftUS)',NULL,NULL,'EPSG','6497','EPSG','5100','EPSG','1245',0); +INSERT INTO "vertical_crs" VALUES('EPSG','8053','MSL depth (ftUS)',NULL,NULL,'EPSG','1043','EPSG','5100','EPSG','1245',0); +INSERT INTO "vertical_crs" VALUES('EPSG','8089','ISH2004 height',NULL,NULL,'EPSG','6499','EPSG','1190','EPSG','3262',0); +INSERT INTO "vertical_crs" VALUES('EPSG','8228','NAVD88 height (ft)',NULL,NULL,'EPSG','1030','EPSG','5103','EPSG','4464',0); +INSERT INTO "vertical_crs" VALUES('EPSG','8266','GVR2000 height',NULL,NULL,'EPSG','6499','EPSG','1199','EPSG','4461',0); +INSERT INTO "vertical_crs" VALUES('EPSG','8267','GVR2016 height',NULL,NULL,'EPSG','6499','EPSG','1200','EPSG','4454',0); +INSERT INTO "vertical_crs" VALUES('EPSG','8357','Baltic 1957 height',NULL,NULL,'EPSG','6499','EPSG','1202','EPSG','1306',0); +INSERT INTO "vertical_crs" VALUES('EPSG','8358','Baltic 1957 depth',NULL,NULL,'EPSG','6498','EPSG','1202','EPSG','1306',0); +INSERT INTO "vertical_crs" VALUES('EPSG','8434','Macao height',NULL,NULL,'EPSG','6499','EPSG','1210','EPSG','1147',0); +INSERT INTO "vertical_crs" VALUES('EPSG','8675','N43 height',NULL,NULL,'EPSG','6499','EPSG','1213','EPSG','4522',0); +INSERT INTO "vertical_crs" VALUES('EPSG','8690','SVS2010 height',NULL,NULL,'EPSG','6499','EPSG','1215','EPSG','3307',0); +INSERT INTO "vertical_crs" VALUES('EPSG','8691','SRB_VRS12 height',NULL,NULL,'EPSG','6499','EPSG','1216','EPSG','3534',0); +INSERT INTO "vertical_crs" VALUES('EPSG','8841','MVGC height',NULL,NULL,'EPSG','6499','EPSG','1219','EPSG','3303',0); diff --git a/data/sql/vertical_datum.sql b/data/sql/vertical_datum.sql new file mode 100644 index 00000000..9a50b9c7 --- /dev/null +++ b/data/sql/vertical_datum.sql @@ -0,0 +1,192 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +INSERT INTO "vertical_datum" VALUES('EPSG','1027','EGM2008 geoid',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1028','Fao 1979',NULL,NULL,'EPSG','3625',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1030','N2000',NULL,NULL,'EPSG','3333',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1039','New Zealand Vertical Datum 2009',NULL,NULL,'EPSG','1175',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1040','Dunedin-Bluff 1960',NULL,NULL,'EPSG','3806',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1049','Incheon',NULL,NULL,'EPSG','3739',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1050','Trieste',NULL,NULL,'EPSG','2370',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1051','Genoa',NULL,NULL,'EPSG','3736',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1054','Sri Lanka Vertical Datum',NULL,NULL,'EPSG','3310',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1059','Faroe Islands Vertical Reference 2009',NULL,NULL,'EPSG','3248',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1079','Fehmarnbelt Vertical Reference 2010',NULL,NULL,'EPSG','3890',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1080','Lowest Astronomic Tide',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1082','Highest Astronomic Tide',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1083','Lower Low Water Large Tide',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1084','Higher High Water Large Tide',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1085','Indian Spring Low Water',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1086','Mean Lower Low Water Spring Tides',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1087','Mean Low Water Spring Tides',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1088','Mean High Water Spring Tides',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1089','Mean Lower Low Water',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1090','Mean Higher High Water',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1091','Mean Low Water',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1092','Mean High Water',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1093','Low Water',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1094','High Water',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1096','Norway Normal Null 2000',NULL,NULL,'EPSG','1352',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1097','Grand Cayman Vertical Datum 1954',NULL,NULL,'EPSG','3185',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1098','Little Cayman Vertical Datum 1961',NULL,NULL,'EPSG','4121',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1099','Cayman Brac Vertical Datum 1961',NULL,NULL,'EPSG','3207',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1101','Cais da Pontinha - Funchal',NULL,NULL,'EPSG','4125',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1102','Cais da Vila - Porto Santo',NULL,NULL,'EPSG','3680',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1103','Cais das Velas',NULL,NULL,'EPSG','2875',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1104','Horta',NULL,NULL,'EPSG','2873',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1105','Cais da Madalena',NULL,NULL,'EPSG','2874',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1106','Santa Cruz da Graciosa',NULL,NULL,'EPSG','3681',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1107','Cais da Figueirinha - Angra do Heroismo',NULL,NULL,'EPSG','2872',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1108','Santa Cruz das Flores',NULL,NULL,'EPSG','1344',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1109','Cais da Vila do Porto',NULL,NULL,'EPSG','4126',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1110','Ponta Delgada',NULL,NULL,'EPSG','2871',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1119','Northern Marianas Vertical Datum of 2003',NULL,NULL,'EPSG','4171',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1121','Tutuila Vertical Datum of 1962',NULL,NULL,'EPSG','2288',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1122','Guam Vertical Datum of 1963',NULL,NULL,'EPSG','3255',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1123','Puerto Rico Vertical Datum of 2002',NULL,NULL,'EPSG','3294',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1124','Virgin Islands Vertical Datum of 2009',NULL,NULL,'EPSG','3330',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1125','American Samoa Vertical Datum of 2002',NULL,NULL,'EPSG','2288',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1126','Guam Vertical Datum of 2004',NULL,NULL,'EPSG','3255',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1127','Canadian Geodetic Vertical Datum of 2013',NULL,NULL,'EPSG','1061',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1129','Japanese Standard Levelling Datum 1972',NULL,NULL,'EPSG','4168',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1130','Japanese Geodetic Datum 2000 (vertical)',NULL,NULL,'EPSG','3263',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1131','Japanese Geodetic Datum 2011 (vertical)',NULL,NULL,'EPSG','3263',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1140','Singapore Height Datum',NULL,NULL,'EPSG','1210',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1146','Ras Ghumays',NULL,NULL,'EPSG','4225',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1148','Famagusta 1960',NULL,NULL,'EPSG','3236',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1149','PNG08',NULL,NULL,'EPSG','4384',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1150','Kumul 34',NULL,NULL,'EPSG','4013',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1151','Kiunga',NULL,NULL,'EPSG','4383',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1161','Deutsches Haupthoehennetz 1912',NULL,NULL,'EPSG','3339',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1162','Latvian Height System 2000',NULL,NULL,'EPSG','3268',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1164','Ordnance Datum Newlyn (Offshore)',NULL,NULL,'EPSG','4391',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1169','New Zealand Vertical Datum 2016',NULL,NULL,'EPSG','1175',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1170','Deutsches Haupthoehennetz 2016',NULL,NULL,'EPSG','3339',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1171','Port Moresby 1996',NULL,NULL,'EPSG','4425',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1172','Port Moresby 2008',NULL,NULL,'EPSG','4425',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1175','Jamestown 1971',NULL,NULL,'EPSG','3183',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1176','St. Helena Tritan Vertical Datum 2011',NULL,NULL,'EPSG','3183',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1177','St. Helena Vertical Datum 2015',NULL,NULL,'EPSG','3183',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1190','Landshaedarkerfi Islands 2004',NULL,NULL,'EPSG','3262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1199','Greenland Vertical Reference 2000',NULL,NULL,'EPSG','4461',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1200','Greenland Vertical Reference 2016',NULL,NULL,'EPSG','4454',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1202','Baltic 1957',NULL,NULL,'EPSG','1306',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1210','Macao Height Datum',NULL,NULL,'EPSG','1147',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1213','Helsinki 1943',NULL,NULL,'EPSG','4522',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1215','Slovenian Vertical System 2010',NULL,NULL,'EPSG','3307',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1216','Serbian Vertical Reference System 2012',NULL,NULL,'EPSG','3534',0); +INSERT INTO "vertical_datum" VALUES('EPSG','1219','MOMRA Vertical Geodetic Control',NULL,NULL,'EPSG','3303',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5100','Mean Sea Level',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5101','Ordnance Datum Newlyn',NULL,NULL,'EPSG','2792',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5102','National Geodetic Vertical Datum 1929',NULL,NULL,'EPSG','1323',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5103','North American Vertical Datum 1988',NULL,NULL,'EPSG','4161',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5104','Yellow Sea 1956',NULL,NULL,'EPSG','3228',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5105','Baltic 1977',NULL,NULL,'EPSG','2423',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5106','Caspian Sea',NULL,NULL,'EPSG','1291',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5107','Nivellement general de la France',NULL,NULL,'EPSG','1326',1); +INSERT INTO "vertical_datum" VALUES('EPSG','5109','Normaal Amsterdams Peil',NULL,NULL,'EPSG','1275',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5110','Ostend',NULL,NULL,'EPSG','1347',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5111','Australian Height Datum',NULL,NULL,'EPSG','4493',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5112','Australian Height Datum (Tasmania)',NULL,NULL,'EPSG','2947',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5113','Instantaneous Water Level',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5114','Canadian Geodetic Vertical Datum of 1928',NULL,NULL,'EPSG','1289',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5115','Piraeus Harbour 1986',NULL,NULL,'EPSG','3254',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5116','Helsinki 1960',NULL,NULL,'EPSG','3333',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5117','Rikets hojdsystem 1970',NULL,NULL,'EPSG','3313',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5118','Nivellement General de la France - Lallemand',NULL,NULL,'EPSG','1326',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5119','Nivellement General de la France - IGN69',NULL,NULL,'EPSG','1326',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5120','Nivellement General de la France - IGN78',NULL,NULL,'EPSG','1327',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5121','Maputo',NULL,NULL,'EPSG','3281',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5122','Japanese Standard Levelling Datum 1969',NULL,NULL,'EPSG','4166',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5123','PDO Height Datum 1993',NULL,NULL,'EPSG','3288',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5124','Fahud Height Datum',NULL,NULL,'EPSG','4009',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5125','Ha Tien 1960',NULL,NULL,'EPSG','1302',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5126','Hon Dau 1992',NULL,NULL,'EPSG','4015',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5127','Landesnivellement 1902',NULL,NULL,'EPSG','1286',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5128','Landeshohennetz 1995',NULL,NULL,'EPSG','1286',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5129','European Vertical Reference Frame 2000',NULL,NULL,'EPSG','1299',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5130','Malin Head',NULL,NULL,'EPSG','1305',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5131','Belfast Lough',NULL,NULL,'EPSG','2530',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5132','Dansk Normal Nul',NULL,NULL,'EPSG','3237',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5133','AIOC 1995',NULL,NULL,'EPSG','2592',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5134','Black Sea',NULL,NULL,'EPSG','3251',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5135','Hong Kong Principal Datum',NULL,NULL,'EPSG','3334',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5136','Hong Kong Chart Datum',NULL,NULL,'EPSG','3335',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5137','Yellow Sea 1985',NULL,NULL,'EPSG','3228',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5138','Ordnance Datum Newlyn (Orkney Isles)',NULL,NULL,'EPSG','2793',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5139','Fair Isle',NULL,NULL,'EPSG','2794',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5140','Lerwick',NULL,NULL,'EPSG','2795',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5141','Foula',NULL,NULL,'EPSG','2796',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5142','Sule Skerry',NULL,NULL,'EPSG','2797',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5143','North Rona',NULL,NULL,'EPSG','2798',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5144','Stornoway',NULL,NULL,'EPSG','2799',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5145','St Kilda',NULL,NULL,'EPSG','2800',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5146','Flannan Isles',NULL,NULL,'EPSG','2801',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5147','St Marys',NULL,NULL,'EPSG','2802',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5148','Douglas',NULL,NULL,'EPSG','2803',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5149','Fao',NULL,NULL,'EPSG','3390',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5150','Bandar Abbas',NULL,NULL,'EPSG','3336',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5151','Nivellement General de Nouvelle Caledonie',NULL,NULL,'EPSG','2822',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5152','Poolbeg',NULL,NULL,'EPSG','1305',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5153','Nivellement General Guyanais 1977',NULL,NULL,'EPSG','3146',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5154','Martinique 1987',NULL,NULL,'EPSG','3276',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5155','Guadeloupe 1988',NULL,NULL,'EPSG','2892',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5156','Reunion 1989',NULL,NULL,'EPSG','3337',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5157','Auckland 1946',NULL,NULL,'EPSG','3764',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5158','Bluff 1955',NULL,NULL,'EPSG','3801',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5159','Dunedin 1958',NULL,NULL,'EPSG','3803',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5160','Gisborne 1926',NULL,NULL,'EPSG','3771',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5161','Lyttelton 1937',NULL,NULL,'EPSG','3804',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5162','Moturiki 1953',NULL,NULL,'EPSG','3768',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5163','Napier 1962',NULL,NULL,'EPSG','3772',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5164','Nelson 1955',NULL,NULL,'EPSG','3802',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5165','One Tree Point 1964',NULL,NULL,'EPSG','3762',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5166','Tararu 1952',NULL,NULL,'EPSG','3818',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5167','Taranaki 1970',NULL,NULL,'EPSG','3769',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5168','Wellington 1953',NULL,NULL,'EPSG','3773',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5169','Waitangi (Chatham Island) 1959',NULL,NULL,'EPSG','3894',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5170','Stewart Island 1977',NULL,NULL,'EPSG','3338',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5171','EGM96 geoid',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5172','Nivellement General du Luxembourg',NULL,NULL,'EPSG','1146',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5173','Antalya',NULL,NULL,'EPSG','3322',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5174','Norway Normal Null 1954',NULL,NULL,'EPSG','1352',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5175','Durres',NULL,NULL,'EPSG','3212',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5176','Gebrauchshohen ADRIA',NULL,NULL,'EPSG','1037',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5177','Slovenian Vertical System 2000',NULL,NULL,'EPSG','3307',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5178','Cascais',NULL,NULL,'EPSG','1294',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5179','Constanta',NULL,NULL,'EPSG','3295',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5180','Alicante',NULL,NULL,'EPSG','4188',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5181','Deutsches Haupthoehennetz 1992',NULL,NULL,'EPSG','3339',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5182','Deutsches Haupthoehennetz 1985',NULL,NULL,'EPSG','2326',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5183','Staatlichen Nivellementnetzes 1976',NULL,NULL,'EPSG','1343',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5184','Baltic 1982',NULL,NULL,'EPSG','3224',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5185','Baltic 1980',NULL,NULL,'EPSG','1119',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5186','Kuwait PWD',NULL,NULL,'EPSG','3267',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5187','KOC Well Datum',NULL,NULL,'EPSG','3267',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5188','KOC Construction Datum',NULL,NULL,'EPSG','3267',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5189','Nivellement General de la Corse 1948',NULL,NULL,'EPSG','1327',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5190','Danger 1950',NULL,NULL,'EPSG','3299',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5191','Mayotte 1950',NULL,NULL,'EPSG','3340',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5192','Martinique 1955',NULL,NULL,'EPSG','3276',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5193','Guadeloupe 1951',NULL,NULL,'EPSG','2892',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5194','Lagos 1955',NULL,NULL,'EPSG','3287',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5195','Nivellement General de Polynesie Francaise',NULL,NULL,'EPSG','3134',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5196','IGN 1966',NULL,NULL,'EPSG','3124',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5197','Moorea SAU 1981',NULL,NULL,'EPSG','3125',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5198','Raiatea SAU 2001',NULL,NULL,'EPSG','3136',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5199','Maupiti SAU 2001',NULL,NULL,'EPSG','3126',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5200','Huahine SAU 2001',NULL,NULL,'EPSG','3135',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5201','Tahaa SAU 2001',NULL,NULL,'EPSG','3138',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5202','Bora Bora SAU 2001',NULL,NULL,'EPSG','3137',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5203','EGM84 geoid',NULL,NULL,'EPSG','1262',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5204','International Great Lakes Datum 1955',NULL,NULL,'EPSG','3468',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5205','International Great Lakes Datum 1985',NULL,NULL,'EPSG','3468',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5206','Dansk Vertikal Reference 1990',NULL,NULL,'EPSG','3237',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5207','Croatian Vertical Reference System 1971',NULL,NULL,'EPSG','3234',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5208','Rikets hojdsystem 2000',NULL,NULL,'EPSG','3313',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5209','Rikets hojdsystem 1900',NULL,NULL,'EPSG','3313',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5210','IGN 1988 LS',NULL,NULL,'EPSG','2895',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5211','IGN 1988 MG',NULL,NULL,'EPSG','2894',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5212','IGN 1992 LD',NULL,NULL,'EPSG','2893',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5213','IGN 1988 SB',NULL,NULL,'EPSG','2891',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5214','IGN 1988 SM',NULL,NULL,'EPSG','2890',0); +INSERT INTO "vertical_datum" VALUES('EPSG','5215','European Vertical Reference Frame 2007',NULL,NULL,'EPSG','3594',0); diff --git a/data/sql_filelist.cmake b/data/sql_filelist.cmake new file mode 100644 index 00000000..1d235329 --- /dev/null +++ b/data/sql_filelist.cmake @@ -0,0 +1,29 @@ +set(SQL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/sql") +set(SQL_FILES "${SQL_DIR}/begin.sql" + "${SQL_DIR}/proj_db_table_defs.sql" + "${SQL_DIR}/conversion_triggers.sql" + "${SQL_DIR}/metadata.sql" + "${SQL_DIR}/unit_of_measure.sql" + "${SQL_DIR}/area.sql" + "${SQL_DIR}/coordinate_system.sql" + "${SQL_DIR}/axis.sql" + "${SQL_DIR}/ellipsoid.sql" + "${SQL_DIR}/prime_meridian.sql" + "${SQL_DIR}/geodetic_datum.sql" + "${SQL_DIR}/vertical_datum.sql" + "${SQL_DIR}/conversion.sql" + "${SQL_DIR}/geodetic_crs.sql" + "${SQL_DIR}/projected_crs.sql" + "${SQL_DIR}/vertical_crs.sql" + "${SQL_DIR}/compound_crs.sql" + "${SQL_DIR}/helmert_transformation.sql" + "${SQL_DIR}/grid_transformation.sql" + "${SQL_DIR}/grid_transformation_custom.sql" + "${SQL_DIR}/other_transformation.sql" + "${SQL_DIR}/concatenated_operation.sql" + "${SQL_DIR}/esri.sql" + "${SQL_DIR}/ignf.sql" + "${SQL_DIR}/grid_alternatives.sql" + "${SQL_DIR}/grid_alternatives_generated.sql" + "${SQL_DIR}/customizations.sql" + "${SQL_DIR}/commit.sql") diff --git a/docs/Makefile b/docs/Makefile index 2540fdff..e6a02fdd 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -51,9 +51,19 @@ help: clean: rm -rf $(BUILDDIR)/* +.doxygen_up_to_date: ../Doxyfile ../src/*.cpp ../include/proj/*.hpp + ../scripts/doxygen.sh + touch .doxygen_up_to_date + .PHONY: html -html: +html: .doxygen_up_to_date $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + # Undoes the hack done in scripts/doxygen.sh + @sed "s/io::Convention_/io::Convention/g" < $(BUILDDIR)/html/development/reference/cpp/io.html | sed "s/>Convention_/>Convention/g" | sed "s/_WKT2/WKT2/g" | sed "s/_WKT1/WKT1/g" > $(BUILDDIR)/html/development/reference/cpp/io.html.tmp + @mv $(BUILDDIR)/html/development/reference/cpp/io.html.tmp $(BUILDDIR)/html/development/reference/cpp/io.html + # Undoes the hacks of scripts/generate_breathe_friendly_general_doc.py + @sed "s/<em class=\"property\">namespace <\/em>//g" < $(BUILDDIR)/html/development/reference/cpp/cpp_general.html > $(BUILDDIR)/html/development/reference/cpp/cpp_general.html.tmp + @mv $(BUILDDIR)/html/development/reference/cpp/cpp_general.html.tmp $(BUILDDIR)/html/development/reference/cpp/cpp_general.html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." diff --git a/docs/source/conf.py b/docs/source/conf.py index 434e4d73..612c7c7e 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -34,6 +34,7 @@ import bibstyle extensions = [ 'sphinx.ext.mathjax', 'sphinxcontrib.bibtex', + 'breathe', ] # Add any paths that contain templates here, relative to this directory. @@ -346,3 +347,7 @@ texinfo_documents = [ # If true, do not generate a @detailmenu in the "Top" node's menu. #texinfo_no_detailmenu = False + +breathe_projects = { + "cpp_stuff":"../build/xml/", +} diff --git a/docs/source/development/reference/cpp/common.rst b/docs/source/development/reference/cpp/common.rst new file mode 100644 index 00000000..c1a28d37 --- /dev/null +++ b/docs/source/development/reference/cpp/common.rst @@ -0,0 +1,8 @@ +.. _common: + +common namespace +---------------- + +.. doxygennamespace:: osgeo::proj::common + :project: cpp_stuff + :members: diff --git a/docs/source/development/reference/cpp/cpp_general.rst b/docs/source/development/reference/cpp/cpp_general.rst new file mode 100644 index 00000000..3b47d01e --- /dev/null +++ b/docs/source/development/reference/cpp/cpp_general.rst @@ -0,0 +1,7 @@ +.. _cpp_general: + +General documentation +--------------------- + +.. doxygenfile:: general_doc.dox.reworked.h + :project: cpp_stuff diff --git a/docs/source/development/reference/cpp/crs.rst b/docs/source/development/reference/cpp/crs.rst new file mode 100644 index 00000000..2abea378 --- /dev/null +++ b/docs/source/development/reference/cpp/crs.rst @@ -0,0 +1,8 @@ +.. _crs: + +crs namespace +------------- + +.. doxygennamespace:: osgeo::proj::crs + :project: cpp_stuff + :members: diff --git a/docs/source/development/reference/cpp/cs.rst b/docs/source/development/reference/cpp/cs.rst new file mode 100644 index 00000000..b168213f --- /dev/null +++ b/docs/source/development/reference/cpp/cs.rst @@ -0,0 +1,8 @@ +.. _cs: + +cs namespace +------------ + +.. doxygennamespace:: osgeo::proj::cs + :project: cpp_stuff + :members: diff --git a/docs/source/development/reference/cpp/datum.rst b/docs/source/development/reference/cpp/datum.rst new file mode 100644 index 00000000..1fee5f8a --- /dev/null +++ b/docs/source/development/reference/cpp/datum.rst @@ -0,0 +1,8 @@ +.. _datum: + +datum namespace +--------------- + +.. doxygennamespace:: osgeo::proj::datum + :project: cpp_stuff + :members: diff --git a/docs/source/development/reference/cpp/index.rst b/docs/source/development/reference/cpp/index.rst new file mode 100644 index 00000000..bedfbe52 --- /dev/null +++ b/docs/source/development/reference/cpp/index.rst @@ -0,0 +1,19 @@ +.. _cpp: + +================================================================================ +C++ API +================================================================================ + +.. toctree:: + :maxdepth: 1 + + cpp_general + common + util + metadata + cs + datum + crs + operation + io + diff --git a/docs/source/development/reference/cpp/io.rst b/docs/source/development/reference/cpp/io.rst new file mode 100644 index 00000000..9da0f680 --- /dev/null +++ b/docs/source/development/reference/cpp/io.rst @@ -0,0 +1,8 @@ +.. _io: + +io namespace +------------ + +.. doxygennamespace:: osgeo::proj::io + :project: cpp_stuff + :members: diff --git a/docs/source/development/reference/cpp/metadata.rst b/docs/source/development/reference/cpp/metadata.rst new file mode 100644 index 00000000..b3960122 --- /dev/null +++ b/docs/source/development/reference/cpp/metadata.rst @@ -0,0 +1,8 @@ +.. _metadata: + +metadata namespace +------------------ + +.. doxygennamespace:: osgeo::proj::metadata + :project: cpp_stuff + :members: diff --git a/docs/source/development/reference/cpp/operation.rst b/docs/source/development/reference/cpp/operation.rst new file mode 100644 index 00000000..bc3f201d --- /dev/null +++ b/docs/source/development/reference/cpp/operation.rst @@ -0,0 +1,8 @@ +.. _operation: + +operation namespace +------------------- + +.. doxygennamespace:: osgeo::proj::operation + :project: cpp_stuff + :members: diff --git a/docs/source/development/reference/cpp/util.rst b/docs/source/development/reference/cpp/util.rst new file mode 100644 index 00000000..1aba2954 --- /dev/null +++ b/docs/source/development/reference/cpp/util.rst @@ -0,0 +1,8 @@ +.. _util: + +util namespace +-------------- + +.. doxygennamespace:: osgeo::proj::util + :project: cpp_stuff + :members: diff --git a/docs/source/development/reference/functions.rst b/docs/source/development/reference/functions.rst index fb29fd6c..5d27999f 100644 --- a/docs/source/development/reference/functions.rst +++ b/docs/source/development/reference/functions.rst @@ -571,3 +571,8 @@ Various :type `direction`: PJ_DIRECTION :returns: :c:type:`int` 1 if angular output is returned, otherwise 0 +C API for ISO-19111 functionality ++++++++++++++++++++++++++++++++++ + +.. doxygenfile:: proj.h + :project: cpp_stuff diff --git a/docs/source/development/reference/index.rst b/docs/source/development/reference/index.rst index 9e92384c..1d39b1d0 100644 --- a/docs/source/development/reference/index.rst +++ b/docs/source/development/reference/index.rst @@ -9,4 +9,5 @@ Reference datatypes functions + cpp/index.rst deprecated diff --git a/docs/source/index.rst b/docs/source/index.rst index c367cafb..33fd096d 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -4,7 +4,7 @@ PROJ ############################################################################### .. toctree:: - :maxdepth: 3 + :maxdepth: 4 :hidden: about diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt new file mode 100644 index 00000000..648a0650 --- /dev/null +++ b/include/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(proj) diff --git a/include/Makefile.am b/include/Makefile.am new file mode 100644 index 00000000..ba96cf80 --- /dev/null +++ b/include/Makefile.am @@ -0,0 +1,3 @@ +SUBDIRS = proj + +EXTRA_DIST = CMakeLists.txt diff --git a/include/proj/CMakeLists.txt b/include/proj/CMakeLists.txt new file mode 100644 index 00000000..d112cf74 --- /dev/null +++ b/include/proj/CMakeLists.txt @@ -0,0 +1,7 @@ +set(installdest include/proj) + +install( + FILES util.hpp metadata.hpp common.hpp crs.hpp datum.hpp + coordinatesystem.hpp coordinateoperation.hpp io.hpp nn.hpp + DESTINATION ${installdest} +) diff --git a/include/proj/Makefile.am b/include/proj/Makefile.am new file mode 100644 index 00000000..e5ae5aed --- /dev/null +++ b/include/proj/Makefile.am @@ -0,0 +1,8 @@ +EXTRA_DIST = CMakeLists.txt + +SUBDIRS = internal + +projdir = $(includedir)/proj + +proj_HEADERS = util.hpp metadata.hpp common.hpp crs.hpp datum.hpp \ + coordinatesystem.hpp coordinateoperation.hpp io.hpp nn.hpp diff --git a/include/proj/common.hpp b/include/proj/common.hpp new file mode 100644 index 00000000..f1e683e7 --- /dev/null +++ b/include/proj/common.hpp @@ -0,0 +1,445 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef COMMON_HH_INCLUDED +#define COMMON_HH_INCLUDED + +#include <memory> +#include <string> +#include <vector> + +#include "io.hpp" +#include "metadata.hpp" +#include "util.hpp" + +NS_PROJ_START + +/** osgeo.proj.common namespace + * + * \brief Common classes. + */ +namespace common { + +// --------------------------------------------------------------------------- + +class UnitOfMeasure; +/** Shared pointer of UnitOfMeasure. */ +using UnitOfMeasurePtr = std::shared_ptr<UnitOfMeasure>; +/** Non-null shared pointer of UnitOfMeasure. */ +using UnitOfMeasureNNPtr = util::nn<UnitOfMeasurePtr>; + +/** \brief Unit of measure. + * + * This is a mutable object. + */ +class PROJ_GCC_DLL UnitOfMeasure : public util::BaseObject { + public: + /** \brief Type of unit of measure. */ + enum class PROJ_MSVC_DLL Type { + /** Unknown unit of measure */ + UNKNOWN, + /** No unit of measure */ + NONE, + /** Angular unit of measure */ + ANGULAR, + /** Linear unit of measure */ + LINEAR, + /** Scale unit of measure */ + SCALE, + /** Time unit of measure */ + TIME, + /** Parametric unit of measure */ + PARAMETRIC, + }; + + PROJ_DLL UnitOfMeasure(const std::string &nameIn = std::string(), + double toSIIn = 1.0, Type typeIn = Type::UNKNOWN, + const std::string &codeSpaceIn = std::string(), + const std::string &codeIn = std::string()); + + //! @cond Doxygen_Suppress + PROJ_DLL UnitOfMeasure(const UnitOfMeasure &other); + PROJ_DLL ~UnitOfMeasure() override; + PROJ_DLL UnitOfMeasure &operator=(const UnitOfMeasure &other); + PROJ_INTERNAL static UnitOfMeasureNNPtr create(const UnitOfMeasure &other); + //! @endcond + + PROJ_DLL const std::string &name() PROJ_PURE_DECL; + PROJ_DLL double conversionToSI() PROJ_PURE_DECL; + PROJ_DLL Type type() PROJ_PURE_DECL; + + PROJ_DLL const std::string &codeSpace() PROJ_PURE_DECL; + PROJ_DLL const std::string &code() PROJ_PURE_DECL; + + PROJ_DLL bool operator==(const UnitOfMeasure &other) PROJ_PURE_DECL; + PROJ_DLL bool operator!=(const UnitOfMeasure &other) PROJ_PURE_DECL; + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter, + const std::string &unitType = std::string()) + const; // throw(io::FormattingException) + + PROJ_INTERNAL std::string exportToPROJString() const; + + PROJ_INTERNAL bool + _isEquivalentTo(const UnitOfMeasure &other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const; + + //! @endcond + + PROJ_DLL static const UnitOfMeasure NONE; + + PROJ_DLL static const UnitOfMeasure SCALE_UNITY; + PROJ_DLL static const UnitOfMeasure PARTS_PER_MILLION; + PROJ_DLL static const UnitOfMeasure PPM_PER_YEAR; + + PROJ_DLL static const UnitOfMeasure METRE; + PROJ_DLL static const UnitOfMeasure METRE_PER_YEAR; + + PROJ_DLL static const UnitOfMeasure RADIAN; + PROJ_DLL static const UnitOfMeasure MICRORADIAN; + PROJ_DLL static const UnitOfMeasure DEGREE; + PROJ_DLL static const UnitOfMeasure ARC_SECOND; + PROJ_DLL static const UnitOfMeasure GRAD; + PROJ_DLL static const UnitOfMeasure ARC_SECOND_PER_YEAR; + + PROJ_DLL static const UnitOfMeasure SECOND; + PROJ_DLL static const UnitOfMeasure YEAR; + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +/** \brief Numeric value associated with a UnitOfMeasure. */ +class Measure : public util::BaseObject { + public: + PROJ_DLL Measure(double valueIn = 0.0, + const UnitOfMeasure &unitIn = UnitOfMeasure()); + + //! @cond Doxygen_Suppress + PROJ_DLL Measure(const Measure &other); + PROJ_DLL ~Measure(); + //! @endcond + + PROJ_DLL const UnitOfMeasure &unit() PROJ_CONST_DECL; + PROJ_DLL double getSIValue() PROJ_CONST_DECL; + PROJ_DLL double value() PROJ_CONST_DECL; + + PROJ_DLL double + convertToUnit(const UnitOfMeasure &otherUnit) PROJ_CONST_DECL; + + PROJ_DLL bool operator==(const Measure &other) PROJ_CONST_DECL; + + PROJ_INTERNAL bool + _isEquivalentTo(const Measure &other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const; + + private: + PROJ_OPAQUE_PRIVATE_DATA + Measure &operator=(const Measure &) = delete; +}; + +// --------------------------------------------------------------------------- + +/** \brief Numeric value, without a physical unit of measure. */ +class Scale : public Measure { + public: + PROJ_DLL explicit Scale(double valueIn = 0.0); + PROJ_DLL explicit Scale(double valueIn, const UnitOfMeasure &unitIn); + + //! @cond Doxygen_Suppress + explicit Scale(const Measure &other) : Scale(other.value(), other.unit()) {} + PROJ_DLL Scale(const Scale &other); + PROJ_DLL ~Scale() override; + //! @endcond + + protected: + PROJ_FRIEND_OPTIONAL(Scale); + Scale &operator=(const Scale &) = delete; +}; + +// --------------------------------------------------------------------------- + +/** \brief Numeric value, with a angular unit of measure. */ +class Angle : public Measure { + public: + PROJ_DLL explicit Angle(double valueIn = 0.0); + PROJ_DLL Angle(double valueIn, const UnitOfMeasure &unitIn); + + //! @cond Doxygen_Suppress + explicit Angle(const Measure &other) : Angle(other.value(), other.unit()) {} + PROJ_DLL Angle(const Angle &other); + PROJ_DLL ~Angle() override; + //! @endcond + + protected: + PROJ_FRIEND_OPTIONAL(Angle); + Angle &operator=(const Angle &) = delete; +}; + +// --------------------------------------------------------------------------- + +/** \brief Numeric value, with a linear unit of measure. */ +class Length : public Measure { + public: + PROJ_DLL explicit Length(double valueIn = 0.0); + PROJ_DLL Length(double valueIn, const UnitOfMeasure &unitIn); + + //! @cond Doxygen_Suppress + explicit Length(const Measure &other) + : Length(other.value(), other.unit()) {} + PROJ_DLL Length(const Length &other); + PROJ_DLL ~Length() override; + //! @endcond + + protected: + PROJ_FRIEND_OPTIONAL(Length); + Length &operator=(const Length &) = delete; +}; + +// --------------------------------------------------------------------------- + +/** \brief Date-time value, as a ISO:8601 encoded string, or other string + * encoding */ +class DateTime { + public: + //! @cond Doxygen_Suppress + PROJ_DLL DateTime(const DateTime &other); + PROJ_DLL ~DateTime(); + //! @endcond + + PROJ_DLL bool isISO_8601() const; + PROJ_DLL std::string toString() const; + + PROJ_DLL static DateTime + create(const std::string &str); // may throw Exception + + protected: + DateTime(); + PROJ_FRIEND_OPTIONAL(DateTime); + + private: + explicit DateTime(const std::string &str); + DateTime &operator=(const DateTime &other) = delete; + + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +/** \brief Data epoch */ +class DataEpoch { + // FIXME + public: + /** FIXME */ + Measure coordinateEpoch{}; +}; + +// --------------------------------------------------------------------------- + +class IdentifiedObject; +/** Shared pointer of IdentifiedObject. */ +using IdentifiedObjectPtr = std::shared_ptr<IdentifiedObject>; +/** Non-null shared pointer of IdentifiedObject. */ +using IdentifiedObjectNNPtr = util::nn<IdentifiedObjectPtr>; + +/** \brief Abstract class representating a CRS-related object that has an + * identification. + * + * \remark Implements IdentifiedObject from \ref ISO_19111_2018 + */ +class IdentifiedObject : public util::BaseObject, + public util::IComparable, + public io::IWKTExportable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~IdentifiedObject() override; + //! @endcond + + PROJ_DLL static const std::string NAME_KEY; + PROJ_DLL static const std::string IDENTIFIERS_KEY; + PROJ_DLL static const std::string ALIAS_KEY; + PROJ_DLL static const std::string REMARKS_KEY; + PROJ_DLL static const std::string DEPRECATED_KEY; + + // in practice only name().description() is used + PROJ_DLL const metadata::IdentifierNNPtr &name() PROJ_CONST_DECL; + PROJ_DLL const std::string &nameStr() PROJ_CONST_DECL; + PROJ_DLL const std::vector<metadata::IdentifierNNPtr> & + identifiers() PROJ_CONST_DECL; + PROJ_DLL const std::vector<util::GenericNameNNPtr> & + aliases() PROJ_CONST_DECL; + PROJ_DLL const std::string &remarks() PROJ_CONST_DECL; + + // from Apache SIS AbstractIdentifiedObject + PROJ_DLL bool isDeprecated() PROJ_CONST_DECL; + + // Non-standard + PROJ_DLL std::string alias() PROJ_CONST_DECL; + PROJ_DLL int getEPSGCode() PROJ_CONST_DECL; + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + void + formatID(io::WKTFormatter *formatter) const; + void formatRemarks(io::WKTFormatter *formatter) const; + + bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + bool + _isEquivalentTo(const IdentifiedObject *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) PROJ_CONST_DECL; + //! @endcond + + protected: + PROJ_FRIEND_OPTIONAL(IdentifiedObject); + INLINED_MAKE_SHARED + IdentifiedObject(); + IdentifiedObject(const IdentifiedObject &other); + + void setProperties(const util::PropertyMap + &properties); // throw(InvalidValueTypeException) + + private: + PROJ_OPAQUE_PRIVATE_DATA + IdentifiedObject &operator=(const IdentifiedObject &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class ObjectDomain; +/** Shared pointer of ObjectDomain. */ +using ObjectDomainPtr = std::shared_ptr<ObjectDomain>; +/** Non-null shared pointer of ObjectDomain. */ +using ObjectDomainNNPtr = util::nn<ObjectDomainPtr>; + +/** \brief The scope and validity of a CRS-related object. + * + * \remark Implements ObjectDomain from \ref ISO_19111_2018 + */ +class ObjectDomain : public util::BaseObject, public util::IComparable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~ObjectDomain() override; + //! @endcond + + // In ISO_19111:2018, scope and domain are compulsory, but in WKT2:2015, + // they + // are not necessarily both specified + PROJ_DLL const util::optional<std::string> &scope() PROJ_CONST_DECL; + PROJ_DLL const metadata::ExtentPtr &domainOfValidity() PROJ_CONST_DECL; + + PROJ_DLL static ObjectDomainNNPtr + create(const util::optional<std::string> &scopeIn, + const metadata::ExtentPtr &extent); + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + void + _exportToWKT(io::WKTFormatter *formatter) + const; // throw(io::FormattingException) + + bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + //! @endcond + + protected: + //! @cond Doxygen_Suppress + ObjectDomain(const util::optional<std::string> &scopeIn, + const metadata::ExtentPtr &extent); + //! @endcond + + ObjectDomain(const ObjectDomain &other); + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + ObjectDomain &operator=(const ObjectDomain &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class ObjectUsage; +/** Shared pointer of ObjectUsage. */ +using ObjectUsagePtr = std::shared_ptr<ObjectUsage>; +/** Non-null shared pointer of ObjectUsage. */ +using ObjectUsageNNPtr = util::nn<ObjectUsagePtr>; + +/** \brief Abstract class of a CRS-related object that has usages. + * + * \remark Implements ObjectUsage from \ref ISO_19111_2018 + */ +class ObjectUsage : public IdentifiedObject { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~ObjectUsage() override; + //! @endcond + + PROJ_DLL const std::vector<ObjectDomainNNPtr> &domains() PROJ_CONST_DECL; + + PROJ_DLL static const std::string SCOPE_KEY; + PROJ_DLL static const std::string DOMAIN_OF_VALIDITY_KEY; + + PROJ_DLL static const std::string OBJECT_DOMAIN_KEY; + + //! @cond Doxygen_Suppress + bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + //! @endcond + + protected: + ObjectUsage(); + ObjectUsage(const ObjectUsage &other); + void setProperties(const util::PropertyMap + &properties); // throw(InvalidValueTypeException) + + void baseExportToWKT( + io::WKTFormatter *formatter) const; // throw(io::FormattingException) + + private: + PROJ_OPAQUE_PRIVATE_DATA + ObjectUsage &operator=(const ObjectUsage &other) = delete; +}; + +} // namespace common + +NS_PROJ_END + +#endif // COMMON_HH_INCLUDED diff --git a/include/proj/coordinateoperation.hpp b/include/proj/coordinateoperation.hpp new file mode 100644 index 00000000..5e3ecf0b --- /dev/null +++ b/include/proj/coordinateoperation.hpp @@ -0,0 +1,1764 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef COORDINATEOPERATION_HH_INCLUDED +#define COORDINATEOPERATION_HH_INCLUDED + +#include <memory> +#include <string> +#include <utility> +#include <vector> + +#include "common.hpp" +#include "io.hpp" +#include "metadata.hpp" + +NS_PROJ_START + +namespace crs { +class CRS; +using CRSPtr = std::shared_ptr<CRS>; +using CRSNNPtr = util::nn<CRSPtr>; + +class DerivedCRS; +class ProjectedCRS; +} // namespace crs + +/** osgeo.proj.operation namespace + + \brief Coordinate operations (relationship between any two coordinate + reference systems). + + This covers Conversion, Transformation, + PointMotionOperation or ConcatenatedOperation. +*/ +namespace operation { + +// --------------------------------------------------------------------------- + +/** \brief Grid description */ +struct GridDescription { + std::string shortName{}; /**< Grid short filename */ + std::string fullName{}; /**< Grid full path name (if found) */ + std::string packageName{}; /**< Package name (or empty) */ + std::string url{}; /**< Grid URL (if packageName is empty), or package + URL (or empty) */ + bool directDownload = false; /**< Whether url can be fetched directly. */ + bool openLicense = + false; /**< Whether the grid is released with an open license. */ + bool available = false; /**< Whether GRID is available. */ + + //! @cond Doxygen_Suppress + bool operator<(const GridDescription &other) const { + return shortName < other.shortName; + } + + PROJ_DLL GridDescription(); + PROJ_DLL ~GridDescription(); + PROJ_DLL GridDescription(const GridDescription &); + PROJ_DLL GridDescription(GridDescription &&) noexcept; + //! @endcond +}; + +// --------------------------------------------------------------------------- + +class CoordinateOperation; +/** Shared pointer of CoordinateOperation */ +using CoordinateOperationPtr = std::shared_ptr<CoordinateOperation>; +/** Non-null shared pointer of CoordinateOperation */ +using CoordinateOperationNNPtr = util::nn<CoordinateOperationPtr>; + +/** \brief Abstract class for a mathematical operation on coordinates. + * + * A mathematical operation: + * <ul> + * <li>on coordinates that transforms or converts them from one coordinate + * reference system to another coordinate reference system</li> + * <li>or that describes the change of coordinate values within one coordinate + * reference system due to the motion of the point between one coordinate epoch + * and another coordinate epoch.</li> + * </ul> + * Many but not all coordinate operations (from CRS A to CRS B) also uniquely + * define the inverse coordinate operation (from CRS B to CRS A). In some cases, + * the coordinate operation method algorithm for the inverse coordinate + * operation is the same as for the forward algorithm, but the signs of some + * coordinate operation parameter values have to be reversed. In other cases, + * different algorithms are required for the forward and inverse coordinate + * operations, but the same coordinate operation parameter values are used. If + * (some) entirely different parameter values are needed, a different coordinate + * operation shall be defined. + * + * \remark Implements CoordinateOperation from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL CoordinateOperation : public common::ObjectUsage, + public io::IPROJStringExportable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~CoordinateOperation() override; + //! @endcond + + PROJ_DLL const util::optional<std::string> &operationVersion() const; + PROJ_DLL const std::vector<metadata::PositionalAccuracyNNPtr> & + coordinateOperationAccuracies() const; + + PROJ_DLL const crs::CRSPtr sourceCRS() const; + PROJ_DLL const crs::CRSPtr targetCRS() const; + PROJ_DLL const crs::CRSPtr &interpolationCRS() const; + PROJ_DLL const util::optional<common::DataEpoch> & + sourceCoordinateEpoch() const; + PROJ_DLL const util::optional<common::DataEpoch> & + targetCoordinateEpoch() const; + + // virtual void transform(...) = 0; TODO + + /** \brief Return the inverse of the coordinate operation. + * @throw util::UnsupportedOperationException + */ + PROJ_DLL virtual CoordinateOperationNNPtr inverse() const = 0; + + /** \brief Return grids needed by an operation. */ + PROJ_DLL virtual std::set<GridDescription> + gridsNeeded(const io::DatabaseContextPtr &databaseContext) const = 0; + + PROJ_DLL bool + isPROJInstanciable(const io::DatabaseContextPtr &databaseContext) const; + + protected: + PROJ_INTERNAL CoordinateOperation(); + PROJ_INTERNAL CoordinateOperation(const CoordinateOperation &other); + + PROJ_FRIEND(crs::DerivedCRS); + PROJ_FRIEND(io::AuthorityFactory); + PROJ_FRIEND(CoordinateOperationFactory); + PROJ_INTERNAL void + setWeakSourceTargetCRS(std::weak_ptr<crs::CRS> sourceCRSIn, + std::weak_ptr<crs::CRS> targetCRSIn); + PROJ_INTERNAL void setCRSs(const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, + const crs::CRSPtr &interpolationCRSIn); + PROJ_INTERNAL void setCRSs(const CoordinateOperation *in, + bool inverseSourceTarget); + PROJ_INTERNAL + void setAccuracies( + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + + private: + PROJ_OPAQUE_PRIVATE_DATA + CoordinateOperation &operator=(const CoordinateOperation &other) = delete; +}; + +// --------------------------------------------------------------------------- + +/** \brief Abstract class modelling a parameter value (OperationParameter) + * or group of parameters. + * + * \remark Implements GeneralOperationParameter from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL GeneralOperationParameter : public common::IdentifiedObject { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~GeneralOperationParameter() override; + //! @endcond + + //! @cond Doxygen_Suppress + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override = 0; + //! @endcond + + protected: + PROJ_INTERNAL GeneralOperationParameter(); + PROJ_INTERNAL + GeneralOperationParameter(const GeneralOperationParameter &other); + + private: + PROJ_OPAQUE_PRIVATE_DATA + GeneralOperationParameter & + operator=(const GeneralOperationParameter &other) = delete; +}; + +/** Shared pointer of GeneralOperationParameter */ +using GeneralOperationParameterPtr = std::shared_ptr<GeneralOperationParameter>; +/** Non-null shared pointer of GeneralOperationParameter */ +using GeneralOperationParameterNNPtr = util::nn<GeneralOperationParameterPtr>; + +// --------------------------------------------------------------------------- + +class OperationParameter; +/** Shared pointer of OperationParameter */ +using OperationParameterPtr = std::shared_ptr<OperationParameter>; +/** Non-null shared pointer of OperationParameter */ +using OperationParameterNNPtr = util::nn<OperationParameterPtr>; + +/** \brief The definition of a parameter used by a coordinate operation method. + * + * Most parameter values are numeric, but other types of parameter values are + * possible. + * + * \remark Implements OperationParameter from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL OperationParameter final : public GeneralOperationParameter { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~OperationParameter() override; + //! @endcond + + //! @cond Doxygen_Suppress + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + //! @endcond + + // non-standard + PROJ_DLL static OperationParameterNNPtr + create(const util::PropertyMap &properties); + + PROJ_DLL int getEPSGCode() PROJ_CONST_DECL; + + PROJ_DLL static const char *getNameForEPSGCode(int epsg_code) noexcept; + + protected: + PROJ_INTERNAL OperationParameter(); + PROJ_INTERNAL OperationParameter(const OperationParameter &other); + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + OperationParameter &operator=(const OperationParameter &other) = delete; + + // cppcheck-suppress functionStatic + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) +}; + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct MethodMapping; +//! @endcond + +/** \brief Abstract class modelling a parameter value (OperationParameterValue) + * or group of parameter values. + * + * \remark Implements GeneralParameterValue from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL GeneralParameterValue : public util::BaseObject, + public io::IWKTExportable, + public util::IComparable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~GeneralParameterValue() override; + + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override = 0; // throw(io::FormattingException) + + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override = 0; + //! @endcond + + protected: + //! @cond Doxygen_Suppress + PROJ_INTERNAL GeneralParameterValue(); + PROJ_INTERNAL GeneralParameterValue(const GeneralParameterValue &other); + + friend class Conversion; + friend class SingleOperation; + PROJ_INTERNAL virtual void _exportToWKT(io::WKTFormatter *formatter, + const MethodMapping *mapping) + const = 0; // throw(io::FormattingException) + //! @endcond + + private: + PROJ_OPAQUE_PRIVATE_DATA + GeneralParameterValue & + operator=(const GeneralParameterValue &other) = delete; +}; + +/** Shared pointer of GeneralParameterValue */ +using GeneralParameterValuePtr = std::shared_ptr<GeneralParameterValue>; +/** Non-null shared pointer of GeneralParameterValue */ +using GeneralParameterValueNNPtr = util::nn<GeneralParameterValuePtr>; + +// --------------------------------------------------------------------------- + +class ParameterValue; +/** Shared pointer of ParameterValue */ +using ParameterValuePtr = std::shared_ptr<ParameterValue>; +/** Non-null shared pointer of ParameterValue */ +using ParameterValueNNPtr = util::nn<ParameterValuePtr>; + +/** \brief The value of the coordinate operation parameter. + * + * Most parameter values are numeric, but other types of parameter values are + * possible. + * + * \remark Implements ParameterValue from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL ParameterValue final : public util::BaseObject, + public io::IWKTExportable, + public util::IComparable { + public: + /** Type of the value. */ + enum class Type { + /** Measure (i.e. value with a unit) */ + MEASURE, + /** String */ + STRING, + /** Integer */ + INTEGER, + /** Boolean */ + BOOLEAN, + /** Filename */ + FILENAME + }; + //! @cond Doxygen_Suppress + PROJ_DLL ~ParameterValue() override; + + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + //! @endcond + + PROJ_DLL static ParameterValueNNPtr + create(const common::Measure &measureIn); + PROJ_DLL static ParameterValueNNPtr create(const char *stringValueIn); + PROJ_DLL static ParameterValueNNPtr + create(const std::string &stringValueIn); + PROJ_DLL static ParameterValueNNPtr create(int integerValueIn); + PROJ_DLL static ParameterValueNNPtr create(bool booleanValueIn); + PROJ_DLL static ParameterValueNNPtr + createFilename(const std::string &stringValueIn); + + PROJ_DLL const Type &type() PROJ_CONST_DECL; + PROJ_DLL const common::Measure &value() PROJ_CONST_DECL; + PROJ_DLL const std::string &stringValue() PROJ_CONST_DECL; + PROJ_DLL const std::string &valueFile() PROJ_CONST_DECL; + PROJ_DLL int integerValue() PROJ_CONST_DECL; + PROJ_DLL bool booleanValue() PROJ_CONST_DECL; + + //! @cond Doxygen_Suppress + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + //! @endcond + + protected: + PROJ_INTERNAL explicit ParameterValue(const common::Measure &measureIn); + PROJ_INTERNAL explicit ParameterValue(const std::string &stringValueIn, + Type typeIn); + PROJ_INTERNAL explicit ParameterValue(int integerValueIn); + PROJ_INTERNAL explicit ParameterValue(bool booleanValueIn); + INLINED_MAKE_SHARED + private: + PROJ_OPAQUE_PRIVATE_DATA + ParameterValue &operator=(const ParameterValue &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class OperationParameterValue; +/** Shared pointer of OperationParameterValue */ +using OperationParameterValuePtr = std::shared_ptr<OperationParameterValue>; +/** Non-null shared pointer of OperationParameterValue */ +using OperationParameterValueNNPtr = util::nn<OperationParameterValuePtr>; + +/** \brief A parameter value, ordered sequence of values, or reference to a + * file of parameter values. + * + * This combines a OperationParameter with the corresponding ParameterValue. + * + * \remark Implements OperationParameterValue from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL OperationParameterValue final + : public GeneralParameterValue { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~OperationParameterValue() override; + //! @endcond + + PROJ_DLL const OperationParameterNNPtr ¶meter() PROJ_CONST_DECL; + PROJ_DLL const ParameterValueNNPtr ¶meterValue() PROJ_CONST_DECL; + + PROJ_DLL static OperationParameterValueNNPtr + create(const OperationParameterNNPtr ¶meterIn, + const ParameterValueNNPtr &valueIn); + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + PROJ_INTERNAL static bool + convertFromAbridged(const std::string ¶mName, double &val, + const common::UnitOfMeasure *&unit, + int ¶mEPSGCode); + + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + //! @endcond + + protected: + PROJ_INTERNAL + OperationParameterValue(const OperationParameterNNPtr ¶meterIn, + const ParameterValueNNPtr &valueIn); + PROJ_INTERNAL OperationParameterValue(const OperationParameterValue &other); + INLINED_MAKE_SHARED + + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter, + const MethodMapping *mapping) + const override; // throw(io::FormattingException) + + private: + PROJ_OPAQUE_PRIVATE_DATA + OperationParameterValue & + operator=(const OperationParameterValue &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class OperationMethod; +/** Shared pointer of OperationMethod */ +using OperationMethodPtr = std::shared_ptr<OperationMethod>; +/** Non-null shared pointer of OperationMethod */ +using OperationMethodNNPtr = util::nn<OperationMethodPtr>; + +/** \brief The method (algorithm or procedure) used to perform the + * coordinate operation. + * + * For a projection method, this contains the name of the projection method + * and the name of the projection parameters. + * + * \remark Implements OperationMethod from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL OperationMethod : public common::IdentifiedObject { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~OperationMethod() override; + //! @endcond + + PROJ_DLL const util::optional<std::string> &formula() PROJ_CONST_DECL; + PROJ_DLL const util::optional<metadata::Citation> & + formulaCitation() PROJ_CONST_DECL; + PROJ_DLL const std::vector<GeneralOperationParameterNNPtr> & + parameters() PROJ_CONST_DECL; + + PROJ_DLL static OperationMethodNNPtr + create(const util::PropertyMap &properties, + const std::vector<GeneralOperationParameterNNPtr> ¶meters); + + PROJ_DLL static OperationMethodNNPtr + create(const util::PropertyMap &properties, + const std::vector<OperationParameterNNPtr> ¶meters); + + PROJ_DLL int getEPSGCode() PROJ_CONST_DECL; + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + //! @endcond + + protected: + PROJ_INTERNAL OperationMethod(); + PROJ_INTERNAL OperationMethod(const OperationMethod &other); + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + OperationMethod &operator=(const OperationMethod &other) = delete; +}; + +// --------------------------------------------------------------------------- + +/** \brief Exception that can be thrown when an invalid operation is attempted + * to be constructed. + */ +class PROJ_GCC_DLL InvalidOperation : public util::Exception { + public: + //! @cond Doxygen_Suppress + PROJ_INTERNAL explicit InvalidOperation(const char *message); + PROJ_INTERNAL explicit InvalidOperation(const std::string &message); + PROJ_DLL InvalidOperation(const InvalidOperation &other); + PROJ_DLL ~InvalidOperation() override; + //! @endcond +}; + +// --------------------------------------------------------------------------- + +class SingleOperation; +/** Shared pointer of SingleOperation */ +using SingleOperationPtr = std::shared_ptr<SingleOperation>; +/** Non-null shared pointer of SingleOperation */ +using SingleOperationNNPtr = util::nn<SingleOperationPtr>; + +/** \brief A single (not concatenated) coordinate operation + * (CoordinateOperation) + * + * \remark Implements SingleOperation from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL SingleOperation : virtual public CoordinateOperation { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~SingleOperation() override; + //! @endcond + + PROJ_DLL const std::vector<GeneralParameterValueNNPtr> & + parameterValues() PROJ_CONST_DECL; + PROJ_DLL const OperationMethodNNPtr &method() PROJ_CONST_DECL; + + PROJ_DLL const ParameterValuePtr & + parameterValue(const std::string ¶mName, int epsg_code = 0) const + noexcept; + + PROJ_DLL const ParameterValuePtr ¶meterValue(int epsg_code) const + noexcept; + + PROJ_DLL const common::Measure & + parameterValueMeasure(const std::string ¶mName, int epsg_code = 0) const + noexcept; + + PROJ_DLL const common::Measure ¶meterValueMeasure(int epsg_code) const + noexcept; + + PROJ_DLL static SingleOperationNNPtr createPROJBased( + const util::PropertyMap &properties, const std::string &PROJString, + const crs::CRSPtr &sourceCRS, const crs::CRSPtr &targetCRS, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies = + std::vector<metadata::PositionalAccuracyNNPtr>()); + + PROJ_DLL std::set<GridDescription> + gridsNeeded(const io::DatabaseContextPtr &databaseContext) const override; + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + + PROJ_DLL double + parameterValueNumeric(int epsg_code, + const common::UnitOfMeasure &targetUnit) const + noexcept; + + PROJ_INTERNAL double parameterValueNumericAsSI(int epsg_code) const + noexcept; + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + //! @endcond + + protected: + PROJ_INTERNAL explicit SingleOperation( + const OperationMethodNNPtr &methodIn); + PROJ_INTERNAL SingleOperation(const SingleOperation &other); + + PROJ_INTERNAL void + setParameterValues(const std::vector<GeneralParameterValueNNPtr> &values); + + PROJ_INTERNAL void + exportTransformationToWKT(io::WKTFormatter *formatter) const; + + PROJ_INTERNAL bool + exportToPROJStringGeneric(io::PROJStringFormatter *formatter) const; + + private: + PROJ_OPAQUE_PRIVATE_DATA + SingleOperation &operator=(const SingleOperation &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class Conversion; +/** Shared pointer of Conversion */ +using ConversionPtr = std::shared_ptr<Conversion>; +/** Non-null shared pointer of Conversion */ +using ConversionNNPtr = util::nn<ConversionPtr>; + +/** \brief A mathematical operation on coordinates in which the parameter + * values are defined rather than empirically derived. + * + * Application of the coordinate conversion introduces no error into output + * coordinates. The best-known example of a coordinate conversion is a map + * projection. For coordinate conversions the output coordinates are referenced + * to the same datum as are the input coordinates. + * + * Coordinate conversions forming a component of a derived CRS have a source + * crs::CRS and a target crs::CRS that are NOT specified through the source and + * target + * associations, but through associations from crs::DerivedCRS to + * crs::SingleCRS. + * + * \remark Implements Conversion from \ref ISO_19111_2018 + */ + +/*! + +\section projection_parameters Projection parameters + +\subsection colatitude_cone_axis Co-latitude of cone axis + +The rotation applied to spherical coordinates for the oblique projection, +measured on the conformal sphere in the plane of the meridian of origin. + +EPSG:1036 + +\subsection center_latitude Latitude of natural origin/Center Latitude + +The latitude of the point from which the values of both the geographical +coordinates on the ellipsoid and the grid coordinates on the projection are +deemed to increment or decrement for computational purposes. Alternatively it +may be considered as the latitude of the point which in the absence of +application of false coordinates has grid coordinates of (0,0). + +EPSG:8801 + +\subsection center_longitude Longitude of natural origin/Central Meridian + +The longitude of the point from which the values of both the geographical +coordinates on the ellipsoid and the grid coordinates on the projection are +deemed to increment or decrement for computational purposes. Alternatively it +may be considered as the longitude of the point which in the absence of +application of false coordinates has grid coordinates of (0,0). Sometimes known +as "central meridian (CM)". + +EPSG:8802 + +\subsection scale Scale Factor + +The factor by which the map grid is reduced or enlarged during the projection +process, defined by its value at the natural origin. + +EPSG:8805 + +\subsection false_easting False Easting + +Since the natural origin may be at or near the centre of the projection and +under normal coordinate circumstances would thus give rise to negative +coordinates over parts of the mapped area, this origin is usually given false +coordinates which are large enough to avoid this inconvenience. The False +Easting, FE, is the value assigned to the abscissa (east or west) axis of the +projection grid at the natural origin. + +EPSG:8806 + +\subsection false_northing False Northing + +Since the natural origin may be at or near the centre of the projection and +under normal coordinate circumstances would thus give rise to negative +coordinates over parts of the mapped area, this origin is usually given false +coordinates which are large enough to avoid this inconvenience. The False +Northing, FN, is the value assigned to the ordinate (north or south) axis of the +projection grid at the natural origin. + +EPSG:8807 + +\subsection latitude_projection_centre Latitute of projection centre + +For an oblique projection, this is the latitude of the point at which the +azimuth of the central line is defined. + +EPSG:8811 + +\subsection longitude_projection_centre Longitude of projection centre + +For an oblique projection, this is the longitude of the point at which the +azimuth of the central line is defined. + +EPSG:8812 + +\subsection azimuth_initial_line Azimuth of initial line + +The azimuthal direction (north zero, east of north being positive) of the great +circle which is the centre line of an oblique projection. The azimuth is given +at the projection centre. + +EPSG:8813 + +\subsection angle_from_recitfied_to_skrew_grid Angle from Rectified to Skew Grid + +The angle at the natural origin of an oblique projection through which the +natural coordinate reference system is rotated to make the projection north +axis parallel with true north. + +EPSG:8814 + +\subsection scale_factor_initial_line Scale factor on initial line + +The factor by which the map grid is reduced or enlarged during the projection +process, defined by its value at the projection center. + +EPSG:8815 + +\subsection easting_projection_centre Easting at projection centre + +The easting value assigned to the projection centre. + +EPSG:8816 + +\subsection northing_projection_centre Northing at projection centre + +The northing value assigned to the projection centre. + +EPSG:8817 + +\subsection latitude_pseudo_standard_parallel Latitude of pseudo standard +parallel + +Latitude of the parallel on which the conic or cylindrical projection is based. +This latitude is not geographic, but is defined on the conformal sphere AFTER +its rotation to obtain the oblique aspect of the projection. + +EPSG:8818 + +\subsection scale_factor_pseudo_standard_parallel Scale factor on pseudo +standard parallel + +The factor by which the map grid is reduced or enlarged during the projection +process, defined by its value at the pseudo-standard parallel. +EPSG:8819 + +\subsection latitude_false_origin Latitude of false origin + +The latitude of the point which is not the natural origin and at which grid +coordinate values false easting and false northing are defined. + +EPSG:8821 + +\subsection longitude_false_origin Longitude of false origin + +The longitude of the point which is not the natural origin and at which grid +coordinate values false easting and false northing are defined. + +EPSG:8822 + +\subsection latitude_first_std_parallel Latitude of 1st standard parallel + +For a conic projection with two standard parallels, this is the latitude of one +of the parallels of intersection of the cone with the ellipsoid. It is normally +but not necessarily that nearest to the pole. Scale is true along this parallel. + +EPSG:8823 + +\subsection latitude_second_std_parallel Latitude of 2nd standard parallel + +For a conic projection with two standard parallels, this is the latitude of one +of the parallels at which the cone intersects with the ellipsoid. It is normally +but not necessarily that nearest to the equator. Scale is true along this +parallel. + +EPSG:8824 + +\subsection easting_false_origin Easting of false origin + +The easting value assigned to the false origin. + +EPSG:8826 + +\subsection northing_false_origin Northing of false origin + +The northing value assigned to the false origin. + +EPSG:8827 + +\subsection latitude_std_parallel Latitude of standard parallel + +For polar aspect azimuthal projections, the parallel on which the scale factor +is defined to be unity. + +EPSG:8832 + +\subsection longitude_of_origin Longitude of origin + +For polar aspect azimuthal projections, the meridian along which the +northing axis increments and also across which parallels of latitude +increment towards the north pole. + +EPSG:8833 + +*/ + +class PROJ_GCC_DLL Conversion : public SingleOperation { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~Conversion() override; + //! @endcond + + //! @cond Doxygen_Suppress + PROJ_INTERNAL ConversionNNPtr shallowClone() const; + //! @endcond + + PROJ_DLL CoordinateOperationNNPtr inverse() const override; + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + //! @endcond + + PROJ_DLL bool isUTM(int &zone, bool &north) const; + + PROJ_DLL ConversionNNPtr identify() const; + + PROJ_DLL static ConversionNNPtr + create(const util::PropertyMap &properties, + const OperationMethodNNPtr &methodIn, + const std::vector<GeneralParameterValueNNPtr> + &values); // throw InvalidOperation + + PROJ_DLL static ConversionNNPtr + create(const util::PropertyMap &propertiesConversion, + const util::PropertyMap &propertiesOperationMethod, + const std::vector<OperationParameterNNPtr> ¶meters, + const std::vector<ParameterValueNNPtr> + &values); // throw InvalidOperation + + PROJ_DLL static ConversionNNPtr + createUTM(const util::PropertyMap &properties, int zone, bool north); + + PROJ_DLL static ConversionNNPtr createTransverseMercator( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Scale &scale, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createGaussSchreiberTransverseMercator( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Scale &scale, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createTransverseMercatorSouthOriented( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Scale &scale, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createTwoPointEquidistant(const util::PropertyMap &properties, + const common::Angle &latitudeFirstPoint, + const common::Angle &longitudeFirstPoint, + const common::Angle &latitudeSecondPoint, + const common::Angle &longitudeSeconPoint, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createTunisiaMappingGrid( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createAlbersEqualArea(const util::PropertyMap &properties, + const common::Angle &latitudeFalseOrigin, + const common::Angle &longitudeFalseOrigin, + const common::Angle &latitudeFirstParallel, + const common::Angle &latitudeSecondParallel, + const common::Length &eastingFalseOrigin, + const common::Length &northingFalseOrigin); + + PROJ_DLL static ConversionNNPtr createLambertConicConformal_1SP( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Scale &scale, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createLambertConicConformal_2SP(const util::PropertyMap &properties, + const common::Angle &latitudeFalseOrigin, + const common::Angle &longitudeFalseOrigin, + const common::Angle &latitudeFirstParallel, + const common::Angle &latitudeSecondParallel, + const common::Length &eastingFalseOrigin, + const common::Length &northingFalseOrigin); + + PROJ_DLL static ConversionNNPtr createLambertConicConformal_2SP_Michigan( + const util::PropertyMap &properties, + const common::Angle &latitudeFalseOrigin, + const common::Angle &longitudeFalseOrigin, + const common::Angle &latitudeFirstParallel, + const common::Angle &latitudeSecondParallel, + const common::Length &eastingFalseOrigin, + const common::Length &northingFalseOrigin, + const common::Scale &ellipsoidScalingFactor); + + PROJ_DLL static ConversionNNPtr createLambertConicConformal_2SP_Belgium( + const util::PropertyMap &properties, + const common::Angle &latitudeFalseOrigin, + const common::Angle &longitudeFalseOrigin, + const common::Angle &latitudeFirstParallel, + const common::Angle &latitudeSecondParallel, + const common::Length &eastingFalseOrigin, + const common::Length &northingFalseOrigin); + + PROJ_DLL static ConversionNNPtr + createAzimuthalEquidistant(const util::PropertyMap &properties, + const common::Angle &latitudeNatOrigin, + const common::Angle &longitudeNatOrigin, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createGuamProjection(const util::PropertyMap &properties, + const common::Angle &latitudeNatOrigin, + const common::Angle &longitudeNatOrigin, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createBonne(const util::PropertyMap &properties, + const common::Angle &latitudeNatOrigin, + const common::Angle &longitudeNatOrigin, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createLambertCylindricalEqualAreaSpherical( + const util::PropertyMap &properties, + const common::Angle &latitudeFirstParallel, + const common::Angle &longitudeNatOrigin, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createLambertCylindricalEqualArea( + const util::PropertyMap &properties, + const common::Angle &latitudeFirstParallel, + const common::Angle &longitudeNatOrigin, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createCassiniSoldner( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createEquidistantConic(const util::PropertyMap &properties, + const common::Angle ¢erLat, + const common::Angle ¢erLong, + const common::Angle &latitudeFirstParallel, + const common::Angle &latitudeSecondParallel, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createEckertI(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createEckertII(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createEckertIII(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createEckertIV(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createEckertV(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createEckertVI(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createEquidistantCylindrical(const util::PropertyMap &properties, + const common::Angle &latitudeFirstParallel, + const common::Angle &longitudeNatOrigin, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createEquidistantCylindricalSpherical( + const util::PropertyMap &properties, + const common::Angle &latitudeFirstParallel, + const common::Angle &longitudeNatOrigin, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createGall(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createGoodeHomolosine(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createInterruptedGoodeHomolosine(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createGeostationarySatelliteSweepX( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &height, const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createGeostationarySatelliteSweepY( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &height, const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createGnomonic( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createHotineObliqueMercatorVariantA( + const util::PropertyMap &properties, + const common::Angle &latitudeProjectionCentre, + const common::Angle &longitudeProjectionCentre, + const common::Angle &azimuthInitialLine, + const common::Angle &angleFromRectifiedToSkrewGrid, + const common::Scale &scale, const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createHotineObliqueMercatorVariantB( + const util::PropertyMap &properties, + const common::Angle &latitudeProjectionCentre, + const common::Angle &longitudeProjectionCentre, + const common::Angle &azimuthInitialLine, + const common::Angle &angleFromRectifiedToSkrewGrid, + const common::Scale &scale, + const common::Length &eastingProjectionCentre, + const common::Length &northingProjectionCentre); + + PROJ_DLL static ConversionNNPtr + createHotineObliqueMercatorTwoPointNaturalOrigin( + const util::PropertyMap &properties, + const common::Angle &latitudeProjectionCentre, + const common::Angle &latitudePoint1, + const common::Angle &longitudePoint1, + const common::Angle &latitudePoint2, + const common::Angle &longitudePoint2, const common::Scale &scale, + const common::Length &eastingProjectionCentre, + const common::Length &northingProjectionCentre); + + PROJ_DLL static ConversionNNPtr createInternationalMapWorldPolyconic( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Angle &latitudeFirstParallel, + const common::Angle &latitudeSecondParallel, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createKrovakNorthOriented( + const util::PropertyMap &properties, + const common::Angle &latitudeProjectionCentre, + const common::Angle &longitudeOfOrigin, + const common::Angle &colatitudeConeAxis, + const common::Angle &latitudePseudoStandardParallel, + const common::Scale &scaleFactorPseudoStandardParallel, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createKrovak(const util::PropertyMap &properties, + const common::Angle &latitudeProjectionCentre, + const common::Angle &longitudeOfOrigin, + const common::Angle &colatitudeConeAxis, + const common::Angle &latitudePseudoStandardParallel, + const common::Scale &scaleFactorPseudoStandardParallel, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createLambertAzimuthalEqualArea(const util::PropertyMap &properties, + const common::Angle &latitudeNatOrigin, + const common::Angle &longitudeNatOrigin, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createMillerCylindrical(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createMercatorVariantA( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Scale &scale, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createMercatorVariantB(const util::PropertyMap &properties, + const common::Angle &latitudeFirstParallel, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createPopularVisualisationPseudoMercator( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createMollweide(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createNewZealandMappingGrid( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createObliqueStereographic( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Scale &scale, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createOrthographic( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createAmericanPolyconic( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createPolarStereographicVariantA( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Scale &scale, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createPolarStereographicVariantB( + const util::PropertyMap &properties, + const common::Angle &latitudeStandardParallel, + const common::Angle &longitudeOfOrigin, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createRobinson(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createSinusoidal(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createStereographic( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Scale &scale, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createVanDerGrinten(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createWagnerI(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createWagnerII(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createWagnerIII(const util::PropertyMap &properties, + const common::Angle &latitudeTrueScale, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createWagnerIV(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createWagnerV(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createWagnerVI(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createWagnerVII(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createQuadrilateralizedSphericalCube( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr createSphericalCrossTrackHeight( + const util::PropertyMap &properties, const common::Angle &pegPointLat, + const common::Angle &pegPointLong, const common::Angle &pegPointHeading, + const common::Length &pegPointHeight); + + PROJ_DLL static ConversionNNPtr + createEqualEarth(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing); + + PROJ_DLL static ConversionNNPtr + createChangeVerticalUnit(const util::PropertyMap &properties, + const common::Scale &factor); + + PROJ_DLL static ConversionNNPtr createAxisOrderReversal(bool is3D); + + PROJ_DLL static ConversionNNPtr + createGeographicGeocentric(const util::PropertyMap &properties); + + PROJ_DLL ConversionPtr convertToOtherMethod(int targetEPSGCode) const; + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + PROJ_INTERNAL void + _exportToPROJString(io::PROJStringFormatter *formatter) + const override; // throw(FormattingException) + + PROJ_INTERNAL const char *getESRIMethodName() const; + + PROJ_INTERNAL const char *getWKT1GDALMethodName() const; + //! @endcond + + protected: + PROJ_INTERNAL + Conversion(const OperationMethodNNPtr &methodIn, + const std::vector<GeneralParameterValueNNPtr> &values); + PROJ_INTERNAL Conversion(const Conversion &other); + INLINED_MAKE_SHARED + + PROJ_FRIEND(crs::ProjectedCRS); + PROJ_INTERNAL void addWKTExtensionNode(io::WKTFormatter *formatter) const; + + private: + PROJ_OPAQUE_PRIVATE_DATA + Conversion &operator=(const Conversion &other) = delete; + + PROJ_INTERNAL static ConversionNNPtr + create(const util::PropertyMap &properties, int method_epsg_code, + const std::vector<ParameterValueNNPtr> &values); + + PROJ_INTERNAL static ConversionNNPtr + create(const util::PropertyMap &properties, const char *method_wkt2_name, + const std::vector<ParameterValueNNPtr> &values); +}; + +// --------------------------------------------------------------------------- + +class Transformation; +/** Shared pointer of Transformation */ +using TransformationPtr = std::shared_ptr<Transformation>; +/** Non-null shared pointer of Transformation */ +using TransformationNNPtr = util::nn<TransformationPtr>; + +/** \brief A mathematical operation on coordinates in which parameters are + * empirically derived from data containing the coordinates of a series of + * points in both coordinate reference systems. + * + * This computational process is usually "over-determined", allowing derivation + * of error (or accuracy) estimates for the coordinate transformation. Also, + * the stochastic nature of the parameters may result in multiple (different) + * versions of the same coordinate transformations between the same source and + * target CRSs. Any single coordinate operation in which the input and output + * coordinates are referenced to different datums (reference frames) will be a + * coordinate transformation. + * + * \remark Implements Transformation from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL Transformation : public SingleOperation { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~Transformation() override; + //! @endcond + + PROJ_DLL const crs::CRSNNPtr &sourceCRS() PROJ_CONST_DECL; + PROJ_DLL const crs::CRSNNPtr &targetCRS() PROJ_CONST_DECL; + + PROJ_DLL CoordinateOperationNNPtr inverse() const override; + + PROJ_DLL static TransformationNNPtr + create(const util::PropertyMap &properties, + const crs::CRSNNPtr &sourceCRSIn, const crs::CRSNNPtr &targetCRSIn, + const crs::CRSPtr &interpolationCRSIn, + const OperationMethodNNPtr &methodIn, + const std::vector<GeneralParameterValueNNPtr> &values, + const std::vector<metadata::PositionalAccuracyNNPtr> + &accuracies); // throw InvalidOperation + + PROJ_DLL static TransformationNNPtr + create(const util::PropertyMap &propertiesTransformation, + const crs::CRSNNPtr &sourceCRSIn, const crs::CRSNNPtr &targetCRSIn, + const crs::CRSPtr &interpolationCRSIn, + const util::PropertyMap &propertiesOperationMethod, + const std::vector<OperationParameterNNPtr> ¶meters, + const std::vector<ParameterValueNNPtr> &values, + const std::vector<metadata::PositionalAccuracyNNPtr> + &accuracies); // throw InvalidOperation + + PROJ_DLL static TransformationNNPtr createGeocentricTranslations( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, double translationXMetre, + double translationYMetre, double translationZMetre, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + + PROJ_DLL static TransformationNNPtr createPositionVector( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, double translationXMetre, + double translationYMetre, double translationZMetre, + double rotationXArcSecond, double rotationYArcSecond, + double rotationZArcSecond, double scaleDifferencePPM, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + + PROJ_DLL static TransformationNNPtr createCoordinateFrameRotation( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, double translationXMetre, + double translationYMetre, double translationZMetre, + double rotationXArcSecond, double rotationYArcSecond, + double rotationZArcSecond, double scaleDifferencePPM, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + + PROJ_DLL static TransformationNNPtr createTimeDependentPositionVector( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, double translationXMetre, + double translationYMetre, double translationZMetre, + double rotationXArcSecond, double rotationYArcSecond, + double rotationZArcSecond, double scaleDifferencePPM, + double rateTranslationX, double rateTranslationY, + double rateTranslationZ, double rateRotationX, double rateRotationY, + double rateRotationZ, double rateScaleDifference, + double referenceEpochYear, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + + PROJ_DLL static TransformationNNPtr + createTimeDependentCoordinateFrameRotation( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, double translationXMetre, + double translationYMetre, double translationZMetre, + double rotationXArcSecond, double rotationYArcSecond, + double rotationZArcSecond, double scaleDifferencePPM, + double rateTranslationX, double rateTranslationY, + double rateTranslationZ, double rateRotationX, double rateRotationY, + double rateRotationZ, double rateScaleDifference, + double referenceEpochYear, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + + PROJ_DLL static TransformationNNPtr createTOWGS84( + const crs::CRSNNPtr &sourceCRSIn, + const std::vector<double> &TOWGS84Parameters); // throw InvalidOperation + + PROJ_DLL static TransformationNNPtr createNTv2( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, const std::string &filename, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + + PROJ_DLL static TransformationNNPtr createMolodensky( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, double translationXMetre, + double translationYMetre, double translationZMetre, + double semiMajorAxisDifferenceMetre, double flattingDifference, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + + PROJ_DLL static TransformationNNPtr createAbridgedMolodensky( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, double translationXMetre, + double translationYMetre, double translationZMetre, + double semiMajorAxisDifferenceMetre, double flattingDifference, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + + PROJ_DLL static TransformationNNPtr + createGravityRelatedHeightToGeographic3D( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, const std::string &filename, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + + PROJ_DLL static TransformationNNPtr createVERTCON( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, const std::string &filename, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + + PROJ_DLL static TransformationNNPtr createLongitudeRotation( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, const common::Angle &offset); + + PROJ_DLL static TransformationNNPtr createGeographic2DOffsets( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, const common::Angle &offsetLat, + const common::Angle &offsetLon, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + + PROJ_DLL static TransformationNNPtr createGeographic3DOffsets( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, const common::Angle &offsetLat, + const common::Angle &offsetLon, const common::Length &offsetHeight, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + + PROJ_DLL static TransformationNNPtr createGeographic2DWithHeightOffsets( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, const common::Angle &offsetLat, + const common::Angle &offsetLon, const common::Length &offsetHeight, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + + PROJ_DLL static TransformationNNPtr createVerticalOffset( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, const common::Length &offsetHeight, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + + PROJ_DLL TransformationNNPtr substitutePROJAlternativeGridNames( + io::DatabaseContextNNPtr databaseContext) const; + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + PROJ_INTERNAL const std::string & + getNTv2Filename() const; + + PROJ_FOR_TEST std::vector<double> + getTOWGS84Parameters() const; // throw(io::FormattingException) + + PROJ_INTERNAL const std::string &getHeightToGeographic3DFilename() const; + + PROJ_INTERNAL bool isLongitudeRotation() const; + + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + + //! @endcond + + protected: + PROJ_INTERNAL Transformation( + const crs::CRSNNPtr &sourceCRSIn, const crs::CRSNNPtr &targetCRSIn, + const crs::CRSPtr &interpolationCRSIn, + const OperationMethodNNPtr &methodIn, + const std::vector<GeneralParameterValueNNPtr> &values, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + INLINED_MAKE_SHARED + + PROJ_INTERNAL void _exportToPROJString(io::PROJStringFormatter *formatter) + const override; // throw(FormattingException) + + PROJ_INTERNAL TransformationNNPtr inverseAsTransformation() const; + + private: + PROJ_OPAQUE_PRIVATE_DATA + Transformation(const Transformation &) = delete; +}; + +// --------------------------------------------------------------------------- + +class PointMotionOperation; +/** Shared pointer of PointMotionOperation */ +using PointMotionOperationPtr = std::shared_ptr<PointMotionOperation>; +/** Non-null shared pointer of PointMotionOperation */ +using PointMotionOperationNNPtr = util::nn<PointMotionOperationPtr>; + +/** \brief A mathematical operation that describes the change of coordinate + * values within one coordinate reference system due to the motion of the + * point between one coordinate epoch and another coordinate epoch. + * + * The motion is due to tectonic plate movement or deformation. + * + * \remark Implements PointMotionOperation from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL PointMotionOperation : public SingleOperation { + public: + // TODO + //! @cond Doxygen_Suppress + PROJ_DLL ~PointMotionOperation() override; + //! @endcond + + private: + PointMotionOperation(const PointMotionOperation &) = delete; +}; + +// --------------------------------------------------------------------------- + +class ConcatenatedOperation; +/** Shared pointer of ConcatenatedOperation */ +using ConcatenatedOperationPtr = std::shared_ptr<ConcatenatedOperation>; +/** Non-null shared pointer of ConcatenatedOperation */ +using ConcatenatedOperationNNPtr = util::nn<ConcatenatedOperationPtr>; + +/** \brief An ordered sequence of two or more single coordinate operations + * (SingleOperation). + * + * The sequence of coordinate operations is constrained by the requirement + * that + * the source coordinate reference system of step n+1 shall be the same as + * the target coordinate reference system of step n. + * + * \remark Implements ConcatenatedOperation from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL ConcatenatedOperation final : public CoordinateOperation { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~ConcatenatedOperation() override; + //! @endcond + + PROJ_DLL const std::vector<CoordinateOperationNNPtr> &operations() const; + + PROJ_DLL CoordinateOperationNNPtr inverse() const override; + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + //! @endcond + + PROJ_DLL static ConcatenatedOperationNNPtr + create(const util::PropertyMap &properties, + const std::vector<CoordinateOperationNNPtr> &operationsIn, + const std::vector<metadata::PositionalAccuracyNNPtr> + &accuracies); // throw InvalidOperation + + PROJ_DLL static CoordinateOperationNNPtr createComputeMetadata( + const std::vector<CoordinateOperationNNPtr> &operationsIn, + bool checkExtent); // throw InvalidOperation + + PROJ_DLL std::set<GridDescription> + gridsNeeded(const io::DatabaseContextPtr &databaseContext) const override; + + protected: + PROJ_INTERNAL explicit ConcatenatedOperation( + const std::vector<CoordinateOperationNNPtr> &operationsIn); + + PROJ_INTERNAL void _exportToPROJString(io::PROJStringFormatter *formatter) + const override; // throw(FormattingException) + + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + ConcatenatedOperation & + operator=(const ConcatenatedOperation &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class CoordinateOperationContext; +/** Unique pointer of CoordinateOperationContext */ +using CoordinateOperationContextPtr = + std::unique_ptr<CoordinateOperationContext>; +/** Non-null unique pointer of CoordinateOperationContext */ +using CoordinateOperationContextNNPtr = util::nn<CoordinateOperationContextPtr>; + +/** \brief Context in which a coordinate operation is to be used. + * + * \remark Implements [CoordinateOperationFactory + * https://sis.apache.org/apidocs/org/apache/sis/referencing/operation/CoordinateOperationContext.html] + * from + * Apache SIS + */ + +class PROJ_GCC_DLL CoordinateOperationContext { + public: + //! @cond Doxygen_Suppress + PROJ_DLL virtual ~CoordinateOperationContext(); + //! @endcond + + PROJ_DLL const io::AuthorityFactoryPtr &getAuthorityFactory() const; + + PROJ_DLL const metadata::ExtentPtr &getAreaOfInterest() const; + + PROJ_DLL void setAreaOfInterest(const metadata::ExtentPtr &extent); + + PROJ_DLL double getDesiredAccuracy() const; + + PROJ_DLL void setDesiredAccuracy(double accuracy); + + /** Specify how source and target CRS extent should be used to restrict + * candidate operations (only taken into account if no explicit area of + * interest is specified. */ + enum class SourceTargetCRSExtentUse { + /** Ignore CRS extent */ + NONE, + /** Test coordinate operation extent against both CRS extent. */ + BOTH, + /** Test coordinate operation extent against the intersection of both + CRS extent. */ + INTERSECTION, + /** Test coordinate operation against the smallest of both CRS extent. + */ + SMALLEST, + }; + + PROJ_DLL void setSourceAndTargetCRSExtentUse(SourceTargetCRSExtentUse use); + + PROJ_DLL SourceTargetCRSExtentUse getSourceAndTargetCRSExtentUse() const; + + /** Spatial criterion to restrict candiate operations. */ + enum class SpatialCriterion { + /** The area of validity of transforms should strictly contain the + * are of interest. */ + STRICT_CONTAINMENT, + + /** The area of validity of transforms should at least intersect the + * area of interest. */ + PARTIAL_INTERSECTION + }; + + PROJ_DLL void setSpatialCriterion(SpatialCriterion criterion); + + PROJ_DLL SpatialCriterion getSpatialCriterion() const; + + PROJ_DLL void setUsePROJAlternativeGridNames(bool usePROJNames); + + PROJ_DLL bool getUsePROJAlternativeGridNames() const; + + /** Describe how grid availability is used. */ + enum class GridAvailabilityUse { + /** Grid availability is only used for sorting results. Operations + * where some grids are missing will be sorted last. */ + USE_FOR_SORTING, + + /** Completely discard an operation if a required grid is missing. */ + DISCARD_OPERATION_IF_MISSING_GRID, + + /** Ignore grid availability at all. Results will be presented as if + * all grids were available. */ + IGNORE_GRID_AVAILABILITY, + }; + + PROJ_DLL void setGridAvailabilityUse(GridAvailabilityUse use); + + PROJ_DLL GridAvailabilityUse getGridAvailabilityUse() const; + + PROJ_DLL void setAllowUseIntermediateCRS(bool use); + + PROJ_DLL bool getAllowUseIntermediateCRS() const; + + PROJ_DLL void + setIntermediateCRS(const std::vector<std::pair<std::string, std::string>> + &intermediateCRSAuthCodes); + + PROJ_DLL const std::vector<std::pair<std::string, std::string>> & + getIntermediateCRS() const; + + PROJ_DLL static CoordinateOperationContextNNPtr + create(const io::AuthorityFactoryPtr &authorityFactory, + const metadata::ExtentPtr &extent, double accuracy); + + protected: + PROJ_INTERNAL CoordinateOperationContext(); + INLINED_MAKE_UNIQUE + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +class CoordinateOperationFactory; +/** Unique pointer of CoordinateOperationFactory */ +using CoordinateOperationFactoryPtr = + std::unique_ptr<CoordinateOperationFactory>; +/** Non-null unique pointer of CoordinateOperationFactory */ +using CoordinateOperationFactoryNNPtr = util::nn<CoordinateOperationFactoryPtr>; + +/** \brief Creates coordinate operations. This factory is capable to find + * coordinate transformations or conversions between two coordinate + * reference + * systems. + * + * \remark Implements (partially) CoordinateOperationFactory from \ref + * GeoAPI + */ +class PROJ_GCC_DLL CoordinateOperationFactory { + public: + //! @cond Doxygen_Suppress + PROJ_DLL virtual ~CoordinateOperationFactory(); + //! @endcond + + PROJ_DLL CoordinateOperationPtr createOperation( + const crs::CRSNNPtr &sourceCRS, const crs::CRSNNPtr &targetCRS) const; + + PROJ_DLL std::vector<CoordinateOperationNNPtr> + createOperations(const crs::CRSNNPtr &sourceCRS, + const crs::CRSNNPtr &targetCRS, + const CoordinateOperationContextNNPtr &context) const; + + PROJ_DLL static CoordinateOperationFactoryNNPtr create(); + + protected: + PROJ_INTERNAL CoordinateOperationFactory(); + INLINED_MAKE_UNIQUE + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +} // namespace operation + +NS_PROJ_END + +#endif // COORDINATEOPERATION_HH_INCLUDED diff --git a/include/proj/coordinatesystem.hpp b/include/proj/coordinatesystem.hpp new file mode 100644 index 00000000..89c2f99c --- /dev/null +++ b/include/proj/coordinatesystem.hpp @@ -0,0 +1,701 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef CS_HH_INCLUDED +#define CS_HH_INCLUDED + +#include <memory> +#include <set> +#include <string> +#include <vector> + +#include "common.hpp" +#include "io.hpp" +#include "util.hpp" + +NS_PROJ_START + +/** osgeo.proj.cs namespace + + \brief Coordinate systems and their axis. +*/ +namespace cs { + +// --------------------------------------------------------------------------- + +/** \brief The direction of positive increase in the coordinate value for a + * coordinate system axis. + * + * \remark Implements AxisDirection from \ref ISO_19111_2018 + */ +class AxisDirection : public util::CodeList { + public: + //! @cond Doxygen_Suppress + PROJ_DLL static const AxisDirection * + valueOf(const std::string &nameIn) noexcept; + //! @endcond + + PROJ_DLL static const AxisDirection NORTH; + PROJ_DLL static const AxisDirection NORTH_NORTH_EAST; + PROJ_DLL static const AxisDirection NORTH_EAST; + PROJ_DLL static const AxisDirection EAST_NORTH_EAST; + PROJ_DLL static const AxisDirection EAST; + PROJ_DLL static const AxisDirection EAST_SOUTH_EAST; + PROJ_DLL static const AxisDirection SOUTH_EAST; + PROJ_DLL static const AxisDirection SOUTH_SOUTH_EAST; + PROJ_DLL static const AxisDirection SOUTH; + PROJ_DLL static const AxisDirection SOUTH_SOUTH_WEST; + PROJ_DLL static const AxisDirection SOUTH_WEST; + PROJ_DLL static const AxisDirection + WEST_SOUTH_WEST; // note: was forgotten in WKT2-2015 + PROJ_DLL static const AxisDirection WEST; + PROJ_DLL static const AxisDirection WEST_NORTH_WEST; + PROJ_DLL static const AxisDirection NORTH_WEST; + PROJ_DLL static const AxisDirection NORTH_NORTH_WEST; + PROJ_DLL static const AxisDirection UP; + PROJ_DLL static const AxisDirection DOWN; + PROJ_DLL static const AxisDirection GEOCENTRIC_X; + PROJ_DLL static const AxisDirection GEOCENTRIC_Y; + PROJ_DLL static const AxisDirection GEOCENTRIC_Z; + PROJ_DLL static const AxisDirection COLUMN_POSITIVE; + PROJ_DLL static const AxisDirection COLUMN_NEGATIVE; + PROJ_DLL static const AxisDirection ROW_POSITIVE; + PROJ_DLL static const AxisDirection ROW_NEGATIVE; + PROJ_DLL static const AxisDirection DISPLAY_RIGHT; + PROJ_DLL static const AxisDirection DISPLAY_LEFT; + PROJ_DLL static const AxisDirection DISPLAY_UP; + PROJ_DLL static const AxisDirection DISPLAY_DOWN; + PROJ_DLL static const AxisDirection FORWARD; + PROJ_DLL static const AxisDirection AFT; + PROJ_DLL static const AxisDirection PORT; + PROJ_DLL static const AxisDirection STARBOARD; + PROJ_DLL static const AxisDirection CLOCKWISE; + PROJ_DLL static const AxisDirection COUNTER_CLOCKWISE; + PROJ_DLL static const AxisDirection TOWARDS; + PROJ_DLL static const AxisDirection AWAY_FROM; + PROJ_DLL static const AxisDirection FUTURE; + PROJ_DLL static const AxisDirection PAST; + PROJ_DLL static const AxisDirection UNSPECIFIED; + + private: + explicit AxisDirection(const std::string &nameIn); + + static std::map<std::string, const AxisDirection *> registry; +}; + +// --------------------------------------------------------------------------- + +class Meridian; +/** Shared pointer of Meridian. */ +using MeridianPtr = std::shared_ptr<Meridian>; +/** Non-null shared pointer of Meridian. */ +using MeridianNNPtr = util::nn<MeridianPtr>; + +/** \brief The meridian that the axis follows from the pole, for a coordinate + * reference system centered on a pole. + * + * \note There is no modelling for this concept in \ref ISO_19111_2018 + * + * \remark Implements MERIDIAN from \ref WKT2 + */ +class PROJ_GCC_DLL Meridian : public common::IdentifiedObject { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~Meridian() override; + //! @endcond + + PROJ_DLL const common::Angle &longitude() PROJ_CONST_DECL; + + // non-standard + PROJ_DLL static MeridianNNPtr create(const common::Angle &longitudeIn); + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + //! @endcond + + protected: +#ifdef DOXYGEN_ENABLED + Angle angle_; +#endif + + PROJ_INTERNAL explicit Meridian(const common::Angle &longitudeIn); + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + Meridian(const Meridian &other) = delete; + Meridian &operator=(const Meridian &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class CoordinateSystemAxis; +/** Shared pointer of CoordinateSystemAxis. */ +using CoordinateSystemAxisPtr = std::shared_ptr<CoordinateSystemAxis>; +/** Non-null shared pointer of CoordinateSystemAxis. */ +using CoordinateSystemAxisNNPtr = util::nn<CoordinateSystemAxisPtr>; + +/** \brief The definition of a coordinate system axis. + * + * \remark Implements CoordinateSystemAxis from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL CoordinateSystemAxis final + : public common::IdentifiedObject { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~CoordinateSystemAxis() override; + //! @endcond + + PROJ_DLL const std::string &abbreviation() PROJ_CONST_DECL; + PROJ_DLL const AxisDirection &direction() PROJ_CONST_DECL; + PROJ_DLL const common::UnitOfMeasure &unit() PROJ_CONST_DECL; + PROJ_DLL const util::optional<double> &minimumValue() PROJ_CONST_DECL; + PROJ_DLL const util::optional<double> &maximumValue() PROJ_CONST_DECL; + PROJ_DLL const MeridianPtr &meridian() PROJ_CONST_DECL; + + // Non-standard + PROJ_DLL static CoordinateSystemAxisNNPtr + create(const util::PropertyMap &properties, + const std::string &abbreviationIn, const AxisDirection &directionIn, + const common::UnitOfMeasure &unitIn, + const MeridianPtr &meridianIn = nullptr); + + PROJ_PRIVATE : + + //! @cond Doxygen_Suppress + PROJ_INTERNAL bool + _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter, int order, + bool disableAbbrev) const; + + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + + PROJ_INTERNAL static std::string normalizeAxisName(const std::string &str); + + PROJ_INTERNAL static CoordinateSystemAxisNNPtr + createLAT_NORTH(const common::UnitOfMeasure &unit); + PROJ_INTERNAL static CoordinateSystemAxisNNPtr + createLONG_EAST(const common::UnitOfMeasure &unit); + + //! @endcond + + private: + PROJ_OPAQUE_PRIVATE_DATA + CoordinateSystemAxis(const CoordinateSystemAxis &other) = delete; + CoordinateSystemAxis &operator=(const CoordinateSystemAxis &other) = delete; + + PROJ_INTERNAL CoordinateSystemAxis(); + /* cppcheck-suppress unusedPrivateFunction */ + INLINED_MAKE_SHARED +}; + +// --------------------------------------------------------------------------- + +/** \brief Abstract class modelling a coordinate system (CS) + * + * A CS is the non-repeating sequence of coordinate system axes that spans a + * given coordinate space. A CS is derived from a set of mathematical rules for + * specifying how coordinates in a given space are to be assigned to points. + * The coordinate values in a coordinate tuple shall be recorded in the order + * in which the coordinate system axes associations are recorded. + * + * \remark Implements CoordinateSystem from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL CoordinateSystem : public common::IdentifiedObject { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~CoordinateSystem() override; + //! @endcond + + PROJ_DLL const std::vector<CoordinateSystemAxisNNPtr> & + axisList() PROJ_CONST_DECL; + + PROJ_PRIVATE : + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void + _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + + PROJ_INTERNAL virtual std::string getWKT2Type(bool) const = 0; + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + //! @endcond + + protected: + PROJ_INTERNAL explicit CoordinateSystem( + const std::vector<CoordinateSystemAxisNNPtr> &axisIn); + + private: + PROJ_OPAQUE_PRIVATE_DATA + CoordinateSystem(const CoordinateSystem &other) = delete; + CoordinateSystem &operator=(const CoordinateSystem &other) = delete; +}; + +/** Shared pointer of CoordinateSystem. */ +using CoordinateSystemPtr = std::shared_ptr<CoordinateSystem>; +/** Non-null shared pointer of CoordinateSystem. */ +using CoordinateSystemNNPtr = util::nn<CoordinateSystemPtr>; + +// --------------------------------------------------------------------------- + +class SphericalCS; +/** Shared pointer of SphericalCS. */ +using SphericalCSPtr = std::shared_ptr<SphericalCS>; +/** Non-null shared pointer of SphericalCS. */ +using SphericalCSNNPtr = util::nn<SphericalCSPtr>; + +/** \brief A three-dimensional coordinate system in Euclidean space with one + * distance measured from the origin and two angular coordinates. + * + * Not to be confused with an ellipsoidal coordinate system based on an + * ellipsoid "degenerated" into a sphere. A SphericalCS shall have three + * axis associations. + * + * \remark Implements SphericalCS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL SphericalCS final : public CoordinateSystem { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~SphericalCS() override; + //! @endcond + + // non-standard + + PROJ_DLL static SphericalCSNNPtr + create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axis1, + const CoordinateSystemAxisNNPtr &axis2, + const CoordinateSystemAxisNNPtr &axis3); + + protected: + PROJ_INTERNAL explicit SphericalCS( + const std::vector<CoordinateSystemAxisNNPtr> &axisIn); + INLINED_MAKE_SHARED + + PROJ_INTERNAL std::string getWKT2Type(bool) const override { + return "spherical"; + } + + private: + SphericalCS(const SphericalCS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class EllipsoidalCS; +/** Shared pointer of EllipsoidalCS. */ +using EllipsoidalCSPtr = std::shared_ptr<EllipsoidalCS>; +/** Non-null shared pointer of EllipsoidalCS. */ +using EllipsoidalCSNNPtr = util::nn<EllipsoidalCSPtr>; + +/** \brief A two- or three-dimensional coordinate system in which position is + * specified by geodetic latitude, geodetic longitude, and (in the + * three-dimensional case) ellipsoidal height. + * + * An EllipsoidalCS shall have two or three associations. + * + * \remark Implements EllipsoidalCS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL EllipsoidalCS final : public CoordinateSystem { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~EllipsoidalCS() override; + //! @endcond + + // non-standard + PROJ_DLL static EllipsoidalCSNNPtr + create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axis1, + const CoordinateSystemAxisNNPtr &axis2); + PROJ_DLL static EllipsoidalCSNNPtr + create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axis1, + const CoordinateSystemAxisNNPtr &axis2, + const CoordinateSystemAxisNNPtr &axis3); + PROJ_DLL static EllipsoidalCSNNPtr + createLatitudeLongitude(const common::UnitOfMeasure &unit); + PROJ_DLL static EllipsoidalCSNNPtr createLatitudeLongitudeEllipsoidalHeight( + const common::UnitOfMeasure &angularUnit, + const common::UnitOfMeasure &linearUnit); + PROJ_DLL static EllipsoidalCSNNPtr + createLongitudeLatitude(const common::UnitOfMeasure &unit); + + //! @cond Doxygen_Suppress + + /** \brief Typical axis order. */ + enum class AxisOrder { + /** Latitude(North), Longitude(East) */ + LAT_NORTH_LONG_EAST, + /** Latitude(North), Longitude(East), Height(up) */ + LAT_NORTH_LONG_EAST_HEIGHT_UP, + /** Longitude(East), Latitude(North) */ + LONG_EAST_LAT_NORTH, + /** Longitude(East), Latitude(North), Height(up) */ + LONG_EAST_LAT_NORTH_HEIGHT_UP, + /** Other axis order. */ + OTHER + }; + + PROJ_INTERNAL AxisOrder axisOrder() const; + //! @endcond + + protected: + PROJ_INTERNAL explicit EllipsoidalCS( + const std::vector<CoordinateSystemAxisNNPtr> &axisIn); + INLINED_MAKE_SHARED + + PROJ_INTERNAL std::string getWKT2Type(bool) const override { + return "ellipsoidal"; + } + + protected: + EllipsoidalCS(const EllipsoidalCS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class VerticalCS; +/** Shared pointer of VerticalCS. */ +using VerticalCSPtr = std::shared_ptr<VerticalCS>; +/** Non-null shared pointer of VerticalCS. */ +using VerticalCSNNPtr = util::nn<VerticalCSPtr>; + +/** \brief A one-dimensional coordinate system used to record the heights or + * depths of points. + * + * Such a coordinate system is usually dependent on the Earth's gravity field. + * A VerticalCS shall have one axis association. + * + * \remark Implements VerticalCS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL VerticalCS final : public CoordinateSystem { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~VerticalCS() override; + //! @endcond + + PROJ_DLL static VerticalCSNNPtr + create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axis); + + PROJ_DLL static VerticalCSNNPtr + createGravityRelatedHeight(const common::UnitOfMeasure &unit); + + protected: + PROJ_INTERNAL explicit VerticalCS(const CoordinateSystemAxisNNPtr &axisIn); + INLINED_MAKE_SHARED + + PROJ_INTERNAL std::string getWKT2Type(bool) const override { + return "vertical"; + } + + private: + VerticalCS(const VerticalCS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class CartesianCS; +/** Shared pointer of CartesianCS. */ +using CartesianCSPtr = std::shared_ptr<CartesianCS>; +/** Non-null shared pointer of CartesianCS. */ +using CartesianCSNNPtr = util::nn<CartesianCSPtr>; + +/** \brief A two- or three-dimensional coordinate system in Euclidean space + * with orthogonal straight axes. + * + * All axes shall have the same length unit. A CartesianCS shall have two or + * three axis associations; the number of associations shall equal the + * dimension of the CS. + * + * \remark Implements CartesianCS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL CartesianCS final : public CoordinateSystem { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~CartesianCS() override; + //! @endcond + + PROJ_DLL static CartesianCSNNPtr + create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axis1, + const CoordinateSystemAxisNNPtr &axis2); + PROJ_DLL static CartesianCSNNPtr + create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axis1, + const CoordinateSystemAxisNNPtr &axis2, + const CoordinateSystemAxisNNPtr &axis3); + PROJ_DLL static CartesianCSNNPtr + createEastingNorthing(const common::UnitOfMeasure &unit); + PROJ_DLL static CartesianCSNNPtr + createGeocentric(const common::UnitOfMeasure &unit); + + protected: + PROJ_INTERNAL explicit CartesianCS( + const std::vector<CoordinateSystemAxisNNPtr> &axisIn); + INLINED_MAKE_SHARED + + PROJ_INTERNAL std::string getWKT2Type(bool) const override { + return "Cartesian"; // uppercase is intended + } + + private: + CartesianCS(const CartesianCS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class OrdinalCS; +/** Shared pointer of OrdinalCS. */ +using OrdinalCSPtr = std::shared_ptr<OrdinalCS>; +/** Non-null shared pointer of OrdinalCS. */ +using OrdinalCSNNPtr = util::nn<OrdinalCSPtr>; + +/** \brief n-dimensional coordinate system in which every axis uses integers. + * + * The number of associations shall equal the + * dimension of the CS. + * + * \remark Implements OrdinalCS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL OrdinalCS final : public CoordinateSystem { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~OrdinalCS() override; + //! @endcond + + PROJ_DLL static OrdinalCSNNPtr + create(const util::PropertyMap &properties, + const std::vector<CoordinateSystemAxisNNPtr> &axisIn); + + protected: + PROJ_INTERNAL explicit OrdinalCS( + const std::vector<CoordinateSystemAxisNNPtr> &axisIn); + INLINED_MAKE_SHARED + + PROJ_INTERNAL std::string getWKT2Type(bool) const override { + return "ordinal"; + } + + private: + OrdinalCS(const OrdinalCS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class ParametricCS; +/** Shared pointer of ParametricCS. */ +using ParametricCSPtr = std::shared_ptr<ParametricCS>; +/** Non-null shared pointer of ParametricCS. */ +using ParametricCSNNPtr = util::nn<ParametricCSPtr>; + +/** \brief one-dimensional coordinate reference system which uses parameter + * values or functions that may vary monotonically with height. + * + * \remark Implements ParametricCS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL ParametricCS final : public CoordinateSystem { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~ParametricCS() override; + //! @endcond + + PROJ_DLL static ParametricCSNNPtr + create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axisIn); + + protected: + PROJ_INTERNAL explicit ParametricCS( + const std::vector<CoordinateSystemAxisNNPtr> &axisIn); + INLINED_MAKE_SHARED + + PROJ_INTERNAL std::string getWKT2Type(bool) const override { + return "parametric"; + } + + private: + ParametricCS(const ParametricCS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class TemporalCS; +/** Shared pointer of TemporalCS. */ +using TemporalCSPtr = std::shared_ptr<TemporalCS>; +/** Non-null shared pointer of TemporalCS. */ +using TemporalCSNNPtr = util::nn<TemporalCSPtr>; + +/** \brief (Abstract class) A one-dimensional coordinate system used to record + * time. + * + * A TemporalCS shall have one axis association. + * + * \remark Implements TemporalCS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL TemporalCS : public CoordinateSystem { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~TemporalCS() override; + //! @endcond + + protected: + PROJ_INTERNAL explicit TemporalCS(const CoordinateSystemAxisNNPtr &axis); + INLINED_MAKE_SHARED + + PROJ_INTERNAL std::string + getWKT2Type(bool use2018Keywords) const override = 0; + + private: + TemporalCS(const TemporalCS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class DateTimeTemporalCS; +/** Shared pointer of DateTimeTemporalCS. */ +using DateTimeTemporalCSPtr = std::shared_ptr<DateTimeTemporalCS>; +/** Non-null shared pointer of DateTimeTemporalCS. */ +using DateTimeTemporalCSNNPtr = util::nn<DateTimeTemporalCSPtr>; + +/** \brief A one-dimensional coordinate system used to record time in dateTime + * representation as defined in ISO 8601. + * + * A DateTimeTemporalCS shall have one axis association. It does not use + * axisUnitID; the temporal quantities are defined through the ISO 8601 + * representation. + * + * \remark Implements DateTimeTemporalCS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL DateTimeTemporalCS final : public TemporalCS { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~DateTimeTemporalCS() override; + //! @endcond + + PROJ_DLL static DateTimeTemporalCSNNPtr + create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axis); + + protected: + PROJ_INTERNAL explicit DateTimeTemporalCS( + const CoordinateSystemAxisNNPtr &axis); + INLINED_MAKE_SHARED + + PROJ_INTERNAL std::string getWKT2Type(bool use2018Keywords) const override; + + private: + DateTimeTemporalCS(const DateTimeTemporalCS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class TemporalCountCS; +/** Shared pointer of TemporalCountCS. */ +using TemporalCountCSPtr = std::shared_ptr<TemporalCountCS>; +/** Non-null shared pointer of TemporalCountCS. */ +using TemporalCountCSNNPtr = util::nn<TemporalCountCSPtr>; + +/** \brief A one-dimensional coordinate system used to record time as an + * integer count. + * + * A TemporalCountCS shall have one axis association. + * + * \remark Implements TemporalCountCS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL TemporalCountCS final : public TemporalCS { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~TemporalCountCS() override; + //! @endcond + + PROJ_DLL static TemporalCountCSNNPtr + create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axis); + + protected: + PROJ_INTERNAL explicit TemporalCountCS( + const CoordinateSystemAxisNNPtr &axis); + INLINED_MAKE_SHARED + + PROJ_INTERNAL std::string getWKT2Type(bool use2018Keywords) const override; + + private: + TemporalCountCS(const TemporalCountCS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class TemporalMeasureCS; +/** Shared pointer of TemporalMeasureCS. */ +using TemporalMeasureCSPtr = std::shared_ptr<TemporalMeasureCS>; +/** Non-null shared pointer of TemporalMeasureCS. */ +using TemporalMeasureCSNNPtr = util::nn<TemporalMeasureCSPtr>; + +/** \brief A one-dimensional coordinate system used to record a time as a + * real number. + * + * A TemporalMeasureCS shall have one axis association. + * + * \remark Implements TemporalMeasureCS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL TemporalMeasureCS final : public TemporalCS { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~TemporalMeasureCS() override; + //! @endcond + + PROJ_DLL static TemporalMeasureCSNNPtr + create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axis); + + protected: + PROJ_INTERNAL explicit TemporalMeasureCS( + const CoordinateSystemAxisNNPtr &axis); + INLINED_MAKE_SHARED + + PROJ_INTERNAL std::string getWKT2Type(bool use2018Keywords) const override; + + private: + TemporalMeasureCS(const TemporalMeasureCS &other) = delete; +}; + +} // namespace cs + +NS_PROJ_END + +#endif // CS_HH_INCLUDED diff --git a/include/proj/crs.hpp b/include/proj/crs.hpp new file mode 100644 index 00000000..252c90e3 --- /dev/null +++ b/include/proj/crs.hpp @@ -0,0 +1,1361 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef CRS_HH_INCLUDED +#define CRS_HH_INCLUDED + +#include <memory> +#include <string> +#include <vector> + +#include "common.hpp" +#include "coordinateoperation.hpp" +#include "coordinatesystem.hpp" +#include "datum.hpp" +#include "io.hpp" +#include "util.hpp" + +NS_PROJ_START + +/** osgeo.proj.crs namespace + + \brief CRS (coordinate reference system = coordinate system with a datum). +*/ +namespace crs { + +// --------------------------------------------------------------------------- + +class GeographicCRS; +/** Shared pointer of GeographicCRS */ +using GeographicCRSPtr = std::shared_ptr<GeographicCRS>; +/** Non-null shared pointer of GeographicCRS */ +using GeographicCRSNNPtr = util::nn<GeographicCRSPtr>; + +class VerticalCRS; +/** Shared pointer of VerticalCRS */ +using VerticalCRSPtr = std::shared_ptr<VerticalCRS>; +/** Non-null shared pointer of VerticalCRS */ +using VerticalCRSNNPtr = util::nn<VerticalCRSPtr>; + +class BoundCRS; +/** Shared pointer of BoundCRS */ +using BoundCRSPtr = std::shared_ptr<BoundCRS>; +/** Non-null shared pointer of BoundCRS */ +using BoundCRSNNPtr = util::nn<BoundCRSPtr>; + +// --------------------------------------------------------------------------- + +class CRS; +/** Shared pointer of CRS */ +using CRSPtr = std::shared_ptr<CRS>; +/** Non-null shared pointer of CRS */ +using CRSNNPtr = util::nn<CRSPtr>; + +/** \brief Abstract class modelling a coordinate reference system which is + * usually single but may be compound. + * + * \remark Implements CRS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL CRS : public common::ObjectUsage { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~CRS() override; + //! @endcond + + // Non-standard + + PROJ_DLL GeodeticCRSPtr extractGeodeticCRS() const; + PROJ_DLL GeographicCRSPtr extractGeographicCRS() const; + PROJ_DLL VerticalCRSPtr extractVerticalCRS() const; + PROJ_DLL CRSNNPtr createBoundCRSToWGS84IfPossible( + const io::DatabaseContextPtr &dbContext) const; + PROJ_DLL CRSNNPtr stripVerticalComponent() const; + + PROJ_DLL const BoundCRSPtr &canonicalBoundCRS() PROJ_CONST_DECL; + + PROJ_DLL std::list<std::pair<CRSNNPtr, int>> + identify(const io::AuthorityFactoryPtr &authorityFactory) const; + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + PROJ_INTERNAL const GeodeticCRS * + extractGeodeticCRSRaw() const; + + PROJ_FOR_TEST CRSNNPtr shallowClone() const; + + //! @endcond + + protected: + PROJ_INTERNAL CRS(); + PROJ_INTERNAL CRS(const CRS &other); + friend class BoundCRS; + PROJ_INTERNAL void setCanonicalBoundCRS(const BoundCRSNNPtr &boundCRS); + + PROJ_INTERNAL virtual CRSNNPtr _shallowClone() const = 0; + + PROJ_INTERNAL virtual std::list<std::pair<CRSNNPtr, int>> + _identify(const io::AuthorityFactoryPtr &authorityFactory) const; + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +/** \brief Abstract class modelling a coordinate reference system consisting of + * one Coordinate System and either one datum::Datum or one + * datum::DatumEnsemble. + * + * \remark Implements SingleCRS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL SingleCRS : public CRS { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~SingleCRS() override; + //! @endcond + + PROJ_DLL const datum::DatumPtr &datum() PROJ_CONST_DECL; + PROJ_DLL const datum::DatumEnsemblePtr &datumEnsemble() PROJ_CONST_DECL; + PROJ_DLL const cs::CoordinateSystemNNPtr & + coordinateSystem() PROJ_CONST_DECL; + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + PROJ_INTERNAL void + exportDatumOrDatumEnsembleToWkt(io::WKTFormatter *formatter) + const; // throw(io::FormattingException) + //! @endcond + + protected: + PROJ_INTERNAL SingleCRS(const datum::DatumPtr &datumIn, + const datum::DatumEnsemblePtr &datumEnsembleIn, + const cs::CoordinateSystemNNPtr &csIn); + PROJ_INTERNAL SingleCRS(const SingleCRS &other); + + PROJ_INTERNAL bool + baseIsEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const; + + private: + PROJ_OPAQUE_PRIVATE_DATA + SingleCRS &operator=(const SingleCRS &other) = delete; +}; + +/** Shared pointer of SingleCRS */ +using SingleCRSPtr = std::shared_ptr<SingleCRS>; +/** Non-null shared pointer of SingleCRS */ +using SingleCRSNNPtr = util::nn<SingleCRSPtr>; + +// --------------------------------------------------------------------------- + +class GeodeticCRS; +/** Shared pointer of GeodeticCRS */ +using GeodeticCRSPtr = std::shared_ptr<GeodeticCRS>; +/** Non-null shared pointer of GeodeticCRS */ +using GeodeticCRSNNPtr = util::nn<GeodeticCRSPtr>; + +/** \brief A coordinate reference system associated with a geodetic reference + * frame and a three-dimensional Cartesian or spherical coordinate system. + * + * If the geodetic reference frame is dynamic or if the geodetic CRS has an + * association to a velocity model then the geodetic CRS is dynamic, else it + * is static. + * + * \remark Implements GeodeticCRS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL GeodeticCRS : virtual public SingleCRS, + public io::IPROJStringExportable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~GeodeticCRS() override; + //! @endcond + + PROJ_DLL const datum::GeodeticReferenceFramePtr &datum() PROJ_CONST_DECL; + + PROJ_DLL const datum::PrimeMeridianNNPtr &primeMeridian() PROJ_CONST_DECL; + PROJ_DLL const datum::EllipsoidNNPtr &ellipsoid() PROJ_CONST_DECL; + + // coordinateSystem() returns either a EllipsoidalCS, SphericalCS or + // CartesianCS + + PROJ_DLL const std::vector<operation::PointMotionOperationNNPtr> & + velocityModel() PROJ_CONST_DECL; + + // Non-standard + + PROJ_DLL bool isGeocentric() PROJ_CONST_DECL; + + PROJ_DLL static GeodeticCRSNNPtr + create(const util::PropertyMap &properties, + const datum::GeodeticReferenceFrameNNPtr &datum, + const cs::SphericalCSNNPtr &cs); + + PROJ_DLL static GeodeticCRSNNPtr + create(const util::PropertyMap &properties, + const datum::GeodeticReferenceFrameNNPtr &datum, + const cs::CartesianCSNNPtr &cs); + + PROJ_DLL static GeodeticCRSNNPtr + create(const util::PropertyMap &properties, + const datum::GeodeticReferenceFramePtr &datum, + const datum::DatumEnsemblePtr &datumEnsemble, + const cs::SphericalCSNNPtr &cs); + + PROJ_DLL static GeodeticCRSNNPtr + create(const util::PropertyMap &properties, + const datum::GeodeticReferenceFramePtr &datum, + const datum::DatumEnsemblePtr &datumEnsemble, + const cs::CartesianCSNNPtr &cs); + + PROJ_DLL static const GeodeticCRSNNPtr EPSG_4978; // WGS 84 Geocentric + + PROJ_DLL std::list<std::pair<GeodeticCRSNNPtr, int>> + identify(const io::AuthorityFactoryPtr &authorityFactory) const; + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + PROJ_INTERNAL void + addDatumInfoToPROJString(io::PROJStringFormatter *formatter) const; + + PROJ_INTERNAL void addGeocentricUnitConversionIntoPROJString( + io::PROJStringFormatter *formatter) const; + + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + + PROJ_INTERNAL void _exportToPROJString(io::PROJStringFormatter *formatter) + const override; // throw(FormattingException) + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + //! @endcond + + protected: + PROJ_INTERNAL GeodeticCRS(const datum::GeodeticReferenceFramePtr &datumIn, + const datum::DatumEnsemblePtr &datumEnsembleIn, + const cs::EllipsoidalCSNNPtr &csIn); + PROJ_INTERNAL GeodeticCRS(const datum::GeodeticReferenceFramePtr &datumIn, + const datum::DatumEnsemblePtr &datumEnsembleIn, + const cs::SphericalCSNNPtr &csIn); + PROJ_INTERNAL GeodeticCRS(const datum::GeodeticReferenceFramePtr &datumIn, + const datum::DatumEnsemblePtr &datumEnsembleIn, + const cs::CartesianCSNNPtr &csIn); + PROJ_INTERNAL GeodeticCRS(const GeodeticCRS &other); + + PROJ_INTERNAL static GeodeticCRSNNPtr createEPSG_4978(); + + PROJ_INTERNAL CRSNNPtr _shallowClone() const override; + + PROJ_INTERNAL std::list<std::pair<CRSNNPtr, int>> + _identify(const io::AuthorityFactoryPtr &authorityFactory) const override; + + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + + GeodeticCRS &operator=(const GeodeticCRS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +/** \brief A coordinate reference system associated with a geodetic reference + * frame and a two- or three-dimensional ellipsoidal coordinate system. + * + * If the geodetic reference frame is dynamic or if the geographic CRS has an + * association to a velocity model then the geodetic CRS is dynamic, else it is + * static. + * + * \remark Implements GeographicCRS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL GeographicCRS : public GeodeticCRS { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~GeographicCRS() override; + //! @endcond + + PROJ_DLL const cs::EllipsoidalCSNNPtr &coordinateSystem() PROJ_CONST_DECL; + + // Non-standard + PROJ_DLL static GeographicCRSNNPtr + create(const util::PropertyMap &properties, + const datum::GeodeticReferenceFrameNNPtr &datum, + const cs::EllipsoidalCSNNPtr &cs); + PROJ_DLL static GeographicCRSNNPtr + create(const util::PropertyMap &properties, + const datum::GeodeticReferenceFramePtr &datum, + const datum::DatumEnsemblePtr &datumEnsemble, + const cs::EllipsoidalCSNNPtr &cs); + + PROJ_DLL static const GeographicCRSNNPtr EPSG_4267; // NAD27 + PROJ_DLL static const GeographicCRSNNPtr EPSG_4269; // NAD83 + PROJ_DLL static const GeographicCRSNNPtr EPSG_4326; // WGS 84 2D + PROJ_DLL static const GeographicCRSNNPtr OGC_CRS84; // CRS84 (Long, Lat) + PROJ_DLL static const GeographicCRSNNPtr EPSG_4807; // NTF Paris + PROJ_DLL static const GeographicCRSNNPtr EPSG_4979; // WGS 84 3D + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + PROJ_INTERNAL void + addAngularUnitConvertAndAxisSwap( + io::PROJStringFormatter *formatter) const; + + PROJ_INTERNAL void _exportToPROJString(io::PROJStringFormatter *formatter) + const override; // throw(FormattingException) + + PROJ_DLL bool + is2DPartOf3D(util::nn<const GeographicCRS *> other) PROJ_CONST_DECL; + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + //! @endcond + + protected: + PROJ_INTERNAL GeographicCRS(const datum::GeodeticReferenceFramePtr &datumIn, + const datum::DatumEnsemblePtr &datumEnsembleIn, + const cs::EllipsoidalCSNNPtr &csIn); + PROJ_INTERNAL GeographicCRS(const GeographicCRS &other); + + PROJ_INTERNAL static GeographicCRSNNPtr createEPSG_4267(); + PROJ_INTERNAL static GeographicCRSNNPtr createEPSG_4269(); + PROJ_INTERNAL static GeographicCRSNNPtr createEPSG_4326(); + PROJ_INTERNAL static GeographicCRSNNPtr createOGC_CRS84(); + PROJ_INTERNAL static GeographicCRSNNPtr createEPSG_4807(); + PROJ_INTERNAL static GeographicCRSNNPtr createEPSG_4979(); + + PROJ_INTERNAL CRSNNPtr _shallowClone() const override; + + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + + GeographicCRS &operator=(const GeographicCRS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +/** \brief A coordinate reference system having a vertical reference frame and + * a one-dimensional vertical coordinate system used for recording + * gravity-related heights or depths. + * + * Vertical CRSs make use of the direction of gravity to define the concept of + * height or depth, but the relationship with gravity may not be + * straightforward. If the vertical reference frame is dynamic or if the + * vertical CRS has an association to a velocity model then the CRS is dynamic, + * else it is static. + * + * \note Ellipsoidal heights cannot be captured in a vertical coordinate + * reference system. They exist only as an inseparable part of a 3D coordinate + * tuple defined in a geographic 3D coordinate reference system. + * + * \remark Implements VerticalCRS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL VerticalCRS : virtual public SingleCRS, + public io::IPROJStringExportable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~VerticalCRS() override; + //! @endcond + + PROJ_DLL const datum::VerticalReferenceFramePtr datum() const; + PROJ_DLL const cs::VerticalCSNNPtr coordinateSystem() const; + PROJ_DLL const std::vector<operation::TransformationNNPtr> & + geoidModel() PROJ_CONST_DECL; + PROJ_DLL const std::vector<operation::PointMotionOperationNNPtr> & + velocityModel() PROJ_CONST_DECL; + + PROJ_DLL static VerticalCRSNNPtr + create(const util::PropertyMap &properties, + const datum::VerticalReferenceFrameNNPtr &datumIn, + const cs::VerticalCSNNPtr &csIn); + + PROJ_DLL static VerticalCRSNNPtr + create(const util::PropertyMap &properties, + const datum::VerticalReferenceFramePtr &datumIn, + const datum::DatumEnsemblePtr &datumEnsembleIn, + const cs::VerticalCSNNPtr &csIn); + + PROJ_DLL std::list<std::pair<VerticalCRSNNPtr, int>> + identify(const io::AuthorityFactoryPtr &authorityFactory) const; + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + PROJ_INTERNAL void + addLinearUnitConvert(io::PROJStringFormatter *formatter) const; + + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + //! @endcond + + protected: + PROJ_INTERNAL VerticalCRS(const datum::VerticalReferenceFramePtr &datumIn, + const datum::DatumEnsemblePtr &datumEnsembleIn, + const cs::VerticalCSNNPtr &csIn); + PROJ_INTERNAL VerticalCRS(const VerticalCRS &other); + + PROJ_INTERNAL void _exportToPROJString(io::PROJStringFormatter *formatter) + const override; // throw(FormattingException) + + PROJ_INTERNAL std::list<std::pair<CRSNNPtr, int>> + _identify(const io::AuthorityFactoryPtr &authorityFactory) const override; + + INLINED_MAKE_SHARED + + PROJ_INTERNAL CRSNNPtr _shallowClone() const override; + + private: + PROJ_OPAQUE_PRIVATE_DATA + VerticalCRS &operator=(const VerticalCRS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +/** \brief Abstract class modelling a single coordinate reference system that + * is defined through the application of a specified coordinate conversion to + * the definition of a previously established single coordinate reference + * system referred to as the base CRS. + * + * A derived coordinate reference system inherits its datum (or datum ensemble) + * from its base CRS. The coordinate conversion between the base and derived + * coordinate reference system is implemented using the parameters and + * formula(s) specified in the definition of the coordinate conversion. + * + * \remark Implements DerivedCRS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL DerivedCRS : virtual public SingleCRS { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~DerivedCRS() override; + //! @endcond + + PROJ_DLL const SingleCRSNNPtr &baseCRS() PROJ_CONST_DECL; + PROJ_DLL const operation::ConversionNNPtr derivingConversion() const; + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + const operation::ConversionNNPtr & + derivingConversionRef() PROJ_CONST_DECL; + //! @endcond + + protected: + PROJ_INTERNAL + DerivedCRS(const SingleCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::CoordinateSystemNNPtr &cs); + PROJ_INTERNAL DerivedCRS(const DerivedCRS &other); + + PROJ_INTERNAL void setDerivingConversionCRS(); + + PROJ_INTERNAL void baseExportToPROJString( + io::PROJStringFormatter *formatter) const; // throw(FormattingException) + + PROJ_INTERNAL void baseExportToWKT( + io::WKTFormatter *&formatter, const std::string &keyword, + const std::string &baseKeyword) const; // throw(FormattingException) + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + private: + PROJ_OPAQUE_PRIVATE_DATA + DerivedCRS &operator=(const DerivedCRS &other) = delete; +}; + +/** Shared pointer of DerivedCRS */ +using DerivedCRSPtr = std::shared_ptr<DerivedCRS>; +/** Non-null shared pointer of DerivedCRS */ +using DerivedCRSNNPtr = util::nn<DerivedCRSPtr>; + +// --------------------------------------------------------------------------- + +class ProjectedCRS; +/** Shared pointer of ProjectedCRS */ +using ProjectedCRSPtr = std::shared_ptr<ProjectedCRS>; +/** Non-null shared pointer of ProjectedCRS */ +using ProjectedCRSNNPtr = util::nn<ProjectedCRSPtr>; + +/** \brief A derived coordinate reference system which has a geodetic + * (usually geographic) coordinate reference system as its base CRS, thereby + * inheriting a geodetic reference frame, and is converted using a map + * projection. + * + * It has a Cartesian coordinate system, usually two-dimensional but may be + * three-dimensional; in the 3D case the base geographic CRSs ellipsoidal + * height is passed through unchanged and forms the vertical axis of the + * projected CRS's Cartesian coordinate system. + * + * \remark Implements ProjectedCRS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL ProjectedCRS final : public DerivedCRS, + public io::IPROJStringExportable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~ProjectedCRS() override; + //! @endcond + + PROJ_DLL const GeodeticCRSNNPtr &baseCRS() PROJ_CONST_DECL; + PROJ_DLL const cs::CartesianCSNNPtr &coordinateSystem() PROJ_CONST_DECL; + + PROJ_DLL static ProjectedCRSNNPtr + create(const util::PropertyMap &properties, + const GeodeticCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::CartesianCSNNPtr &csIn); + + PROJ_DLL std::list<std::pair<ProjectedCRSNNPtr, int>> + identify(const io::AuthorityFactoryPtr &authorityFactory) const; + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + PROJ_INTERNAL void + addUnitConvertAndAxisSwap(io::PROJStringFormatter *formatter, + bool axisSpecFound) const; + + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + + //! @endcond + + protected: + PROJ_INTERNAL + ProjectedCRS(const GeodeticCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::CartesianCSNNPtr &csIn); + PROJ_INTERNAL ProjectedCRS(const ProjectedCRS &other); + + PROJ_INTERNAL void _exportToPROJString(io::PROJStringFormatter *formatter) + const override; // throw(FormattingException) + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + PROJ_INTERNAL std::list<std::pair<CRSNNPtr, int>> + _identify(const io::AuthorityFactoryPtr &authorityFactory) const override; + + INLINED_MAKE_SHARED + + PROJ_INTERNAL CRSNNPtr _shallowClone() const override; + + private: + PROJ_OPAQUE_PRIVATE_DATA + ProjectedCRS &operator=(const ProjectedCRS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class TemporalCRS; +/** Shared pointer of TemporalCRS */ +using TemporalCRSPtr = std::shared_ptr<TemporalCRS>; +/** Non-null shared pointer of TemporalCRS */ +using TemporalCRSNNPtr = util::nn<TemporalCRSPtr>; + +/** \brief A coordinate reference system associated with a temporal datum and a + * one-dimensional temporal coordinate system. + * + * \remark Implements TemporalCRS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL TemporalCRS : virtual public SingleCRS { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~TemporalCRS() override; + //! @endcond + + PROJ_DLL const datum::TemporalDatumNNPtr datum() const; + + PROJ_DLL const cs::TemporalCSNNPtr coordinateSystem() const; + + PROJ_DLL static TemporalCRSNNPtr + create(const util::PropertyMap &properties, + const datum::TemporalDatumNNPtr &datumIn, + const cs::TemporalCSNNPtr &csIn); + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + //! @endcond + + protected: + PROJ_INTERNAL TemporalCRS(const datum::TemporalDatumNNPtr &datumIn, + const cs::TemporalCSNNPtr &csIn); + PROJ_INTERNAL TemporalCRS(const TemporalCRS &other); + + INLINED_MAKE_SHARED + + PROJ_INTERNAL CRSNNPtr _shallowClone() const override; + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + private: + PROJ_OPAQUE_PRIVATE_DATA + TemporalCRS &operator=(const TemporalCRS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class EngineeringCRS; +/** Shared pointer of EngineeringCRS */ +using EngineeringCRSPtr = std::shared_ptr<EngineeringCRS>; +/** Non-null shared pointer of EngineeringCRS */ +using EngineeringCRSNNPtr = util::nn<EngineeringCRSPtr>; + +/** \brief Contextually local coordinate reference system associated with an + * engineering datum. + * + * It is applied either to activities on or near the surface of the Earth + * without geodetic corrections, or on moving platforms such as road vehicles, + * vessels, aircraft or spacecraft, or as the internal CRS of an image. + * + * In \ref WKT2, it maps to a ENGINEERINGCRS / ENGCRS keyword. In \ref WKT1, + * it maps to a LOCAL_CS keyword. + * + * \remark Implements EngineeringCRS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL EngineeringCRS : virtual public SingleCRS { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~EngineeringCRS() override; + //! @endcond + + PROJ_DLL const datum::EngineeringDatumNNPtr datum() const; + + PROJ_DLL static EngineeringCRSNNPtr + create(const util::PropertyMap &properties, + const datum::EngineeringDatumNNPtr &datumIn, + const cs::CoordinateSystemNNPtr &csIn); + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + //! @endcond + + protected: + PROJ_INTERNAL EngineeringCRS(const datum::EngineeringDatumNNPtr &datumIn, + const cs::CoordinateSystemNNPtr &csIn); + PROJ_INTERNAL EngineeringCRS(const EngineeringCRS &other); + + PROJ_INTERNAL CRSNNPtr _shallowClone() const override; + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + EngineeringCRS &operator=(const EngineeringCRS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class ParametricCRS; +/** Shared pointer of ParametricCRS */ +using ParametricCRSPtr = std::shared_ptr<ParametricCRS>; +/** Non-null shared pointer of ParametricCRS */ +using ParametricCRSNNPtr = util::nn<ParametricCRSPtr>; + +/** \brief Contextually local coordinate reference system associated with an + * engineering datum. + * + * This is applied either to activities on or near the surface of the Earth + * without geodetic corrections, or on moving platforms such as road vehicles + * vessels, aircraft or spacecraft, or as the internal CRS of an image. + * + * \remark Implements ParametricCRS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL ParametricCRS : virtual public SingleCRS { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~ParametricCRS() override; + //! @endcond + + PROJ_DLL const datum::ParametricDatumNNPtr datum() const; + + PROJ_DLL const cs::ParametricCSNNPtr coordinateSystem() const; + + PROJ_DLL static ParametricCRSNNPtr + create(const util::PropertyMap &properties, + const datum::ParametricDatumNNPtr &datumIn, + const cs::ParametricCSNNPtr &csIn); + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + //! @endcond + + protected: + PROJ_INTERNAL ParametricCRS(const datum::ParametricDatumNNPtr &datumIn, + const cs::ParametricCSNNPtr &csIn); + PROJ_INTERNAL ParametricCRS(const ParametricCRS &other); + + PROJ_INTERNAL CRSNNPtr _shallowClone() const override; + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + ParametricCRS &operator=(const ParametricCRS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class CompoundCRS; +/** Shared pointer of CompoundCRS */ +using CompoundCRSPtr = std::shared_ptr<CompoundCRS>; +/** Non-null shared pointer of CompoundCRS */ +using CompoundCRSNNPtr = util::nn<CompoundCRSPtr>; + +/** \brief A coordinate reference system describing the position of points + * through two or more independent single coordinate reference systems. + * + * \note Two coordinate reference systems are independent of each other + * if coordinate values in one cannot be converted or transformed into + * coordinate values in the other. + * + * \note As a departure to \ref ISO_19111_2018, we allow to build a CompoundCRS + * from CRS objects, whereas ISO19111:2018 restricts the components to + * SingleCRS. + * + * \remark Implements CompoundCRS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL CompoundCRS final : public CRS, + public io::IPROJStringExportable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~CompoundCRS() override; + //! @endcond + + PROJ_DLL const std::vector<CRSNNPtr> & + componentReferenceSystems() PROJ_CONST_DECL; + + PROJ_DLL std::list<std::pair<CompoundCRSNNPtr, int>> + identify(const io::AuthorityFactoryPtr &authorityFactory) const; + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + //! @endcond + + PROJ_DLL static CompoundCRSNNPtr + create(const util::PropertyMap &properties, + const std::vector<CRSNNPtr> &components); + + protected: + // relaxed: standard say SingleCRSNNPtr + PROJ_INTERNAL explicit CompoundCRS(const std::vector<CRSNNPtr> &components); + PROJ_INTERNAL CompoundCRS(const CompoundCRS &other); + + PROJ_INTERNAL void _exportToPROJString(io::PROJStringFormatter *formatter) + const override; // throw(FormattingException) + + PROJ_INTERNAL CRSNNPtr _shallowClone() const override; + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + PROJ_INTERNAL std::list<std::pair<CRSNNPtr, int>> + _identify(const io::AuthorityFactoryPtr &authorityFactory) const override; + + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + CompoundCRS &operator=(const CompoundCRS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +/** \brief A coordinate reference system with an associated transformation to + * a target/hub CRS. + * + * The definition of a CRS is not dependent upon any relationship to an + * independent CRS. However in an implementation that merges datasets + * referenced to differing CRSs, it is sometimes useful to associate the + * definition of the transformation that has been used with the CRS definition. + * This facilitates the interrelationship of CRS by concatenating + * transformations via a common or hub CRS. This is sometimes referred to as + * "early-binding". \ref WKT2 permits the association of an abridged coordinate + * transformation description with a coordinate reference system description in + * a single text string. In a BoundCRS, the abridged coordinate transformation + * is applied to the source CRS with the target CRS being the common or hub + * system. + * + * Coordinates referring to a BoundCRS are expressed into its source/base CRS. + * + * This abstraction can for example model the concept of TOWGS84 datum shift + * present in \ref WKT1. + * + * \note Contrary to other CRS classes of this package, there is no + * \ref ISO_19111_2018 modelling of a BoundCRS. + * + * \remark Implements BoundCRS from \ref WKT2 + */ +class PROJ_GCC_DLL BoundCRS final : public CRS, + public io::IPROJStringExportable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~BoundCRS() override; + //! @endcond + + PROJ_DLL const CRSNNPtr &baseCRS() PROJ_CONST_DECL; + PROJ_DLL CRSNNPtr baseCRSWithCanonicalBoundCRS() const; + + PROJ_DLL const CRSNNPtr &hubCRS() PROJ_CONST_DECL; + PROJ_DLL const operation::TransformationNNPtr & + transformation() PROJ_CONST_DECL; + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + //! @endcond + + PROJ_DLL static BoundCRSNNPtr + create(const CRSNNPtr &baseCRSIn, const CRSNNPtr &hubCRSIn, + const operation::TransformationNNPtr &transformationIn); + + PROJ_DLL static BoundCRSNNPtr + createFromTOWGS84(const CRSNNPtr &baseCRSIn, + const std::vector<double> &TOWGS84Parameters); + + PROJ_DLL static BoundCRSNNPtr + createFromNadgrids(const CRSNNPtr &baseCRSIn, const std::string &filename); + + protected: + PROJ_INTERNAL + BoundCRS(const CRSNNPtr &baseCRSIn, const CRSNNPtr &hubCRSIn, + const operation::TransformationNNPtr &transformationIn); + PROJ_INTERNAL BoundCRS(const BoundCRS &other); + + PROJ_INTERNAL CRSNNPtr _shallowClone() const override; + + PROJ_INTERNAL void _exportToPROJString(io::PROJStringFormatter *formatter) + const override; // throw(FormattingException) + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + PROJ_INTERNAL BoundCRSNNPtr shallowCloneAsBoundCRS() const; + PROJ_INTERNAL bool isTOWGS84Compatible() const; + PROJ_INTERNAL std::string getHDatumPROJ4GRIDS() const; + PROJ_INTERNAL std::string getVDatumPROJ4GRIDS() const; + + PROJ_INTERNAL std::list<std::pair<CRSNNPtr, int>> + _identify(const io::AuthorityFactoryPtr &authorityFactory) const override; + + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + BoundCRS &operator=(const BoundCRS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class DerivedGeodeticCRS; +/** Shared pointer of DerivedGeodeticCRS */ +using DerivedGeodeticCRSPtr = std::shared_ptr<DerivedGeodeticCRS>; +/** Non-null shared pointer of DerivedGeodeticCRS */ +using DerivedGeodeticCRSNNPtr = util::nn<DerivedGeodeticCRSPtr>; + +/** \brief A derived coordinate reference system which has either a geodetic + * or a geographic coordinate reference system as its base CRS, thereby + * inheriting a geodetic reference frame, and associated with a 3D Cartesian + * or spherical coordinate system. + * + * \remark Implements DerivedGeodeticCRS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL DerivedGeodeticCRS final : public GeodeticCRS, + public DerivedCRS { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~DerivedGeodeticCRS() override; + //! @endcond + + PROJ_DLL const GeodeticCRSNNPtr baseCRS() const; + + PROJ_DLL static DerivedGeodeticCRSNNPtr + create(const util::PropertyMap &properties, + const GeodeticCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::CartesianCSNNPtr &csIn); + + PROJ_DLL static DerivedGeodeticCRSNNPtr + create(const util::PropertyMap &properties, + const GeodeticCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::SphericalCSNNPtr &csIn); + + //! @cond Doxygen_Suppress + void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + //! @endcond + + protected: + PROJ_INTERNAL + DerivedGeodeticCRS(const GeodeticCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::CartesianCSNNPtr &csIn); + PROJ_INTERNAL + DerivedGeodeticCRS(const GeodeticCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::SphericalCSNNPtr &csIn); + PROJ_INTERNAL DerivedGeodeticCRS(const DerivedGeodeticCRS &other); + + PROJ_INTERNAL void _exportToPROJString(io::PROJStringFormatter *formatter) + const override; // throw(FormattingException) + + PROJ_INTERNAL CRSNNPtr _shallowClone() const override; + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + PROJ_INTERNAL std::list<std::pair<CRSNNPtr, int>> + _identify(const io::AuthorityFactoryPtr &authorityFactory) const override; + + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + DerivedGeodeticCRS &operator=(const DerivedGeodeticCRS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class DerivedGeographicCRS; +/** Shared pointer of DerivedGeographicCRS */ +using DerivedGeographicCRSPtr = std::shared_ptr<DerivedGeographicCRS>; +/** Non-null shared pointer of DerivedGeographicCRS */ +using DerivedGeographicCRSNNPtr = util::nn<DerivedGeographicCRSPtr>; + +/** \brief A derived coordinate reference system which has either a geodetic or + * a geographic coordinate reference system as its base CRS, thereby inheriting + * a geodetic reference frame, and an ellipsoidal coordinate system. + * + * A derived geographic CRS can be based on a geodetic CRS only if that + * geodetic CRS definition includes an ellipsoid. + * + * \remark Implements DerivedGeographicCRS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL DerivedGeographicCRS final : public GeographicCRS, + public DerivedCRS { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~DerivedGeographicCRS() override; + //! @endcond + + PROJ_DLL const GeodeticCRSNNPtr baseCRS() const; + + PROJ_DLL static DerivedGeographicCRSNNPtr + create(const util::PropertyMap &properties, + const GeodeticCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::EllipsoidalCSNNPtr &csIn); + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + //! @endcond + + protected: + PROJ_INTERNAL + DerivedGeographicCRS(const GeodeticCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::EllipsoidalCSNNPtr &csIn); + PROJ_INTERNAL DerivedGeographicCRS(const DerivedGeographicCRS &other); + + PROJ_INTERNAL void _exportToPROJString(io::PROJStringFormatter *formatter) + const override; // throw(FormattingException) + + PROJ_INTERNAL CRSNNPtr _shallowClone() const override; + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + PROJ_INTERNAL std::list<std::pair<CRSNNPtr, int>> + _identify(const io::AuthorityFactoryPtr &authorityFactory) const override; + + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + DerivedGeographicCRS &operator=(const DerivedGeographicCRS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class DerivedProjectedCRS; +/** Shared pointer of DerivedProjectedCRS */ +using DerivedProjectedCRSPtr = std::shared_ptr<DerivedProjectedCRS>; +/** Non-null shared pointer of DerivedProjectedCRS */ +using DerivedProjectedCRSNNPtr = util::nn<DerivedProjectedCRSPtr>; + +/** \brief A derived coordinate reference system which has a projected + * coordinate reference system as its base CRS, thereby inheriting a geodetic + * reference frame, but also inheriting the distortion characteristics of the + * base projected CRS. + * + * A DerivedProjectedCRS is not a ProjectedCRS. + * + * \remark Implements DerivedProjectedCRS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL DerivedProjectedCRS final + : public DerivedCRS, + public io::IPROJStringExportable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~DerivedProjectedCRS() override; + //! @endcond + + PROJ_DLL const ProjectedCRSNNPtr baseCRS() const; + + PROJ_DLL static DerivedProjectedCRSNNPtr + create(const util::PropertyMap &properties, + const ProjectedCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::CoordinateSystemNNPtr &csIn); + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + //! @endcond + + protected: + PROJ_INTERNAL + DerivedProjectedCRS(const ProjectedCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::CoordinateSystemNNPtr &csIn); + PROJ_INTERNAL DerivedProjectedCRS(const DerivedProjectedCRS &other); + + PROJ_INTERNAL void _exportToPROJString(io::PROJStringFormatter *formatter) + const override; // throw(FormattingException) + + PROJ_INTERNAL CRSNNPtr _shallowClone() const override; + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + DerivedProjectedCRS &operator=(const DerivedProjectedCRS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class DerivedVerticalCRS; +/** Shared pointer of DerivedVerticalCRS */ +using DerivedVerticalCRSPtr = std::shared_ptr<DerivedVerticalCRS>; +/** Non-null shared pointer of DerivedVerticalCRS */ +using DerivedVerticalCRSNNPtr = util::nn<DerivedVerticalCRSPtr>; + +/** \brief A derived coordinate reference system which has a vertical + * coordinate reference system as its base CRS, thereby inheriting a vertical + * reference frame, and a vertical coordinate system. + * + * \remark Implements DerivedVerticalCRS from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL DerivedVerticalCRS final : public VerticalCRS, + public DerivedCRS { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~DerivedVerticalCRS() override; + //! @endcond + + PROJ_DLL const VerticalCRSNNPtr baseCRS() const; + + PROJ_DLL static DerivedVerticalCRSNNPtr + create(const util::PropertyMap &properties, + const VerticalCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::VerticalCSNNPtr &csIn); + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + //! @endcond + + protected: + PROJ_INTERNAL + DerivedVerticalCRS(const VerticalCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::VerticalCSNNPtr &csIn); + PROJ_INTERNAL DerivedVerticalCRS(const DerivedVerticalCRS &other); + + PROJ_INTERNAL void _exportToPROJString(io::PROJStringFormatter *formatter) + const override; // throw(FormattingException) + + PROJ_INTERNAL CRSNNPtr _shallowClone() const override; + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + PROJ_INTERNAL std::list<std::pair<CRSNNPtr, int>> + _identify(const io::AuthorityFactoryPtr &authorityFactory) const override; + + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + DerivedVerticalCRS &operator=(const DerivedVerticalCRS &other) = delete; +}; + +// --------------------------------------------------------------------------- + +/** \brief Template representing a derived coordinate reference system. + */ +template <class DerivedCRSTraits> +class PROJ_GCC_DLL DerivedCRSTemplate final : public DerivedCRSTraits::BaseType, + public DerivedCRS { + protected: + /** Base type */ + typedef typename DerivedCRSTraits::BaseType BaseType; + /** CSType */ + typedef typename DerivedCRSTraits::CSType CSType; + + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~DerivedCRSTemplate() override; + //! @endcond + + /** Non-null shared pointer of DerivedCRSTemplate */ + typedef typename util::nn<std::shared_ptr<DerivedCRSTemplate>> NNPtr; + /** Non-null shared pointer of BaseType */ + typedef util::nn<std::shared_ptr<BaseType>> BaseNNPtr; + /** Non-null shared pointer of CSType */ + typedef util::nn<std::shared_ptr<CSType>> CSNNPtr; + + /** \brief Return the base CRS of a DerivedCRSTemplate. + * + * @return the base CRS. + */ + PROJ_DLL const BaseNNPtr baseCRS() const; + + /** \brief Instanciate a DerivedCRSTemplate from a base CRS, a deriving + * conversion and a cs::CoordinateSystem. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param baseCRSIn base CRS. + * @param derivingConversionIn the deriving conversion from the base CRS to + * this + * CRS. + * @param csIn the coordinate system. + * @return new DerivedCRSTemplate. + */ + PROJ_DLL static NNPtr + create(const util::PropertyMap &properties, const BaseNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const CSNNPtr &csIn); + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + //! @endcond + + protected: + PROJ_INTERNAL + DerivedCRSTemplate(const BaseNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const CSNNPtr &csIn); + PROJ_INTERNAL DerivedCRSTemplate(const DerivedCRSTemplate &other); + + PROJ_INTERNAL CRSNNPtr _shallowClone() const override; + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + INLINED_MAKE_SHARED + + private: + struct PROJ_INTERNAL Private; + std::unique_ptr<Private> d; + + DerivedCRSTemplate &operator=(const DerivedCRSTemplate &other) = delete; +}; + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct PROJ_GCC_DLL DerivedEngineeringCRSTraits { + typedef EngineeringCRS BaseType; + typedef cs::CoordinateSystem CSType; + // old x86_64-w64-mingw32-g++ has issues with static variables. use method + // instead + inline static const std::string &CRSName(); + inline static const std::string &WKTKeyword(); + inline static const std::string &WKTBaseKeyword(); + static const bool wkt2_2018_only = true; +}; +//! @endcond + +/** \brief A derived coordinate reference system which has an engineering + * coordinate reference system as its base CRS, thereby inheriting an + * engineering datum, and is associated with one of the coordinate system + * types for an EngineeringCRS + * + * \remark Implements DerivedEngineeringCRS from \ref ISO_19111_2018 + */ +#ifdef DOXYGEN_ENABLED +class DerivedEngineeringCRS + : public DerivedCRSTemplate<DerivedEngineeringCRSTraits> {}; +#else +using DerivedEngineeringCRS = DerivedCRSTemplate<DerivedEngineeringCRSTraits>; +#endif + +#ifndef DO_NOT_DEFINE_EXTERN_DERIVED_CRS_TEMPLATE +extern template class DerivedCRSTemplate<DerivedEngineeringCRSTraits>; +#endif + +/** Shared pointer of DerivedEngineeringCRS */ +using DerivedEngineeringCRSPtr = std::shared_ptr<DerivedEngineeringCRS>; +/** Non-null shared pointer of DerivedEngineeringCRS */ +using DerivedEngineeringCRSNNPtr = util::nn<DerivedEngineeringCRSPtr>; + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct PROJ_GCC_DLL DerivedParametricCRSTraits { + typedef ParametricCRS BaseType; + typedef cs::ParametricCS CSType; + // old x86_64-w64-mingw32-g++ has issues with static variables. use method + // instead + inline static const std::string &CRSName(); + inline static const std::string &WKTKeyword(); + inline static const std::string &WKTBaseKeyword(); + static const bool wkt2_2018_only = false; +}; +//! @endcond + +/** \brief A derived coordinate reference system which has a parametric + * coordinate reference system as its base CRS, thereby inheriting a parametric + * datum, and a parametric coordinate system. + * + * \remark Implements DerivedParametricCRS from \ref ISO_19111_2018 + */ +#ifdef DOXYGEN_ENABLED +class DerivedParametricCRS + : public DerivedCRSTemplate<DerivedParametricCRSTraits> {}; +#else +using DerivedParametricCRS = DerivedCRSTemplate<DerivedParametricCRSTraits>; +#endif + +#ifndef DO_NOT_DEFINE_EXTERN_DERIVED_CRS_TEMPLATE +extern template class DerivedCRSTemplate<DerivedParametricCRSTraits>; +#endif + +/** Shared pointer of DerivedParametricCRS */ +using DerivedParametricCRSPtr = std::shared_ptr<DerivedParametricCRS>; +/** Non-null shared pointer of DerivedParametricCRS */ +using DerivedParametricCRSNNPtr = util::nn<DerivedParametricCRSPtr>; + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct PROJ_GCC_DLL DerivedTemporalCRSTraits { + typedef TemporalCRS BaseType; + typedef cs::TemporalCS CSType; + // old x86_64-w64-mingw32-g++ has issues with static variables. use method + // instead + inline static const std::string &CRSName(); + inline static const std::string &WKTKeyword(); + inline static const std::string &WKTBaseKeyword(); + static const bool wkt2_2018_only = false; +}; +//! @endcond + +/** \brief A derived coordinate reference system which has a temporal + * coordinate reference system as its base CRS, thereby inheriting a temporal + * datum, and a temporal coordinate system. + * + * \remark Implements DerivedTemporalCRS from \ref ISO_19111_2018 + */ +#ifdef DOXYGEN_ENABLED +class DerivedTemporalCRS : public DerivedCRSTemplate<DerivedTemporalCRSTraits> { +}; +#else +using DerivedTemporalCRS = DerivedCRSTemplate<DerivedTemporalCRSTraits>; +#endif + +#ifndef DO_NOT_DEFINE_EXTERN_DERIVED_CRS_TEMPLATE +extern template class DerivedCRSTemplate<DerivedTemporalCRSTraits>; +#endif + +/** Shared pointer of DerivedTemporalCRS */ +using DerivedTemporalCRSPtr = std::shared_ptr<DerivedTemporalCRS>; +/** Non-null shared pointer of DerivedTemporalCRS */ +using DerivedTemporalCRSNNPtr = util::nn<DerivedTemporalCRSPtr>; + +// --------------------------------------------------------------------------- + +} // namespace crs + +NS_PROJ_END + +#endif // CRS_HH_INCLUDED diff --git a/include/proj/datum.hpp b/include/proj/datum.hpp new file mode 100644 index 00000000..12b93a04 --- /dev/null +++ b/include/proj/datum.hpp @@ -0,0 +1,779 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef DATUM_HH_INCLUDED +#define DATUM_HH_INCLUDED + +#include <memory> +#include <string> +#include <vector> + +#include "common.hpp" +#include "io.hpp" +#include "util.hpp" + +NS_PROJ_START + +/** osgeo.proj.datum namespace + + \brief Datum (the relationship of a coordinate system to the body). + */ +namespace datum { + +// --------------------------------------------------------------------------- + +/** \brief Abstract class of the relationship of a coordinate system to an + * object, thus creating a coordinate reference system. + * + * For geodetic and vertical coordinate reference systems, it relates a + * coordinate system to the Earth (or the celestial body considered). With + * other types of coordinate reference systems, the datum may relate the + * coordinate system to another physical or + * virtual object. A datum uses a parameter or set of parameters that determine + * the location of the origin of the coordinate reference system. Each datum + * subtype can be associated with only specific types of coordinate reference + * systems. + * + * \remark Implements Datum from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL Datum : public common::ObjectUsage { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~Datum() override; + //! @endcond + + PROJ_DLL const util::optional<std::string> &anchorDefinition() const; + PROJ_DLL const util::optional<common::DateTime> &publicationDate() const; + PROJ_DLL const common::IdentifiedObjectPtr &conventionalRS() const; + + protected: + PROJ_INTERNAL Datum(); + + PROJ_INTERNAL bool + __isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const; + +#ifdef DOXYGEN_ENABLED + std::string *anchorDefinition_; + Date *publicationDate_; + common::IdentifiedObject *conventionalRS_; +#endif + + protected: + PROJ_INTERNAL void setAnchor(const util::optional<std::string> &anchor); + + private: + PROJ_OPAQUE_PRIVATE_DATA + Datum &operator=(const Datum &other) = delete; + Datum(const Datum &other) = delete; +}; + +/** Shared pointer of Datum */ +using DatumPtr = std::shared_ptr<Datum>; +/** Non-null shared pointer of Datum */ +using DatumNNPtr = util::nn<DatumPtr>; + +// --------------------------------------------------------------------------- + +class DatumEnsemble; +/** Shared pointer of DatumEnsemble */ +using DatumEnsemblePtr = std::shared_ptr<DatumEnsemble>; +/** Non-null shared pointer of DatumEnsemble */ +using DatumEnsembleNNPtr = util::nn<DatumEnsemblePtr>; + +/** \brief A collection of two or more geodetic or vertical reference frames + * (or if not geodetic or vertical reference frame, a collection of two or more + * datums) which for all but the highest accuracy requirements may be + * considered to be insignificantly different from each other. + * + * Every frame within the datum ensemble must be a realizations of the same + * Terrestrial Reference System or Vertical Reference System. + * + * \remark Implements DatumEnsemble from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL DatumEnsemble final : public common::IdentifiedObject { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~DatumEnsemble() override; + //! @endcond + + PROJ_DLL const std::vector<DatumNNPtr> &datums() const; + PROJ_DLL const metadata::PositionalAccuracyNNPtr & + positionalAccuracy() const; + + PROJ_DLL static DatumEnsembleNNPtr create( + const util::PropertyMap &properties, + const std::vector<DatumNNPtr> &datumsIn, + const metadata::PositionalAccuracyNNPtr &accuracy); // throw(Exception) + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + //! @endcond + + protected: +#ifdef DOXYGEN_ENABLED + Datum datums_[]; + PositionalAccuracy positionalAccuracy_; +#endif + + PROJ_INTERNAL + DatumEnsemble(const std::vector<DatumNNPtr> &datumsIn, + const metadata::PositionalAccuracyNNPtr &accuracy); + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + + DatumEnsemble(const DatumEnsemble &other) = delete; + DatumEnsemble &operator=(const DatumEnsemble &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class PrimeMeridian; +/** Shared pointer of PrimeMeridian */ +using PrimeMeridianPtr = std::shared_ptr<PrimeMeridian>; +/** Non-null shared pointer of PrimeMeridian */ +using PrimeMeridianNNPtr = util::nn<PrimeMeridianPtr>; + +/** \brief The origin meridian from which longitude values are determined. + * + * \note The default value for prime meridian name is "Greenwich". When the + * default applies, the value for the longitude shall be 0 (degrees). + * + * \remark Implements PrimeMeridian from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL PrimeMeridian final : public common::IdentifiedObject, + public io::IPROJStringExportable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~PrimeMeridian() override; + //! @endcond + + PROJ_DLL const common::Angle &longitude() PROJ_CONST_DECL; + + // non-standard + PROJ_DLL static PrimeMeridianNNPtr + create(const util::PropertyMap &properties, + const common::Angle &longitudeIn); + + PROJ_DLL static const PrimeMeridianNNPtr GREENWICH; + PROJ_DLL static const PrimeMeridianNNPtr PARIS; + + PROJ_PRIVATE : + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void + _exportToPROJString(io::PROJStringFormatter *formatter) + const override; // throw(FormattingException) + + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + PROJ_INTERNAL static std::string + getPROJStringWellKnownName(const common::Angle &angle); + //! @endcond + + protected: +#ifdef DOXYGEN_ENABLED + Angle greenwichLongitude_; +#endif + + PROJ_INTERNAL explicit PrimeMeridian( + const common::Angle &angle = common::Angle()); + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + PrimeMeridian(const PrimeMeridian &other) = delete; + PrimeMeridian &operator=(const PrimeMeridian &other) = delete; + + PROJ_INTERNAL static const PrimeMeridianNNPtr createGREENWICH(); + PROJ_INTERNAL static const PrimeMeridianNNPtr createPARIS(); +}; + +// --------------------------------------------------------------------------- + +class Ellipsoid; +/** Shared pointer of Ellipsoid */ +using EllipsoidPtr = std::shared_ptr<Ellipsoid>; +/** Non-null shared pointer of Ellipsoid */ +using EllipsoidNNPtr = util::nn<EllipsoidPtr>; + +/** \brief A geometric figure that can be used to describe the approximate + * shape of an object. + * + * For the Earth an oblate biaxial ellipsoid is used: in mathematical terms, + * it is a surface formed by the rotation of an ellipse about its minor axis. + * + * \remark Implements Ellipsoid from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL Ellipsoid final : public common::IdentifiedObject, + public io::IPROJStringExportable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~Ellipsoid() override; + //! @endcond + + PROJ_DLL const common::Length &semiMajorAxis() PROJ_CONST_DECL; + + // Inlined from SecondDefiningParameter union + PROJ_DLL const util::optional<common::Scale> & + inverseFlattening() PROJ_CONST_DECL; + PROJ_DLL const util::optional<common::Length> & + semiMinorAxis() PROJ_CONST_DECL; + PROJ_DLL bool isSphere() PROJ_CONST_DECL; + + PROJ_DLL const util::optional<common::Length> & + semiMedianAxis() PROJ_CONST_DECL; + + // non-standard + + PROJ_DLL double computedInverseFlattening() PROJ_CONST_DECL; + PROJ_DLL double squaredEccentricity() PROJ_CONST_DECL; + PROJ_DLL common::Length computeSemiMinorAxis() const; + + PROJ_DLL const std::string &celestialBody() PROJ_CONST_DECL; + + PROJ_DLL static const std::string EARTH; + + PROJ_DLL static EllipsoidNNPtr + createSphere(const util::PropertyMap &properties, + const common::Length &radius, + const std::string &celestialBody = EARTH); + + PROJ_DLL static EllipsoidNNPtr + createFlattenedSphere(const util::PropertyMap &properties, + const common::Length &semiMajorAxisIn, + const common::Scale &invFlattening, + const std::string &celestialBody = EARTH); + + PROJ_DLL static EllipsoidNNPtr + createTwoAxis(const util::PropertyMap &properties, + const common::Length &semiMajorAxisIn, + const common::Length &semiMinorAxisIn, + const std::string &celestialBody = EARTH); + + PROJ_DLL EllipsoidNNPtr identify() const; + + PROJ_DLL static const EllipsoidNNPtr CLARKE_1866; + PROJ_DLL static const EllipsoidNNPtr WGS84; + PROJ_DLL static const EllipsoidNNPtr GRS1980; + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + PROJ_INTERNAL void + _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + PROJ_INTERNAL void _exportToPROJString(io::PROJStringFormatter *formatter) + const override; // throw(FormattingException) + //! @endcond + + PROJ_INTERNAL static std::string + guessBodyName(const io::DatabaseContextPtr &dbContext, double a); + + PROJ_INTERNAL bool lookForProjWellKnownEllps(std::string &projEllpsName, + std::string &ellpsName) const; + + protected: +#ifdef DOXYGEN_ENABLED + common::Length semiMajorAxis_; + common::Scale *inverseFlattening_; + common::Length *semiMinorAxis_; + bool isSphere_; + common::Length *semiMedianAxis_; +#endif + + PROJ_INTERNAL explicit Ellipsoid(const common::Length &radius, + const std::string &celestialBody); + + PROJ_INTERNAL Ellipsoid(const common::Length &semiMajorAxisIn, + const common::Scale &invFlattening, + const std::string &celestialBody); + + PROJ_INTERNAL Ellipsoid(const common::Length &semiMajorAxisIn, + const common::Length &semiMinorAxisIn, + const std::string &celestialBody); + + PROJ_INTERNAL Ellipsoid(const Ellipsoid &other); + + INLINED_MAKE_SHARED + + PROJ_INTERNAL static const EllipsoidNNPtr createCLARKE_1866(); + PROJ_INTERNAL static const EllipsoidNNPtr createWGS84(); + PROJ_INTERNAL static const EllipsoidNNPtr createGRS1980(); + + private: + PROJ_OPAQUE_PRIVATE_DATA + Ellipsoid &operator=(const Ellipsoid &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class GeodeticReferenceFrame; +/** Shared pointer of GeodeticReferenceFrame */ +using GeodeticReferenceFramePtr = std::shared_ptr<GeodeticReferenceFrame>; +/** Non-null shared pointer of GeodeticReferenceFrame */ +using GeodeticReferenceFrameNNPtr = util::nn<GeodeticReferenceFramePtr>; + +/** \brief The definition of the position, scale and orientation of a geocentric + * Cartesian 3D coordinate system relative to the Earth. + * + * It may also identify a defined ellipsoid (or sphere) that approximates + * the shape of the Earth and which is centred on and aligned to this + * geocentric coordinate system. Older geodetic datums define the location and + * orientation of a defined ellipsoid (or sphere) that approximates the shape + * of the earth. + * + * \note The terminology "Datum" is often used to mean a GeodeticReferenceFrame. + * + * \note In \ref ISO_19111_2007, this class was called GeodeticDatum. + * + * \remark Implements GeodeticReferenceFrame from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL GeodeticReferenceFrame : public Datum { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~GeodeticReferenceFrame() override; + //! @endcond + + PROJ_DLL const PrimeMeridianNNPtr &primeMeridian() PROJ_CONST_DECL; + + // We constraint more than the standard into which the ellipsoid might + // be omitted for a CRS with a non-ellipsoidal CS + PROJ_DLL const EllipsoidNNPtr &ellipsoid() PROJ_CONST_DECL; + + // non-standard + PROJ_DLL static GeodeticReferenceFrameNNPtr + create(const util::PropertyMap &properties, const EllipsoidNNPtr &ellipsoid, + const util::optional<std::string> &anchor, + const PrimeMeridianNNPtr &primeMeridian); + + PROJ_DLL static const GeodeticReferenceFrameNNPtr + EPSG_6267; // North American Datum 1927 + PROJ_DLL static const GeodeticReferenceFrameNNPtr + EPSG_6269; // North American Datum 1983 + PROJ_DLL static const GeodeticReferenceFrameNNPtr EPSG_6326; // WGS 84 + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + //! @endcond + + protected: +#ifdef DOXYGEN_ENABLED + PrimeMeridian primeMeridian_; + Ellipsoid *ellipsoid_; +#endif + + PROJ_INTERNAL + GeodeticReferenceFrame(const EllipsoidNNPtr &ellipsoidIn, + const PrimeMeridianNNPtr &primeMeridianIn); + INLINED_MAKE_SHARED + + PROJ_INTERNAL static const GeodeticReferenceFrameNNPtr createEPSG_6267(); + PROJ_INTERNAL static const GeodeticReferenceFrameNNPtr createEPSG_6269(); + PROJ_INTERNAL static const GeodeticReferenceFrameNNPtr createEPSG_6326(); + + private: + PROJ_OPAQUE_PRIVATE_DATA + GeodeticReferenceFrame(const GeodeticReferenceFrame &other) = delete; + GeodeticReferenceFrame & + operator=(const GeodeticReferenceFrame &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class DynamicGeodeticReferenceFrame; +/** Shared pointer of DynamicGeodeticReferenceFrame */ +using DynamicGeodeticReferenceFramePtr = + std::shared_ptr<DynamicGeodeticReferenceFrame>; +/** Non-null shared pointer of DynamicGeodeticReferenceFrame */ +using DynamicGeodeticReferenceFrameNNPtr = + util::nn<DynamicGeodeticReferenceFramePtr>; + +/** \brief A geodetic reference frame in which some of the parameters describe + * time evolution of defining station coordinates. + * + * For example defining station coordinates having linear velocities to account + * for crustal motion. + * + * \remark Implements DynamicGeodeticReferenceFrame from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL DynamicGeodeticReferenceFrame final + : public GeodeticReferenceFrame { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~DynamicGeodeticReferenceFrame() override; + //! @endcond + + PROJ_DLL const common::Measure &frameReferenceEpoch() const; + PROJ_DLL const util::optional<std::string> &deformationModelName() const; + + // non-standard + PROJ_DLL static DynamicGeodeticReferenceFrameNNPtr + create(const util::PropertyMap &properties, const EllipsoidNNPtr &ellipsoid, + const util::optional<std::string> &anchor, + const PrimeMeridianNNPtr &primeMeridian, + const common::Measure &frameReferenceEpochIn, + const util::optional<std::string> &deformationModelNameIn); + + //! @cond Doxygen_Suppress + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + //! @endcond + + protected: +#ifdef DOXYGEN_ENABLED + Measure frameReferenceEpoch_; +#endif + + PROJ_INTERNAL DynamicGeodeticReferenceFrame( + const EllipsoidNNPtr &ellipsoidIn, + const PrimeMeridianNNPtr &primeMeridianIn, + const common::Measure &frameReferenceEpochIn, + const util::optional<std::string> &deformationModelNameIn); + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + DynamicGeodeticReferenceFrame(const DynamicGeodeticReferenceFrame &other) = + delete; + DynamicGeodeticReferenceFrame & + operator=(const DynamicGeodeticReferenceFrame &other) = delete; +}; + +// --------------------------------------------------------------------------- + +/** \brief The specification of the method by which the vertical reference frame + * is realized. + * + * \remark Implements RealizationMethod from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL RealizationMethod : public util::CodeList { + public: + PROJ_DLL static const RealizationMethod LEVELLING; + PROJ_DLL static const RealizationMethod GEOID; + PROJ_DLL static const RealizationMethod TIDAL; + + private: + PROJ_FRIEND_OPTIONAL(RealizationMethod); + PROJ_DLL explicit RealizationMethod( + const std::string &nameIn = std::string()); + PROJ_DLL RealizationMethod(const RealizationMethod &other); + PROJ_DLL RealizationMethod &operator=(const RealizationMethod &other); +}; + +// --------------------------------------------------------------------------- + +class VerticalReferenceFrame; +/** Shared pointer of VerticalReferenceFrame */ +using VerticalReferenceFramePtr = std::shared_ptr<VerticalReferenceFrame>; +/** Non-null shared pointer of VerticalReferenceFrame */ +using VerticalReferenceFrameNNPtr = util::nn<VerticalReferenceFramePtr>; + +/** \brief A textual description and/or a set of parameters identifying a + * particular reference level surface used as a zero-height or zero-depth + * surface, including its position with respect to the Earth. + * + * \note In \ref ISO_19111_2007, this class was called VerticalDatum. + + * \remark Implements VerticalReferenceFrame from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL VerticalReferenceFrame : public Datum { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~VerticalReferenceFrame() override; + //! @endcond + + PROJ_DLL const util::optional<RealizationMethod> &realizationMethod() const; + + // non-standard + PROJ_DLL static VerticalReferenceFrameNNPtr + create(const util::PropertyMap &properties, + const util::optional<std::string> &anchor = + util::optional<std::string>(), + const util::optional<RealizationMethod> &realizationMethodIn = + util::optional<RealizationMethod>()); + + //! @cond Doxygen_Suppress + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + //! @endcond + + protected: +#ifdef DOXYGEN_ENABLED + RealizationMethod realizationMethod_; +#endif + + PROJ_INTERNAL explicit VerticalReferenceFrame( + const util::optional<RealizationMethod> &realizationMethodIn); + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +class DynamicVerticalReferenceFrame; +/** Shared pointer of DynamicVerticalReferenceFrame */ +using DynamicVerticalReferenceFramePtr = + std::shared_ptr<DynamicVerticalReferenceFrame>; +/** Non-null shared pointer of DynamicVerticalReferenceFrame */ +using DynamicVerticalReferenceFrameNNPtr = + util::nn<DynamicVerticalReferenceFramePtr>; + +/** \brief A vertical reference frame in which some of the defining parameters + * have time dependency. + * + * For example defining station heights have velocity to account for + * post-glacial isostatic rebound motion. + * + * \remark Implements DynamicVerticalReferenceFrame from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL DynamicVerticalReferenceFrame final + : public VerticalReferenceFrame { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~DynamicVerticalReferenceFrame() override; + //! @endcond + + PROJ_DLL const common::Measure &frameReferenceEpoch() const; + PROJ_DLL const util::optional<std::string> &deformationModelName() const; + + // non-standard + PROJ_DLL static DynamicVerticalReferenceFrameNNPtr + create(const util::PropertyMap &properties, + const util::optional<std::string> &anchor, + const util::optional<RealizationMethod> &realizationMethodIn, + const common::Measure &frameReferenceEpochIn, + const util::optional<std::string> &deformationModelNameIn); + + //! @cond Doxygen_Suppress + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + //! @endcond + + protected: +#ifdef DOXYGEN_ENABLED + Measure frameReferenceEpoch_; +#endif + + PROJ_INTERNAL DynamicVerticalReferenceFrame( + const util::optional<RealizationMethod> &realizationMethodIn, + const common::Measure &frameReferenceEpochIn, + const util::optional<std::string> &deformationModelNameIn); + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + DynamicVerticalReferenceFrame(const DynamicVerticalReferenceFrame &other) = + delete; + DynamicVerticalReferenceFrame & + operator=(const DynamicVerticalReferenceFrame &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class TemporalDatum; +/** Shared pointer of TemporalDatum */ +using TemporalDatumPtr = std::shared_ptr<TemporalDatum>; +/** Non-null shared pointer of TemporalDatum */ +using TemporalDatumNNPtr = util::nn<TemporalDatumPtr>; + +/** \brief The definition of the relationship of a temporal coordinate system + * to an object. The object is normally time on the Earth. + * + * \remark Implements TemporalDatum from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL TemporalDatum final : public Datum { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~TemporalDatum() override; + //! @endcond + + PROJ_DLL const common::DateTime &temporalOrigin() const; + PROJ_DLL const std::string &calendar() const; + + PROJ_DLL static const std::string CALENDAR_PROLEPTIC_GREGORIAN; + + // non-standard + PROJ_DLL static TemporalDatumNNPtr + create(const util::PropertyMap &properties, + const common::DateTime &temporalOriginIn, + const std::string &calendarIn); + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + //! @endcond + + protected: + PROJ_INTERNAL TemporalDatum(const common::DateTime &temporalOriginIn, + const std::string &calendarIn); + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +class EngineeringDatum; +/** Shared pointer of EngineeringDatum */ +using EngineeringDatumPtr = std::shared_ptr<EngineeringDatum>; +/** Non-null shared pointer of EngineeringDatum */ +using EngineeringDatumNNPtr = util::nn<EngineeringDatumPtr>; + +/** \brief The definition of the origin and orientation of an engineering + * coordinate reference system. + * + * \note The origin can be fixed with respect to the Earth (such as a defined + * point at a construction site), or be a defined point on a moving vehicle + * (such as on a ship or satellite), or a defined point of an image. + * + * \remark Implements EngineeringDatum from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL EngineeringDatum final : public Datum { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~EngineeringDatum() override; + //! @endcond + + // non-standard + PROJ_DLL static EngineeringDatumNNPtr + create(const util::PropertyMap &properties, + const util::optional<std::string> &anchor = + util::optional<std::string>()); + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + //! @endcond + + protected: + PROJ_INTERNAL EngineeringDatum(); + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +class ParametricDatum; +/** Shared pointer of ParametricDatum */ +using ParametricDatumPtr = std::shared_ptr<ParametricDatum>; +/** Non-null shared pointer of ParametricDatum */ +using ParametricDatumNNPtr = util::nn<ParametricDatumPtr>; + +/** \brief Textual description and/or a set of parameters identifying a + * particular reference surface used as the origin of a parametric coordinate + * system, including its position with respect to the Earth. + * + * \remark Implements ParametricDatum from \ref ISO_19111_2018 + */ +class PROJ_GCC_DLL ParametricDatum final : public Datum { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~ParametricDatum() override; + //! @endcond + + // non-standard + PROJ_DLL static ParametricDatumNNPtr + create(const util::PropertyMap &properties, + const util::optional<std::string> &anchor = + util::optional<std::string>()); + + //! @cond Doxygen_Suppress + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + //! @endcond + + protected: + PROJ_INTERNAL ParametricDatum(); + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +} // namespace datum + +NS_PROJ_END + +#endif // DATUM_HH_INCLUDED diff --git a/include/proj/internal/Makefile.am b/include/proj/internal/Makefile.am new file mode 100644 index 00000000..ddd2686c --- /dev/null +++ b/include/proj/internal/Makefile.am @@ -0,0 +1,8 @@ +noinst_HEADERS = \ + coordinateoperation_constants.hpp \ + coordinateoperation_internal.hpp \ + esri_projection_mappings.hpp \ + coordinatesystem_internal.hpp \ + internal.hpp \ + io_internal.hpp \ + lru_cache.hpp diff --git a/include/proj/internal/coordinateoperation_constants.hpp b/include/proj/internal/coordinateoperation_constants.hpp new file mode 100644 index 00000000..e999b3a6 --- /dev/null +++ b/include/proj/internal/coordinateoperation_constants.hpp @@ -0,0 +1,898 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef FROM_COORDINATE_OPERATION_CPP +#error This file should only be included from coordinateoperation.cpp +#endif + +#ifndef COORDINATEOPERATION_CONSTANTS_HH_INCLUDED +#define COORDINATEOPERATION_CONSTANTS_HH_INCLUDED + +#include "coordinateoperation_internal.hpp" +#include "proj_constants.h" + +//! @cond Doxygen_Suppress +// --------------------------------------------------------------------------- + +// anonymous namespace +namespace { + +using namespace ::NS_PROJ; +using namespace ::NS_PROJ::operation; + +static const char *WKT1_LATITUDE_OF_ORIGIN = "latitude_of_origin"; +static const char *WKT1_CENTRAL_MERIDIAN = "central_meridian"; +static const char *WKT1_SCALE_FACTOR = "scale_factor"; +static const char *WKT1_FALSE_EASTING = "false_easting"; +static const char *WKT1_FALSE_NORTHING = "false_northing"; +static const char *WKT1_STANDARD_PARALLEL_1 = "standard_parallel_1"; +static const char *WKT1_STANDARD_PARALLEL_2 = "standard_parallel_2"; +static const char *WKT1_LATITUDE_OF_CENTER = "latitude_of_center"; +static const char *WKT1_LONGITUDE_OF_CENTER = "longitude_of_center"; +static const char *WKT1_AZIMUTH = "azimuth"; +static const char *WKT1_RECTIFIED_GRID_ANGLE = "rectified_grid_angle"; + +static const char *lat_0 = "lat_0"; +static const char *lat_1 = "lat_1"; +static const char *lat_2 = "lat_2"; +static const char *lat_ts = "lat_ts"; +static const char *lon_0 = "lon_0"; +static const char *lon_1 = "lon_1"; +static const char *lon_2 = "lon_2"; +static const char *lonc = "lonc"; +static const char *alpha = "alpha"; +static const char *gamma = "gamma"; +static const char *k_0 = "k_0"; +static const char *k = "k"; +static const char *x_0 = "x_0"; +static const char *y_0 = "y_0"; +static const char *h = "h"; + +static const ParamMapping paramLatitudeNatOrigin = { + EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, WKT1_LATITUDE_OF_ORIGIN, + common::UnitOfMeasure::Type::ANGULAR, lat_0}; + +static const ParamMapping paramLongitudeNatOrigin = { + EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, WKT1_CENTRAL_MERIDIAN, + common::UnitOfMeasure::Type::ANGULAR, lon_0}; + +static const ParamMapping paramScaleFactor = { + EPSG_NAME_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN, WKT1_SCALE_FACTOR, + common::UnitOfMeasure::Type::SCALE, k_0}; + +static const ParamMapping paramFalseEasting = { + EPSG_NAME_PARAMETER_FALSE_EASTING, EPSG_CODE_PARAMETER_FALSE_EASTING, + WKT1_FALSE_EASTING, common::UnitOfMeasure::Type::LINEAR, x_0}; + +static const ParamMapping paramFalseNorthing = { + EPSG_NAME_PARAMETER_FALSE_NORTHING, EPSG_CODE_PARAMETER_FALSE_NORTHING, + WKT1_FALSE_NORTHING, common::UnitOfMeasure::Type::LINEAR, y_0}; + +static const ParamMapping paramLatitudeFalseOrigin = { + EPSG_NAME_PARAMETER_LATITUDE_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_FALSE_ORIGIN, WKT1_LATITUDE_OF_ORIGIN, + common::UnitOfMeasure::Type::ANGULAR, lat_0}; + +static const ParamMapping paramLongitudeFalseOrigin = { + EPSG_NAME_PARAMETER_LONGITUDE_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_FALSE_ORIGIN, WKT1_CENTRAL_MERIDIAN, + common::UnitOfMeasure::Type::ANGULAR, lon_0}; + +static const ParamMapping paramFalseEastingOrigin = { + EPSG_NAME_PARAMETER_EASTING_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_EASTING_FALSE_ORIGIN, WKT1_FALSE_EASTING, + common::UnitOfMeasure::Type::LINEAR, x_0}; + +static const ParamMapping paramFalseNorthingOrigin = { + EPSG_NAME_PARAMETER_NORTHING_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_NORTHING_FALSE_ORIGIN, WKT1_FALSE_NORTHING, + common::UnitOfMeasure::Type::LINEAR, y_0}; + +static const ParamMapping paramLatitude1stStdParallel = { + EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, WKT1_STANDARD_PARALLEL_1, + common::UnitOfMeasure::Type::ANGULAR, lat_1}; + +static const ParamMapping paramLatitude2ndStdParallel = { + EPSG_NAME_PARAMETER_LATITUDE_2ND_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_2ND_STD_PARALLEL, WKT1_STANDARD_PARALLEL_2, + common::UnitOfMeasure::Type::ANGULAR, lat_2}; + +static const ParamMapping *const paramsNatOriginScale[] = { + ¶mLatitudeNatOrigin, ¶mLongitudeNatOrigin, ¶mScaleFactor, + ¶mFalseEasting, ¶mFalseNorthing, nullptr}; + +static const ParamMapping paramLatFirstPoint = { + "Latitude of 1st point", 0, "Latitude_Of_1st_Point", + common::UnitOfMeasure::Type::ANGULAR, lat_1}; +static const ParamMapping paramLongFirstPoint = { + "Longitude of 1st point", 0, "Longitude_Of_1st_Point", + common::UnitOfMeasure::Type::ANGULAR, lon_1}; +static const ParamMapping paramLatSecondPoint = { + "Latitude of 2nd point", 0, "Latitude_Of_2nd_Point", + common::UnitOfMeasure::Type::ANGULAR, lat_2}; +static const ParamMapping paramLongSecondPoint = { + "Longitude of 2nd point", 0, "Longitude_Of_2nd_Point", + common::UnitOfMeasure::Type::ANGULAR, lon_2}; + +static const ParamMapping *const paramsTPEQD[] = {¶mLatFirstPoint, + ¶mLongFirstPoint, + ¶mLatSecondPoint, + ¶mLongSecondPoint, + ¶mFalseEasting, + ¶mFalseNorthing, + nullptr}; + +static const ParamMapping *const paramsTMG[] = { + ¶mLatitudeFalseOrigin, ¶mLongitudeFalseOrigin, + ¶mFalseEastingOrigin, ¶mFalseNorthingOrigin, nullptr}; + +static const ParamMapping paramLatFalseOriginLatOfCenter = { + EPSG_NAME_PARAMETER_LATITUDE_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_FALSE_ORIGIN, WKT1_LATITUDE_OF_CENTER, + common::UnitOfMeasure::Type::ANGULAR, lat_0}; + +static const ParamMapping paramLongFalseOriginLongOfCenter = { + EPSG_NAME_PARAMETER_LONGITUDE_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_FALSE_ORIGIN, WKT1_LONGITUDE_OF_CENTER, + common::UnitOfMeasure::Type::ANGULAR, lon_0}; + +static const ParamMapping *const paramsAEA[] = { + ¶mLatFalseOriginLatOfCenter, + ¶mLongFalseOriginLongOfCenter, + ¶mLatitude1stStdParallel, + ¶mLatitude2ndStdParallel, + ¶mFalseEastingOrigin, + ¶mFalseNorthingOrigin, + nullptr}; + +static const ParamMapping *const paramsLCC2SP[] = { + ¶mLatitudeFalseOrigin, + ¶mLongitudeFalseOrigin, + ¶mLatitude1stStdParallel, + ¶mLatitude2ndStdParallel, + ¶mFalseEastingOrigin, + ¶mFalseNorthingOrigin, + nullptr, +}; + +static const ParamMapping paramEllipsoidScaleFactor = { + EPSG_NAME_PARAMETER_ELLIPSOID_SCALE_FACTOR, + EPSG_CODE_PARAMETER_ELLIPSOID_SCALE_FACTOR, nullptr, + common::UnitOfMeasure::Type::SCALE, k_0}; + +static const ParamMapping *const paramsLCC2SPMichigan[] = { + ¶mLatitudeFalseOrigin, ¶mLongitudeFalseOrigin, + ¶mLatitude1stStdParallel, ¶mLatitude2ndStdParallel, + ¶mFalseEastingOrigin, ¶mFalseNorthingOrigin, + ¶mEllipsoidScaleFactor, nullptr, +}; + +static const ParamMapping paramLatNatLatCenter = { + EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, WKT1_LATITUDE_OF_CENTER, + common::UnitOfMeasure::Type::ANGULAR, lat_0}; + +static const ParamMapping paramLonNatLonCenter = { + EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, WKT1_LONGITUDE_OF_CENTER, + common::UnitOfMeasure::Type::ANGULAR, lon_0}; + +static const ParamMapping *const paramsAEQD[]{ + ¶mLatNatLatCenter, ¶mLonNatLonCenter, ¶mFalseEasting, + ¶mFalseNorthing, nullptr}; + +static const ParamMapping *const paramsNatOrigin[] = { + ¶mLatitudeNatOrigin, ¶mLongitudeNatOrigin, ¶mFalseEasting, + ¶mFalseNorthing, nullptr}; + +static const ParamMapping paramLatNatOriginLat1 = { + EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, WKT1_STANDARD_PARALLEL_1, + common::UnitOfMeasure::Type::ANGULAR, lat_1}; + +static const ParamMapping *const paramsBonne[] = { + ¶mLatNatOriginLat1, ¶mLongitudeNatOrigin, ¶mFalseEasting, + ¶mFalseNorthing, nullptr}; + +static const ParamMapping paramLat1stParallelLatTs = { + EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, WKT1_STANDARD_PARALLEL_1, + common::UnitOfMeasure::Type::ANGULAR, lat_ts}; + +static const ParamMapping *const paramsCEA[] = { + ¶mLat1stParallelLatTs, ¶mLongitudeNatOrigin, ¶mFalseEasting, + ¶mFalseNorthing, nullptr}; + +static const ParamMapping *const paramsEQDC[] = {¶mLatNatLatCenter, + ¶mLonNatLonCenter, + ¶mLatitude1stStdParallel, + ¶mLatitude2ndStdParallel, + ¶mFalseEasting, + ¶mFalseNorthing, + nullptr}; + +static const ParamMapping *const paramsLonNatOrigin[] = { + ¶mLongitudeNatOrigin, ¶mFalseEasting, ¶mFalseNorthing, nullptr}; + +static const ParamMapping *const paramsEqc[] = // same as paramsCEA + {¶mLat1stParallelLatTs, ¶mLongitudeNatOrigin, ¶mFalseEasting, + ¶mFalseNorthing, nullptr}; + +static const ParamMapping paramSatelliteHeight = { + "Satellite Height", 0, "satellite_height", + common::UnitOfMeasure::Type::LINEAR, h}; + +static const ParamMapping *const paramsGeos[] = { + ¶mLongitudeNatOrigin, ¶mSatelliteHeight, ¶mFalseEasting, + ¶mFalseNorthing, nullptr}; + +static const ParamMapping paramLatCentreLatCenter = { + EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_LATITUDE_PROJECTION_CENTRE, WKT1_LATITUDE_OF_CENTER, + common::UnitOfMeasure::Type::ANGULAR, lat_0}; + +static const ParamMapping paramLonCentreLonCenterLonc = { + EPSG_NAME_PARAMETER_LONGITUDE_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_LONGITUDE_PROJECTION_CENTRE, WKT1_LONGITUDE_OF_CENTER, + common::UnitOfMeasure::Type::ANGULAR, lonc}; + +static const ParamMapping paramLatCentreLatOrigin = { + EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_LATITUDE_PROJECTION_CENTRE, WKT1_LATITUDE_OF_ORIGIN, + common::UnitOfMeasure::Type::ANGULAR, lat_0}; + +static const ParamMapping paramAzimuth = { + EPSG_NAME_PARAMETER_AZIMUTH_INITIAL_LINE, + EPSG_CODE_PARAMETER_AZIMUTH_INITIAL_LINE, WKT1_AZIMUTH, + common::UnitOfMeasure::Type::ANGULAR, alpha}; + +static const ParamMapping paramAngleToSkewGrid = { + EPSG_NAME_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID, + EPSG_CODE_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID, WKT1_RECTIFIED_GRID_ANGLE, + common::UnitOfMeasure::Type::ANGULAR, gamma}; +static const ParamMapping paramScaleFactorInitialLine = { + EPSG_NAME_PARAMETER_SCALE_FACTOR_INITIAL_LINE, + EPSG_CODE_PARAMETER_SCALE_FACTOR_INITIAL_LINE, WKT1_SCALE_FACTOR, + common::UnitOfMeasure::Type::SCALE, k}; + +static const ParamMapping *const paramsHomVariantA[] = { + ¶mLatCentreLatCenter, + ¶mLonCentreLonCenterLonc, + ¶mAzimuth, + ¶mAngleToSkewGrid, + ¶mScaleFactorInitialLine, + ¶mFalseEasting, + ¶mFalseNorthing, + nullptr}; + +static const ParamMapping paramFalseEastingProjectionCentre = { + EPSG_NAME_PARAMETER_EASTING_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_EASTING_PROJECTION_CENTRE, WKT1_FALSE_EASTING, + common::UnitOfMeasure::Type::LINEAR, x_0}; + +static const ParamMapping paramFalseNorthingProjectionCentre = { + EPSG_NAME_PARAMETER_NORTHING_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_NORTHING_PROJECTION_CENTRE, WKT1_FALSE_NORTHING, + common::UnitOfMeasure::Type::LINEAR, y_0}; + +static const ParamMapping *const paramsHomVariantB[] = { + ¶mLatCentreLatCenter, + ¶mLonCentreLonCenterLonc, + ¶mAzimuth, + ¶mAngleToSkewGrid, + ¶mScaleFactorInitialLine, + ¶mFalseEastingProjectionCentre, + ¶mFalseNorthingProjectionCentre, + nullptr}; + +static const ParamMapping paramLatPoint1 = { + "Latitude of 1st point", 0, "latitude_of_point_1", + common::UnitOfMeasure::Type::ANGULAR, lat_1}; + +static const ParamMapping paramLonPoint1 = { + "Longitude of 1st point", 0, "longitude_of_point_1", + common::UnitOfMeasure::Type::ANGULAR, lon_1}; + +static const ParamMapping paramLatPoint2 = { + "Latitude of 2nd point", 0, "latitude_of_point_2", + common::UnitOfMeasure::Type::ANGULAR, lat_2}; + +static const ParamMapping paramLonPoint2 = { + "Longitude of 2nd point", 0, "longitude_of_point_2", + common::UnitOfMeasure::Type::ANGULAR, lon_2}; + +static const ParamMapping *const paramsHomTwoPoint[] = { + ¶mLatCentreLatOrigin, + ¶mLatPoint1, + ¶mLonPoint1, + ¶mLatPoint2, + ¶mLonPoint2, + ¶mScaleFactorInitialLine, + ¶mFalseEastingProjectionCentre, + ¶mFalseNorthingProjectionCentre, + nullptr}; + +static const ParamMapping *const paramsIMWP[] = { + ¶mLongitudeNatOrigin, ¶mLatitude1stStdParallel, + ¶mLatitude2ndStdParallel, ¶mFalseEasting, + ¶mFalseNorthing, nullptr}; + +static const ParamMapping paramLonCentreLonCenter = { + EPSG_NAME_PARAMETER_LONGITUDE_OF_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_ORIGIN, WKT1_LONGITUDE_OF_CENTER, + common::UnitOfMeasure::Type::ANGULAR, lon_0}; + +static const ParamMapping paramColatitudeConeAxis = { + EPSG_NAME_PARAMETER_COLATITUDE_CONE_AXIS, + EPSG_CODE_PARAMETER_COLATITUDE_CONE_AXIS, WKT1_AZIMUTH, + common::UnitOfMeasure::Type::ANGULAR, + nullptr}; /* ignored by PROJ currently */ + +static const ParamMapping paramLatitudePseudoStdParallel = { + EPSG_NAME_PARAMETER_LATITUDE_PSEUDO_STANDARD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_PSEUDO_STANDARD_PARALLEL, + "pseudo_standard_parallel_1", common::UnitOfMeasure::Type::ANGULAR, + nullptr}; /* ignored by PROJ currently */ + +static const ParamMapping paramScaleFactorPseudoStdParallel = { + EPSG_NAME_PARAMETER_SCALE_FACTOR_PSEUDO_STANDARD_PARALLEL, + EPSG_CODE_PARAMETER_SCALE_FACTOR_PSEUDO_STANDARD_PARALLEL, + WKT1_SCALE_FACTOR, common::UnitOfMeasure::Type::SCALE, + k}; /* ignored by PROJ currently */ + +static const ParamMapping *const krovakParameters[] = { + ¶mLatCentreLatCenter, + ¶mLonCentreLonCenter, + ¶mColatitudeConeAxis, + ¶mLatitudePseudoStdParallel, + ¶mScaleFactorPseudoStdParallel, + ¶mFalseEasting, + ¶mFalseNorthing, + nullptr}; + +static const ParamMapping *const paramsLaea[] = { + ¶mLatNatLatCenter, ¶mLonNatLonCenter, ¶mFalseEasting, + ¶mFalseNorthing, nullptr}; + +static const ParamMapping *const paramsMiller[] = { + ¶mLonNatLonCenter, ¶mFalseEasting, ¶mFalseNorthing, nullptr}; + +static const ParamMapping paramLatMerc1SP = { + EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + nullptr, // always set to zero, not to be exported in WKT1 + common::UnitOfMeasure::Type::ANGULAR, + nullptr}; // always set to zero, not to be exported in PROJ strings + +static const ParamMapping paramScaleFactorK = { + EPSG_NAME_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN, WKT1_SCALE_FACTOR, + common::UnitOfMeasure::Type::SCALE, k}; + +static const ParamMapping *const paramsMerc1SP[] = { + ¶mLatMerc1SP, ¶mLongitudeNatOrigin, ¶mScaleFactorK, + ¶mFalseEasting, ¶mFalseNorthing, nullptr}; + +static const ParamMapping *const paramsMerc2SP[] = { + ¶mLat1stParallelLatTs, ¶mLongitudeNatOrigin, ¶mFalseEasting, + ¶mFalseNorthing, nullptr}; + +static const ParamMapping *const paramsObliqueStereo[] = { + ¶mLatitudeNatOrigin, ¶mLongitudeNatOrigin, ¶mScaleFactorK, + ¶mFalseEasting, ¶mFalseNorthing, nullptr}; + +static const ParamMapping paramLatStdParallel = { + EPSG_NAME_PARAMETER_LATITUDE_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_STD_PARALLEL, WKT1_LATITUDE_OF_ORIGIN, + common::UnitOfMeasure::Type::ANGULAR, lat_ts}; + +static const ParamMapping paramsLonOrigin = { + EPSG_NAME_PARAMETER_LONGITUDE_OF_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_ORIGIN, WKT1_CENTRAL_MERIDIAN, + common::UnitOfMeasure::Type::ANGULAR, lon_0}; + +static const ParamMapping *const paramsPolarStereo[] = { + ¶mLatStdParallel, ¶msLonOrigin, ¶mFalseEasting, + ¶mFalseNorthing, nullptr}; + +static const ParamMapping *const paramsLonNatOriginLongitudeCentre[] = { + ¶mLonNatLonCenter, ¶mFalseEasting, ¶mFalseNorthing, nullptr}; + +static const ParamMapping paramLatTrueScaleWag3 = { + "Latitude of true scale", 0, WKT1_LATITUDE_OF_ORIGIN, + common::UnitOfMeasure::Type::ANGULAR, lat_ts}; + +static const ParamMapping *const paramsWag3[] = { + ¶mLatTrueScaleWag3, ¶mLongitudeNatOrigin, ¶mFalseEasting, + ¶mFalseNorthing, nullptr}; + +static const ParamMapping paramPegLat = { + "Peg point latitude", 0, "peg_point_latitude", + common::UnitOfMeasure::Type::ANGULAR, "plat_0"}; + +static const ParamMapping paramPegLon = { + "Peg point longitude", 0, "peg_point_longitude", + common::UnitOfMeasure::Type::ANGULAR, "plon_0"}; + +static const ParamMapping paramPegHeading = { + "Peg point heading", 0, "peg_point_heading", + common::UnitOfMeasure::Type::ANGULAR, "phdg_0"}; + +static const ParamMapping paramPegHeight = { + "Peg point height", 0, "peg_point_height", + common::UnitOfMeasure::Type::LINEAR, "h_0"}; + +static const ParamMapping *const paramsSch[] = { + ¶mPegLat, ¶mPegLon, ¶mPegHeading, ¶mPegHeight, nullptr}; + +static const ParamMapping *const paramsWink1[] = { + ¶mLongitudeNatOrigin, ¶mLat1stParallelLatTs, ¶mFalseEasting, + ¶mFalseNorthing, nullptr}; + +static const ParamMapping *const paramsWink2[] = { + ¶mLongitudeNatOrigin, ¶mLatitude1stStdParallel, ¶mFalseEasting, + ¶mFalseNorthing, nullptr}; + +static const ParamMapping paramLatLoxim = { + EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, WKT1_LATITUDE_OF_ORIGIN, + common::UnitOfMeasure::Type::ANGULAR, lat_1}; + +static const ParamMapping *const paramsLoxim[] = { + ¶mLatLoxim, ¶mLongitudeNatOrigin, ¶mFalseEasting, + ¶mFalseNorthing, nullptr}; + +static const ParamMapping paramLonCentre = { + EPSG_NAME_PARAMETER_LONGITUDE_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_LONGITUDE_PROJECTION_CENTRE, nullptr, + common::UnitOfMeasure::Type::ANGULAR, lon_0}; + +static const ParamMapping paramLabordeObliqueMercatorAzimuth = { + EPSG_NAME_PARAMETER_AZIMUTH_INITIAL_LINE, + EPSG_CODE_PARAMETER_AZIMUTH_INITIAL_LINE, nullptr, + common::UnitOfMeasure::Type::ANGULAR, "azi"}; + +static const ParamMapping *const paramsLabordeObliqueMercator[] = { + ¶mLatCentreLatOrigin, + ¶mLonCentre, + ¶mLabordeObliqueMercatorAzimuth, + ¶mScaleFactorInitialLine, + ¶mFalseEasting, + ¶mFalseNorthing, + nullptr}; + +static const MethodMapping methodMappings[] = { + {EPSG_NAME_METHOD_TRANSVERSE_MERCATOR, EPSG_CODE_METHOD_TRANSVERSE_MERCATOR, + "Transverse_Mercator", "tmerc", nullptr, paramsNatOriginScale}, + + {EPSG_NAME_METHOD_TRANSVERSE_MERCATOR_SOUTH_ORIENTATED, + EPSG_CODE_METHOD_TRANSVERSE_MERCATOR_SOUTH_ORIENTATED, + "Transverse_Mercator_South_Orientated", "tmerc", "axis=wsu", + paramsNatOriginScale}, + + {PROJ_WKT2_NAME_METHOD_TWO_POINT_EQUIDISTANT, 0, "Two_Point_Equidistant", + "tpeqd", nullptr, paramsTPEQD}, + + {EPSG_NAME_METHOD_TUNISIA_MAPPING_GRID, + EPSG_CODE_METHOD_TUNISIA_MAPPING_GRID, "Tunisia_Mapping_Grid", nullptr, + nullptr, // no proj equivalent + paramsTMG}, + + {EPSG_NAME_METHOD_ALBERS_EQUAL_AREA, EPSG_CODE_METHOD_ALBERS_EQUAL_AREA, + "Albers_Conic_Equal_Area", "aea", nullptr, paramsAEA}, + + {EPSG_NAME_METHOD_LAMBERT_CONIC_CONFORMAL_1SP, + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP, + "Lambert_Conformal_Conic_1SP", "lcc", nullptr, + []() { + static const ParamMapping paramLatLCC1SP = { + EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + WKT1_LATITUDE_OF_ORIGIN, common::UnitOfMeasure::Type::ANGULAR, + lat_1}; + + static const ParamMapping *const x[] = { + ¶mLatLCC1SP, ¶mLongitudeNatOrigin, ¶mScaleFactor, + ¶mFalseEasting, ¶mFalseNorthing, nullptr, + }; + return x; + }()}, + + {EPSG_NAME_METHOD_LAMBERT_CONIC_CONFORMAL_2SP, + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP, + "Lambert_Conformal_Conic_2SP", "lcc", nullptr, paramsLCC2SP}, + + {EPSG_NAME_METHOD_LAMBERT_CONIC_CONFORMAL_2SP_MICHIGAN, + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP_MICHIGAN, + nullptr, // no mapping to WKT1_GDAL + "lcc", nullptr, paramsLCC2SPMichigan}, + + {EPSG_NAME_METHOD_LAMBERT_CONIC_CONFORMAL_2SP_BELGIUM, + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP_BELGIUM, + "Lambert_Conformal_Conic_2SP_Belgium", "lcc", + nullptr, // FIXME: this is what is done in GDAL, but the formula of + // LCC 2SP + // Belgium in the EPSG 7.2 guidance is difference from the regular + // LCC 2SP + paramsLCC2SP}, + + {EPSG_NAME_METHOD_MODIFIED_AZIMUTHAL_EQUIDISTANT, + EPSG_CODE_METHOD_MODIFIED_AZIMUTHAL_EQUIDISTANT, "Azimuthal_Equidistant", + "aeqd", nullptr, paramsAEQD}, + + {EPSG_NAME_METHOD_GUAM_PROJECTION, EPSG_CODE_METHOD_GUAM_PROJECTION, + nullptr, // no mapping to GDAL WKT1 + "aeqd", "guam", paramsNatOrigin}, + + {EPSG_NAME_METHOD_BONNE, EPSG_CODE_METHOD_BONNE, "Bonne", "bonne", nullptr, + paramsBonne}, + + {EPSG_NAME_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA_SPHERICAL, + EPSG_CODE_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA_SPHERICAL, + "Cylindrical_Equal_Area", "cea", nullptr, paramsCEA}, + + {EPSG_NAME_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA, + EPSG_CODE_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA, "Cylindrical_Equal_Area", + "cea", nullptr, paramsCEA}, + + {EPSG_NAME_METHOD_CASSINI_SOLDNER, EPSG_CODE_METHOD_CASSINI_SOLDNER, + "Cassini_Soldner", "cass", nullptr, paramsNatOrigin}, + + {PROJ_WKT2_NAME_METHOD_EQUIDISTANT_CONIC, 0, "Equidistant_Conic", "eqdc", + nullptr, paramsEQDC}, + + {PROJ_WKT2_NAME_METHOD_ECKERT_I, 0, "Eckert_I", "eck1", nullptr, + paramsLonNatOrigin}, + + {PROJ_WKT2_NAME_METHOD_ECKERT_II, 0, "Eckert_II", "eck2", nullptr, + paramsLonNatOrigin}, + + {PROJ_WKT2_NAME_METHOD_ECKERT_III, 0, "Eckert_III", "eck3", nullptr, + paramsLonNatOrigin}, + + {PROJ_WKT2_NAME_METHOD_ECKERT_IV, 0, "Eckert_IV", "eck4", nullptr, + paramsLonNatOrigin}, + + {PROJ_WKT2_NAME_METHOD_ECKERT_V, 0, "Eckert_V", "eck5", nullptr, + paramsLonNatOrigin}, + + {PROJ_WKT2_NAME_METHOD_ECKERT_VI, 0, "Eckert_VI", "eck6", nullptr, + paramsLonNatOrigin}, + + {EPSG_NAME_METHOD_EQUIDISTANT_CYLINDRICAL, + EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL, "Equirectangular", "eqc", + nullptr, paramsEqc}, + + {EPSG_NAME_METHOD_EQUIDISTANT_CYLINDRICAL_SPHERICAL, + EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL_SPHERICAL, "Equirectangular", + "eqc", nullptr, paramsEqc}, + + {PROJ_WKT2_NAME_METHOD_GALL_STEREOGRAPHIC, 0, "Gall_Stereographic", "gall", + nullptr, paramsLonNatOrigin}, + + {PROJ_WKT2_NAME_METHOD_GOODE_HOMOLOSINE, 0, "Goode_Homolosine", "goode", + nullptr, paramsLonNatOrigin}, + + {PROJ_WKT2_NAME_METHOD_INTERRUPTED_GOODE_HOMOLOSINE, 0, + "Interrupted_Goode_Homolosine", "igh", nullptr, paramsLonNatOrigin}, + + // No WKT1 representation fr sweep=x + {PROJ_WKT2_NAME_METHOD_GEOSTATIONARY_SATELLITE_SWEEP_X, 0, nullptr, "geos", + "sweep=x", paramsGeos}, + + {PROJ_WKT2_NAME_METHOD_GEOSTATIONARY_SATELLITE_SWEEP_Y, 0, + "Geostationary_Satellite", "geos", nullptr, paramsGeos}, + + {PROJ_WKT2_NAME_METHOD_GAUSS_SCHREIBER_TRANSVERSE_MERCATOR, 0, + "Gauss_Schreiber_Transverse_Mercator", "gstmerc", nullptr, + paramsNatOriginScale}, + + {PROJ_WKT2_NAME_METHOD_GNOMONIC, 0, "Gnomonic", "gnom", nullptr, + paramsNatOrigin}, + + {EPSG_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_A, + EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_A, + "Hotine_Oblique_Mercator", "omerc", "no_uoff", paramsHomVariantA}, + + {EPSG_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B, + EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B, + "Hotine_Oblique_Mercator_Azimuth_Center", "omerc", nullptr, + paramsHomVariantB}, + + {PROJ_WKT2_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_TWO_POINT_NATURAL_ORIGIN, 0, + "Hotine_Oblique_Mercator_Two_Point_Natural_Origin", "omerc", nullptr, + paramsHomTwoPoint}, + + {PROJ_WKT2_NAME_INTERNATIONAL_MAP_WORLD_POLYCONIC, 0, + "International_Map_of_the_World_Polyconic", "imw_p", nullptr, paramsIMWP}, + + {EPSG_NAME_METHOD_KROVAK_NORTH_ORIENTED, + EPSG_CODE_METHOD_KROVAK_NORTH_ORIENTED, "Krovak", "krovak", nullptr, + krovakParameters}, + + {EPSG_NAME_METHOD_KROVAK, EPSG_CODE_METHOD_KROVAK, "Krovak", "krovak", + "axis=swu", krovakParameters}, + + {EPSG_NAME_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA, + EPSG_CODE_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA, + "Lambert_Azimuthal_Equal_Area", "laea", nullptr, paramsLaea}, + + {EPSG_NAME_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA_SPHERICAL, + EPSG_CODE_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA_SPHERICAL, + "Lambert_Azimuthal_Equal_Area", "laea", nullptr, paramsLaea}, + + {PROJ_WKT2_NAME_METHOD_MILLER_CYLINDRICAL, 0, "Miller_Cylindrical", "mill", + "R_A", paramsMiller}, + + {EPSG_NAME_METHOD_MERCATOR_VARIANT_A, EPSG_CODE_METHOD_MERCATOR_VARIANT_A, + "Mercator_1SP", "merc", nullptr, paramsMerc1SP}, + + {EPSG_NAME_METHOD_MERCATOR_VARIANT_B, EPSG_CODE_METHOD_MERCATOR_VARIANT_B, + "Mercator_2SP", "merc", nullptr, paramsMerc2SP}, + + {EPSG_NAME_METHOD_POPULAR_VISUALISATION_PSEUDO_MERCATOR, + EPSG_CODE_METHOD_POPULAR_VISUALISATION_PSEUDO_MERCATOR, + "Popular_Visualisation_Pseudo_Mercator", // particular case actually + // handled manually + "webmerc", nullptr, paramsNatOrigin}, + + {PROJ_WKT2_NAME_METHOD_MOLLWEIDE, 0, "Mollweide", "moll", nullptr, + paramsLonNatOrigin}, + + {EPSG_NAME_METHOD_NZMG, EPSG_CODE_METHOD_NZMG, "New_Zealand_Map_Grid", + "nzmg", nullptr, paramsNatOrigin}, + + { + EPSG_NAME_METHOD_OBLIQUE_STEREOGRAPHIC, + EPSG_CODE_METHOD_OBLIQUE_STEREOGRAPHIC, "Oblique_Stereographic", + "sterea", nullptr, paramsObliqueStereo, + }, + + {EPSG_NAME_METHOD_ORTHOGRAPHIC, EPSG_CODE_METHOD_ORTHOGRAPHIC, + "Orthographic", "ortho", nullptr, paramsNatOrigin}, + + {EPSG_NAME_METHOD_AMERICAN_POLYCONIC, EPSG_CODE_METHOD_AMERICAN_POLYCONIC, + "Polyconic", "poly", nullptr, paramsNatOrigin}, + + {EPSG_NAME_METHOD_POLAR_STEREOGRAPHIC_VARIANT_A, + EPSG_CODE_METHOD_POLAR_STEREOGRAPHIC_VARIANT_A, "Polar_Stereographic", + "stere", nullptr, paramsObliqueStereo}, + + {EPSG_NAME_METHOD_POLAR_STEREOGRAPHIC_VARIANT_B, + EPSG_CODE_METHOD_POLAR_STEREOGRAPHIC_VARIANT_B, "Polar_Stereographic", + "stere", nullptr, paramsPolarStereo}, + + {PROJ_WKT2_NAME_METHOD_ROBINSON, 0, "Robinson", "robin", nullptr, + paramsLonNatOriginLongitudeCentre}, + + {PROJ_WKT2_NAME_METHOD_SINUSOIDAL, 0, "Sinusoidal", "sinu", nullptr, + paramsLonNatOriginLongitudeCentre}, + + {PROJ_WKT2_NAME_METHOD_STEREOGRAPHIC, 0, "Stereographic", "stere", nullptr, + paramsObliqueStereo}, + + {PROJ_WKT2_NAME_METHOD_VAN_DER_GRINTEN, 0, "VanDerGrinten", "vandg", "R_A", + paramsLonNatOrigin}, + + {PROJ_WKT2_NAME_METHOD_WAGNER_I, 0, "Wagner_I", "wag1", nullptr, + paramsLonNatOrigin}, + + {PROJ_WKT2_NAME_METHOD_WAGNER_II, 0, "Wagner_II", "wag2", nullptr, + paramsLonNatOrigin}, + + {PROJ_WKT2_NAME_METHOD_WAGNER_III, 0, "Wagner_III", "wag3", nullptr, + paramsWag3}, + + {PROJ_WKT2_NAME_METHOD_WAGNER_IV, 0, "Wagner_IV", "wag4", nullptr, + paramsLonNatOrigin}, + + {PROJ_WKT2_NAME_METHOD_WAGNER_V, 0, "Wagner_V", "wag5", nullptr, + paramsLonNatOrigin}, + + {PROJ_WKT2_NAME_METHOD_WAGNER_VI, 0, "Wagner_VI", "wag6", nullptr, + paramsLonNatOrigin}, + + {PROJ_WKT2_NAME_METHOD_WAGNER_VII, 0, "Wagner_VII", "wag7", nullptr, + paramsLonNatOrigin}, + + {PROJ_WKT2_NAME_METHOD_QUADRILATERALIZED_SPHERICAL_CUBE, 0, + "Quadrilateralized_Spherical_Cube", "qsc", nullptr, paramsNatOrigin}, + + {PROJ_WKT2_NAME_METHOD_SPHERICAL_CROSS_TRACK_HEIGHT, 0, + "Spherical_Cross_Track_Height", "sch", nullptr, paramsSch}, + + // The following methods have just the WKT <--> PROJ string mapping, but + // no setter. Similarly to GDAL + + {"Aitoff", 0, "Aitoff", "aitoff", nullptr, paramsLonNatOrigin}, + + {"Winkel I", 0, "Winkel_I", "wink1", nullptr, paramsWink1}, + + {"Winkel II", 0, "Winkel_II", "wink2", nullptr, paramsWink2}, + + {"Winkel Tripel", 0, "Winkel_Tripel", "wintri", nullptr, paramsWink2}, + + {"Craster Parabolic", 0, "Craster_Parabolic", "crast", nullptr, + paramsLonNatOrigin}, + + {"Loximuthal", 0, "Loximuthal", "loxim", nullptr, paramsLoxim}, + + {"Quartic Authalic", 0, "Quartic_Authalic", "qua_aut", nullptr, + paramsLonNatOrigin}, + + {EPSG_NAME_METHOD_EQUAL_EARTH, EPSG_CODE_METHOD_EQUAL_EARTH, nullptr, + "eqearth", nullptr, paramsLonNatOrigin}, + + {EPSG_NAME_METHOD_LABORDE_OBLIQUE_MERCATOR, + EPSG_CODE_METHOD_LABORDE_OBLIQUE_MERCATOR, nullptr, "labrd", nullptr, + paramsLabordeObliqueMercator}, + +}; + +#define METHOD_NAME_CODE(method) \ + { EPSG_NAME_METHOD_##method, EPSG_CODE_METHOD_##method } + +static const struct MethodNameCode { + const char *name; + int epsg_code; +} methodNameCodes[] = { + // Projection methods + METHOD_NAME_CODE(TRANSVERSE_MERCATOR), + METHOD_NAME_CODE(TRANSVERSE_MERCATOR_SOUTH_ORIENTATED), + METHOD_NAME_CODE(LAMBERT_CONIC_CONFORMAL_1SP), METHOD_NAME_CODE(NZMG), + METHOD_NAME_CODE(TUNISIA_MAPPING_GRID), METHOD_NAME_CODE(ALBERS_EQUAL_AREA), + METHOD_NAME_CODE(LAMBERT_CONIC_CONFORMAL_2SP), + METHOD_NAME_CODE(LAMBERT_CONIC_CONFORMAL_2SP_BELGIUM), + METHOD_NAME_CODE(LAMBERT_CONIC_CONFORMAL_2SP_MICHIGAN), + METHOD_NAME_CODE(MODIFIED_AZIMUTHAL_EQUIDISTANT), + METHOD_NAME_CODE(GUAM_PROJECTION), METHOD_NAME_CODE(BONNE), + METHOD_NAME_CODE(LAMBERT_CYLINDRICAL_EQUAL_AREA_SPHERICAL), + METHOD_NAME_CODE(LAMBERT_CYLINDRICAL_EQUAL_AREA), + METHOD_NAME_CODE(CASSINI_SOLDNER), + METHOD_NAME_CODE(EQUIDISTANT_CYLINDRICAL), + METHOD_NAME_CODE(EQUIDISTANT_CYLINDRICAL_SPHERICAL), + METHOD_NAME_CODE(HOTINE_OBLIQUE_MERCATOR_VARIANT_A), + METHOD_NAME_CODE(HOTINE_OBLIQUE_MERCATOR_VARIANT_B), + METHOD_NAME_CODE(KROVAK_NORTH_ORIENTED), METHOD_NAME_CODE(KROVAK), + METHOD_NAME_CODE(LAMBERT_AZIMUTHAL_EQUAL_AREA), + METHOD_NAME_CODE(POPULAR_VISUALISATION_PSEUDO_MERCATOR), + METHOD_NAME_CODE(MERCATOR_VARIANT_A), METHOD_NAME_CODE(MERCATOR_VARIANT_B), + METHOD_NAME_CODE(OBLIQUE_STEREOGRAPHIC), + METHOD_NAME_CODE(AMERICAN_POLYCONIC), + METHOD_NAME_CODE(POLAR_STEREOGRAPHIC_VARIANT_A), + METHOD_NAME_CODE(POLAR_STEREOGRAPHIC_VARIANT_B), + METHOD_NAME_CODE(EQUAL_EARTH), METHOD_NAME_CODE(LABORDE_OBLIQUE_MERCATOR), + // Other conversions + METHOD_NAME_CODE(CHANGE_VERTICAL_UNIT), + METHOD_NAME_CODE(AXIS_ORDER_REVERSAL_2D), + METHOD_NAME_CODE(AXIS_ORDER_REVERSAL_3D), + METHOD_NAME_CODE(GEOGRAPHIC_GEOCENTRIC), + // Transformations + METHOD_NAME_CODE(LONGITUDE_ROTATION), + METHOD_NAME_CODE(AFFINE_PARAMETRIC_TRANSFORMATION), + METHOD_NAME_CODE(COORDINATE_FRAME_GEOCENTRIC), + METHOD_NAME_CODE(COORDINATE_FRAME_GEOGRAPHIC_2D), + METHOD_NAME_CODE(COORDINATE_FRAME_GEOGRAPHIC_3D), + METHOD_NAME_CODE(POSITION_VECTOR_GEOCENTRIC), + METHOD_NAME_CODE(POSITION_VECTOR_GEOGRAPHIC_2D), + METHOD_NAME_CODE(POSITION_VECTOR_GEOGRAPHIC_3D), + METHOD_NAME_CODE(GEOCENTRIC_TRANSLATION_GEOCENTRIC), + METHOD_NAME_CODE(GEOCENTRIC_TRANSLATION_GEOGRAPHIC_2D), + METHOD_NAME_CODE(GEOCENTRIC_TRANSLATION_GEOGRAPHIC_3D), + METHOD_NAME_CODE(TIME_DEPENDENT_COORDINATE_FRAME_GEOCENTRIC), + METHOD_NAME_CODE(TIME_DEPENDENT_COORDINATE_FRAME_GEOGRAPHIC_2D), + METHOD_NAME_CODE(TIME_DEPENDENT_COORDINATE_FRAME_GEOGRAPHIC_3D), + METHOD_NAME_CODE(TIME_DEPENDENT_POSITION_VECTOR_GEOCENTRIC), + METHOD_NAME_CODE(TIME_DEPENDENT_POSITION_VECTOR_GEOGRAPHIC_2D), + METHOD_NAME_CODE(TIME_DEPENDENT_POSITION_VECTOR_GEOGRAPHIC_3D), + METHOD_NAME_CODE(MOLODENSKY_BADEKAS_CF_GEOCENTRIC), + METHOD_NAME_CODE(MOLODENSKY_BADEKAS_CF_GEOGRAPHIC_2D), + METHOD_NAME_CODE(MOLODENSKY_BADEKAS_CF_GEOGRAPHIC_3D), + METHOD_NAME_CODE(MOLODENSKY_BADEKAS_PV_GEOCENTRIC), + METHOD_NAME_CODE(MOLODENSKY_BADEKAS_PV_GEOGRAPHIC_2D), + METHOD_NAME_CODE(MOLODENSKY_BADEKAS_PV_GEOGRAPHIC_3D), + METHOD_NAME_CODE(MOLODENSKY), METHOD_NAME_CODE(ABRIDGED_MOLODENSKY), + METHOD_NAME_CODE(GEOGRAPHIC2D_OFFSETS), + METHOD_NAME_CODE(GEOGRAPHIC2D_WITH_HEIGHT_OFFSETS), + METHOD_NAME_CODE(GEOGRAPHIC3D_OFFSETS), METHOD_NAME_CODE(VERTICAL_OFFSET), + METHOD_NAME_CODE(NTV2), METHOD_NAME_CODE(NTV1), METHOD_NAME_CODE(NADCON), + METHOD_NAME_CODE(VERTCON), +}; + +#define PARAM_NAME_CODE(method) \ + { EPSG_NAME_PARAMETER_##method, EPSG_CODE_PARAMETER_##method } + +static const struct ParamNameCode { + const char *name; + int epsg_code; +} paramNameCodes[] = { + // Parameters of projection methods + PARAM_NAME_CODE(COLATITUDE_CONE_AXIS), + PARAM_NAME_CODE(LATITUDE_OF_NATURAL_ORIGIN), + PARAM_NAME_CODE(LONGITUDE_OF_NATURAL_ORIGIN), + PARAM_NAME_CODE(SCALE_FACTOR_AT_NATURAL_ORIGIN), + PARAM_NAME_CODE(FALSE_EASTING), PARAM_NAME_CODE(FALSE_NORTHING), + PARAM_NAME_CODE(LATITUDE_PROJECTION_CENTRE), + PARAM_NAME_CODE(LONGITUDE_PROJECTION_CENTRE), + PARAM_NAME_CODE(AZIMUTH_INITIAL_LINE), + PARAM_NAME_CODE(ANGLE_RECTIFIED_TO_SKEW_GRID), + PARAM_NAME_CODE(SCALE_FACTOR_INITIAL_LINE), + PARAM_NAME_CODE(EASTING_PROJECTION_CENTRE), + PARAM_NAME_CODE(NORTHING_PROJECTION_CENTRE), + PARAM_NAME_CODE(LATITUDE_PSEUDO_STANDARD_PARALLEL), + PARAM_NAME_CODE(SCALE_FACTOR_PSEUDO_STANDARD_PARALLEL), + PARAM_NAME_CODE(LATITUDE_FALSE_ORIGIN), + PARAM_NAME_CODE(LONGITUDE_FALSE_ORIGIN), + PARAM_NAME_CODE(LATITUDE_1ST_STD_PARALLEL), + PARAM_NAME_CODE(LATITUDE_2ND_STD_PARALLEL), + PARAM_NAME_CODE(EASTING_FALSE_ORIGIN), + PARAM_NAME_CODE(NORTHING_FALSE_ORIGIN), + PARAM_NAME_CODE(LATITUDE_STD_PARALLEL), + PARAM_NAME_CODE(LONGITUDE_OF_ORIGIN), + PARAM_NAME_CODE(ELLIPSOID_SCALE_FACTOR), + // Parameters of transformations + PARAM_NAME_CODE(SEMI_MAJOR_AXIS_DIFFERENCE), + PARAM_NAME_CODE(FLATTENING_DIFFERENCE), + PARAM_NAME_CODE(LATITUDE_LONGITUDE_DIFFERENCE_FILE), + PARAM_NAME_CODE(GEOID_CORRECTION_FILENAME), + PARAM_NAME_CODE(VERTICAL_OFFSET_FILE), + PARAM_NAME_CODE(LATITUDE_DIFFERENCE_FILE), + PARAM_NAME_CODE(LONGITUDE_DIFFERENCE_FILE), + PARAM_NAME_CODE(UNIT_CONVERSION_SCALAR), PARAM_NAME_CODE(LATITUDE_OFFSET), + PARAM_NAME_CODE(LONGITUDE_OFFSET), PARAM_NAME_CODE(VERTICAL_OFFSET), + PARAM_NAME_CODE(GEOID_UNDULATION), PARAM_NAME_CODE(A0), PARAM_NAME_CODE(A1), + PARAM_NAME_CODE(A2), PARAM_NAME_CODE(B0), PARAM_NAME_CODE(B1), + PARAM_NAME_CODE(B2), PARAM_NAME_CODE(X_AXIS_TRANSLATION), + PARAM_NAME_CODE(Y_AXIS_TRANSLATION), PARAM_NAME_CODE(Z_AXIS_TRANSLATION), + PARAM_NAME_CODE(X_AXIS_ROTATION), PARAM_NAME_CODE(Y_AXIS_ROTATION), + PARAM_NAME_CODE(Z_AXIS_ROTATION), PARAM_NAME_CODE(SCALE_DIFFERENCE), + PARAM_NAME_CODE(RATE_X_AXIS_TRANSLATION), + PARAM_NAME_CODE(RATE_Y_AXIS_TRANSLATION), + PARAM_NAME_CODE(RATE_Z_AXIS_TRANSLATION), + PARAM_NAME_CODE(RATE_X_AXIS_ROTATION), + PARAM_NAME_CODE(RATE_Y_AXIS_ROTATION), + PARAM_NAME_CODE(RATE_Z_AXIS_ROTATION), + PARAM_NAME_CODE(RATE_SCALE_DIFFERENCE), PARAM_NAME_CODE(REFERENCE_EPOCH), + PARAM_NAME_CODE(TRANSFORMATION_REFERENCE_EPOCH), + PARAM_NAME_CODE(ORDINATE_1_EVAL_POINT), + PARAM_NAME_CODE(ORDINATE_2_EVAL_POINT), + PARAM_NAME_CODE(ORDINATE_3_EVAL_POINT), +}; + +// end of anonymous namespace +} + +// --------------------------------------------------------------------------- + +//! @endcond + +#endif // COORDINATEOPERATION_CONSTANTS_HH_INCLUDED diff --git a/include/proj/internal/coordinateoperation_internal.hpp b/include/proj/internal/coordinateoperation_internal.hpp new file mode 100644 index 00000000..83e1e987 --- /dev/null +++ b/include/proj/internal/coordinateoperation_internal.hpp @@ -0,0 +1,274 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef FROM_PROJ_CPP +#error This file should only be included from a PROJ cpp file +#endif + +#ifndef COORDINATEOPERATION_INTERNAL_HH_INCLUDED +#define COORDINATEOPERATION_INTERNAL_HH_INCLUDED + +#include "proj/coordinateoperation.hpp" + +#include <vector> + +//! @cond Doxygen_Suppress + +NS_PROJ_START + +namespace operation { + +struct ParamMapping { + const char *wkt2_name; + const int epsg_code; + const char *wkt1_name; + const common::UnitOfMeasure::Type unit_type; + const char *proj_name; +}; + +struct MethodMapping { + const char *wkt2_name; + const int epsg_code; + const char *wkt1_name; + const char *proj_name_main; + const char *proj_name_aux; + const ParamMapping *const *params; +}; + +const MethodMapping *getMapping(int epsg_code) noexcept; +const MethodMapping *getMappingFromWKT1(const std::string &wkt1_name) noexcept; +const MethodMapping *getMapping(const char *wkt2_name) noexcept; +const MethodMapping *getMapping(const OperationMethod *method) noexcept; +std::vector<const MethodMapping *> +getMappingsFromPROJName(const std::string &projName); +const ParamMapping *getMapping(const MethodMapping *mapping, + const OperationParameterValue *param); +const ParamMapping *getMappingFromWKT1(const MethodMapping *mapping, + const std::string &wkt1_name); +// --------------------------------------------------------------------------- + +struct ESRIParamMapping { + const char *esri_name; + const char *wkt2_name; + int epsg_code; + float fixed_value; +}; + +struct ESRIMethodMapping { + const char *esri_name; + const char *wkt2_name; + int epsg_code; + const ESRIParamMapping *const params; +}; + +std::vector<const ESRIMethodMapping *> +getMappingsFromESRI(const std::string &esri_name); + +// --------------------------------------------------------------------------- + +bool isAxisOrderReversal(int methodEPSGCode); + +// --------------------------------------------------------------------------- + +class InverseCoordinateOperation; +/** Shared pointer of InverseCoordinateOperation */ +using InverseCoordinateOperationPtr = + std::shared_ptr<InverseCoordinateOperation>; +/** Non-null shared pointer of InverseCoordinateOperation */ +using InverseCoordinateOperationNNPtr = util::nn<InverseCoordinateOperationPtr>; + +/** \brief Inverse operation of a CoordinateOperation. + * + * This is used when there is no straightforward way of building another + * subclass of CoordinateOperation that models the inverse operation. + */ +class InverseCoordinateOperation : virtual public CoordinateOperation { + public: + InverseCoordinateOperation(const CoordinateOperationNNPtr &forwardOperation, + bool wktSupportsInversion); + + ~InverseCoordinateOperation() override; + + void _exportToPROJString(io::PROJStringFormatter *formatter) + const override; // throw(FormattingException) + + bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + + CoordinateOperationNNPtr inverse() const override; + + protected: + CoordinateOperationNNPtr forwardOperation_; + bool wktSupportsInversion_; + + void setPropertiesFromForward(); +}; + +// --------------------------------------------------------------------------- + +/** \brief Inverse of a conversion. */ +class InverseConversion : public Conversion, public InverseCoordinateOperation { + public: + explicit InverseConversion(const ConversionNNPtr &forward); + + ~InverseConversion() override; + + void _exportToWKT(io::WKTFormatter *formatter) const override { + Conversion::_exportToWKT(formatter); + } + + void + _exportToPROJString(io::PROJStringFormatter *formatter) const override { + InverseCoordinateOperation::_exportToPROJString(formatter); + } + + bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override { + return InverseCoordinateOperation::_isEquivalentTo(other, criterion); + } + + CoordinateOperationNNPtr inverse() const override { + return InverseCoordinateOperation::inverse(); + } + + ConversionNNPtr inverseAsConversion() const; + +#ifdef _MSC_VER + // To avoid a warning C4250: 'osgeo::proj::operation::InverseConversion': + // inherits + // 'osgeo::proj::operation::SingleOperation::osgeo::proj::operation::SingleOperation::gridsNeeded' + // via dominance + std::set<GridDescription> + gridsNeeded(const io::DatabaseContextPtr &databaseContext) const override { + return SingleOperation::gridsNeeded(databaseContext); + } +#endif + + static CoordinateOperationNNPtr create(const ConversionNNPtr &forward); +}; + +// --------------------------------------------------------------------------- + +/** \brief Inverse of a transformation. */ +class InverseTransformation : public Transformation, + public InverseCoordinateOperation { + public: + explicit InverseTransformation(const TransformationNNPtr &forward); + + ~InverseTransformation() override; + + void _exportToWKT(io::WKTFormatter *formatter) const override; + + void + _exportToPROJString(io::PROJStringFormatter *formatter) const override { + return InverseCoordinateOperation::_exportToPROJString(formatter); + } + + bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override { + return InverseCoordinateOperation::_isEquivalentTo(other, criterion); + } + + CoordinateOperationNNPtr inverse() const override { + return InverseCoordinateOperation::inverse(); + } + +#ifdef _MSC_VER + // To avoid a warning C4250: + // 'osgeo::proj::operation::InverseTransformation': inherits + // 'osgeo::proj::operation::SingleOperation::osgeo::proj::operation::SingleOperation::gridsNeeded' + // via dominance + std::set<GridDescription> + gridsNeeded(const io::DatabaseContextPtr &databaseContext) const override { + return SingleOperation::gridsNeeded(databaseContext); + } +#endif + + static TransformationNNPtr create(const TransformationNNPtr &forward); +}; + +// --------------------------------------------------------------------------- + +class PROJBasedOperation; +/** Shared pointer of PROJBasedOperation */ +using PROJBasedOperationPtr = std::shared_ptr<PROJBasedOperation>; +/** Non-null shared pointer of PROJBasedOperation */ +using PROJBasedOperationNNPtr = util::nn<PROJBasedOperationPtr>; + +/** \brief A PROJ-string based coordinate operation. + */ +class PROJBasedOperation : public SingleOperation { + public: + ~PROJBasedOperation() override; + + void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + + CoordinateOperationNNPtr inverse() const override; + + static PROJBasedOperationNNPtr + create(const util::PropertyMap &properties, const std::string &PROJString, + const crs::CRSPtr &sourceCRS, const crs::CRSPtr &targetCRS, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + + static PROJBasedOperationNNPtr + create(const util::PropertyMap &properties, + const io::IPROJStringExportableNNPtr &projExportable, bool inverse, + const crs::CRSNNPtr &sourceCRS, const crs::CRSNNPtr &targetCRS, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies); + + std::set<GridDescription> + gridsNeeded(const io::DatabaseContextPtr &databaseContext) const override; + + protected: + PROJBasedOperation(const OperationMethodNNPtr &methodIn, + const std::vector<GeneralParameterValueNNPtr> &values); + + void _exportToPROJString(io::PROJStringFormatter *formatter) + const override; // throw(FormattingException) + + INLINED_MAKE_SHARED + + private: + io::IPROJStringExportablePtr projStringExportable_{}; + bool inverse_ = false; +}; + +} // namespace operation + +NS_PROJ_END + +//! @endcond + +#endif // COORDINATEOPERATION_INTERNAL_HH_INCLUDED diff --git a/include/proj/internal/coordinatesystem_internal.hpp b/include/proj/internal/coordinatesystem_internal.hpp new file mode 100644 index 00000000..63c5f7af --- /dev/null +++ b/include/proj/internal/coordinatesystem_internal.hpp @@ -0,0 +1,104 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef FROM_PROJ_CPP +#error This file should only be included from a PROJ cpp file +#endif + +#ifndef COORDINATESYSTEM_INTERNAL_HH_INCLUDED +#define COORDINATESYSTEM_INTERNAL_HH_INCLUDED + +#include "proj/util.hpp" + +#include <map> +#include <set> +#include <string> + +//! @cond Doxygen_Suppress + +NS_PROJ_START + +namespace cs { + +// --------------------------------------------------------------------------- + +class AxisDirectionWKT1 : public util::CodeList { + public: + static const AxisDirectionWKT1 *valueOf(const std::string &nameIn); + + static const AxisDirectionWKT1 NORTH; + static const AxisDirectionWKT1 SOUTH; + static const AxisDirectionWKT1 EAST; + static const AxisDirectionWKT1 WEST; + static const AxisDirectionWKT1 UP; + static const AxisDirectionWKT1 DOWN; + static const AxisDirectionWKT1 OTHER; + + private: + explicit AxisDirectionWKT1(const std::string &nameIn); + + static std::map<std::string, const AxisDirectionWKT1 *> registry; +}; + +// --------------------------------------------------------------------------- + +class AxisName { + public: + static const std::string Longitude; + static const std::string Latitude; + static const std::string Easting; + static const std::string Northing; + static const std::string Westing; + static const std::string Southing; + static const std::string Ellipsoidal_height; + static const std::string Geocentric_X; + static const std::string Geocentric_Y; + static const std::string Geocentric_Z; +}; + +// --------------------------------------------------------------------------- + +class AxisAbbreviation { + public: + static const std::string lon; + static const std::string lat; + static const std::string E; + static const std::string N; + static const std::string h; + static const std::string X; + static const std::string Y; + static const std::string Z; +}; + +} // namespace cs + +NS_PROJ_END + +//! @endcond + +#endif // COORDINATESYSTEM_INTERNAL_HH_INCLUDED diff --git a/include/proj/internal/esri_projection_mappings.hpp b/include/proj/internal/esri_projection_mappings.hpp new file mode 100644 index 00000000..4ceeb300 --- /dev/null +++ b/include/proj/internal/esri_projection_mappings.hpp @@ -0,0 +1,887 @@ +// This file was generated by scripts/build_esri_projection_mapping.py. DO NOT +// EDIT ! + +#ifndef FROM_COORDINATE_OPERATION_CPP +#error This file should only be included from coordinateoperation.cpp +#endif + +#ifndef ESRI_PROJECTION_MAPPINGS_HH_INCLUDED +#define ESRI_PROJECTION_MAPPINGS_HH_INCLUDED + +#include "coordinateoperation_internal.hpp" + +//! @cond Doxygen_Suppress + +// --------------------------------------------------------------------------- + +// anonymous namespace +namespace { + +using namespace ::NS_PROJ; +using namespace ::NS_PROJ::operation; + +static const ESRIParamMapping paramsESRI_Plate_Carree[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Equidistant_Cylindrical[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Standard_Parallel_1", EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Miller_Cylindrical[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Mercator[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Standard_Parallel_1", EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Gauss_Kruger[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Scale_Factor", EPSG_NAME_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN, 0.0}, + {"Latitude_Of_Origin", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Transverse_Mercator[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Scale_Factor", EPSG_NAME_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN, 0.0}, + {"Latitude_Of_Origin", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Albers[] = { + {"False_Easting", EPSG_NAME_PARAMETER_EASTING_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_EASTING_FALSE_ORIGIN, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_NORTHING_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_NORTHING_FALSE_ORIGIN, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_FALSE_ORIGIN, 0.0}, + {"Standard_Parallel_1", EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, 0.0}, + {"Standard_Parallel_2", EPSG_NAME_PARAMETER_LATITUDE_2ND_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_2ND_STD_PARALLEL, 0.0}, + {"Latitude_Of_Origin", EPSG_NAME_PARAMETER_LATITUDE_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_FALSE_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Sinusoidal[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Mollweide[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Eckert_I[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Eckert_II[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Eckert_III[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Eckert_IV[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Eckert_V[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Eckert_VI[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Gall_Stereographic[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Winkel_I[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Standard_Parallel_1", EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Winkel_II[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Standard_Parallel_1", EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Lambert_Conformal_Conic_alt1[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Standard_Parallel_1", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Scale_Factor", EPSG_NAME_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN, 0.0}, + {"Latitude_Of_Origin", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; +static const ESRIParamMapping paramsESRI_Lambert_Conformal_Conic_alt2[] = { + {"False_Easting", EPSG_NAME_PARAMETER_EASTING_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_EASTING_FALSE_ORIGIN, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_NORTHING_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_NORTHING_FALSE_ORIGIN, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_FALSE_ORIGIN, 0.0}, + {"Standard_Parallel_1", EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, 0.0}, + {"Standard_Parallel_2", EPSG_NAME_PARAMETER_LATITUDE_2ND_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_2ND_STD_PARALLEL, 0.0}, + {"Latitude_Of_Origin", EPSG_NAME_PARAMETER_LATITUDE_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_FALSE_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; +static const ESRIParamMapping paramsESRI_Lambert_Conformal_Conic_alt3[] = { + {"False_Easting", EPSG_NAME_PARAMETER_EASTING_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_EASTING_FALSE_ORIGIN, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_NORTHING_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_NORTHING_FALSE_ORIGIN, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_FALSE_ORIGIN, 0.0}, + {"Standard_Parallel_1", EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, 0.0}, + {"Standard_Parallel_2", EPSG_NAME_PARAMETER_LATITUDE_2ND_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_2ND_STD_PARALLEL, 0.0}, + {"Scale_Factor", nullptr, 0, 1.0}, + {"Latitude_Of_Origin", EPSG_NAME_PARAMETER_LATITUDE_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_FALSE_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; +static const ESRIParamMapping paramsESRI_Lambert_Conformal_Conic_alt4[] = { + {"False_Easting", EPSG_NAME_PARAMETER_EASTING_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_EASTING_FALSE_ORIGIN, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_NORTHING_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_NORTHING_FALSE_ORIGIN, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_FALSE_ORIGIN, 0.0}, + {"Standard_Parallel_1", EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, 0.0}, + {"Standard_Parallel_2", EPSG_NAME_PARAMETER_LATITUDE_2ND_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_2ND_STD_PARALLEL, 0.0}, + {"Scale_Factor", EPSG_NAME_PARAMETER_ELLIPSOID_SCALE_FACTOR, + EPSG_CODE_PARAMETER_ELLIPSOID_SCALE_FACTOR, 0.0}, + {"Latitude_Of_Origin", EPSG_NAME_PARAMETER_LATITUDE_FALSE_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_FALSE_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Polyconic[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Latitude_Of_Origin", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Quartic_Authalic[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Loximuthal[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Central_Parallel", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Bonne[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Standard_Parallel_1", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping + paramsESRI_Hotine_Oblique_Mercator_Two_Point_Natural_Origin[] = { + {"False_Easting", EPSG_NAME_PARAMETER_EASTING_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_EASTING_PROJECTION_CENTRE, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_NORTHING_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_NORTHING_PROJECTION_CENTRE, 0.0}, + {"Latitude_Of_1st_Point", "Latitude of 1st point", 0, 0.0}, + {"Latitude_Of_2nd_Point", "Latitude of 2nd point", 0, 0.0}, + {"Scale_Factor", EPSG_NAME_PARAMETER_SCALE_FACTOR_INITIAL_LINE, + EPSG_CODE_PARAMETER_SCALE_FACTOR_INITIAL_LINE, 0.0}, + {"Longitude_Of_1st_Point", "Longitude of 1st point", 0, 0.0}, + {"Longitude_Of_2nd_Point", "Longitude of 2nd point", 0, 0.0}, + {"Latitude_Of_Center", EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_LATITUDE_PROJECTION_CENTRE, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Stereographic[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Scale_Factor", EPSG_NAME_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN, 0.0}, + {"Latitude_Of_Origin", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Equidistant_Conic[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Standard_Parallel_1", EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, 0.0}, + {"Standard_Parallel_2", EPSG_NAME_PARAMETER_LATITUDE_2ND_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_2ND_STD_PARALLEL, 0.0}, + {"Latitude_Of_Origin", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Cassini[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Scale_Factor", nullptr, 0, 1.0}, + {"Latitude_Of_Origin", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Van_der_Grinten_I[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Robinson[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Two_Point_Equidistant[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Latitude_Of_1st_Point", "Latitude of 1st point", 0, 0.0}, + {"Latitude_Of_2nd_Point", "Latitude of 2nd point", 0, 0.0}, + {"Longitude_Of_1st_Point", "Longitude of 1st point", 0, 0.0}, + {"Longitude_Of_2nd_Point", "Longitude of 2nd point", 0, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Azimuthal_Equidistant[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Latitude_Of_Origin", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Lambert_Azimuthal_Equal_Area[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Latitude_Of_Origin", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Cylindrical_Equal_Area[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Standard_Parallel_1", EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping + paramsESRI_Hotine_Oblique_Mercator_Two_Point_Center[] = { + {"False_Easting", EPSG_NAME_PARAMETER_EASTING_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_EASTING_PROJECTION_CENTRE, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_NORTHING_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_NORTHING_PROJECTION_CENTRE, 0.0}, + {"Latitude_Of_1st_Point", "Latitude of 1st point", 0, 0.0}, + {"Latitude_Of_2nd_Point", "Latitude of 2nd point", 0, 0.0}, + {"Scale_Factor", EPSG_NAME_PARAMETER_SCALE_FACTOR_INITIAL_LINE, + EPSG_CODE_PARAMETER_SCALE_FACTOR_INITIAL_LINE, 0.0}, + {"Longitude_Of_1st_Point", "Longitude of 1st point", 0, 0.0}, + {"Longitude_Of_2nd_Point", "Longitude of 2nd point", 0, 0.0}, + {"Latitude_Of_Origin", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping + paramsESRI_Hotine_Oblique_Mercator_Azimuth_Natural_Origin[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Scale_Factor", EPSG_NAME_PARAMETER_SCALE_FACTOR_INITIAL_LINE, + EPSG_CODE_PARAMETER_SCALE_FACTOR_INITIAL_LINE, 0.0}, + {"Azimuth", EPSG_NAME_PARAMETER_AZIMUTH_INITIAL_LINE, + EPSG_CODE_PARAMETER_AZIMUTH_INITIAL_LINE, 0.0}, + {"Longitude_Of_Center", EPSG_NAME_PARAMETER_LONGITUDE_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_LONGITUDE_PROJECTION_CENTRE, 0.0}, + {"Latitude_Of_Center", EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_LATITUDE_PROJECTION_CENTRE, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping + paramsESRI_Hotine_Oblique_Mercator_Azimuth_Center[] = { + {"False_Easting", EPSG_NAME_PARAMETER_EASTING_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_EASTING_PROJECTION_CENTRE, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_NORTHING_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_NORTHING_PROJECTION_CENTRE, 0.0}, + {"Scale_Factor", EPSG_NAME_PARAMETER_SCALE_FACTOR_INITIAL_LINE, + EPSG_CODE_PARAMETER_SCALE_FACTOR_INITIAL_LINE, 0.0}, + {"Azimuth", EPSG_NAME_PARAMETER_AZIMUTH_INITIAL_LINE, + EPSG_CODE_PARAMETER_AZIMUTH_INITIAL_LINE, 0.0}, + {"Longitude_Of_Center", EPSG_NAME_PARAMETER_LONGITUDE_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_LONGITUDE_PROJECTION_CENTRE, 0.0}, + {"Latitude_Of_Center", EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_LATITUDE_PROJECTION_CENTRE, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Double_Stereographic[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Scale_Factor", EPSG_NAME_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN, 0.0}, + {"Latitude_Of_Origin", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Krovak_alt1[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Pseudo_Standard_Parallel_1", + EPSG_NAME_PARAMETER_LATITUDE_PSEUDO_STANDARD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_PSEUDO_STANDARD_PARALLEL, 0.0}, + {"Scale_Factor", EPSG_NAME_PARAMETER_SCALE_FACTOR_PSEUDO_STANDARD_PARALLEL, + EPSG_CODE_PARAMETER_SCALE_FACTOR_PSEUDO_STANDARD_PARALLEL, 0.0}, + {"Azimuth", EPSG_NAME_PARAMETER_COLATITUDE_CONE_AXIS, + EPSG_CODE_PARAMETER_COLATITUDE_CONE_AXIS, 0.0}, + {"Longitude_Of_Center", EPSG_NAME_PARAMETER_LONGITUDE_OF_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_ORIGIN, 0.0}, + {"Latitude_Of_Center", EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_LATITUDE_PROJECTION_CENTRE, 0.0}, + {"X_Scale", nullptr, 0, 1.0}, + {"Y_Scale", nullptr, 0, 1.0}, + {"XY_Plane_Rotation", nullptr, 0, 0.0}, + {nullptr, nullptr, 0, 0.0}}; +static const ESRIParamMapping paramsESRI_Krovak_alt2[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Pseudo_Standard_Parallel_1", + EPSG_NAME_PARAMETER_LATITUDE_PSEUDO_STANDARD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_PSEUDO_STANDARD_PARALLEL, 0.0}, + {"Scale_Factor", EPSG_NAME_PARAMETER_SCALE_FACTOR_PSEUDO_STANDARD_PARALLEL, + EPSG_CODE_PARAMETER_SCALE_FACTOR_PSEUDO_STANDARD_PARALLEL, 0.0}, + {"Azimuth", EPSG_NAME_PARAMETER_COLATITUDE_CONE_AXIS, + EPSG_CODE_PARAMETER_COLATITUDE_CONE_AXIS, 0.0}, + {"Longitude_Of_Center", EPSG_NAME_PARAMETER_LONGITUDE_OF_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_ORIGIN, 0.0}, + {"Latitude_Of_Center", EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_LATITUDE_PROJECTION_CENTRE, 0.0}, + {"X_Scale", nullptr, 0, -1.0}, + {"Y_Scale", nullptr, 0, 1.0}, + {"XY_Plane_Rotation", nullptr, 0, 90.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_New_Zealand_Map_Grid[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Longitude_Of_Origin", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Latitude_Of_Origin", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Orthographic[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Longitude_Of_Center", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Latitude_Of_Center", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Winkel_Tripel[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Standard_Parallel_1", EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Aitoff[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Craster_Parabolic[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Gnomonic[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Longitude_Of_Center", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Latitude_Of_Center", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Stereographic_North_Pole[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_ORIGIN, 0.0}, + {"Standard_Parallel_1", EPSG_NAME_PARAMETER_LATITUDE_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_STD_PARALLEL, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Stereographic_South_Pole[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_ORIGIN, 0.0}, + {"Standard_Parallel_1", EPSG_NAME_PARAMETER_LATITUDE_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_STD_PARALLEL, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping + paramsESRI_Rectified_Skew_Orthomorphic_Natural_Origin[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Scale_Factor", EPSG_NAME_PARAMETER_SCALE_FACTOR_INITIAL_LINE, + EPSG_CODE_PARAMETER_SCALE_FACTOR_INITIAL_LINE, 0.0}, + {"Azimuth", EPSG_NAME_PARAMETER_AZIMUTH_INITIAL_LINE, + EPSG_CODE_PARAMETER_AZIMUTH_INITIAL_LINE, 0.0}, + {"Longitude_Of_Center", EPSG_NAME_PARAMETER_LONGITUDE_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_LONGITUDE_PROJECTION_CENTRE, 0.0}, + {"Latitude_Of_Center", EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_LATITUDE_PROJECTION_CENTRE, 0.0}, + {"XY_Plane_Rotation", EPSG_NAME_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID, + EPSG_CODE_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Rectified_Skew_Orthomorphic_Center[] = + {{"False_Easting", EPSG_NAME_PARAMETER_EASTING_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_EASTING_PROJECTION_CENTRE, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_NORTHING_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_NORTHING_PROJECTION_CENTRE, 0.0}, + {"Scale_Factor", EPSG_NAME_PARAMETER_SCALE_FACTOR_INITIAL_LINE, + EPSG_CODE_PARAMETER_SCALE_FACTOR_INITIAL_LINE, 0.0}, + {"Azimuth", EPSG_NAME_PARAMETER_AZIMUTH_INITIAL_LINE, + EPSG_CODE_PARAMETER_AZIMUTH_INITIAL_LINE, 0.0}, + {"Longitude_Of_Center", EPSG_NAME_PARAMETER_LONGITUDE_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_LONGITUDE_PROJECTION_CENTRE, 0.0}, + {"Latitude_Of_Center", EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_LATITUDE_PROJECTION_CENTRE, 0.0}, + {"XY_Plane_Rotation", EPSG_NAME_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID, + EPSG_CODE_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Goode_Homolosine[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Equidistant_Cylindrical_Ellipsoidal[] = + {{"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Standard_Parallel_1", EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL, + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Laborde_Oblique_Mercator[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Scale_Factor", EPSG_NAME_PARAMETER_SCALE_FACTOR_INITIAL_LINE, + EPSG_CODE_PARAMETER_SCALE_FACTOR_INITIAL_LINE, 0.0}, + {"Azimuth", EPSG_NAME_PARAMETER_AZIMUTH_INITIAL_LINE, + EPSG_CODE_PARAMETER_AZIMUTH_INITIAL_LINE, 0.0}, + {"Longitude_Of_Center", EPSG_NAME_PARAMETER_LONGITUDE_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_LONGITUDE_PROJECTION_CENTRE, 0.0}, + {"Latitude_Of_Center", EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE, + EPSG_CODE_PARAMETER_LATITUDE_PROJECTION_CENTRE, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Gnomonic_Ellipsoidal[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Longitude_Of_Center", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Latitude_Of_Center", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Wagner_IV[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Latitude_Of_Origin", nullptr, 0, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Wagner_V[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Wagner_VII[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Geostationary_Satellite[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Longitude_Of_Center", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Height", "Satellite Height", 0, 0.0}, + {"Option", nullptr, 0, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIParamMapping paramsESRI_Mercator_Auxiliary_Sphere[] = { + {"False_Easting", EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_CODE_PARAMETER_FALSE_EASTING, 0.0}, + {"False_Northing", EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_CODE_PARAMETER_FALSE_NORTHING, 0.0}, + {"Central_Meridian", EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Standard_Parallel_1", EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, 0.0}, + {"Auxiliary_Sphere_Type", nullptr, 0, 0.0}, + {nullptr, nullptr, 0, 0.0}}; + +static const ESRIMethodMapping esriMappings[] = { + {"Plate_Carree", EPSG_NAME_METHOD_EQUIDISTANT_CYLINDRICAL, + EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL, paramsESRI_Plate_Carree}, + {"Plate_Carree", EPSG_NAME_METHOD_EQUIDISTANT_CYLINDRICAL_SPHERICAL, + EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL_SPHERICAL, + paramsESRI_Plate_Carree}, + {"Equidistant_Cylindrical", EPSG_NAME_METHOD_EQUIDISTANT_CYLINDRICAL, + EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL, + paramsESRI_Equidistant_Cylindrical}, + {"Miller_Cylindrical", PROJ_WKT2_NAME_METHOD_MILLER_CYLINDRICAL, 0, + paramsESRI_Miller_Cylindrical}, + {"Mercator", EPSG_NAME_METHOD_MERCATOR_VARIANT_B, + EPSG_CODE_METHOD_MERCATOR_VARIANT_B, paramsESRI_Mercator}, + {"Gauss_Kruger", EPSG_NAME_METHOD_TRANSVERSE_MERCATOR, + EPSG_CODE_METHOD_TRANSVERSE_MERCATOR, paramsESRI_Gauss_Kruger}, + {"Transverse_Mercator", EPSG_NAME_METHOD_TRANSVERSE_MERCATOR, + EPSG_CODE_METHOD_TRANSVERSE_MERCATOR, paramsESRI_Transverse_Mercator}, + {"Albers", EPSG_NAME_METHOD_ALBERS_EQUAL_AREA, + EPSG_CODE_METHOD_ALBERS_EQUAL_AREA, paramsESRI_Albers}, + {"Sinusoidal", PROJ_WKT2_NAME_METHOD_SINUSOIDAL, 0, paramsESRI_Sinusoidal}, + {"Mollweide", PROJ_WKT2_NAME_METHOD_MOLLWEIDE, 0, paramsESRI_Mollweide}, + {"Eckert_I", PROJ_WKT2_NAME_METHOD_ECKERT_I, 0, paramsESRI_Eckert_I}, + {"Eckert_II", PROJ_WKT2_NAME_METHOD_ECKERT_II, 0, paramsESRI_Eckert_II}, + {"Eckert_III", PROJ_WKT2_NAME_METHOD_ECKERT_III, 0, paramsESRI_Eckert_III}, + {"Eckert_IV", PROJ_WKT2_NAME_METHOD_ECKERT_IV, 0, paramsESRI_Eckert_IV}, + {"Eckert_V", PROJ_WKT2_NAME_METHOD_ECKERT_V, 0, paramsESRI_Eckert_V}, + {"Eckert_VI", PROJ_WKT2_NAME_METHOD_ECKERT_VI, 0, paramsESRI_Eckert_VI}, + {"Gall_Stereographic", PROJ_WKT2_NAME_METHOD_GALL_STEREOGRAPHIC, 0, + paramsESRI_Gall_Stereographic}, + {"Winkel_I", "Winkel I", 0, paramsESRI_Winkel_I}, + {"Winkel_II", "Winkel II", 0, paramsESRI_Winkel_II}, + {"Lambert_Conformal_Conic", EPSG_NAME_METHOD_LAMBERT_CONIC_CONFORMAL_1SP, + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP, + paramsESRI_Lambert_Conformal_Conic_alt1}, + {"Lambert_Conformal_Conic", EPSG_NAME_METHOD_LAMBERT_CONIC_CONFORMAL_2SP, + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP, + paramsESRI_Lambert_Conformal_Conic_alt2}, + {"Lambert_Conformal_Conic", EPSG_NAME_METHOD_LAMBERT_CONIC_CONFORMAL_2SP, + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP, + paramsESRI_Lambert_Conformal_Conic_alt3}, + {"Lambert_Conformal_Conic", + EPSG_NAME_METHOD_LAMBERT_CONIC_CONFORMAL_2SP_MICHIGAN, + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP_MICHIGAN, + paramsESRI_Lambert_Conformal_Conic_alt4}, + {"Polyconic", EPSG_NAME_METHOD_AMERICAN_POLYCONIC, + EPSG_CODE_METHOD_AMERICAN_POLYCONIC, paramsESRI_Polyconic}, + {"Quartic_Authalic", "Quartic Authalic", 0, paramsESRI_Quartic_Authalic}, + {"Loximuthal", "Loximuthal", 0, paramsESRI_Loximuthal}, + {"Bonne", EPSG_NAME_METHOD_BONNE, EPSG_CODE_METHOD_BONNE, paramsESRI_Bonne}, + {"Hotine_Oblique_Mercator_Two_Point_Natural_Origin", + PROJ_WKT2_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_TWO_POINT_NATURAL_ORIGIN, 0, + paramsESRI_Hotine_Oblique_Mercator_Two_Point_Natural_Origin}, + {"Stereographic", PROJ_WKT2_NAME_METHOD_STEREOGRAPHIC, 0, + paramsESRI_Stereographic}, + {"Equidistant_Conic", PROJ_WKT2_NAME_METHOD_EQUIDISTANT_CONIC, 0, + paramsESRI_Equidistant_Conic}, + {"Cassini", EPSG_NAME_METHOD_CASSINI_SOLDNER, + EPSG_CODE_METHOD_CASSINI_SOLDNER, paramsESRI_Cassini}, + {"Van_der_Grinten_I", PROJ_WKT2_NAME_METHOD_VAN_DER_GRINTEN, 0, + paramsESRI_Van_der_Grinten_I}, + {"Robinson", PROJ_WKT2_NAME_METHOD_ROBINSON, 0, paramsESRI_Robinson}, + {"Two_Point_Equidistant", PROJ_WKT2_NAME_METHOD_TWO_POINT_EQUIDISTANT, 0, + paramsESRI_Two_Point_Equidistant}, + {"Azimuthal_Equidistant", EPSG_NAME_METHOD_MODIFIED_AZIMUTHAL_EQUIDISTANT, + EPSG_CODE_METHOD_MODIFIED_AZIMUTHAL_EQUIDISTANT, + paramsESRI_Azimuthal_Equidistant}, + {"Lambert_Azimuthal_Equal_Area", + EPSG_NAME_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA, + EPSG_CODE_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA, + paramsESRI_Lambert_Azimuthal_Equal_Area}, + {"Cylindrical_Equal_Area", + EPSG_NAME_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA_SPHERICAL, + EPSG_CODE_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA_SPHERICAL, + paramsESRI_Cylindrical_Equal_Area}, + {"Hotine_Oblique_Mercator_Two_Point_Center", + PROJ_WKT2_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_TWO_POINT_NATURAL_ORIGIN, 0, + paramsESRI_Hotine_Oblique_Mercator_Two_Point_Center}, + {"Hotine_Oblique_Mercator_Azimuth_Natural_Origin", + EPSG_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_A, + EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_A, + paramsESRI_Hotine_Oblique_Mercator_Azimuth_Natural_Origin}, + {"Hotine_Oblique_Mercator_Azimuth_Center", + EPSG_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B, + EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B, + paramsESRI_Hotine_Oblique_Mercator_Azimuth_Center}, + {"Double_Stereographic", EPSG_NAME_METHOD_OBLIQUE_STEREOGRAPHIC, + EPSG_CODE_METHOD_OBLIQUE_STEREOGRAPHIC, paramsESRI_Double_Stereographic}, + {"Krovak", EPSG_NAME_METHOD_KROVAK, EPSG_CODE_METHOD_KROVAK, + paramsESRI_Krovak_alt1}, + {"Krovak", EPSG_NAME_METHOD_KROVAK_NORTH_ORIENTED, + EPSG_CODE_METHOD_KROVAK_NORTH_ORIENTED, paramsESRI_Krovak_alt2}, + {"New_Zealand_Map_Grid", EPSG_NAME_METHOD_NZMG, EPSG_CODE_METHOD_NZMG, + paramsESRI_New_Zealand_Map_Grid}, + {"Orthographic", EPSG_NAME_METHOD_ORTHOGRAPHIC, + EPSG_CODE_METHOD_ORTHOGRAPHIC, paramsESRI_Orthographic}, + {"Winkel_Tripel", "Winkel Tripel", 0, paramsESRI_Winkel_Tripel}, + {"Aitoff", "Aitoff", 0, paramsESRI_Aitoff}, + {"Craster_Parabolic", "Craster Parabolic", 0, paramsESRI_Craster_Parabolic}, + {"Gnomonic", PROJ_WKT2_NAME_METHOD_GNOMONIC, 0, paramsESRI_Gnomonic}, + {"Stereographic_North_Pole", EPSG_NAME_METHOD_POLAR_STEREOGRAPHIC_VARIANT_B, + EPSG_CODE_METHOD_POLAR_STEREOGRAPHIC_VARIANT_B, + paramsESRI_Stereographic_North_Pole}, + {"Stereographic_South_Pole", EPSG_NAME_METHOD_POLAR_STEREOGRAPHIC_VARIANT_B, + EPSG_CODE_METHOD_POLAR_STEREOGRAPHIC_VARIANT_B, + paramsESRI_Stereographic_South_Pole}, + {"Rectified_Skew_Orthomorphic_Natural_Origin", + EPSG_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_A, + EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_A, + paramsESRI_Rectified_Skew_Orthomorphic_Natural_Origin}, + {"Rectified_Skew_Orthomorphic_Center", + EPSG_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B, + EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B, + paramsESRI_Rectified_Skew_Orthomorphic_Center}, + {"Goode_Homolosine", "Goode Homolosine", 0, paramsESRI_Goode_Homolosine}, + {"Equidistant_Cylindrical_Ellipsoidal", + EPSG_NAME_METHOD_EQUIDISTANT_CYLINDRICAL, + EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL, + paramsESRI_Equidistant_Cylindrical_Ellipsoidal}, + {"Laborde_Oblique_Mercator", EPSG_NAME_METHOD_LABORDE_OBLIQUE_MERCATOR, + EPSG_CODE_METHOD_LABORDE_OBLIQUE_MERCATOR, + paramsESRI_Laborde_Oblique_Mercator}, + {"Gnomonic_Ellipsoidal", PROJ_WKT2_NAME_METHOD_GNOMONIC, 0, + paramsESRI_Gnomonic_Ellipsoidal}, + {"Wagner_IV", PROJ_WKT2_NAME_METHOD_WAGNER_IV, 0, paramsESRI_Wagner_IV}, + {"Wagner_V", PROJ_WKT2_NAME_METHOD_WAGNER_V, 0, paramsESRI_Wagner_V}, + {"Wagner_VII", PROJ_WKT2_NAME_METHOD_WAGNER_VII, 0, paramsESRI_Wagner_VII}, + {"Geostationary_Satellite", + PROJ_WKT2_NAME_METHOD_GEOSTATIONARY_SATELLITE_SWEEP_Y, 0, + paramsESRI_Geostationary_Satellite}, + {"Mercator_Auxiliary_Sphere", + EPSG_NAME_METHOD_POPULAR_VISUALISATION_PSEUDO_MERCATOR, + EPSG_CODE_METHOD_POPULAR_VISUALISATION_PSEUDO_MERCATOR, + paramsESRI_Mercator_Auxiliary_Sphere}, +}; + +// --------------------------------------------------------------------------- + +// end of anonymous namespace +} + +//! @endcond + +#endif // ESRI_PROJECTION_MAPPINGS_HH_INCLUDED diff --git a/include/proj/internal/internal.hpp b/include/proj/internal/internal.hpp new file mode 100644 index 00000000..cbf6e259 --- /dev/null +++ b/include/proj/internal/internal.hpp @@ -0,0 +1,190 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef FROM_PROJ_CPP +#error This file should only be included from a PROJ cpp file +#endif + +#ifndef INTERNAL_HH_INCLUDED +#define INTERNAL_HH_INCLUDED + +#if !(__cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1900)) +#error Must have C++11 or newer. +#endif + +#include <cassert> +#include <cstring> +#include <memory> +#include <string> +#ifndef DOXYGEN_ENABLED +#include <type_traits> // for std::is_base_of +#endif +#include <vector> + +#include "proj/util.hpp" + +//! @cond Doxygen_Suppress + +#if ((defined(__clang__) && \ + (__clang_major__ > 3 || \ + (__clang_major__ == 3 && __clang_minor__ >= 7))) || \ + __GNUC__ >= 7) +/** Macro for fallthrough in a switch case construct */ +#define PROJ_FALLTHROUGH [[clang::fallthrough]]; +#else +/** Macro for fallthrough in a switch case construct */ +#define PROJ_FALLTHROUGH +#endif + +#if defined(__clang__) || defined(_MSC_VER) +#define COMPILER_WARNS_ABOUT_ABSTRACT_VBASE_INIT +#endif + +#if !(defined(__clang__) && __clang_major__ < 5) && !defined(__INTEL_COMPILER) +#define SUPPORT_DELETED_FUNCTION +#endif + +NS_PROJ_START + +namespace operation { +class OperationParameterValue; +} // namespace operation + +namespace internal { + +/** Use cpl::down_cast<Derived*>(pointer_to_base) as equivalent of + * static_cast<Derived*>(pointer_to_base) with safe checking in debug + * mode. + * + * Only works if no virtual inheritance is involved. + * + * @param f pointer to a base class + * @return pointer to a derived class + */ +template <typename To, typename From> inline To down_cast(From *f) { + static_assert( + (std::is_base_of<From, typename std::remove_pointer<To>::type>::value), + "target type not derived from source type"); + assert(f == nullptr || dynamic_cast<To>(f) != nullptr); + return static_cast<To>(f); +} + +/* Borrowed from C++14 */ +template <typename T, typename... Args> +std::unique_ptr<T> make_unique(Args &&... args) { + return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); +} + +PROJ_FOR_TEST std::string replaceAll(const std::string &str, + const std::string &before, + const std::string &after); + +size_t ci_find(const std::string &osStr, const char *needle) noexcept; + +size_t ci_find(const std::string &osStr, const std::string &needle, + size_t startPos = 0) noexcept; + +inline bool starts_with(const std::string &str, + const std::string &prefix) noexcept { + if (str.size() < prefix.size()) { + return false; + } + return std::memcmp(str.c_str(), prefix.c_str(), prefix.size()) == 0; +} + +inline bool starts_with(const std::string &str, const char *prefix) noexcept { + const size_t prefixSize = std::strlen(prefix); + if (str.size() < prefixSize) { + return false; + } + return std::memcmp(str.c_str(), prefix, prefixSize) == 0; +} + +bool ci_starts_with(const char *str, const char *prefix) noexcept; + +bool ci_starts_with(const std::string &str, const std::string &prefix) noexcept; + +bool ends_with(const std::string &str, const std::string &suffix) noexcept; + +PROJ_FOR_TEST std::string tolower(const std::string &osStr); + +std::string toupper(const std::string &osStr); + +PROJ_FOR_TEST std::vector<std::string> split(const std::string &osStr, + char separator); + +bool ci_equal(const char *a, const char *b) noexcept; + +#ifdef SUPPORT_DELETED_FUNCTION +bool ci_equal(const char *a, const std::string &b) = delete; +#endif + +PROJ_FOR_TEST bool ci_equal(const std::string &a, const char *b) noexcept; + +PROJ_FOR_TEST bool ci_equal(const std::string &a, + const std::string &b) noexcept; + +std::string stripQuotes(const std::string &osStr); + +std::string toString(int val); + +PROJ_FOR_TEST std::string toString(double val, int precision = 15); + +PROJ_FOR_TEST double +c_locale_stod(const std::string &s); // throw(std::invalid_argument) + +#ifdef SUPPORT_DELETED_FUNCTION +std::string concat(const std::string &, const std::string &) = delete; +std::string concat(const char *, const char *) = delete; +#endif +std::string concat(const char *a, const std::string &b); +#ifdef SUPPORT_DELETED_FUNCTION +std::string concat(const std::string &, const char *) = delete; +std::string concat(const char *, const char *, const char *) = delete; +std::string concat(const char *, const char *, const std::string &) = delete; +#endif +std::string concat(const char *a, const std::string &b, const char *c); +#ifdef SUPPORT_DELETED_FUNCTION +std::string concat(const char *, const std::string &, + const std::string &) = delete; +std::string concat(const std::string &, const char *, const char *) = delete; +std::string concat(const std::string &, const char *, + const std::string &) = delete; +std::string concat(const std::string &, const std::string &, + const char *) = delete; +std::string concat(const std::string &, const std::string &, + const std::string &) = delete; +#endif + +} // namespace internal + +NS_PROJ_END + +//! @endcond + +#endif // INTERNAL_HH_INCLUDED diff --git a/include/proj/internal/io_internal.hpp b/include/proj/internal/io_internal.hpp new file mode 100644 index 00000000..8a32c6eb --- /dev/null +++ b/include/proj/internal/io_internal.hpp @@ -0,0 +1,163 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef FROM_PROJ_CPP +#error This file should only be included from a PROJ cpp file +#endif + +#ifndef IO_INTERNAL_HH_INCLUDED +#define IO_INTERNAL_HH_INCLUDED + +#include <string> +#include <vector> + +#include "proj/util.hpp" + +//! @cond Doxygen_Suppress + +NS_PROJ_START + +namespace io { + +// --------------------------------------------------------------------------- + +class WKTConstants { + public: + // WKT1 + static const std::string GEOCCS; + static const std::string GEOGCS; + static const std::string DATUM; // WKT2 preferred too + static const std::string UNIT; + static const std::string SPHEROID; + static const std::string AXIS; // WKT2 too + static const std::string PRIMEM; // WKT2 too + static const std::string AUTHORITY; + static const std::string PROJCS; + static const std::string PROJECTION; + static const std::string PARAMETER; // WKT2 too + static const std::string VERT_CS; + static const std::string VERT_DATUM; + static const std::string COMPD_CS; + static const std::string TOWGS84; // WKT1 only + static const std::string EXTENSION; // WKT1 only - GDAL specific + static const std::string LOCAL_CS; // WKT1 only + static const std::string LOCAL_DATUM; // WKT1 only + + // WKT2 preferred + static const std::string GEODCRS; + static const std::string LENGTHUNIT; + static const std::string ANGLEUNIT; + static const std::string SCALEUNIT; + static const std::string TIMEUNIT; + static const std::string ELLIPSOID; + static const std::string CS; + static const std::string ID; + static const std::string PROJCRS; + static const std::string BASEGEODCRS; + static const std::string MERIDIAN; + static const std::string ORDER; + static const std::string ANCHOR; + static const std::string CONVERSION; + static const std::string METHOD; + static const std::string REMARK; + static const std::string GEOGCRS; // WKT2-2018 + static const std::string BASEGEOGCRS; // WKT2-2018 + static const std::string SCOPE; + static const std::string AREA; + static const std::string BBOX; + static const std::string CITATION; + static const std::string URI; + static const std::string VERTCRS; + static const std::string VDATUM; + static const std::string COMPOUNDCRS; + static const std::string PARAMETERFILE; + static const std::string COORDINATEOPERATION; + static const std::string SOURCECRS; + static const std::string TARGETCRS; + static const std::string INTERPOLATIONCRS; + static const std::string OPERATIONACCURACY; + static const std::string CONCATENATEDOPERATION; // WKT2-2018 + static const std::string STEP; // WKT2-2018 + static const std::string BOUNDCRS; + static const std::string ABRIDGEDTRANSFORMATION; + static const std::string DERIVINGCONVERSION; + static const std::string TDATUM; + static const std::string CALENDAR; // WKT2-2018 + static const std::string TIMEORIGIN; + static const std::string TIMECRS; + static const std::string VERTICALEXTENT; + static const std::string TIMEEXTENT; + static const std::string USAGE; // WKT2-2018 + static const std::string DYNAMIC; // WKT2-2018 + static const std::string FRAMEEPOCH; // WKT2-2018 + static const std::string MODEL; // WKT2-2018 + static const std::string VELOCITYGRID; // WKT2-2018 + static const std::string ENSEMBLE; // WKT2-2018 + static const std::string MEMBER; // WKT2-2018 + static const std::string ENSEMBLEACCURACY; // WKT2-2018 + static const std::string DERIVEDPROJCRS; // WKT2-2018 + static const std::string BASEPROJCRS; // WKT2-2018 + static const std::string EDATUM; + static const std::string ENGCRS; + static const std::string PDATUM; + static const std::string PARAMETRICCRS; + static const std::string PARAMETRICUNIT; + static const std::string BASEVERTCRS; + static const std::string BASEENGCRS; + static const std::string BASEPARAMCRS; + static const std::string BASETIMECRS; + + // WKT2 alternate (longer or shorter) + static const std::string GEODETICCRS; + static const std::string GEODETICDATUM; + static const std::string PROJECTEDCRS; + static const std::string PRIMEMERIDIAN; + static const std::string GEOGRAPHICCRS; // WKT2-2018 + static const std::string TRF; // WKT2-2018 + static const std::string VERTICALCRS; + static const std::string VERTICALDATUM; + static const std::string VRF; // WKT2-2018 + static const std::string TIMEDATUM; + static const std::string ENGINEERINGDATUM; + static const std::string ENGINEERINGCRS; + static const std::string PARAMETRICDATUM; + + static const std::vector<std::string> &constants() { return constants_; } + + private: + static std::vector<std::string> constants_; + static const char *createAndAddToConstantList(const char *text); +}; + +} // namespace io + +NS_PROJ_END + +//! @endcond + +#endif // IO_INTERNAL_HH_INCLUDED diff --git a/include/proj/internal/lru_cache.hpp b/include/proj/internal/lru_cache.hpp new file mode 100644 index 00000000..2f2c8bd9 --- /dev/null +++ b/include/proj/internal/lru_cache.hpp @@ -0,0 +1,223 @@ +/* + * LRUCache11 - a templated C++11 based LRU cache class that allows + * specification of + * key, value and optionally the map container type (defaults to + * std::unordered_map) + * By using the std::map and a linked list of keys it allows O(1) insert, delete + * and + * refresh operations. + * + * This is a header-only library and all you need is the LRUCache11.hpp file + * + * Github: https://github.com/mohaps/lrucache11 + * + * This is a follow-up to the LRUCache project - + * https://github.com/mohaps/lrucache + * + * Copyright (c) 2012-22 SAURAV MOHAPATRA <mohaps@gmail.com> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/*! @cond Doxygen_Suppress */ + +#pragma once +#include <algorithm> +#include <cstdint> +#include <list> +#include <mutex> +#include <stdexcept> +#include <thread> +#include <unordered_map> + +NS_PROJ_START +namespace lru11 { +/* + * a noop lockable concept that can be used in place of std::mutex + */ +class NullLock { + public: + // cppcheck-suppress functionStatic + void lock() {} + // cppcheck-suppress functionStatic + void unlock() {} + // cppcheck-suppress functionStatic + bool try_lock() { return true; } +}; + +/** + * error raised when a key not in cache is passed to get() + */ +class KeyNotFound : public std::invalid_argument { + public: + KeyNotFound() : std::invalid_argument("key_not_found") {} + ~KeyNotFound() override; +}; + +#ifndef LRU11_DO_NOT_DEFINE_OUT_OF_CLASS_METHODS +KeyNotFound::~KeyNotFound() = default; +#endif + +template <typename K, typename V> +struct KeyValuePair { + public: + K key; + V value; + + KeyValuePair(const K& k, const V& v) : key(k), value(v) {} +}; + +/** + * The LRU Cache class templated by + * Key - key type + * Value - value type + * MapType - an associative container like std::unordered_map + * LockType - a lock type derived from the Lock class (default: + *NullLock = no synchronization) + * + * The default NullLock based template is not thread-safe, however passing + *Lock=std::mutex will make it + * thread-safe + */ +template <class Key, class Value, class Lock = NullLock, + class Map = std::unordered_map< + Key, typename std::list<KeyValuePair<Key, Value>>::iterator>> +class Cache { + public: + typedef KeyValuePair<Key, Value> node_type; + typedef std::list<KeyValuePair<Key, Value>> list_type; + typedef Map map_type; + typedef Lock lock_type; + using Guard = std::lock_guard<lock_type>; + /** + * the max size is the hard limit of keys and (maxSize + elasticity) is the + * soft limit + * the cache is allowed to grow till maxSize + elasticity and is pruned back + * to maxSize keys + * set maxSize = 0 for an unbounded cache (but in that case, you're better off + * using a std::unordered_map + * directly anyway! :) + */ + explicit Cache(size_t maxSize = 64, size_t elasticity = 10) + : maxSize_(maxSize), elasticity_(elasticity) {} + virtual ~Cache() = default; + size_t size() const { + Guard g(lock_); + return cache_.size(); + } + bool empty() const { + Guard g(lock_); + return cache_.empty(); + } + void clear() { + Guard g(lock_); + cache_.clear(); + keys_.clear(); + } + void insert(const Key& k, const Value& v) { + Guard g(lock_); + const auto iter = cache_.find(k); + if (iter != cache_.end()) { + iter->second->value = v; + keys_.splice(keys_.begin(), keys_, iter->second); + return; + } + + keys_.emplace_front(k, v); + cache_[k] = keys_.begin(); + prune(); + } + bool tryGet(const Key& kIn, Value& vOut) { + Guard g(lock_); + const auto iter = cache_.find(kIn); + if (iter == cache_.end()) { + return false; + } + keys_.splice(keys_.begin(), keys_, iter->second); + vOut = iter->second->value; + return true; + } + /** + * The const reference returned here is only + * guaranteed to be valid till the next insert/delete + */ + const Value& get(const Key& k) { + Guard g(lock_); + const auto iter = cache_.find(k); + if (iter == cache_.end()) { + throw KeyNotFound(); + } + keys_.splice(keys_.begin(), keys_, iter->second); + return iter->second->value; + } + /** + * returns a copy of the stored object (if found) + */ + Value getCopy(const Key& k) { + return get(k); + } + bool remove(const Key& k) { + Guard g(lock_); + auto iter = cache_.find(k); + if (iter == cache_.end()) { + return false; + } + keys_.erase(iter->second); + cache_.erase(iter); + return true; + } + bool contains(const Key& k) { + Guard g(lock_); + return cache_.find(k) != cache_.end(); + } + + size_t getMaxSize() const { return maxSize_; } + size_t getElasticity() const { return elasticity_; } + size_t getMaxAllowedSize() const { return maxSize_ + elasticity_; } + template <typename F> + void cwalk(F& f) const { + Guard g(lock_); + std::for_each(keys_.begin(), keys_.end(), f); + } + + protected: + size_t prune() { + size_t maxAllowed = maxSize_ + elasticity_; + if (maxSize_ == 0 || cache_.size() <= maxAllowed) { /* ERO: changed < to <= */ + return 0; + } + size_t count = 0; + while (cache_.size() > maxSize_) { + cache_.erase(keys_.back().key); + keys_.pop_back(); + ++count; + } + return count; + } + + private: + // Dissallow copying. + Cache(const Cache&) = delete; + Cache& operator=(const Cache&) = delete; + + mutable Lock lock_{}; + Map cache_{}; + list_type keys_{}; + size_t maxSize_; + size_t elasticity_; +}; + +} // namespace LRUCache11 +NS_PROJ_END + +/*! @endcond */ diff --git a/include/proj/io.hpp b/include/proj/io.hpp new file mode 100644 index 00000000..689fede1 --- /dev/null +++ b/include/proj/io.hpp @@ -0,0 +1,970 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef IO_HH_INCLUDED +#define IO_HH_INCLUDED + +#include <list> +#include <memory> +#include <set> +#include <string> +#include <utility> +#include <vector> + +#include "util.hpp" + +NS_PROJ_START + +namespace common { +class UnitOfMeasure; +using UnitOfMeasurePtr = std::shared_ptr<UnitOfMeasure>; +using UnitOfMeasureNNPtr = util::nn<UnitOfMeasurePtr>; + +class IdentifiedObject; +using IdentifiedObjectPtr = std::shared_ptr<IdentifiedObject>; +using IdentifiedObjectNNPtr = util::nn<IdentifiedObjectPtr>; +} // namespace common + +namespace cs { +class CoordinateSystem; +using CoordinateSystemPtr = std::shared_ptr<CoordinateSystem>; +using CoordinateSystemNNPtr = util::nn<CoordinateSystemPtr>; +} // namespace cs + +namespace metadata { +class Extent; +using ExtentPtr = std::shared_ptr<Extent>; +using ExtentNNPtr = util::nn<ExtentPtr>; +} // namespace metadata + +namespace datum { +class Datum; +using DatumPtr = std::shared_ptr<Datum>; +using DatumNNPtr = util::nn<DatumPtr>; + +class Ellipsoid; +using EllipsoidPtr = std::shared_ptr<Ellipsoid>; +using EllipsoidNNPtr = util::nn<EllipsoidPtr>; + +class PrimeMeridian; +using PrimeMeridianPtr = std::shared_ptr<PrimeMeridian>; +using PrimeMeridianNNPtr = util::nn<PrimeMeridianPtr>; + +class GeodeticReferenceFrame; +using GeodeticReferenceFramePtr = std::shared_ptr<GeodeticReferenceFrame>; +using GeodeticReferenceFrameNNPtr = util::nn<GeodeticReferenceFramePtr>; + +class VerticalReferenceFrame; +using VerticalReferenceFramePtr = std::shared_ptr<VerticalReferenceFrame>; +using VerticalReferenceFrameNNPtr = util::nn<VerticalReferenceFramePtr>; +} // namespace datum + +namespace crs { +class CRS; +using CRSPtr = std::shared_ptr<CRS>; +using CRSNNPtr = util::nn<CRSPtr>; + +class GeodeticCRS; +using GeodeticCRSPtr = std::shared_ptr<GeodeticCRS>; +using GeodeticCRSNNPtr = util::nn<GeodeticCRSPtr>; + +class GeographicCRS; +using GeographicCRSPtr = std::shared_ptr<GeographicCRS>; +using GeographicCRSNNPtr = util::nn<GeographicCRSPtr>; + +class VerticalCRS; +using VerticalCRSPtr = std::shared_ptr<VerticalCRS>; +using VerticalCRSNNPtr = util::nn<VerticalCRSPtr>; + +class ProjectedCRS; +using ProjectedCRSPtr = std::shared_ptr<ProjectedCRS>; +using ProjectedCRSNNPtr = util::nn<ProjectedCRSPtr>; + +class CompoundCRS; +using CompoundCRSPtr = std::shared_ptr<CompoundCRS>; +using CompoundCRSNNPtr = util::nn<CompoundCRSPtr>; +} // namespace crs + +namespace operation { +class Conversion; +using ConversionPtr = std::shared_ptr<Conversion>; +using ConversionNNPtr = util::nn<ConversionPtr>; + +class CoordinateOperation; +using CoordinateOperationPtr = std::shared_ptr<CoordinateOperation>; +using CoordinateOperationNNPtr = util::nn<CoordinateOperationPtr>; +} // namespace operation + +/** osgeo.proj.io namespace. + * + * \brief I/O classes + */ +namespace io { + +class DatabaseContext; +/** Shared pointer of DatabaseContext. */ +using DatabaseContextPtr = std::shared_ptr<DatabaseContext>; +/** Non-null shared pointer of DatabaseContext. */ +using DatabaseContextNNPtr = util::nn<DatabaseContextPtr>; + +// --------------------------------------------------------------------------- + +class WKTFormatter; +/** WKTFormatter unique pointer. */ +using WKTFormatterPtr = std::unique_ptr<WKTFormatter>; +/** Non-null WKTFormatter unique pointer. */ +using WKTFormatterNNPtr = util::nn<WKTFormatterPtr>; + +/** \brief Formatter to WKT strings. + * + * An instance of this class can only be used by a single + * thread at a time. + */ +class PROJ_GCC_DLL WKTFormatter { + public: + /** WKT variant. */ + enum class PROJ_MSVC_DLL Convention { + /** Full WKT2 string, conforming to ISO 19162:2015(E) / OGC 12-063r5 + * (\ref WKT2_2015) with all possible nodes and new keyword names. + */ + WKT2, + WKT2_2015 = WKT2, + + /** Same as WKT2 with the following exceptions: + * <ul> + * <li>UNIT keyword used.</li> + * <li>ID node only on top element.</li> + * <li>No ORDER element in AXIS element.</li> + * <li>PRIMEM node omitted if it is Greenwich.</li> + * <li>ELLIPSOID.UNIT node omitted if it is + * UnitOfMeasure::METRE.</li> + * <li>PARAMETER.UNIT / PRIMEM.UNIT omitted if same as AXIS.</li> + * <li>AXIS.UNIT omitted and replaced by a common GEODCRS.UNIT if + * they are all the same on all axis.</li> + * </ul> + */ + WKT2_SIMPLIFIED, + WKT2_2015_SIMPLIFIED = WKT2_SIMPLIFIED, + + /** Full WKT2 string, conforming to ISO 19162:2018 / OGC 18-010, with + * (\ref WKT2_2018) all possible nodes and new keyword names. + * Non-normative list of differences: + * <ul> + * <li>WKT2_2018 uses GEOGCRS / BASEGEOGCRS keywords for + * GeographicCRS.</li> + * </ul> + */ + WKT2_2018, + + /** WKT2_2018 with the simplification rule of WKT2_SIMPLIFIED */ + WKT2_2018_SIMPLIFIED, + + /** WKT1 as traditionally output by GDAL, deriving from OGC 01-009. + A notable departuPROJ_GCC_DLLre from WKT1_GDAL with respect to OGC + 01-009 is + that in WKT1_GDAL, the unit of the PRIMEM value is always degrees. + */ + WKT1_GDAL, + + /** WKT1 as traditionally output by ESRI software, + * deriving from OGC 99-049. */ + WKT1_ESRI, + }; + + PROJ_DLL static WKTFormatterNNPtr + create(Convention convention = Convention::WKT2, + DatabaseContextPtr dbContext = nullptr); + PROJ_DLL static WKTFormatterNNPtr create(const WKTFormatterNNPtr &other); + //! @cond Doxygen_Suppress + PROJ_DLL ~WKTFormatter(); + //! @endcond + + PROJ_DLL WKTFormatter &setMultiLine(bool multiLine) noexcept; + PROJ_DLL WKTFormatter &setIndentationWidth(int width) noexcept; + PROJ_DLL WKTFormatter &setOutputAxis(bool outputAxis) noexcept; + PROJ_DLL WKTFormatter &setStrict(bool strict) noexcept; + PROJ_DLL bool isStrict() const noexcept; + + PROJ_DLL const std::string &toString() const; + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + PROJ_DLL WKTFormatter & + setOutputId(bool outputIdIn); + + PROJ_INTERNAL void enter(); + PROJ_INTERNAL void leave(); + + PROJ_INTERNAL void startNode(const std::string &keyword, bool hasId); + PROJ_INTERNAL void endNode(); + + PROJ_DLL WKTFormatter &simulCurNodeHasId(); + + PROJ_INTERNAL void addQuotedString(const char *str); + PROJ_INTERNAL void addQuotedString(const std::string &str); + PROJ_INTERNAL void add(const std::string &str); + PROJ_INTERNAL void add(int number); + PROJ_INTERNAL void add(size_t number) = delete; + PROJ_INTERNAL void add(double number, int precision = 15); + + PROJ_INTERNAL void pushOutputUnit(bool outputUnitIn); + PROJ_INTERNAL void popOutputUnit(); + PROJ_INTERNAL bool outputUnit() const; + + PROJ_INTERNAL void pushOutputId(bool outputIdIn); + PROJ_INTERNAL void popOutputId(); + PROJ_INTERNAL bool outputId() const; + + PROJ_INTERNAL void + pushAxisLinearUnit(const common::UnitOfMeasureNNPtr &unit); + PROJ_INTERNAL void popAxisLinearUnit(); + PROJ_INTERNAL const common::UnitOfMeasureNNPtr &axisLinearUnit() const; + + PROJ_INTERNAL void + pushAxisAngularUnit(const common::UnitOfMeasureNNPtr &unit); + PROJ_INTERNAL void popAxisAngularUnit(); + PROJ_INTERNAL const common::UnitOfMeasureNNPtr &axisAngularUnit() const; + + PROJ_INTERNAL void setAbridgedTransformation(bool abriged); + PROJ_INTERNAL bool abridgedTransformation() const; + + PROJ_INTERNAL void setUseDerivingConversion(bool useDerivingConversionIn); + PROJ_INTERNAL bool useDerivingConversion() const; + + PROJ_INTERNAL void setTOWGS84Parameters(const std::vector<double> ¶ms); + PROJ_INTERNAL const std::vector<double> &getTOWGS84Parameters() const; + + PROJ_INTERNAL void setVDatumExtension(const std::string &filename); + PROJ_INTERNAL const std::string &getVDatumExtension() const; + + PROJ_INTERNAL void setHDatumExtension(const std::string &filename); + PROJ_INTERNAL const std::string &getHDatumExtension() const; + + PROJ_INTERNAL static std::string morphNameToESRI(const std::string &name); + +#ifdef unused + PROJ_INTERNAL void startInversion(); + PROJ_INTERNAL void stopInversion(); + PROJ_INTERNAL bool isInverted() const; +#endif + + PROJ_INTERNAL bool outputAxis() const; + PROJ_INTERNAL bool outputAxisOrder() const; + PROJ_INTERNAL bool primeMeridianOmittedIfGreenwich() const; + PROJ_INTERNAL bool ellipsoidUnitOmittedIfMetre() const; + PROJ_INTERNAL bool forceUNITKeyword() const; + PROJ_INTERNAL bool primeMeridianOrParameterUnitOmittedIfSameAsAxis() const; + PROJ_INTERNAL bool primeMeridianInDegree() const; + PROJ_INTERNAL bool outputCSUnitOnlyOnceIfSame() const; + + /** WKT version. */ + enum class Version { + /** WKT1 */ + WKT1, + /** WKT2 / ISO 19162 */ + WKT2 + }; + + PROJ_INTERNAL Version version() const; + PROJ_INTERNAL bool use2018Keywords() const; + PROJ_INTERNAL bool useESRIDialect() const; + + PROJ_INTERNAL const DatabaseContextPtr &databaseContext() const; + + //! @endcond + + protected: + //! @cond Doxygen_Suppress + PROJ_INTERNAL explicit WKTFormatter(Convention convention); + WKTFormatter(const WKTFormatter &other) = delete; + + INLINED_MAKE_UNIQUE + //! @endcond + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +class PROJStringFormatter; +/** PROJStringFormatter unique pointer. */ +using PROJStringFormatterPtr = std::unique_ptr<PROJStringFormatter>; +/** Non-null PROJStringFormatter unique pointer. */ +using PROJStringFormatterNNPtr = util::nn<PROJStringFormatterPtr>; + +/** \brief Formatter to PROJ strings. + * + * An instance of this class can only be used by a single + * thread at a time. + */ +class PROJ_GCC_DLL PROJStringFormatter { + public: + /** PROJ variant. */ + enum class PROJ_MSVC_DLL Convention { + /** PROJ v5 (or later versions) string. */ + PROJ_5, + + /** PROJ v4 string as output by GDAL exportToProj4() */ + PROJ_4 + }; + + PROJ_DLL static PROJStringFormatterNNPtr + create(Convention conventionIn = Convention::PROJ_5, + DatabaseContextPtr dbContext = nullptr); + //! @cond Doxygen_Suppress + PROJ_DLL ~PROJStringFormatter(); + //! @endcond + + PROJ_DLL void setUseETMercForTMerc(bool flag); + + PROJ_DLL const std::string &toString() const; + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + + PROJ_DLL void + startInversion(); + PROJ_DLL void stopInversion(); + PROJ_INTERNAL bool isInverted() const; + PROJ_INTERNAL bool getUseETMercForTMerc() const; + + PROJ_DLL void + ingestPROJString(const std::string &str); // throw ParsingException + + PROJ_DLL void addStep(const char *step); + PROJ_DLL void addStep(const std::string &step); + PROJ_DLL void setCurrentStepInverted(bool inverted); + PROJ_DLL void addParam(const std::string ¶mName); + PROJ_DLL void addParam(const char *paramName, double val); + PROJ_DLL void addParam(const std::string ¶mName, double val); + PROJ_DLL void addParam(const char *paramName, int val); + PROJ_DLL void addParam(const std::string ¶mName, int val); + PROJ_DLL void addParam(const char *paramName, const char *val); + PROJ_DLL void addParam(const char *paramName, const std::string &val); + PROJ_DLL void addParam(const std::string ¶mName, const char *val); + PROJ_DLL void addParam(const std::string ¶mName, + const std::string &val); + PROJ_DLL void addParam(const char *paramName, + const std::vector<double> &vals); + + PROJ_INTERNAL std::set<std::string> getUsedGridNames() const; + + PROJ_INTERNAL void setTOWGS84Parameters(const std::vector<double> ¶ms); + PROJ_INTERNAL const std::vector<double> &getTOWGS84Parameters() const; + + PROJ_INTERNAL void setVDatumExtension(const std::string &filename); + PROJ_INTERNAL const std::string &getVDatumExtension() const; + + PROJ_INTERNAL void setHDatumExtension(const std::string &filename); + PROJ_INTERNAL const std::string &getHDatumExtension() const; + + PROJ_INTERNAL void setOmitProjLongLatIfPossible(bool omit); + PROJ_INTERNAL bool omitProjLongLatIfPossible() const; + + PROJ_INTERNAL void setOmitZUnitConversion(bool omit); + PROJ_INTERNAL bool omitZUnitConversion() const; + + PROJ_INTERNAL const DatabaseContextPtr &databaseContext() const; + + PROJ_INTERNAL Convention convention() const; + + //! @endcond + + protected: + //! @cond Doxygen_Suppress + PROJ_INTERNAL explicit PROJStringFormatter( + Convention conventionIn, const DatabaseContextPtr &dbContext); + PROJStringFormatter(const PROJStringFormatter &other) = delete; + + INLINED_MAKE_UNIQUE + //! @endcond + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +/** \brief Exception possibly thrown by IWKTExportable::exportToWKT() or + * IPROJStringExportable::exportToPROJString(). */ +class PROJ_GCC_DLL FormattingException : public util::Exception { + public: + //! @cond Doxygen_Suppress + PROJ_INTERNAL explicit FormattingException(const char *message); + PROJ_INTERNAL explicit FormattingException(const std::string &message); + PROJ_DLL FormattingException(const FormattingException &other); + PROJ_DLL virtual ~FormattingException() override; + + PROJ_INTERNAL static void Throw(const char *msg) PROJ_NO_RETURN; + PROJ_INTERNAL static void Throw(const std::string &msg) PROJ_NO_RETURN; + //! @endcond +}; + +// --------------------------------------------------------------------------- + +/** \brief Exception possibly thrown by WKTNode::createFrom() or + * WKTParser::createFromWKT(). */ +class PROJ_GCC_DLL ParsingException : public util::Exception { + public: + //! @cond Doxygen_Suppress + PROJ_INTERNAL explicit ParsingException(const char *message); + PROJ_INTERNAL explicit ParsingException(const std::string &message); + PROJ_DLL ParsingException(const ParsingException &other); + PROJ_DLL virtual ~ParsingException() override; + //! @endcond +}; + +// --------------------------------------------------------------------------- + +/** \brief Interface for an object that can be exported to WKT. */ +class PROJ_GCC_DLL IWKTExportable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL virtual ~IWKTExportable(); + //! @endcond + + /** Builds a WKT representation. May throw a FormattingException */ + PROJ_DLL std::string + exportToWKT(WKTFormatter *formatter) const; // throw(FormattingException) + + PROJ_PRIVATE : + + //! @cond Doxygen_Suppress + PROJ_INTERNAL virtual void + _exportToWKT( + WKTFormatter *formatter) const = 0; // throw(FormattingException) + //! @endcond +}; + +// --------------------------------------------------------------------------- + +class IPROJStringExportable; +/** Shared pointer of IPROJStringExportable. */ +using IPROJStringExportablePtr = std::shared_ptr<IPROJStringExportable>; +/** Non-null shared pointer of IPROJStringExportable. */ +using IPROJStringExportableNNPtr = util::nn<IPROJStringExportablePtr>; + +/** \brief Interface for an object that can be exported to a PROJ string. */ +class PROJ_GCC_DLL IPROJStringExportable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL virtual ~IPROJStringExportable(); + //! @endcond + + /** \brief Builds a PROJ string representation. + * + * <ul> + * <li>For PROJStringFormatter::Convention::PROJ_5 (the default), return + * strings that generally express PROJ.5 pipelines. + * <ul> + * <li>For a crs::GeographicCRS, returns a string expressing the + * transformation from geographic coordinates expressed in radian with + * longitude, latitude order, and with respect to the international + * reference meridian, into geographic coordinates expressed in the units + * and axis order of the CRS, taking into account its prime meridian.</li> + * <li>For a geocentric crs::GeodeticCRS, returns a string expressing the + * transformation from geographic coordinates expressed in radian with + * longitude, latitude order, and with respect to the international + * reference meridian, into geocentric coordinates.</li> + * <li>For a + * crs::ProjectedCRS / crs::DerivedGeographicCRS / crs::DerivedProjectedCRS, + * returns a string expressing the transformation from the base CRS to the + * CRS</li> + * <li>For a crs::BoundCRS, throws a FormattingException.</li> + * <li>For operation::CoordinateTransformations, returns a PROJ + * pipeline.</li> + * </ul> + * + * <li>For PROJStringFormatter::Convention::PROJ_4, format a string + * compatible with the OGRSpatialReference::exportToProj4() of GDAL + * <=2.3. + * <ul> + * <li>For a crs::GeographicCRS, returns a proj=longlat string, with + * ellipsoid / datum / prime meridian information, ignoring axis order + * and unit information.</li> + * <li>For a geocentric crs::GeodeticCRS, returns the transformation from + * geographic coordinates into geocentric coordinates.</li> + * <li>For a crs::ProjectedCRS, returns the projection method, ignoring + * axis order.</li> + * <li>For a crs::BoundCRS, returns the PROJ string of its source/base CRS, + * amended with towgs84 / nadgrids parameter when the deriving conversion + * can be expressed in that way.</li> + * </ul> + * </li> + * + * </ul> + * + * @param formatter PROJ string formatter. + * @return a PROJ string. + * @throw FormattingException */ + PROJ_DLL std::string exportToPROJString( + PROJStringFormatter *formatter) const; // throw(FormattingException) + + PROJ_PRIVATE : + + //! @cond Doxygen_Suppress + PROJ_INTERNAL virtual void + _exportToPROJString(PROJStringFormatter *formatter) + const = 0; // throw(FormattingException) + //! @endcond +}; + +// --------------------------------------------------------------------------- + +class WKTNode; +/** Unique pointer of WKTNode. */ +using WKTNodePtr = std::unique_ptr<WKTNode>; +/** Non-null unique pointer of WKTNode. */ +using WKTNodeNNPtr = util::nn<WKTNodePtr>; + +/** \brief Node in the tree-splitted WKT representation. + */ +class PROJ_GCC_DLL WKTNode { + public: + PROJ_DLL explicit WKTNode(const std::string &valueIn); + //! @cond Doxygen_Suppress + PROJ_DLL ~WKTNode(); + //! @endcond + + PROJ_DLL const std::string &value() const; + PROJ_DLL const std::vector<WKTNodeNNPtr> &children() const; + + PROJ_DLL void addChild(WKTNodeNNPtr &&child); + PROJ_DLL const WKTNodePtr &lookForChild(const std::string &childName, + int occurrence = 0) const noexcept; + PROJ_DLL int countChildrenOfName(const std::string &childName) const + noexcept; + + PROJ_DLL std::string toString() const; + + PROJ_DLL static WKTNodeNNPtr createFrom(const std::string &wkt, + size_t indexStart = 0); + + protected: + PROJ_INTERNAL static WKTNodeNNPtr + createFrom(const std::string &wkt, size_t indexStart, int recLevel, + size_t &indexEnd); // throw(ParsingException) + + private: + friend class WKTParser; + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +PROJ_DLL util::BaseObjectNNPtr +createFromUserInput(const std::string &text, + const DatabaseContextPtr &dbContext); + +// --------------------------------------------------------------------------- + +/** \brief Parse a WKT string into the appropriate suclass of util::BaseObject. + */ +class PROJ_GCC_DLL WKTParser { + public: + PROJ_DLL WKTParser(); + //! @cond Doxygen_Suppress + PROJ_DLL ~WKTParser(); + //! @endcond + + PROJ_DLL WKTParser & + attachDatabaseContext(const DatabaseContextPtr &dbContext); + + PROJ_DLL WKTParser &setStrict(bool strict); + PROJ_DLL std::vector<std::string> warningList() const; + + PROJ_DLL util::BaseObjectNNPtr + createFromWKT(const std::string &wkt); // throw(ParsingException) + + /** Guessed WKT "dialect" */ + enum class PROJ_MSVC_DLL WKTGuessedDialect { + /** \ref WKT2_2018 */ + WKT2_2018, + /** \ref WKT2_2015 */ + WKT2_2015, + /** \ref WKT1 */ + WKT1_GDAL, + /** ESRI variant of WKT1 */ + WKT1_ESRI, + /** Not WKT / unrecognized */ + NOT_WKT + }; + + // cppcheck-suppress functionStatic + PROJ_DLL WKTGuessedDialect guessDialect(const std::string &wkt) noexcept; + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +/** \brief Parse a PROJ string into the appropriate suclass of util::BaseObject. + */ +class PROJ_GCC_DLL PROJStringParser { + public: + PROJ_DLL PROJStringParser(); + //! @cond Doxygen_Suppress + PROJ_DLL ~PROJStringParser(); + //! @endcond + + PROJ_DLL PROJStringParser & + attachDatabaseContext(const DatabaseContextPtr &dbContext); + + PROJ_DLL std::vector<std::string> warningList() const; + + PROJ_DLL util::BaseObjectNNPtr createFromPROJString( + const std::string &projString); // throw(ParsingException) + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +/** \brief Database context. + * + * A database context should be used only by one thread at a time. + */ +class PROJ_GCC_DLL DatabaseContext { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~DatabaseContext(); + //! @endcond + + PROJ_DLL static DatabaseContextNNPtr create(); + + PROJ_DLL static DatabaseContextNNPtr + create(const std::string &databasePath); + + PROJ_DLL static DatabaseContextNNPtr + create(const std::string &databasePath, + const std::vector<std::string> &auxiliaryDatabasePaths); + + PROJ_DLL const std::string &getPath() const; + + PROJ_DLL std::set<std::string> getAuthorities() const; + + PROJ_DLL std::vector<std::string> getDatabaseStructure() const; + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + PROJ_DLL void * + getSqliteHandle() const; + + PROJ_DLL static DatabaseContextNNPtr create(void *sqlite_handle); + + PROJ_INTERNAL void attachPJContext(void *pjCtxt); + + PROJ_INTERNAL bool lookForGridAlternative(const std::string &officialName, + std::string &projFilename, + std::string &projFormat, + bool &inverse) const; + + PROJ_DLL bool lookForGridInfo(const std::string &projFilename, + std::string &fullFilename, + std::string &packageName, std::string &url, + bool &directDownload, bool &openLicense, + bool &gridAvailable) const; + + PROJ_INTERNAL std::string + getAliasFromOfficialName(const std::string &officialName, + const std::string &tableName, + const std::string &source) const; + + PROJ_INTERNAL bool isKnownName(const std::string &name, + const std::string &tableName) const; + + //! @endcond + + protected: + PROJ_INTERNAL DatabaseContext(); + INLINED_MAKE_SHARED + PROJ_FRIEND(AuthorityFactory); + + private: + PROJ_OPAQUE_PRIVATE_DATA + DatabaseContext(const DatabaseContext &) = delete; + DatabaseContext &operator=(const DatabaseContext &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class AuthorityFactory; +/** Shared pointer of AuthorityFactory. */ +using AuthorityFactoryPtr = std::shared_ptr<AuthorityFactory>; +/** Non-null shared pointer of AuthorityFactory. */ +using AuthorityFactoryNNPtr = util::nn<AuthorityFactoryPtr>; + +/** \brief Builds object from an authority database. + * + * A AuthorityFactory should be used only by one thread at a time. + * + * \remark Implements [AuthorityFactory] + * (http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/AuthorityFactory.html) + * from \ref GeoAPI + */ +class PROJ_GCC_DLL AuthorityFactory { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~AuthorityFactory(); + //! @endcond + + PROJ_DLL util::BaseObjectNNPtr createObject(const std::string &code) const; + + PROJ_DLL common::UnitOfMeasureNNPtr + createUnitOfMeasure(const std::string &code) const; + + PROJ_DLL metadata::ExtentNNPtr createExtent(const std::string &code) const; + + PROJ_DLL datum::PrimeMeridianNNPtr + createPrimeMeridian(const std::string &code) const; + + PROJ_DLL std::string identifyBodyFromSemiMajorAxis(double a, + double tolerance) const; + + PROJ_DLL datum::EllipsoidNNPtr + createEllipsoid(const std::string &code) const; + + PROJ_DLL datum::DatumNNPtr createDatum(const std::string &code) const; + + PROJ_DLL datum::GeodeticReferenceFrameNNPtr + createGeodeticDatum(const std::string &code) const; + + PROJ_DLL datum::VerticalReferenceFrameNNPtr + createVerticalDatum(const std::string &code) const; + + PROJ_DLL cs::CoordinateSystemNNPtr + createCoordinateSystem(const std::string &code) const; + + PROJ_DLL crs::GeodeticCRSNNPtr + createGeodeticCRS(const std::string &code) const; + + PROJ_DLL crs::GeographicCRSNNPtr + createGeographicCRS(const std::string &code) const; + + PROJ_DLL crs::VerticalCRSNNPtr + createVerticalCRS(const std::string &code) const; + + PROJ_DLL operation::ConversionNNPtr + createConversion(const std::string &code) const; + + PROJ_DLL crs::ProjectedCRSNNPtr + createProjectedCRS(const std::string &code) const; + + PROJ_DLL crs::CompoundCRSNNPtr + createCompoundCRS(const std::string &code) const; + + PROJ_DLL crs::CRSNNPtr + createCoordinateReferenceSystem(const std::string &code) const; + + PROJ_DLL operation::CoordinateOperationNNPtr + createCoordinateOperation(const std::string &code, + bool usePROJAlternativeGridNames) const; + + PROJ_DLL std::vector<operation::CoordinateOperationNNPtr> + createFromCoordinateReferenceSystemCodes( + const std::string &sourceCRSCode, + const std::string &targetCRSCode) const; + + PROJ_DLL const std::string &getAuthority() PROJ_CONST_DECL; + + /** Object type. */ + enum class ObjectType { + /** Object of type datum::PrimeMeridian */ + PRIME_MERIDIAN, + /** Object of type datum::Ellipsoid */ + ELLIPSOID, + /** Object of type datum::Datum (and derived classes) */ + DATUM, + /** Object of type datum::GeodeticReferenceFrame (and derived + classes) */ + GEODETIC_REFERENCE_FRAME, + /** Object of type datum::VerticalReferenceFrame (and derived + classes) */ + VERTICAL_REFERENCE_FRAME, + /** Object of type crs::CRS (and derived classes) */ + CRS, + /** Object of type crs::GeodeticCRS (and derived classes) */ + GEODETIC_CRS, + /** GEODETIC_CRS of type geocentric */ + GEOCENTRIC_CRS, + /** Object of type crs::GeographicCRS (and derived classes) */ + GEOGRAPHIC_CRS, + /** GEOGRAPHIC_CRS of type Geographic 2D */ + GEOGRAPHIC_2D_CRS, + /** GEOGRAPHIC_CRS of type Geographic 3D */ + GEOGRAPHIC_3D_CRS, + /** Object of type crs::ProjectedCRS (and derived classes) */ + PROJECTED_CRS, + /** Object of type crs::VerticalCRS (and derived classes) */ + VERTICAL_CRS, + /** Object of type crs::CompoundCRS (and derived classes) */ + COMPOUND_CRS, + /** Object of type operation::CoordinateOperation (and derived + classes) */ + COORDINATE_OPERATION, + /** Object of type operation::Conversion (and derived classes) */ + CONVERSION, + /** Object of type operation::Transformation (and derived classes) + */ + TRANSFORMATION, + /** Object of type operation::ConcatenatedOperation (and derived + classes) */ + CONCATENATED_OPERATION, + }; + + PROJ_DLL std::set<std::string> + getAuthorityCodes(const ObjectType &type, + bool allowDeprecated = true) const; + + PROJ_DLL std::string getDescriptionText(const std::string &code) const; + + // non-standard + PROJ_DLL static AuthorityFactoryNNPtr + create(const DatabaseContextNNPtr &context, + const std::string &authorityName); + + PROJ_DLL const DatabaseContextNNPtr &databaseContext() const; + + PROJ_DLL std::vector<operation::CoordinateOperationNNPtr> + createFromCoordinateReferenceSystemCodes( + const std::string &sourceCRSAuthName, const std::string &sourceCRSCode, + const std::string &targetCRSAuthName, const std::string &targetCRSCode, + bool usePROJAlternativeGridNames, bool discardIfMissingGrid) const; + + PROJ_DLL std::vector<operation::CoordinateOperationNNPtr> + createFromCRSCodesWithIntermediates( + const std::string &sourceCRSAuthName, const std::string &sourceCRSCode, + const std::string &targetCRSAuthName, const std::string &targetCRSCode, + bool usePROJAlternativeGridNames, bool discardIfMissingGrid, + const std::vector<std::pair<std::string, std::string>> + &intermediateCRSAuthCodes) const; + + PROJ_DLL std::string getOfficialNameFromAlias( + const std::string &aliasedName, const std::string &tableName, + const std::string &source, std::string &outTableName, + std::string &outAuthName, std::string &outCode) const; + + PROJ_DLL std::list<common::IdentifiedObjectNNPtr> + createObjectsFromName(const std::string &name, + const std::vector<ObjectType> &allowedObjectTypes = + std::vector<ObjectType>(), + bool approximateMatch = true, + size_t limitResultCount = 0); + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + + PROJ_INTERNAL std::list<datum::EllipsoidNNPtr> + createEllipsoidFromExisting( + const datum::EllipsoidNNPtr &ellipsoid) const; + + PROJ_INTERNAL std::list<crs::GeodeticCRSNNPtr> + createGeodeticCRSFromDatum(const std::string &datum_auth_name, + const std::string &datum_code, + const std::string &geodetic_crs_type) const; + + PROJ_INTERNAL std::list<crs::GeodeticCRSNNPtr> + createGeodeticCRSFromEllipsoid(const std::string &ellipsoid_auth_name, + const std::string &ellipsoid_code, + const std::string &geodetic_crs_type) const; + + PROJ_INTERNAL std::list<crs::ProjectedCRSNNPtr> + createProjectedCRSFromExisting(const crs::ProjectedCRSNNPtr &crs) const; + + PROJ_INTERNAL std::list<crs::CompoundCRSNNPtr> + createCompoundCRSFromExisting(const crs::CompoundCRSNNPtr &crs) const; + //! @endcond + + protected: + PROJ_INTERNAL AuthorityFactory(const DatabaseContextNNPtr &context, + const std::string &authorityName); + + PROJ_INTERNAL crs::CRSNNPtr + createCoordinateReferenceSystem(const std::string &code, + bool allowCompound) const; + + PROJ_INTERNAL crs::GeodeticCRSNNPtr + createGeodeticCRS(const std::string &code, bool geographicOnly) const; + + PROJ_INTERNAL operation::CoordinateOperationNNPtr + createCoordinateOperation(const std::string &code, bool allowConcatenated, + bool usePROJAlternativeGridNames) const; + + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +/** \brief Exception thrown when a factory can't create an instance of the + * requested object. + */ +class PROJ_GCC_DLL FactoryException : public util::Exception { + public: + //! @cond Doxygen_Suppress + PROJ_DLL explicit FactoryException(const char *message); + PROJ_DLL explicit FactoryException(const std::string &message); + PROJ_DLL + FactoryException(const FactoryException &other); + PROJ_DLL ~FactoryException() override; + //! @endcond +}; + +// --------------------------------------------------------------------------- + +/** \brief Exception thrown when an authority factory can't find the requested + * authority code. + */ +class PROJ_GCC_DLL NoSuchAuthorityCodeException : public FactoryException { + public: + //! @cond Doxygen_Suppress + PROJ_DLL explicit NoSuchAuthorityCodeException(const std::string &message, + const std::string &authority, + const std::string &code); + PROJ_DLL + NoSuchAuthorityCodeException(const NoSuchAuthorityCodeException &other); + PROJ_DLL ~NoSuchAuthorityCodeException() override; + //! @endcond + + PROJ_DLL const std::string &getAuthority() const; + PROJ_DLL const std::string &getAuthorityCode() const; + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +} // namespace io + +NS_PROJ_END + +#endif // IO_HH_INCLUDED diff --git a/include/proj/metadata.hpp b/include/proj/metadata.hpp new file mode 100644 index 00000000..fc86693d --- /dev/null +++ b/include/proj/metadata.hpp @@ -0,0 +1,458 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef METADATA_HH_INCLUDED +#define METADATA_HH_INCLUDED + +#include <memory> +#include <string> +#include <vector> + +#include "io.hpp" +#include "util.hpp" + +NS_PROJ_START + +namespace common { +class UnitOfMeasure; +using UnitOfMeasurePtr = std::shared_ptr<UnitOfMeasure>; +using UnitOfMeasureNNPtr = util::nn<UnitOfMeasurePtr>; +class IdentifiedObject; +} // namespace common + +/** osgeo.proj.metadata namespace + * + * \brief Common classes from \ref ISO_19115 standard + */ +namespace metadata { + +// --------------------------------------------------------------------------- + +/** \brief Standardized resource reference. + * + * Local names are names which are directly accessible to and maintained by a + * NameSpace within which they are local, indicated by the scope. + * + * \remark Simplified version of [Citation] + * (http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/citation/Citation.html) + * from \ref GeoAPI + */ +class PROJ_GCC_DLL Citation : public util::BaseObject { + public: + PROJ_DLL explicit Citation(const std::string &titleIn); + //! @cond Doxygen_Suppress + PROJ_DLL Citation(); + PROJ_DLL Citation(const Citation &other); + PROJ_DLL ~Citation(); + //! @endcond + + PROJ_DLL const util::optional<std::string> &title() PROJ_CONST_DECL; + + protected: + PROJ_FRIEND_OPTIONAL(Citation); + PROJ_INTERNAL Citation &operator=(const Citation &other); + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +class GeographicExtent; +/** Shared pointer of GeographicExtent. */ +using GeographicExtentPtr = std::shared_ptr<GeographicExtent>; +/** Non-null shared pointer of GeographicExtent. */ +using GeographicExtentNNPtr = util::nn<GeographicExtentPtr>; + +/** \brief Base interface for geographic area of the dataset. + * + * \remark Simplified version of [GeographicExtent] + * (http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/extent/GeographicExtent.html) + * from \ref GeoAPI + */ +class PROJ_GCC_DLL GeographicExtent : public util::BaseObject, + public util::IComparable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~GeographicExtent() override; + //! @endcond + + // GeoAPI has a getInclusion() method. We assume that it is included for our + // use + + //! @cond Doxygen_Suppress + PROJ_INTERNAL bool _isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override = 0; + //! @endcond + + /** \brief Returns whether this extent contains the other one. */ + PROJ_DLL virtual bool + contains(const GeographicExtentNNPtr &other) const = 0; + + /** \brief Returns whether this extent intersects the other one. */ + PROJ_DLL virtual bool + intersects(const GeographicExtentNNPtr &other) const = 0; + + /** \brief Returns the intersection of this extent with another one. */ + PROJ_DLL virtual GeographicExtentPtr + intersection(const GeographicExtentNNPtr &other) const = 0; + + protected: + PROJ_INTERNAL GeographicExtent(); + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +class GeographicBoundingBox; +/** Shared pointer of GeographicBoundingBox. */ +using GeographicBoundingBoxPtr = std::shared_ptr<GeographicBoundingBox>; +/** Non-null shared pointer of GeographicBoundingBox. */ +using GeographicBoundingBoxNNPtr = util::nn<GeographicBoundingBoxPtr>; + +/** \brief Geographic position of the dataset. + * + * This is only an approximate so specifying the co-ordinate reference system is + * unnecessary. + * + * \remark Implements [GeographicBoundingBox] + * (http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/extent/GeographicBoundingBox.html) + * from \ref GeoAPI + */ +class PROJ_GCC_DLL GeographicBoundingBox : public GeographicExtent { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~GeographicBoundingBox() override; + //! @endcond + + PROJ_DLL double westBoundLongitude() PROJ_CONST_DECL; + PROJ_DLL double southBoundLatitude() PROJ_CONST_DECL; + PROJ_DLL double eastBoundLongitude() PROJ_CONST_DECL; + PROJ_DLL double northBoundLatitude() PROJ_CONST_DECL; + + PROJ_DLL static GeographicBoundingBoxNNPtr + create(double west, double south, double east, double north); + + //! @cond Doxygen_Suppress + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + //! @endcond + + PROJ_INTERNAL bool + contains(const GeographicExtentNNPtr &other) const override; + + PROJ_INTERNAL bool + intersects(const GeographicExtentNNPtr &other) const override; + + PROJ_INTERNAL GeographicExtentPtr + intersection(const GeographicExtentNNPtr &other) const override; + + protected: + PROJ_INTERNAL GeographicBoundingBox(double west, double south, double east, + double north); + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +class TemporalExtent; +/** Shared pointer of TemporalExtent. */ +using TemporalExtentPtr = std::shared_ptr<TemporalExtent>; +/** Non-null shared pointer of TemporalExtent. */ +using TemporalExtentNNPtr = util::nn<TemporalExtentPtr>; + +/** \brief Time period covered by the content of the dataset. + * + * \remark Simplified version of [TemporalExtent] + * (http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/extent/TemporalExtent.html) + * from \ref GeoAPI + */ +class PROJ_GCC_DLL TemporalExtent : public util::BaseObject, + public util::IComparable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~TemporalExtent() override; + //! @endcond + + PROJ_DLL const std::string &start() PROJ_CONST_DECL; + PROJ_DLL const std::string &stop() PROJ_CONST_DECL; + + PROJ_DLL static TemporalExtentNNPtr create(const std::string &start, + const std::string &stop); + + //! @cond Doxygen_Suppress + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + //! @endcond + + PROJ_DLL bool contains(const TemporalExtentNNPtr &other) const; + + PROJ_DLL bool intersects(const TemporalExtentNNPtr &other) const; + + protected: + PROJ_INTERNAL TemporalExtent(const std::string &start, + const std::string &stop); + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +class VerticalExtent; +/** Shared pointer of VerticalExtent. */ +using VerticalExtentPtr = std::shared_ptr<VerticalExtent>; +/** Non-null shared pointer of VerticalExtent. */ +using VerticalExtentNNPtr = util::nn<VerticalExtentPtr>; + +/** \brief Vertical domain of dataset. + * + * \remark Simplified version of [VerticalExtent] + * (http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/extent/VerticalExtent.html) + * from \ref GeoAPI + */ +class PROJ_GCC_DLL VerticalExtent : public util::BaseObject, + public util::IComparable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~VerticalExtent() override; + //! @endcond + + PROJ_DLL double minimumValue() PROJ_CONST_DECL; + PROJ_DLL double maximumValue() PROJ_CONST_DECL; + PROJ_DLL common::UnitOfMeasureNNPtr &unit() PROJ_CONST_DECL; + + PROJ_DLL static VerticalExtentNNPtr + create(double minimumValue, double maximumValue, + const common::UnitOfMeasureNNPtr &unitIn); + + //! @cond Doxygen_Suppress + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + //! @endcond + + PROJ_DLL bool contains(const VerticalExtentNNPtr &other) const; + + PROJ_DLL bool intersects(const VerticalExtentNNPtr &other) const; + + protected: + PROJ_INTERNAL VerticalExtent(double minimumValue, double maximumValue, + const common::UnitOfMeasureNNPtr &unitIn); + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +class Extent; +/** Shared pointer of Extent. */ +using ExtentPtr = std::shared_ptr<Extent>; +/** Non-null shared pointer of Extent. */ +using ExtentNNPtr = util::nn<ExtentPtr>; + +/** \brief Information about spatial, vertical, and temporal extent. + * + * \remark Simplified version of [Extent] + * (http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/extent/Extent.html) + * from \ref GeoAPI + */ +class PROJ_GCC_DLL Extent : public util::BaseObject, public util::IComparable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL Extent(const Extent &other); + PROJ_DLL ~Extent() override; + //! @endcond + + PROJ_DLL const util::optional<std::string> &description() PROJ_CONST_DECL; + PROJ_DLL const std::vector<GeographicExtentNNPtr> & + geographicElements() PROJ_CONST_DECL; + PROJ_DLL const std::vector<TemporalExtentNNPtr> & + temporalElements() PROJ_CONST_DECL; + PROJ_DLL const std::vector<VerticalExtentNNPtr> & + verticalElements() PROJ_CONST_DECL; + + PROJ_DLL static ExtentNNPtr + create(const util::optional<std::string> &descriptionIn, + const std::vector<GeographicExtentNNPtr> &geographicElementsIn, + const std::vector<VerticalExtentNNPtr> &verticalElementsIn, + const std::vector<TemporalExtentNNPtr> &temporalElementsIn); + + PROJ_DLL static ExtentNNPtr + createFromBBOX(double west, double south, double east, double north, + const util::optional<std::string> &descriptionIn = + util::optional<std::string>()); + + //! @cond Doxygen_Suppress + PROJ_INTERNAL bool + _isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion = + util::IComparable::Criterion::STRICT) const override; + //! @endcond + + PROJ_DLL bool contains(const ExtentNNPtr &other) const; + + PROJ_DLL bool intersects(const ExtentNNPtr &other) const; + + PROJ_DLL ExtentPtr intersection(const ExtentNNPtr &other) const; + + PROJ_DLL static const ExtentNNPtr WORLD; + + protected: + PROJ_INTERNAL Extent(); + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + Extent &operator=(const Extent &other) = delete; +}; + +// --------------------------------------------------------------------------- + +class Identifier; +/** Shared pointer of Identifier. */ +using IdentifierPtr = std::shared_ptr<Identifier>; +/** Non-null shared pointer of Identifier. */ +using IdentifierNNPtr = util::nn<IdentifierPtr>; + +/** \brief Value uniquely identifying an object within a namespace. + * + * \remark Implements Identifier as described in \ref ISO_19111_2018 but which + * originates from \ref ISO_19115 + */ +class PROJ_GCC_DLL Identifier : public util::BaseObject, + public io::IWKTExportable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL Identifier(const Identifier &other); + PROJ_DLL ~Identifier() override; + //! @endcond + + PROJ_DLL static IdentifierNNPtr + create(const std::string &codeIn = std::string(), + const util::PropertyMap &properties = + util::PropertyMap()); // throw(InvalidValueTypeException) + + PROJ_DLL static const std::string AUTHORITY_KEY; + PROJ_DLL static const std::string CODE_KEY; + PROJ_DLL static const std::string CODESPACE_KEY; + PROJ_DLL static const std::string VERSION_KEY; + PROJ_DLL static const std::string DESCRIPTION_KEY; + PROJ_DLL static const std::string URI_KEY; + + PROJ_DLL static const std::string EPSG; + PROJ_DLL static const std::string OGC; + + PROJ_DLL const util::optional<Citation> &authority() PROJ_CONST_DECL; + PROJ_DLL const std::string &code() PROJ_CONST_DECL; + PROJ_DLL const util::optional<std::string> &codeSpace() PROJ_CONST_DECL; + PROJ_DLL const util::optional<std::string> &version() PROJ_CONST_DECL; + PROJ_DLL const util::optional<std::string> &description() PROJ_CONST_DECL; + PROJ_DLL const util::optional<std::string> &uri() PROJ_CONST_DECL; + + PROJ_DLL static bool isEquivalentName(const char *a, + const char *b) noexcept; + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + PROJ_INTERNAL static std::string + canonicalizeName(const std::string &str); + + PROJ_INTERNAL void _exportToWKT(io::WKTFormatter *formatter) + const override; // throw(io::FormattingException) + + //! @endcond + + protected: + PROJ_INTERNAL explicit Identifier(const std::string &codeIn, + const util::PropertyMap &properties); + + PROJ_FRIEND_OPTIONAL(Identifier); + INLINED_MAKE_SHARED + Identifier &operator=(const Identifier &other) = delete; + + PROJ_FRIEND(common::IdentifiedObject); + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +class PositionalAccuracy; +/** Shared pointer of PositionalAccuracy. */ +using PositionalAccuracyPtr = std::shared_ptr<PositionalAccuracy>; +/** Non-null shared pointer of PositionalAccuracy. */ +using PositionalAccuracyNNPtr = util::nn<PositionalAccuracyPtr>; + +/** \brief Accuracy of the position of features. + * + * \remark Simplified version of [PositionalAccuracy] + * (http://www.geoapi.org/3.0/javadoc/org/opengis/metadata/quality/PositionalAccuracy.html) + * from \ref GeoAPI, which originates from \ref ISO_19115 + */ +class PROJ_GCC_DLL PositionalAccuracy : public util::BaseObject { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~PositionalAccuracy() override; + //! @endcond + + PROJ_DLL const std::string &value() PROJ_CONST_DECL; + + PROJ_DLL static PositionalAccuracyNNPtr create(const std::string &valueIn); + + protected: + PROJ_INTERNAL explicit PositionalAccuracy(const std::string &valueIn); + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + PositionalAccuracy(const PositionalAccuracy &other) = delete; + PositionalAccuracy &operator=(const PositionalAccuracy &other) = delete; +}; + +} // namespace metadata + +NS_PROJ_END + +#endif // METADATA_HH_INCLUDED diff --git a/include/proj/nn.hpp b/include/proj/nn.hpp new file mode 100644 index 00000000..4b17a17d --- /dev/null +++ b/include/proj/nn.hpp @@ -0,0 +1,385 @@ +#pragma once + +/* + * Copyright (c) 2015 Dropbox, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <cassert> +#include <cstdlib> +#include <functional> +#include <memory> +#include <type_traits> + +namespace dropbox { +namespace oxygen { + +// Marker type and value for use by nn below. +struct i_promise_i_checked_for_null_t {}; +static constexpr i_promise_i_checked_for_null_t i_promise_i_checked_for_null{}; + +// Helper to get the type pointed to by a raw or smart pointer. This can be +// explicitly +// specialized if need be to provide compatibility with user-defined smart +// pointers. +namespace nn_detail { +template <typename T> struct element_type { + using type = typename T::element_type; +}; +template <typename Pointee> struct element_type<Pointee *> { + using type = Pointee; +}; +} + +template <typename PtrType> class nn; + +// Trait to check whether a given type is a non-nullable pointer +template <typename T> struct is_nn : public std::false_type {}; +template <typename PtrType> +struct is_nn<nn<PtrType>> : public std::true_type {}; + +/* nn<PtrType> + * + * Wrapper around a pointer that is guaranteed to not be null. This works with + * raw pointers + * as well as any smart pointer: nn<int *>, nn<shared_ptr<DbxTable>>, + * nn<unique_ptr<Foo>>, + * etc. An nn<PtrType> can be used just like a PtrType. + * + * An nn<PtrType> can be constructed from another nn<PtrType>, if the underlying + * type would + * allow such construction. For example, nn<shared_ptr<PtrType>> can be copied + * and moved, but + * nn<unique_ptr<PtrType>> can only be moved; an nn<unique_ptr<PtrType>> can be + * explicitly + * (but not implicitly) created from an nn<PtrType*>; implicit upcasts are + * allowed; and so on. + * + * Similarly, non-nullable pointers can be compared with regular or other + * non-nullable + * pointers, using the same rules as the underlying pointer types. + * + * This module also provides helpers for creating an nn<PtrType> from operations + * that would + * always return a non-null pointer: nn_make_unique, nn_make_shared, + * nn_shared_from_this, and + * nn_addr (a replacement for operator&). + * + * We abbreviate nn<unique_ptr> as nn_unique_ptr - it's a little more readable. + * Likewise, + * nn<shared_ptr> can be written as nn_shared_ptr. + * + * Finally, we define macros NN_CHECK_ASSERT and NN_CHECK_THROW, to convert a + * nullable pointer + * to a non-nullable pointer. At Dropbox, these use customized error-handling + * infrastructure + * and are in a separate file. We've included sample implementations here. + */ +template <typename PtrType> class nn { +public: + static_assert(!is_nn<PtrType>::value, "nn<nn<T>> is disallowed"); + + using element_type = typename nn_detail::element_type<PtrType>::type; + + // Pass through calls to operator* and operator-> transparently + element_type &operator*() const { return *ptr; } + element_type *operator->() const { return &*ptr; } + + // Expose the underlying PtrType + operator const PtrType &() const & { return ptr; } + operator PtrType &&() && { return std::move(ptr); } + + // Trying to use the assignment operator to assign a nn<PtrType> to a PtrType + // using the + // above conversion functions hits an ambiguous resolution bug in clang: + // http://llvm.org/bugs/show_bug.cgi?id=18359 + // While that exists, we can use these as simple ways of accessing the + // underlying type + // (instead of workarounds calling the operators explicitly or adding a + // constructor call). + const PtrType &as_nullable() const & { return ptr; } + PtrType &&as_nullable() && { return std::move(ptr); } + + // Can't convert to bool (that would be silly). The explicit delete results in + // "value of type 'nn<...>' is not contextually convertible to 'bool'", rather + // than + // "no viable conversion", which is a bit more clear. + operator bool() const = delete; + + // Explicitly deleted constructors. These help produce clearer error messages, + // as trying + // to use them will result in clang printing the whole line, including the + // comment. + nn(std::nullptr_t) = delete; // nullptr is not allowed here + nn &operator=(std::nullptr_t) = delete; // nullptr is not allowed here + nn(PtrType) = delete; // must use NN_CHECK_ASSERT or NN_CHECK_THROW + nn &operator=(PtrType) = delete; // must use NN_CHECK_ASSERT or NN_CHECK_THROW + //PROJ_DLL ~nn(); + + // Semi-private constructor for use by NN_CHECK_ macros. + explicit nn(i_promise_i_checked_for_null_t, const PtrType &arg) noexcept : ptr(arg) { + } + explicit nn(i_promise_i_checked_for_null_t, PtrType &&arg) noexcept + : ptr(std::move(arg)) { + } + + // Type-converting move and copy constructor. We have four separate cases + // here, for + // implicit and explicit move and copy. + template <typename OtherType, + typename std::enable_if< + std::is_constructible<PtrType, OtherType>::value && + !std::is_convertible<OtherType, PtrType>::value, + int>::type = 0> + explicit nn(const nn<OtherType> &other) + : ptr(other.operator const OtherType &()) {} + + template <typename OtherType, + typename std::enable_if< + std::is_constructible<PtrType, OtherType>::value && + !std::is_convertible<OtherType, PtrType>::value && + !std::is_pointer<OtherType>::value, + int>::type = 0> + explicit nn(nn<OtherType> &&other) + : ptr(std::move(other).operator OtherType &&()) {} + + template <typename OtherType, + typename std::enable_if< + std::is_convertible<OtherType, PtrType>::value, int>::type = 0> + nn(const nn<OtherType> &other) : ptr(other.operator const OtherType &()) {} + + template < + typename OtherType, + typename std::enable_if<std::is_convertible<OtherType, PtrType>::value && + !std::is_pointer<OtherType>::value, + int>::type = 0> + nn(nn<OtherType> &&other) : ptr(std::move(other).operator OtherType &&()) {} + + // A type-converting move and copy assignment operator aren't necessary; + // writing + // "base_ptr = derived_ptr;" will run the type-converting constructor followed + // by the + // implicit move assignment operator. + + // Two-argument constructor, designed for use with the shared_ptr aliasing + // constructor. + // This will not be instantiated if PtrType doesn't have a suitable + // constructor. + template < + typename OtherType, + typename std::enable_if< + std::is_constructible<PtrType, OtherType, element_type *>::value, + int>::type = 0> + nn(const nn<OtherType> &ownership_ptr, nn<element_type *> target_ptr) + : ptr(ownership_ptr.operator const OtherType &(), target_ptr) {} + + // Comparisons. Other comparisons are implemented in terms of these. + template <typename L, typename R> + friend bool operator==(const nn<L> &, const R &); + template <typename L, typename R> + friend bool operator==(const L &, const nn<R> &); + template <typename L, typename R> + friend bool operator==(const nn<L> &, const nn<R> &); + + template <typename L, typename R> + friend bool operator<(const nn<L> &, const R &); + template <typename L, typename R> + friend bool operator<(const L &, const nn<R> &); + template <typename L, typename R> + friend bool operator<(const nn<L> &, const nn<R> &); + + // ostream operator + template <typename T> + friend std::ostream &operator<<(std::ostream &, const nn<T> &); + + template <typename T = PtrType> element_type *get() const { + return ptr.get(); + } + +private: + // Backing pointer + PtrType ptr; +}; + +// Base comparisons - these are friends of nn<PtrType>, so they can access .ptr +// directly. +template <typename L, typename R> bool operator==(const nn<L> &l, const R &r) { + return l.ptr == r; +} +template <typename L, typename R> bool operator==(const L &l, const nn<R> &r) { + return l == r.ptr; +} +template <typename L, typename R> +bool operator==(const nn<L> &l, const nn<R> &r) { + return l.ptr == r.ptr; +} +template <typename L, typename R> bool operator<(const nn<L> &l, const R &r) { + return l.ptr < r; +} +template <typename L, typename R> bool operator<(const L &l, const nn<R> &r) { + return l < r.ptr; +} +template <typename L, typename R> +bool operator<(const nn<L> &l, const nn<R> &r) { + return l.ptr < r.ptr; +} +template <typename T> +std::ostream &operator<<(std::ostream &os, const nn<T> &p) { + return os << p.ptr; +} + +#define NN_DERIVED_OPERATORS(op, base) \ + template <typename L, typename R> \ + bool operator op(const nn<L> &l, const R &r) { \ + return base; \ + } \ + template <typename L, typename R> \ + bool operator op(const L &l, const nn<R> &r) { \ + return base; \ + } \ + template <typename L, typename R> \ + bool operator op(const nn<L> &l, const nn<R> &r) { \ + return base; \ + } + +NN_DERIVED_OPERATORS(>, r < l) +NN_DERIVED_OPERATORS(<=, !(l > r)) +NN_DERIVED_OPERATORS(>=, !(l < r)) +NN_DERIVED_OPERATORS(!=, !(l == r)) + +#undef NN_DERIVED_OPERATORS + +// Convenience typedefs +template <typename T> using nn_unique_ptr = nn<std::unique_ptr<T>>; +template <typename T> using nn_shared_ptr = nn<std::shared_ptr<T>>; + +template <typename T, typename... Args> +nn_unique_ptr<T> nn_make_unique(Args &&... args) { + return nn_unique_ptr<T>( + i_promise_i_checked_for_null, + std::unique_ptr<T>(new T(std::forward<Args>(args)...))); +} + +template <typename T, typename... Args> +nn_shared_ptr<T> nn_make_shared(Args &&... args) { + return nn_shared_ptr<T>(i_promise_i_checked_for_null, + std::make_shared<T>(std::forward<Args>(args)...)); +} + +template <typename T> +class nn_enable_shared_from_this : public std::enable_shared_from_this<T> { +public: + using std::enable_shared_from_this<T>::enable_shared_from_this; + nn_shared_ptr<T> nn_shared_from_this() { + return nn_shared_ptr<T>(i_promise_i_checked_for_null, + this->shared_from_this()); + } + nn_shared_ptr<const T> nn_shared_from_this() const { + return nn_shared_ptr<const T>(i_promise_i_checked_for_null, + this->shared_from_this()); + } +}; + +template <typename T> nn<T *> nn_addr(T &object) { + return nn<T *>(i_promise_i_checked_for_null, &object); +} + +template <typename T> nn<const T *> nn_addr(const T &object) { + return nn<const T *>(i_promise_i_checked_for_null, &object); +} + +/* Non-nullable equivalents of shared_ptr's specialized casting functions. + * These convert through a shared_ptr since nn<shared_ptr<T>> lacks the + * ref-count-sharing cast + * constructor, but thanks to moves there shouldn't be any significant extra + * cost. */ +template <typename T, typename U> +nn_shared_ptr<T> nn_static_pointer_cast(const nn_shared_ptr<U> &org_ptr) { + auto raw_ptr = + static_cast<typename nn_shared_ptr<T>::element_type *>(org_ptr.get()); + std::shared_ptr<T> nullable_ptr(org_ptr.as_nullable(), raw_ptr); + return nn_shared_ptr<T>(i_promise_i_checked_for_null, + std::move(nullable_ptr)); +} + +template <typename T, typename U> +std::shared_ptr<T> nn_dynamic_pointer_cast(const nn_shared_ptr<U> &org_ptr) { + auto raw_ptr = + dynamic_cast<typename std::shared_ptr<T>::element_type *>(org_ptr.get()); + if (!raw_ptr) { + return nullptr; + } else { + return std::shared_ptr<T>(org_ptr.as_nullable(), raw_ptr); + } +} + +template <typename T, typename U> +nn_shared_ptr<T> nn_const_pointer_cast(const nn_shared_ptr<U> &org_ptr) { + auto raw_ptr = + const_cast<typename nn_shared_ptr<T>::element_type *>(org_ptr.get()); + std::shared_ptr<T> nullable_ptr(org_ptr.as_nullable(), raw_ptr); + return nn_shared_ptr<T>(i_promise_i_checked_for_null, + std::move(nullable_ptr)); +} +} +} /* end namespace dropbox::oxygen */ + +namespace std { +template <typename T> struct hash<::dropbox::oxygen::nn<T>> { + using argument_type = ::dropbox::oxygen::nn<T>; + using result_type = size_t; + result_type operator()(const argument_type &obj) const { + return std::hash<T>{}(obj.as_nullable()); + } +}; +} + +/* These have to be macros because our internal versions invoke other macros + * that use + * __FILE__ and __LINE__, which we want to correctly point to the call site. + * We're looking + * forward to std::source_location :) + * + * The lambdas ensure that we only evaluate _e once. + */ +#include <stdexcept> + +// NN_CHECK_ASSERT takes a pointer of type PT (e.g. raw pointer, std::shared_ptr +// or std::unique_ptr) +// and returns a non-nullable pointer of type nn<PT>. +// Triggers an assertion if expression evaluates to null. +#define NN_CHECK_ASSERT(_e) \ + (([&](typename std::remove_reference<decltype(_e)>::type p) { \ + /* note: assert() alone is not sufficient here, because it might be \ + * compiled out. */ \ + assert(p &&#_e " must not be null"); \ + if (!p) \ + std::abort(); \ + return dropbox::oxygen::nn< \ + typename std::remove_reference<decltype(p)>::type>( \ + dropbox::oxygen::i_promise_i_checked_for_null, std::move(p)); \ + })(_e)) + +// NN_CHECK_THROW takes a pointer of type PT (e.g. raw pointer, std::shared_ptr +// or std::unique_ptr) +// and returns a non-nullable pointer of type nn<PT>. +// Throws if expression evaluates to null. +#define NN_CHECK_THROW(_e) \ + (([&](typename std::remove_reference<decltype(_e)>::type p) { \ + if (!p) \ + throw std::runtime_error(#_e " must not be null"); \ + return dropbox::oxygen::nn< \ + typename std::remove_reference<decltype(p)>::type>( \ + dropbox::oxygen::i_promise_i_checked_for_null, std::move(p)); \ + })(_e)) diff --git a/include/proj/util.hpp b/include/proj/util.hpp new file mode 100644 index 00000000..eb7288b2 --- /dev/null +++ b/include/proj/util.hpp @@ -0,0 +1,752 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef UTIL_HH_INCLUDED +#define UTIL_HH_INCLUDED + +#if !(__cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1900)) +#error Must have C++11 or newer. +#endif + +#include <exception> +#include <map> +#include <memory> +#include <string> +#include <vector> + +#ifndef NS_PROJ +/** osgeo namespace */ +namespace osgeo { +/** osgeo.proj namespace */ +namespace proj {} +} // namespace osgeo +#endif + +//! @cond Doxygen_Suppress + +#ifndef PROJ_DLL +#ifdef PROJ_MSVC_DLL_EXPORT +#define PROJ_DLL __declspec(dllexport) +#elif defined(PROJ_MSVC_DLL_IMPORT) +#define PROJ_DLL __declspec(dllimport) +#elif defined(__GNUC__) +#define PROJ_DLL __attribute__((visibility("default"))) +#else +#define PROJ_DLL +#endif +#endif + +#ifndef PROJ_MSVC_DLL + +#ifdef PROJ_MSVC_DLL_EXPORT +#define PROJ_MSVC_DLL PROJ_DLL +#define PROJ_GCC_DLL +#define PROJ_INTERNAL +#elif defined(PROJ_MSVC_DLL_IMPORT) +#define PROJ_MSVC_DLL PROJ_DLL +#define PROJ_GCC_DLL +#define PROJ_INTERNAL +#elif defined(__GNUC__) +#define PROJ_MSVC_DLL +#define PROJ_GCC_DLL PROJ_DLL +#if !defined(__MINGW32__) +#define PROJ_INTERNAL __attribute__((visibility("hidden"))) +#else +#define PROJ_INTERNAL +#endif +#else +#define PROJ_MSVC_DLL +#define PROJ_GCC_DLL +#define PROJ_INTERNAL +#endif + +#define PROJ_FOR_TEST PROJ_DLL + +#endif + +#include "nn.hpp" + +/* To allow customizing the base namespace of PROJ */ +#ifndef NS_PROJ +#define NS_PROJ osgeo::proj +#define NS_PROJ_START \ + namespace osgeo { \ + namespace proj { +#define NS_PROJ_END \ + } \ + } +#endif + +// Private-implementation (Pimpl) pattern +#define PROJ_OPAQUE_PRIVATE_DATA \ + private: \ + struct PROJ_INTERNAL Private; \ + std::unique_ptr<Private> d; \ + \ + protected: \ + PROJ_INTERNAL Private *getPrivate() noexcept { return d.get(); } \ + PROJ_INTERNAL const Private *getPrivate() const noexcept { \ + return d.get(); \ + } \ + \ + private: + +// To include in the protected/private section of a class definition, +// to be able to call make_shared on a protected/private constructor +#define INLINED_MAKE_SHARED \ + template <typename T, typename... Args> \ + static std::shared_ptr<T> make_shared(Args &&... args) { \ + return std::shared_ptr<T>(new T(std::forward<Args>(args)...)); \ + } \ + template <typename T, typename... Args> \ + static util::nn_shared_ptr<T> nn_make_shared(Args &&... args) { \ + return util::nn_shared_ptr<T>( \ + util::i_promise_i_checked_for_null, \ + std::shared_ptr<T>(new T(std::forward<Args>(args)...))); \ + } + +// To include in the protected/private section of a class definition, +// to be able to call make_unique on a protected/private constructor +#define INLINED_MAKE_UNIQUE \ + template <typename T, typename... Args> \ + static std::unique_ptr<T> make_unique(Args &&... args) { \ + return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); \ + } + +#ifdef DOXYGEN_ENABLED +#define PROJ_FRIEND(mytype) +#define PROJ_FRIEND_OPTIONAL(mytype) +#else +#define PROJ_FRIEND(mytype) friend class mytype +#define PROJ_FRIEND_OPTIONAL(mytype) friend class util::optional<mytype> +#endif + +#ifndef PROJ_PRIVATE +#define PROJ_PRIVATE public +#endif + +#if defined(__GNUC__) +#define PROJ_NO_INLINE __attribute__((noinline)) +#define PROJ_NO_RETURN __attribute__((noreturn)) +// Applies to a function that has no side effect, and its return will not +// change if the arguments are the same. But is return may change +// if the object state changes. So this is for getters of mutable objects. +#define PROJ_PURE_DECL const noexcept __attribute__((pure)) +// Applies to a function that has no side effect, and its return will not +// change if the arguments are the same, and their pointed value must not +// be modified. So this is for getters of immutable objets. This is stronger +// than PROJ_PURE_DECL. +#if defined(__INTEL_COMPILER) +// If using __attribute__((const)), ICC on an expression like +// Angle(x).getSIValue() will create the object, destroy it and then call +// getSIValue(). Fallback to ((pure)), which is weaker +#define PROJ_CONST_DECL const noexcept __attribute__((pure)) +#else +#define PROJ_CONST_DECL const noexcept __attribute__((const)) +#endif +#else +#define PROJ_NO_RETURN +#define PROJ_NO_INLINE +#define PROJ_PURE_DECL const noexcept +#define PROJ_CONST_DECL const noexcept +#endif +#define PROJ_PURE_DEFN const noexcept +#define PROJ_CONST_DEFN const noexcept + +//! @endcond + +NS_PROJ_START + +/** osgeo.proj.util namespace. + * + * \brief A set of base types from ISO 19103, \ref GeoAPI and other PROJ + * specific classes. + */ +namespace util { + +//! @cond Doxygen_Suppress +// Import a few classes from nn.hpp to expose them under our ::util namespace +// for conveniency. +using ::dropbox::oxygen::i_promise_i_checked_for_null; +using ::dropbox::oxygen::nn; +using ::dropbox::oxygen::nn_dynamic_pointer_cast; +using ::dropbox::oxygen::nn_make_shared; + +// For return statements, to convert from derived type to base type +using ::dropbox::oxygen::nn_static_pointer_cast; + +template <typename T> using nn_shared_ptr = nn<std::shared_ptr<T>>; + +#define NN_NO_CHECK(p) \ + ::dropbox::oxygen::nn<typename std::remove_const< \ + typename std::remove_reference<decltype(p)>::type>::type>( \ + dropbox::oxygen::i_promise_i_checked_for_null, (p)) + +//! @endcond + +// To avoid formatting differences between clang-format 3.8 and 7 +#define PROJ_NOEXCEPT noexcept + +/** \brief Loose transposition of [std::optional] + * (https://en.cppreference.com/w/cpp/utility/optional) available from C++17. */ +template <class T> class optional { + public: + //! @cond Doxygen_Suppress + inline optional() : hasVal_(false) {} + inline explicit optional(const T &val) : hasVal_(true), val_(val) {} + inline explicit optional(T &&val) + : hasVal_(true), val_(std::forward<T>(val)) {} + + inline optional(const optional &other) = default; + inline optional(optional &&other) PROJ_NOEXCEPT + : hasVal_(other.hasVal_), + // cppcheck-suppress functionStatic + val_(std::forward<T>(other.val_)) { + other.hasVal_ = false; + } + + inline optional &operator=(const T &val) { + hasVal_ = true; + val_ = val; + return *this; + } + inline optional &operator=(T &&val) noexcept { + hasVal_ = true; + val_ = std::forward<T>(val); + return *this; + } + inline optional &operator=(const optional &other) = default; + inline optional &operator=(optional &&other) noexcept { + hasVal_ = other.hasVal_; + val_ = std::forward<T>(other.val_); + other.hasVal_ = false; + return *this; + } + + inline T *operator->() { return &val_; } + inline T &operator*() { return val_; } + + //! @endcond + + /** Returns a pointer to the contained value. */ + inline const T *operator->() const { return &val_; } + + /** Returns a reference to the contained value. */ + inline const T &operator*() const { return val_; } + + /** Return whether the optional has a value */ + inline explicit operator bool() const noexcept { return hasVal_; } + + /** Return whether the optional has a value */ + inline bool has_value() const noexcept { return hasVal_; } + + private: + bool hasVal_; + T val_{}; +}; + +// --------------------------------------------------------------------------- + +class BaseObject; +/** Shared pointer of BaseObject. */ +using BaseObjectPtr = std::shared_ptr<BaseObject>; +#if 1 +/** Non-null shared pointer of BaseObject. */ +struct BaseObjectNNPtr : public util::nn<BaseObjectPtr> { + // This trick enables to avoid inlining of the destructor. + // This is mostly an alias of the base class. + //! @cond Doxygen_Suppress + template <class T> + // cppcheck-suppress noExplicitConstructor + BaseObjectNNPtr(const util::nn<std::shared_ptr<T>> &x) + : util::nn<BaseObjectPtr>(x) {} + + template <class T> + // cppcheck-suppress noExplicitConstructor + BaseObjectNNPtr(util::nn<std::shared_ptr<T>> &&x) noexcept + : util::nn<BaseObjectPtr>(NN_NO_CHECK(std::move(x.as_nullable()))) {} + + explicit BaseObjectNNPtr(::dropbox::oxygen::i_promise_i_checked_for_null_t, + BaseObjectPtr &&arg) noexcept + : util::nn<BaseObjectPtr>(i_promise_i_checked_for_null, + std::move(arg)) {} + BaseObjectNNPtr(const BaseObjectNNPtr &) = default; + BaseObjectNNPtr &operator=(const BaseObjectNNPtr &) = default; + + PROJ_DLL ~BaseObjectNNPtr(); + //! @endcond +}; +#else +using BaseObjectNNPtr = util::nn<BaseObjectPtr>; +#endif + +/** \brief Class that can be derived from, to emulate Java's Object behaviour. + */ +class PROJ_GCC_DLL BaseObject { + public: + //! @cond Doxygen_Suppress + virtual PROJ_DLL ~BaseObject(); + //! @endcond + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + PROJ_INTERNAL BaseObjectNNPtr + shared_from_this() const; + //! @endcond + + protected: + PROJ_INTERNAL BaseObject(); + PROJ_INTERNAL void assignSelf(const BaseObjectNNPtr &self); + + private: + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +/** \brief Interface for an object that can be compared to another. + */ +class PROJ_GCC_DLL IComparable { + public: + //! @cond Doxygen_Suppress + PROJ_DLL virtual ~IComparable(); + //! @endcond + + /** \brief Comparison criterion. */ + enum class PROJ_MSVC_DLL Criterion { + /** All properties are identical. */ + STRICT, + + /** The objects are equivalent for the purpose of coordinate + * operations. They can differ by the name of their objects, + * identifiers, other metadata. + * Parameters may be expressed in different units, provided that the + * value is (with some tolerance) the same once expressed in a + * common unit. + */ + EQUIVALENT, + + /** Same as EQUIVALENT, relaxed with an exception that the axis order + * of the base CRS of a DerivedCRS/ProjectedCRS or the axis order of + * a GeographicCRS is ignored. Only to be used + * with DerivedCRS/ProjectedCRS/GeographicCRS */ + EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS, + }; + + PROJ_DLL bool isEquivalentTo(const IComparable *other, + Criterion criterion = Criterion::STRICT) const; + + PROJ_PRIVATE : + + //! @cond Doxygen_Suppress + PROJ_INTERNAL virtual bool + _isEquivalentTo(const IComparable *other, + Criterion criterion = Criterion::STRICT) const = 0; + //! @endcond +}; + +// --------------------------------------------------------------------------- + +/** \brief Encapsulate standard datatypes in an object. + */ +class BoxedValue final : public BaseObject { + public: + //! @cond Doxygen_Suppress + /** Type of data stored in the BoxedValue. */ + enum class Type { + /** a std::string */ + STRING, + /** an integer */ + INTEGER, + /** a boolean */ + BOOLEAN + }; + //! @endcond + + // cppcheck-suppress noExplicitConstructor + PROJ_DLL BoxedValue(const char *stringValueIn); // needed to avoid the bool + // constructor to be taken ! + // cppcheck-suppress noExplicitConstructor + PROJ_DLL BoxedValue(const std::string &stringValueIn); + // cppcheck-suppress noExplicitConstructor + PROJ_DLL BoxedValue(int integerValueIn); + // cppcheck-suppress noExplicitConstructor + PROJ_DLL BoxedValue(bool booleanValueIn); + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + PROJ_INTERNAL + BoxedValue(const BoxedValue &other); + + PROJ_DLL ~BoxedValue() override; + + PROJ_INTERNAL const Type &type() const; + PROJ_INTERNAL const std::string &stringValue() const; + PROJ_INTERNAL int integerValue() const; + PROJ_INTERNAL bool booleanValue() const; + //! @endcond + + private: + PROJ_OPAQUE_PRIVATE_DATA + BoxedValue &operator=(const BoxedValue &) = delete; + + PROJ_INTERNAL BoxedValue(); +}; + +/** Shared pointer of BoxedValue. */ +using BoxedValuePtr = std::shared_ptr<BoxedValue>; +/** Non-null shared pointer of BoxedValue. */ +using BoxedValueNNPtr = util::nn<BoxedValuePtr>; + +// --------------------------------------------------------------------------- + +class ArrayOfBaseObject; +/** Shared pointer of ArrayOfBaseObject. */ +using ArrayOfBaseObjectPtr = std::shared_ptr<ArrayOfBaseObject>; +/** Non-null shared pointer of ArrayOfBaseObject. */ +using ArrayOfBaseObjectNNPtr = util::nn<ArrayOfBaseObjectPtr>; + +/** \brief Array of BaseObject. + */ +class ArrayOfBaseObject final : public BaseObject { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~ArrayOfBaseObject() override; + //! @endcond + + PROJ_DLL void add(const BaseObjectNNPtr &obj); + + PROJ_DLL static ArrayOfBaseObjectNNPtr create(); + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + std::vector<BaseObjectNNPtr>::const_iterator + begin() const; + std::vector<BaseObjectNNPtr>::const_iterator end() const; + bool empty() const; + //! @endcond + + protected: + ArrayOfBaseObject(); + INLINED_MAKE_SHARED + + private: + ArrayOfBaseObject(const ArrayOfBaseObject &other) = delete; + ArrayOfBaseObject &operator=(const ArrayOfBaseObject &other) = delete; + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +/** \brief Wrapper of a std::map<std::string, BaseObjectNNPtr> */ +class PropertyMap { + public: + PROJ_DLL PropertyMap(); + //! @cond Doxygen_Suppress + PROJ_DLL PropertyMap(const PropertyMap &other); + PROJ_DLL ~PropertyMap(); + //! @endcond + + PROJ_DLL PropertyMap &set(const std::string &key, + const BaseObjectNNPtr &val); + + //! @cond Doxygen_Suppress + template <class T> + inline PropertyMap &set(const std::string &key, + const nn_shared_ptr<T> &val) { + return set( + key, BaseObjectNNPtr(i_promise_i_checked_for_null, + BaseObjectPtr(val.as_nullable(), val.get()))); + } + //! @endcond + + // needed to avoid the bool constructor to be taken ! + PROJ_DLL PropertyMap &set(const std::string &key, const char *val); + + PROJ_DLL PropertyMap &set(const std::string &key, const std::string &val); + + PROJ_DLL PropertyMap &set(const std::string &key, int val); + + PROJ_DLL PropertyMap &set(const std::string &key, bool val); + + PROJ_DLL PropertyMap &set(const std::string &key, + const std::vector<std::string> &array); + + PROJ_PRIVATE : + //! @cond Doxygen_Suppress + std::map<std::string, BaseObjectNNPtr>::iterator + find(const std::string &key) const; + std::map<std::string, BaseObjectNNPtr>::iterator end() const; + + // throw(InvalidValueTypeException) + bool getStringValue(const std::string &key, std::string &outVal) const; + + static PropertyMap createAndSetName(const char *name); + static PropertyMap createAndSetName(const std::string &name); + //! @endcond + + private: + PropertyMap &operator=(const PropertyMap &) = delete; + + PropertyMap &set(const std::string &key, const BoxedValue &val); + + PROJ_OPAQUE_PRIVATE_DATA +}; + +// --------------------------------------------------------------------------- + +class LocalName; +/** Shared pointer of LocalName. */ +using LocalNamePtr = std::shared_ptr<LocalName>; +/** Non-null shared pointer of LocalName. */ +using LocalNameNNPtr = util::nn<LocalNamePtr>; + +class NameSpace; +/** Shared pointer of NameSpace. */ +using NameSpacePtr = std::shared_ptr<NameSpace>; +/** Non-null shared pointer of NameSpace. */ +using NameSpaceNNPtr = util::nn<NameSpacePtr>; + +class GenericName; +/** Shared pointer of GenericName. */ +using GenericNamePtr = std::shared_ptr<GenericName>; +/** Non-null shared pointer of GenericName. */ +using GenericNameNNPtr = util::nn<GenericNamePtr>; + +// --------------------------------------------------------------------------- + +/** \brief A sequence of identifiers rooted within the context of a namespace. + * + * \remark Simplified version of [GenericName] + * (http://www.geoapi.org/3.0/javadoc/org/opengis/util/GenericName.html) from + * \ref GeoAPI + */ +class GenericName : public BaseObject { + public: + //! @cond Doxygen_Suppress + PROJ_DLL virtual ~GenericName() override; + //! @endcond + + /** \brief Return the scope of the object, possibly a global one. */ + PROJ_DLL virtual const NameSpacePtr scope() const = 0; + + /** \brief Return the LocalName as a string. */ + PROJ_DLL virtual std::string toString() const = 0; + + /** \brief Return a fully qualified name corresponding to the local name. + * + * The namespace of the resulting name is a global one. + */ + PROJ_DLL virtual GenericNameNNPtr toFullyQualifiedName() const = 0; + + protected: + GenericName(); + GenericName(const GenericName &other); + + private: + PROJ_OPAQUE_PRIVATE_DATA + GenericName &operator=(const GenericName &other) = delete; +}; + +// --------------------------------------------------------------------------- + +/** \brief A domain in which names given by strings are defined. + * + * \remark Simplified version of [NameSpace] + * (http://www.geoapi.org/3.0/javadoc/org/opengis/util/NameSpace.html) from \ref + * GeoAPI + */ +class NameSpace { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~NameSpace(); + //! @endcond + + PROJ_DLL bool isGlobal() const; + PROJ_DLL const GenericNamePtr &name() const; + + protected: + PROJ_FRIEND(NameFactory); + PROJ_FRIEND(LocalName); + explicit NameSpace(const GenericNamePtr &name); + NameSpace(const NameSpace &other); + NameSpaceNNPtr getGlobalFromThis() const; + const std::string &separator() const; + static const NameSpaceNNPtr GLOBAL; + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + NameSpace &operator=(const NameSpace &other) = delete; + + static NameSpaceNNPtr createGLOBAL(); +}; + +// --------------------------------------------------------------------------- + +/** \brief Identifier within a NameSpace for a local object. + * + * Local names are names which are directly accessible to and maintained by a + * NameSpace within which they are local, indicated by the scope. + * + * \remark Simplified version of [LocalName] + * (http://www.geoapi.org/3.0/javadoc/org/opengis/util/LocalName.html) from \ref + * GeoAPI + */ +class LocalName : public GenericName { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~LocalName() override; + //! @endcond + + PROJ_DLL const NameSpacePtr scope() const override; + PROJ_DLL std::string toString() const override; + PROJ_DLL GenericNameNNPtr toFullyQualifiedName() const override; + + protected: + PROJ_FRIEND(NameFactory); + PROJ_FRIEND(NameSpace); + explicit LocalName(const std::string &nameIn); + LocalName(const LocalName &other); + LocalName(const NameSpacePtr &ns, const std::string &name); + INLINED_MAKE_SHARED + + private: + PROJ_OPAQUE_PRIVATE_DATA + LocalName &operator=(const LocalName &other) = delete; +}; + +// --------------------------------------------------------------------------- + +/** \brief Factory for generic names. + * + * \remark Simplified version of [NameFactory] + * (http://www.geoapi.org/3.0/javadoc/org/opengis/util/NameFactory.html) from + * \ref GeoAPI + */ +class NameFactory { + public: + PROJ_DLL static NameSpaceNNPtr + createNameSpace(const GenericNameNNPtr &name, + const PropertyMap &properties); + PROJ_DLL static LocalNameNNPtr createLocalName(const NameSpacePtr &scope, + const std::string &name); + PROJ_DLL static GenericNameNNPtr + createGenericName(const NameSpacePtr &scope, + const std::vector<std::string> &parsedNames); +}; + +// --------------------------------------------------------------------------- + +/** \brief Abstract class to define an enumeration of values. + */ +class CodeList { + public: + //! @cond Doxygen_Suppress + PROJ_DLL ~CodeList(); + //! @endcond + + /** Return the CodeList item as a string. */ + // cppcheck-suppress functionStatic + inline const std::string &toString() PROJ_CONST_DECL { return name_; } + + /** Return the CodeList item as a string. */ + inline operator std::string() PROJ_CONST_DECL { return toString(); } + + //! @cond Doxygen_Suppress + inline bool operator==(const CodeList &other) PROJ_CONST_DECL { + return name_ == other.name_; + } + inline bool operator!=(const CodeList &other) PROJ_CONST_DECL { + return name_ != other.name_; + } + //! @endcond + protected: + explicit CodeList(const std::string &nameIn) : name_(nameIn) {} + CodeList(const CodeList &other) = default; + CodeList &operator=(const CodeList &other); + + private: + std::string name_{}; +}; + +// --------------------------------------------------------------------------- + +/** \brief Root exception class. + */ +class PROJ_GCC_DLL Exception : public std::exception { + std::string msg_; + + public: + //! @cond Doxygen_Suppress + PROJ_INTERNAL explicit Exception(const char *message); + PROJ_INTERNAL explicit Exception(const std::string &message); + PROJ_DLL Exception(const Exception &other); + PROJ_DLL ~Exception() override; + //! @endcond + PROJ_DLL virtual const char *what() const noexcept override; +}; + +// --------------------------------------------------------------------------- + +/** \brief Exception thrown when an invalid value type is set as the value of + * a key of a PropertyMap. + */ +class PROJ_GCC_DLL InvalidValueTypeException : public Exception { + public: + //! @cond Doxygen_Suppress + PROJ_INTERNAL explicit InvalidValueTypeException(const char *message); + PROJ_INTERNAL explicit InvalidValueTypeException( + const std::string &message); + PROJ_DLL InvalidValueTypeException(const InvalidValueTypeException &other); + PROJ_DLL ~InvalidValueTypeException() override; + //! @endcond +}; + +// --------------------------------------------------------------------------- + +/** \brief Exception Thrown to indicate that the requested operation is not + * supported. + */ +class PROJ_GCC_DLL UnsupportedOperationException : public Exception { + public: + //! @cond Doxygen_Suppress + PROJ_INTERNAL explicit UnsupportedOperationException(const char *message); + PROJ_INTERNAL explicit UnsupportedOperationException( + const std::string &message); + PROJ_DLL + UnsupportedOperationException(const UnsupportedOperationException &other); + PROJ_DLL ~UnsupportedOperationException() override; + //! @endcond +}; + +} // namespace util + +NS_PROJ_END + +#endif // UTIL_HH_INCLUDED diff --git a/scripts/build_db.py b/scripts/build_db.py new file mode 100755 index 00000000..2626f286 --- /dev/null +++ b/scripts/build_db.py @@ -0,0 +1,589 @@ +#!/usr/bin/env python +############################################################################### +# $Id$ +# +# Project: PROJ +# Purpose: Build SRS and coordinate transform database +# Author: Even Rouault <even.rouault at spatialys.com> +# +############################################################################### +# Copyright (c) 2018, Even Rouault <even.rouault at spatialys.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. +############################################################################### + +import os +import sqlite3 + +EPSG_AUTHORITY = 'EPSG' + +def ingest_sqlite_dump(cursor, filename): + sql = '' + for line in open(filename, 'rt').readlines(): + sql += line + if sqlite3.complete_statement(sql): + sql = sql.strip() + if sql != 'COMMIT;': + cursor.execute(sql) + sql = '' + + +def ingest_epsg(): + + for f in ['PostgreSQL_Data_Script.sql', 'PostgreSQL_Table_Script.sql']: + if not os.path.exists(f): + raise Exception('Missing file: ' + f) + + epsg_tmp_db_filename = 'tmp_epsg.db' + + if os.path.exists(epsg_tmp_db_filename): + os.unlink(epsg_tmp_db_filename) + + conn = sqlite3.connect(epsg_tmp_db_filename) + cursor = conn.cursor() + cursor.execute('PRAGMA journal_mode = OFF;') + ingest_sqlite_dump(cursor, 'PostgreSQL_Table_Script.sql') + ingest_sqlite_dump(cursor, 'PostgreSQL_Data_Script.sql') + cursor.close() + conn.commit() + + return (conn, epsg_tmp_db_filename) + + +def fill_unit_of_measure(proj_db_cursor): + proj_db_cursor.execute( + "INSERT INTO unit_of_measure SELECT ?, uom_code, unit_of_meas_name, unit_of_meas_type, factor_b / factor_c, deprecated FROM epsg.epsg_unitofmeasure", (EPSG_AUTHORITY,)) + + +def fill_ellipsoid(proj_db_cursor): + proj_db_cursor.execute( + "INSERT INTO ellipsoid SELECT ?, ellipsoid_code, ellipsoid_name, NULL, 'PROJ', 'EARTH', semi_major_axis, ?, uom_code, inv_flattening, semi_minor_axis, deprecated FROM epsg.epsg_ellipsoid", (EPSG_AUTHORITY, EPSG_AUTHORITY)) + + +def fill_area(proj_db_cursor): + proj_db_cursor.execute( + "INSERT INTO area SELECT ?, area_code, area_name, area_of_use, area_south_bound_lat, area_north_bound_lat, area_west_bound_lon, area_east_bound_lon, deprecated FROM epsg.epsg_area", (EPSG_AUTHORITY,)) + + +def fill_prime_meridian(proj_db_cursor): + proj_db_cursor.execute( + "INSERT INTO prime_meridian SELECT ?, prime_meridian_code, prime_meridian_name, greenwich_longitude, ?, uom_code, deprecated FROM epsg.epsg_primemeridian", (EPSG_AUTHORITY, EPSG_AUTHORITY)) + + +def fill_geodetic_datum(proj_db_cursor): + proj_db_cursor.execute( + "SELECT DISTINCT * FROM epsg.epsg_datum WHERE datum_type NOT IN ('geodetic', 'vertical', 'engineering')") + res = proj_db_cursor.fetchall() + if res: + raise Exception('Found unexpected datum_type in epsg_datum: %s' % str(res)) + + proj_db_cursor.execute( + "INSERT INTO geodetic_datum SELECT ?, datum_code, datum_name, NULL, NULL, ?, ellipsoid_code, ?, prime_meridian_code, ?, area_of_use_code, deprecated FROM epsg.epsg_datum WHERE datum_type = 'geodetic'", (EPSG_AUTHORITY, EPSG_AUTHORITY, EPSG_AUTHORITY, EPSG_AUTHORITY)) + + +def fill_vertical_datum(proj_db_cursor): + proj_db_cursor.execute( + "INSERT INTO vertical_datum SELECT ?, datum_code, datum_name, NULL, NULL, ?, area_of_use_code, deprecated FROM epsg.epsg_datum WHERE datum_type = 'vertical'", (EPSG_AUTHORITY,EPSG_AUTHORITY)) + + +def fill_coordinate_system(proj_db_cursor): + proj_db_cursor.execute( + "INSERT INTO coordinate_system SELECT ?, coord_sys_code, coord_sys_type, dimension FROM epsg.epsg_coordinatesystem", (EPSG_AUTHORITY,)) + + +def fill_axis(proj_db_cursor): + proj_db_cursor.execute("INSERT INTO axis SELECT ?, coord_axis_code, coord_axis_name, coord_axis_abbreviation, coord_axis_orientation, ?, coord_sys_code, coord_axis_order, ?, uom_code FROM epsg.epsg_coordinateaxis ca LEFT JOIN epsg.epsg_coordinateaxisname can ON ca.coord_axis_name_code = can.coord_axis_name_code", (EPSG_AUTHORITY, EPSG_AUTHORITY, EPSG_AUTHORITY)) + + +def fill_geodetic_crs(proj_db_cursor): + proj_db_cursor.execute( + "SELECT DISTINCT * FROM epsg.epsg_coordinatereferencesystem WHERE coord_ref_sys_kind NOT IN ('projected', 'geographic 2D', 'geographic 3D', 'geocentric', 'vertical', 'compound', 'engineering')") + res = proj_db_cursor.fetchall() + if res: + raise Exception('Found unexpected coord_ref_sys_kind in epsg_coordinatereferencesystem: %s' % str(res)) + + #proj_db_cursor.execute( + # "INSERT INTO crs SELECT ?, coord_ref_sys_code, coord_ref_sys_kind FROM epsg.epsg_coordinatereferencesystem WHERE coord_ref_sys_kind IN ('geographic 2D', 'geographic 3D', 'geocentric') AND datum_code IS NOT NULL", (EPSG_AUTHORITY,)) + proj_db_cursor.execute("INSERT INTO geodetic_crs SELECT ?, coord_ref_sys_code, coord_ref_sys_name, NULL, NULL, coord_ref_sys_kind, ?, coord_sys_code, ?, datum_code, ?, area_of_use_code, NULL, deprecated FROM epsg.epsg_coordinatereferencesystem WHERE coord_ref_sys_kind IN ('geographic 2D', 'geographic 3D', 'geocentric') AND datum_code IS NOT NULL", (EPSG_AUTHORITY, EPSG_AUTHORITY, EPSG_AUTHORITY, EPSG_AUTHORITY)) + + +def fill_vertical_crs(proj_db_cursor): + #proj_db_cursor.execute( + # "INSERT INTO crs SELECT ?, coord_ref_sys_code, coord_ref_sys_kind FROM epsg.epsg_coordinatereferencesystem WHERE coord_ref_sys_kind IN ('vertical') AND datum_code IS NOT NULL", (EPSG_AUTHORITY,)) + proj_db_cursor.execute("INSERT INTO vertical_crs SELECT ?, coord_ref_sys_code, coord_ref_sys_name, NULL, NULL, ?, coord_sys_code, ?, datum_code, ?, area_of_use_code, deprecated FROM epsg.epsg_coordinatereferencesystem WHERE coord_ref_sys_kind IN ('vertical') AND datum_code IS NOT NULL", (EPSG_AUTHORITY, EPSG_AUTHORITY, EPSG_AUTHORITY, EPSG_AUTHORITY)) + +def fill_conversion(proj_db_cursor): + + already_mapped_methods = set() + trigger_sql = """ +CREATE TRIGGER conversion_method_check_insert_trigger +BEFORE INSERT ON conversion +FOR EACH ROW BEGIN +""" + + proj_db_cursor.execute("SELECT coord_op_code, coord_op_name, area_of_use_code, coord_op_method_code, coord_op_method_name, epsg_coordoperation.deprecated FROM epsg.epsg_coordoperation LEFT JOIN epsg.epsg_coordoperationmethod USING (coord_op_method_code) WHERE coord_op_type = 'conversion' AND coord_op_name NOT LIKE '%to DMSH'") + for (code, name, area_of_use_code, method_code, method_name, deprecated) in proj_db_cursor.fetchall(): + expected_order = 1 + max_n_params = 7 + param_auth_name = [None for i in range(max_n_params)] + param_code = [None for i in range(max_n_params)] + param_name = [None for i in range(max_n_params)] + param_value = [None for i in range(max_n_params)] + param_uom_auth_name = [None for i in range(max_n_params)] + param_uom_code = [None for i in range(max_n_params)] + param_uom_type = [None for i in range(max_n_params)] + + iterator = proj_db_cursor.execute("SELECT sort_order, cop.parameter_code, parameter_name, parameter_value, uom_code, uom.unit_of_meas_type FROM epsg_coordoperationparam cop LEFT JOIN epsg_coordoperationparamvalue copv LEFT JOIN epsg_unitofmeasure uom USING (uom_code) LEFT JOIN epsg_coordoperationparamusage copu ON cop.parameter_code = copv.parameter_code AND copu.parameter_code = copv.parameter_code WHERE copu.coord_op_method_code = copv.coord_op_method_code AND coord_op_code = ? AND copv.coord_op_method_code = ? ORDER BY sort_order", (code, method_code)) + for (order, parameter_code, parameter_name, parameter_value, uom_code, uom_type) in iterator: + # Modified Krovak and Krovak North Oriented: keep only the 7 first parameters + if order == max_n_params + 1 and method_code in (1042, 1043): + break + assert order <= max_n_params + assert order == expected_order + param_auth_name[order - 1] = EPSG_AUTHORITY + param_code[order - 1] = parameter_code + param_name[order - 1] = parameter_name + param_value[order - 1] = parameter_value + param_uom_auth_name[order - 1] = EPSG_AUTHORITY if uom_code else None + param_uom_code[order - 1] = uom_code + param_uom_type[order - 1] = uom_type + expected_order += 1 + + if method_code not in already_mapped_methods: + already_mapped_methods.add(method_code) + trigger_sql += """ + SELECT RAISE(ABORT, 'insert on conversion violates constraint: bad parameters for %(method_name)s') + WHERE NEW.deprecated != 1 AND NEW.method_auth_name = 'EPSG' AND NEW.method_code = '%(method_code)s' AND (NEW.method_name != '%(method_name)s'""" % {'method_name': method_name, 'method_code' : method_code} + for i in range(expected_order-1): + trigger_sql += " OR NEW.param%(n)d_auth_name != 'EPSG' OR NEW.param%(n)d_code != '%(code)d' OR NEW.param%(n)d_name != '%(param_name)s'" % {'n': i+1, 'code': param_code[i], 'param_name': param_name[i]} + + if method_name in ('Change of Vertical Unit'): + trigger_sql += " OR (NOT((NEW.param%(n)d_value IS NULL AND NEW.param%(n)d_uom_auth_name IS NULL AND NEW.param%(n)d_uom_code IS NULL) OR (NEW.param%(n)d_value IS NOT NULL AND (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param%(n)s_uom_auth_name AND code = NEW.param%(n)s_uom_code) = 'scale')))" % {'n': i+1, 'param_name': param_name[i]} + else: + trigger_sql += " OR NEW.param%(n)d_value IS NULL OR NEW.param%(n)d_uom_auth_name IS NULL OR NEW.param%(n)d_uom_code IS NULL" % {'n': i+1, 'param_name': param_name[i]} + + if param_uom_type[i]: + trigger_sql += " OR (SELECT type FROM unit_of_measure WHERE auth_name = NEW.param%(n)s_uom_auth_name AND code = NEW.param%(n)s_uom_code) != '%(uom_type)s'" % {'n': i+1, 'uom_type': param_uom_type[i]} + for i in range(expected_order-1, max_n_params): + trigger_sql += " OR NEW.param%(n)d_auth_name IS NOT NULL OR NEW.param%(n)d_code IS NOT NULL OR NEW.param%(n)d_name IS NOT NULL OR NEW.param%(n)d_value IS NOT NULL OR NEW.param%(n)d_uom_auth_name IS NOT NULL OR NEW.param%(n)d_uom_code IS NOT NULL" % {'n': i+1} + trigger_sql += ");\n" + + arg = (EPSG_AUTHORITY, code, name, + None, None, # description + scope + EPSG_AUTHORITY, area_of_use_code, + EPSG_AUTHORITY, method_code, method_name, + param_auth_name[0], param_code[0], param_name[0], + param_value[0], param_uom_auth_name[0], param_uom_code[0], + param_auth_name[1], param_code[1], param_name[1], param_value[1], + param_uom_auth_name[1], param_uom_code[1], param_auth_name[2], + param_code[2], param_name[2], param_value[2], + param_uom_auth_name[2], param_uom_code[2], + param_auth_name[3], param_code[3], param_name[3], param_value[3], + param_uom_auth_name[3], param_uom_code[3], param_auth_name[4], + param_code[4], param_name[4], param_value[4], + param_uom_auth_name[4], param_uom_code[4], param_auth_name[5], + param_code[5], param_name[5], param_value[5], + param_uom_auth_name[5], param_uom_code[5], param_auth_name[6], + param_code[6], param_name[6], param_value[6], + param_uom_auth_name[6], param_uom_code[6], + deprecated) + + #proj_db_cursor.execute("INSERT INTO coordinate_operation VALUES (?,?,'conversion')", (EPSG_AUTHORITY, code)) + proj_db_cursor.execute('INSERT INTO conversion VALUES (' + + '?,?,?, ?,?, ?,?, ?,?,?, ?,?,?,?,?,?, ?,?,?,?,?,?, ?,?,?,?,?,?, ' + + '?,?,?,?,?,?, ?,?,?,?,?,?, ?,?,?,?,?,?, ?,?,?,?,?,?, ?)', arg) + + trigger_sql += "END;"; + #print(trigger_sql) + proj_db_cursor.execute(trigger_sql) + + +def fill_projected_crs(proj_db_cursor): + #proj_db_cursor.execute( + # "INSERT INTO crs SELECT 'EPSG', coord_ref_sys_code, coord_ref_sys_kind FROM epsg.epsg_coordinatereferencesystem WHERE coord_ref_sys_kind IN ('projected')") + #proj_db_cursor.execute("INSERT INTO projected_crs SELECT 'EPSG', coord_ref_sys_code, coord_ref_sys_name, 'EPSG', coord_sys_code, 'EPSG', source_geogcrs_code, 'EPSG', projection_conv_code, 'EPSG', area_of_use_code, deprecated FROM epsg.epsg_coordinatereferencesystem WHERE coord_ref_sys_kind IN ('projected')") + proj_db_cursor.execute("SELECT ?, coord_ref_sys_code, coord_ref_sys_name, NULL, NULL, ?, coord_sys_code, ?, source_geogcrs_code, ?, projection_conv_code, ?, area_of_use_code, deprecated FROM epsg.epsg_coordinatereferencesystem WHERE coord_ref_sys_kind IN ('projected')", (EPSG_AUTHORITY, EPSG_AUTHORITY, EPSG_AUTHORITY, EPSG_AUTHORITY, EPSG_AUTHORITY)) + for row in proj_db_cursor.fetchall(): + (auth_name, code, name, description, scope, coordinate_system_auth_name, coordinate_system_code, geodetic_crs_auth_name, geodetic_crs_code, conversion_auth_name, conversion_code, area_of_use_auth_name, area_of_use_code, deprecated) = row + proj_db_cursor.execute("SELECT 1 FROM epsg.epsg_coordinatereferencesystem WHERE coord_ref_sys_code = ? AND coord_ref_sys_kind IN ('geographic 2D', 'geographic 3D', 'geocentric')", (geodetic_crs_code,)) + if proj_db_cursor.fetchone(): + #proj_db_cursor.execute("INSERT INTO crs VALUES (?, ?, 'projected')", (EPSG_AUTHORITY, code)) + proj_db_cursor.execute("INSERT INTO projected_crs VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,NULL,?)", row) + +def fill_compound_crs(proj_db_cursor): + #proj_db_cursor.execute( + # "INSERT INTO crs SELECT ?, coord_ref_sys_code, coord_ref_sys_kind FROM epsg.epsg_coordinatereferencesystem WHERE coord_ref_sys_kind IN ('compound')", (EPSG_AUTHORITY,)) + proj_db_cursor.execute("INSERT INTO compound_crs SELECT ?, coord_ref_sys_code, coord_ref_sys_name, NULL, NULL, ?, cmpd_horizcrs_code, ?, cmpd_vertcrs_code, ?, area_of_use_code, deprecated FROM epsg.epsg_coordinatereferencesystem WHERE coord_ref_sys_kind IN ('compound')", (EPSG_AUTHORITY, EPSG_AUTHORITY, EPSG_AUTHORITY, EPSG_AUTHORITY)) + +def fill_helmert_transformation(proj_db_cursor): + proj_db_cursor.execute("SELECT coord_op_code, coord_op_name, coord_op_method_code, coord_op_method_name, source_crs_code, target_crs_code, area_of_use_code, coord_op_accuracy, epsg_coordoperation.deprecated FROM epsg.epsg_coordoperation LEFT JOIN epsg.epsg_coordoperationmethod USING (coord_op_method_code) WHERE coord_op_type = 'transformation' AND coord_op_method_code IN (1031, 1032, 1033, 1034, 1035, 1037, 1038, 1039, 1053, 1054, 1055, 1056, 1057, 1058, 1061, 1062, 1063, 1065, 1066, 9603, 9606, 9607, 9636) ") + for (code, name, method_code, method_name, source_crs_code, target_crs_code, area_of_use_code, coord_op_accuracy, deprecated) in proj_db_cursor.fetchall(): + expected_order = 1 + max_n_params = 15 + param_auth_name = [None for i in range(max_n_params)] + param_code = [None for i in range(max_n_params)] + param_name = [None for i in range(max_n_params)] + param_value = [None for i in range(max_n_params)] + param_uom_code = [None for i in range(max_n_params)] + + iterator = proj_db_cursor.execute("SELECT sort_order, cop.parameter_code, parameter_name, parameter_value, uom_code from epsg_coordoperationparam cop LEFT JOIN epsg_coordoperationparamvalue copv LEFT JOIN epsg_coordoperationparamusage copu ON cop.parameter_code = copv.parameter_code AND copu.parameter_code = copv.parameter_code WHERE copu.coord_op_method_code = copv.coord_op_method_code AND coord_op_code = ? AND copv.coord_op_method_code = ? ORDER BY sort_order", (code, method_code)) + for (order, parameter_code, parameter_name, parameter_value, uom_code) in iterator: + assert order <= max_n_params + assert order == expected_order + param_auth_name[order - 1] = EPSG_AUTHORITY + param_code[order - 1] = parameter_code + param_name[order - 1] = parameter_name + param_value[order - 1] = parameter_value + param_uom_code[order - 1] = uom_code + expected_order += 1 + n_params = expected_order - 1 + + if param_value[0] is None and deprecated: + continue # silently discard non sense deprecated transforms (like EPSG:1076) + + assert param_code[0] == 8605 + assert param_code[1] == 8606 + assert param_code[2] == 8607 + assert param_uom_code[0] == param_uom_code[1] + assert param_uom_code[0] == param_uom_code[2] + px = None + py = None + pz = None + pivot_uom_code = None + if n_params > 3: + assert param_code[3] == 8608 + assert param_code[4] == 8609 + assert param_code[5] == 8610 + assert param_code[6] == 8611 + assert param_uom_code[3] == param_uom_code[4] + assert param_uom_code[3] == param_uom_code[5] + if n_params == 8: # Time-specific transformation + assert param_code[7] == 1049, (code, name, param_code[7]) + param_value[14] = param_value[7] + param_uom_code[14] = param_uom_code[7] + param_value[7] = None + param_uom_code[7] = None + + elif n_params == 10: # Molodensky-Badekas + assert param_code[7] == 8617, (code, name, param_code[7]) + assert param_code[8] == 8618, (code, name, param_code[8]) + assert param_code[9] == 8667, (code, name, param_code[9]) + assert param_uom_code[7] == param_uom_code[8] + assert param_uom_code[7] == param_uom_code[9] + px = param_value[7] + py = param_value[8] + pz = param_value[9] + pivot_uom_code = param_uom_code[7] + param_value[7] = None + param_uom_code[7] = None + param_value[8] = None + param_uom_code[8] = None + param_value[9] = None + param_uom_code[9] = None + + elif n_params > 7: # Time-dependant transformation + assert param_code[7] == 1040, (code, name, param_code[7]) + assert param_code[8] == 1041 + assert param_code[9] == 1042 + assert param_code[10] == 1043 + assert param_code[11] == 1044 + assert param_code[12] == 1045 + assert param_code[13] == 1046 + assert param_code[14] == 1047 + assert param_uom_code[7] == param_uom_code[8] + assert param_uom_code[7] == param_uom_code[9] + assert param_uom_code[10] == param_uom_code[11] + assert param_uom_code[10] == param_uom_code[12] + + arg = (EPSG_AUTHORITY, code, name, + None, None, # description + scope + EPSG_AUTHORITY, method_code, method_name, + EPSG_AUTHORITY, source_crs_code, + EPSG_AUTHORITY, target_crs_code, + EPSG_AUTHORITY, area_of_use_code, + coord_op_accuracy, + param_value[0], param_value[1], param_value[2], EPSG_AUTHORITY, param_uom_code[0], + param_value[3], param_value[4], param_value[5], EPSG_AUTHORITY if param_uom_code[3] else None, param_uom_code[3], + param_value[6], EPSG_AUTHORITY if param_uom_code[6] else None, param_uom_code[6], + param_value[7], param_value[8], param_value[9], EPSG_AUTHORITY if param_uom_code[7] else None, param_uom_code[7], + param_value[10], param_value[11], param_value[12], EPSG_AUTHORITY if param_uom_code[10] else None, param_uom_code[10], + param_value[13], EPSG_AUTHORITY if param_uom_code[13] else None, param_uom_code[13], + param_value[14], EPSG_AUTHORITY if param_uom_code[14] else None, param_uom_code[14], + px, py, pz, EPSG_AUTHORITY if px else None, pivot_uom_code, + deprecated + ) + + #proj_db_cursor.execute("INSERT INTO coordinate_operation VALUES (?,?,'helmert_transformation')", (EPSG_AUTHORITY, code)) + proj_db_cursor.execute('INSERT INTO helmert_transformation VALUES (' + + '?,?,?, ?,?, ?,?,?, ?,?, ?,?, ?,?, ?, ?,?,?,?,?, ?,?,?,?,?, ?,?,?, ?,?,?,?,?, ?,?,?,?,?, ?,?,?, ?,?,?, ?,?,?,?,?, ?)', arg) + +def fill_grid_transformation(proj_db_cursor): + proj_db_cursor.execute("SELECT coord_op_code, coord_op_name, coord_op_method_code, coord_op_method_name, source_crs_code, target_crs_code, area_of_use_code, coord_op_accuracy, epsg_coordoperation.deprecated FROM epsg.epsg_coordoperation LEFT JOIN epsg.epsg_coordoperationmethod USING (coord_op_method_code) WHERE coord_op_type = 'transformation' AND (coord_op_method_name LIKE 'Geographic3D to%' OR coord_op_method_name LIKE 'Geog3D to%' OR coord_op_method_name LIKE 'Point motion by grid%' OR coord_op_method_name LIKE 'Vertical Offset by Grid Interpolation%' OR coord_op_method_name IN ('NADCON', 'NTv1', 'NTv2', 'VERTCON'))") + for (code, name, method_code, method_name, source_crs_code, target_crs_code, area_of_use_code, coord_op_accuracy, deprecated) in proj_db_cursor.fetchall(): + expected_order = 1 + max_n_params = 2 + param_auth_name = [None for i in range(max_n_params)] + param_code = [None for i in range(max_n_params)] + param_name = [None for i in range(max_n_params)] + param_value = [None for i in range(max_n_params)] + param_uom_code = [None for i in range(max_n_params)] + + iterator = proj_db_cursor.execute("SELECT sort_order, cop.parameter_code, parameter_name, parameter_value, param_value_file_ref, uom_code from epsg_coordoperationparam cop LEFT JOIN epsg_coordoperationparamvalue copv LEFT JOIN epsg_coordoperationparamusage copu ON cop.parameter_code = copv.parameter_code AND copu.parameter_code = copv.parameter_code WHERE copu.coord_op_method_code = copv.coord_op_method_code AND coord_op_code = ? AND copv.coord_op_method_code = ? ORDER BY sort_order", (code, method_code)) + for (order, parameter_code, parameter_name, parameter_value, param_value_file_ref, uom_code) in iterator: + assert order <= max_n_params + assert order == expected_order + if parameter_value is not None: + assert param_value_file_ref is None or len(param_value_file_ref) == 0, (order, parameter_code, parameter_name, parameter_value, param_value_file_ref, uom_code) + if param_value_file_ref is not None and len(param_value_file_ref) != 0: + assert parameter_value is None, (order, parameter_code, parameter_name, parameter_value, param_value_file_ref, uom_code) + param_auth_name[order - 1] = EPSG_AUTHORITY + param_code[order - 1] = parameter_code + param_name[order - 1] = parameter_name + param_value[order - 1] = parameter_value if parameter_value else param_value_file_ref + param_uom_code[order - 1] = uom_code + expected_order += 1 + n_params = expected_order - 1 + + assert param_code[0] in (1050, 8656, 8657, 8666, 8732), (code, param_code[0]) + + grid2_param_auth_name = None + grid2_param_code = None + grid2_param_name = None + grid2_value = None + interpolation_crs_auth_name = None + interpolation_crs_code = None + + if method_code == 9613: # NADCON + assert param_code[1] == 8658, param_code[1] + grid2_param_auth_name = EPSG_AUTHORITY + grid2_param_code = param_code[1] + grid2_param_name = param_name[1] + grid2_value = param_value[1] + elif method_code == 1071: # Vertical Offset by Grid Interpolation (NZLVD) + assert param_code[1] == 1048, param_code[1] + interpolation_crs_auth_name = EPSG_AUTHORITY + interpolation_crs_code = str(int(param_value[1])) # needed to avoid codes like XXXX.0 + else: + assert n_params == 1, (code, method_code) + + + arg = (EPSG_AUTHORITY, code, name, + None, None, # description + scope + EPSG_AUTHORITY, method_code, method_name, + EPSG_AUTHORITY, source_crs_code, + EPSG_AUTHORITY, target_crs_code, + EPSG_AUTHORITY, area_of_use_code, + coord_op_accuracy, + EPSG_AUTHORITY, param_code[0], param_name[0], param_value[0], + grid2_param_auth_name, grid2_param_code, grid2_param_name, grid2_value, + interpolation_crs_auth_name, interpolation_crs_code, + deprecated + ) + + #proj_db_cursor.execute("INSERT INTO coordinate_operation VALUES (?,?,'grid_transformation')", (EPSG_AUTHORITY, code)) + proj_db_cursor.execute('INSERT INTO grid_transformation VALUES (' + + '?,?,?, ?,?, ?,?,?, ?,?, ?,?, ?,?, ?, ?,?,?,?, ?,?,?,?, ?,?, ?)', arg) + +def fill_other_transformation(proj_db_cursor): + # 9601: Longitude rotation + # 9616: Vertical offset + # 9618: Geographic2D with Height offsets + # 9619: Geographic2D offsets + # 9624: Affine Parametric Transformation + # 9660: Geographic3D offsets + proj_db_cursor.execute("SELECT coord_op_code, coord_op_name, coord_op_method_code, coord_op_method_name, source_crs_code, target_crs_code, area_of_use_code, coord_op_accuracy, epsg_coordoperation.deprecated FROM epsg.epsg_coordoperation LEFT JOIN epsg.epsg_coordoperationmethod USING (coord_op_method_code) WHERE coord_op_type = 'transformation' AND coord_op_method_code IN (9601, 9616, 9618, 9619, 9624, 9660)") + for (code, name, method_code, method_name, source_crs_code, target_crs_code, area_of_use_code, coord_op_accuracy, deprecated) in proj_db_cursor.fetchall(): + expected_order = 1 + max_n_params = 7 + param_auth_name = [None for i in range(max_n_params)] + param_code = [None for i in range(max_n_params)] + param_name = [None for i in range(max_n_params)] + param_value = [None for i in range(max_n_params)] + param_uom_auth_name = [None for i in range(max_n_params)] + param_uom_code = [None for i in range(max_n_params)] + + iterator = proj_db_cursor.execute("SELECT sort_order, cop.parameter_code, parameter_name, parameter_value, uom_code from epsg_coordoperationparam cop LEFT JOIN epsg_coordoperationparamvalue copv LEFT JOIN epsg_coordoperationparamusage copu ON cop.parameter_code = copv.parameter_code AND copu.parameter_code = copv.parameter_code WHERE copu.coord_op_method_code = copv.coord_op_method_code AND coord_op_code = ? AND copv.coord_op_method_code = ? ORDER BY sort_order", (code, method_code)) + for (order, parameter_code, parameter_name, parameter_value, uom_code) in iterator: + assert order <= max_n_params + assert order == expected_order + param_auth_name[order - 1] = EPSG_AUTHORITY + param_code[order - 1] = parameter_code + param_name[order - 1] = parameter_name + param_value[order - 1] = parameter_value + param_uom_auth_name[order - 1] = EPSG_AUTHORITY + param_uom_code[order - 1] = uom_code + expected_order += 1 + + arg = (EPSG_AUTHORITY, code, name, + None, None, # description + scope + EPSG_AUTHORITY, method_code, method_name, + EPSG_AUTHORITY, source_crs_code, + EPSG_AUTHORITY, target_crs_code, + EPSG_AUTHORITY, area_of_use_code, + coord_op_accuracy, + param_auth_name[0], param_code[0], param_name[0], + param_value[0], param_uom_auth_name[0], param_uom_code[0], + param_auth_name[1], param_code[1], param_name[1], param_value[1], + param_uom_auth_name[1], param_uom_code[1], param_auth_name[2], + param_code[2], param_name[2], param_value[2], + param_uom_auth_name[2], param_uom_code[2], + param_auth_name[3], param_code[3], param_name[3], param_value[3], + param_uom_auth_name[3], param_uom_code[3], param_auth_name[4], + param_code[4], param_name[4], param_value[4], + param_uom_auth_name[4], param_uom_code[4], param_auth_name[5], + param_code[5], param_name[5], param_value[5], + param_uom_auth_name[5], param_uom_code[5], param_auth_name[6], + param_code[6], param_name[6], param_value[6], + param_uom_auth_name[6], param_uom_code[6], + deprecated) + + #proj_db_cursor.execute("INSERT INTO coordinate_operation VALUES (?,?,'other_transformation')", (EPSG_AUTHORITY, code)) + proj_db_cursor.execute('INSERT INTO other_transformation VALUES (' + + '?,?,?, ?,?, ?,?,?, ?,?, ?,?, ?,?, ?, ?,?,?,?,?,?, ?,?,?,?,?,?, ?,?,?,?,?,?, ' + + '?,?,?,?,?,?, ?,?,?,?,?,?, ?,?,?,?,?,?, ?,?,?,?,?,?, ?)', arg) + +def fill_concatenated_operation(proj_db_cursor): + proj_db_cursor.execute("SELECT coord_op_code, coord_op_name, coord_op_method_code, coord_op_method_name, source_crs_code, target_crs_code, area_of_use_code, coord_op_accuracy, epsg_coordoperation.deprecated FROM epsg.epsg_coordoperation LEFT JOIN epsg.epsg_coordoperationmethod USING (coord_op_method_code) WHERE coord_op_type = 'concatenated operation'") + for (code, name, method_code, method_name, source_crs_code, target_crs_code, area_of_use_code, coord_op_accuracy, deprecated) in proj_db_cursor.fetchall(): + expected_order = 1 + max_n_params = 3 + step_code = [None for i in range(max_n_params)] + + iterator = proj_db_cursor.execute("SELECT op_path_step, single_operation_code FROM epsg_coordoperationpath WHERE concat_operation_code = ? ORDER BY op_path_step", (code,)) + for (order, single_operation_code) in iterator: + assert order <= max_n_params + assert order == expected_order + step_code[order - 1] = single_operation_code + expected_order += 1 + n_params = expected_order - 1 + if n_params == 0: # For example http://www.epsg-registry.org//export.htm?gml=urn:ogc:def:coordinateOperation:EPSG::8658 + continue + assert n_params in (2, 3), (code, n_params) + + arg = (EPSG_AUTHORITY, code, name, + None, None, # description + scope + EPSG_AUTHORITY, source_crs_code, + EPSG_AUTHORITY, target_crs_code, + EPSG_AUTHORITY, area_of_use_code, + coord_op_accuracy, + EPSG_AUTHORITY, step_code[0], + EPSG_AUTHORITY, step_code[1], + EPSG_AUTHORITY if step_code[2] else None, step_code[2], + deprecated + ) + + proj_db_cursor.execute("SELECT 1 FROM coordinate_operation_with_conversion_view WHERE code = ?", (step_code[0],)) + step1_exists = proj_db_cursor.fetchone() is not None + + proj_db_cursor.execute("SELECT 1 FROM coordinate_operation_with_conversion_view WHERE code = ?", (step_code[1],)) + step2_exists = proj_db_cursor.fetchone() is not None + + step3_exists = True + if step_code[2]: + proj_db_cursor.execute("SELECT 1 FROM coordinate_operation_with_conversion_view WHERE code = ?", (step_code[2],)) + step3_exists = proj_db_cursor.fetchone() is not None + + if step1_exists and step2_exists and step3_exists: + #proj_db_cursor.execute("INSERT INTO coordinate_operation VALUES (?,?,'concatenated_operation')", (EPSG_AUTHORITY, code)) + proj_db_cursor.execute('INSERT INTO concatenated_operation VALUES (' + + '?,?,?, ?,?, ?,?, ?,?, ?,?, ?, ?,?, ?,?, ?,?, ?)', arg) + + +def report_non_imported_operations(proj_db_cursor): + proj_db_cursor.execute("SELECT coord_op_code, coord_op_type, coord_op_name, coord_op_method_code, coord_op_method_name, source_crs_code, target_crs_code, area_of_use_code, coord_op_accuracy, epsg_coordoperation.deprecated FROM epsg.epsg_coordoperation LEFT JOIN epsg.epsg_coordoperationmethod USING (coord_op_method_code) WHERE coord_op_code NOT IN (SELECT code FROM coordinate_operation_with_conversion_view)") + rows = [] + first = True + for row in proj_db_cursor.fetchall(): + if first: + print('Non imported coordinate_operation:') + first = False + print(' ' + str(row)) + rows.append(row) + return rows + +epsg_db_conn, epsg_tmp_db_filename = ingest_epsg() + +script_dir_name = os.path.dirname(os.path.realpath(__file__)) +sql_dir_name = os.path.join(os.path.dirname(script_dir_name), 'data', 'sql') + +proj_db_filename = ':memory:' +if os.path.exists(proj_db_filename): + os.unlink(proj_db_filename) +proj_db_conn = sqlite3.connect(proj_db_filename) +proj_db_cursor = proj_db_conn.cursor() +proj_db_cursor.execute('PRAGMA foreign_keys = 1;') + +ingest_sqlite_dump(proj_db_cursor, os.path.join(sql_dir_name, 'proj_db_table_defs.sql')) +proj_db_cursor.execute("ATTACH DATABASE '%s' AS epsg;" % epsg_tmp_db_filename) + +fill_unit_of_measure(proj_db_cursor) +fill_ellipsoid(proj_db_cursor) +fill_area(proj_db_cursor) +fill_prime_meridian(proj_db_cursor) +fill_geodetic_datum(proj_db_cursor) +fill_vertical_datum(proj_db_cursor) +fill_coordinate_system(proj_db_cursor) +fill_axis(proj_db_cursor) +fill_geodetic_crs(proj_db_cursor) +fill_vertical_crs(proj_db_cursor) +fill_conversion(proj_db_cursor) +fill_projected_crs(proj_db_cursor) +fill_compound_crs(proj_db_cursor) +fill_helmert_transformation(proj_db_cursor) +fill_grid_transformation(proj_db_cursor) +fill_other_transformation(proj_db_cursor) +fill_concatenated_operation(proj_db_cursor) +non_imported_operations = report_non_imported_operations(proj_db_cursor) + +proj_db_cursor.close() +proj_db_conn.commit() + +files = {} + +# Dump the generated database and split it one .sql file per table +for line in proj_db_conn.iterdump(): + if line.startswith('INSERT INTO "'): + table_name = line[len('INSERT INTO "'):] + table_name = table_name[0:table_name.find('"')] + if table_name in files: + f = files[table_name] + else: + f = open(os.path.join(sql_dir_name, table_name) + '.sql', 'wb') + f.write("--- This file has been generated by scripts/build_db.py. DO NOT EDIT !\n\n".encode('UTF-8')) + files[table_name] = f + f.write((line + '\n').encode('UTF-8')) + elif line.startswith('CREATE TRIGGER conversion_method_check_insert_trigger'): + table_name = 'conversion_triggers' + if table_name in files: + f = files[table_name] + else: + f = open(os.path.join(sql_dir_name, table_name) + '.sql', 'wb') + f.write("--- This file has been generated by scripts/build_db.py. DO NOT EDIT !\n\n".encode('UTF-8')) + files[table_name] = f + f.write((line + '\n').encode('UTF-8')) +#f = files['coordinate_operation'] +#for row in non_imported_operations: +# f.write(("--- Non imported: " + str(row) + '\n').encode('UTF-8')) +del files + +proj_db_conn = None + +epsg_db_conn = None +if os.path.exists(epsg_tmp_db_filename): + os.unlink(epsg_tmp_db_filename) diff --git a/scripts/build_db_create_ignf.py b/scripts/build_db_create_ignf.py new file mode 100755 index 00000000..97157ec5 --- /dev/null +++ b/scripts/build_db_create_ignf.py @@ -0,0 +1,527 @@ +#!/usr/bin/env python +############################################################################### +# $Id$ +# +# Project: PROJ +# Purpose: Build SRS and coordinate transform database +# Author: Even Rouault <even.rouault at spatialys.com> +# +############################################################################### +# Copyright (c) 2018, Even Rouault <even.rouault at spatialys.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. +############################################################################### + +import copy +import json +import os +import sqlite3 +import sys + +if len(sys.argv) != 3: + print('Usage: build_db_create_ignf.py path_to_IGNF_file proj.db') + sys.exit(1) + +def escape_literal(x): + return x.replace("'", "''") + +def find_ellipsoid(cursor, line, d): + for prec in (10,9,8,7,6): + cursor.execute('SELECT code, name FROM ellipsoid WHERE code != 1024 AND semi_major_axis = ? AND (inv_flattening = ? OR (abs(semi_major_axis / (semi_major_axis - semi_minor_axis)) - ?) < 1e-%d)' % prec, (float(d['a']), float(d['rf']), float(d['rf']))) + row = cursor.fetchone() + if prec > 6 and row is None: + continue + assert row, line + ellps_code, ellps_name = row + return ellps_code, ellps_name + +def find_geogcrs_code(line,d): + pm = None + if 'pm' in d: + pm = d['pm'] + assert pm == '2.337229167', pm + + key = { 'a' : d['a'], 'rf' : d['rf'], 'towgs84' : d['towgs84'], 'pm': pm } + key_geog_crs = json.dumps(key) + if 'W84' in code: + geogcrs_code = "WGS84G" + elif 'RGFG95' in code: + geogcrs_code = "RGFG95GEO" + elif 'ETRS89' in code: + geogcrs_code = "ETRS89GEO" + elif 'RGF93' in code: + geogcrs_code = "RGF93G" + elif 'LAMB93' in code: + geogcrs_code = "RGF93G" + elif 'MILLER' in code: + geogcrs_code = "WGS84G" + elif code.startswith('GEOPORTAL'): + geogcrs_code = 'RGF93G' + elif key_geog_crs not in map_geog_crs: + max_count_common = 0 + max_common_code = None + for k in map_geog_crs: + temp = copy.copy(key) + temp['code'] = map_geog_crs[k]['code'] + if temp == json.loads(k): + count_common = 0 + while True: + if len(code) <= count_common: + break + if len(map_geog_crs[k]['code']) <= count_common: + break + if code[count_common] == map_geog_crs[k]['code'][count_common]: + count_common += 1 + else: + break + if count_common > max_count_common: + max_count_common = count_common + max_common_code = map_geog_crs[k]['code'] + assert max_count_common >= 4, (max_common_code, max_count_common, line) + geogcrs_code = max_common_code + else: + geogcrs_code = map_geog_crs[key_geog_crs]['code'] + return geogcrs_code + + +IGNF_file = sys.argv[1] +proj_db = sys.argv[2] + +conn = sqlite3.connect(proj_db) +cursor = conn.cursor() + +all_sql = [] + +geocentric_crs_name_to_datum_code = {} +map_geog_crs = {} + +for line in open(IGNF_file, 'rt').readlines(): + line = line.strip('\n') + if line[0] == '#' or line.startswith('<metadata>'): + continue + assert line[0] == '<' + code = line[1:line.find('>')] + proj4_string = line[line.find('>')+1:] + #print(code, proj4_string) + tokens = proj4_string.split(' +') + assert tokens[0] == '' + tokens = tokens[1:] + d = {} + for token in tokens: + if token == 'no_defs <>' or token == 'wktext': + continue + pos_equal = token.find('=') + assert pos_equal > 0, line + key = token[0:pos_equal] + value = token[pos_equal+1:] + d[key] = value + assert 'proj' in d, line + assert 'title' in d, line + proj = d['proj'] + + assert 'a' in d + assert 'rf' in d + assert (not 'nadgrids' in d) or d['nadgrids'] in ('null', '@null', 'ntf_r93.gsb,null'), line + assert 'towgs84' in d + + if proj == 'geocent': + + ellps_code, ellps_name = find_ellipsoid(cursor, line, d) + + datum_code = 'DATUM_' + code + + geocentric_crs_name_to_datum_code[d['title']] = datum_code + + sql = """INSERT INTO "geodetic_datum" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','%s','EPSG','8901','EPSG','1262',0);""" % (datum_code, escape_literal(d['title']), ellps_code) + all_sql.append(sql) + + #sql = """INSERT INTO "crs" VALUES('IGNF','%s','geocentric');""" % (code) + #all_sql.append(sql) + + sql = """INSERT INTO "geodetic_crs" VALUES('IGNF','%s','%s',NULL,NULL,'geocentric','EPSG','6500','IGNF','%s','EPSG','1262',NULL,0);""" % (code, escape_literal(d['title']), datum_code) + all_sql.append(sql) + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','IGNF_%s_TO_EPSG_4978','helmert_transformation');""" % (code) + #all_sql.append(sql) + + towgs84 = d['towgs84'].split(',') + assert len(towgs84) in (3, 7), towgs84 + x = towgs84[0] + y = towgs84[1] + z = towgs84[2] + if len(towgs84) == 3: + rx = 'NULL' + ry = 'NULL' + rz = 'NULL' + s = 'NULL' + r_uom_auth_name = 'NULL' + r_uom_code = 'NULL' + s_uom_auth_name = 'NULL' + s_uom_code = 'NULL' + method_code = "'1031'" + method_name = "'Geocentric translations (geocentric domain)'" + else: + rx = towgs84[3] + ry = towgs84[4] + rz = towgs84[5] + s = towgs84[6] + r_uom_auth_name = "'EPSG'" + r_uom_code = "'9104'" + s_uom_auth_name = "'EPSG'" + s_uom_code = "'9202'" + method_code = "'1033'" + method_name = "'Position Vector transformation (geocentric domain)'" + + sql = """INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_%s_TO_EPSG_4978','%s to WGS 84',NULL,NULL,'EPSG',%s,%s,'IGNF','%s','EPSG','4978','EPSG','1262',NULL,%s,%s,%s,'EPSG','9001',%s,%s,%s,%s,%s,%s,%s, %s,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (code, escape_literal(d['title']), method_code, method_name, code, x, y, z, rx, ry, rz, r_uom_auth_name, r_uom_code, s, s_uom_auth_name, s_uom_code) + all_sql.append(sql) + + if 'nadgrids' in d and d['nadgrids'] == 'ntf_r93.gsb,null': + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','IGNF_%s_TO_EPSG_4978_GRID','grid_transformation');""" % (code) + #all_sql.append(sql) + + sql = """INSERT INTO "grid_transformation" VALUES('IGNF','IGNF_%s_TO_EPSG_4978_GRID','%s to WGS 84 (2)',NULL,NULL,'EPSG','9615','NTv2','IGNF','%s','EPSG','4978','EPSG','1262',NULL,'EPSG','8656','Latitude and longitude difference file','ntf_r93.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (code, escape_literal(d['title']), code) + all_sql.append(sql) + + all_sql.append('') + + elif proj == 'longlat': + + pm = None + pm_code = "'8901'" # Greenwich + if 'pm' in d: + pm = d['pm'] + assert pm == '2.337229167', pm + pm_code = "'8903'" # Paris + + ellps_code, ellps_name = find_ellipsoid(cursor, line, d) + + if d['title'] in geocentric_crs_name_to_datum_code: + datum_code = geocentric_crs_name_to_datum_code[d['title']] + else: + datum_code = 'DATUM_' + code + sql = """INSERT INTO "geodetic_datum" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','%s','EPSG',%s,'EPSG','1262',0);""" % (datum_code, escape_literal(d['title']), ellps_code, pm_code) + all_sql.append(sql) + + #sql = """INSERT INTO "crs" VALUES('IGNF','%s','geographic 2D');""" % (code) + #all_sql.append(sql) + + cs_code = "'6424'" # Long Lat deg + if 'grades' in d['title']: + cs_code = "'6425'" # Long Lat grad + + sql = """INSERT INTO "geodetic_crs" VALUES('IGNF','%s','%s',NULL,NULL,'geographic 2D','EPSG',%s,'IGNF','%s','EPSG','1262',NULL,0);""" % (code, escape_literal(d['title']), cs_code, datum_code) + all_sql.append(sql) + + key = { 'a' : d['a'], 'rf' : d['rf'], 'towgs84' : d['towgs84'], 'pm': pm } + if "+towgs84=0.0000,0.0000,0.0000 +a=6378137.0000 +rf=298.2572221010000" in line or code == 'WGS84G': + key['code'] = code + key_geog_crs = json.dumps(key) + assert key_geog_crs not in map_geog_crs, (line, map_geog_crs[key_geog_crs]) + map_geog_crs[ key_geog_crs ] = { 'code': code, 'title': d['title'] } + + if code == 'NTFP': # Grades + assert cs_code == "'6425'" # Long Lat grad + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','IGNF_NTFP_TO_IGNF_NTFG','other_transformation');""" + #all_sql.append(sql) + + sql = """INSERT INTO "other_transformation" VALUES('IGNF','IGNF_NTFP_TO_IGNF_NTFG','Nouvelle Triangulation Francaise Paris grades to Nouvelle Triangulation Francaise Greenwich degres sexagesimaux',NULL,NULL,'EPSG','9601','Longitude rotation','IGNF','NTFP','IGNF','NTFG','EPSG','1262',0.0,'EPSG','8602','Longitude offset',2.5969213,'EPSG','9105',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" + all_sql.append(sql) + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','IGNF_%s_TO_EPSG_4326','concatenated_operation');""" % (code) + #all_sql.append(sql) + + sql = """INSERT INTO "concatenated_operation" VALUES('IGNF','IGNF_NTFP_TO_EPSG_4326','Nouvelle Triangulation Francaise Paris grades to WGS 84',NULL,NULL,'IGNF','NTFP','EPSG','4326','EPSG','1262',NULL,'IGNF','IGNF_NTFP_TO_IGNF_NTFG','IGNF','IGNF_NTFG_TO_EPSG_4326',NULL,NULL,0);""" + all_sql.append(sql) + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','IGNF_%s_TO_EPSG_4326_GRID','concatenated_operation');""" % (code) + #all_sql.append(sql) + + sql = """INSERT INTO "concatenated_operation" VALUES('IGNF','IGNF_NTFP_TO_EPSG_4326_GRID','Nouvelle Triangulation Francaise Paris grades to WGS 84 (2)',NULL,NULL,'IGNF','NTFP','EPSG','4326','EPSG','1262',NULL,'IGNF','IGNF_NTFP_TO_IGNF_NTFG','IGNF','IGNF_NTFG_TO_EPSG_4326_GRID',NULL,NULL,0);""" + all_sql.append(sql) + + continue + + assert cs_code == "'6424'" # Long Lat deg + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','IGNF_%s_TO_EPSG_4326','helmert_transformation');""" % (code) + #all_sql.append(sql) + + towgs84 = d['towgs84'].split(',') + assert len(towgs84) in (3, 7), towgs84 + x = towgs84[0] + y = towgs84[1] + z = towgs84[2] + if len(towgs84) == 3: + rx = 'NULL' + ry = 'NULL' + rz = 'NULL' + s = 'NULL' + r_uom_auth_name = 'NULL' + r_uom_code = 'NULL' + s_uom_auth_name = 'NULL' + s_uom_code = 'NULL' + method_code = "'9603'" + method_name = "'Geocentric translations (geog2D domain)'" + + else: + rx = towgs84[3] + ry = towgs84[4] + rz = towgs84[5] + s = towgs84[6] + r_uom_auth_name = "'EPSG'" + r_uom_code = "'9104'" + s_uom_auth_name = "'EPSG'" + s_uom_code = "'9202'" + method_code = "'9606'" + method_name = "'Position Vector transformation (geog2D domain)'" + + sql = """INSERT INTO "helmert_transformation" VALUES('IGNF','IGNF_%s_TO_EPSG_4326','%s to WGS 84',NULL,NULL,'EPSG',%s,%s,'IGNF','%s','EPSG','4326','EPSG','1262',NULL,%s,%s,%s,'EPSG','9001',%s,%s,%s,%s,%s,%s,%s, %s,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (code, escape_literal(d['title']), method_code, method_name, code, x, y, z, rx, ry, rz, r_uom_auth_name, r_uom_code, s, s_uom_auth_name, s_uom_code) + all_sql.append(sql) + + if 'nadgrids' in d and d['nadgrids'] == 'ntf_r93.gsb,null': + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','IGNF_%s_TO_EPSG_4326_GRID','grid_transformation');""" % (code) + #all_sql.append(sql) + + sql = """INSERT INTO "grid_transformation" VALUES('IGNF','IGNF_%s_TO_EPSG_4326_GRID','%s to WGS 84 (2)',NULL,NULL,'EPSG','9615','NTv2','IGNF','%s','EPSG','4326','EPSG','1262',NULL,'EPSG','8656','Latitude and longitude difference file','ntf_r93.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (code, escape_literal(d['title']), code) + all_sql.append(sql) + + all_sql.append('') + + elif proj == 'tmerc': + + geogcrs_code = find_geogcrs_code(line,d) + + assert 'x_0' in d + assert 'y_0' in d + assert 'k_0' in d + assert 'lat_0' in d + assert 'lon_0' in d + assert 'units' in d and d['units'] == 'm' + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','CONV_%s','conversion');""" % (code) + #all_sql.append(sql) + + sql = """INSERT INTO "conversion" VALUES('IGNF','CONV_%s','Conversion for %s',NULL,NULL,'EPSG','1262','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',%s,'EPSG','9102','EPSG','8802','Longitude of natural origin',%s,'EPSG','9102','EPSG','8805','Scale factor at natural origin',%s,'EPSG','9201','EPSG','8806','False easting',%s,'EPSG','9001','EPSG','8807','False northing',%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (code, escape_literal(d['title']), d['lat_0'], d['lon_0'], d['k_0'], d['x_0'], d['y_0']) + all_sql.append(sql) + + #sql = """INSERT INTO "crs" VALUES('IGNF','%s','projected');""" % (code) + #all_sql.append(sql) + + sql = """INSERT INTO "projected_crs" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','4499','IGNF','%s','IGNF','CONV_%s','EPSG','1262',NULL,0);""" % (code, escape_literal(d['title']), geogcrs_code, code) + all_sql.append(sql) + + all_sql.append('') + + elif proj == 'laea': + + geogcrs_code = find_geogcrs_code(line,d) + + assert 'x_0' in d + assert 'y_0' in d + assert 'lat_0' in d + assert 'lon_0' in d + assert 'units' in d and d['units'] == 'm' + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','CONV_%s','conversion');""" % (code) + #all_sql.append(sql) + + sql = """INSERT INTO "conversion" VALUES('IGNF','CONV_%s','Conversion for %s',NULL,NULL,'EPSG','1262','EPSG','9820','Lambert Azimuthal Equal Area','EPSG','8801','Latitude of natural origin',%s,'EPSG','9102','EPSG','8802','Longitude of natural origin',%s,'EPSG','9102','EPSG','8806','False easting',%s,'EPSG','9001','EPSG','8807','False northing',%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (code, escape_literal(d['title']), d['lat_0'], d['lon_0'], d['x_0'], d['y_0']) + all_sql.append(sql) + + #sql = """INSERT INTO "crs" VALUES('IGNF','%s','projected');""" % (code) + #all_sql.append(sql) + + sql = """INSERT INTO "projected_crs" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','4499','IGNF','%s','IGNF','CONV_%s','EPSG','1262',NULL,0);""" % (code, escape_literal(d['title']), geogcrs_code, code) + all_sql.append(sql) + + all_sql.append('') + + elif proj == 'lcc': + + geogcrs_code = find_geogcrs_code(line,d) + + assert 'x_0' in d + assert 'y_0' in d + assert 'lat_0' in d + assert 'lat_1' in d + assert 'k_0' in d or 'lat_2' in d, line + assert 'lon_0' in d + assert 'units' in d and d['units'] == 'm' + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','CONV_%s','conversion');""" % (code) + #all_sql.append(sql) + + if 'lat_2' in d: + sql = """INSERT INTO "conversion" VALUES('IGNF','CONV_%s','Conversion for %s',NULL,NULL,'EPSG','1262','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',%s,'EPSG','9102','EPSG','8822','Longitude of false origin',%s,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',%s,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',%s,'EPSG','9102','EPSG','8826','Easting at false origin',%s,'EPSG','9001','EPSG','8827','Northing at false origin',%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (code, escape_literal(d['title']), d['lat_0'], d['lon_0'], d['lat_1'], d['lat_2'], d['x_0'], d['y_0']) + else: + assert d['lat_0'] == d['lat_1'], line + sql = """INSERT INTO "conversion" VALUES('IGNF','CONV_%s','Conversion for %s',NULL,NULL,'EPSG','1262','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',%s,'EPSG','9102','EPSG','8802','Longitude of natural origin',%s,'EPSG','9102','EPSG','8805','Scale factor at natural origin',%s,'EPSG','9201','EPSG','8806','False easting',%s,'EPSG','9001','EPSG','8807','False northing',%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (code, escape_literal(d['title']), d['lat_0'], d['lon_0'], d['k_0'], d['x_0'], d['y_0']) + + all_sql.append(sql) + + #sql = """INSERT INTO "crs" VALUES('IGNF','%s','projected');""" % (code) + #all_sql.append(sql) + + sql = """INSERT INTO "projected_crs" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','4499','IGNF','%s','IGNF','CONV_%s','EPSG','1262',NULL,0);""" % (code, escape_literal(d['title']), geogcrs_code, code) + all_sql.append(sql) + + all_sql.append('') + + elif proj == 'eqc': + + geogcrs_code = find_geogcrs_code(line,d) + + assert 'x_0' in d, line + assert 'y_0' in d, line + assert 'lat_0' in d, line + assert 'lat_ts' in d, line + assert 'lon_0' in d, line + assert 'units' in d and d['units'] == 'm', line + assert float(d['lat_0']) == 0, line + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','CONV_%s','conversion');""" % (code) + #all_sql.append(sql) + + sql = """INSERT INTO "conversion" VALUES('IGNF','CONV_%s','Conversion for %s',NULL,NULL,'EPSG','1262','EPSG','1028','Equidistant Cylindrical','EPSG','8823','Latitude of 1st standard parallel',%s,'EPSG','9102','EPSG','8802','Longitude of natural origin',%s,'EPSG','9102','EPSG','8806','False easting',%s,'EPSG','9001','EPSG','8807','False northing',%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (code, escape_literal(d['title']), d['lat_ts'], d['lon_0'], d['x_0'], d['y_0']) + all_sql.append(sql) + + #sql = """INSERT INTO "crs" VALUES('IGNF','%s','projected');""" % (code) + #all_sql.append(sql) + + sql = """INSERT INTO "projected_crs" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','4499','IGNF','%s','IGNF','CONV_%s','EPSG','1262',NULL,0);""" % (code, escape_literal(d['title']), geogcrs_code, code) + all_sql.append(sql) + + all_sql.append('') + + elif proj == 'gstmerc': + + geogcrs_code = find_geogcrs_code(line,d) + + assert 'x_0' in d + assert 'y_0' in d + assert 'k_0' in d + assert 'lat_0' in d + assert 'lon_0' in d + assert 'units' in d and d['units'] == 'm' + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','CONV_%s','conversion');""" % (code) + #all_sql.append(sql) + + sql = """INSERT INTO "conversion" VALUES('IGNF','CONV_%s','Conversion for %s',NULL,NULL,'EPSG','1262',NULL,NULL,'Gauss Schreiber Transverse Mercator','EPSG','8801','Latitude of natural origin',%s,'EPSG','9102','EPSG','8802','Longitude of natural origin',%s,'EPSG','9102','EPSG','8805','Scale factor at natural origin',%s,'EPSG','9201','EPSG','8806','False easting',%s,'EPSG','9001','EPSG','8807','False northing',%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (code, escape_literal(d['title']), d['lat_0'], d['lon_0'], d['k_0'], d['x_0'], d['y_0']) + all_sql.append(sql) + + #sql = """INSERT INTO "crs" VALUES('IGNF','%s','projected');""" % (code) + #all_sql.append(sql) + + sql = """INSERT INTO "projected_crs" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','4499','IGNF','%s','IGNF','CONV_%s','EPSG','1262',NULL,0);""" % (code, escape_literal(d['title']), geogcrs_code, code) + all_sql.append(sql) + + all_sql.append('') + + elif proj == 'stere': + + geogcrs_code = find_geogcrs_code(line,d) + + assert 'x_0' in d + assert 'y_0' in d + if 'k' in d or 'k_0' in d: + print('k/k_0 ignored for ' + line) + assert 'lat_0' in d + assert float(d['lat_0']) == -90, line + assert 'lat_ts' in d + assert 'lon_0' in d + assert float(d['lon_0']) == 140, line + assert 'units' in d and d['units'] == 'm' + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','CONV_%s','conversion');""" % (code) + #all_sql.append(sql) + + sql = """INSERT INTO "conversion" VALUES('IGNF','CONV_%s','Conversion for %s',NULL,NULL,'EPSG','1262','EPSG','9829','Polar Stereographic (variant B)','EPSG','8832','Latitude of standard parallel',%s,'EPSG','9102','EPSG','8833','Longitude of origin',%s,'EPSG','9102','EPSG','8806','False easting',%s,'EPSG','9001','EPSG','8807','False northing',%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (code, escape_literal(d['title']), d['lat_ts'], d['lon_0'], d['x_0'], d['y_0']) + all_sql.append(sql) + + #sql = """INSERT INTO "crs" VALUES('IGNF','%s','projected');""" % (code) + #all_sql.append(sql) + + # Hardcoding 1025 for coordinate system since the only instance uses it + sql = """INSERT INTO "projected_crs" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','1025','IGNF','%s','IGNF','CONV_%s','EPSG','1262',NULL,0);""" % (code, escape_literal(d['title']), geogcrs_code, code) + all_sql.append(sql) + + all_sql.append('') + + elif proj == 'mill': + + geogcrs_code = find_geogcrs_code(line,d) + + assert 'x_0' in d + assert 'y_0' in d + assert 'lon_0' in d + assert 'units' in d and d['units'] == 'm' + assert float(d['x_0']) == 0, d + assert float(d['y_0']) == 0, d + assert float(d['lon_0']) == 0, d + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','CONV_%s','conversion');""" % (code) + #all_sql.append(sql) + + sql = """INSERT INTO "conversion" VALUES('IGNF','CONV_%s','Conversion for %s',NULL,NULL,'EPSG','1262',NULL,NULL,'PROJ mill',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (code, escape_literal(d['title'])) + all_sql.append(sql) + + #sql = """INSERT INTO "crs" VALUES('IGNF','%s','projected');""" % (code) + #all_sql.append(sql) + + sql = """INSERT INTO "projected_crs" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','4499','IGNF','%s','IGNF','CONV_%s','EPSG','1262',NULL,0);""" % (code, escape_literal(d['title']), geogcrs_code, code) + all_sql.append(sql) + + all_sql.append('') + + else: + assert False, line + + +all_sql.append("""INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('ntf_r93.gsb', -- as referenced by the IGNF registry + 'ntf_r93.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); +""") + +#for k in map_geog_crs: +# print k, map_geog_crs[k] + +script_dir_name = os.path.dirname(os.path.realpath(__file__)) +sql_dir_name = os.path.join(os.path.dirname(script_dir_name), 'data', 'sql') + +f = open(os.path.join(sql_dir_name, 'ignf') + '.sql', 'wb') +f.write("--- This file has been generated by scripts/build_db_create_ignf.py from the PROJ4 IGNF definition file. DO NOT EDIT !\n\n".encode('UTF-8')) +for sql in all_sql: + f.write((sql + '\n').encode('UTF-8')) +f.close() + diff --git a/scripts/build_db_create_ignf_from_xml.py b/scripts/build_db_create_ignf_from_xml.py new file mode 100755 index 00000000..a0ab0168 --- /dev/null +++ b/scripts/build_db_create_ignf_from_xml.py @@ -0,0 +1,1071 @@ +#!/usr/bin/env python +############################################################################### +# $Id$ +# +# Project: PROJ +# Purpose: Build SRS and coordinate transform database from IGNF registry +# Author: Even Rouault <even.rouault at spatialys.com> +# +############################################################################### +# Copyright (c) 2018, Even Rouault <even.rouault at spatialys.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. +############################################################################### + +from lxml import etree +import os +import requests +import sys + +url = "http://librairies.ign.fr/geoportail/resources/IGNF.xml" + +if len(sys.argv) not in (1, 2) or (len(sys.argv) == 2 and sys.argv[1].startswith('-')): + print('Usage: build_db_create_ignf.py [path_to_IGNF.xml]') + print('') + print('If local filename is not used, then %s is downloaded.' % url) + sys.exit(1) + +def escape_literal(x): + return x.replace("'", "''") + +def strip_ns_prefix(tree): + for element in tree.iter('*'): + element.tag = etree.QName(element).localname + for att in element.attrib: + newkey = att[att.find('}')+1:] + val = element.attrib[att] + del element.attrib[att] + element.attrib[newkey] = val + return tree + +all_sql = [] +all_sql_concat = [] # for concatenated_operation + +if len(sys.argv) == 1: + r = requests.get(url) + root = etree.fromstring(r.content) +else: + IGNF_file = sys.argv[1] + tree = etree.parse(open(IGNF_file, 'rt')) + root = tree.getroot() + +root = strip_ns_prefix(root) + +# Retrieve and insert metada +version = root.find('versionNumber').find('CharacterString').text +date = root.find('versionDate').find('Date').text + +all_sql.append("""INSERT INTO "metadata" VALUES('IGNF.SOURCE', '%s');""" % escape_literal(url)) +all_sql.append("""INSERT INTO "metadata" VALUES('IGNF.VERSION', '%s');""" % version) +all_sql.append("""INSERT INTO "metadata" VALUES('IGNF.DATE', '%s');""" % date) + +def get_epsg_code(txt): + assert ':EPSG:' in txt + return txt[txt.rfind(':')+1:] + + +def ingest_ellipsoids(root, all_sql): + mapEllpsId = {} + for ellps in root.iter('ellipsoid'): + E = ellps.find('Ellipsoid') + id = E.attrib['id'] + names = [name.text for name in E.iter('name')] + #print(id, names) + if len(names) == 2: + mapEllpsId[id] = ('EPSG', get_epsg_code(names[1])) + else: + assert len(names) == 1 + assert E.find('secondDefiningParameter').find('SecondDefiningParameter').find('isSphere').text == 'sphere' + mapEllpsId[id] = ('IGNF', id) + all_sql.append("""INSERT INTO "ellipsoid" VALUES('IGNF','%s','%s',NULL,'PROJ', 'EARTH', %s,'EPSG','9001',0,NULL,0);""" % (id, names[0], E.find('semiMajorAxis').text)) + + return mapEllpsId + + +def ingest_prime_meridians(root, all_sql): + mapPmId = {} + for pm in root.iter('primeMeridian'): + PM = pm.find('PrimeMeridian') + id = PM.attrib['id'] + names = [name.text for name in PM.iter('name')] + #print(id, names) + assert len(names) == 2 + mapPmId[id] = ('EPSG', get_epsg_code(names[1])) + + return mapPmId + +def extract_id_from_href(txt): + assert '#' in txt + return txt[txt.rfind('#')+1:] + +def ingest_datums(root, all_sql, mapEllpsId, mapPmId): + mapDatumId = {} + invalidDatumId = set() + mapVerticalDatumId = {} + + for datum in root.iter('datum'): + node = datum.find('GeodeticDatum') + if node is not None: + id = node.attrib['id'] + names = [_name.text for _name in node.iter('name')] + if len(names) == 2: + if id == 'REG0020002': + assert get_epsg_code(names[1]) == '6275' + print('Error in registry. it points to EPSG:6275 instead of EPSG:6807 for NTF Paris') + mapDatumId[id] = ('EPSG', '6807') + else: + mapDatumId[id] = ('EPSG', get_epsg_code(names[1])) + else: + assert len(names) == 1, names + pmNode = node.find('usesPrimeMeridian') + if pmNode is None or 'href' not in pmNode.attrib: + print('Invalid GeodeticDatum: ' + id) + invalidDatumId.add(id) + continue + pmCode = extract_id_from_href(pmNode.attrib['href']) + assert pmCode in mapPmId + ellpsCode = extract_id_from_href(node.find('usesEllipsoid').attrib['href']) + assert ellpsCode in mapEllpsId + + # We sheat by using EPSG:1262 = World for area of use + sql = """INSERT INTO "geodetic_datum" VALUES('IGNF','%s','%s',NULL,NULL,'%s','%s','%s','%s','EPSG','1262',0);""" % (id, names[0], mapEllpsId[ellpsCode][0], mapEllpsId[ellpsCode][1], mapPmId[pmCode][0], mapPmId[pmCode][1]) + all_sql.append(sql) + + mapDatumId[id] = ('IGNF', id) + else: + node = datum.find('VerticalDatum') + if node is not None: + id = node.attrib['id'] + names = [_name.text for _name in node.iter('name')] + + sql = """INSERT INTO "vertical_datum" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','1262',0);"""% (id, names[0]) + all_sql.append(sql) + + mapVerticalDatumId[id] = ('IGNF', id) + else: + assert False + + return mapDatumId, mapVerticalDatumId, invalidDatumId + + +mapEllpsId = ingest_ellipsoids(root, all_sql) +mapPmId = ingest_prime_meridians(root, all_sql) +mapDatumId, mapVerticalDatumId, invalidDatumId = ingest_datums(root, all_sql, mapEllpsId, mapPmId) + +areaOfUseMap = {} + +def get_area_of_use(domainOfValidity): + extent = domainOfValidity.find('EX_Extent') + desc = extent.find('description').find('CharacterString').text + if desc is None: + return 'EPSG', '1262' + + if desc in areaOfUseMap: + return areaOfUseMap[desc] + + geographicElement = extent.find('geographicElement') + if geographicElement is None: + print('No geographicElement for area of use ' + desc) + return 'EPSG', '1262' + + code = str(len(areaOfUseMap) + 1) + areaOfUseMap[desc] = ['IGNF', code ] + EX_GeographicBoundingBox = geographicElement.find('EX_GeographicBoundingBox') + south = EX_GeographicBoundingBox.find('southBoundLatitude').find('Decimal').text + west = EX_GeographicBoundingBox.find('westBoundLongitude').find('Decimal').text + north = EX_GeographicBoundingBox.find('northBoundLatitude').find('Decimal').text + east = EX_GeographicBoundingBox.find('eastBoundLongitude').find('Decimal').text + all_sql.append("""INSERT INTO "area" VALUES('IGNF','%s','%s','%s',%s,%s,%s,%s,0);""" % (code, escape_literal(desc), escape_literal(desc), south, north, west, east)) + return areaOfUseMap[desc] + +mapCrsId = {} +mapGeocentricId = {} + +# This is a trick to find a GeocentricCRS and its related GeographicCRS +# We could use the name, but if we use the datum code + area of use, it is +# more reliable +# We need this since the registry only exposes GeocentricCRS <--> GeocentricCRS +# transformations, and we need to port them to GeographicCRS as well +mapDatumAndAreaToGeocentricId = {} +mapGeocentricIdToDatumAndArea = {} + +aliasOfCRS = {} + +for node in root.iterfind('.//GeocentricCRS'): + id = node.attrib['id'] + names = [_name.text for _name in node.iter('name')] + name = names[0] + + cartesianCS = extract_id_from_href(node.find('usesCartesianCS').attrib['href']) + assert cartesianCS == 'TYP_CRG10' + datumCode = extract_id_from_href(node.find('usesGeodeticDatum').attrib['href']) + if datumCode in invalidDatumId: + print('Skipping GeocentricCRS %s since its datum is unknown' % id) + continue + assert datumCode in mapDatumId, (id, name, datumCode) + + area_of_use = get_area_of_use(node.find('domainOfValidity')) + + #sql = """INSERT INTO "crs" VALUES('IGNF','%s','geocentric');""" % (id) + #all_sql.append(sql) + + sql = """INSERT INTO "geodetic_crs" VALUES('IGNF','%s','%s',NULL,NULL,'geocentric','EPSG','6500','%s','%s','%s','%s',NULL,0);""" % (id, name, mapDatumId[datumCode][0], mapDatumId[datumCode][1], area_of_use[0], area_of_use[1]) + all_sql.append(sql) + + mapCrsId[id] = ('IGNF', id) + mapGeocentricId[id] = ('IGNF', id) + + if len(names) >= 2 and names[1].startswith('http://registre.ign.fr/ign/IGNF/crs/IGNF/'): + alias = names[1][len('http://registre.ign.fr/ign/IGNF/crs/IGNF/'):] + aliasOfCRS[id] = [('IGNF', alias)] + + if id == 'WGS84': + aliasOfCRS[id].append(('EPSG', '4978')) + + #sql = """INSERT INTO "crs" VALUES('IGNF','%s','geocentric'); -- alias of %s""" % (alias, id) + #all_sql.append(sql) + + sql = """INSERT INTO "geodetic_crs" VALUES('IGNF','%s','%s',NULL,NULL,'geocentric','EPSG','6500','%s','%s','%s','%s',NULL,0);""" % (alias, name, mapDatumId[datumCode][0], mapDatumId[datumCode][1], area_of_use[0], area_of_use[1]) + all_sql.append(sql) + + key = str((mapDatumId[datumCode], area_of_use)) + assert key not in mapDatumAndAreaToGeocentricId, (id, name) + mapDatumAndAreaToGeocentricId[key] = ('IGNF', id) + mapGeocentricIdToDatumAndArea[id] = key + +mapGeographicId = {} +mapDatumAndAreaToGeographicId = {} + +for node in root.iterfind('.//GeographicCRS'): + id = node.attrib['id'] + names = [_name.text for _name in node.iter('name')] + name = names[0] + + ellipsoidalCS = extract_id_from_href(node.find('usesEllipsoidalCS').attrib['href']) + assert ellipsoidalCS in ('TYP_CRG24', 'TYP_CRG26', 'TYP_CRG22', 'TYP_CRG28', 'TYP_CRG29'), (id, name, ellipsoidalCS) + datumCode = extract_id_from_href(node.find('usesGeodeticDatum').attrib['href']) + if datumCode in invalidDatumId: + print('Skipping GeographicCRS %s since its datum is unknown' % id) + continue + assert datumCode in mapDatumId, (id, name, datumCode) + + area_of_use = get_area_of_use(node.find('domainOfValidity')) + + csCode = None + type = 'geographic 2D' + if ellipsoidalCS in ('TYP_CRG24', 'TYP_CRG28'): # Long, Lat deg + csCode = '6424' + if ellipsoidalCS in ('TYP_CRG26', 'TYP_CRG29'): # Long, Lat deg, h m + csCode = '6426' + type = 'geographic 3D' + if ellipsoidalCS == 'TYP_CRG22': # Long, Lat grad + csCode = '6425' + + #sql = """INSERT INTO "crs" VALUES('IGNF','%s','%s');""" % (id, type) + #all_sql.append(sql) + + sql = """INSERT INTO "geodetic_crs" VALUES('IGNF','%s','%s',NULL,NULL,'%s','EPSG','%s','%s','%s','%s','%s',NULL,0);""" % (id, name, type, csCode, mapDatumId[datumCode][0], mapDatumId[datumCode][1], area_of_use[0], area_of_use[1]) + all_sql.append(sql) + + if id == 'WGS84G': + aliasOfCRS[id] = [('EPSG','4326')] + + if len(names) >= 2 and names[1].startswith('http://registre.ign.fr/ign/IGNF/crs/IGNF/'): + alias = names[1][len('http://registre.ign.fr/ign/IGNF/crs/IGNF/'):] + assert id != 'WGS84G' + aliasOfCRS[id] = [('IGNF', alias)] + + #sql = """INSERT INTO "crs" VALUES('IGNF','%s','%s'); -- alias of %s""" % (alias, type, id) + #all_sql.append(sql) + + sql = """INSERT INTO "geodetic_crs" VALUES('IGNF','%s','%s',NULL,NULL,'%s','EPSG','%s','%s','%s','%s','%s',NULL,0);""" % (alias, name, type, csCode, mapDatumId[datumCode][0], mapDatumId[datumCode][1], area_of_use[0], area_of_use[1]) + all_sql.append(sql) + + mapCrsId[id] = ('IGNF', id) + mapGeographicId[id] = ('IGNF', id) + key = str((mapDatumId[datumCode], area_of_use)) + if key in mapDatumAndAreaToGeographicId: + #print('Adding ' + id + ' to ' + str(mapDatumAndAreaToGeographicId[key])) + mapDatumAndAreaToGeographicId[key].append(id) + else: + mapDatumAndAreaToGeographicId[key] = [id] + + + # Create a 2D version to be able to create compoundCRS with it + if id == 'RGWF96GEO': + + id = 'RGWF96G' + csCode = '6424' + type = 'geographic 2D' + + #sql = """INSERT INTO "crs" VALUES('IGNF','%s','%s');""" % (id, type) + #all_sql.append(sql) + + sql = """INSERT INTO "geodetic_crs" VALUES('IGNF','%s','%s',NULL,NULL,'%s','EPSG','%s','%s','%s','%s','%s',NULL,0);""" % (id, name, type, csCode, mapDatumId[datumCode][0], mapDatumId[datumCode][1], area_of_use[0], area_of_use[1]) + all_sql.append(sql) + + mapCrsId[id] = ('IGNF', id) + mapGeographicId[id] = ('IGNF', id) + key = str((mapDatumId[datumCode], area_of_use)) + if key in mapDatumAndAreaToGeographicId: + #print('Adding ' + id + ' to ' + str(mapDatumAndAreaToGeographicId[key])) + mapDatumAndAreaToGeographicId[key].append(id) + else: + mapDatumAndAreaToGeographicId[key] = [id] + + +mapVerticalCrsId = {} +for node in root.iterfind('.//VerticalCRS'): + id = node.attrib['id'] + names = [_name.text for _name in node.iter('name')] + name = names[0] + + verticalCS = extract_id_from_href(node.find('usesVerticalCS').attrib['href']) + assert verticalCS in ('TYP_CRG92','TYP_CRG91'), verticalCS + datumCode = extract_id_from_href(node.find('usesVerticalDatum').attrib['href']) + assert datumCode in mapVerticalDatumId, (id, name, datumCode) + + # VerticalCRS and GeocentricCRS can have same IDs ! like 'STPM50' + id_modified = id + if id in mapCrsId: + print('VerticalCRS %s conflicts with a Geodetic one of same name. Appending _V for disambiguation'% id) + id_modified += '_V' + + #sql = """INSERT INTO "crs" VALUES('IGNF','%s','vertical');""" % (id_modified) + #all_sql.append(sql) + + area_of_use = get_area_of_use(node.find('domainOfValidity')) + + sql = """INSERT INTO "vertical_crs" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','6499','%s','%s','%s','%s',0);""" % (id_modified, name, mapVerticalDatumId[datumCode][0], mapVerticalDatumId[datumCode][1], area_of_use[0], area_of_use[1]) + all_sql.append(sql) + + if len(names) >= 2 and names[1].startswith('http://registre.ign.fr/ign/IGNF/crs/IGNF/'): + assert False + + mapCrsId[id] = ('IGNF', id_modified) + mapVerticalCrsId[id] = ('IGNF', id_modified) + + +mapGridURLs = { + # France metropole + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/RAF09.mnt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/metropole/RAF09.mnt', + + # Corse + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/RAC09.mnt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/metropole/RAC09.mnt', + + + + # Guadeloupe RGAF09 + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/gg10_gtbt.mnt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RAGTBT2016.mnt', + + 'RAGTBT2016.mnt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RAGTBT2016.mnt', + + # Les Saintes RGAF09 + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/gg10_ls.mnt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RALS2016.mnt', + + 'RALS2016.mnt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RALS2016.mnt', + + # Martinique RGAF09 + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/gg10_mart.mnt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RAMART2016.mnt', + + 'RAMART2016.MNT': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RAMART2016.mnt', + + # Marie Galante RGAF09 + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/gg10_mg.mnt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RAMG2016.mnt', + + 'RAMG2016.mnt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RAMG2016.mnt', + + # Saint Barthelemy RGAF09 + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/gg10_sb.mnt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/gg10_sbv2.mnt', + + 'gg10_sbv2.mnt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/gg10_sbv2.mnt', + + # Saint Martin RGAF09 + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/gg10_sm.mnt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/gg10_smv2.mnt', + + 'gg10_smv2.mnt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/gg10_smv2.mnt', + + # La Desirade RGAF09 + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/gg10_ld.mnt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RALD2016.mnt', + + 'RALD2016.mnt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RALD2016.mnt', + + + # Guadeloupe WGS84 + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggg00.txt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggg00v2.mnt', + + # Les Saintes WGS84 + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggg00_ls.txt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggg00_lsv2.mnt', + + 'ggg00_lsv2.mnt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggg00_lsv2.mnt', + + # Martinique WGS84 + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggm00.txt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggm00v2.mnt', + + # Saint Barthelemy WGS84 + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggg00_sb.txt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggg00_sbv2.mnt', + + # Saint Martin WGS84 + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggg00_sm.txt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggg00_smv2.mnt', + + # La Desirade WGS84 + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggg00_ld.txt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RALDW842016.mnt', + + 'RALDW842016.mnt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RALDW842016.mnt', + + + # Guyane RGF95 + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggguy00.txt': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggguy15.mnt', + + + # Reunion grille RAR + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/RAR07_bl.gra': + 'http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RAR07_bl.gra', +} + +for node in root.iterfind('.//Transformation'): + id = node.attrib['id'] + names = [_name.text for _name in node.iter('name')] + name = names[0] + + sourceCRS = extract_id_from_href(node.find('sourceCRS').attrib['href']) + if not sourceCRS in mapCrsId: + print('Skipping ' + name + ', missing sourceCRS') + continue + + targetCRS = node.find('targetCRS') + if targetCRS is None or 'href' not in targetCRS.attrib: + print('Skipping ' + name + ', missing targetCRS') + continue + targetCRS = extract_id_from_href(targetCRS.attrib['href']) + if not targetCRS in mapCrsId: + print('Skipping ' + name + ', missing targetCRS') + continue + + area_of_use = get_area_of_use(node.find('domainOfValidity')) + + usesMethod = extract_id_from_href(node.find('usesMethod').attrib['href']) + if usesMethod in ('Geographic3DtoGravityRelatedHeight_IGN'): + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','grid_transformation');""" % id + #all_sql.append(sql) + + usesValue = node.find('usesValue') + paramValue = usesValue.find('ParameterValue') + filename = paramValue.find('valueFile').text + + if filename in mapGridURLs: + print('Fixing URL of ' + filename + ' to ' + mapGridURLs[filename]) + filename = mapGridURLs[filename] + + r = requests.head(filename, allow_redirects = True ) + if r.status_code not in (200, 302): + assert False, (r.status_code, id, name, filename) + + assert sourceCRS in mapVerticalCrsId, (id, name, sourceCRS) + assert targetCRS in mapGeographicId, (id, name, targetCRS) + + # Switching source and target to be consistent with the EPSG practice and the naming of the method + sql = """INSERT INTO "grid_transformation" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','%s','%s','%s','%s','%s','%s',NULL,'EPSG','8666','Geoid (height correction) model file','%s',NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (id, name, mapCrsId[targetCRS][0], mapCrsId[targetCRS][1], mapCrsId[sourceCRS][0], mapCrsId[sourceCRS][1], area_of_use[0], area_of_use[1], filename) + all_sql.append(sql) + + continue + + + def get_alias_of(code): + if code in aliasOfCRS: + return [ ('IGNF', code) ] + aliasOfCRS[code] + return [ ('IGNF', code) ] + + + + if id == 'TSG1240': # 'NTF geographiques Paris (gr) vers NTF GEOGRAPHIQUES GREENWICH (DMS)', 'from1Dto1D') + #print('Skipping ' + str((id, name))) + assert usesMethod == 'from1Dto1D', usesMethod + + for src in get_alias_of(sourceCRS): + for target in get_alias_of(targetCRS): + + custom_id = id + if not ((src == ('IGNF', sourceCRS) and target == ('IGNF', targetCRS))): + custom_id = id + '_' + src[0] + '_' + src[1] + '_TO_' + target[0] + '_' + target[1] + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','other_transformation');""" % custom_id + #all_sql.append(sql) + + sql = """INSERT INTO "other_transformation" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','9601','Longitude rotation','%s','%s','%s','%s','%s','%s',0.0,'EPSG','8602','Longitude offset',2.5969213,'EPSG','9105',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);"""% (custom_id, name, src[0], src[1], target[0], target[1], area_of_use[0], area_of_use[1]) + all_sql.append(sql) + + continue + + if usesMethod == 'TSGM510': # geocentric interpolation + + id = 'NTFG_TO_RGF93G' + + assert sourceCRS == 'NTF' + assert targetCRS == 'RGF93' + + sourceCRS = 'NTFG' + targetCRS = 'RGF93G' + + for src in get_alias_of(sourceCRS): + # As the transformation from RGF93G to WGS84 is a zero-translation helmert, + # we can also use the grid for NTF->WGS84. This makes the coordinate + # operation finder happier + for target in get_alias_of(targetCRS) + [('EPSG','4326')]: + + custom_id = id + if not ((src == ('IGNF', sourceCRS) and target == ('IGNF', targetCRS))): + custom_id = src[0] + '_' + src[1] + '_TO_' + target[0] + '_' + target[1] + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','grid_transformation');""" % (custom_id) + #all_sql.append(sql) + + sql = """INSERT INTO "grid_transformation" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','9615','NTv2','%s','%s','%s','%s','%s','%s',NULL,'EPSG','8656','Latitude and longitude difference file','ntf_r93.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (custom_id, name, src[0], src[1], target[0], target[1], area_of_use[0], area_of_use[1]) + all_sql.append(sql) + + continue + + if usesMethod == 'Vfrom1Dto1D': + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','other_transformation');""" % id + #all_sql.append(sql) + + usesValue = node.find('usesValue') + paramValue = usesValue.find('ParameterValue') + value = paramValue.find('value').text + uom = paramValue.find('value').attrib['uom'] + assert uom == 'm' + + sql = """INSERT INTO "other_transformation" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','9616','Vertical Offset','%s','%s','%s','%s','%s','%s',NULL,'EPSG','8603','Vertical Offset',%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);"""% (id, name, mapCrsId[sourceCRS][0], mapCrsId[sourceCRS][1], mapCrsId[targetCRS][0], mapCrsId[targetCRS][1], area_of_use[0], area_of_use[1], value) + all_sql.append(sql) + + continue + + assert usesMethod in ('TSGM120', 'TSGM110', 'TSGM112', 'TSGM111'), (id, name, usesMethod) + + assert sourceCRS in mapGeocentricId + assert targetCRS in mapGeocentricId + + vals =[val for val in node.iterfind('usesValue')] + assert len(vals) in (3,7) + x = vals[0].find('ParameterValue').find('value').text + assert vals[0].find('ParameterValue').find('value').attrib['uom'] == 'm' + y = vals[1].find('ParameterValue').find('value').text + assert vals[1].find('ParameterValue').find('value').attrib['uom'] == 'm' + z = vals[2].find('ParameterValue').find('value').text + assert vals[2].find('ParameterValue').find('value').attrib['uom'] == 'm' + + if len(vals) == 3: + rx = 'NULL' + ry = 'NULL' + rz = 'NULL' + s = 'NULL' + r_uom_auth_name = 'NULL' + r_uom_code = 'NULL' + s_uom_auth_name = 'NULL' + s_uom_code = 'NULL' + + method_code = "'1031'" + method_name = "'Geocentric translations (geocentric domain)'" + + method_geog_code = "'9603'" + method_geog_name = "'Geocentric translations (geog2D domain)'" + + else: + s = vals[3].find('ParameterValue').find('value').text + assert vals[3].find('ParameterValue').find('value').attrib['uom'] == 'UNITE' + + rx = vals[4].find('ParameterValue').find('value').text + assert vals[4].find('ParameterValue').find('value').attrib['uom'] == 'sec' + + ry = vals[5].find('ParameterValue').find('value').text + assert vals[5].find('ParameterValue').find('value').attrib['uom'] == 'sec' + + rz = vals[6].find('ParameterValue').find('value').text + assert vals[6].find('ParameterValue').find('value').attrib['uom'] == 'sec' + + r_uom_auth_name = "'EPSG'" + r_uom_code = "'9104'" + s_uom_auth_name = "'EPSG'" + s_uom_code = "'9202'" + + method_code = "'1033'" + method_name = "'Position Vector transformation (geocentric domain)'" + + method_geog_code = "'9606'" + method_geog_name = "'Position Vector transformation (geog2D domain)'" + + for src in get_alias_of(sourceCRS): + for target in get_alias_of(targetCRS): + + custom_id = id + if not ((src == ('IGNF', sourceCRS) and target == ('IGNF', targetCRS))): + custom_id += '_' + src[1] + '_' + target[1] + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','helmert_transformation');""" % (custom_id) + #all_sql.append(sql) + + sql = """INSERT INTO "helmert_transformation" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG',%s,%s,'%s','%s','%s','%s','%s','%s',NULL,%s,%s,%s,'EPSG','9001',%s,%s,%s,%s,%s,%s,%s, %s,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (custom_id, name, method_code, method_name, src[0], src[1], target[0], target[1], area_of_use[0], area_of_use[1], x, y, z, rx, ry, rz, r_uom_auth_name, r_uom_code, s, s_uom_auth_name, s_uom_code) + all_sql.append(sql) + + + key = mapGeocentricIdToDatumAndArea[sourceCRS] + assert key in mapDatumAndAreaToGeographicId + sourceGeogIdAr = mapDatumAndAreaToGeographicId[key] + + key = mapGeocentricIdToDatumAndArea[targetCRS] + assert key in mapDatumAndAreaToGeographicId + targetGeogIdAr = mapDatumAndAreaToGeographicId[key] + + for sourceGeogId in sourceGeogIdAr: + for targetGeogId in targetGeogIdAr: + + for src in get_alias_of(sourceGeogId): + for target in get_alias_of(targetGeogId): + + id_geog = id + '_' + src[1] + '_TO_' + target[1] + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','helmert_transformation');""" % (id_geog) + #all_sql.append(sql) + + sql = """INSERT INTO "helmert_transformation" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG',%s,%s,'%s','%s','%s','%s','%s','%s',NULL,%s,%s,%s,'EPSG','9001',%s,%s,%s,%s,%s,%s,%s, %s,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (id_geog, name, method_geog_code, method_geog_name, src[0], src[1], target[0], target[1], area_of_use[0], area_of_use[1], x, y, z, rx, ry, rz, r_uom_auth_name, r_uom_code, s, s_uom_auth_name, s_uom_code) + all_sql.append(sql) + + if src[1] == 'NTFG': + + for NTFPalias, idFirstOp in (('NTFPGRAD', 'TSG1240'), ('NTFP', 'TSG1240_IGNF_NTFP_TO_IGNF_NTFG')): + + id_concat = id + '_' + NTFPalias + '_TO_' + target[1] + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','concatenated_operation');""" % (id_concat) + #all_sql_concat.append(sql) + + sql = """INSERT INTO "concatenated_operation" VALUES('IGNF','%s','Nouvelle Triangulation Francaise Paris grades to %s',NULL,NULL,'IGNF','%s','%s','%s','%s','%s',NULL,'IGNF','%s','IGNF','%s',NULL,NULL,0);""" % (id_concat, target[1], NTFPalias, target[0], target[1], area_of_use[0], area_of_use[1], idFirstOp, id_geog) + all_sql_concat.append(sql) + + +mapConversionId = {} + + +def getParameter(node, code, expected_uom): + for val in node.iterfind('usesValue'): + parameter_code = extract_id_from_href(val.find('ParameterValue').find('valueOfParameter').attrib['href']) + if parameter_code == code: + + dms = val.find('ParameterValue').find('dmsAngleValue') + if expected_uom == 'deg' and dms is not None: + deg_val = float(dms.find('degrees').text) + direction_deg = dms.find('degrees').attrib['direction'] + assert direction_deg in ('E', 'W', 'S', 'N') + min_val = float(dms.find('minutes').text) + if dms.find('secondes') is not None: + sec_val = float(dms.find('secondes').text) + else: + sec_val = 0 + + ret_val = deg_val + min_val / 60.0 + sec_val / 3600.0 + if direction_deg in ('W', 'S'): + ret_val = -ret_val + return ret_val + + assert val.find('ParameterValue').find('value').attrib['uom'] == expected_uom + return float(val.find('ParameterValue').find('value').text) + raise Exception('cannot find value for parameter ' + code) + +for node in root.iterfind('.//Conversion'): + id = node.attrib['id'] + names = [_name.text for _name in node.iter('name')] + name = names[0] + #print(id, name) + + reuse_epsg_conversion = False ### + if reuse_epsg_conversion and len(names) == 2: + + if id == 'PRC9601581': # PSEUDO MERCATOR (POPULAR VISUALISATION) + assert get_epsg_code(names[1]) == '3857' # this is wrong, this is the projectedCRS code, note the conversion one + mapConversionId[id] = ('EPSG', '3856') + else: + mapConversionId[id] = ('EPSG', get_epsg_code(names[1])) + continue + + usesMethod = extract_id_from_href(node.find('usesMethod').attrib['href']) + + d = {} + + if usesMethod == 'PVPM001From2Dto2D': # Popular Visualisation Pseudo-Mercator + + assert len([1 for val in node.iterfind('usesValue')]) == 4 + d['x_0'] = getParameter(node, 'PRCP100', 'm') + d['y_0'] = getParameter(node, 'PRCP200', 'm') + d['lon_0'] = getParameter(node, 'PRCP300', 'deg') + d['lat_0'] = getParameter(node, 'PRCP400', 'deg') + assert d['x_0'] == 0 + assert d['y_0'] == 0 + assert d['lon_0'] == 0 + assert d['lat_0'] == 0 + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','conversion');""" % (id) + #all_sql.append(sql) + + sql = """INSERT INTO "conversion" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','1262','EPSG','1024','Popular Visualisation Pseudo Mercator','EPSG','8801','Latitude of natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of natural origin',0.0,'EPSG','9102','EPSG','8806','False easting',0.0,'EPSG','9001','EPSG','8807','False northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (id, name) + all_sql.append(sql) + + mapConversionId[id] = ('IGNF', id) + + elif usesMethod == 'EQRC001from2Dto2D': # Equirectangular + + assert len([1 for val in node.iterfind('usesValue')]) == 5 + d['x_0'] = getParameter(node, 'PRCP100', 'm') + d['y_0'] = getParameter(node, 'PRCP200', 'm') + d['lon_0'] = getParameter(node, 'PRCP300', 'deg') + d['lat_0'] = getParameter(node, 'PRCP400', 'deg') + d['lat_ts'] = getParameter(node, 'PRCP600', 'deg') + assert d['lat_0'] == 0, (id, name, d) + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','conversion');""" % (id) + #all_sql.append(sql) + + sql = """INSERT INTO "conversion" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','1262','EPSG','1028','Equidistant Cylindrical','EPSG','8823','Latitude of 1st standard parallel',%s,'EPSG','9102','EPSG','8802','Longitude of natural origin',%s,'EPSG','9102','EPSG','8806','False easting',%s,'EPSG','9001','EPSG','8807','False northing',%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (id, name, d['lat_ts'], d['lon_0'], d['x_0'], d['y_0']) + all_sql.append(sql) + + mapConversionId[id] = ('IGNF', id) + + elif usesMethod in ('PRCM030from2Dto2D', 'PRCM020from2Dto2D', 'PRCM040from2Dto2D', 'PRCM030from3Dto2D'): # Transverse Mercator + + assert len([1 for val in node.iterfind('usesValue')]) == 5 + d['x_0'] = getParameter(node, 'PRCP100', 'm') + d['y_0'] = getParameter(node, 'PRCP200', 'm') + d['lon_0'] = getParameter(node, 'PRCP300', 'deg') + d['lat_0'] = getParameter(node, 'PRCP400', 'deg') + d['k_0'] = getParameter(node, 'PRCP500', 'UNITE') + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','conversion');""" % (id) + #all_sql.append(sql) + + sql = """INSERT INTO "conversion" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','1886','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',%s,'EPSG','9102','EPSG','8802','Longitude of natural origin',%s,'EPSG','9102','EPSG','8805','Scale factor at natural origin',%s,'EPSG','9201','EPSG','8806','False easting',%s,'EPSG','9001','EPSG','8807','False northing',%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (id, name, d['lat_0'], d['lon_0'], d['k_0'], d['x_0'], d['y_0']) + all_sql.append(sql) + + mapConversionId[id] = ('IGNF', id) + + elif usesMethod == 'PRCM060from2Dto2D': # Bonne + + assert len([1 for val in node.iterfind('usesValue')]) == 6 + d['x_0'] = getParameter(node, 'PRCP100', 'm') + d['y_0'] = getParameter(node, 'PRCP200', 'm') + d['lon_0'] = getParameter(node, 'PRCP300', 'gr') + d['lat_0'] = getParameter(node, 'PRCP400', 'gr') + d['k_0'] = getParameter(node, 'PRCP500', 'UNITE') + d['lat_1'] = getParameter(node, 'PRCP600', 'gr') + assert d['lat_0'] == d['lat_1'] + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','conversion');""" % (id) + #all_sql.append(sql) + + sql = """INSERT INTO "conversion" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','1262','EPSG','9827','Bonne','EPSG','8801','Latitude of natural origin',%s,'EPSG','9105','EPSG','8802','Longitude of natural origin',%s,'EPSG','9105','EPSG','8806','False easting',%s,'EPSG','9001','EPSG','8807','False northing',%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (id, name, d['lat_0'], d['lon_0'], d['x_0'], d['y_0']) + all_sql.append(sql) + + mapConversionId[id] = ('IGNF', id) + + elif usesMethod == 'PRCM015from2Dto2D': # LAEA + + assert len([1 for val in node.iterfind('usesValue')]) == 5 + d['x_0'] = getParameter(node, 'PRCP100', 'm') + d['y_0'] = getParameter(node, 'PRCP200', 'm') + d['lon_0'] = getParameter(node, 'PRCP300', 'deg') + d['lat_0'] = getParameter(node, 'PRCP400', 'deg') + d['k_0'] = getParameter(node, 'PRCP500', 'UNITE') + assert d['k_0'] == 1 + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','conversion');""" % (id) + #all_sql.append(sql) + + sql = """INSERT INTO "conversion" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','1262','EPSG','9820','Lambert Azimuthal Equal Area','EPSG','8801','Latitude of natural origin',%s,'EPSG','9102','EPSG','8802','Longitude of natural origin',%s,'EPSG','9102','EPSG','8806','False easting',%s,'EPSG','9001','EPSG','8807','False northing',%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (id, name, d['lat_0'], d['lon_0'], d['x_0'], d['y_0']) + all_sql.append(sql) + + mapConversionId[id] = ('IGNF', id) + + elif usesMethod == 'PRCM013from2Dto2D': # LCC_2SP + + assert len([1 for val in node.iterfind('usesValue')]) == 6 + d['x_0'] = getParameter(node, 'PRCP100', 'm') + d['y_0'] = getParameter(node, 'PRCP200', 'm') + d['lon_0'] = getParameter(node, 'PRCP300', 'deg') + d['lat_0'] = getParameter(node, 'PRCP400', 'deg') + d['lat_1'] = getParameter(node, 'PRCP600', 'deg') + d['lat_2'] = getParameter(node, 'PRCP700', 'deg') + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','conversion');""" % (id) + #all_sql.append(sql) + + sql = """INSERT INTO "conversion" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','1262','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',%s,'EPSG','9102','EPSG','8822','Longitude of false origin',%s,'EPSG','9102','EPSG','8823','Latitude of 1st standard parallel',%s,'EPSG','9102','EPSG','8824','Latitude of 2nd standard parallel',%s,'EPSG','9102','EPSG','8826','Easting at false origin',%s,'EPSG','9001','EPSG','8827','Northing at false origin',%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (id, name, d['lat_0'], d['lon_0'], d['lat_1'], d['lat_2'], d['x_0'], d['y_0']) + all_sql.append(sql) + + mapConversionId[id] = ('IGNF', id) + + + elif usesMethod == 'PRCM070from2Dto2D': # Mercator (variant A) + + assert len([1 for val in node.iterfind('usesValue')]) == 5 + d['x_0'] = getParameter(node, 'PRCP100', 'm') + d['y_0'] = getParameter(node, 'PRCP200', 'm') + d['lon_0'] = getParameter(node, 'PRCP300', 'deg') + d['lat_0'] = getParameter(node, 'PRCP400', 'deg') + d['k_0'] = getParameter(node, 'PRCP500', 'UNITE') + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','conversion');""" % (id) + #all_sql.append(sql) + + sql = """INSERT INTO "conversion" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','1262','EPSG','9804','Mercator (variant A)','EPSG','8801','Latitude of natural origin',%s,'EPSG','9102','EPSG','8802','Longitude of natural origin',%s,'EPSG','9102','EPSG','8805','Scale factor at natural origin',%s,'EPSG','9201','EPSG','8806','False easting',%s,'EPSG','9001','EPSG','8807','False northing',%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (id, name, d['lat_0'], d['lon_0'], d['k_0'], d['x_0'], d['y_0']) + all_sql.append(sql) + + mapConversionId[id] = ('IGNF', id) + + + elif usesMethod in ('PRCM012from2Dto2D', 'PRCM012from3Dto2D'): # LCC_1SP + + assert len([1 for val in node.iterfind('usesValue')]) == 5 + d['x_0'] = getParameter(node, 'PRCP100', 'm') + d['y_0'] = getParameter(node, 'PRCP200', 'm') + d['lon_0'] = getParameter(node, 'PRCP300', 'gr') + d['lat_0'] = getParameter(node, 'PRCP400', 'gr') + d['k_0'] = getParameter(node, 'PRCP500', 'UNITE') + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','conversion');""" % (id) + #all_sql.append(sql) + + sql = """INSERT INTO "conversion" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','1262','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',%s,'EPSG','9105','EPSG','8802','Longitude of natural origin',%s,'EPSG','9105','EPSG','8805','Scale factor at natural origin',%s,'EPSG','9201','EPSG','8806','False easting',%s,'EPSG','9001','EPSG','8807','False northing',%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (id, name, d['lat_0'], d['lon_0'], d['k_0'], d['x_0'], d['y_0']) + all_sql.append(sql) + + mapConversionId[id] = ('IGNF', id) + + + elif usesMethod in ('PRCM014from2Dto2D'): # LCC_1SP + + assert len([1 for val in node.iterfind('usesValue')]) == 5 + d['x_0'] = getParameter(node, 'PRCP110', 'm') + d['y_0'] = getParameter(node, 'PRCP210', 'm') + d['lon_0'] = getParameter(node, 'PRCP310', 'gr') + d['lat_0'] = getParameter(node, 'PRCP410', 'gr') + d['k_0'] = getParameter(node, 'PRCP510', 'UNITE') + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','conversion');""" % (id) + #all_sql.append(sql) + + sql = """INSERT INTO "conversion" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','1262','EPSG','9801','Lambert Conic Conformal (1SP)','EPSG','8801','Latitude of natural origin',%s,'EPSG','9105','EPSG','8802','Longitude of natural origin',%s,'EPSG','9105','EPSG','8805','Scale factor at natural origin',%s,'EPSG','9201','EPSG','8806','False easting',%s,'EPSG','9001','EPSG','8807','False northing',%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (id, name, d['lat_0'], d['lon_0'], d['k_0'], d['x_0'], d['y_0']) + all_sql.append(sql) + + mapConversionId[id] = ('IGNF', id) + + + + elif usesMethod == 'PRCM053from2Dto2D': # Gauss Schreiber Transverse Mercator + + assert len([1 for val in node.iterfind('usesValue')]) == 5 + d['x_0'] = getParameter(node, 'PRCP100', 'm') + d['y_0'] = getParameter(node, 'PRCP200', 'm') + d['lon_0'] = getParameter(node, 'PRCP300', 'deg') + d['lat_0'] = getParameter(node, 'PRCP400', 'deg') + d['k_0'] = getParameter(node, 'PRCP500', 'UNITE') + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','conversion');""" % (id) + #all_sql.append(sql) + + sql = """INSERT INTO "conversion" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','1262',NULL,NULL,'Gauss Schreiber Transverse Mercator','EPSG','8801','Latitude of natural origin',%s,'EPSG','9102','EPSG','8802','Longitude of natural origin',%s,'EPSG','9102','EPSG','8805','Scale factor at natural origin',%s,'EPSG','9201','EPSG','8806','False easting',%s,'EPSG','9001','EPSG','8807','False northing',%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (id, name, d['lat_0'], d['lon_0'], d['k_0'], d['x_0'], d['y_0']) + all_sql.append(sql) + + mapConversionId[id] = ('IGNF', id) + + elif usesMethod == 'PRCM094from2Dto2D': # Polar Stereographic + + assert len([1 for val in node.iterfind('usesValue')]) == 5 + d['x_0'] = getParameter(node, 'PRCP100', 'm') + d['y_0'] = getParameter(node, 'PRCP200', 'm') + d['lon_0'] = getParameter(node, 'PRCP300', 'deg') + d['lat_0'] = getParameter(node, 'PRCP400', 'deg') + d['k_0'] = getParameter(node, 'PRCP500', 'UNITE') + + assert float(d['lat_0']) == -90 + assert float(d['lon_0']) == 140 + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','conversion');""" % (id) + #all_sql.append(sql) + + sql = """INSERT INTO "conversion" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','1262','EPSG','9810','Polar Stereographic (variant A)','EPSG','8801','Latitude of natural origin',%s,'EPSG','9102','EPSG','8802','Longitude of natural origin',%s,'EPSG','9102','EPSG','8805','Scale factor at natural origin',%s,'EPSG','9201','EPSG','8806','False easting',%s,'EPSG','9001','EPSG','8807','False northing',%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (id, name, d['lat_0'], d['lon_0'], d['k_0'], d['x_0'], d['y_0']) + all_sql.append(sql) + + mapConversionId[id] = ('IGNF', id) + + elif usesMethod == 'MILL001from2Dto2D': # Miller + + assert len([1 for val in node.iterfind('usesValue')]) == 4 + d['x_0'] = getParameter(node, 'PRCP100', 'm') + d['y_0'] = getParameter(node, 'PRCP200', 'm') + d['lon_0'] = getParameter(node, 'PRCP300', 'deg') + d['lat_0'] = getParameter(node, 'PRCP400', 'deg') + assert d['x_0'] == 0 + assert d['y_0'] == 0 + assert d['lon_0'] == 0 + assert d['lat_0'] == 0 + + #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','conversion');""" % (id) + #all_sql.append(sql) + + sql = """INSERT INTO "conversion" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','1262',NULL,NULL,'PROJ mill',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);""" % (id,name) + all_sql.append(sql) + + mapConversionId[id] = ('IGNF', id) + + elif usesMethod == 'PRCM095from2Dto2D': + print('Unhandled conversion PRCM095from2Dto2D = Polar Sterographic (Variant C) %s' % (str((id, name, usesMethod)))) + continue + + else: + print('Unknown conversion %s' % (str((id, name, usesMethod)))) + assert False + +mapProjectedId = {} + +for node in root.iterfind('.//ProjectedCRS'): + id = node.attrib['id'] + names = [_name.text for _name in node.iter('name')] + name = names[0] + + usesCartesianCS = extract_id_from_href(node.find('usesCartesianCS').attrib['href']) + assert usesCartesianCS in ('TYP_CRG32', 'TYP_CRG70', 'TYP_CRG34'), (id, name, usesCartesianCS) + baseGeographicCRS = extract_id_from_href(node.find('baseGeographicCRS').attrib['href']) + if baseGeographicCRS not in mapGeographicId: + print('Skipping ProjectedCRS %s since its baseGeographicCRS %s is unknown' % (id, baseGeographicCRS)) + continue + + definedByConversion = extract_id_from_href(node.find('definedByConversion').attrib['href']) + if definedByConversion in ('PRC0909577'): + print('Skipping ProjectedCRS %s since its definedByConversion %s is unhandled' % (id, definedByConversion)) + continue + assert definedByConversion in mapConversionId, (id, name, definedByConversion) + + area_of_use = get_area_of_use(node.find('domainOfValidity')) + + #sql = """INSERT INTO "crs" VALUES('IGNF','%s','projected');""" % (id, ) + #all_sql.append(sql) + + cs_code = 4499 # TYP_CRG32 + if usesCartesianCS == 'TYP_CRG70': + cs_code = 4400 + if usesCartesianCS == 'TYP_CRG34': + cs_code = 4530 + + sql = """INSERT INTO "projected_crs" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','%s','%s','%s','%s','%s','%s','%s',NULL,0);""" % (id,name,cs_code,mapGeographicId[baseGeographicCRS][0], mapGeographicId[baseGeographicCRS][1],mapConversionId[definedByConversion][0], mapConversionId[definedByConversion][1], area_of_use[0], area_of_use[1]) + all_sql.append(sql) + + if len(names) >= 2 and names[1].startswith('http://registre.ign.fr/ign/IGNF/crs/IGNF/'): + alias = names[1][len('http://registre.ign.fr/ign/IGNF/crs/IGNF/'):] + aliasOfCRS[id] = [('IGNF', alias)] + + #sql = """INSERT INTO "crs" VALUES('IGNF','%s','projected'); -- alias of %s""" % (alias, id) + #all_sql.append(sql) + + sql = """INSERT INTO "projected_crs" VALUES('IGNF','%s','%s',NULL,NULL,'EPSG','%s','%s','%s','%s','%s','%s','%s',NULL,0);""" % (alias,name,cs_code,mapGeographicId[baseGeographicCRS][0], mapGeographicId[baseGeographicCRS][1],mapConversionId[definedByConversion][0], mapConversionId[definedByConversion][1], area_of_use[0], area_of_use[1]) + all_sql.append(sql) + + mapProjectedId[id] = ('IGNF', id) + + + +for node in root.iterfind('.//CompoundCRS'): + id = node.attrib['id'] + names = [_name.text for _name in node.iter('name')] + name = names[0] + + singleCRS = [extract_id_from_href(includesSingleCRS.attrib['href']) for includesSingleCRS in node.iter('includesSingleCRS')] + assert len(singleCRS) == 2 + + if singleCRS[0] == 'RGWF96GEO': + singleCRS[0] = 'RGWF96G' + + assert singleCRS[0] in mapProjectedId or singleCRS[0] in mapGeographicId, (id, name) + assert singleCRS[1] in mapVerticalCrsId, (id, name, singleCRS[1]) + + if singleCRS[0] in mapProjectedId: + horiz = mapProjectedId[singleCRS[0]] + else: + horiz = mapGeographicId[singleCRS[0]] + + area_of_use = get_area_of_use(node.find('domainOfValidity')) + + #sql = """INSERT INTO "crs" VALUES('IGNF','%s','compound');""" % (id, ) + #all_sql.append(sql) + + sql = """INSERT INTO "compound_crs" VALUES('IGNF','%s','%s',NULL,NULL,'%s','%s','%s','%s','%s','%s',0);""" % (id,name,horiz[0], horiz[1],mapVerticalCrsId[singleCRS[1]][0], mapVerticalCrsId[singleCRS[1]][1], area_of_use[0], area_of_use[1]) + all_sql.append(sql) + + if len(names) >= 2 and names[1].startswith('http://registre.ign.fr/ign/IGNF/crs/IGNF/'): + assert False + + +all_sql.append("""INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('ntf_r93.gsb', -- as referenced by the IGNF registry + 'ntf_r93.gsb', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL); +""") + + +script_dir_name = os.path.dirname(os.path.realpath(__file__)) +sql_dir_name = os.path.join(os.path.dirname(script_dir_name), 'data', 'sql') + +f = open(os.path.join(sql_dir_name, 'ignf') + '.sql', 'wb') +f.write("--- This file has been generated by scripts/build_db_create_ignf_from_xml.py from the http://librairies.ign.fr/geoportail/resources/IGNF.xml definition file. DO NOT EDIT !\n\n".encode('UTF-8')) +for sql in all_sql + all_sql_concat: + f.write((sql + '\n').encode('UTF-8')) +f.close() + diff --git a/scripts/build_db_from_esri.py b/scripts/build_db_from_esri.py new file mode 100755 index 00000000..f642b473 --- /dev/null +++ b/scripts/build_db_from_esri.py @@ -0,0 +1,1339 @@ +#!/usr/bin/env python +############################################################################### +# $Id$ +# +# Project: PROJ +# Purpose: Build SRS and coordinate transform database from ESRI database +# provided at https://github.com/Esri/projection-engine-db-doc +# (from the csv/ directory content) +# Author: Even Rouault <even.rouault at spatialys.com> +# +############################################################################### +# Copyright (c) 2018, Even Rouault <even.rouault at spatialys.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. +############################################################################### + +import csv +import os +import sqlite3 +import sys + +if len(sys.argv) != 3: + print('Usage: build_db_from_esri.py path_to_esri_csv_dir proj.db') + print('') + print('path_to_esri_csv_dir is typically the path to the "csv" directory ') + print('of a "git clone https://github.com/Esri/projection-engine-db-doc"') + sys.exit(1) + +path_to_csv = sys.argv[1] +proj_db = sys.argv[2] + +conn = sqlite3.connect(proj_db) +cursor = conn.cursor() + +all_sql = [] + +# TODO: update this ! +version = 'ArcMap 10.6.1 / ArcGISPro 2.2' +all_sql.append( + """INSERT INTO "metadata" VALUES('ESRI.VERSION', '%s');""" % (version)) + + +def escape_literal(x): + return x.replace("'", "''") + + +######################## + +map_areaname_to_auth_code = {} +esri_area_counter = 1 + + +def find_area(areaname, slat, nlat, llon, rlon): + + global esri_area_counter + + if areaname in map_areaname_to_auth_code: + return map_areaname_to_auth_code[areaname] + + deg = b'\xC2\xB0'.decode('utf-8') + cursor.execute("SELECT auth_name, code FROM area WHERE name = ? AND auth_name != 'ESRI'", + (areaname.replace('~', deg),)) + row = cursor.fetchone() + if row is None: + cursor.execute( + "SELECT auth_name, code FROM area WHERE auth_name != 'ESRI' AND south_lat = ? AND north_lat = ? AND west_lon = ? AND east_lon = ?", (slat, nlat, llon, rlon)) + row = cursor.fetchone() + + if row is None: + #print('unknown area inserted: ' + areaname) + + if float(rlon) > 180: + new_rlon = '%s' % (float(rlon) - 360) + print('Correcting rlon from %s to %s for %s' % + (rlon, new_rlon, areaname)) + rlon = new_rlon + + assert float(slat) >= -90 and float(slat) <= 90, (areaname, + slat, nlat, llon, rlon) + assert float(nlat) >= -90 and float(nlat) <= 90, (areaname, + slat, nlat, llon, rlon) + assert float(nlat) > float(slat), (areaname, slat, nlat, llon, rlon) + assert float(llon) >= -180 and float(llon) <= 180, (areaname, + slat, nlat, llon, rlon) + assert float(rlon) >= -180 and float(rlon) <= 180, (areaname, + slat, nlat, llon, rlon) + + sql = """INSERT INTO "area" VALUES('ESRI','%d','%s','%s',%s,%s,%s,%s,0);""" % ( + esri_area_counter, escape_literal(areaname), escape_literal(areaname), slat, nlat, llon, rlon) + all_sql.append(sql) + map_areaname_to_auth_code[areaname] = [ + 'ESRI', '%d' % esri_area_counter] + esri_area_counter += 1 + else: + auth_name = row[0] + code = row[1] + map_areaname_to_auth_code[areaname] = [auth_name, code] + + return map_areaname_to_auth_code[areaname] + +################# + +def import_linunit(): + with open(os.path.join(path_to_csv, 'pe_list_linunit.csv'), 'rt') as csvfile: + reader = csv.reader(csvfile) + header = next(reader) + nfields = len(header) + + idx_wkid = header.index('wkid') + assert idx_wkid >= 0 + + idx_latestWkid = header.index('latestWkid') + assert idx_latestWkid >= 0 + + idx_name = header.index('name') + assert idx_name >= 0 + + idx_wkt = header.index('wkt') + assert idx_wkt >= 0 + + idx_authority = header.index('authority') + assert idx_authority >= 0 + + while True: + try: + row = next(reader) + except StopIteration: + break + assert len(row) == nfields, row + + latestWkid = row[idx_latestWkid] + authority = row[idx_authority] + esri_name = row[idx_name] + + wkt = row[idx_wkt] + assert wkt.startswith('UNIT[') and wkt.endswith(']') + tokens = wkt[len('UNIT['):len(wkt) - 1].split(',') + assert len(tokens) == 2 + esri_conv_factor = float(tokens[1]) + + if authority == 'EPSG': + + cursor.execute( + "SELECT name, conv_factor FROM unit_of_measure WHERE code = ? AND auth_name = 'EPSG'", (latestWkid,)) + src_row = cursor.fetchone() + assert src_row, row + src_name = src_row[0] + epsg_conv_factor = src_row[1] + assert abs(esri_conv_factor - epsg_conv_factor) <= 1e-15 * epsg_conv_factor, (esri_name, esri_conv_factor, epsg_conv_factor) + + if src_name != esri_name: + sql = """INSERT INTO alias_name VALUES('unit_of_measure','EPSG','%s','%s','ESRI');""" % ( + latestWkid, escape_literal(esri_name)) + all_sql.append(sql) + + +################# +map_spheroid_esri_name_to_auth_code = {} + + +def import_spheroid(): + with open(os.path.join(path_to_csv, 'pe_list_spheroid.csv'), 'rt') as csvfile: + reader = csv.reader(csvfile) + header = next(reader) + nfields = len(header) + + idx_wkid = header.index('wkid') + assert idx_wkid >= 0 + + idx_latestWkid = header.index('latestWkid') + assert idx_latestWkid >= 0 + + idx_name = header.index('name') + assert idx_name >= 0 + + idx_description = header.index('description') + assert idx_description >= 0 + + idx_wkt = header.index('wkt') + assert idx_wkt >= 0 + + idx_authority = header.index('authority') + assert idx_authority >= 0 + + idx_deprecated = header.index('deprecated') + assert idx_deprecated >= 0 + + body_set = set() + while True: + try: + row = next(reader) + except StopIteration: + break + assert len(row) == nfields, row + + latestWkid = row[idx_latestWkid] + authority = row[idx_authority] + esri_name = row[idx_name] + + if authority == 'EPSG': + + cursor.execute( + "SELECT name FROM ellipsoid WHERE code = ? AND auth_name = 'EPSG'", (latestWkid,)) + src_row = cursor.fetchone() + assert src_row, row + src_name = src_row[0] + + map_spheroid_esri_name_to_auth_code[esri_name] = [ + 'EPSG', latestWkid] + + if src_name != esri_name: + sql = """INSERT INTO alias_name VALUES('ellipsoid','EPSG','%s','%s','ESRI');""" % ( + latestWkid, escape_literal(esri_name)) + all_sql.append(sql) + + else: + assert authority.upper() == 'ESRI', row + + wkt = row[idx_wkt] + assert wkt.startswith('SPHEROID[') and wkt.endswith(']') + tokens = wkt[len('SPHEROID['):len(wkt) - 1].split(',') + assert len(tokens) == 3 + a = tokens[1] + rf = tokens[2] + + description = row[idx_description] + deprecated = 1 if row[idx_deprecated] == 'yes' else 0 + + map_spheroid_esri_name_to_auth_code[esri_name] = [ + 'ESRI', latestWkid] + + if abs(float(a) - 6375000) > 0.01 * 6375000: + pos = esri_name.find('_19') + if pos < 0: + pos = esri_name.find('_20') + assert pos > 0 + body_code = esri_name[0:pos] + + if body_code not in body_set: + body_set.add(body_code) + sql = """INSERT INTO celestial_body VALUES('ESRI', '%s', '%s', %s);""" % ( + body_code, body_code, a) + all_sql.append(sql) + body_auth = 'ESRI' + else: + body_auth = 'PROJ' + body_code = 'EARTH' + + sql = """INSERT INTO ellipsoid VALUES('ESRI','%s','%s','%s','%s','%s',%s,'EPSG','9001',%s,NULL,%d);""" % ( + latestWkid, esri_name, description, body_auth, body_code, a, rf, deprecated) + all_sql.append(sql) + +######################## + + +map_pm_esri_name_to_auth_code = {} + + +def import_prime_meridian(): + with open(os.path.join(path_to_csv, 'pe_list_primem.csv'), 'rt') as csvfile: + reader = csv.reader(csvfile) + header = next(reader) + nfields = len(header) + + idx_wkid = header.index('wkid') + assert idx_wkid >= 0 + + idx_latestWkid = header.index('latestWkid') + assert idx_latestWkid >= 0 + + idx_name = header.index('name') + assert idx_name >= 0 + + idx_description = header.index('description') + assert idx_description >= 0 + + idx_wkt = header.index('wkt') + assert idx_wkt >= 0 + + idx_authority = header.index('authority') + assert idx_authority >= 0 + + idx_deprecated = header.index('deprecated') + assert idx_deprecated >= 0 + + while True: + try: + row = next(reader) + except StopIteration: + break + assert len(row) == nfields, row + + latestWkid = row[idx_latestWkid] + authority = row[idx_authority] + esri_name = row[idx_name] + + if authority == 'EPSG': + + cursor.execute( + "SELECT name FROM prime_meridian WHERE code = ? AND auth_name = 'EPSG'", (latestWkid,)) + src_row = cursor.fetchone() + assert src_row, row + src_name = src_row[0] + + map_pm_esri_name_to_auth_code[esri_name] = ['EPSG', latestWkid] + + if src_name != esri_name: + sql = """INSERT INTO alias_name VALUES('prime_meridian','EPSG','%s','%s','ESRI');""" % ( + latestWkid, escape_literal(esri_name)) + all_sql.append(sql) + + else: + assert authority.upper() == 'ESRI', row + + wkt = row[idx_wkt] + assert wkt.startswith('PRIMEM[') and wkt.endswith(']') + tokens = wkt[len('PRIMEM['):len(wkt) - 1].split(',') + assert len(tokens) == 2 + value = tokens[1] + + deprecated = 1 if row[idx_deprecated] == 'yes' else 0 + + map_pm_esri_name_to_auth_code[esri_name] = ['ESRI', latestWkid] + + sql = """INSERT INTO "prime_meridian" VALUES('ESRI','%s','%s',%s,'EPSG','9110',%d);""" % ( + latestWkid, esri_name, value, deprecated) + all_sql.append(sql) + + +######################## + +map_datum_esri_name_to_auth_code = {} +map_datum_esri_to_parameters = {} + + +def import_datum(): + with open(os.path.join(path_to_csv, 'pe_list_datum.csv'), 'rt') as csvfile: + reader = csv.reader(csvfile) + header = next(reader) + nfields = len(header) + + idx_wkid = header.index('wkid') + assert idx_wkid >= 0 + + idx_latestWkid = header.index('latestWkid') + assert idx_latestWkid >= 0 + + idx_name = header.index('name') + assert idx_name >= 0 + + idx_description = header.index('description') + assert idx_description >= 0 + + idx_wkt = header.index('wkt') + assert idx_wkt >= 0 + + idx_authority = header.index('authority') + assert idx_authority >= 0 + + idx_deprecated = header.index('deprecated') + assert idx_deprecated >= 0 + + while True: + try: + row = next(reader) + except StopIteration: + break + assert len(row) == nfields, row + + latestWkid = row[idx_latestWkid] + authority = row[idx_authority] + esri_name = row[idx_name] + + if authority == 'EPSG': + + map_datum_esri_name_to_auth_code[esri_name] = [ + 'EPSG', latestWkid] + + cursor.execute( + "SELECT name FROM geodetic_datum WHERE auth_name = 'EPSG' AND code = ?", (latestWkid,)) + src_row = cursor.fetchone() + assert src_row, row + src_name = src_row[0] + esri_name = row[idx_name] + if src_name != esri_name: + sql = """INSERT INTO alias_name VALUES('geodetic_datum','EPSG','%s','%s','ESRI');""" % ( + latestWkid, escape_literal(esri_name)) + all_sql.append(sql) + else: + assert authority.upper() == 'ESRI', row + + map_datum_esri_name_to_auth_code[esri_name] = [ + 'ESRI', latestWkid] + + wkt = row[idx_wkt] + pos = wkt.find('SPHEROID["') + assert pos >= 0 + pos += len('SPHEROID["') + end_pos = wkt[pos:].find('"') + assert end_pos >= 0 + end_pos += pos + ellps_name = wkt[pos:end_pos] + + assert ellps_name in map_spheroid_esri_name_to_auth_code, ( + ellps_name, row) + ellps_auth_name, ellps_code = map_spheroid_esri_name_to_auth_code[ellps_name] + + description = row[idx_description] + deprecated = 1 if row[idx_deprecated] == 'yes' else 0 + + map_datum_esri_to_parameters[latestWkid] = { + 'esri_name': esri_name, + 'description': description, + 'ellps_auth_name': ellps_auth_name, + 'ellps_code': ellps_code, + 'deprecated': deprecated + } + # We cannot write it since we lack the prime meridian !!! (and + # the area of use) + +######################## + + +map_geogcs_esri_name_to_auth_code = {} + + +def import_geogcs(): + with open(os.path.join(path_to_csv, 'pe_list_geogcs.csv'), 'rt') as csvfile: + reader = csv.reader(csvfile) + header = next(reader) + nfields = len(header) + + idx_wkid = header.index('wkid') + assert idx_wkid >= 0 + + idx_latestWkid = header.index('latestWkid') + assert idx_latestWkid >= 0 + + idx_name = header.index('name') + assert idx_name >= 0 + + idx_description = header.index('description') + assert idx_description >= 0 + + idx_wkt = header.index('wkt') + assert idx_wkt >= 0 + + idx_authority = header.index('authority') + assert idx_authority >= 0 + + idx_deprecated = header.index('deprecated') + assert idx_deprecated >= 0 + + idx_areaname = header.index('areaname') + assert idx_areaname >= 0 + + idx_slat = header.index('slat') + assert idx_slat >= 0 + + idx_nlat = header.index('nlat') + assert idx_nlat >= 0 + + idx_llon = header.index('llon') + assert idx_llon >= 0 + + idx_rlon = header.index('rlon') + assert idx_rlon >= 0 + + datum_written = set() + + while True: + try: + row = next(reader) + except StopIteration: + break + assert len(row) == nfields, row + + latestWkid = row[idx_latestWkid] + authority = row[idx_authority] + esri_name = row[idx_name] + + if authority == 'EPSG': + + map_geogcs_esri_name_to_auth_code[esri_name] = [ + 'EPSG', latestWkid] + + cursor.execute( + "SELECT name FROM geodetic_crs WHERE auth_name = 'EPSG' AND code = ?", (latestWkid,)) + src_row = cursor.fetchone() + assert src_row, row + src_name = src_row[0] + esri_name = row[idx_name] + if src_name != esri_name: + sql = """INSERT INTO alias_name VALUES('geodetic_crs','EPSG','%s','%s','ESRI');""" % ( + latestWkid, escape_literal(esri_name)) + all_sql.append(sql) + else: + assert authority.upper() == 'ESRI', row + + code = row[idx_wkid] + + wkt = row[idx_wkt] + pos = wkt.find('DATUM["') + assert pos >= 0 + pos += len('DATUM["') + end_pos = wkt[pos:].find('"') + assert end_pos >= 0 + end_pos += pos + datum_name = wkt[pos:end_pos] + + assert datum_name in map_datum_esri_name_to_auth_code, ( + datum_name, row) + datum_auth_name, datum_code = map_datum_esri_name_to_auth_code[datum_name] + + pos = wkt.find('PRIMEM["') + assert pos >= 0 + pos += len('PRIMEM["') + end_pos = wkt[pos:].find('"') + assert end_pos >= 0 + end_pos += pos + pm_name = wkt[pos:end_pos] + + assert pm_name in map_pm_esri_name_to_auth_code, (pm_name, row) + pm_auth_name, pm_code = map_pm_esri_name_to_auth_code[pm_name] + + is_degree = 'UNIT["Degree' in wkt + is_grad = 'UNIT["Grad' in wkt + assert is_degree or is_grad, row + cs_code = '6422' if is_degree else '6403' + + deprecated = 1 if row[idx_deprecated] == 'yes' else 0 + + area_auth_name, area_code = find_area( + row[idx_areaname], row[idx_slat], row[idx_nlat], row[idx_llon], row[idx_rlon]) + + if datum_auth_name == 'ESRI': + if datum_code not in datum_written: + datum_written.add(datum_code) + + p = map_datum_esri_to_parameters[datum_code] + + sql = """INSERT INTO "geodetic_datum" VALUES('ESRI','%s','%s','%s',NULL,'%s','%s','%s','%s','%s','%s',%d);""" % ( + datum_code, p['esri_name'], p['description'], p['ellps_auth_name'], p['ellps_code'], pm_auth_name, pm_code, area_auth_name, area_code, p['deprecated']) + all_sql.append(sql) + p['pm_auth_name'] = pm_auth_name + p['pm_code'] = pm_code + map_datum_esri_to_parameters[datum_code] = p + else: + assert map_datum_esri_to_parameters[datum_code]['pm_auth_name'] == pm_auth_name, ( + row, map_datum_esri_to_parameters[datum_code]['pm_auth_name'], pm_auth_name) + if map_datum_esri_to_parameters[datum_code]['pm_code'] != pm_code: + + # Case of GCS_Voirol_Unifie_1960 and GCS_Voirol_Unifie_1960_Paris which use the same + # datum D_Voirol_Unifie_1960 but with different prime meridian + # We create an artificial datum to avoid that issue + datum_name += '_' + pm_name + datum_code += '_' + pm_name + + datum_written.add(datum_code) + map_datum_esri_name_to_auth_code[datum_name] = [ + 'ESRI', latestWkid] + map_datum_esri_to_parameters[datum_code] = { + 'esri_name': datum_name, + 'description': p['description'] + ' with ' + pm_name + ' prime meridian', + 'ellps_auth_name': p['ellps_auth_name'], + 'ellps_code': p['ellps_code'], + 'deprecated': p['deprecated'] + } + p = map_datum_esri_to_parameters[datum_code] + + sql = """INSERT INTO "geodetic_datum" VALUES('ESRI','%s','%s',NULL,'%s','%s','%s','%s','%s','%s','%s',%d);""" % ( + datum_code, p['esri_name'], p['description'], p['ellps_auth_name'], p['ellps_code'], pm_auth_name, pm_code, area_auth_name, area_code, p['deprecated']) + all_sql.append(sql) + p['pm_auth_name'] = pm_auth_name + p['pm_code'] = pm_code + map_datum_esri_to_parameters[datum_code] = p + + + # We may have already the EPSG entry, so use it preferably + if esri_name not in map_geogcs_esri_name_to_auth_code: + map_geogcs_esri_name_to_auth_code[esri_name] = ['ESRI', code] + + sql = """INSERT INTO "geodetic_crs" VALUES('ESRI','%s','%s',NULL,NULL,'geographic 2D','EPSG','%s','%s','%s','%s','%s',NULL,%d);""" % ( + code, esri_name, cs_code, datum_auth_name, datum_code, area_auth_name, area_code, deprecated) + all_sql.append(sql) + + if deprecated and code != latestWkid: + cursor.execute( + "SELECT name FROM geodetic_crs WHERE auth_name = 'EPSG' AND code = ?", (latestWkid,)) + src_row = cursor.fetchone() + assert src_row + + sql = """INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','%s','EPSG','%s','ESRI');""" % ( + code, latestWkid) + all_sql.append(sql) + +######################## + + +map_projcs_esri_name_to_auth_code = {} + + +def import_projcs(): + with open(os.path.join(path_to_csv, 'pe_list_projcs.csv'), 'rt') as csvfile: + reader = csv.reader(csvfile) + header = next(reader) + nfields = len(header) + + idx_wkid = header.index('wkid') + assert idx_wkid >= 0 + + idx_latestWkid = header.index('latestWkid') + assert idx_latestWkid >= 0 + + idx_name = header.index('name') + assert idx_name >= 0 + + idx_description = header.index('description') + assert idx_description >= 0 + + idx_wkt = header.index('wkt') + assert idx_wkt >= 0 + + idx_authority = header.index('authority') + assert idx_authority >= 0 + + idx_deprecated = header.index('deprecated') + assert idx_deprecated >= 0 + + idx_areaname = header.index('areaname') + assert idx_areaname >= 0 + + idx_slat = header.index('slat') + assert idx_slat >= 0 + + idx_nlat = header.index('nlat') + assert idx_nlat >= 0 + + idx_llon = header.index('llon') + assert idx_llon >= 0 + + idx_rlon = header.index('rlon') + assert idx_rlon >= 0 + + wkid_set = set() + mapDeprecatedToNonDeprecated = {} + + while True: + try: + row = next(reader) + except StopIteration: + break + assert len(row) == nfields, row + + latestWkid = row[idx_latestWkid] + authority = row[idx_authority] + esri_name = row[idx_name] + + if authority == 'EPSG': + + map_projcs_esri_name_to_auth_code[esri_name] = [ + 'EPSG', latestWkid] + + cursor.execute( + "SELECT name FROM projected_crs WHERE auth_name = 'EPSG' AND code = ?", (latestWkid,)) + src_row = cursor.fetchone() + assert src_row, row + src_name = src_row[0] + esri_name = row[idx_name] + if src_name != esri_name: + sql = """INSERT INTO alias_name VALUES('projected_crs','EPSG','%s','%s','ESRI');""" % ( + latestWkid, escape_literal(esri_name)) + all_sql.append(sql) + else: + assert authority.upper() == 'ESRI', row + + code = row[idx_wkid] + wkid_set.add(code) + + wkt = row[idx_wkt] + pos = wkt.find('GEOGCS["') + assert pos >= 0 + pos += len('GEOGCS["') + end_pos = wkt[pos:].find('"') + assert end_pos >= 0 + end_pos += pos + geogcs_name = wkt[pos:end_pos] + + assert geogcs_name in map_geogcs_esri_name_to_auth_code, ( + geogcs_name, row) + geogcs_auth_name, geogcs_code = map_geogcs_esri_name_to_auth_code[geogcs_name] + + area_auth_name, area_code = find_area( + row[idx_areaname], row[idx_slat], row[idx_nlat], row[idx_llon], row[idx_rlon]) + + map_projcs_esri_name_to_auth_code[esri_name] = ['ESRI', code] + + deprecated = 1 if row[idx_deprecated] == 'yes' else 0 + + sql = """INSERT INTO "projected_crs" VALUES('ESRI','%s','%s',NULL,NULL,NULL,NULL,'%s','%s',NULL,NULL,'%s','%s','%s',%d);""" % ( + code, esri_name, geogcs_auth_name, geogcs_code, area_auth_name, area_code, escape_literal(wkt), deprecated) + all_sql.append(sql) + + if deprecated and code != latestWkid: + mapDeprecatedToNonDeprecated[code] = latestWkid + + for deprecated in mapDeprecatedToNonDeprecated: + code = deprecated + latestWkid = mapDeprecatedToNonDeprecated[deprecated] + + if latestWkid in wkid_set: + sql = """INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','%s','ESRI','%s','ESRI');""" % ( + code, latestWkid) + all_sql.append(sql) + else: + cursor.execute( + "SELECT name FROM projected_crs WHERE auth_name = 'EPSG' AND code = ?", (latestWkid,)) + src_row = cursor.fetchone() + assert src_row, row + sql = """INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','%s','EPSG','%s','ESRI');""" % ( + code, latestWkid) + all_sql.append(sql) + + +######################## + +map_vdatum_esri_name_to_auth_code = {} +map_vdatum_esri_to_parameters = {} + + +def import_vdatum(): + with open(os.path.join(path_to_csv, 'pe_list_vdatum.csv'), 'rt') as csvfile: + reader = csv.reader(csvfile) + header = next(reader) + nfields = len(header) + + idx_wkid = header.index('wkid') + assert idx_wkid >= 0 + + idx_latestWkid = header.index('latestWkid') + assert idx_latestWkid >= 0 + + idx_name = header.index('name') + assert idx_name >= 0 + + idx_description = header.index('description') + assert idx_description >= 0 + + idx_wkt = header.index('wkt') + assert idx_wkt >= 0 + + idx_authority = header.index('authority') + assert idx_authority >= 0 + + idx_deprecated = header.index('deprecated') + assert idx_deprecated >= 0 + + while True: + try: + row = next(reader) + except StopIteration: + break + assert len(row) == nfields, row + + wkid = row[idx_wkid] + latestWkid = row[idx_latestWkid] + authority = row[idx_authority] + esri_name = row[idx_name] + + if authority == 'EPSG': + + map_vdatum_esri_name_to_auth_code[esri_name] = [ + 'EPSG', latestWkid] + + cursor.execute( + "SELECT name FROM vertical_datum WHERE auth_name = 'EPSG' AND code = ?", (latestWkid,)) + src_row = cursor.fetchone() + assert src_row, row + src_name = src_row[0] + esri_name = row[idx_name] + if src_name != esri_name: + sql = """INSERT INTO alias_name VALUES('vertical_datum','EPSG','%s','%s','ESRI');""" % ( + latestWkid, escape_literal(esri_name)) + all_sql.append(sql) + else: + assert authority.upper() == 'ESRI', row + + map_vdatum_esri_name_to_auth_code[esri_name] = ['ESRI', wkid] + + description = row[idx_description] + deprecated = 1 if row[idx_deprecated] == 'yes' else 0 + + map_vdatum_esri_to_parameters[wkid] = { + 'esri_name': esri_name, + 'description': description, + 'deprecated': deprecated + } + # We cannot write it since we lack the area of use + +######################## + + +map_vertcs_esri_name_to_auth_code = {} + + +def import_vertcs(): + with open(os.path.join(path_to_csv, 'pe_list_vertcs.csv'), 'rt') as csvfile: + reader = csv.reader(csvfile) + header = next(reader) + nfields = len(header) + + idx_wkid = header.index('wkid') + assert idx_wkid >= 0 + + idx_latestWkid = header.index('latestWkid') + assert idx_latestWkid >= 0 + + idx_name = header.index('name') + assert idx_name >= 0 + + idx_description = header.index('description') + assert idx_description >= 0 + + idx_wkt = header.index('wkt') + assert idx_wkt >= 0 + + idx_authority = header.index('authority') + assert idx_authority >= 0 + + idx_deprecated = header.index('deprecated') + assert idx_deprecated >= 0 + + idx_areaname = header.index('areaname') + assert idx_areaname >= 0 + + idx_slat = header.index('slat') + assert idx_slat >= 0 + + idx_nlat = header.index('nlat') + assert idx_nlat >= 0 + + idx_llon = header.index('llon') + assert idx_llon >= 0 + + idx_rlon = header.index('rlon') + assert idx_rlon >= 0 + + datum_written = set() + + while True: + try: + row = next(reader) + except StopIteration: + break + assert len(row) == nfields, row + + latestWkid = row[idx_latestWkid] + authority = row[idx_authority] + esri_name = row[idx_name] + + if authority == 'EPSG': + + map_vertcs_esri_name_to_auth_code[esri_name] = [ + 'EPSG', latestWkid] + + cursor.execute( + "SELECT name FROM vertical_crs WHERE auth_name = 'EPSG' AND code = ?", (latestWkid,)) + src_row = cursor.fetchone() + assert src_row, row + src_name = src_row[0] + esri_name = row[idx_name] + if src_name != esri_name: + sql = """INSERT INTO alias_name VALUES('vertical_crs','EPSG','%s','%s','ESRI');""" % ( + latestWkid, escape_literal(esri_name)) + all_sql.append(sql) + else: + assert authority.upper() == 'ESRI', row + + code = row[idx_wkid] + + wkt = row[idx_wkt] + + if ',DATUM[' in wkt: + # FIXME ?? + print('Skipping %s. Should be a CompoundCRS' % (esri_name)) + sql = """-- Skipping %s. Should be a CompoundCRS""" % ( + esri_name) + all_sql.append(sql) + continue + + pos = wkt.find('VDATUM["') + assert pos >= 0 + pos += len('VDATUM["') + end_pos = wkt[pos:].find('"') + assert end_pos >= 0 + end_pos += pos + datum_name = wkt[pos:end_pos] + + assert 'PARAMETER["Vertical_Shift",0.0]' in wkt, row + + if datum_name not in map_vdatum_esri_name_to_auth_code: + print('Skipping vertcs %s. it expresses an ellipsoidal height regarding a horizontal datum' % ( + str(row))) + sql = """-- Skipping vertcs %s. it expresses an ellipsoidal height regarding a horizontal datum""" % ( + esri_name, datum_name) + all_sql.append(sql) + continue + + datum_auth_name, datum_code = map_vdatum_esri_name_to_auth_code[datum_name] + + deprecated = 1 if row[idx_deprecated] == 'yes' else 0 + + area_auth_name, area_code = find_area( + row[idx_areaname], row[idx_slat], row[idx_nlat], row[idx_llon], row[idx_rlon]) + + if datum_auth_name == 'ESRI': + if datum_code not in datum_written: + datum_written.add(datum_code) + + p = map_vdatum_esri_to_parameters[datum_code] + sql = """INSERT INTO "vertical_datum" VALUES('ESRI','%s','%s',NULL,NULL,'%s','%s',%d);""" % ( + datum_code, p['esri_name'], area_auth_name, area_code, p['deprecated']) + all_sql.append(sql) + + map_vertcs_esri_name_to_auth_code[esri_name] = ['ESRI', code] + + if 'PARAMETER["Direction",1.0]' in wkt and 'UNIT["Meter"' in wkt: + cs_code = 6499 + elif 'PARAMETER["Direction",1.0]' in wkt and 'UNIT["Foot"' in wkt: + cs_code = 1030 + elif 'PARAMETER["Direction",1.0]' in wkt and 'UNIT["Foot_US"' in wkt: + cs_code = 6497 + else: + assert False, ('unknown coordinate system for %s' % + str(row)) + + sql = """INSERT INTO "vertical_crs" VALUES('ESRI','%s','%s',NULL,NULL,'EPSG','%s','%s','%s','%s','%s',%d);""" % ( + code, esri_name, cs_code, datum_auth_name, datum_code, area_auth_name, area_code, deprecated) + all_sql.append(sql) + + if deprecated and code != latestWkid: + cursor.execute( + "SELECT name FROM vertical_crs WHERE auth_name = 'EPSG' AND code = ?", (latestWkid,)) + src_row = cursor.fetchone() + assert src_row + + sql = """INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('vertical_crs','ESRI','%s','EPSG','%s','ESRI');""" % ( + code, latestWkid) + all_sql.append(sql) + + +######################## + +map_compoundcrs_esri_name_to_auth_code = {} + + +def import_hvcoordsys(): + with open(os.path.join(path_to_csv, 'pe_list_hvcoordsys.csv'), 'rt') as csvfile: + reader = csv.reader(csvfile) + header = next(reader) + nfields = len(header) + + idx_wkid = header.index('wkid') + assert idx_wkid >= 0 + + idx_latestWkid = header.index('latestWkid') + assert idx_latestWkid >= 0 + + idx_name = header.index('name') + assert idx_name >= 0 + + idx_description = header.index('description') + assert idx_description >= 0 + + idx_wkt = header.index('wkt') + assert idx_wkt >= 0 + + idx_authority = header.index('authority') + assert idx_authority >= 0 + + idx_deprecated = header.index('deprecated') + assert idx_deprecated >= 0 + + idx_areaname = header.index('areaname') + assert idx_areaname >= 0 + + idx_slat = header.index('slat') + assert idx_slat >= 0 + + idx_nlat = header.index('nlat') + assert idx_nlat >= 0 + + idx_llon = header.index('llon') + assert idx_llon >= 0 + + idx_rlon = header.index('rlon') + assert idx_rlon >= 0 + + while True: + try: + row = next(reader) + except StopIteration: + break + assert len(row) == nfields, row + + latestWkid = row[idx_latestWkid] + authority = row[idx_authority] + esri_name = row[idx_name] + + if authority == 'EPSG': + + map_compoundcrs_esri_name_to_auth_code[esri_name] = [ + 'EPSG', latestWkid] + + cursor.execute( + "SELECT name FROM compound_crs WHERE auth_name = 'EPSG' AND code = ?", (latestWkid,)) + src_row = cursor.fetchone() + assert src_row, row + src_name = src_row[0] + esri_name = row[idx_name] + if src_name != esri_name: + sql = """INSERT INTO alias_name VALUES('compound_crs','EPSG','%s','%s','ESRI');""" % ( + latestWkid, escape_literal(esri_name)) + all_sql.append(sql) + else: + assert False, row # no ESRI specific entries at that time ! + + +######################## + + +def get_parameter(wkt, param_name): + needle = ',PARAMETER["' + param_name + '",' + pos = wkt.find(needle) + assert pos >= 0, wkt + pos += len(needle) + end_pos = wkt[pos:].find(']') + assert end_pos >= 0, (wkt, wkt[pos:]) + end_pos += pos + return wkt[pos:end_pos] + + +def import_geogtran(): + with open(os.path.join(path_to_csv, 'pe_list_geogtran.csv'), 'rt') as csvfile: + reader = csv.reader(csvfile) + header = next(reader) + nfields = len(header) + + idx_wkid = header.index('wkid') + assert idx_wkid >= 0 + + idx_latestWkid = header.index('latestWkid') + assert idx_latestWkid >= 0 + + idx_name = header.index('name') + assert idx_name >= 0 + + idx_description = header.index('description') + assert idx_description >= 0 + + idx_wkt = header.index('wkt') + assert idx_wkt >= 0 + + idx_authority = header.index('authority') + assert idx_authority >= 0 + + idx_deprecated = header.index('deprecated') + assert idx_deprecated >= 0 + + idx_areaname = header.index('areaname') + assert idx_areaname >= 0 + + idx_slat = header.index('slat') + assert idx_slat >= 0 + + idx_nlat = header.index('nlat') + assert idx_nlat >= 0 + + idx_llon = header.index('llon') + assert idx_llon >= 0 + + idx_rlon = header.index('rlon') + assert idx_rlon >= 0 + + idx_accuracy = header.index('accuracy') + assert idx_accuracy >= 0 + + while True: + try: + row = next(reader) + except StopIteration: + break + assert len(row) == nfields, row + + wkid = row[idx_wkid] + authority = row[idx_authority] + esri_name = row[idx_name] + wkt = row[idx_wkt] + deprecated = 1 if row[idx_deprecated] == 'yes' else 0 + + if authority == 'EPSG': + + map_compoundcrs_esri_name_to_auth_code[esri_name] = [ + 'EPSG', wkid] + + cursor.execute( + "SELECT name FROM coordinate_operation_view WHERE auth_name = 'EPSG' AND code = ?", (wkid,)) + src_row = cursor.fetchone() + + if not src_row: + if 'Molodensky_Badekas' in wkt: + # print('Skipping GEOGTRAN %s (EPSG source) since it uses a non-supported yet suported method'% esri_name) + continue + + # Don't do anything particular in part of checking we now + # it + assert src_row, row + + else: + + # We don't want to import ESRI deprecated transformations + # (there are a lot), do we ? + if deprecated: + #print('Skipping deprecated GEOGTRAN %s' % esri_name) + continue + + assert wkt.startswith('GEOGTRAN') + + pos = wkt.find(',GEOGCS["') + assert pos >= 0 + pos += len(',GEOGCS["') + end_pos = wkt[pos:].find('"') + assert end_pos >= 0 + end_pos += pos + src_crs_name = wkt[pos:end_pos] + + pos = wkt[end_pos:].find(',GEOGCS["') + assert pos >= 0 + pos += end_pos + len(',GEOGCS["') + end_pos = wkt[pos:].find('"') + assert end_pos >= 0 + end_pos += pos + dst_crs_name = wkt[pos:end_pos] + + assert src_crs_name in map_geogcs_esri_name_to_auth_code, ( + src_crs_name, row) + src_crs_auth_name, src_crs_code = map_geogcs_esri_name_to_auth_code[src_crs_name] + + assert dst_crs_name in map_geogcs_esri_name_to_auth_code, ( + dst_crs_name, row) + dst_crs_auth_name, dst_crs_code = map_geogcs_esri_name_to_auth_code[dst_crs_name] + + is_longitude_rotation = 'METHOD["Longitude_Rotation"]' in wkt + if is_longitude_rotation: + # skip it as it is automatically handled by PROJ + continue + + is_cf = 'METHOD["Coordinate_Frame"]' in wkt + is_pv = 'METHOD["Position_Vector"]' in wkt + is_geocentric_translation = 'METHOD["Geocentric_Translation"]' in wkt + is_geog2d_offset = 'METHOD["Geographic_2D_Offset"]' in wkt + is_null = 'METHOD["Null"]' in wkt + is_unitchange = 'METHOD["Unit_Change"]' in wkt + is_nadcon = 'METHOD["NADCON"]' in wkt + is_ntv2 = 'METHOD["NTv2"]' in wkt + is_geocon = 'METHOD["GEOCON"]' in wkt + is_harn = 'METHOD["HARN"]' in wkt + is_molodensky_badekas = 'METHOD["Molodensky_Badekas"]' in wkt + assert is_cf or is_pv or is_geocentric_translation or is_molodensky_badekas or is_nadcon or is_geog2d_offset or is_ntv2 or is_geocon or is_null or is_harn or is_unitchange, ( + row) + + area_auth_name, area_code = find_area( + row[idx_areaname], row[idx_slat], row[idx_nlat], row[idx_llon], row[idx_rlon]) + + accuracy = row[idx_accuracy] + + if is_cf or is_pv: + x = get_parameter(wkt, 'X_Axis_Translation') + y = get_parameter(wkt, 'Y_Axis_Translation') + z = get_parameter(wkt, 'Z_Axis_Translation') + rx = get_parameter(wkt, 'X_Axis_Rotation') # in arc second + ry = get_parameter(wkt, 'Y_Axis_Rotation') + rz = get_parameter(wkt, 'Z_Axis_Rotation') + s = get_parameter(wkt, 'Scale_Difference') # in ppm + assert wkt.count('PARAMETER[') == 7 + + if is_cf: + method_code = '9607' + method_name = 'Coordinate Frame rotation (geog2D domain)' + else: + method_code = '9606' + method_name = 'Position Vector transformation (geog2D domain)' + + sql = """INSERT INTO "helmert_transformation" VALUES('ESRI','%s','%s',NULL,NULL,'EPSG','%s','%s','%s','%s','%s','%s','%s','%s',%s,%s,%s,%s,'EPSG','9001',%s,%s,%s,'EPSG','9104',%s,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,%d);""" % ( + wkid, esri_name, method_code, method_name, src_crs_auth_name, src_crs_code, dst_crs_auth_name, dst_crs_code, area_auth_name, area_code, accuracy, x, y, z, rx, ry, rz, s, deprecated) + all_sql.append(sql) + + elif is_molodensky_badekas: + x = get_parameter(wkt, 'X_Axis_Translation') + y = get_parameter(wkt, 'Y_Axis_Translation') + z = get_parameter(wkt, 'Z_Axis_Translation') + rx = get_parameter(wkt, 'X_Axis_Rotation') # in arc second + ry = get_parameter(wkt, 'Y_Axis_Rotation') + rz = get_parameter(wkt, 'Z_Axis_Rotation') + s = get_parameter(wkt, 'Scale_Difference') # in ppm + px = get_parameter(wkt, 'X_Coordinate_of_Rotation_Origin') + py = get_parameter(wkt, 'Y_Coordinate_of_Rotation_Origin') + pz = get_parameter(wkt, 'Z_Coordinate_of_Rotation_Origin') + assert wkt.count('PARAMETER[') == 10 + + # The ESRI naming is not really clear about the convention + # but it looks like it is Coordinate Frame when comparing ESRI:1066 (Amersfoort_To_ETRS_1989_MB) with EPSG:1066 + method_code = '9636' + method_name = 'Molodensky-Badekas (CF geog2D domain)' + + sql = """INSERT INTO "helmert_transformation" VALUES('ESRI','%s','%s',NULL,NULL,'EPSG','%s','%s','%s','%s','%s','%s','%s','%s',%s,%s,%s,%s,'EPSG','9001',%s,%s,%s,'EPSG','9104',%s,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,%s,%s,%s,'EPSG','9001',%d);""" % ( + wkid, esri_name, method_code, method_name, src_crs_auth_name, src_crs_code, dst_crs_auth_name, dst_crs_code, area_auth_name, area_code, accuracy, x, y, z, rx, ry, rz, s, px, py, pz, deprecated) + all_sql.append(sql) + + elif is_geocentric_translation: + x = get_parameter(wkt, 'X_Axis_Translation') + y = get_parameter(wkt, 'Y_Axis_Translation') + z = get_parameter(wkt, 'Z_Axis_Translation') + assert wkt.count('PARAMETER[') == 3 + + method_code = '9603' + method_name = 'Geocentric translations (geog2D domain)' + + sql = """INSERT INTO "helmert_transformation" VALUES('ESRI','%s','%s',NULL,NULL,'EPSG','%s','%s','%s','%s','%s','%s','%s','%s',%s,%s,%s,%s,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,%d);""" % ( + wkid, esri_name, method_code, method_name, src_crs_auth_name, src_crs_code, dst_crs_auth_name, dst_crs_code, area_auth_name, area_code, accuracy, x, y, z, deprecated) + all_sql.append(sql) + + elif is_geog2d_offset: + + # The only occurence is quite boring: from NTF(Paris) to NTF. + # But interestingly the longitude offset value is not + # completely exactly the value of the Paris prime meridian + + long_offset = get_parameter( + wkt, 'Longitude_Offset') # in arc second + lat_offset = get_parameter(wkt, 'Latitude_Offset') + assert wkt.count('PARAMETER[') == 2 + + sql = """INSERT INTO "other_transformation" VALUES('ESRI','%s','%s',NULL,NULL,'EPSG','9619','Geographic2D offsets','%s','%s','%s','%s','%s','%s',%s,'EPSG','8601','Latitude offset',%s,'EPSG','9104','EPSG','8602','Longitude offset',%s,'EPSG','9104',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,%d);""" % ( + wkid, esri_name, src_crs_auth_name, src_crs_code, dst_crs_auth_name, dst_crs_code, area_auth_name, area_code, accuracy, lat_offset, long_offset, deprecated) + all_sql.append(sql) + + elif is_null: + long_offset = '0' + lat_offset = '0' + assert wkt.count('PARAMETER[') == 0 + + sql = """INSERT INTO "other_transformation" VALUES('ESRI','%s','%s',NULL,NULL,'EPSG','9619','Geographic2D offsets','%s','%s','%s','%s','%s','%s',%s,'EPSG','8601','Latitude offset',%s,'EPSG','9104','EPSG','8602','Longitude offset',%s,'EPSG','9104',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,%d);""" % ( + wkid, esri_name, src_crs_auth_name, src_crs_code, dst_crs_auth_name, dst_crs_code, area_auth_name, area_code, accuracy, lat_offset, long_offset, deprecated) + all_sql.append(sql) + + elif is_unitchange: + + # Automatically handled by PROJ. Not worth importing + continue + + else: + assert wkt.count('PARAMETER[') == 1 + needle = ',PARAMETER["' + pos = wkt.find(needle) + assert pos >= 0, wkt + pos += len(needle) + end_pos = wkt[pos:].find('"') + assert end_pos >= 0, (wkt, wkt[pos:]) + end_pos += pos + filename = wkt[pos:end_pos] + assert filename.startswith('Dataset_') + filename = filename[len('Dataset_'):] + + + cursor.execute( + "SELECT name, grid_name FROM grid_transformation WHERE auth_name != 'ESRI' AND source_crs_auth_name = ? AND source_crs_code = ? AND target_crs_auth_name = ? AND target_crs_code = ? AND area_of_use_auth_name = ? AND area_of_use_code = ?", (src_crs_auth_name, src_crs_code, dst_crs_auth_name, dst_crs_code, area_auth_name, area_code)) + src_row = cursor.fetchone() + if src_row: + print('A grid_transformation (%s, using grid %s) is already known for the equivalent of %s (%s:%s --> %s:%s) for area %s, which uses grid %s. Skipping it' % (src_row[0], src_row[1], esri_name, src_crs_auth_name, src_crs_code, dst_crs_auth_name, dst_crs_code, row[idx_areaname], filename)) + continue + + sql = """INSERT INTO "grid_transformation" VALUES('ESRI','%s','%s',NULL,NULL,'EPSG','9615','NTv2','%s','%s','%s','%s','%s','%s',%s,'EPSG','8656','Latitude and longitude difference file','%s',NULL,NULL,NULL,NULL,NULL,NULL,%d);""" % ( + wkid, esri_name, src_crs_auth_name, src_crs_code, dst_crs_auth_name, dst_crs_code, area_auth_name, area_code, accuracy, filename, deprecated) + all_sql.append(sql) + + if filename in ('c1hpgn', 'c2hpgn'): + sql = """INSERT INTO grid_alternatives VALUES ('%s', '%s', 'NTv2', 'hgridshift', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);""" % ( + filename, filename + '.gsb') + all_sql.append(sql) + elif filename == 'wohpgn': + sql = """INSERT INTO grid_alternatives VALUES ('%s', '%s', 'CTable2', 'hgridshift', 0, 'proj-datumgrid', NULL, NULL, NULL, NULL);""" % ( + filename, 'WO') + all_sql.append(sql) + elif filename == 'prvi': + continue + else: + print('not handled grid: ' + filename) + + +import_linunit() +import_spheroid() +import_prime_meridian() +import_datum() +import_geogcs() +import_projcs() +import_vdatum() +import_vertcs() +import_hvcoordsys() # compoundcrs +import_geogtran() # transformations between GeogCRS + +script_dir_name = os.path.dirname(os.path.realpath(__file__)) +sql_dir_name = os.path.join(os.path.dirname(script_dir_name), 'data', 'sql') + +f = open(os.path.join(sql_dir_name, 'esri') + '.sql', 'wb') +f.write("--- This file has been generated by scripts/build_db_from_esri.py. DO NOT EDIT !\n\n".encode('UTF-8')) +for sql in all_sql: + f.write((sql + '\n').encode('UTF-8')) +f.close() + +print('') +print('Finished !') +print('NOTE: adding into metadata: ESRI.VERSION = %s. Update if needed !' % version) diff --git a/scripts/build_esri_projection_mapping.py b/scripts/build_esri_projection_mapping.py new file mode 100644 index 00000000..65e7d500 --- /dev/null +++ b/scripts/build_esri_projection_mapping.py @@ -0,0 +1,738 @@ +#!/usr/bin/env python +############################################################################### +# $Id$ +# +# Project: PROJ +# Purpose: Generate mappings between ESRI projection names and parameters and +# their EPSG equivalents. +# Author: Even Rouault <even.rouault at spatialys.com> +# +############################################################################### +# Copyright (c) 2018, Even Rouault <even.rouault at spatialys.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. +############################################################################### + +import yaml + +# Map methods from pe_list_projection.csv to WKT2 naming + +config_str = """ +- Plate_Carree: + WKT2_name: + - EPSG_NAME_METHOD_EQUIDISTANT_CYLINDRICAL + - EPSG_NAME_METHOD_EQUIDISTANT_CYLINDRICAL_SPHERICAL + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + Cond: + - EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL = 0 + +- Equidistant_Cylindrical: + WKT2_name: EPSG_NAME_METHOD_EQUIDISTANT_CYLINDRICAL + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL + +- Miller_Cylindrical: + WKT2_name: PROJ_WKT2_NAME_METHOD_MILLER_CYLINDRICAL + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + +- Mercator: # Mercator 2SP + WKT2_name: EPSG_NAME_METHOD_MERCATOR_VARIANT_B + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL + +- Gauss_Kruger: + WKT2_name: EPSG_NAME_METHOD_TRANSVERSE_MERCATOR + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Scale_Factor: EPSG_NAME_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN + - Latitude_Of_Origin: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN + +- Transverse_Mercator: + WKT2_name: EPSG_NAME_METHOD_TRANSVERSE_MERCATOR + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Scale_Factor: EPSG_NAME_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN + - Latitude_Of_Origin: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN + +- Albers: + WKT2_name: EPSG_NAME_METHOD_ALBERS_EQUAL_AREA + Params: + - False_Easting: EPSG_NAME_PARAMETER_EASTING_FALSE_ORIGIN + - False_Northing: EPSG_NAME_PARAMETER_NORTHING_FALSE_ORIGIN + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_FALSE_ORIGIN + - Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL + - Standard_Parallel_2: EPSG_NAME_PARAMETER_LATITUDE_2ND_STD_PARALLEL + - Latitude_Of_Origin: EPSG_NAME_PARAMETER_LATITUDE_FALSE_ORIGIN + +- Sinusoidal: + WKT2_name: PROJ_WKT2_NAME_METHOD_SINUSOIDAL + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + +- Mollweide: + WKT2_name: PROJ_WKT2_NAME_METHOD_MOLLWEIDE + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + +- Eckert_I: + WKT2_name: PROJ_WKT2_NAME_METHOD_ECKERT_I + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + +- Eckert_II: + WKT2_name: PROJ_WKT2_NAME_METHOD_ECKERT_II + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + +- Eckert_III: + WKT2_name: PROJ_WKT2_NAME_METHOD_ECKERT_III + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + +- Eckert_IV: + WKT2_name: PROJ_WKT2_NAME_METHOD_ECKERT_IV + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + +- Eckert_V: + WKT2_name: PROJ_WKT2_NAME_METHOD_ECKERT_V + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + +- Eckert_VI: + WKT2_name: PROJ_WKT2_NAME_METHOD_ECKERT_VI + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + +- Gall_Stereographic: + WKT2_name: PROJ_WKT2_NAME_METHOD_GALL_STEREOGRAPHIC + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + +# Behrmann: not handled + +- Winkel_I: + WKT2_name: "Winkel I" + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL + +- Winkel_II: + WKT2_name: "Winkel II" + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL + +- Lambert_Conformal_Conic: + - WKT2_name: EPSG_NAME_METHOD_LAMBERT_CONIC_CONFORMAL_1SP + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN + - Scale_Factor: EPSG_NAME_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN + - Latitude_Of_Origin: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN # should be the same as Standard_Parallel_1 + + - WKT2_name: EPSG_NAME_METHOD_LAMBERT_CONIC_CONFORMAL_2SP + Params: + - False_Easting: EPSG_NAME_PARAMETER_EASTING_FALSE_ORIGIN + - False_Northing: EPSG_NAME_PARAMETER_NORTHING_FALSE_ORIGIN + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_FALSE_ORIGIN + - Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL + - Standard_Parallel_2: EPSG_NAME_PARAMETER_LATITUDE_2ND_STD_PARALLEL + - Latitude_Of_Origin: EPSG_NAME_PARAMETER_LATITUDE_FALSE_ORIGIN + + # From GDAL autotest + - WKT2_name: EPSG_NAME_METHOD_LAMBERT_CONIC_CONFORMAL_2SP + Params: + - False_Easting: EPSG_NAME_PARAMETER_EASTING_FALSE_ORIGIN + - False_Northing: EPSG_NAME_PARAMETER_NORTHING_FALSE_ORIGIN + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_FALSE_ORIGIN + - Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL + - Standard_Parallel_2: EPSG_NAME_PARAMETER_LATITUDE_2ND_STD_PARALLEL + - Scale_Factor: 1.0 + - Latitude_Of_Origin: EPSG_NAME_PARAMETER_LATITUDE_FALSE_ORIGIN + + # Tempative mapping. Did not find any example + - WKT2_name: EPSG_NAME_METHOD_LAMBERT_CONIC_CONFORMAL_2SP_MICHIGAN + Params: + - False_Easting: EPSG_NAME_PARAMETER_EASTING_FALSE_ORIGIN + - False_Northing: EPSG_NAME_PARAMETER_NORTHING_FALSE_ORIGIN + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_FALSE_ORIGIN + - Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL + - Standard_Parallel_2: EPSG_NAME_PARAMETER_LATITUDE_2ND_STD_PARALLEL + - Scale_Factor: EPSG_NAME_PARAMETER_ELLIPSOID_SCALE_FACTOR + - Latitude_Of_Origin: EPSG_NAME_PARAMETER_LATITUDE_FALSE_ORIGIN + +- Polyconic: + WKT2_name: EPSG_NAME_METHOD_AMERICAN_POLYCONIC + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Latitude_Of_Origin: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN + +- Quartic_Authalic: + WKT2_name: "Quartic Authalic" + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + +- Loximuthal: + WKT2_name: "Loximuthal" + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Central_Parallel: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN + +- Bonne: + WKT2_name: EPSG_NAME_METHOD_BONNE + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN + +- Hotine_Oblique_Mercator_Two_Point_Natural_Origin: + WKT2_name: PROJ_WKT2_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_TWO_POINT_NATURAL_ORIGIN + Params: + - False_Easting: EPSG_NAME_PARAMETER_EASTING_PROJECTION_CENTRE + - False_Northing: EPSG_NAME_PARAMETER_NORTHING_PROJECTION_CENTRE + - Latitude_Of_1st_Point: "Latitude of 1st point" + - Latitude_Of_2nd_Point: "Latitude of 2nd point" + - Scale_Factor: EPSG_NAME_PARAMETER_SCALE_FACTOR_INITIAL_LINE + - Longitude_Of_1st_Point: "Longitude of 1st point" + - Longitude_Of_2nd_Point: "Longitude of 2nd point" + - Latitude_Of_Center: EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE + +- Stereographic: + WKT2_name: PROJ_WKT2_NAME_METHOD_STEREOGRAPHIC + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Scale_Factor: EPSG_NAME_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN + - Latitude_Of_Origin: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN + +- Equidistant_Conic: + WKT2_name: PROJ_WKT2_NAME_METHOD_EQUIDISTANT_CONIC + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL + - Standard_Parallel_2: EPSG_NAME_PARAMETER_LATITUDE_2ND_STD_PARALLEL + - Latitude_Of_Origin: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN + +- Cassini: + WKT2_name: EPSG_NAME_METHOD_CASSINI_SOLDNER + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Scale_Factor: 1.0 # fixed + - Latitude_Of_Origin: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN + +- Van_der_Grinten_I: + WKT2_name: PROJ_WKT2_NAME_METHOD_VAN_DER_GRINTEN + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + +- Robinson: + WKT2_name: PROJ_WKT2_NAME_METHOD_ROBINSON + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + +- Two_Point_Equidistant: + WKT2_name: PROJ_WKT2_NAME_METHOD_TWO_POINT_EQUIDISTANT + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Latitude_Of_1st_Point: "Latitude of 1st point" + - Latitude_Of_2nd_Point: "Latitude of 2nd point" + - Longitude_Of_1st_Point: "Longitude of 1st point" + - Longitude_Of_2nd_Point: "Longitude of 2nd point" + +- Azimuthal_Equidistant: + WKT2_name: EPSG_NAME_METHOD_MODIFIED_AZIMUTHAL_EQUIDISTANT + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Latitude_Of_Origin: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN + +- Lambert_Azimuthal_Equal_Area: + WKT2_name: EPSG_NAME_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Latitude_Of_Origin: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN + +- Cylindrical_Equal_Area: + WKT2_name: EPSG_NAME_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA_SPHERICAL + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL + +# No example in pe_list_projection.csv: temptative mapping ! +- Hotine_Oblique_Mercator_Two_Point_Center: + WKT2_name: PROJ_WKT2_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_TWO_POINT_NATURAL_ORIGIN + Params: + - False_Easting: EPSG_NAME_PARAMETER_EASTING_PROJECTION_CENTRE + - False_Northing: EPSG_NAME_PARAMETER_NORTHING_PROJECTION_CENTRE + - Latitude_Of_1st_Point: "Latitude of 1st point" + - Latitude_Of_2nd_Point: "Latitude of 2nd point" + - Scale_Factor: EPSG_NAME_PARAMETER_SCALE_FACTOR_INITIAL_LINE + - Longitude_Of_1st_Point: "Longitude of 1st point" + - Longitude_Of_2nd_Point: "Longitude of 2nd point" + - Latitude_Of_Origin: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN + +- Hotine_Oblique_Mercator_Azimuth_Natural_Origin: + WKT2_name: EPSG_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_A + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Scale_Factor: EPSG_NAME_PARAMETER_SCALE_FACTOR_INITIAL_LINE + - Azimuth: EPSG_NAME_PARAMETER_AZIMUTH_INITIAL_LINE + # No EPSG_NAME_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID + - Longitude_Of_Center: EPSG_NAME_PARAMETER_LONGITUDE_PROJECTION_CENTRE + - Latitude_Of_Center: EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE + + +- Hotine_Oblique_Mercator_Azimuth_Center: + WKT2_name: EPSG_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B + Params: + - False_Easting: EPSG_NAME_PARAMETER_EASTING_PROJECTION_CENTRE + - False_Northing: EPSG_NAME_PARAMETER_NORTHING_PROJECTION_CENTRE + - Scale_Factor: EPSG_NAME_PARAMETER_SCALE_FACTOR_INITIAL_LINE + - Azimuth: EPSG_NAME_PARAMETER_AZIMUTH_INITIAL_LINE + # No EPSG_NAME_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID + - Longitude_Of_Center: EPSG_NAME_PARAMETER_LONGITUDE_PROJECTION_CENTRE + - Latitude_Of_Center: EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE + +- Double_Stereographic: + WKT2_name: EPSG_NAME_METHOD_OBLIQUE_STEREOGRAPHIC + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Scale_Factor: EPSG_NAME_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN + - Latitude_Of_Origin: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN + +- Krovak: + - WKT2_name: EPSG_NAME_METHOD_KROVAK + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Pseudo_Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_PSEUDO_STANDARD_PARALLEL + - Scale_Factor: EPSG_NAME_PARAMETER_SCALE_FACTOR_PSEUDO_STANDARD_PARALLEL + - Azimuth: EPSG_NAME_PARAMETER_COLATITUDE_CONE_AXIS + - Longitude_Of_Center: EPSG_NAME_PARAMETER_LONGITUDE_OF_ORIGIN + - Latitude_Of_Center: EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE + - X_Scale: 1.0 + - Y_Scale: 1.0 + - XY_Plane_Rotation: 0.0 + + - WKT2_name: EPSG_NAME_METHOD_KROVAK_NORTH_ORIENTED + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Pseudo_Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_PSEUDO_STANDARD_PARALLEL + - Scale_Factor: EPSG_NAME_PARAMETER_SCALE_FACTOR_PSEUDO_STANDARD_PARALLEL + - Azimuth: EPSG_NAME_PARAMETER_COLATITUDE_CONE_AXIS + - Longitude_Of_Center: EPSG_NAME_PARAMETER_LONGITUDE_OF_ORIGIN + - Latitude_Of_Center: EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE + - X_Scale: -1.0 + - Y_Scale: 1.0 + - XY_Plane_Rotation: 90.0 + +- New_Zealand_Map_Grid: + WKT2_name: EPSG_NAME_METHOD_NZMG + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Longitude_Of_Origin: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Latitude_Of_Origin: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN + +- Orthographic: + WKT2_name: EPSG_NAME_METHOD_ORTHOGRAPHIC + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Longitude_Of_Center: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Latitude_Of_Center: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN + +- Winkel_Tripel: + WKT2_name: "Winkel Tripel" + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL + +- Aitoff: + WKT2_name: "Aitoff" + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + +# Hammer_Aitoff: not handled + +# Flat_Polar_Quartic: not handled + +- Craster_Parabolic: + WKT2_name: "Craster Parabolic" + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + +- Gnomonic: + WKT2_name: PROJ_WKT2_NAME_METHOD_GNOMONIC + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Longitude_Of_Center: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Latitude_Of_Center: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN + +# Times: not handled, but present in PROJ + +# Vertical_Near_Side_Perspective: not handled, but present in PROJ + +- Stereographic_North_Pole: + WKT2_name: EPSG_NAME_METHOD_POLAR_STEREOGRAPHIC_VARIANT_B + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_ORIGIN + - Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_STD_PARALLEL + Cond: + - EPSG_NAME_PARAMETER_LATITUDE_STD_PARALLEL > 0 + +- Stereographic_South_Pole: + WKT2_name: EPSG_NAME_METHOD_POLAR_STEREOGRAPHIC_VARIANT_B + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_ORIGIN + - Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_STD_PARALLEL + Cond: + - EPSG_NAME_PARAMETER_LATITUDE_STD_PARALLEL < 0 + +# Fuller: not handled + +- Rectified_Skew_Orthomorphic_Natural_Origin: + WKT2_name: EPSG_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_A + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Scale_Factor: EPSG_NAME_PARAMETER_SCALE_FACTOR_INITIAL_LINE + - Azimuth: EPSG_NAME_PARAMETER_AZIMUTH_INITIAL_LINE + - Longitude_Of_Center: EPSG_NAME_PARAMETER_LONGITUDE_PROJECTION_CENTRE + - Latitude_Of_Center: EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE + - XY_Plane_Rotation: EPSG_NAME_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID + +# temptative mapping: no example +- Rectified_Skew_Orthomorphic_Center: + WKT2_name: EPSG_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B + Params: + - False_Easting: EPSG_NAME_PARAMETER_EASTING_PROJECTION_CENTRE + - False_Northing: EPSG_NAME_PARAMETER_NORTHING_PROJECTION_CENTRE + - Scale_Factor: EPSG_NAME_PARAMETER_SCALE_FACTOR_INITIAL_LINE + - Azimuth: EPSG_NAME_PARAMETER_AZIMUTH_INITIAL_LINE + - Longitude_Of_Center: EPSG_NAME_PARAMETER_LONGITUDE_PROJECTION_CENTRE + - Latitude_Of_Center: EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE + - XY_Plane_Rotation: EPSG_NAME_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID + +# Cube: not handled + +# Transverse_Mercator_Complex: not handled + +# Robinson_ARC_INFO: not handled + +# Local: not handled + +- Goode_Homolosine: + WKT2_name: "Goode Homolosine" + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + +# Berghaus_Star: not handled + +- Equidistant_Cylindrical_Ellipsoidal: + WKT2_name: EPSG_NAME_METHOD_EQUIDISTANT_CYLINDRICAL + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL + +# Ney_Modified_Conic: not handled + +- Laborde_Oblique_Mercator: + WKT2_name: EPSG_NAME_METHOD_LABORDE_OBLIQUE_MERCATOR + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Scale_Factor: EPSG_NAME_PARAMETER_SCALE_FACTOR_INITIAL_LINE + - Azimuth: EPSG_NAME_PARAMETER_AZIMUTH_INITIAL_LINE + - Longitude_Of_Center: EPSG_NAME_PARAMETER_LONGITUDE_PROJECTION_CENTRE + - Latitude_Of_Center: EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE + +# IGAC_Plano_Cartesiano: not handled + +- Gnomonic_Ellipsoidal: + WKT2_name: PROJ_WKT2_NAME_METHOD_GNOMONIC + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Longitude_Of_Center: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Latitude_Of_Center: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN + +# Polar_Stereographic_Variant_A: not handled, no example in .csv + +# Polar_Stereographic_Variant_B: not handled, no example in .csv + +# Polar_Stereographic_Variant_C: not handled + +# Mercator_Variant_A: not handled, no example in .csv + +# Mercator_Variant_C: not handled, no example in .csv + +# Hammer_Ellipsoidal: not handled + +# Quartic_Authalic_Ellipsoidal: not handled, no example in .csv + +# Eckert_Greifendorff: not handled + +- Wagner_IV: + WKT2_name: PROJ_WKT2_NAME_METHOD_WAGNER_IV + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Latitude_Of_Origin: 0 + +- Wagner_V: + WKT2_name: PROJ_WKT2_NAME_METHOD_WAGNER_V + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + +- Wagner_VII: + WKT2_name: PROJ_WKT2_NAME_METHOD_WAGNER_VII + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + +# Natural_Earth: not handled + +# Natural_Earth_II: not handled + +# Patterson: not handled + +# Compact_Miller: not handled + +# Transverse_Mercator_NGA_2014: not handled + +# Transverse_Cylindrical_Equal_Area: not handled + +# Aspect_Adaptive_Cylindrical: not handled + +- Geostationary_Satellite: + WKT2_name: PROJ_WKT2_NAME_METHOD_GEOSTATIONARY_SATELLITE_SWEEP_Y + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Longitude_Of_Center: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Height: "Satellite Height" + - Option: 0.0 + +# Equidistant_Cylindrical_Auxiliary_Sphere: not handled + +- Mercator_Auxiliary_Sphere: + WKT2_name: EPSG_NAME_METHOD_POPULAR_VISUALISATION_PSEUDO_MERCATOR + Params: + - False_Easting: EPSG_NAME_PARAMETER_FALSE_EASTING + - False_Northing: EPSG_NAME_PARAMETER_FALSE_NORTHING + - Central_Meridian: EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN + - Standard_Parallel_1: EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN + - Auxiliary_Sphere_Type: 0.0 + +# Mollweide_Auxiliary_Sphere: not handled + +# Eckert_VI_Auxiliary_Sphere: not handled + +# Eckert_IV_Auxiliary_Sphere: not handled + +# Stereographic_Auxiliary_Sphere: not handled + +# Van_der_Grinten_I_Auxiliary_Sphere: not handled + +# Azimuthal_Equidistant_Auxiliary_Sphere: not handled + +# Lambert_Azimuthal_Equal_Area_Auxiliary_Sphere: not handled + +# Orthographic_Auxiliary_Sphere: not handled + +# Gnomonic_Auxiliary_Sphere: not handled + +""" + +config = yaml.load(config_str) + +all_projs = [] + + +def generate_mapping(WKT2_name, esri_proj_name, Params, suffix=''): + + c_name = 'paramsESRI_%s%s' % (esri_proj_name, suffix) + if isinstance(WKT2_name, list): + for WKT2_name_s in WKT2_name: + all_projs.append([esri_proj_name, WKT2_name_s, c_name]) + else: + all_projs.append([esri_proj_name, WKT2_name, c_name]) + print('static const ESRIParamMapping %s[] = { ' % c_name) + for param in Params: + for param_name in param: + param_value = param[param_name] + if isinstance(param_value, str): + if param_value.startswith('EPSG_'): + print(' { "%s", %s, %s, 0.0 },' % (param_name, param_value, param_value.replace('_NAME_', '_CODE_'))) + else: + print(' { "%s", "%s", 0, 0.0 },' % (param_name, param_value)) + else: + print(' { "%s", nullptr, 0, %.1f },' % (param_name, param_value)) + print(' { nullptr, nullptr, 0, 0.0 }') + print('};') + + +print('// This file was generated by scripts/build_esri_projection_mapping.py. DO NOT EDIT !') +print('') +print(""" +#ifndef FROM_COORDINATE_OPERATION_CPP +#error This file should only be included from coordinateoperation.cpp +#endif + +#ifndef ESRI_PROJECTION_MAPPINGS_HH_INCLUDED +#define ESRI_PROJECTION_MAPPINGS_HH_INCLUDED + +#include "coordinateoperation_internal.hpp" + +//! @cond Doxygen_Suppress + +// --------------------------------------------------------------------------- + +// anonymous namespace +namespace { + +using namespace ::NS_PROJ; +using namespace ::NS_PROJ::operation; + +""") + +for item in config: + for esri_proj_name in item: + proj_config = item[esri_proj_name] + if isinstance(proj_config, dict): + WKT2_name = proj_config['WKT2_name'] + Params = proj_config['Params'] + generate_mapping(WKT2_name, esri_proj_name, Params) + else: + count = 1 + for subconfig in proj_config: + WKT2_name = subconfig['WKT2_name'] + Params = subconfig['Params'] + generate_mapping(WKT2_name, esri_proj_name, Params, + suffix='_alt%d' % count) + count += 1 + print('') + +print('static const ESRIMethodMapping esriMappings[] = {') +for esri_proj_name, WKT2_name, c_name in all_projs: + if WKT2_name.startswith('EPSG_'): + print(' { "%s", %s, %s, %s },' % (esri_proj_name, WKT2_name, WKT2_name.replace('_NAME_', '_CODE_'), c_name)) + elif WKT2_name.startswith('PROJ_'): + print(' { "%s", %s, 0, %s },' % (esri_proj_name, WKT2_name, c_name)) + else: + print(' { "%s", "%s", 0, %s },' % (esri_proj_name, WKT2_name, c_name)) +print('};') + +print(""" +// --------------------------------------------------------------------------- + +// end of anonymous namespace +} + +//! @endcond + +#endif // ESRI_PROJECTION_MAPPINGS_HH_INCLUDED +""") diff --git a/scripts/build_grid_alternatives_generated.py b/scripts/build_grid_alternatives_generated.py new file mode 100755 index 00000000..6570a771 --- /dev/null +++ b/scripts/build_grid_alternatives_generated.py @@ -0,0 +1,157 @@ +#!/usr/bin/env python +############################################################################### +# $Id$ +# +# Project: PROJ +# Purpose: Populate grid_alternatives with NAD83 -> NAD83(HPGN/HARN) grids +# Author: Even Rouault <even.rouault at spatialys.com> +# +############################################################################### +# Copyright (c) 2018, Even Rouault <even.rouault at spatialys.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. +############################################################################### + +import os + +nadcon_grids = ['conus', 'alaska', 'hawaii', + 'prvi', 'stgeorge', 'stlrnc', 'stpaul'] + +hpgn_grids = [ + 'alhpgn.gsb', + 'arhpgn.gsb', + 'azhpgn.gsb', + #'c1hpgn.gsb', -- Not used in EPSG + #'c2hpgn.gsb', -- Not used in EPSG + 'cnhpgn.gsb', + 'cohpgn.gsb', + 'cshpgn.gsb', + 'emhpgn.gsb', + 'eshpgn.gsb', + 'ethpgn.gsb', + ('flhpgn.gsb', 'FL'), + 'gahpgn.gsb', + 'guhpgn.gsb', + 'hihpgn.gsb', + 'iahpgn.gsb', + 'ilhpgn.gsb', + 'inhpgn.gsb', + 'kshpgn.gsb', + 'kyhpgn.gsb', + 'lahpgn.gsb', + ('mdhpgn.gsb', 'MD'), + 'mehpgn.gsb', + 'mihpgn.gsb', + 'mnhpgn.gsb', + 'mohpgn.gsb', + 'mshpgn.gsb', + 'nbhpgn.gsb', + 'nchpgn.gsb', + 'ndhpgn.gsb', + 'nehpgn.gsb', + 'njhpgn.gsb', + 'nmhpgn.gsb', + 'nvhpgn.gsb', + 'nyhpgn.gsb', + 'ohhpgn.gsb', + 'okhpgn.gsb', + 'pahpgn.gsb', + 'pvhpgn.gsb', + 'schpgn.gsb', + 'sdhpgn.gsb', + ('tnhpgn.gsb', 'TN'), + 'uthpgn.gsb', + 'vahpgn.gsb', + ('wihpgn.gsb', 'WI'), + 'wmhpgn.gsb', + ('wohpgn.gsb', 'WO'), + 'wshpgn.gsb', + 'wthpgn.gsb', + 'wvhpgn.gsb', + 'wyhpgn.gsb', +] + +script_dir_name = os.path.dirname(os.path.realpath(__file__)) +sql_dir_name = os.path.join(os.path.dirname(script_dir_name), 'data', 'sql') + +f = open(os.path.join(sql_dir_name, 'grid_alternatives_generated') + '.sql', 'wb') +f.write("--- This file has been generated by scripts/build_grid_alternatives_generated.py. DO NOT EDIT !\n\n".encode('UTF-8')) + +f.write("-- NADCON (NAD27 -> NAD83) entries\n\n".encode('UTF-8')) + +for grid in nadcon_grids: + sql = """INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('%s', + '%s', + 'CTable2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL);""" % (grid + '.las', grid) + f.write((sql + '\n').encode('UTF-8')) + + +f.write("-- NAD83 -> NAD83(HPGN) entries\n\n".encode('UTF-8')) + +for row in hpgn_grids: + try: + ntv2_name, ctable2_name = row + except: + ntv2_name = row + ctable2_name = None + las_filename = ntv2_name[0:-4] + ".las" + if ctable2_name: + sql = """INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('%s', + '%s', + 'CTable2', + 'hgridshift', + 0, + 'proj-datumgrid', + NULL, NULL, NULL, NULL);""" % (las_filename, ctable2_name) + else: + sql = """INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + VALUES ('%s', + '%s', + 'NTv2', + 'hgridshift', + 0, + 'proj-datumgrid-north-america', + NULL, NULL, NULL, NULL);""" % (las_filename, ntv2_name) + f.write((sql + '\n').encode('UTF-8')) + +f.close() diff --git a/scripts/cppcheck.sh b/scripts/cppcheck.sh index bac95847..bd677e3d 100755 --- a/scripts/cppcheck.sh +++ b/scripts/cppcheck.sh @@ -23,7 +23,8 @@ for dirname in ${TOPDIR}/src; do echo "Running cppcheck on $dirname... (can be long)" if ! cppcheck --inline-suppr --template='{file}:{line},{severity},{id},{message}' \ --enable=all --inconclusive --std=posix \ - -DCPPCHECK -DACCEPT_USE_OF_DEPRECATED_PROJ_API_H\ + -DCPPCHECK -D__cplusplus=201103L -DACCEPT_USE_OF_DEPRECATED_PROJ_API_H \ + -I${TOPDIR}/src -I${TOPDIR}/include \ "$dirname" \ -j 8 >>${LOG_FILE} 2>&1 ; then echo "cppcheck failed" @@ -33,7 +34,7 @@ done ret_code=0 -grep -v "unmatchedSuppression" ${LOG_FILE} > ${LOG_FILE}.tmp +grep -v "unmatchedSuppression" ${LOG_FILE} | grep -v "nn.hpp" > ${LOG_FILE}.tmp mv ${LOG_FILE}.tmp ${LOG_FILE} if grep "null pointer" ${LOG_FILE} ; then diff --git a/scripts/create_c_api_projections.py b/scripts/create_c_api_projections.py new file mode 100755 index 00000000..5d10a16b --- /dev/null +++ b/scripts/create_c_api_projections.py @@ -0,0 +1,159 @@ +#!/usr/bin/env python +############################################################################### +# $Id$ +# +# Project: PROJ +# Purpose: Parse XML output of Doxygen on coordinateoperation.hpp to creat +# C API for projections. +# Author: Even Rouault <even.rouault at spatialys.com> +# +############################################################################### +# Copyright (c) 2018, Even Rouault <even.rouault at spatialys.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. +############################################################################### + +from lxml import etree +import os + +script_dir_name = os.path.dirname(os.path.realpath(__file__)) + +# Make sure to run doxygen +if not 'SKIP_DOXYGEN' in os.environ: + os.system("bash " + os.path.join(script_dir_name, "doxygen.sh")) + +xmlfilename = os.path.join(os.path.dirname(script_dir_name), + 'docs/build/xml/classosgeo_1_1proj_1_1operation_1_1Conversion.xml') + +tree = etree.parse(open(xmlfilename, 'rt')) +root = tree.getroot() +compounddef = root.find('compounddef') + +header = open('projections.h', 'wt') +cppfile = open('projections.cpp', 'wt') +test_cppfile = open('test_projections.cpp', 'wt') + +header.write("/* BEGIN: Generated by scripts/create_c_api_projections.py*/\n") + +cppfile.write("/* BEGIN: Generated by scripts/create_c_api_projections.py*/\n") +cppfile.write("\n"); + +test_cppfile.write("/* BEGIN: Generated by scripts/create_c_api_projections.py*/\n") + +for sectiondef in compounddef.iter('sectiondef'): + if sectiondef.attrib['kind'] == 'public-static-func': + for func in sectiondef.iter('memberdef'): + name = func.find('name').text + assert name.startswith('create') + if name in ('create', 'createChangeVerticalUnit', + 'createAxisOrderReversal', 'createGeographicGeocentric'): + continue + params = [] + has_angle = False + has_linear = False + for param in func.iter('param'): + type = param.find('type').xpath("normalize-space()") + if type.find('Angle') >= 0: + has_angle = True + if type.find('Length') >= 0: + has_linear = True + paramname = param.find('declname').text + if paramname == 'properties': + continue + params.append((type, paramname)) + + shortName = name[len('create'):] + + decl = "proj_obj_create_projected_crs_" + decl += shortName + decl += "(\n" + decl += " PJ_OBJ* geodetic_crs, const char* crs_name,\n" + for param in params: + if param[0] in ('int', 'bool'): + decl += " int " + param[1] + ",\n" + else: + decl += " double " + param[1] + ",\n" + if has_angle: + decl += " const char* angUnitName, double angUnitConvFactor" + if has_linear: + decl += "," + decl += "\n" + if has_linear: + decl += " const char* linearUnitName, double linearUnitConvFactor" + decl += ")" + + header.write("PJ_OBJ PROJ_DLL *" + decl + ";\n\n") + + briefdescription = func.find('briefdescription/para').xpath("normalize-space()") + briefdescription = briefdescription.replace("Instanciate ", "Instanciate a ProjectedCRS with ") + + cppfile.write("// ---------------------------------------------------------------------------\n\n") + cppfile.write("/** \\brief " + briefdescription + "\n") + cppfile.write(" *\n") + cppfile.write(" * See osgeo::proj::operation::Conversion::create" + shortName + "().\n") + cppfile.write(" *\n") + cppfile.write(" * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor).\n") + if has_angle: + cppfile.write(" * Angular parameters are expressed in (angUnitName, angUnitConvFactor).\n") + cppfile.write(" */\n") + cppfile.write("PJ_OBJ* " + decl + "{\n"); + if not has_linear: + cppfile.write(" const auto& linearUnit = UnitOfMeasure::METRE;\n") + else: + cppfile.write(" UnitOfMeasure linearUnit(createLinearUnit(linearUnitName, linearUnitConvFactor));\n") + if has_angle: + cppfile.write(" UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor));\n") + cppfile.write(" auto conv = Conversion::create" + shortName + "(PropertyMap()") + for param in params: + if param[0] in 'int': + cppfile.write(", " + param[1]) + elif param[0] in 'bool': + cppfile.write(", " + param[1] + " != 0") + elif param[0].find('Angle') >= 0: + cppfile.write(", Angle(" + param[1] + ", angUnit)") + elif param[0].find('Length') >= 0: + cppfile.write(", Length(" + param[1] + ", linearUnit)") + elif param[0].find('Scale') >= 0: + cppfile.write(", Scale(" + param[1] + ")") + + cppfile.write(");\n") + cppfile.write(" return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, linearUnit);\n") + cppfile.write("}\n") + + test_cppfile.write("{\n") + test_cppfile.write(" auto projCRS = proj_obj_create_projected_crs_" + shortName + "(\n") + test_cppfile.write(" geogCRS, nullptr") + for param in params: + test_cppfile.write(", 0") + if has_angle: + test_cppfile.write(", \"Degree\", 0.0174532925199433") + if has_angle: + test_cppfile.write(", \"Metre\", 1.0") + test_cppfile.write(");\n") + test_cppfile.write(" ObjectKeeper keeper_projCRS(projCRS);\n") + test_cppfile.write(" ASSERT_NE(projCRS, nullptr);\n") + test_cppfile.write("}\n") + + +header.write("/* END: Generated by scripts/create_c_api_projections.py*/\n") +cppfile.write("/* END: Generated by scripts/create_c_api_projections.py*/\n") + +test_cppfile.write("/* END: Generated by scripts/create_c_api_projections.py*/\n") + +print('projections.h and .cpp, and test_projections.cpp have been generated. Manually merge them now')
\ No newline at end of file diff --git a/scripts/create_proj_symbol_rename.sh b/scripts/create_proj_symbol_rename.sh new file mode 100755 index 00000000..7ede0df2 --- /dev/null +++ b/scripts/create_proj_symbol_rename.sh @@ -0,0 +1,91 @@ +#!/bin/bash + +# Script to extract exported symbols and rename them +# to avoid clashing with other older libproj +# +# This is done in provision for the integration of PROJ master with GDAL. GDAL is +# a complex library that links with many libraries, a number of them linking with +# PROJ. However in the continuous integration setups used by GDAL, it would be +# impractical to recompile all those libraries that use the system libproj (4.X or 5.X) +# that comes with the distribution. Linking GDAL directly against PROJ master +# and this system libproj with potential different ABI is prone to clash/crash +# (we experimented that painfully in GDAL with its internal libtiff 4.X copy whereas +# systems shipped with libtiff 3.X) +# Hence this solution to rename the symbols of PROJ master so that PROJ master +# can be used by GDAL without conflicting with the system PROJ. +# The renaming only happens if -DPROJ_RENAME_SYMBOLS is passed in CFLAGS and CXXFLAGS. +# +# Note: we potentially should do the same for C++ symbols, but that is not needed +# for now, and we would just set the NS_PROJ existing macro to change the C++ base +# namespace which defaults to osgeo::proj currently. + +# To be run from a 'build' subdir after running configure + +PROJ_ROOT=$(cd $(dirname ${BASH_SOURCE[0]})/..; pwd) + +rm -rf tmp_alias +mkdir tmp_alias +for i in ${PROJ_ROOT}/src/*.c; do + if ! echo "$i" | grep -q "test228.c"; then + if ! echo "$i" | grep -q "proj.c" ; then + if ! echo "$i" | grep -q "geod.c" ; then + if ! echo "$i" | grep -q "nad2bin.c" ; then + if ! echo "$i" | grep -q "geodtest.c" ; then + if ! echo "$i" | grep -q "multistresstest.c" ; then + if ! echo "$i" | grep -q "gie.c" ; then + if ! echo "$i" | grep -q "cs2cs.c" ; then + if ! echo "$i" | grep -q "cct.c" ; then + echo $i + (cd tmp_alias; gcc -fvisibility=hidden ${i} -I../src -I${PROJ_ROOT}/src -I${PROJ_ROOT}/include -fPIC -c) + fi + fi + fi + fi + fi + fi + fi + fi + fi +done +for i in ${PROJ_ROOT}/src/*.cpp; do + if ! echo "$i" | grep -q "projinfo.cpp"; then + echo $i + (cd tmp_alias; g++ -fvisibility=hidden -std=c++11 ${i} -I../src -I${PROJ_ROOT}/src -I${PROJ_ROOT}/include -fPIC -c) + fi +done + +(cd tmp_alias; g++ -fvisibility=hidden -std=c++11 *.o -shared -o libproj.so) + +OUT_FILE=proj_symbol_rename.h + +rm $OUT_FILE 2>/dev/null + +echo "/* This is a generated file by create_proj_symbol_rename.sh. *DO NOT EDIT MANUALLY !* */" >> $OUT_FILE +echo "#ifndef PROJ_SYMBOL_RENAME_H" >> $OUT_FILE +echo "#define PROJ_SYMBOL_RENAME_H" >> $OUT_FILE + +symbol_list=$(objdump -t tmp_alias/libproj.so | grep " g " | grep .text | awk '{print $6}' | grep -v -e _Z | sort) +for symbol in $symbol_list +do + echo "#define $symbol internal_$symbol" >> $OUT_FILE +done + +rodata_symbol_list=$(objdump -t tmp_alias/libproj.so | grep " g O \\.rodata" | awk '{print $6}') +for symbol in $rodata_symbol_list +do + echo "#define $symbol internal_$symbol" >> $OUT_FILE +done + +#data_symbol_list=$(objdump -t tmp_alias/libproj.so | grep "\\.data" | grep -v -e __dso_handle -e __TMC_END__ | awk '{print $6}' | grep -v "\\."| grep -v _Z) +#for symbol in $data_symbol_list +#do +# echo "#define $symbol internal_$symbol" >> $OUT_FILE +#done + +bss_symbol_list=$(objdump -t tmp_alias/libproj.so | grep "g O \\.bss" | awk '{print $6}' | grep -v "\\."| grep -v _Z) +for symbol in $bss_symbol_list +do + echo "#define $symbol internal_$symbol" >> $OUT_FILE +done + +echo "#endif /* PROJ_SYMBOL_RENAME_H */" >> $OUT_FILE diff --git a/scripts/doxygen.sh b/scripts/doxygen.sh new file mode 100755 index 00000000..2f44dca8 --- /dev/null +++ b/scripts/doxygen.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +set -eu + +SCRIPT_DIR=$(dirname "$0") +case $SCRIPT_DIR in + "/"*) + ;; + ".") + SCRIPT_DIR=$(pwd) + ;; + *) + SCRIPT_DIR=$(pwd)/$(dirname "$0") + ;; +esac + +TOPDIR="$SCRIPT_DIR/.." + +pushd "${TOPDIR}" > /dev/null || exit + +# HTML generation +# Check that doxygen runs warning free +rm -rf docs/build/html/ +mkdir -p docs/build/ +doxygen > /tmp/docs_log.txt 2>&1 +if grep -i warning /tmp/docs_log.txt; then + echo "Doxygen warnings found" && cat /tmp/docs_log.txt && /bin/false; +else + echo "No Doxygen warnings found"; +fi + + +# XML generation (for Breathe) +mkdir -p docs/build/tmp_breathe +python scripts/generate_breathe_friendly_general_doc.py +rm -rf docs/build/xml/ +(cat Doxyfile; printf "GENERATE_HTML=NO\nGENERATE_XML=YES\nINPUT= src include/proj src/proj.h docs/build/tmp_breathe/general_doc.dox.reworked.h") | doxygen - > /tmp/docs_log.txt 2>&1 +if grep -i warning /tmp/docs_log.txt; then + echo "Doxygen warnings found" && cat /tmp/docs_log.txt && /bin/false; +else + echo "No Doxygen warnings found"; +fi + +for i in ${TOPDIR}/docs/build/xml/*; do + +# Fix Breathe error on Doxygen XML +# Type must be either just a name or a typedef-like declaration. +# If just a name: +# Invalid definition: Expected end of definition. [error at 32] +# osgeo::proj::common::MeasurePtr = typedef std::shared_ptr<Measure> + sed "s/ = typedef /=/g" < $i > $i.tmp; + mv $i.tmp $i +done + +# There is a confusion for Breathe between PROJStringFormatter::Convention and WKTFormatter:Convention +sed "s/Convention/Convention_/g" < ${TOPDIR}/docs/build/xml/classosgeo_1_1proj_1_1io_1_1WKTFormatter.xml | sed "s/WKT2_2018/_WKT2_2018/g" | sed "s/WKT2_2015/_WKT2_2015/g" | sed "s/WKT1_GDAL/_WKT1_GDAL/g" | sed "s/WKT1_ESRI/_WKT1_ESRI/g" > ${TOPDIR}/docs/build/xml/classosgeo_1_1proj_1_1io_1_1WKTFormatter.xml.tmp +mv ${TOPDIR}/docs/build/xml/classosgeo_1_1proj_1_1io_1_1WKTFormatter.xml.tmp ${TOPDIR}/docs/build/xml/classosgeo_1_1proj_1_1io_1_1WKTFormatter.xml + +popd > /dev/null || exit + diff --git a/scripts/filter_lcov_info.py b/scripts/filter_lcov_info.py new file mode 100755 index 00000000..98d630a3 --- /dev/null +++ b/scripts/filter_lcov_info.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python + +# Remove coverage from system include files in lcov output + +import sys +import fnmatch + +extension_filter = None +if len(sys.argv) == 2: + extension_filter = sys.argv[1].split(',') + +output_lines = True +for line in sys.stdin.readlines(): + if line.startswith('SF:/usr/include'): + output_lines = False + elif line.startswith('SF:'): + if extension_filter: + output_lines = False + for filter in extension_filter: + if fnmatch.fnmatch(line.strip('\n'), filter): + output_lines = True + break + else: + output_lines = True + if output_lines: + sys.stdout.write(line) diff --git a/scripts/fix_typos.sh b/scripts/fix_typos.sh index 06dfa821..fa3168f9 100755 --- a/scripts/fix_typos.sh +++ b/scripts/fix_typos.sh @@ -51,4 +51,4 @@ WORDS_WHITE_LIST="metres,als,lsat,twon,ang,PJD_ERR_UNKNOW_UNIT_ID,PJD_ERR_LSAT_N python3 fix_typos/codespell/codespell.py -w -i 3 -q 2 -S $EXCLUDED_FILES \ -x scripts/typos_whitelist.txt --words-white-list=$WORDS_WHITE_LIST \ - -D fix_typos/gdal_dict.txt ./src ./docs ./cmake ./examples + -D fix_typos/gdal_dict.txt ./include ./src ./docs ./cmake ./examples diff --git a/scripts/gen_html_coverage.sh b/scripts/gen_html_coverage.sh index 95dfb1af..bb239fbf 100755 --- a/scripts/gen_html_coverage.sh +++ b/scripts/gen_html_coverage.sh @@ -1,5 +1,43 @@ #!/bin/sh set -eu + +# To filter only on c++ stuff: +# scripts/gen_html_coverage.sh -ext "*.cpp,*.hh" + +SCRIPT_DIR=$(dirname "$0") +case $SCRIPT_DIR in + "/"*) + ;; + ".") + SCRIPT_DIR=$(pwd) + ;; + *) + SCRIPT_DIR=$(pwd)/$(dirname "$0") + ;; +esac + +FILTER="" +if test $# -ge 1; then + if test "$1" = "--help"; then + echo "Usage: gen_html_coverage.sh [--help] [-ext \"ext1,...\"]" + exit + fi + + if test "$1" = "-ext"; then + FILTER="$2" + shift + shift + fi + + if test $# -ge 1; then + echo "Invalid option: $1" + echo "Usage: gen_html_coverage.sh [--help] [-ext \"ext1,...\"]" + exit + fi +fi + rm -rf coverage_html -lcov --directory src --capture --output-file proj.info +lcov --directory src --directory include --capture --output-file proj.info +"$SCRIPT_DIR"/filter_lcov_info.py "$FILTER" < proj.info > proj.info.filtered +mv proj.info.filtered proj.info genhtml -o ./coverage_html --ignore-errors source --num-spaces 2 proj.info diff --git a/scripts/generate_breathe_friendly_general_doc.py b/scripts/generate_breathe_friendly_general_doc.py new file mode 100644 index 00000000..746bdd04 --- /dev/null +++ b/scripts/generate_breathe_friendly_general_doc.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python +############################################################################### +# $Id$ +# +# Project: PROJ +# Purpose: Rework general_doc.dox in a Breathe friendly (hacky) way +# Author: Even Rouault <even.rouault at spatialys.com> +# +############################################################################### +# Copyright (c) 2018, Even Rouault <even.rouault at spatialys.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. +############################################################################### + +import os + +# HACK HACK HACK +# Transform a .dox with section, subsection, etc.. in fake namespaces +# since Breathe cannot handle such sections and references to them + +script_dir_name = os.path.dirname(os.path.realpath(__file__)) +general_doc_dox = os.path.join(os.path.dirname( + script_dir_name), 'src', 'general_doc.dox') +general_doc_dox_reworked_h = os.path.join(os.path.dirname( + script_dir_name), 'docs/build/tmp_breathe', 'general_doc.dox.reworked.h') + +out = open(general_doc_dox_reworked_h, 'wt') + + +class Section: + + def __init__(self): + self.name = None + self.title = None + self.content = '' + self.children = [] + pass + + def serialize(self, out): + out.write("/** \\brief %s\n" % self.title) + out.write("\n") + out.write("%s\n" % self.content) + out.write("*/\n") + out.write("namespace %s {\n" % self.name) + out.write("}\n") + for child in self.children: + child.serialize(out) + + +stack = [] +current = None + +for line in open(general_doc_dox, 'rt').readlines(): + line = line.strip() + if line == '/*!' or line == '*/': + continue + + if line.startswith('\page'): + + tokens = line.split(' ') + new = Section() + new.name = tokens[1] + new.title = ' '.join(tokens[2:]) + current = new + stack.append(new) + continue + + if line.startswith('\section'): + + stack = stack[0:1] + current = stack[-1] + + tokens = line.split(' ') + new = Section() + new.name = tokens[1] + new.title = ' '.join(tokens[2:]) + current.children.append(new) + current = new + stack.append(new) + continue + + if line.startswith('\subsection'): + + stack = stack[0:2] + current = stack[-1] + + tokens = line.split(' ') + new = Section() + new.name = tokens[1] + new.title = ' '.join(tokens[2:]) + current.children.append(new) + current = new + stack.append(new) + continue + + if line.startswith('\subsubsection'): + + stack = stack[0:3] + current = stack[-1] + + tokens = line.split(' ') + new = Section() + new.name = tokens[1] + new.title = ' '.join(tokens[2:]) + current.children.append(new) + current = new + stack.append(new) + continue + + if current: + current.content += line + '\n' + +for child in stack[0].children: + child.serialize(out) diff --git a/scripts/reformat.sh b/scripts/reformat.sh new file mode 100755 index 00000000..c3826322 --- /dev/null +++ b/scripts/reformat.sh @@ -0,0 +1,17 @@ +#!/bin/sh +set -eu + +# Refuse to reformat nn.hpp: this is third-party code +if test $(basename $1) = "nn.hpp"; then + exit 0 +fi + +clang-format -style="{BasedOnStyle: llvm, IndentWidth: 4}" $1 > $1.reformatted +if diff -u $1.reformatted $1; then + # No reformatting: remove temporary file + rm $1.reformatted +else + # Differences. Backup original file, and use reformatted file + cp $1 $1.before_reformat + mv $1.reformatted $1 +fi diff --git a/scripts/reformat_cpp.sh b/scripts/reformat_cpp.sh new file mode 100755 index 00000000..51127529 --- /dev/null +++ b/scripts/reformat_cpp.sh @@ -0,0 +1,22 @@ +#!/bin/sh +set -eu + +SCRIPT_DIR=$(dirname "$0") +case $SCRIPT_DIR in + "/"*) + ;; + ".") + SCRIPT_DIR=$(pwd) + ;; + *) + SCRIPT_DIR=$(pwd)/$(dirname "$0") + ;; +esac + +TOPDIR="$SCRIPT_DIR/.." + +for i in "$TOPDIR"/include/proj/*.hpp "$TOPDIR"/include/proj/internal/*.hpp "$TOPDIR"/src/*.cpp "$TOPDIR"/test/unit/test*.cpp; do + if ! echo "$i" | grep -q "lru_cache.hpp"; then + "$SCRIPT_DIR"/reformat.sh "$i"; + fi +done diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c4f4dd20..de8ca3e5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -9,6 +9,7 @@ option(BUILD_GEOD "Build geod (computation of geodesic lines)" ON) option(BUILD_GIE "Build gie (geospatial integrity investigation environment - a PROJ.4 test tool)" ON) option(BUILD_NAD2BIN "Build nad2bin (format conversion tool)" ON) option(BUILD_PROJ "Build proj (cartographic projection tool : latlong <-> projected coordinates)" ON) +option(BUILD_PROJINFO "Build projinfo (SRS and coordinate operation metadata/query tool)" ON) if(NOT MSVC) @@ -59,6 +60,11 @@ if(BUILD_PROJ) set(BIN_TARGETS ${BIN_TARGETS} binproj) endif(BUILD_PROJ) +if(BUILD_PROJINFO) + include(bin_projinfo.cmake) + set(BIN_TARGETS ${BIN_TARGETS} binprojinfo) +endif(BUILD_PROJINFO) + if(BUILD_GIE) include(bin_gie.cmake) set(BIN_TARGETS ${BIN_TARGETS} gie) diff --git a/src/Makefile.am b/src/Makefile.am index 359f2f28..81524e82 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,23 +1,24 @@ AM_CFLAGS = @C_WFLAGS@ -AM_CXXFLAGS = @CXX_WFLAGS@ -bin_PROGRAMS = proj nad2bin geod cs2cs gie cct +bin_PROGRAMS = proj nad2bin geod cs2cs gie cct projinfo EXTRA_PROGRAMS = multistresstest test228 TESTS = geodtest check_PROGRAMS = geodtest AM_CPPFLAGS = -DPROJ_LIB=\"$(pkgdatadir)\" \ - -DMUTEX_@MUTEX_SETTING@ @JNI_INCLUDE@ + -DMUTEX_@MUTEX_SETTING@ @JNI_INCLUDE@ -I$(top_srcdir)/include @SQLITE3_FLAGS@ +AM_CXXFLAGS = @CXX_WFLAGS@ @FLTO_FLAG@ -DPROJ_COMPILATION -include_HEADERS = proj.h proj_api.h geodesic.h \ - org_proj4_PJ.h +include_HEADERS = proj.h proj_constants.h proj_api.h geodesic.h \ + org_proj4_PJ.h proj_symbol_rename.h -EXTRA_DIST = proj.def bin_cct.cmake bin_gie.cmake bin_cs2cs.cmake \ - bin_geod.cmake bin_nad2bin.cmake bin_proj.cmake \ +EXTRA_DIST = bin_cct.cmake bin_gie.cmake bin_cs2cs.cmake \ + bin_geod.cmake bin_nad2bin.cmake bin_proj.cmake bin_projinfo.cmake \ lib_proj.cmake CMakeLists.txt bin_geodtest.cmake geodtest.c proj_SOURCES = proj.c gen_cheb.c p_series.c +projinfo_SOURCES = projinfo.cpp cs2cs_SOURCES = cs2cs.c gen_cheb.c p_series.c cct_SOURCES = cct.c proj_strtod.c proj_strtod.h optargpm.h nad2bin_SOURCES = nad2bin.c @@ -32,6 +33,7 @@ cct_LDADD = libproj.la cs2cs_LDADD = libproj.la geod_LDADD = libproj.la proj_LDADD = libproj.la +projinfo_LDADD = libproj.la nad2bin_LDADD = libproj.la gie_LDADD = libproj.la @@ -42,9 +44,12 @@ geodtest_LDADD = libproj.la lib_LTLIBRARIES = libproj.la libproj_la_LDFLAGS = -no-undefined -version-info 14:1:1 +libproj_la_LIBADD = @SQLITE3_LDFLAGS@ libproj_la_SOURCES = \ pj_list.h proj_internal.h proj_math.h projects.h\ + static.cpp util.cpp metadata.cpp common.cpp crs.cpp datum.cpp coordinatesystem.cpp coordinateoperation.cpp io.cpp \ + internal.cpp factory.cpp c_api.cpp \ PJ_aeqd.c PJ_gnom.c PJ_laea.c PJ_mod_ster.c \ PJ_nsper.c PJ_nzmg.c PJ_ortho.c PJ_stere.c PJ_sterea.c \ PJ_aea.c PJ_bipc.c PJ_bonne.c PJ_eqdc.c PJ_isea.c PJ_ccon.c\ diff --git a/src/PJ_unitconvert.c b/src/PJ_unitconvert.c index e3824c20..402941a4 100644 --- a/src/PJ_unitconvert.c +++ b/src/PJ_unitconvert.c @@ -382,18 +382,6 @@ static PJ_COORD reverse_4d(PJ_COORD obs, PJ *P) { return out; } -/* M_PI / 200 */ -#define GRAD_TO_RAD 0.015707963267948967 - -static const struct PJ_UNITS -pj_angular_units[] = { - {"rad", "1.0", "Radian", 1.0}, - {"deg", "0.017453292519943296", "Degree", DEG_TO_RAD}, - {"grad", "0.015707963267948967", "Grad", GRAD_TO_RAD}, - {NULL, NULL, NULL, 0.0} -}; - - /***********************************************************************/ static double get_unit_conversion_factor(const char* name, int* p_is_linear, @@ -419,15 +407,16 @@ static double get_unit_conversion_factor(const char* name, } /* And then angular units */ - for (i = 0; (s = pj_angular_units[i].id) ; ++i) { + units = proj_list_angular_units(); + for (i = 0; (s = units[i].id) ; ++i) { if ( strcmp(s, name) == 0 ) { if( p_normalized_name ) { - *p_normalized_name = pj_angular_units[i].name; + *p_normalized_name = units[i].name; } if( p_is_linear ) { *p_is_linear = 0; } - return pj_angular_units[i].factor; + return units[i].factor; } } if( p_normalized_name ) { diff --git a/src/bin_cct.cmake b/src/bin_cct.cmake index caa261a8..37752217 100644 --- a/src/bin_cct.cmake +++ b/src/bin_cct.cmake @@ -7,3 +7,7 @@ add_executable(cct ${CCT_SRC} ${CCT_INCLUDE}) target_link_libraries(cct ${PROJ_LIBRARIES}) install(TARGETS cct RUNTIME DESTINATION ${BINDIR}) + +if(MSVC AND BUILD_LIBPROJ_SHARED) + target_compile_definitions(cct PRIVATE PROJ_MSVC_DLL_IMPORT=1) +endif() diff --git a/src/bin_cs2cs.cmake b/src/bin_cs2cs.cmake index 59e57adc..bdb16e1a 100644 --- a/src/bin_cs2cs.cmake +++ b/src/bin_cs2cs.cmake @@ -4,11 +4,11 @@ set(CS2CS_SRC cs2cs.c source_group("Source Files\\Bin" FILES ${CS2CS_SRC}) -if(WIN32) - set(CS2CS_SRC ${CS2CS_SRC} emess.c) -endif(WIN32) - add_executable(cs2cs ${CS2CS_SRC} ${CS2CS_INCLUDE}) target_link_libraries(cs2cs ${PROJ_LIBRARIES}) install(TARGETS cs2cs RUNTIME DESTINATION ${BINDIR}) + +if(MSVC AND BUILD_LIBPROJ_SHARED) + target_compile_definitions(cs2cs PRIVATE PROJ_MSVC_DLL_IMPORT=1) +endif() diff --git a/src/bin_geod.cmake b/src/bin_geod.cmake index c6dff717..1f9ee788 100644 --- a/src/bin_geod.cmake +++ b/src/bin_geod.cmake @@ -4,13 +4,12 @@ set(GEOD_INCLUDE geod_interface.h) source_group("Source Files\\Bin" FILES ${GEOD_SRC} ${GEOD_INCLUDE}) -if(WIN32) - set(GEOD_SRC ${GEOD_SRC} emess.c) -endif(WIN32) - #Executable add_executable(geod ${GEOD_SRC} ${GEOD_INCLUDE}) target_link_libraries(geod ${PROJ_LIBRARIES}) install(TARGETS geod RUNTIME DESTINATION ${BINDIR}) +if(MSVC AND BUILD_LIBPROJ_SHARED) + target_compile_definitions(geod PRIVATE PROJ_MSVC_DLL_IMPORT=1) +endif() diff --git a/src/bin_geodtest.cmake b/src/bin_geodtest.cmake index b89f75be..743c630e 100644 --- a/src/bin_geodtest.cmake +++ b/src/bin_geodtest.cmake @@ -10,3 +10,7 @@ target_link_libraries(geodtest ${PROJ_LIBRARIES}) # Instead run as a test add_test (NAME geodesic-test COMMAND geodtest) + +if(MSVC AND BUILD_LIBPROJ_SHARED) + target_compile_definitions(geodtest PRIVATE PROJ_MSVC_DLL_IMPORT=1) +endif() diff --git a/src/bin_gie.cmake b/src/bin_gie.cmake index b5f8f8ef..596592fa 100644 --- a/src/bin_gie.cmake +++ b/src/bin_gie.cmake @@ -7,3 +7,7 @@ add_executable(gie ${GIE_SRC} ${GIE_INCLUDE}) target_link_libraries(gie ${PROJ_LIBRARIES}) install(TARGETS gie RUNTIME DESTINATION ${BINDIR}) + +if(MSVC AND BUILD_LIBPROJ_SHARED) + target_compile_definitions(gie PRIVATE PROJ_MSVC_DLL_IMPORT=1) +endif() diff --git a/src/bin_nad2bin.cmake b/src/bin_nad2bin.cmake index 33bd4d0b..0d0fd473 100644 --- a/src/bin_nad2bin.cmake +++ b/src/bin_nad2bin.cmake @@ -5,13 +5,13 @@ endif(WIN32 AND BUILD_LIBPROJ_SHARED) set(NAD2BIN_SRC nad2bin.c) source_group("Source Files\\Bin" FILES ${NAD2BIN_SRC}) -if(WIN32) - set(NAD2BIN_SRC ${NAD2BIN_SRC} emess.c) -endif(WIN32) - + #Executable add_executable(nad2bin ${NAD2BIN_SRC}) target_link_libraries(nad2bin ${PROJ_LIBRARIES}) install(TARGETS nad2bin RUNTIME DESTINATION ${BINDIR}) +if(MSVC AND BUILD_LIBPROJ_SHARED) + target_compile_definitions(nad2bin PRIVATE PROJ_MSVC_DLL_IMPORT=1) +endif() diff --git a/src/bin_proj.cmake b/src/bin_proj.cmake index f20d2f3f..fb7c885d 100644 --- a/src/bin_proj.cmake +++ b/src/bin_proj.cmake @@ -4,10 +4,6 @@ set(PROJ_SRC proj.c source_group("Source Files\\Bin" FILES ${PROJ_SRC}) -if(WIN32) - set(PROJ_SRC ${PROJ_SRC} emess.c) -endif(WIN32) - #Executable add_executable(binproj ${PROJ_SRC}) set_target_properties(binproj @@ -17,3 +13,6 @@ target_link_libraries(binproj ${PROJ_LIBRARIES}) install(TARGETS binproj RUNTIME DESTINATION ${BINDIR}) +if(MSVC AND BUILD_LIBPROJ_SHARED) + target_compile_definitions(binproj PRIVATE PROJ_MSVC_DLL_IMPORT=1) +endif() diff --git a/src/bin_projinfo.cmake b/src/bin_projinfo.cmake new file mode 100644 index 00000000..a422a16d --- /dev/null +++ b/src/bin_projinfo.cmake @@ -0,0 +1,16 @@ +set(PROJINFO_SRC projinfo.cpp) + +source_group("Source Files\\Bin" FILES ${PROJINFO_SRC}) + +#Executable +add_executable(binprojinfo ${PROJINFO_SRC}) +set_target_properties(binprojinfo + PROPERTIES + OUTPUT_NAME projinfo) +target_link_libraries(binprojinfo ${PROJ_LIBRARIES}) +install(TARGETS binprojinfo + RUNTIME DESTINATION ${BINDIR}) + +if(MSVC AND BUILD_LIBPROJ_SHARED) + target_compile_definitions(binprojinfo PRIVATE PROJ_MSVC_DLL_IMPORT=1) +endif() diff --git a/src/c_api.cpp b/src/c_api.cpp new file mode 100644 index 00000000..1720a7a1 --- /dev/null +++ b/src/c_api.cpp @@ -0,0 +1,4038 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: C API wraper of C++ API + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef FROM_PROJ_CPP +#define FROM_PROJ_CPP +#endif + +#include <cassert> +#include <cstdarg> +#include <cstring> +#include <map> +#include <utility> +#include <vector> + +#include "proj/common.hpp" +#include "proj/coordinateoperation.hpp" +#include "proj/crs.hpp" +#include "proj/datum.hpp" +#include "proj/io.hpp" +#include "proj/metadata.hpp" +#include "proj/util.hpp" + +#include "proj/internal/internal.hpp" + +// PROJ include order is sensitive +// clang-format off +#include "proj_internal.h" +#include "proj.h" +#include "projects.h" +// clang-format on + +using namespace NS_PROJ::common; +using namespace NS_PROJ::crs; +using namespace NS_PROJ::datum; +using namespace NS_PROJ::io; +using namespace NS_PROJ::internal; +using namespace NS_PROJ::metadata; +using namespace NS_PROJ::operation; +using namespace NS_PROJ::util; +using namespace NS_PROJ; + +// --------------------------------------------------------------------------- + +static void PROJ_NO_INLINE proj_log_error(PJ_CONTEXT *ctx, const char *function, + const char *text) { + std::string msg(function); + msg += ": "; + msg += text; + ctx->logger(ctx->app_data, PJ_LOG_ERROR, msg.c_str()); +} + +// --------------------------------------------------------------------------- + +static void PROJ_NO_INLINE proj_log_debug(PJ_CONTEXT *ctx, const char *function, + const char *text) { + std::string msg(function); + msg += ": "; + msg += text; + ctx->logger(ctx->app_data, PJ_LOG_DEBUG, msg.c_str()); +} + +// --------------------------------------------------------------------------- + +/** \brief Opaque object representing a Ellipsoid, Datum, CRS or Coordinate + * Operation. Should be used by at most one thread at a time. */ +struct PJ_OBJ { + //! @cond Doxygen_Suppress + PJ_CONTEXT *ctx; + IdentifiedObjectNNPtr obj; + + // cached results + std::string lastWKT{}; + std::string lastPROJString{}; + bool gridsNeededAsked = false; + std::vector<GridDescription> gridsNeeded{}; + + explicit PJ_OBJ(PJ_CONTEXT *ctxIn, const IdentifiedObjectNNPtr &objIn) + : ctx(ctxIn), obj(objIn) {} + static PJ_OBJ *create(PJ_CONTEXT *ctxIn, + const IdentifiedObjectNNPtr &objIn); + + PJ_OBJ(const PJ_OBJ &) = delete; + PJ_OBJ &operator=(const PJ_OBJ &) = delete; + //! @endcond +}; + +//! @cond Doxygen_Suppress +PJ_OBJ *PJ_OBJ::create(PJ_CONTEXT *ctxIn, const IdentifiedObjectNNPtr &objIn) { + return new PJ_OBJ(ctxIn, objIn); +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Opaque object representing a set of operation results. */ +struct PJ_OBJ_LIST { + //! @cond Doxygen_Suppress + PJ_CONTEXT *ctx; + std::vector<IdentifiedObjectNNPtr> objects; + + explicit PJ_OBJ_LIST(PJ_CONTEXT *ctxIn, + std::vector<IdentifiedObjectNNPtr> &&objectsIn) + : ctx(ctxIn), objects(std::move(objectsIn)) {} + + PJ_OBJ_LIST(const PJ_OBJ_LIST &) = delete; + PJ_OBJ_LIST &operator=(const PJ_OBJ_LIST &) = delete; + //! @endcond +}; + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +/** Auxiliary structure to PJ_CONTEXT storing C++ context stuff. */ +struct projCppContext { + DatabaseContextNNPtr databaseContext; + + explicit projCppContext(PJ_CONTEXT *ctxt, const char *dbPath = nullptr, + const char *const *auxDbPaths = nullptr) + : databaseContext(DatabaseContext::create( + dbPath ? dbPath : std::string(), toVector(auxDbPaths))) { + databaseContext->attachPJContext(ctxt); + } + + static std::vector<std::string> toVector(const char *const *auxDbPaths) { + std::vector<std::string> res; + for (auto iter = auxDbPaths; iter && *iter; ++iter) { + res.emplace_back(std::string(*iter)); + } + return res; + } +}; + +// --------------------------------------------------------------------------- + +void proj_context_delete_cpp_context(struct projCppContext *cppContext) { + delete cppContext; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +#define SANITIZE_CTX(ctx) \ + do { \ + if (ctx == nullptr) { \ + ctx = pj_get_default_ctx(); \ + } \ + } while (0) + +// --------------------------------------------------------------------------- + +static PROJ_NO_INLINE const DatabaseContextNNPtr & +getDBcontext(PJ_CONTEXT *ctx) { + if (ctx->cpp_context == nullptr) { + ctx->cpp_context = new projCppContext(ctx); + } + return ctx->cpp_context->databaseContext; +} + +// --------------------------------------------------------------------------- + +static PROJ_NO_INLINE DatabaseContextPtr +getDBcontextNoException(PJ_CONTEXT *ctx, const char *function) { + try { + return getDBcontext(ctx).as_nullable(); + } catch (const std::exception &e) { + proj_log_debug(ctx, function, e.what()); + return nullptr; + } +} + +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Explicitly point to the main PROJ CRS and coordinate operation + * definition database ("proj.db"), and potentially auxiliary databases with + * same structure. + * + * @param ctx PROJ context, or NULL for default context + * @param dbPath Path to main database, or NULL for default. + * @param auxDbPaths NULL-terminated list of auxiliary database filenames, or + * NULL. + * @param options should be set to NULL for now + * @return TRUE in case of success + */ +int proj_context_set_database_path(PJ_CONTEXT *ctx, const char *dbPath, + const char *const *auxDbPaths, + const char *const *options) { + SANITIZE_CTX(ctx); + (void)options; + delete ctx->cpp_context; + ctx->cpp_context = nullptr; + try { + ctx->cpp_context = new projCppContext(ctx, dbPath, auxDbPaths); + return true; + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + return false; + } +} + +// --------------------------------------------------------------------------- + +/** \brief Returns the path to the database. + * + * The returned pointer remains valid while ctx is valid, and until + * proj_context_set_database_path() is called. + * + * @param ctx PROJ context, or NULL for default context + * @return path, or nullptr + */ +const char *proj_context_get_database_path(PJ_CONTEXT *ctx) { + SANITIZE_CTX(ctx); + try { + return getDBcontext(ctx)->getPath().c_str(); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + return nullptr; + } +} + +// --------------------------------------------------------------------------- + +/** \brief Guess the "dialect" of the WKT string. + * + * @param ctx PROJ context, or NULL for default context + * @param wkt String (must not be NULL) + */ +PJ_GUESSED_WKT_DIALECT proj_context_guess_wkt_dialect(PJ_CONTEXT *ctx, + const char *wkt) { + (void)ctx; + assert(wkt); + switch (WKTParser().guessDialect(wkt)) { + case WKTParser::WKTGuessedDialect::WKT2_2018: + return PJ_GUESSED_WKT2_2018; + case WKTParser::WKTGuessedDialect::WKT2_2015: + return PJ_GUESSED_WKT2_2015; + case WKTParser::WKTGuessedDialect::WKT1_GDAL: + return PJ_GUESSED_WKT1_GDAL; + case WKTParser::WKTGuessedDialect::WKT1_ESRI: + return PJ_GUESSED_WKT1_ESRI; + case WKTParser::WKTGuessedDialect::NOT_WKT: + break; + } + return PJ_GUESSED_NOT_WKT; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate an object from a WKT string, PROJ string or object code + * (like "EPSG:4326", "urn:ogc:def:crs:EPSG::4326", + * "urn:ogc:def:coordinateOperation:EPSG::1671"). + * + * This function calls osgeo::proj::io::createFromUserInput() + * + * The returned object must be unreferenced with proj_obj_unref() after use. + * It should be used by at most one thread at a time. + * + * @param ctx PROJ context, or NULL for default context + * @param text String (must not be NULL) + * @param options should be set to NULL for now + * @return Object that must be unreferenced with proj_obj_unref(), or NULL in + * case of error. + */ +PJ_OBJ *proj_obj_create_from_user_input(PJ_CONTEXT *ctx, const char *text, + const char *const *options) { + SANITIZE_CTX(ctx); + assert(text); + (void)options; + auto dbContext = getDBcontextNoException(ctx, __FUNCTION__); + try { + auto identifiedObject = nn_dynamic_pointer_cast<IdentifiedObject>( + createFromUserInput(text, dbContext)); + if (identifiedObject) { + return PJ_OBJ::create(ctx, NN_NO_CHECK(identifiedObject)); + } + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate an object from a WKT string. + * + * This function calls osgeo::proj::io::WKTParser::createFromWKT() + * + * The returned object must be unreferenced with proj_obj_unref() after use. + * It should be used by at most one thread at a time. + * + * @param ctx PROJ context, or NULL for default context + * @param wkt WKT string (must not be NULL) + * @param options should be set to NULL for now + * @return Object that must be unreferenced with proj_obj_unref(), or NULL in + * case of error. + */ +PJ_OBJ *proj_obj_create_from_wkt(PJ_CONTEXT *ctx, const char *wkt, + const char *const *options) { + SANITIZE_CTX(ctx); + assert(wkt); + (void)options; + try { + auto identifiedObject = nn_dynamic_pointer_cast<IdentifiedObject>( + WKTParser().createFromWKT(wkt)); + if (identifiedObject) { + return PJ_OBJ::create(ctx, NN_NO_CHECK(identifiedObject)); + } + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate an object from a PROJ string. + * + * This function calls osgeo::proj::io::PROJStringParser::createFromPROJString() + * + * The returned object must be unreferenced with proj_obj_unref() after use. + * It should be used by at most one thread at a time. + * + * @param ctx PROJ context, or NULL for default context + * @param proj_string PROJ string (must not be NULL) + * @param options should be set to NULL for now + * @return Object that must be unreferenced with proj_obj_unref(), or NULL in + * case of error. + */ +PJ_OBJ *proj_obj_create_from_proj_string(PJ_CONTEXT *ctx, + const char *proj_string, + const char *const *options) { + SANITIZE_CTX(ctx); + (void)options; + assert(proj_string); + try { + auto identifiedObject = nn_dynamic_pointer_cast<IdentifiedObject>( + PROJStringParser().createFromPROJString(proj_string)); + if (identifiedObject) { + return PJ_OBJ::create(ctx, NN_NO_CHECK(identifiedObject)); + } + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate an object from a database lookup. + * + * The returned object must be unreferenced with proj_obj_unref() after use. + * It should be used by at most one thread at a time. + * + * @param ctx Context, or NULL for default context. + * @param auth_name Authority name (must not be NULL) + * @param code Object code (must not be NULL) + * @param category Object category + * @param usePROJAlternativeGridNames Whether PROJ alternative grid names + * should be substituted to the official grid names. Only used on + * transformations + * @param options should be set to NULL for now + * @return Object that must be unreferenced with proj_obj_unref(), or NULL in + * case of error. + */ +PJ_OBJ *proj_obj_create_from_database(PJ_CONTEXT *ctx, const char *auth_name, + const char *code, + PJ_OBJ_CATEGORY category, + int usePROJAlternativeGridNames, + const char *const *options) { + assert(auth_name); + assert(code); + (void)options; + SANITIZE_CTX(ctx); + const std::string codeStr(code); + try { + auto factory = AuthorityFactory::create(getDBcontext(ctx), auth_name); + IdentifiedObjectPtr obj; + switch (category) { + case PJ_OBJ_CATEGORY_ELLIPSOID: + obj = factory->createEllipsoid(codeStr).as_nullable(); + break; + case PJ_OBJ_CATEGORY_DATUM: + obj = factory->createDatum(codeStr).as_nullable(); + break; + case PJ_OBJ_CATEGORY_CRS: + obj = + factory->createCoordinateReferenceSystem(codeStr).as_nullable(); + break; + case PJ_OBJ_CATEGORY_COORDINATE_OPERATION: + obj = factory + ->createCoordinateOperation( + codeStr, usePROJAlternativeGridNames != 0) + .as_nullable(); + break; + } + return PJ_OBJ::create(ctx, NN_NO_CHECK(obj)); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Drops a reference on an object. + * + * This method should be called one and exactly one for each function + * returning a PJ_OBJ* + * + * @param obj Object, or NULL. + */ +void proj_obj_unref(PJ_OBJ *obj) { delete obj; } + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static AuthorityFactory::ObjectType +convertPJObjectTypeToObjectType(PJ_OBJ_TYPE type, bool &valid) { + valid = true; + AuthorityFactory::ObjectType cppType = AuthorityFactory::ObjectType::CRS; + switch (type) { + case PJ_OBJ_TYPE_ELLIPSOID: + cppType = AuthorityFactory::ObjectType::ELLIPSOID; + break; + + case PJ_OBJ_TYPE_GEODETIC_REFERENCE_FRAME: + case PJ_OBJ_TYPE_DYNAMIC_GEODETIC_REFERENCE_FRAME: + cppType = AuthorityFactory::ObjectType::GEODETIC_REFERENCE_FRAME; + break; + + case PJ_OBJ_TYPE_VERTICAL_REFERENCE_FRAME: + case PJ_OBJ_TYPE_DYNAMIC_VERTICAL_REFERENCE_FRAME: + cppType = AuthorityFactory::ObjectType::VERTICAL_REFERENCE_FRAME; + break; + + case PJ_OBJ_TYPE_DATUM_ENSEMBLE: + cppType = AuthorityFactory::ObjectType::DATUM; + break; + + case PJ_OBJ_TYPE_CRS: + cppType = AuthorityFactory::ObjectType::CRS; + break; + + case PJ_OBJ_TYPE_GEODETIC_CRS: + cppType = AuthorityFactory::ObjectType::GEODETIC_CRS; + break; + + case PJ_OBJ_TYPE_GEOCENTRIC_CRS: + cppType = AuthorityFactory::ObjectType::GEOCENTRIC_CRS; + break; + + case PJ_OBJ_TYPE_GEOGRAPHIC_CRS: + cppType = AuthorityFactory::ObjectType::GEOGRAPHIC_CRS; + break; + + case PJ_OBJ_TYPE_GEOGRAPHIC_2D_CRS: + cppType = AuthorityFactory::ObjectType::GEOGRAPHIC_2D_CRS; + break; + + case PJ_OBJ_TYPE_GEOGRAPHIC_3D_CRS: + cppType = AuthorityFactory::ObjectType::GEOGRAPHIC_3D_CRS; + break; + + case PJ_OBJ_TYPE_VERTICAL_CRS: + cppType = AuthorityFactory::ObjectType::VERTICAL_CRS; + break; + + case PJ_OBJ_TYPE_PROJECTED_CRS: + cppType = AuthorityFactory::ObjectType::PROJECTED_CRS; + break; + + case PJ_OBJ_TYPE_COMPOUND_CRS: + cppType = AuthorityFactory::ObjectType::COMPOUND_CRS; + break; + + case PJ_OBJ_TYPE_TEMPORAL_CRS: + valid = false; + break; + + case PJ_OBJ_TYPE_BOUND_CRS: + valid = false; + break; + + case PJ_OBJ_TYPE_OTHER_CRS: + cppType = AuthorityFactory::ObjectType::CRS; + break; + + case PJ_OBJ_TYPE_CONVERSION: + cppType = AuthorityFactory::ObjectType::CONVERSION; + break; + + case PJ_OBJ_TYPE_TRANSFORMATION: + cppType = AuthorityFactory::ObjectType::TRANSFORMATION; + break; + + case PJ_OBJ_TYPE_CONCATENATED_OPERATION: + cppType = AuthorityFactory::ObjectType::CONCATENATED_OPERATION; + break; + + case PJ_OBJ_TYPE_OTHER_COORDINATE_OPERATION: + cppType = AuthorityFactory::ObjectType::COORDINATE_OPERATION; + break; + + case PJ_OBJ_TYPE_UNKNOWN: + valid = false; + break; + } + return cppType; +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return a list of objects by their name. + * + * @param ctx Context, or NULL for default context. + * @param auth_name Authority name, used to restrict the search. + * Or NULL for all authorities. + * @param searchedName Searched name. Must be at least 2 character long. + * @param types List of object types into which to search. If + * NULL, all object types will be searched. + * @param typesCount Number of elements in types, or 0 if types is NULL + * @param approximateMatch Whether approximate name identification is allowed. + * @param limitResultCount Maximum number of results to return. + * Or 0 for unlimited. + * @param options should be set to NULL for now + * @return a result set that must be unreferenced with + * proj_obj_list_unref(), or NULL in case of error. + */ +PJ_OBJ_LIST *proj_obj_create_from_name(PJ_CONTEXT *ctx, const char *auth_name, + const char *searchedName, + const PJ_OBJ_TYPE *types, + size_t typesCount, int approximateMatch, + size_t limitResultCount, + const char *const *options) { + assert(searchedName); + assert((types != nullptr && typesCount > 0) || + (types == nullptr && typesCount == 0)); + (void)options; + SANITIZE_CTX(ctx); + try { + auto factory = AuthorityFactory::create(getDBcontext(ctx), + auth_name ? auth_name : ""); + std::vector<AuthorityFactory::ObjectType> allowedTypes; + for (size_t i = 0; i < typesCount; ++i) { + bool valid = false; + auto type = convertPJObjectTypeToObjectType(types[i], valid); + if (valid) { + allowedTypes.push_back(type); + } + } + auto res = factory->createObjectsFromName(searchedName, allowedTypes, + approximateMatch != 0, + limitResultCount); + std::vector<IdentifiedObjectNNPtr> objects; + for (const auto &obj : res) { + objects.push_back(obj); + } + return new PJ_OBJ_LIST(ctx, std::move(objects)); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the type of an object. + * + * @param obj Object (must not be NULL) + * @return its type. + */ +PJ_OBJ_TYPE proj_obj_get_type(PJ_OBJ *obj) { + assert(obj); + auto ptr = obj->obj.get(); + if (dynamic_cast<Ellipsoid *>(ptr)) { + return PJ_OBJ_TYPE_ELLIPSOID; + } + + if (dynamic_cast<DynamicGeodeticReferenceFrame *>(ptr)) { + return PJ_OBJ_TYPE_DYNAMIC_GEODETIC_REFERENCE_FRAME; + } + if (dynamic_cast<GeodeticReferenceFrame *>(ptr)) { + return PJ_OBJ_TYPE_GEODETIC_REFERENCE_FRAME; + } + if (dynamic_cast<DynamicVerticalReferenceFrame *>(ptr)) { + return PJ_OBJ_TYPE_DYNAMIC_VERTICAL_REFERENCE_FRAME; + } + if (dynamic_cast<VerticalReferenceFrame *>(ptr)) { + return PJ_OBJ_TYPE_VERTICAL_REFERENCE_FRAME; + } + if (dynamic_cast<DatumEnsemble *>(ptr)) { + return PJ_OBJ_TYPE_DATUM_ENSEMBLE; + } + + { + auto crs = dynamic_cast<GeographicCRS *>(ptr); + if (crs) { + if (crs->coordinateSystem()->axisList().size() == 2) { + return PJ_OBJ_TYPE_GEOGRAPHIC_2D_CRS; + } else { + return PJ_OBJ_TYPE_GEOGRAPHIC_3D_CRS; + } + } + } + + { + auto crs = dynamic_cast<GeodeticCRS *>(ptr); + if (crs) { + if (crs->isGeocentric()) { + return PJ_OBJ_TYPE_GEOCENTRIC_CRS; + } else { + return PJ_OBJ_TYPE_GEODETIC_CRS; + } + } + } + + if (dynamic_cast<VerticalCRS *>(ptr)) { + return PJ_OBJ_TYPE_VERTICAL_CRS; + } + if (dynamic_cast<ProjectedCRS *>(ptr)) { + return PJ_OBJ_TYPE_PROJECTED_CRS; + } + if (dynamic_cast<CompoundCRS *>(ptr)) { + return PJ_OBJ_TYPE_COMPOUND_CRS; + } + if (dynamic_cast<TemporalCRS *>(ptr)) { + return PJ_OBJ_TYPE_TEMPORAL_CRS; + } + if (dynamic_cast<BoundCRS *>(ptr)) { + return PJ_OBJ_TYPE_BOUND_CRS; + } + if (dynamic_cast<CRS *>(ptr)) { + return PJ_OBJ_TYPE_OTHER_CRS; + } + + if (dynamic_cast<Conversion *>(ptr)) { + return PJ_OBJ_TYPE_CONVERSION; + } + if (dynamic_cast<Transformation *>(ptr)) { + return PJ_OBJ_TYPE_TRANSFORMATION; + } + if (dynamic_cast<ConcatenatedOperation *>(ptr)) { + return PJ_OBJ_TYPE_CONCATENATED_OPERATION; + } + if (dynamic_cast<CoordinateOperation *>(ptr)) { + return PJ_OBJ_TYPE_OTHER_COORDINATE_OPERATION; + } + + return PJ_OBJ_TYPE_UNKNOWN; +} + +// --------------------------------------------------------------------------- + +/** \brief Return whether an object is deprecated. + * + * @param obj Object (must not be NULL) + * @return TRUE if it is deprecated, FALSE otherwise + */ +int proj_obj_is_deprecated(PJ_OBJ *obj) { + assert(obj); + return obj->obj->isDeprecated(); +} + +// --------------------------------------------------------------------------- + +/** \brief Return whether two objects are equivalent. + * + * @param obj Object (must not be NULL) + * @param other Other object (must not be NULL) + * @param criterion Comparison criterion + * @return TRUE if they are equivalent + */ +int proj_obj_is_equivalent_to(PJ_OBJ *obj, PJ_OBJ *other, + PJ_COMPARISON_CRITERION criterion) { + assert(obj); + assert(other); + + // Make sure that the C and C++ enumerations match + static_assert(static_cast<int>(PJ_COMP_STRICT) == + static_cast<int>(IComparable::Criterion::STRICT), + ""); + static_assert(static_cast<int>(PJ_COMP_EQUIVALENT) == + static_cast<int>(IComparable::Criterion::EQUIVALENT), + ""); + static_assert( + static_cast<int>(PJ_COMP_EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS) == + static_cast<int>( + IComparable::Criterion::EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS), + ""); + + // Make sure we enumerate all values. If adding a new value, as we + // don't have a default clause, the compiler will warn. + switch (criterion) { + case PJ_COMP_STRICT: + case PJ_COMP_EQUIVALENT: + case PJ_COMP_EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS: + break; + } + const IComparable::Criterion cppCriterion = + static_cast<IComparable::Criterion>(criterion); + return obj->obj->isEquivalentTo(other->obj.get(), cppCriterion); +} + +// --------------------------------------------------------------------------- + +/** \brief Return whether an object is a CRS + * + * @param obj Object (must not be NULL) + */ +int proj_obj_is_crs(PJ_OBJ *obj) { + assert(obj); + return dynamic_cast<CRS *>(obj->obj.get()) != nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Get the name of an object. + * + * The lifetime of the returned string is the same as the input obj parameter. + * + * @param obj Object (must not be NULL) + * @return a string, or NULL in case of error or missing name. + */ +const char *proj_obj_get_name(PJ_OBJ *obj) { + assert(obj); + const auto &desc = obj->obj->name()->description(); + if (!desc.has_value()) { + return nullptr; + } + // The object will still be alived after the function call. + // cppcheck-suppress stlcstr + return desc->c_str(); +} + +// --------------------------------------------------------------------------- + +/** \brief Get the authority name / codespace of an identifier of an object. + * + * The lifetime of the returned string is the same as the input obj parameter. + * + * @param obj Object (must not be NULL) + * @param index Index of the identifier. 0 = first identifier + * @return a string, or NULL in case of error or missing name. + */ +const char *proj_obj_get_id_auth_name(PJ_OBJ *obj, int index) { + assert(obj); + const auto &ids = obj->obj->identifiers(); + if (static_cast<size_t>(index) >= ids.size()) { + return nullptr; + } + const auto &codeSpace = ids[index]->codeSpace(); + if (!codeSpace.has_value()) { + return nullptr; + } + // The object will still be alived after the function call. + // cppcheck-suppress stlcstr + return codeSpace->c_str(); +} + +// --------------------------------------------------------------------------- + +/** \brief Get the code of an identifier of an object. + * + * The lifetime of the returned string is the same as the input obj parameter. + * + * @param obj Object (must not be NULL) + * @param index Index of the identifier. 0 = first identifier + * @return a string, or NULL in case of error or missing name. + */ +const char *proj_obj_get_id_code(PJ_OBJ *obj, int index) { + assert(obj); + const auto &ids = obj->obj->identifiers(); + if (static_cast<size_t>(index) >= ids.size()) { + return nullptr; + } + return ids[index]->code().c_str(); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static const char *getOptionValue(const char *option, + const char *keyWithEqual) noexcept { + if (ci_starts_with(option, keyWithEqual)) { + return option + strlen(keyWithEqual); + } + return nullptr; +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Get a WKT representation of an object. + * + * The returned string is valid while the input obj parameter is valid, + * and until a next call to proj_obj_as_wkt() with the same input object. + * + * This function calls osgeo::proj::io::IWKTExportable::exportToWKT(). + * + * This function may return NULL if the object is not compatible with an + * export to the requested type. + * + * @param obj Object (must not be NULL) + * @param type WKT version. + * @param options null-terminated list of options, or NULL. Currently + * supported options are: + * <ul> + * <li>MULTILINE=YES/NO. Defaults to YES, except for WKT1_ESRI</li> + * <li>INDENTATION_WIDTH=number. Defauls to 4 (when multiline output is + * on).</li> + * <li>OUTPUT_AXIS=YES/NO. Defaults to YES, except for WKT1_ESRI.</li> + * </ul> + * @return a string, or NULL in case of error. + */ +const char *proj_obj_as_wkt(PJ_OBJ *obj, PJ_WKT_TYPE type, + const char *const *options) { + assert(obj); + + // Make sure that the C and C++ enumerations match + static_assert(static_cast<int>(PJ_WKT2_2015) == + static_cast<int>(WKTFormatter::Convention::WKT2_2015), + ""); + static_assert( + static_cast<int>(PJ_WKT2_2015_SIMPLIFIED) == + static_cast<int>(WKTFormatter::Convention::WKT2_2015_SIMPLIFIED), + ""); + static_assert(static_cast<int>(PJ_WKT2_2018) == + static_cast<int>(WKTFormatter::Convention::WKT2_2018), + ""); + static_assert( + static_cast<int>(PJ_WKT2_2018_SIMPLIFIED) == + static_cast<int>(WKTFormatter::Convention::WKT2_2018_SIMPLIFIED), + ""); + static_assert(static_cast<int>(PJ_WKT1_GDAL) == + static_cast<int>(WKTFormatter::Convention::WKT1_GDAL), + ""); + static_assert(static_cast<int>(PJ_WKT1_ESRI) == + static_cast<int>(WKTFormatter::Convention::WKT1_ESRI), + ""); + // Make sure we enumerate all values. If adding a new value, as we + // don't have a default clause, the compiler will warn. + switch (type) { + case PJ_WKT2_2015: + case PJ_WKT2_2015_SIMPLIFIED: + case PJ_WKT2_2018: + case PJ_WKT2_2018_SIMPLIFIED: + case PJ_WKT1_GDAL: + case PJ_WKT1_ESRI: + break; + } + const WKTFormatter::Convention convention = + static_cast<WKTFormatter::Convention>(type); + try { + auto formatter = WKTFormatter::create(convention); + for (auto iter = options; iter && iter[0]; ++iter) { + const char *value; + if ((value = getOptionValue(*iter, "MULTILINE="))) { + formatter->setMultiLine(ci_equal(value, "YES")); + } else if ((value = getOptionValue(*iter, "INDENTATION_WIDTH="))) { + formatter->setIndentationWidth(std::atoi(value)); + } else if ((value = getOptionValue(*iter, "OUTPUT_AXIS="))) { + formatter->setOutputAxis(ci_equal(value, "YES")); + } else { + std::string msg("Unknown option :"); + msg += *iter; + proj_log_error(obj->ctx, __FUNCTION__, msg.c_str()); + return nullptr; + } + } + obj->lastWKT = obj->obj->exportToWKT(formatter.get()); + return obj->lastWKT.c_str(); + } catch (const std::exception &e) { + proj_log_error(obj->ctx, __FUNCTION__, e.what()); + return nullptr; + } +} + +// --------------------------------------------------------------------------- + +/** \brief Get a PROJ string representation of an object. + * + * The returned string is valid while the input obj parameter is valid, + * and until a next call to proj_obj_as_proj_string() with the same input + * object. + * + * This function calls + * osgeo::proj::io::IPROJStringExportable::exportToPROJString(). + * + * This function may return NULL if the object is not compatible with an + * export to the requested type. + * + * @param obj Object (must not be NULL) + * @param type PROJ String version. + * @param options NULL-terminated list of strings with "KEY=VALUE" format. or + * NULL. + * The currently recognized option is USE_ETMERC=YES to use + * +proj=etmerc instead of +proj=tmerc + * @return a string, or NULL in case of error. + */ +const char *proj_obj_as_proj_string(PJ_OBJ *obj, PJ_PROJ_STRING_TYPE type, + const char *const *options) { + assert(obj); + auto exportable = + dynamic_cast<const IPROJStringExportable *>(obj->obj.get()); + if (!exportable) { + proj_log_error(obj->ctx, __FUNCTION__, + "Object type not exportable to PROJ"); + return nullptr; + } + // Make sure that the C and C++ enumeration match + static_assert(static_cast<int>(PJ_PROJ_5) == + static_cast<int>(PROJStringFormatter::Convention::PROJ_5), + ""); + static_assert(static_cast<int>(PJ_PROJ_4) == + static_cast<int>(PROJStringFormatter::Convention::PROJ_4), + ""); + // Make sure we enumerate all values. If adding a new value, as we + // don't have a default clause, the compiler will warn. + switch (type) { + case PJ_PROJ_5: + case PJ_PROJ_4: + break; + } + const PROJStringFormatter::Convention convention = + static_cast<PROJStringFormatter::Convention>(type); + auto dbContext = getDBcontextNoException(obj->ctx, __FUNCTION__); + try { + auto formatter = PROJStringFormatter::create(convention, dbContext); + if (options != nullptr && options[0] != nullptr) { + if (ci_equal(options[0], "USE_ETMERC=YES")) { + formatter->setUseETMercForTMerc(true); + } + } + obj->lastPROJString = exportable->exportToPROJString(formatter.get()); + return obj->lastPROJString.c_str(); + } catch (const std::exception &e) { + proj_log_error(obj->ctx, __FUNCTION__, e.what()); + return nullptr; + } +} + +// --------------------------------------------------------------------------- + +/** \brief Return the area of use of an object. + * + * @param obj Object (must not be NULL) + * @param p_west_lon Pointer to a double to receive the west longitude (in + * degrees). Or NULL. If the returned value is -1000, the bounding box is + * unknown. + * @param p_south_lat Pointer to a double to receive the south latitude (in + * degrees). Or NULL. If the returned value is -1000, the bounding box is + * unknown. + * @param p_east_lon Pointer to a double to receive the east longitude (in + * degrees). Or NULL. If the returned value is -1000, the bounding box is + * unknown. + * @param p_north_lat Pointer to a double to receive the north latitude (in + * degrees). Or NULL. If the returned value is -1000, the bounding box is + * unknown. + * @param p_area_name Pointer to a string to receive the name of the area of + * use. Or NULL. *p_area_name is valid while obj is valid itself. + * @return TRUE in case of success, FALSE in case of error or if the area + * of use is unknown. + */ +int proj_obj_get_area_of_use(PJ_OBJ *obj, double *p_west_lon, + double *p_south_lat, double *p_east_lon, + double *p_north_lat, const char **p_area_name) { + if (p_area_name) { + *p_area_name = nullptr; + } + auto objectUsage = dynamic_cast<const ObjectUsage *>(obj->obj.get()); + if (!objectUsage) { + return false; + } + const auto &domains = objectUsage->domains(); + if (domains.empty()) { + return false; + } + const auto &extent = domains[0]->domainOfValidity(); + if (!extent) { + return false; + } + const auto &desc = extent->description(); + if (desc.has_value() && p_area_name) { + *p_area_name = desc->c_str(); + } + + const auto &geogElements = extent->geographicElements(); + if (!geogElements.empty()) { + auto bbox = + dynamic_cast<const GeographicBoundingBox *>(geogElements[0].get()); + if (bbox) { + if (p_west_lon) { + *p_west_lon = bbox->westBoundLongitude(); + } + if (p_south_lat) { + *p_south_lat = bbox->southBoundLatitude(); + } + if (p_east_lon) { + *p_east_lon = bbox->eastBoundLongitude(); + } + if (p_north_lat) { + *p_north_lat = bbox->northBoundLatitude(); + } + return true; + } + } + if (p_west_lon) { + *p_west_lon = -1000; + } + if (p_south_lat) { + *p_south_lat = -1000; + } + if (p_east_lon) { + *p_east_lon = -1000; + } + if (p_north_lat) { + *p_north_lat = -1000; + } + return true; +} + +// --------------------------------------------------------------------------- + +static const GeodeticCRS *extractGeodeticCRS(PJ_OBJ *crs, const char *fname) { + assert(crs); + auto l_crs = dynamic_cast<const CRS *>(crs->obj.get()); + if (!l_crs) { + proj_log_error(crs->ctx, fname, "Object is not a CRS"); + return nullptr; + } + auto geodCRS = l_crs->extractGeodeticCRSRaw(); + if (!geodCRS) { + proj_log_error(crs->ctx, fname, "CRS has no geodetic CRS"); + } + return geodCRS; +} + +// --------------------------------------------------------------------------- + +/** \brief Get the geodeticCRS / geographicCRS from a CRS + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param crs Objet of type CRS (must not be NULL) + * @return Object that must be unreferenced with proj_obj_unref(), or NULL + * in case of error. + */ +PJ_OBJ *proj_obj_crs_get_geodetic_crs(PJ_OBJ *crs) { + auto geodCRS = extractGeodeticCRS(crs, __FUNCTION__); + if (!geodCRS) { + return nullptr; + } + return PJ_OBJ::create(crs->ctx, + NN_NO_CHECK(nn_dynamic_pointer_cast<IdentifiedObject>( + geodCRS->shared_from_this()))); +} + +// --------------------------------------------------------------------------- + +/** \brief Get a CRS component from a CompoundCRS + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param crs Objet of type CRS (must not be NULL) + * @param index Index of the CRS component (typically 0 = horizontal, 1 = + * vertical) + * @return Object that must be unreferenced with proj_obj_unref(), or NULL + * in case of error. + */ +PJ_OBJ *proj_obj_crs_get_sub_crs(PJ_OBJ *crs, int index) { + assert(crs); + auto l_crs = dynamic_cast<CompoundCRS *>(crs->obj.get()); + if (!l_crs) { + proj_log_error(crs->ctx, __FUNCTION__, "Object is not a CompoundCRS"); + return nullptr; + } + const auto &components = l_crs->componentReferenceSystems(); + if (static_cast<size_t>(index) >= components.size()) { + return nullptr; + } + return PJ_OBJ::create(crs->ctx, components[index]); +} + +// --------------------------------------------------------------------------- + +/** \brief Returns potentially + * a BoundCRS, with a transformation to EPSG:4326, wrapping this CRS + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * This is the same as method + * osgeo::proj::crs::CRS::createBoundCRSToWGS84IfPossible() + * + * @param crs Objet of type CRS (must not be NULL) + * @return Object that must be unreferenced with proj_obj_unref(), or NULL + * in case of error. + */ +PJ_OBJ *proj_obj_crs_create_bound_crs_to_WGS84(PJ_OBJ *crs) { + assert(crs); + auto l_crs = dynamic_cast<const CRS *>(crs->obj.get()); + if (!l_crs) { + proj_log_error(crs->ctx, __FUNCTION__, "Object is not a CRS"); + return nullptr; + } + auto dbContext = getDBcontextNoException(crs->ctx, __FUNCTION__); + return PJ_OBJ::create(crs->ctx, + l_crs->createBoundCRSToWGS84IfPossible(dbContext)); +} + +// --------------------------------------------------------------------------- + +/** \brief Get the ellipsoid from a CRS or a GeodeticReferenceFrame. + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param obj Objet of type CRS or GeodeticReferenceFrame (must not be NULL) + * @return Object that must be unreferenced with proj_obj_unref(), or NULL + * in case of error. + */ +PJ_OBJ *proj_obj_get_ellipsoid(PJ_OBJ *obj) { + auto ptr = obj->obj.get(); + if (dynamic_cast<const CRS *>(ptr)) { + auto geodCRS = extractGeodeticCRS(obj, __FUNCTION__); + if (geodCRS) { + return PJ_OBJ::create(obj->ctx, geodCRS->ellipsoid()); + } + } else { + auto datum = dynamic_cast<const GeodeticReferenceFrame *>(ptr); + if (datum) { + return PJ_OBJ::create(obj->ctx, datum->ellipsoid()); + } + } + proj_log_error(obj->ctx, __FUNCTION__, + "Object is not a CRS or GeodeticReferenceFrame"); + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Get the horizontal datum from a CRS + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param crs Objet of type CRS (must not be NULL) + * @return Object that must be unreferenced with proj_obj_unref(), or NULL + * in case of error. + */ +PJ_OBJ *proj_obj_crs_get_horizontal_datum(PJ_OBJ *crs) { + auto geodCRS = extractGeodeticCRS(crs, __FUNCTION__); + if (!geodCRS) { + return nullptr; + } + const auto &datum = geodCRS->datum(); + if (datum) { + return PJ_OBJ::create(crs->ctx, NN_NO_CHECK(datum)); + } + + const auto &datumEnsemble = geodCRS->datumEnsemble(); + if (datumEnsemble) { + return PJ_OBJ::create(crs->ctx, NN_NO_CHECK(datumEnsemble)); + } + proj_log_error(crs->ctx, __FUNCTION__, "CRS has no datum"); + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Return ellipsoid parameters. + * + * @param ellipsoid Object of type Ellipsoid (must not be NULL) + * @param pSemiMajorMetre Pointer to a value to store the semi-major axis in + * metre. or NULL + * @param pSemiMinorMetre Pointer to a value to store the semi-minor axis in + * metre. or NULL + * @param pIsSemiMinorComputed Pointer to a boolean value to indicate if the + * semi-minor value was computed. If FALSE, its value comes from the + * definition. or NULL + * @param pInverseFlattening Pointer to a value to store the inverse + * flattening. or NULL + * @return TRUE in case of success. + */ +int proj_obj_ellipsoid_get_parameters(PJ_OBJ *ellipsoid, + double *pSemiMajorMetre, + double *pSemiMinorMetre, + int *pIsSemiMinorComputed, + double *pInverseFlattening) { + assert(ellipsoid); + auto l_ellipsoid = dynamic_cast<const Ellipsoid *>(ellipsoid->obj.get()); + if (!l_ellipsoid) { + proj_log_error(ellipsoid->ctx, __FUNCTION__, + "Object is not a Ellipsoid"); + return FALSE; + } + + if (pSemiMajorMetre) { + *pSemiMajorMetre = l_ellipsoid->semiMajorAxis().getSIValue(); + } + if (pSemiMinorMetre) { + *pSemiMinorMetre = l_ellipsoid->computeSemiMinorAxis().getSIValue(); + } + if (pIsSemiMinorComputed) { + *pIsSemiMinorComputed = !(l_ellipsoid->semiMinorAxis().has_value()); + } + if (pInverseFlattening) { + *pInverseFlattening = l_ellipsoid->computedInverseFlattening(); + } + return TRUE; +} + +// --------------------------------------------------------------------------- + +/** \brief Get the prime meridian of a CRS or a GeodeticReferenceFrame. + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param obj Objet of type CRS or GeodeticReferenceFrame (must not be NULL) + * @return Object that must be unreferenced with proj_obj_unref(), or NULL + * in case of error. + */ + +PJ_OBJ *proj_obj_get_prime_meridian(PJ_OBJ *obj) { + auto ptr = obj->obj.get(); + if (dynamic_cast<CRS *>(ptr)) { + auto geodCRS = extractGeodeticCRS(obj, __FUNCTION__); + if (geodCRS) { + return PJ_OBJ::create(obj->ctx, geodCRS->primeMeridian()); + } + } else { + auto datum = dynamic_cast<const GeodeticReferenceFrame *>(ptr); + if (datum) { + return PJ_OBJ::create(obj->ctx, datum->primeMeridian()); + } + } + proj_log_error(obj->ctx, __FUNCTION__, + "Object is not a CRS or GeodeticReferenceFrame"); + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Return prime meridian parameters. + * + * @param prime_meridian Object of type PrimeMeridian (must not be NULL) + * @param pLongitude Pointer to a value to store the longitude of the prime + * meridian, in its native unit. or NULL + * @param pLongitudeUnitConvFactor Pointer to a value to store the conversion + * factor of the prime meridian longitude unit to radian. or NULL + * @param pLongitudeUnitName Pointer to a string value to store the unit name. + * or NULL + * @return TRUE in case of success. + */ +int proj_obj_prime_meridian_get_parameters(PJ_OBJ *prime_meridian, + double *pLongitude, + double *pLongitudeUnitConvFactor, + const char **pLongitudeUnitName) { + assert(prime_meridian); + auto l_pm = dynamic_cast<const PrimeMeridian *>(prime_meridian->obj.get()); + if (!l_pm) { + proj_log_error(prime_meridian->ctx, __FUNCTION__, + "Object is not a PrimeMeridian"); + return false; + } + const auto &longitude = l_pm->longitude(); + if (pLongitude) { + *pLongitude = longitude.value(); + } + const auto &unit = longitude.unit(); + if (pLongitudeUnitConvFactor) { + *pLongitudeUnitConvFactor = unit.conversionToSI(); + } + if (pLongitudeUnitName) { + *pLongitudeUnitName = unit.name().c_str(); + } + return true; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the base CRS of a BoundCRS or the source CRS of a + * CoordinateOperation. + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param obj Objet of type BoundCRS or CoordinateOperation (must not be NULL) + * @return Object that must be unreferenced with proj_obj_unref(), or NULL + * in case of error, or missing source CRS. + */ +PJ_OBJ *proj_obj_get_source_crs(PJ_OBJ *obj) { + assert(obj); + auto ptr = obj->obj.get(); + auto boundCRS = dynamic_cast<const BoundCRS *>(ptr); + if (boundCRS) { + return PJ_OBJ::create(obj->ctx, boundCRS->baseCRS()); + } + auto co = dynamic_cast<const CoordinateOperation *>(ptr); + if (co) { + auto sourceCRS = co->sourceCRS(); + if (sourceCRS) { + return PJ_OBJ::create(obj->ctx, NN_NO_CHECK(sourceCRS)); + } + return nullptr; + } + proj_log_error(obj->ctx, __FUNCTION__, + "Object is not a BoundCRS or a CoordinateOperation"); + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the hub CRS of a BoundCRS or the target CRS of a + * CoordinateOperation. + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param obj Objet of type BoundCRS or CoordinateOperation (must not be NULL) + * @return Object that must be unreferenced with proj_obj_unref(), or NULL + * in case of error, or missing target CRS. + */ +PJ_OBJ *proj_obj_get_target_crs(PJ_OBJ *obj) { + assert(obj); + auto ptr = obj->obj.get(); + auto boundCRS = dynamic_cast<const BoundCRS *>(ptr); + if (boundCRS) { + return PJ_OBJ::create(obj->ctx, boundCRS->hubCRS()); + } + auto co = dynamic_cast<const CoordinateOperation *>(ptr); + if (co) { + auto targetCRS = co->targetCRS(); + if (targetCRS) { + return PJ_OBJ::create(obj->ctx, NN_NO_CHECK(targetCRS)); + } + return nullptr; + } + proj_log_error(obj->ctx, __FUNCTION__, + "Object is not a BoundCRS or a CoordinateOperation"); + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Identify the CRS with reference CRSs. + * + * The candidate CRSs are either hard-coded, or looked in the database when + * authorityFactory is not null. + * + * The method returns a list of matching reference CRS, and the percentage + * (0-100) of confidence in the match. + * 100% means that the name of the reference entry + * perfectly matches the CRS name, and both are equivalent. In which case a + * single result is returned. + * 90% means that CRS are equivalent, but the names are not exactly the same. + * 70% means that CRS are equivalent), but the names do not match at all. + * 25% means that the CRS are not equivalent, but there is some similarity in + * the names. + * Other confidence values may be returned by some specialized implementations. + * + * This is implemented for GeodeticCRS, ProjectedCRS, VerticalCRS and + * CompoundCRS. + * + * @param obj Object of type CRS. Must not be NULL + * @param auth_name Authority name, or NULL for all authorities + * @param options Placeholder for future options. Should be set to NULL. + * @param confidence Output parameter. Pointer to an array of integers that will + * be allocated by the function and filled with the confidence values + * (0-100). There are as many elements in this array as + * proj_obj_list_get_count() + * returns on the return value of this function. *confidence should be + * released with proj_free_int_list(). + * @return a list of matching reference CRS, or nullptr in case of error. + */ +PJ_OBJ_LIST *proj_obj_identify(PJ_OBJ *obj, const char *auth_name, + const char *const *options, int **confidence) { + assert(obj); + (void)options; + if (confidence) { + *confidence = nullptr; + } + auto ptr = obj->obj.get(); + auto crs = dynamic_cast<const CRS *>(ptr); + if (!crs) { + proj_log_error(obj->ctx, __FUNCTION__, "Object is not a CRS"); + } else { + int *confidenceTemp = nullptr; + try { + auto factory = AuthorityFactory::create(getDBcontext(obj->ctx), + auth_name ? auth_name : ""); + auto res = crs->identify(factory); + std::vector<IdentifiedObjectNNPtr> objects; + confidenceTemp = confidence ? new int[res.size()] : nullptr; + size_t i = 0; + for (const auto &pair : res) { + objects.push_back(pair.first); + if (confidenceTemp) { + confidenceTemp[i] = pair.second; + ++i; + } + } + auto ret = internal::make_unique<PJ_OBJ_LIST>(obj->ctx, + std::move(objects)); + if (confidence) { + *confidence = confidenceTemp; + confidenceTemp = nullptr; + } + return ret.release(); + } catch (const std::exception &e) { + delete[] confidenceTemp; + proj_log_error(obj->ctx, __FUNCTION__, e.what()); + } + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Free an array of integer. */ +void proj_free_int_list(int *list) { delete[] list; } + +// --------------------------------------------------------------------------- + +static PROJ_STRING_LIST set_to_string_list(std::set<std::string> &&set) { + auto ret = new char *[set.size() + 1]; + size_t i = 0; + for (const auto &str : set) { + ret[i] = new char[str.size() + 1]; + std::memcpy(ret[i], str.c_str(), str.size() + 1); + i++; + } + ret[i] = nullptr; + return ret; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the list of authorities used in the database. + * + * The returned list is NULL terminated and must be freed with + * proj_free_string_list(). + * + * @param ctx PROJ context, or NULL for default context + * + * @return a NULL terminated list of NUL-terminated strings that must be + * freed with proj_free_string_list(), or NULL in case of error. + */ +PROJ_STRING_LIST proj_get_authorities_from_database(PJ_CONTEXT *ctx) { + SANITIZE_CTX(ctx); + try { + return set_to_string_list(getDBcontext(ctx)->getAuthorities()); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns the set of authority codes of the given object type. + * + * The returned list is NULL terminated and must be freed with + * proj_free_string_list(). + * + * @param ctx PROJ context, or NULL for default context. + * @param auth_name Authority name (must not be NULL) + * @param type Object type. + * @param allow_deprecated whether we should return deprecated objects as well. + * + * @return a NULL terminated list of NUL-terminated strings that must be + * freed with proj_free_string_list(), or NULL in case of error. + */ +PROJ_STRING_LIST proj_get_codes_from_database(PJ_CONTEXT *ctx, + const char *auth_name, + PJ_OBJ_TYPE type, + int allow_deprecated) { + assert(auth_name); + SANITIZE_CTX(ctx); + try { + auto factory = AuthorityFactory::create(getDBcontext(ctx), auth_name); + bool valid = false; + auto typeInternal = convertPJObjectTypeToObjectType(type, valid); + if (!valid) { + return nullptr; + } + return set_to_string_list( + factory->getAuthorityCodes(typeInternal, allow_deprecated != 0)); + + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** Free a list of NULL terminated strings. */ +void proj_free_string_list(PROJ_STRING_LIST list) { + if (list) { + for (size_t i = 0; list[i] != nullptr; i++) { + delete[] list[i]; + } + delete[] list; + } +} + +// --------------------------------------------------------------------------- + +/** \brief Return the Conversion of a DerivedCRS (such as a ProjectedCRS), + * or the Transformation from the baseCRS to the hubCRS of a BoundCRS + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param crs Objet of type DerivedCRS or BoundCRSs (must not be NULL) + * @param pMethodName Pointer to a string value to store the method + * (projection) name. or NULL + * @param pMethodAuthorityName Pointer to a string value to store the method + * authority name. or NULL + * @param pMethodCode Pointer to a string value to store the method + * code. or NULL + * @return Object of type SingleOperation that must be unreferenced with + * proj_obj_unref(), or NULL in case of error. + */ +PJ_OBJ *proj_obj_crs_get_coordoperation(PJ_OBJ *crs, const char **pMethodName, + const char **pMethodAuthorityName, + const char **pMethodCode) { + assert(crs); + SingleOperationPtr co; + + auto derivedCRS = dynamic_cast<const DerivedCRS *>(crs->obj.get()); + if (derivedCRS) { + co = derivedCRS->derivingConversion().as_nullable(); + } else { + auto boundCRS = dynamic_cast<const BoundCRS *>(crs->obj.get()); + if (boundCRS) { + co = boundCRS->transformation().as_nullable(); + } else { + proj_log_error(crs->ctx, __FUNCTION__, + "Object is not a DerivedCRS or BoundCRS"); + return nullptr; + } + } + + const auto &method = co->method(); + const auto &method_ids = method->identifiers(); + if (pMethodName) { + *pMethodName = method->name()->description()->c_str(); + } + if (pMethodAuthorityName) { + if (!method_ids.empty()) { + *pMethodAuthorityName = method_ids[0]->codeSpace()->c_str(); + } else { + *pMethodAuthorityName = nullptr; + } + } + if (pMethodCode) { + if (!method_ids.empty()) { + *pMethodCode = method_ids[0]->code().c_str(); + } else { + *pMethodCode = nullptr; + } + } + return PJ_OBJ::create(crs->ctx, NN_NO_CHECK(co)); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static PropertyMap createPropertyMapName(const char *name) { + return PropertyMap().set(common::IdentifiedObject::NAME_KEY, + name ? name : "unnamed"); +} + +// --------------------------------------------------------------------------- + +static UnitOfMeasure createLinearUnit(const char *name, double convFactor) { + return name == nullptr ? UnitOfMeasure::METRE + : UnitOfMeasure(name, convFactor); +} + +// --------------------------------------------------------------------------- + +static UnitOfMeasure createAngularUnit(const char *name, double convFactor) { + return name ? (ci_equal(name, "degree") + ? UnitOfMeasure::DEGREE + : ci_equal(name, "grad") + ? UnitOfMeasure::GRAD + : UnitOfMeasure(name, convFactor)) + : UnitOfMeasure::DEGREE; +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Create a GeographicCRS 2D from its definition. + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param ctx PROJ context, or NULL for default context + * @param geogName Name of the GeographicCRS. Or NULL + * @param datumName Name of the GeodeticReferenceFrame. Or NULL + * @param ellipsoidName Name of the Ellipsoid. Or NULL + * @param semiMajorMetre Ellipsoid semi-major axis, in metres. + * @param invFlattening Ellipsoid inverse flattening. Or 0 for a sphere. + * @param primeMeridianName Name of the PrimeMeridian. Or NULL + * @param primeMeridianOffset Offset of the prime meridian, expressed in the + * specified angular units. + * @param angularUnits Name of the angular units. Or NULL for Degree + * @param angularUnitsConv Conversion factor from the angular unit to radian. Or + * 0 for Degree if angularUnits == NULL. Otherwise should be not NULL + * @param latLongOrder TRUE for Latitude Longitude axis order. + * + * @return Object of type GeographicCRS that must be unreferenced with + * proj_obj_unref(), or NULL in case of error. + */ +PJ_OBJ *proj_obj_create_geographic_crs( + PJ_CONTEXT *ctx, const char *geogName, const char *datumName, + const char *ellipsoidName, double semiMajorMetre, double invFlattening, + const char *primeMeridianName, double primeMeridianOffset, + const char *angularUnits, double angularUnitsConv, int latLongOrder) { + + SANITIZE_CTX(ctx); + try { + const UnitOfMeasure angUnit( + createAngularUnit(angularUnits, angularUnitsConv)); + auto dbContext = getDBcontext(ctx); + auto body = Ellipsoid::guessBodyName(dbContext, semiMajorMetre); + auto ellpsName = createPropertyMapName(ellipsoidName); + auto ellps = + invFlattening != 0.0 + ? Ellipsoid::createFlattenedSphere(ellpsName, + Length(semiMajorMetre), + Scale(invFlattening), body) + : Ellipsoid::createSphere(ellpsName, Length(semiMajorMetre), + body); + auto pm = PrimeMeridian::create( + PropertyMap().set( + common::IdentifiedObject::NAME_KEY, + primeMeridianName + ? primeMeridianName + : primeMeridianOffset == 0.0 + ? (ellps->celestialBody() == Ellipsoid::EARTH + ? "Greenwich" + : "Reference meridian") + : "unnamed"), + Angle(primeMeridianOffset, angUnit)); + auto datum = GeodeticReferenceFrame::create( + createPropertyMapName(datumName), ellps, + util::optional<std::string>(), pm); + auto geogCRS = GeographicCRS::create( + createPropertyMapName(geogName), datum, + latLongOrder ? cs::EllipsoidalCS::createLatitudeLongitude(angUnit) + : cs::EllipsoidalCS::createLongitudeLatitude(angUnit)); + return PJ_OBJ::create(ctx, geogCRS); + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +static PJ_OBJ *proj_obj_create_projected_crs(PJ_OBJ *geodetic_crs, + const char *crs_name, + const ConversionNNPtr &conv, + const UnitOfMeasure &linearUnit) { + assert(geodetic_crs); + auto geogCRS = + util::nn_dynamic_pointer_cast<GeodeticCRS>(geodetic_crs->obj); + if (!geogCRS) { + return nullptr; + } + auto crs = ProjectedCRS::create( + createPropertyMapName(crs_name), NN_NO_CHECK(geogCRS), conv, + cs::CartesianCS::createEastingNorthing(linearUnit)); + return PJ_OBJ::create(geodetic_crs->ctx, crs); +} + +//! @endcond + +/* BEGIN: Generated by scripts/create_c_api_projections.py*/ + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a Universal Transverse Mercator + * conversion. + * + * See osgeo::proj::operation::Conversion::createUTM(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_UTM(PJ_OBJ *geodetic_crs, + const char *crs_name, int zone, + int north) { + const auto &linearUnit = UnitOfMeasure::METRE; + auto conv = Conversion::createUTM(PropertyMap(), zone, north != 0); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Transverse + * Mercator projection method. + * + * See osgeo::proj::operation::Conversion::createTransverseMercator(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_TransverseMercator( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, + double centerLong, double scale, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createTransverseMercator( + PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), + Scale(scale), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Gauss + * Schreiber Transverse Mercator projection method. + * + * See + * osgeo::proj::operation::Conversion::createGaussSchreiberTransverseMercator(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_GaussSchreiberTransverseMercator( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, + double centerLong, double scale, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createGaussSchreiberTransverseMercator( + PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), + Scale(scale), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Transverse + * Mercator South Orientated projection method. + * + * See + * osgeo::proj::operation::Conversion::createTransverseMercatorSouthOriented(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_TransverseMercatorSouthOriented( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, + double centerLong, double scale, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createTransverseMercatorSouthOriented( + PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), + Scale(scale), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Two Point + * Equidistant projection method. + * + * See osgeo::proj::operation::Conversion::createTwoPointEquidistant(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_TwoPointEquidistant( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFirstPoint, + double longitudeFirstPoint, double latitudeSecondPoint, + double longitudeSeconPoint, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createTwoPointEquidistant( + PropertyMap(), Angle(latitudeFirstPoint, angUnit), + Angle(longitudeFirstPoint, angUnit), + Angle(latitudeSecondPoint, angUnit), + Angle(longitudeSeconPoint, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Tunisia + * Mapping Grid projection method. + * + * See osgeo::proj::operation::Conversion::createTunisiaMappingGrid(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_TunisiaMappingGrid( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, + double centerLong, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createTunisiaMappingGrid( + PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Albers + * Conic Equal Area projection method. + * + * See osgeo::proj::operation::Conversion::createAlbersEqualArea(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_AlbersEqualArea( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFalseOrigin, + double longitudeFalseOrigin, double latitudeFirstParallel, + double latitudeSecondParallel, double eastingFalseOrigin, + double northingFalseOrigin, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createAlbersEqualArea( + PropertyMap(), Angle(latitudeFalseOrigin, angUnit), + Angle(longitudeFalseOrigin, angUnit), + Angle(latitudeFirstParallel, angUnit), + Angle(latitudeSecondParallel, angUnit), + Length(eastingFalseOrigin, linearUnit), + Length(northingFalseOrigin, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Lambert + * Conic Conformal 1SP projection method. + * + * See osgeo::proj::operation::Conversion::createLambertConicConformal_1SP(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_LambertConicConformal_1SP( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, + double centerLong, double scale, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createLambertConicConformal_1SP( + PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), + Scale(scale), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Lambert + * Conic Conformal (2SP) projection method. + * + * See osgeo::proj::operation::Conversion::createLambertConicConformal_2SP(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_LambertConicConformal_2SP( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFalseOrigin, + double longitudeFalseOrigin, double latitudeFirstParallel, + double latitudeSecondParallel, double eastingFalseOrigin, + double northingFalseOrigin, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createLambertConicConformal_2SP( + PropertyMap(), Angle(latitudeFalseOrigin, angUnit), + Angle(longitudeFalseOrigin, angUnit), + Angle(latitudeFirstParallel, angUnit), + Angle(latitudeSecondParallel, angUnit), + Length(eastingFalseOrigin, linearUnit), + Length(northingFalseOrigin, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Lambert + * Conic Conformal (2SP Michigan) projection method. + * + * See + * osgeo::proj::operation::Conversion::createLambertConicConformal_2SP_Michigan(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_LambertConicConformal_2SP_Michigan( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFalseOrigin, + double longitudeFalseOrigin, double latitudeFirstParallel, + double latitudeSecondParallel, double eastingFalseOrigin, + double northingFalseOrigin, double ellipsoidScalingFactor, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createLambertConicConformal_2SP_Michigan( + PropertyMap(), Angle(latitudeFalseOrigin, angUnit), + Angle(longitudeFalseOrigin, angUnit), + Angle(latitudeFirstParallel, angUnit), + Angle(latitudeSecondParallel, angUnit), + Length(eastingFalseOrigin, linearUnit), + Length(northingFalseOrigin, linearUnit), Scale(ellipsoidScalingFactor)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Lambert + * Conic Conformal (2SP Belgium) projection method. + * + * See + * osgeo::proj::operation::Conversion::createLambertConicConformal_2SP_Belgium(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_LambertConicConformal_2SP_Belgium( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFalseOrigin, + double longitudeFalseOrigin, double latitudeFirstParallel, + double latitudeSecondParallel, double eastingFalseOrigin, + double northingFalseOrigin, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createLambertConicConformal_2SP_Belgium( + PropertyMap(), Angle(latitudeFalseOrigin, angUnit), + Angle(longitudeFalseOrigin, angUnit), + Angle(latitudeFirstParallel, angUnit), + Angle(latitudeSecondParallel, angUnit), + Length(eastingFalseOrigin, linearUnit), + Length(northingFalseOrigin, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Modified + * Azimuthal Equidistant projection method. + * + * See osgeo::proj::operation::Conversion::createAzimuthalEquidistant(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_AzimuthalEquidistant( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeNatOrigin, + double longitudeNatOrigin, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createAzimuthalEquidistant( + PropertyMap(), Angle(latitudeNatOrigin, angUnit), + Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Guam + * Projection projection method. + * + * See osgeo::proj::operation::Conversion::createGuamProjection(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_GuamProjection( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeNatOrigin, + double longitudeNatOrigin, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createGuamProjection( + PropertyMap(), Angle(latitudeNatOrigin, angUnit), + Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Bonne + * projection method. + * + * See osgeo::proj::operation::Conversion::createBonne(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_Bonne( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeNatOrigin, + double longitudeNatOrigin, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createBonne( + PropertyMap(), Angle(latitudeNatOrigin, angUnit), + Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Lambert + * Cylindrical Equal Area (Spherical) projection method. + * + * See + * osgeo::proj::operation::Conversion::createLambertCylindricalEqualAreaSpherical(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_LambertCylindricalEqualAreaSpherical( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFirstParallel, + double longitudeNatOrigin, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createLambertCylindricalEqualAreaSpherical( + PropertyMap(), Angle(latitudeFirstParallel, angUnit), + Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Lambert + * Cylindrical Equal Area (ellipsoidal form) projection method. + * + * See osgeo::proj::operation::Conversion::createLambertCylindricalEqualArea(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_LambertCylindricalEqualArea( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFirstParallel, + double longitudeNatOrigin, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createLambertCylindricalEqualArea( + PropertyMap(), Angle(latitudeFirstParallel, angUnit), + Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the + * Cassini-Soldner projection method. + * + * See osgeo::proj::operation::Conversion::createCassiniSoldner(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_CassiniSoldner( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, + double centerLong, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createCassiniSoldner( + PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Equidistant + * Conic projection method. + * + * See osgeo::proj::operation::Conversion::createEquidistantConic(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_EquidistantConic( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, + double centerLong, double latitudeFirstParallel, + double latitudeSecondParallel, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createEquidistantConic( + PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), + Angle(latitudeFirstParallel, angUnit), + Angle(latitudeSecondParallel, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Eckert I + * projection method. + * + * See osgeo::proj::operation::Conversion::createEckertI(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_EckertI( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createEckertI( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Eckert II + * projection method. + * + * See osgeo::proj::operation::Conversion::createEckertII(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_EckertII( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createEckertII( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Eckert III + * projection method. + * + * See osgeo::proj::operation::Conversion::createEckertIII(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_EckertIII( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createEckertIII( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Eckert IV + * projection method. + * + * See osgeo::proj::operation::Conversion::createEckertIV(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_EckertIV( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createEckertIV( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Eckert V + * projection method. + * + * See osgeo::proj::operation::Conversion::createEckertV(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_EckertV( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createEckertV( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Eckert VI + * projection method. + * + * See osgeo::proj::operation::Conversion::createEckertVI(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_EckertVI( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createEckertVI( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Equidistant + * Cylindrical projection method. + * + * See osgeo::proj::operation::Conversion::createEquidistantCylindrical(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_EquidistantCylindrical( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFirstParallel, + double longitudeNatOrigin, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createEquidistantCylindrical( + PropertyMap(), Angle(latitudeFirstParallel, angUnit), + Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Equidistant + * Cylindrical (Spherical) projection method. + * + * See + * osgeo::proj::operation::Conversion::createEquidistantCylindricalSpherical(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_EquidistantCylindricalSpherical( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFirstParallel, + double longitudeNatOrigin, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createEquidistantCylindricalSpherical( + PropertyMap(), Angle(latitudeFirstParallel, angUnit), + Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Gall + * (Stereographic) projection method. + * + * See osgeo::proj::operation::Conversion::createGall(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_Gall( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createGall( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Goode + * Homolosine projection method. + * + * See osgeo::proj::operation::Conversion::createGoodeHomolosine(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_GoodeHomolosine( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createGoodeHomolosine( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Interrupted + * Goode Homolosine projection method. + * + * See osgeo::proj::operation::Conversion::createInterruptedGoodeHomolosine(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_InterruptedGoodeHomolosine( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createInterruptedGoodeHomolosine( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the + * Geostationary Satellite View projection method, with the sweep angle axis of + * the viewing instrument being x. + * + * See osgeo::proj::operation::Conversion::createGeostationarySatelliteSweepX(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_GeostationarySatelliteSweepX( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double height, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createGeostationarySatelliteSweepX( + PropertyMap(), Angle(centerLong, angUnit), Length(height, linearUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the + * Geostationary Satellite View projection method, with the sweep angle axis of + * the viewing instrument being y. + * + * See osgeo::proj::operation::Conversion::createGeostationarySatelliteSweepY(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_GeostationarySatelliteSweepY( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double height, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createGeostationarySatelliteSweepY( + PropertyMap(), Angle(centerLong, angUnit), Length(height, linearUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Gnomonic + * projection method. + * + * See osgeo::proj::operation::Conversion::createGnomonic(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_Gnomonic( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, + double centerLong, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createGnomonic( + PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Hotine + * Oblique Mercator (Variant A) projection method. + * + * See + * osgeo::proj::operation::Conversion::createHotineObliqueMercatorVariantA(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_HotineObliqueMercatorVariantA( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeProjectionCentre, + double longitudeProjectionCentre, double azimuthInitialLine, + double angleFromRectifiedToSkrewGrid, double scale, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createHotineObliqueMercatorVariantA( + PropertyMap(), Angle(latitudeProjectionCentre, angUnit), + Angle(longitudeProjectionCentre, angUnit), + Angle(azimuthInitialLine, angUnit), + Angle(angleFromRectifiedToSkrewGrid, angUnit), Scale(scale), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Hotine + * Oblique Mercator (Variant B) projection method. + * + * See + * osgeo::proj::operation::Conversion::createHotineObliqueMercatorVariantB(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_HotineObliqueMercatorVariantB( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeProjectionCentre, + double longitudeProjectionCentre, double azimuthInitialLine, + double angleFromRectifiedToSkrewGrid, double scale, + double eastingProjectionCentre, double northingProjectionCentre, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createHotineObliqueMercatorVariantB( + PropertyMap(), Angle(latitudeProjectionCentre, angUnit), + Angle(longitudeProjectionCentre, angUnit), + Angle(azimuthInitialLine, angUnit), + Angle(angleFromRectifiedToSkrewGrid, angUnit), Scale(scale), + Length(eastingProjectionCentre, linearUnit), + Length(northingProjectionCentre, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Hotine + * Oblique Mercator Two Point Natural Origin projection method. + * + * See + * osgeo::proj::operation::Conversion::createHotineObliqueMercatorTwoPointNaturalOrigin(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ * +proj_obj_create_projected_crs_HotineObliqueMercatorTwoPointNaturalOrigin( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeProjectionCentre, + double latitudePoint1, double longitudePoint1, double latitudePoint2, + double longitudePoint2, double scale, double eastingProjectionCentre, + double northingProjectionCentre, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createHotineObliqueMercatorTwoPointNaturalOrigin( + PropertyMap(), Angle(latitudeProjectionCentre, angUnit), + Angle(latitudePoint1, angUnit), Angle(longitudePoint1, angUnit), + Angle(latitudePoint2, angUnit), Angle(longitudePoint2, angUnit), + Scale(scale), Length(eastingProjectionCentre, linearUnit), + Length(northingProjectionCentre, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the + * International Map of the World Polyconic projection method. + * + * See + * osgeo::proj::operation::Conversion::createInternationalMapWorldPolyconic(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_InternationalMapWorldPolyconic( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double latitudeFirstParallel, double latitudeSecondParallel, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createInternationalMapWorldPolyconic( + PropertyMap(), Angle(centerLong, angUnit), + Angle(latitudeFirstParallel, angUnit), + Angle(latitudeSecondParallel, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Krovak + * (north oriented) projection method. + * + * See osgeo::proj::operation::Conversion::createKrovakNorthOriented(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_KrovakNorthOriented( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeProjectionCentre, + double longitudeOfOrigin, double colatitudeConeAxis, + double latitudePseudoStandardParallel, + double scaleFactorPseudoStandardParallel, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createKrovakNorthOriented( + PropertyMap(), Angle(latitudeProjectionCentre, angUnit), + Angle(longitudeOfOrigin, angUnit), Angle(colatitudeConeAxis, angUnit), + Angle(latitudePseudoStandardParallel, angUnit), + Scale(scaleFactorPseudoStandardParallel), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Krovak + * projection method. + * + * See osgeo::proj::operation::Conversion::createKrovak(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_Krovak( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeProjectionCentre, + double longitudeOfOrigin, double colatitudeConeAxis, + double latitudePseudoStandardParallel, + double scaleFactorPseudoStandardParallel, double falseEasting, + double falseNorthing, const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createKrovak( + PropertyMap(), Angle(latitudeProjectionCentre, angUnit), + Angle(longitudeOfOrigin, angUnit), Angle(colatitudeConeAxis, angUnit), + Angle(latitudePseudoStandardParallel, angUnit), + Scale(scaleFactorPseudoStandardParallel), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Lambert + * Azimuthal Equal Area projection method. + * + * See osgeo::proj::operation::Conversion::createLambertAzimuthalEqualArea(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_LambertAzimuthalEqualArea( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeNatOrigin, + double longitudeNatOrigin, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createLambertAzimuthalEqualArea( + PropertyMap(), Angle(latitudeNatOrigin, angUnit), + Angle(longitudeNatOrigin, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Miller + * Cylindrical projection method. + * + * See osgeo::proj::operation::Conversion::createMillerCylindrical(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_MillerCylindrical( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createMillerCylindrical( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Mercator + * projection method. + * + * See osgeo::proj::operation::Conversion::createMercatorVariantA(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_MercatorVariantA( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, + double centerLong, double scale, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createMercatorVariantA( + PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), + Scale(scale), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Mercator + * projection method. + * + * See osgeo::proj::operation::Conversion::createMercatorVariantB(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_MercatorVariantB( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeFirstParallel, + double centerLong, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createMercatorVariantB( + PropertyMap(), Angle(latitudeFirstParallel, angUnit), + Angle(centerLong, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Popular + * Visualisation Pseudo Mercator projection method. + * + * See + * osgeo::proj::operation::Conversion::createPopularVisualisationPseudoMercator(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_PopularVisualisationPseudoMercator( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, + double centerLong, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createPopularVisualisationPseudoMercator( + PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Mollweide + * projection method. + * + * See osgeo::proj::operation::Conversion::createMollweide(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_Mollweide( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createMollweide( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the New Zealand + * Map Grid projection method. + * + * See osgeo::proj::operation::Conversion::createNewZealandMappingGrid(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_NewZealandMappingGrid( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, + double centerLong, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createNewZealandMappingGrid( + PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Oblique + * Stereographic (Alternative) projection method. + * + * See osgeo::proj::operation::Conversion::createObliqueStereographic(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_ObliqueStereographic( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, + double centerLong, double scale, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createObliqueStereographic( + PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), + Scale(scale), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the + * Orthographic projection method. + * + * See osgeo::proj::operation::Conversion::createOrthographic(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_Orthographic( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, + double centerLong, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createOrthographic( + PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the American + * Polyconic projection method. + * + * See osgeo::proj::operation::Conversion::createAmericanPolyconic(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_AmericanPolyconic( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, + double centerLong, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createAmericanPolyconic( + PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Polar + * Stereographic (Variant A) projection method. + * + * See osgeo::proj::operation::Conversion::createPolarStereographicVariantA(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_PolarStereographicVariantA( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, + double centerLong, double scale, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createPolarStereographicVariantA( + PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), + Scale(scale), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Polar + * Stereographic (Variant B) projection method. + * + * See osgeo::proj::operation::Conversion::createPolarStereographicVariantB(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_PolarStereographicVariantB( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeStandardParallel, + double longitudeOfOrigin, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createPolarStereographicVariantB( + PropertyMap(), Angle(latitudeStandardParallel, angUnit), + Angle(longitudeOfOrigin, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Robinson + * projection method. + * + * See osgeo::proj::operation::Conversion::createRobinson(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_Robinson( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createRobinson( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Sinusoidal + * projection method. + * + * See osgeo::proj::operation::Conversion::createSinusoidal(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_Sinusoidal( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createSinusoidal( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the + * Stereographic projection method. + * + * See osgeo::proj::operation::Conversion::createStereographic(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_Stereographic( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, + double centerLong, double scale, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createStereographic( + PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), + Scale(scale), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Van der + * Grinten projection method. + * + * See osgeo::proj::operation::Conversion::createVanDerGrinten(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_VanDerGrinten( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createVanDerGrinten( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Wagner I + * projection method. + * + * See osgeo::proj::operation::Conversion::createWagnerI(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_WagnerI( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createWagnerI( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Wagner II + * projection method. + * + * See osgeo::proj::operation::Conversion::createWagnerII(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_WagnerII( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createWagnerII( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Wagner III + * projection method. + * + * See osgeo::proj::operation::Conversion::createWagnerIII(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_WagnerIII( + PJ_OBJ *geodetic_crs, const char *crs_name, double latitudeTrueScale, + double centerLong, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createWagnerIII( + PropertyMap(), Angle(latitudeTrueScale, angUnit), + Angle(centerLong, angUnit), Length(falseEasting, linearUnit), + Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Wagner IV + * projection method. + * + * See osgeo::proj::operation::Conversion::createWagnerIV(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_WagnerIV( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createWagnerIV( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Wagner V + * projection method. + * + * See osgeo::proj::operation::Conversion::createWagnerV(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_WagnerV( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createWagnerV( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Wagner VI + * projection method. + * + * See osgeo::proj::operation::Conversion::createWagnerVI(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_WagnerVI( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createWagnerVI( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Wagner VII + * projection method. + * + * See osgeo::proj::operation::Conversion::createWagnerVII(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_WagnerVII( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createWagnerVII( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the + * Quadrilateralized Spherical Cube projection method. + * + * See + * osgeo::proj::operation::Conversion::createQuadrilateralizedSphericalCube(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_QuadrilateralizedSphericalCube( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLat, + double centerLong, double falseEasting, double falseNorthing, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createQuadrilateralizedSphericalCube( + PropertyMap(), Angle(centerLat, angUnit), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Spherical + * Cross-Track Height projection method. + * + * See osgeo::proj::operation::Conversion::createSphericalCrossTrackHeight(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_SphericalCrossTrackHeight( + PJ_OBJ *geodetic_crs, const char *crs_name, double pegPointLat, + double pegPointLong, double pegPointHeading, double pegPointHeight, + const char *angUnitName, double angUnitConvFactor, + const char *linearUnitName, double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createSphericalCrossTrackHeight( + PropertyMap(), Angle(pegPointLat, angUnit), + Angle(pegPointLong, angUnit), Angle(pegPointHeading, angUnit), + Length(pegPointHeight, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS with a conversion based on the Equal Earth + * projection method. + * + * See osgeo::proj::operation::Conversion::createEqualEarth(). + * + * Linear parameters are expressed in (linearUnitName, linearUnitConvFactor). + * Angular parameters are expressed in (angUnitName, angUnitConvFactor). + */ +PJ_OBJ *proj_obj_create_projected_crs_EqualEarth( + PJ_OBJ *geodetic_crs, const char *crs_name, double centerLong, + double falseEasting, double falseNorthing, const char *angUnitName, + double angUnitConvFactor, const char *linearUnitName, + double linearUnitConvFactor) { + UnitOfMeasure linearUnit( + createLinearUnit(linearUnitName, linearUnitConvFactor)); + UnitOfMeasure angUnit(createAngularUnit(angUnitName, angUnitConvFactor)); + auto conv = Conversion::createEqualEarth( + PropertyMap(), Angle(centerLong, angUnit), + Length(falseEasting, linearUnit), Length(falseNorthing, linearUnit)); + return proj_obj_create_projected_crs(geodetic_crs, crs_name, conv, + linearUnit); +} +/* END: Generated by scripts/create_c_api_projections.py*/ + +// --------------------------------------------------------------------------- + +/** \brief Return whether a coordinate operation can be instanciated as + * a PROJ pipeline, checking in particular that referenced grids are + * available. + * + * @param coordoperation Objet of type CoordinateOperation or derived classes + * (must not be NULL) + * @return TRUE or FALSE. + */ + +int proj_coordoperation_is_instanciable(PJ_OBJ *coordoperation) { + assert(coordoperation); + auto op = + dynamic_cast<const CoordinateOperation *>(coordoperation->obj.get()); + if (!op) { + proj_log_error(coordoperation->ctx, __FUNCTION__, + "Object is not a CoordinateOperation"); + return 0; + } + auto dbContext = getDBcontextNoException(coordoperation->ctx, __FUNCTION__); + try { + return op->isPROJInstanciable(dbContext) ? 1 : 0; + } catch (const std::exception &) { + return 0; + } +} + +// --------------------------------------------------------------------------- + +/** \brief Return the number of parameters of a SingleOperation + * + * @param coordoperation Objet of type SingleOperation or derived classes + * (must not be NULL) + */ + +int proj_coordoperation_get_param_count(PJ_OBJ *coordoperation) { + assert(coordoperation); + auto op = dynamic_cast<const SingleOperation *>(coordoperation->obj.get()); + if (!op) { + proj_log_error(coordoperation->ctx, __FUNCTION__, + "Object is not a SingleOperation"); + return 0; + } + return static_cast<int>(op->parameterValues().size()); +} + +// --------------------------------------------------------------------------- + +/** \brief Return the index of a parameter of a SingleOperation + * + * @param coordoperation Objet of type SingleOperation or derived classes + * (must not be NULL) + * @param name Parameter name. Must not be NULL + * @return index (>=0), or -1 in case of error. + */ + +int proj_coordoperation_get_param_index(PJ_OBJ *coordoperation, + const char *name) { + assert(coordoperation); + assert(name); + auto op = dynamic_cast<const SingleOperation *>(coordoperation->obj.get()); + if (!op) { + proj_log_error(coordoperation->ctx, __FUNCTION__, + "Object is not a SingleOperation"); + return -1; + } + int index = 0; + for (const auto &genParam : op->method()->parameters()) { + if (Identifier::isEquivalentName(genParam->nameStr().c_str(), name)) { + return index; + } + index++; + } + return -1; +} + +// --------------------------------------------------------------------------- + +/** \brief Return a parameter of a SingleOperation + * + * @param coordoperation Objet of type SingleOperation or derived classes + * (must not be NULL) + * @param index Parameter index. + * @param pName Pointer to a string value to store the parameter name. or NULL + * @param pNameAuthorityName Pointer to a string value to store the parameter + * authority name. or NULL + * @param pNameCode Pointer to a string value to store the parameter + * code. or NULL + * @param pValue Pointer to a double value to store the parameter + * value (if numeric). or NULL + * @param pValueString Pointer to a string value to store the parameter + * value (if of type string). or NULL + * @param pValueUnitConvFactor Pointer to a double value to store the parameter + * unit conversion factor. or NULL + * @param pValueUnitName Pointer to a string value to store the parameter + * unit name. or NULL + * @return TRUE in case of success. + */ + +int proj_coordoperation_get_param(PJ_OBJ *coordoperation, int index, + const char **pName, + const char **pNameAuthorityName, + const char **pNameCode, double *pValue, + const char **pValueString, + double *pValueUnitConvFactor, + const char **pValueUnitName) { + assert(coordoperation); + auto op = dynamic_cast<const SingleOperation *>(coordoperation->obj.get()); + if (!op) { + proj_log_error(coordoperation->ctx, __FUNCTION__, + "Object is not a SingleOperation"); + return false; + } + const auto ¶meters = op->method()->parameters(); + const auto &values = op->parameterValues(); + if (static_cast<size_t>(index) >= parameters.size() || + static_cast<size_t>(index) >= values.size()) { + proj_log_error(coordoperation->ctx, __FUNCTION__, "Invalid index"); + return false; + } + + const auto ¶m = parameters[index]; + const auto ¶m_ids = param->identifiers(); + if (pName) { + *pName = param->name()->description()->c_str(); + } + if (pNameAuthorityName) { + if (!param_ids.empty()) { + *pNameAuthorityName = param_ids[0]->codeSpace()->c_str(); + } else { + *pNameAuthorityName = nullptr; + } + } + if (pNameCode) { + if (!param_ids.empty()) { + *pNameCode = param_ids[0]->code().c_str(); + } else { + *pNameCode = nullptr; + } + } + + const auto &value = values[index]; + ParameterValuePtr paramValue = nullptr; + auto opParamValue = + dynamic_cast<const OperationParameterValue *>(value.get()); + if (opParamValue) { + paramValue = opParamValue->parameterValue().as_nullable(); + } + if (pValue) { + *pValue = 0; + if (paramValue) { + if (paramValue->type() == ParameterValue::Type::MEASURE) { + *pValue = paramValue->value().value(); + } + } + } + if (pValueString) { + *pValueString = nullptr; + if (paramValue) { + if (paramValue->type() == ParameterValue::Type::FILENAME) { + *pValueString = paramValue->valueFile().c_str(); + } else if (paramValue->type() == ParameterValue::Type::STRING) { + *pValueString = paramValue->stringValue().c_str(); + } + } + } + if (pValueUnitConvFactor) { + *pValueUnitConvFactor = 0; + if (paramValue) { + if (paramValue->type() == ParameterValue::Type::MEASURE) { + *pValueUnitConvFactor = + paramValue->value().unit().conversionToSI(); + } + } + } + if (pValueUnitName) { + *pValueUnitName = nullptr; + if (paramValue) { + if (paramValue->type() == ParameterValue::Type::MEASURE) { + *pValueUnitName = paramValue->value().unit().name().c_str(); + } + } + } + + return true; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the number of grids used by a CoordinateOperation + * + * @param coordoperation Objet of type CoordinateOperation or derived classes + * (must not be NULL) + */ + +int proj_coordoperation_get_grid_used_count(PJ_OBJ *coordoperation) { + assert(coordoperation); + auto co = + dynamic_cast<const CoordinateOperation *>(coordoperation->obj.get()); + if (!co) { + proj_log_error(coordoperation->ctx, __FUNCTION__, + "Object is not a CoordinateOperation"); + return 0; + } + auto dbContext = getDBcontextNoException(coordoperation->ctx, __FUNCTION__); + try { + if (!coordoperation->gridsNeededAsked) { + coordoperation->gridsNeededAsked = true; + const auto gridsNeeded = co->gridsNeeded(dbContext); + for (const auto &gridDesc : gridsNeeded) { + coordoperation->gridsNeeded.emplace_back(gridDesc); + } + } + return static_cast<int>(coordoperation->gridsNeeded.size()); + } catch (const std::exception &e) { + proj_log_error(coordoperation->ctx, __FUNCTION__, e.what()); + return 0; + } +} + +// --------------------------------------------------------------------------- + +/** \brief Return a parameter of a SingleOperation + * + * @param coordoperation Objet of type SingleOperation or derived classes + * (must not be NULL) + * @param index Parameter index. + * @param pShortName Pointer to a string value to store the grid short name. or + * NULL + * @param pFullName Pointer to a string value to store the grid full filename. + * or NULL + * @param pPackageName Pointer to a string value to store the package name where + * the grid might be found. or NULL + * @param pURL Pointer to a string value to store the grid URL or the + * package URL where the grid might be found. or NULL + * @param pDirectDownload Pointer to a int (boolean) value to store whether + * *pURL can be downloaded directly. or NULL + * @param pOpenLicense Pointer to a int (boolean) value to store whether + * the grid is released with an open license. or NULL + * @param pAvailable Pointer to a int (boolean) value to store whether the grid + * is available at runtime. or NULL + * @return TRUE in case of success. + */ + +int proj_coordoperation_get_grid_used(PJ_OBJ *coordoperation, int index, + const char **pShortName, + const char **pFullName, + const char **pPackageName, + const char **pURL, int *pDirectDownload, + int *pOpenLicense, int *pAvailable) { + const int count = proj_coordoperation_get_grid_used_count(coordoperation); + if (index < 0 || index >= count) { + proj_log_error(coordoperation->ctx, __FUNCTION__, "Invalid index"); + return false; + } + + const auto &gridDesc = coordoperation->gridsNeeded[index]; + if (pShortName) { + *pShortName = gridDesc.shortName.c_str(); + } + + if (pFullName) { + *pFullName = gridDesc.fullName.c_str(); + } + + if (pPackageName) { + *pPackageName = gridDesc.packageName.c_str(); + } + + if (pURL) { + *pURL = gridDesc.url.c_str(); + } + + if (pDirectDownload) { + *pDirectDownload = gridDesc.directDownload; + } + + if (pOpenLicense) { + *pOpenLicense = gridDesc.openLicense; + } + + if (pAvailable) { + *pAvailable = gridDesc.available; + } + + return true; +} + +// --------------------------------------------------------------------------- + +/** \brief Opaque object representing an operation factory context. */ +struct PJ_OPERATION_FACTORY_CONTEXT { + //! @cond Doxygen_Suppress + PJ_CONTEXT *ctx; + CoordinateOperationContextNNPtr operationContext; + + explicit PJ_OPERATION_FACTORY_CONTEXT( + PJ_CONTEXT *ctxIn, CoordinateOperationContextNNPtr &&operationContextIn) + : ctx(ctxIn), operationContext(std::move(operationContextIn)) {} + + PJ_OPERATION_FACTORY_CONTEXT(const PJ_OPERATION_FACTORY_CONTEXT &) = delete; + PJ_OPERATION_FACTORY_CONTEXT & + operator=(const PJ_OPERATION_FACTORY_CONTEXT &) = delete; + //! @endcond +}; + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a context for building coordinate operations between + * two CRS. + * + * The returned object must be unreferenced with + * proj_operation_factory_context_unref() after use. + * + * @param ctx Context, or NULL for default context. + * @param authority Name of authority to which to restrict the search of + * canidate operations. Or NULL to allow any authority. + * @return Object that must be unreferenced with + * proj_operation_factory_context_unref(), or NULL in + * case of error. + */ +PJ_OPERATION_FACTORY_CONTEXT * +proj_create_operation_factory_context(PJ_CONTEXT *ctx, const char *authority) { + SANITIZE_CTX(ctx); + auto dbContext = getDBcontextNoException(ctx, __FUNCTION__); + try { + if (dbContext) { + auto factory = CoordinateOperationFactory::create(); + auto authFactory = AuthorityFactory::create( + NN_NO_CHECK(dbContext), + std::string(authority ? authority : "")); + auto operationContext = + CoordinateOperationContext::create(authFactory, nullptr, 0.0); + return new PJ_OPERATION_FACTORY_CONTEXT( + ctx, std::move(operationContext)); + } else { + auto operationContext = + CoordinateOperationContext::create(nullptr, nullptr, 0.0); + return new PJ_OPERATION_FACTORY_CONTEXT( + ctx, std::move(operationContext)); + } + } catch (const std::exception &e) { + proj_log_error(ctx, __FUNCTION__, e.what()); + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Drops a reference on an object. + * + * This method should be called one and exactly one for each function + * returning a PJ_OPERATION_FACTORY_CONTEXT* + * + * @param ctxt Object, or NULL. + */ +void proj_operation_factory_context_unref(PJ_OPERATION_FACTORY_CONTEXT *ctxt) { + delete ctxt; +} + +// --------------------------------------------------------------------------- + +/** \brief Set the desired accuracy of the resulting coordinate transformations. + * @param ctxt Operation factory context. must not be NULL + * @param accuracy Accuracy in meter (or 0 to disable the filter). + */ +void proj_operation_factory_context_set_desired_accuracy( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, double accuracy) { + assert(ctxt); + ctxt->operationContext->setDesiredAccuracy(accuracy); +} + +// --------------------------------------------------------------------------- + +/** \brief Set the desired area of interest for the resulting coordinate + * transformations. + * + * For an area of interest crossing the anti-meridian, west_lon will be + * greater than east_lon. + * + * @param ctxt Operation factory context. must not be NULL + * @param west_lon West longitude (in degrees). + * @param south_lat South latitude (in degrees). + * @param east_lon East longitude (in degrees). + * @param north_lat North latitude (in degrees). + */ +void proj_operation_factory_context_set_area_of_interest( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, double west_lon, double south_lat, + double east_lon, double north_lat) { + assert(ctxt); + ctxt->operationContext->setAreaOfInterest( + Extent::createFromBBOX(west_lon, south_lat, east_lon, north_lat)); +} + +// --------------------------------------------------------------------------- + +/** \brief Set how source and target CRS extent should be used + * when considering if a transformation can be used (only takes effect if + * no area of interest is explicitly defined). + * + * The default is PJ_CRS_EXTENT_SMALLEST. + * + * @param ctxt Operation factory context. must not be NULL + * @param use How source and target CRS extent should be used. + */ +void proj_operation_factory_context_set_crs_extent_use( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, PROJ_CRS_EXTENT_USE use) { + assert(ctxt); + switch (use) { + case PJ_CRS_EXTENT_NONE: + ctxt->operationContext->setSourceAndTargetCRSExtentUse( + CoordinateOperationContext::SourceTargetCRSExtentUse::NONE); + break; + + case PJ_CRS_EXTENT_BOTH: + ctxt->operationContext->setSourceAndTargetCRSExtentUse( + CoordinateOperationContext::SourceTargetCRSExtentUse::BOTH); + break; + + case PJ_CRS_EXTENT_INTERSECTION: + ctxt->operationContext->setSourceAndTargetCRSExtentUse( + CoordinateOperationContext::SourceTargetCRSExtentUse::INTERSECTION); + break; + + case PJ_CRS_EXTENT_SMALLEST: + ctxt->operationContext->setSourceAndTargetCRSExtentUse( + CoordinateOperationContext::SourceTargetCRSExtentUse::SMALLEST); + break; + } +} + +// --------------------------------------------------------------------------- + +/** \brief Set the spatial criterion to use when comparing the area of + * validity of coordinate operations with the area of interest / area of + * validity of + * source and target CRS. + * + * The default is PROJ_SPATIAL_CRITERION_STRICT_CONTAINMENT. + * + * @param ctxt Operation factory context. must not be NULL + * @param criterion patial criterion to use + */ +void PROJ_DLL proj_operation_factory_context_set_spatial_criterion( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, PROJ_SPATIAL_CRITERION criterion) { + assert(ctxt); + switch (criterion) { + case PROJ_SPATIAL_CRITERION_STRICT_CONTAINMENT: + ctxt->operationContext->setSpatialCriterion( + CoordinateOperationContext::SpatialCriterion::STRICT_CONTAINMENT); + break; + + case PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION: + ctxt->operationContext->setSpatialCriterion( + CoordinateOperationContext::SpatialCriterion::PARTIAL_INTERSECTION); + break; + } +} + +// --------------------------------------------------------------------------- + +/** \brief Set how grid availability is used. + * + * The default is USE_FOR_SORTING. + * + * @param ctxt Operation factory context. must not be NULL + * @param use how grid availability is used. + */ +void PROJ_DLL proj_operation_factory_context_set_grid_availability_use( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, PROJ_GRID_AVAILABILITY_USE use) { + assert(ctxt); + switch (use) { + case PROJ_GRID_AVAILABILITY_USED_FOR_SORTING: + ctxt->operationContext->setGridAvailabilityUse( + CoordinateOperationContext::GridAvailabilityUse::USE_FOR_SORTING); + break; + + case PROJ_GRID_AVAILABILITY_DISCARD_OPERATION_IF_MISSING_GRID: + ctxt->operationContext->setGridAvailabilityUse( + CoordinateOperationContext::GridAvailabilityUse:: + DISCARD_OPERATION_IF_MISSING_GRID); + break; + + case PROJ_GRID_AVAILABILITY_IGNORED: + ctxt->operationContext->setGridAvailabilityUse( + CoordinateOperationContext::GridAvailabilityUse:: + IGNORE_GRID_AVAILABILITY); + break; + } +} + +// --------------------------------------------------------------------------- + +/** \brief Set whether PROJ alternative grid names should be substituted to + * the official authority names. + * + * The default is true. + * + * @param ctxt Operation factory context. must not be NULL + * @param usePROJNames whether PROJ alternative grid names should be used + */ +void proj_operation_factory_context_set_use_proj_alternative_grid_names( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, int usePROJNames) { + assert(ctxt); + ctxt->operationContext->setUsePROJAlternativeGridNames(usePROJNames != 0); +} + +// --------------------------------------------------------------------------- + +/** \brief Set whether an intermediate pivot CRS can be used for researching + * coordinate operations between a source and target CRS. + * + * Concretely if in the database there is an operation from A to C + * (or C to A), and another one from C to B (or B to C), but no direct + * operation between A and B, setting this parameter to true, allow + * chaining both operations. + * + * The current implementation is limited to researching one intermediate + * step. + * + * By default, all potential C candidates will be used. + * proj_operation_factory_context_set_allowed_intermediate_crs() + * can be used to restrict them. + * + * The default is true. + * + * @param ctxt Operation factory context. must not be NULL + * @param allow whether intermediate CRS may be used. + */ +void proj_operation_factory_context_set_allow_use_intermediate_crs( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, int allow) { + assert(ctxt); + ctxt->operationContext->setAllowUseIntermediateCRS(allow != 0); +} + +// --------------------------------------------------------------------------- + +/** \brief Restrict the potential pivot CRSs that can be used when trying to + * build a coordinate operation between two CRS that have no direct operation. + * + * @param ctxt Operation factory context. must not be NULL + * @param list_of_auth_name_codes an array of strings NLL terminated, + * with the format { "auth_name1", "code1", "auth_name2", "code2", ... NULL } + */ +void proj_operation_factory_context_set_allowed_intermediate_crs( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + const char *const *list_of_auth_name_codes) { + assert(ctxt); + std::vector<std::pair<std::string, std::string>> pivots; + for (auto iter = list_of_auth_name_codes; iter && iter[0] && iter[1]; + iter += 2) { + pivots.emplace_back(std::pair<std::string, std::string>( + std::string(iter[0]), std::string(iter[1]))); + } + ctxt->operationContext->setIntermediateCRS(pivots); +} + +// --------------------------------------------------------------------------- + +/** \brief Find a list of CoordinateOperation from source_crs to target_crs. + * + * The operations are sorted with the most relevant ones first: by + * descending + * area (intersection of the transformation area with the area of interest, + * or intersection of the transformation with the area of use of the CRS), + * and + * by increasing accuracy. Operations with unknown accuracy are sorted last, + * whatever their area. + * + * @param source_crs source CRS. Must not be NULL. + * @param target_crs source CRS. Must not be NULL. + * @param operationContext Search context. Must not be NULL. + * @return a result set that must be unreferenced with + * proj_obj_list_unref(), or NULL in case of error. + */ +PJ_OBJ_LIST * +proj_obj_create_operations(PJ_OBJ *source_crs, PJ_OBJ *target_crs, + PJ_OPERATION_FACTORY_CONTEXT *operationContext) { + assert(source_crs); + assert(target_crs); + assert(operationContext); + + auto sourceCRS = nn_dynamic_pointer_cast<CRS>(source_crs->obj); + if (!sourceCRS) { + proj_log_error(operationContext->ctx, __FUNCTION__, + "source_crs is not a CRS"); + return nullptr; + } + auto targetCRS = nn_dynamic_pointer_cast<CRS>(target_crs->obj); + if (!targetCRS) { + proj_log_error(operationContext->ctx, __FUNCTION__, + "target_crs is not a CRS"); + return nullptr; + } + + try { + auto factory = CoordinateOperationFactory::create(); + std::vector<IdentifiedObjectNNPtr> objects; + auto ops = factory->createOperations( + NN_NO_CHECK(sourceCRS), NN_NO_CHECK(targetCRS), + operationContext->operationContext); + for (const auto &op : ops) { + objects.emplace_back(op); + } + return new PJ_OBJ_LIST(operationContext->ctx, std::move(objects)); + } catch (const std::exception &e) { + proj_log_error(operationContext->ctx, __FUNCTION__, e.what()); + return nullptr; + } +} + +// --------------------------------------------------------------------------- + +/** \brief Return the number of objects in the result set + * + * @param result Objet of type PJ_OBJ_LIST (must not be NULL) + */ +int proj_obj_list_get_count(PJ_OBJ_LIST *result) { + assert(result); + return static_cast<int>(result->objects.size()); +} + +// --------------------------------------------------------------------------- + +/** \brief Return an object from the result set + * + * The returned object must be unreferenced with proj_obj_unref() after + * use. + * It should be used by at most one thread at a time. + * + * @param result Objet of type PJ_OBJ_LIST (must not be NULL) + * @param index Index + * @return a new object that must be unreferenced with proj_obj_unref(), + * or nullptr in case of error. + */ + +PJ_OBJ *proj_obj_list_get(PJ_OBJ_LIST *result, int index) { + assert(result); + if (index < 0 || index >= proj_obj_list_get_count(result)) { + proj_log_error(result->ctx, __FUNCTION__, "Invalid index"); + return nullptr; + } + return PJ_OBJ::create(result->ctx, result->objects[index]); +} + +// --------------------------------------------------------------------------- + +/** \brief Drops a reference on the result set. + * + * This method should be called one and exactly one for each function + * returning a PJ_OBJ_LIST* + * + * @param result Object, or NULL. + */ +void proj_obj_list_unref(PJ_OBJ_LIST *result) { delete result; } + +// --------------------------------------------------------------------------- + +/** \brief Return the accuracy (in metre) of a coordinate operation. + * + * @return the accuracy, or a negative value if unknown or in case of error. + */ +double proj_coordoperation_get_accuracy(PJ_OBJ *coordoperation) { + assert(coordoperation); + auto co = + dynamic_cast<const CoordinateOperation *>(coordoperation->obj.get()); + if (!co) { + proj_log_error(coordoperation->ctx, __FUNCTION__, + "Object is not a CoordinateOperation"); + return -1; + } + const auto &accuracies = co->coordinateOperationAccuracies(); + if (accuracies.empty()) { + return -1; + } + try { + return c_locale_stod(accuracies[0]->value()); + } catch (const std::exception &) { + } + return -1; +} diff --git a/src/common.cpp b/src/common.cpp new file mode 100644 index 00000000..94bc8678 --- /dev/null +++ b/src/common.cpp @@ -0,0 +1,1125 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef FROM_PROJ_CPP +#define FROM_PROJ_CPP +#endif + +#include "proj/common.hpp" +#include "proj/io.hpp" +#include "proj/metadata.hpp" +#include "proj/util.hpp" + +#include "proj/internal/internal.hpp" +#include "proj/internal/io_internal.hpp" + +#include "proj.h" + +#include <cmath> // M_PI +#include <cstdlib> +#include <memory> +#include <string> +#include <vector> + +using namespace NS_PROJ::internal; +using namespace NS_PROJ::io; +using namespace NS_PROJ::metadata; +using namespace NS_PROJ::util; + +#if 0 +namespace dropbox{ namespace oxygen { +template<> nn<NS_PROJ::common::IdentifiedObjectPtr>::~nn() = default; +template<> nn<NS_PROJ::common::ObjectDomainPtr>::~nn() = default; +template<> nn<NS_PROJ::common::ObjectUsagePtr>::~nn() = default; +template<> nn<NS_PROJ::common::UnitOfMeasurePtr>::~nn() = default; +}} +#endif + +NS_PROJ_START +namespace common { + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct UnitOfMeasure::Private { + std::string name_{}; + double toSI_ = 1.0; + UnitOfMeasure::Type type_{UnitOfMeasure::Type::UNKNOWN}; + std::string codeSpace_{}; + std::string code_{}; + + Private(const std::string &nameIn, double toSIIn, + UnitOfMeasure::Type typeIn, const std::string &codeSpaceIn, + const std::string &codeIn) + : name_(nameIn), toSI_(toSIIn), type_(typeIn), codeSpace_(codeSpaceIn), + code_(codeIn) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Creates a UnitOfMeasure. */ +UnitOfMeasure::UnitOfMeasure(const std::string &nameIn, double toSIIn, + UnitOfMeasure::Type typeIn, + const std::string &codeSpaceIn, + const std::string &codeIn) + : d(internal::make_unique<Private>(nameIn, toSIIn, typeIn, codeSpaceIn, + codeIn)) {} + +// --------------------------------------------------------------------------- + +UnitOfMeasure::UnitOfMeasure(const UnitOfMeasure &other) + : d(internal::make_unique<Private>(*(other.d))) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +UnitOfMeasure::~UnitOfMeasure() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +UnitOfMeasure &UnitOfMeasure::operator=(const UnitOfMeasure &other) { + if (this != &other) { + *d = *(other.d); + } + return *this; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +UnitOfMeasureNNPtr UnitOfMeasure::create(const UnitOfMeasure &other) { + return util::nn_make_shared<UnitOfMeasure>(other); +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the name of the unit of measure. */ +const std::string &UnitOfMeasure::name() PROJ_PURE_DEFN { return d->name_; } + +// --------------------------------------------------------------------------- + +/** \brief Return the conversion factor to the unit of the + * International System of Units of the same Type. + * + * For example, for foot, this would be 0.3048 (metre) + * + * @return the conversion factor, or 0 if no conversion exists. + */ +double UnitOfMeasure::conversionToSI() PROJ_PURE_DEFN { return d->toSI_; } + +// --------------------------------------------------------------------------- + +/** \brief Return the type of the unit of measure. + */ +UnitOfMeasure::Type UnitOfMeasure::type() PROJ_PURE_DEFN { return d->type_; } + +// --------------------------------------------------------------------------- + +/** \brief Return the code space of the unit of measure. + * + * For example "EPSG" + * + * @return the code space, or empty string. + */ +const std::string &UnitOfMeasure::codeSpace() PROJ_PURE_DEFN { + return d->codeSpace_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the code of the unit of measure. + * + * @return the code, or empty string. + */ +const std::string &UnitOfMeasure::code() PROJ_PURE_DEFN { return d->code_; } + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void UnitOfMeasure::_exportToWKT( + WKTFormatter *formatter, + const std::string &unitType) const // throw(FormattingException) +{ + const bool isWKT2 = formatter->version() == WKTFormatter::Version::WKT2; + + if (formatter->forceUNITKeyword() && type() != Type::PARAMETRIC) { + formatter->startNode(WKTConstants::UNIT, !codeSpace().empty()); + } else if (!unitType.empty()) { + formatter->startNode(unitType, !codeSpace().empty()); + } else { + if (isWKT2 && type() == Type::LINEAR) { + formatter->startNode(WKTConstants::LENGTHUNIT, + !codeSpace().empty()); + } else if (isWKT2 && type() == Type::ANGULAR) { + formatter->startNode(WKTConstants::ANGLEUNIT, !codeSpace().empty()); + } else if (isWKT2 && type() == Type::SCALE) { + formatter->startNode(WKTConstants::SCALEUNIT, !codeSpace().empty()); + } else if (isWKT2 && type() == Type::TIME) { + formatter->startNode(WKTConstants::TIMEUNIT, !codeSpace().empty()); + } else if (isWKT2 && type() == Type::PARAMETRIC) { + formatter->startNode(WKTConstants::PARAMETRICUNIT, + !codeSpace().empty()); + } else { + formatter->startNode(WKTConstants::UNIT, !codeSpace().empty()); + } + } + + { + const auto &l_name = name(); + const bool esri = formatter->useESRIDialect(); + if (esri) { + if (ci_equal(l_name, "degree")) { + formatter->addQuotedString("Degree"); + } else if (ci_equal(l_name, "grad")) { + formatter->addQuotedString("Grad"); + } else if (ci_equal(l_name, "metre")) { + formatter->addQuotedString("Meter"); + } else { + formatter->addQuotedString(l_name); + } + } else { + formatter->addQuotedString(l_name); + } + const auto &factor = conversionToSI(); + if (!isWKT2 || factor != 0.0) { + // Some TIMEUNIT do not have a conversion factor + formatter->add(factor); + } + if (!codeSpace().empty() && formatter->outputId()) { + formatter->startNode( + isWKT2 ? WKTConstants::ID : WKTConstants::AUTHORITY, false); + formatter->addQuotedString(codeSpace()); + const auto &l_code = code(); + if (isWKT2) { + try { + (void)std::stoi(l_code); + formatter->add(l_code); + } catch (const std::exception &) { + formatter->addQuotedString(l_code); + } + } else { + formatter->addQuotedString(l_code); + } + formatter->endNode(); + } + } + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** Returns whether two units of measures are equal. + * + * The comparison is based on the name. + */ +bool UnitOfMeasure::operator==(const UnitOfMeasure &other) PROJ_PURE_DEFN { + return name() == other.name(); +} + +// --------------------------------------------------------------------------- + +/** Returns whether two units of measures are different. + * + * The comparison is based on the name. + */ +bool UnitOfMeasure::operator!=(const UnitOfMeasure &other) PROJ_PURE_DEFN { + return name() != other.name(); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +std::string UnitOfMeasure::exportToPROJString() const { + if (type() == Type::LINEAR) { + auto proj_units = proj_list_units(); + for (int i = 0; proj_units[i].id != nullptr; i++) { + if (::fabs(proj_units[i].factor - conversionToSI()) < + 1e-10 * conversionToSI()) { + return proj_units[i].id; + } + } + } else if (type() == Type::ANGULAR) { + auto proj_angular_units = proj_list_angular_units(); + for (int i = 0; proj_angular_units[i].id != nullptr; i++) { + if (::fabs(proj_angular_units[i].factor - conversionToSI()) < + 1e-10 * conversionToSI()) { + return proj_angular_units[i].id; + } + } + } + return std::string(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool UnitOfMeasure::_isEquivalentTo( + const UnitOfMeasure &other, util::IComparable::Criterion criterion) const { + if (criterion == util::IComparable::Criterion::STRICT) { + return operator==(other); + } + return std::fabs(conversionToSI() - other.conversionToSI()) <= + 1e-10 * std::fabs(conversionToSI()); +} + +//! @endcond +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct Measure::Private { + double value_ = 0.0; + UnitOfMeasure unit_{}; + + Private(double valueIn, const UnitOfMeasure &unitIn) + : value_(valueIn), unit_(unitIn) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a Measure. + */ +Measure::Measure(double valueIn, const UnitOfMeasure &unitIn) + : d(internal::make_unique<Private>(valueIn, unitIn)) {} + +// --------------------------------------------------------------------------- + +Measure::Measure(const Measure &other) + : d(internal::make_unique<Private>(*(other.d))) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +Measure::~Measure() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the unit of the Measure. + */ +const UnitOfMeasure &Measure::unit() PROJ_CONST_DEFN { return d->unit_; } + +// --------------------------------------------------------------------------- + +/** \brief Return the value of the Measure, after conversion to the + * corresponding + * unit of the International System. + */ +double Measure::getSIValue() PROJ_CONST_DEFN { + return d->value_ * d->unit_.conversionToSI(); +} + +// --------------------------------------------------------------------------- + +/** \brief Return the value of the measure, expressed in the unit() + */ +double Measure::value() PROJ_CONST_DEFN { return d->value_; } + +// --------------------------------------------------------------------------- + +/** \brief Return the value of this measure expressed into the provided unit. + */ +double Measure::convertToUnit(const UnitOfMeasure &otherUnit) PROJ_CONST_DEFN { + return getSIValue() / otherUnit.conversionToSI(); +} + +// --------------------------------------------------------------------------- + +/** \brief Return whether two measures are equal. + * + * The comparison is done both on the value and the unit. + */ +bool Measure::operator==(const Measure &other) PROJ_CONST_DEFN { + return d->value_ == other.d->value_ && d->unit_ == other.d->unit_; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns whether an object is equivalent to another one. + * @param other other object to compare to + * @param criterion comparaison criterion. + * @return true if objects are equivalent. + */ +bool Measure::_isEquivalentTo(const Measure &other, + util::IComparable::Criterion criterion) const { + if (criterion == util::IComparable::Criterion::STRICT) { + return operator==(other); + } + return std::fabs(getSIValue() - other.getSIValue()) <= + 1e-10 * std::fabs(getSIValue()); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a Scale. + * + * @param valueIn value + */ +Scale::Scale(double valueIn) : Measure(valueIn, UnitOfMeasure::SCALE_UNITY) {} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a Scale. + * + * @param valueIn value + * @param unitIn unit. Constraint: unit.type() == UnitOfMeasure::Type::SCALE + */ +Scale::Scale(double valueIn, const UnitOfMeasure &unitIn) + : Measure(valueIn, unitIn) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +Scale::Scale(const Scale &) = default; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +Scale::~Scale() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a Angle. + * + * @param valueIn value + */ +Angle::Angle(double valueIn) : Measure(valueIn, UnitOfMeasure::DEGREE) {} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a Angle. + * + * @param valueIn value + * @param unitIn unit. Constraint: unit.type() == UnitOfMeasure::Type::ANGULAR + */ +Angle::Angle(double valueIn, const UnitOfMeasure &unitIn) + : Measure(valueIn, unitIn) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +Angle::Angle(const Angle &) = default; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +Angle::~Angle() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a Length. + * + * @param valueIn value + */ +Length::Length(double valueIn) : Measure(valueIn, UnitOfMeasure::METRE) {} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a Length. + * + * @param valueIn value + * @param unitIn unit. Constraint: unit.type() == UnitOfMeasure::Type::LINEAR + */ +Length::Length(double valueIn, const UnitOfMeasure &unitIn) + : Measure(valueIn, unitIn) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +Length::Length(const Length &) = default; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +Length::~Length() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct DateTime::Private { + std::string str_{}; + + explicit Private(const std::string &str) : str_(str) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +DateTime::DateTime() : d(internal::make_unique<Private>(std::string())) {} + +// --------------------------------------------------------------------------- + +DateTime::DateTime(const std::string &str) + : d(internal::make_unique<Private>(str)) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +DateTime::DateTime(const DateTime &other) + : d(internal::make_unique<Private>(*(other.d))) {} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +DateTime::~DateTime() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a DateTime. */ +DateTime DateTime::create(const std::string &str) { return DateTime(str); } + +// --------------------------------------------------------------------------- + +/** \brief Return whether the DateTime is ISO:8601 compliant. + * + * \remark The current implementation is really simplistic, and aimed at + * detecting date-times that are not ISO:8601 compliant. + */ +bool DateTime::isISO_8601() const { + return !d->str_.empty() && d->str_[0] >= '0' && d->str_[0] <= '9' && + d->str_.find(' ') == std::string::npos; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the DateTime as a string. + */ +std::string DateTime::toString() const { return d->str_; } + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +// cppcheck-suppress copyCtorAndEqOperator +struct IdentifiedObject::Private { + IdentifierNNPtr name{Identifier::create()}; + std::vector<IdentifierNNPtr> identifiers{}; + std::vector<GenericNameNNPtr> aliases{}; + std::string remarks{}; + bool isDeprecated{}; + + void setIdentifiers(const PropertyMap &properties); + void setName(const PropertyMap &properties); + void setAliases(const PropertyMap &properties); +}; +//! @endcond + +// --------------------------------------------------------------------------- + +IdentifiedObject::IdentifiedObject() : d(internal::make_unique<Private>()) {} + +// --------------------------------------------------------------------------- + +IdentifiedObject::IdentifiedObject(const IdentifiedObject &other) + : d(internal::make_unique<Private>(*(other.d))) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +IdentifiedObject::~IdentifiedObject() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the name of the object. + * + * Generally, the only interesting field of the name will be + * name()->description(). + */ +const IdentifierNNPtr &IdentifiedObject::name() PROJ_CONST_DEFN { + return d->name; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the name of the object. + * + * Return *(name()->description()) + */ +const std::string &IdentifiedObject::nameStr() PROJ_CONST_DEFN { + return *(d->name->description()); +} + +// --------------------------------------------------------------------------- + +/** \brief Return the identifier(s) of the object + * + * Generally, those will have Identifier::code() and Identifier::codeSpace() + * filled. + */ +const std::vector<IdentifierNNPtr> & +IdentifiedObject::identifiers() PROJ_CONST_DEFN { + return d->identifiers; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the alias(es) of the object. + */ +const std::vector<GenericNameNNPtr> & +IdentifiedObject::aliases() PROJ_CONST_DEFN { + return d->aliases; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the (first) alias of the object as a string. + * + * Shortcut for aliases()[0]->toFullyQualifiedName()->toString() + */ +std::string IdentifiedObject::alias() PROJ_CONST_DEFN { + if (d->aliases.empty()) + return std::string(); + return d->aliases[0]->toFullyQualifiedName()->toString(); +} + +// --------------------------------------------------------------------------- + +/** \brief Return the EPSG code. + * @return code, or 0 if not found + */ +int IdentifiedObject::getEPSGCode() PROJ_CONST_DEFN { + for (const auto &id : identifiers()) { + if (ci_equal(*(id->codeSpace()), metadata::Identifier::EPSG)) { + return ::atoi(id->code().c_str()); + } + } + return 0; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the remarks. + */ +const std::string &IdentifiedObject::remarks() PROJ_CONST_DEFN { + return d->remarks; +} + +// --------------------------------------------------------------------------- + +/** \brief Return whether the object is deprecated. + * + * \remark Extension of \ref ISO_19111_2018 + */ +bool IdentifiedObject::isDeprecated() PROJ_CONST_DEFN { + return d->isDeprecated; +} + +// --------------------------------------------------------------------------- +//! @cond Doxygen_Suppress + +void IdentifiedObject::Private::setName( + const PropertyMap &properties) // throw(InvalidValueTypeException) +{ + auto oIter = properties.find(NAME_KEY); + if (oIter == properties.end()) { + return; + } + if (auto genVal = + util::nn_dynamic_pointer_cast<BoxedValue>(oIter->second)) { + if (genVal->type() == BoxedValue::Type::STRING) { + name = Identifier::create( + std::string(), PropertyMap().set(Identifier::DESCRIPTION_KEY, + genVal->stringValue())); + } else { + throw InvalidValueTypeException("Invalid value type for " + + NAME_KEY); + } + } else { + if (auto identifier = + util::nn_dynamic_pointer_cast<Identifier>(oIter->second)) { + name = NN_NO_CHECK(identifier); + } else { + throw InvalidValueTypeException("Invalid value type for " + + NAME_KEY); + } + } +} + +// --------------------------------------------------------------------------- + +void IdentifiedObject::Private::setIdentifiers( + const PropertyMap &properties) // throw(InvalidValueTypeException) +{ + auto oIter = properties.find(IDENTIFIERS_KEY); + if (oIter == properties.end()) { + + oIter = properties.find(Identifier::CODE_KEY); + if (oIter != properties.end()) { + identifiers.push_back( + Identifier::create(std::string(), properties)); + } + return; + } + if (auto identifier = + util::nn_dynamic_pointer_cast<Identifier>(oIter->second)) { + identifiers.clear(); + identifiers.push_back(NN_NO_CHECK(identifier)); + } else { + if (auto array = util::nn_dynamic_pointer_cast<ArrayOfBaseObject>( + oIter->second)) { + identifiers.clear(); + for (const auto &val : *array) { + identifier = util::nn_dynamic_pointer_cast<Identifier>(val); + if (identifier) { + identifiers.push_back(NN_NO_CHECK(identifier)); + } else { + throw InvalidValueTypeException("Invalid value type for " + + IDENTIFIERS_KEY); + } + } + } else { + throw InvalidValueTypeException("Invalid value type for " + + IDENTIFIERS_KEY); + } + } +} + +// --------------------------------------------------------------------------- + +void IdentifiedObject::Private::setAliases( + const PropertyMap &properties) // throw(InvalidValueTypeException) +{ + auto oIter = properties.find(ALIAS_KEY); + if (oIter == properties.end()) { + return; + } + if (auto l_name = + util::nn_dynamic_pointer_cast<GenericName>(oIter->second)) { + aliases.clear(); + aliases.push_back(NN_NO_CHECK(l_name)); + } else { + if (auto array = util::nn_dynamic_pointer_cast<ArrayOfBaseObject>( + oIter->second)) { + aliases.clear(); + for (const auto &val : *array) { + l_name = util::nn_dynamic_pointer_cast<GenericName>(val); + if (l_name) { + aliases.push_back(NN_NO_CHECK(l_name)); + } else { + if (auto genVal = + util::nn_dynamic_pointer_cast<BoxedValue>(val)) { + if (genVal->type() == BoxedValue::Type::STRING) { + aliases.push_back(NameFactory::createLocalName( + nullptr, genVal->stringValue())); + } else { + throw InvalidValueTypeException( + "Invalid value type for " + ALIAS_KEY); + } + } else { + throw InvalidValueTypeException( + "Invalid value type for " + ALIAS_KEY); + } + } + } + } else { + std::string temp; + if (properties.getStringValue(ALIAS_KEY, temp)) { + aliases.clear(); + aliases.push_back(NameFactory::createLocalName(nullptr, temp)); + } else { + throw InvalidValueTypeException("Invalid value type for " + + ALIAS_KEY); + } + } + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +void IdentifiedObject::setProperties( + const PropertyMap &properties) // throw(InvalidValueTypeException) +{ + d->setName(properties); + d->setIdentifiers(properties); + d->setAliases(properties); + + properties.getStringValue(REMARKS_KEY, d->remarks); + + { + auto oIter = properties.find(DEPRECATED_KEY); + if (oIter != properties.end()) { + if (auto genVal = + util::nn_dynamic_pointer_cast<BoxedValue>(oIter->second)) { + if (genVal->type() == BoxedValue::Type::BOOLEAN) { + d->isDeprecated = genVal->booleanValue(); + } else { + throw InvalidValueTypeException("Invalid value type for " + + DEPRECATED_KEY); + } + } else { + throw InvalidValueTypeException("Invalid value type for " + + DEPRECATED_KEY); + } + } + } +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void IdentifiedObject::formatID(WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == WKTFormatter::Version::WKT2; + for (const auto &id : identifiers()) { + id->_exportToWKT(formatter); + if (!isWKT2) { + break; + } + } +} + +// --------------------------------------------------------------------------- + +void IdentifiedObject::formatRemarks(WKTFormatter *formatter) const { + if (!remarks().empty()) { + formatter->startNode(WKTConstants::REMARK, false); + formatter->addQuotedString(remarks()); + formatter->endNode(); + } +} + +// --------------------------------------------------------------------------- + +bool IdentifiedObject::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherIdObj = dynamic_cast<const IdentifiedObject *>(other); + if (!otherIdObj) + return false; + return _isEquivalentTo(otherIdObj, criterion); +} + +// --------------------------------------------------------------------------- + +bool IdentifiedObject::_isEquivalentTo(const IdentifiedObject *otherIdObj, + util::IComparable::Criterion criterion) + PROJ_CONST_DEFN { + if (criterion == util::IComparable::Criterion::STRICT) { + if (!ci_equal(nameStr(), otherIdObj->nameStr())) { + return false; + } + // TODO test id etc + } else { + if (!metadata::Identifier::isEquivalentName( + nameStr().c_str(), otherIdObj->nameStr().c_str())) { + return false; + } + } + return true; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct ObjectDomain::Private { + optional<std::string> scope_{}; + ExtentPtr domainOfValidity_{}; + + Private(const optional<std::string> &scopeIn, const ExtentPtr &extent) + : scope_(scopeIn), domainOfValidity_(extent) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +ObjectDomain::ObjectDomain(const optional<std::string> &scopeIn, + const ExtentPtr &extent) + : d(internal::make_unique<Private>(scopeIn, extent)) {} +//! @endcond + +// --------------------------------------------------------------------------- + +ObjectDomain::ObjectDomain(const ObjectDomain &other) + : d(internal::make_unique<Private>(*(other.d))) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +ObjectDomain::~ObjectDomain() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the scope. + * + * @return the scope, or empty. + */ +const optional<std::string> &ObjectDomain::scope() PROJ_CONST_DEFN { + return d->scope_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the domain of validity. + * + * @return the domain of validity, or nullptr. + */ +const ExtentPtr &ObjectDomain::domainOfValidity() PROJ_CONST_DEFN { + return d->domainOfValidity_; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ObjectDomain. + */ +ObjectDomainNNPtr ObjectDomain::create(const optional<std::string> &scopeIn, + const ExtentPtr &extent) { + return ObjectDomain::nn_make_shared<ObjectDomain>(scopeIn, extent); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void ObjectDomain::_exportToWKT(WKTFormatter *formatter) const { + if (d->scope_.has_value()) { + formatter->startNode(WKTConstants::SCOPE, false); + formatter->addQuotedString(*(d->scope_)); + formatter->endNode(); + } else if (formatter->use2018Keywords()) { + formatter->startNode(WKTConstants::SCOPE, false); + formatter->addQuotedString("unknown"); + formatter->endNode(); + } + if (d->domainOfValidity_) { + if (d->domainOfValidity_->description().has_value()) { + formatter->startNode(WKTConstants::AREA, false); + formatter->addQuotedString(*(d->domainOfValidity_->description())); + formatter->endNode(); + } + if (d->domainOfValidity_->geographicElements().size() == 1) { + auto bbox = util::nn_dynamic_pointer_cast<GeographicBoundingBox>( + d->domainOfValidity_->geographicElements()[0]); + if (bbox) { + formatter->startNode(WKTConstants::BBOX, false); + formatter->add(bbox->southBoundLatitude()); + formatter->add(bbox->westBoundLongitude()); + formatter->add(bbox->northBoundLatitude()); + formatter->add(bbox->eastBoundLongitude()); + formatter->endNode(); + } + } + if (d->domainOfValidity_->verticalElements().size() == 1) { + auto extent = d->domainOfValidity_->verticalElements()[0]; + formatter->startNode(WKTConstants::VERTICALEXTENT, false); + formatter->add(extent->minimumValue()); + formatter->add(extent->maximumValue()); + extent->unit()->_exportToWKT(formatter); + formatter->endNode(); + } + if (d->domainOfValidity_->temporalElements().size() == 1) { + auto extent = d->domainOfValidity_->temporalElements()[0]; + formatter->startNode(WKTConstants::TIMEEXTENT, false); + if (DateTime::create(extent->start()).isISO_8601()) { + formatter->add(extent->start()); + } else { + formatter->addQuotedString(extent->start()); + } + if (DateTime::create(extent->stop()).isISO_8601()) { + formatter->add(extent->stop()); + } else { + formatter->addQuotedString(extent->stop()); + } + formatter->endNode(); + } + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool ObjectDomain::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherDomain = dynamic_cast<const ObjectDomain *>(other); + if (!otherDomain) + return false; + if (scope().has_value() != otherDomain->scope().has_value()) + return false; + if (*scope() != *otherDomain->scope()) + return false; + if ((domainOfValidity().get() != nullptr) ^ + (otherDomain->domainOfValidity().get() != nullptr)) + return false; + return domainOfValidity().get() == nullptr || + domainOfValidity()->_isEquivalentTo( + otherDomain->domainOfValidity().get(), criterion); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct ObjectUsage::Private { + std::vector<ObjectDomainNNPtr> domains_{}; +}; +//! @endcond + +// --------------------------------------------------------------------------- + +ObjectUsage::ObjectUsage() : d(internal::make_unique<Private>()) {} + +// --------------------------------------------------------------------------- + +ObjectUsage::ObjectUsage(const ObjectUsage &other) + : IdentifiedObject(other), d(internal::make_unique<Private>(*(other.d))) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +ObjectUsage::~ObjectUsage() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the domains of the object. + */ +const std::vector<ObjectDomainNNPtr> &ObjectUsage::domains() PROJ_CONST_DEFN { + return d->domains_; +} + +// --------------------------------------------------------------------------- + +void ObjectUsage::setProperties( + const PropertyMap &properties) // throw(InvalidValueTypeException) +{ + IdentifiedObject::setProperties(properties); + + optional<std::string> scope; + { + std::string temp; + if (properties.getStringValue(SCOPE_KEY, temp)) { + scope = temp; + } + } + + ExtentPtr domainOfValidity; + { + auto oIter = properties.find(DOMAIN_OF_VALIDITY_KEY); + if (oIter != properties.end()) { + domainOfValidity = + util::nn_dynamic_pointer_cast<Extent>(oIter->second); + if (!domainOfValidity) { + throw InvalidValueTypeException("Invalid value type for " + + DOMAIN_OF_VALIDITY_KEY); + } + } + } + + if (scope.has_value() || domainOfValidity) { + d->domains_.emplace_back(ObjectDomain::create(scope, domainOfValidity)); + } + + { + auto oIter = properties.find(OBJECT_DOMAIN_KEY); + if (oIter != properties.end()) { + if (auto objectDomain = util::nn_dynamic_pointer_cast<ObjectDomain>( + oIter->second)) { + d->domains_.emplace_back(NN_NO_CHECK(objectDomain)); + } else if (auto array = + util::nn_dynamic_pointer_cast<ArrayOfBaseObject>( + oIter->second)) { + for (const auto &val : *array) { + objectDomain = + util::nn_dynamic_pointer_cast<ObjectDomain>(val); + if (objectDomain) { + d->domains_.emplace_back(NN_NO_CHECK(objectDomain)); + } else { + throw InvalidValueTypeException( + "Invalid value type for " + OBJECT_DOMAIN_KEY); + } + } + } else { + throw InvalidValueTypeException("Invalid value type for " + + OBJECT_DOMAIN_KEY); + } + } + } +} + +// --------------------------------------------------------------------------- + +void ObjectUsage::baseExportToWKT(WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == WKTFormatter::Version::WKT2; + if (isWKT2 && formatter->outputId()) { + auto l_domains = domains(); + if (!l_domains.empty()) { + if (formatter->use2018Keywords()) { + for (const auto &domain : l_domains) { + formatter->startNode(WKTConstants::USAGE, false); + domain->_exportToWKT(formatter); + formatter->endNode(); + } + } else { + l_domains[0]->_exportToWKT(formatter); + } + } + } + if (formatter->outputId()) { + formatID(formatter); + } + if (isWKT2) { + formatRemarks(formatter); + } +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool ObjectUsage::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherObjUsage = dynamic_cast<const ObjectUsage *>(other); + if (!otherObjUsage) + return false; + + // TODO: incomplete + return IdentifiedObject::_isEquivalentTo(other, criterion); +} +//! @endcond + +} // namespace common +NS_PROJ_END diff --git a/src/coordinateoperation.cpp b/src/coordinateoperation.cpp new file mode 100644 index 00000000..645bd0ed --- /dev/null +++ b/src/coordinateoperation.cpp @@ -0,0 +1,10915 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef FROM_PROJ_CPP +#define FROM_PROJ_CPP +#endif +#define FROM_COORDINATE_OPERATION_CPP + +#include "proj/coordinateoperation.hpp" +#include "proj/common.hpp" +#include "proj/crs.hpp" +#include "proj/io.hpp" +#include "proj/metadata.hpp" +#include "proj/util.hpp" + +#include "proj/internal/internal.hpp" +#include "proj/internal/io_internal.hpp" + +#include "projects.h" // M_PI + +#include <algorithm> +#include <cassert> +#include <cmath> +#include <cstring> +#include <memory> +#include <set> +#include <string> +#include <vector> + +using namespace NS_PROJ::internal; + +#if 0 +namespace dropbox{ namespace oxygen { +template<> nn<NS_PROJ::operation::CoordinateOperationPtr>::~nn() = default; +template<> nn<NS_PROJ::operation::SingleOperationPtr>::~nn() = default; +template<> nn<NS_PROJ::operation::ConversionPtr>::~nn() = default; +template<> nn<NS_PROJ::operation::TransformationPtr>::~nn() = default; +template<> nn<NS_PROJ::operation::ConcatenatedOperationPtr>::~nn() = default; +template<> nn<NS_PROJ::operation::PointMotionOperationPtr>::~nn() = default; +template<> nn<NS_PROJ::operation::GeneralOperationParameterPtr>::~nn() = default; +template<> nn<NS_PROJ::operation::OperationParameterPtr>::~nn() = default; +template<> nn<NS_PROJ::operation::GeneralParameterValuePtr>::~nn() = default; +template<> nn<NS_PROJ::operation::ParameterValuePtr>::~nn() = default; +template<> nn<NS_PROJ::operation::OperationMethodPtr>::~nn() = default; +template<> nn<NS_PROJ::operation::OperationParameterValuePtr>::~nn() = default; +template<> nn<std::unique_ptr<NS_PROJ::operation::CoordinateOperationFactory, std::default_delete<NS_PROJ::operation::CoordinateOperationFactory> > >::~nn() = default; +template<> nn<std::unique_ptr<NS_PROJ::operation::CoordinateOperationContext, std::default_delete<NS_PROJ::operation::CoordinateOperationContext> > >::~nn() = default; +}} +#endif + +#include "proj/internal/coordinateoperation_constants.hpp" +#include "proj/internal/coordinateoperation_internal.hpp" +#include "proj/internal/esri_projection_mappings.hpp" + +#if 0 +namespace dropbox{ namespace oxygen { +template<> nn<std::shared_ptr<NS_PROJ::operation::InverseCoordinateOperation>>::~nn() = default; +template<> nn<std::shared_ptr<NS_PROJ::operation::InverseConversion>>::~nn() = default; +template<> nn<std::shared_ptr<NS_PROJ::operation::InverseTransformation>>::~nn() = default; +template<> nn<NS_PROJ::operation::PROJBasedOperationPtr>::~nn() = default; +}} +#endif + +// --------------------------------------------------------------------------- + +NS_PROJ_START +namespace operation { + +//! @cond Doxygen_Suppress + +constexpr double UTM_LATITUDE_OF_NATURAL_ORIGIN = 0.0; +constexpr double UTM_SCALE_FACTOR = 0.9996; +constexpr double UTM_FALSE_EASTING = 500000.0; +constexpr double UTM_NORTH_FALSE_NORTHING = 0.0; +constexpr double UTM_SOUTH_FALSE_NORTHING = 10000000.0; + +static const std::string INVERSE_OF = "Inverse of "; +static const char *NULL_GEOCENTRIC_TRANSLATION = "Null geocentric translation"; +static const char *NULL_GEOGRAPHIC_OFFSET = "Null geographic offset"; +//! @endcond + +//! @cond Doxygen_Suppress +static util::PropertyMap +createPropertiesForInverse(const CoordinateOperation *op, bool derivedFrom, + bool approximateInversion); +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +class InvalidOperationEmptyIntersection : public InvalidOperation { + public: + explicit InvalidOperationEmptyIntersection(const std::string &message); + InvalidOperationEmptyIntersection( + const InvalidOperationEmptyIntersection &other); + ~InvalidOperationEmptyIntersection() override; +}; + +InvalidOperationEmptyIntersection::InvalidOperationEmptyIntersection( + const std::string &message) + : InvalidOperation(message) {} + +InvalidOperationEmptyIntersection::InvalidOperationEmptyIntersection( + const InvalidOperationEmptyIntersection &) = default; + +InvalidOperationEmptyIntersection::~InvalidOperationEmptyIntersection() = + default; + +// --------------------------------------------------------------------------- + +static std::string createEntryEqParam(const std::string &a, + const std::string &b) { + return a < b ? a + b : b + a; +} + +static std::set<std::string> buildSetEquivalentParameters() { + + std::set<std::string> set; + + const char *const listOfEquivalentParameterNames[][5] = { + {"latitude_of_point_1", "Latitude_Of_1st_Point", nullptr}, + {"longitude_of_point_1", "Longitude_Of_1st_Point", nullptr}, + {"latitude_of_point_2", "Latitude_Of_2nd_Point", nullptr}, + {"longitude_of_point_2", "Longitude_Of_2nd_Point", nullptr}, + + {EPSG_NAME_PARAMETER_FALSE_EASTING, + EPSG_NAME_PARAMETER_EASTING_FALSE_ORIGIN, + EPSG_NAME_PARAMETER_EASTING_PROJECTION_CENTRE, nullptr}, + + {EPSG_NAME_PARAMETER_FALSE_NORTHING, + EPSG_NAME_PARAMETER_NORTHING_FALSE_ORIGIN, + EPSG_NAME_PARAMETER_NORTHING_PROJECTION_CENTRE, nullptr}, + + {EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + EPSG_NAME_PARAMETER_LATITUDE_FALSE_ORIGIN, + EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE, nullptr}, + + {EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + EPSG_NAME_PARAMETER_LONGITUDE_FALSE_ORIGIN, + EPSG_NAME_PARAMETER_LONGITUDE_PROJECTION_CENTRE, + EPSG_NAME_PARAMETER_LONGITUDE_OF_ORIGIN, nullptr}, + }; + + for (const auto ¶mList : listOfEquivalentParameterNames) { + for (size_t i = 0; paramList[i]; i++) { + auto a = metadata::Identifier::canonicalizeName(paramList[i]); + for (size_t j = i + 1; paramList[j]; j++) { + auto b = metadata::Identifier::canonicalizeName(paramList[j]); + set.insert(createEntryEqParam(a, b)); + } + } + } + return set; +} + +static bool areEquivalentParameters(const std::string &a, + const std::string &b) { + + static const std::set<std::string> setEquivalentParameters = + buildSetEquivalentParameters(); + + auto a_can = metadata::Identifier::canonicalizeName(a); + auto b_can = metadata::Identifier::canonicalizeName(b); + return setEquivalentParameters.find(createEntryEqParam(a_can, b_can)) != + setEquivalentParameters.end(); +} + +// --------------------------------------------------------------------------- + +PROJ_NO_INLINE const MethodMapping *getMapping(int epsg_code) noexcept { + for (const auto &mapping : methodMappings) { + if (mapping.epsg_code == epsg_code) { + return &mapping; + } + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +const MethodMapping *getMapping(const OperationMethod *method) noexcept { + const std::string &name(method->nameStr()); + const int epsg_code = method->getEPSGCode(); + for (const auto &mapping : methodMappings) { + if ((epsg_code != 0 && mapping.epsg_code == epsg_code) || + metadata::Identifier::isEquivalentName(mapping.wkt2_name, + name.c_str())) { + return &mapping; + } + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +const MethodMapping *getMappingFromWKT1(const std::string &wkt1_name) noexcept { + // Unusual for a WKT1 projection name, but mentionned in OGC 12-063r5 C.4.2 + if (ci_starts_with(wkt1_name, "UTM zone")) { + return getMapping(EPSG_CODE_METHOD_TRANSVERSE_MERCATOR); + } + + for (const auto &mapping : methodMappings) { + if (mapping.wkt1_name && metadata::Identifier::isEquivalentName( + mapping.wkt1_name, wkt1_name.c_str())) { + return &mapping; + } + } + return nullptr; +} +// --------------------------------------------------------------------------- + +const MethodMapping *getMapping(const char *wkt2_name) noexcept { + for (const auto &mapping : methodMappings) { + if (metadata::Identifier::isEquivalentName(mapping.wkt2_name, + wkt2_name)) { + return &mapping; + } + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +std::vector<const MethodMapping *> +getMappingsFromPROJName(const std::string &projName) { + std::vector<const MethodMapping *> res; + for (const auto &mapping : methodMappings) { + if (mapping.proj_name_main && projName == mapping.proj_name_main) { + res.push_back(&mapping); + } + } + return res; +} + +// --------------------------------------------------------------------------- + +const ParamMapping *getMapping(const MethodMapping *mapping, + const OperationParameterValue *param) { + const auto ¶m_name = param->parameter()->name(); + const std::string &name = *(param_name->description()); + const std::string &code = param_name->code(); + const int epsg_code = !code.empty() ? ::atoi(code.c_str()) : 0; + for (int i = 0; mapping->params[i] != nullptr; ++i) { + const auto *paramMapping = mapping->params[i]; + if (metadata::Identifier::isEquivalentName(paramMapping->wkt2_name, + name.c_str()) || + (epsg_code != 0 && paramMapping->epsg_code == epsg_code) || + areEquivalentParameters(paramMapping->wkt2_name, name)) { + return paramMapping; + } + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +const ParamMapping *getMappingFromWKT1(const MethodMapping *mapping, + const std::string &wkt1_name) { + for (int i = 0; mapping->params[i] != nullptr; ++i) { + const auto *paramMapping = mapping->params[i]; + if (paramMapping->wkt1_name && + (metadata::Identifier::isEquivalentName(paramMapping->wkt1_name, + wkt1_name.c_str()) || + areEquivalentParameters(paramMapping->wkt1_name, wkt1_name))) { + return paramMapping; + } + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +std::vector<const ESRIMethodMapping *> +getMappingsFromESRI(const std::string &esri_name) { + std::vector<const ESRIMethodMapping *> res; + for (const auto &mapping : esriMappings) { + if (ci_equal(esri_name, mapping.esri_name)) { + res.push_back(&mapping); + } + } + return res; +} + +// --------------------------------------------------------------------------- + +static const ESRIMethodMapping *getESRIMapping(const std::string &wkt2_name, + int epsg_code) { + for (const auto &mapping : esriMappings) { + if ((epsg_code != 0 && mapping.epsg_code == epsg_code) || + ci_equal(wkt2_name, mapping.wkt2_name)) { + return &mapping; + } + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +static double getAccuracy(const std::vector<CoordinateOperationNNPtr> &ops); + +// Returns the accuracy of an operation, or -1 if unknown +static double getAccuracy(const CoordinateOperationNNPtr &op) { + + if (dynamic_cast<const Conversion *>(op.get())) { + // A conversion is perfectly accurate. + return 0.0; + } + + double accuracy = -1.0; + const auto &accuracies = op->coordinateOperationAccuracies(); + if (!accuracies.empty()) { + try { + accuracy = c_locale_stod(accuracies[0]->value()); + } catch (const std::exception &) { + } + } else { + auto concatenated = + dynamic_cast<const ConcatenatedOperation *>(op.get()); + if (concatenated) { + accuracy = getAccuracy(concatenated->operations()); + } + } + return accuracy; +} + +// --------------------------------------------------------------------------- + +// Returns the accuracy of a set of concantenated operations, or -1 if unknown +static double getAccuracy(const std::vector<CoordinateOperationNNPtr> &ops) { + double accuracy = -1.0; + for (const auto &subop : ops) { + const double subops_accuracy = getAccuracy(subop); + if (subops_accuracy < 0.0) { + return -1.0; + } + if (accuracy < 0.0) { + accuracy = 0.0; + } + accuracy += subops_accuracy; + } + return accuracy; +} + +// --------------------------------------------------------------------------- + +static metadata::ExtentPtr +getExtent(const std::vector<CoordinateOperationNNPtr> &ops, + bool conversionExtentIsWorld, bool &emptyIntersection); + +static metadata::ExtentPtr getExtent(const CoordinateOperationNNPtr &op, + bool conversionExtentIsWorld, + bool &emptyIntersection) { + auto conv = dynamic_cast<const Conversion *>(op.get()); + if (conv) { + emptyIntersection = false; + return metadata::Extent::WORLD; + } + const auto &domains = op->domains(); + if (!domains.empty()) { + emptyIntersection = false; + return domains[0]->domainOfValidity(); + } + auto concatenated = dynamic_cast<const ConcatenatedOperation *>(op.get()); + if (!concatenated) { + emptyIntersection = false; + return nullptr; + } + return getExtent(concatenated->operations(), conversionExtentIsWorld, + emptyIntersection); +} + +// --------------------------------------------------------------------------- + +static const metadata::ExtentPtr nullExtent{}; + +static const metadata::ExtentPtr &getExtent(const crs::CRSNNPtr &crs) { + const auto &domains = crs->domains(); + if (!domains.empty()) { + return domains[0]->domainOfValidity(); + } + return nullExtent; +} + +// --------------------------------------------------------------------------- + +static metadata::ExtentPtr +getExtent(const std::vector<CoordinateOperationNNPtr> &ops, + bool conversionExtentIsWorld, bool &emptyIntersection) { + metadata::ExtentPtr res = nullptr; + for (const auto &subop : ops) { + + const auto &subExtent = + getExtent(subop, conversionExtentIsWorld, emptyIntersection); + if (!subExtent) { + if (emptyIntersection) { + return nullptr; + } + continue; + } + if (res == nullptr) { + res = subExtent; + } else { + res = res->intersection(NN_NO_CHECK(subExtent)); + if (!res) { + emptyIntersection = true; + return nullptr; + } + } + } + emptyIntersection = false; + return res; +} + +// --------------------------------------------------------------------------- + +static double getPseudoArea(const metadata::ExtentPtr &extent) { + if (!extent) + return 0.0; + const auto &geographicElements = extent->geographicElements(); + if (geographicElements.empty()) + return 0.0; + auto bbox = dynamic_cast<const metadata::GeographicBoundingBox *>( + geographicElements[0].get()); + if (!bbox) + return 0; + double w = bbox->westBoundLongitude(); + double s = bbox->southBoundLatitude(); + double e = bbox->eastBoundLongitude(); + double n = bbox->northBoundLatitude(); + if (w > e) { + e += 360.0; + } + // Integrate cos(lat) between south_lat and north_lat + return (e - w) * (std::sin(common::Angle(n).getSIValue()) - + std::sin(common::Angle(s).getSIValue())); +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct CoordinateOperation::Private { + util::optional<std::string> operationVersion_{}; + std::vector<metadata::PositionalAccuracyNNPtr> + coordinateOperationAccuracies_{}; + std::weak_ptr<crs::CRS> sourceCRSWeak_{}; + std::weak_ptr<crs::CRS> targetCRSWeak_{}; + crs::CRSPtr interpolationCRS_{}; + util::optional<common::DataEpoch> sourceCoordinateEpoch_{}; + util::optional<common::DataEpoch> targetCoordinateEpoch_{}; + + // do not set this for a ProjectedCRS.definingConversion + struct CRSStrongRef { + crs::CRSNNPtr sourceCRS_; + crs::CRSNNPtr targetCRS_; + CRSStrongRef(const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn) + : sourceCRS_(sourceCRSIn), targetCRS_(targetCRSIn) {} + }; + std::unique_ptr<CRSStrongRef> strongRef_{}; + + Private() = default; + Private(const Private &other) + : operationVersion_(other.operationVersion_), + coordinateOperationAccuracies_(other.coordinateOperationAccuracies_), + sourceCRSWeak_(other.sourceCRSWeak_), + targetCRSWeak_(other.targetCRSWeak_), + interpolationCRS_(other.interpolationCRS_), + sourceCoordinateEpoch_(other.sourceCoordinateEpoch_), + targetCoordinateEpoch_(other.targetCoordinateEpoch_), + strongRef_(other.strongRef_ ? internal::make_unique<CRSStrongRef>( + *(other.strongRef_)) + : nullptr) {} + + Private &operator=(const Private &) = delete; +}; + +// --------------------------------------------------------------------------- + +GridDescription::GridDescription() = default; + +GridDescription::~GridDescription() = default; + +GridDescription::GridDescription(const GridDescription &) = default; + +GridDescription::GridDescription(GridDescription &&) noexcept = default; + +//! @endcond + +// --------------------------------------------------------------------------- + +CoordinateOperation::CoordinateOperation() + : d(internal::make_unique<Private>()) {} + +// --------------------------------------------------------------------------- + +CoordinateOperation::CoordinateOperation(const CoordinateOperation &other) + : ObjectUsage(other), d(internal::make_unique<Private>(*other.d)) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +CoordinateOperation::~CoordinateOperation() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the version of the coordinate transformation (i.e. + * instantiation + * due to the stochastic nature of the parameters). + * + * Mandatory when describing a coordinate transformation or point motion + * operation, and should not be supplied for a coordinate conversion. + * + * @return version or empty. + */ +const util::optional<std::string> & +CoordinateOperation::operationVersion() const { + return d->operationVersion_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return estimate(s) of the impact of this coordinate operation on + * point accuracy. + * + * Gives position error estimates for target coordinates of this coordinate + * operation, assuming no errors in source coordinates. + * + * @return estimate(s) or empty vector. + */ +const std::vector<metadata::PositionalAccuracyNNPtr> & +CoordinateOperation::coordinateOperationAccuracies() const { + return d->coordinateOperationAccuracies_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the source CRS of this coordinate operation. + * + * This should not be null, expect for of a derivingConversion of a DerivedCRS + * when the owning DerivedCRS has been destroyed. + * + * @return source CRS, or null. + */ +const crs::CRSPtr CoordinateOperation::sourceCRS() const { + return d->sourceCRSWeak_.lock(); +} + +// --------------------------------------------------------------------------- + +/** \brief Return the target CRS of this coordinate operation. + * + * This should not be null, expect for of a derivingConversion of a DerivedCRS + * when the owning DerivedCRS has been destroyed. + * + * @return target CRS, or null. + */ +const crs::CRSPtr CoordinateOperation::targetCRS() const { + return d->targetCRSWeak_.lock(); +} + +// --------------------------------------------------------------------------- + +/** \brief Return the interpolation CRS of this coordinate operation. + * + * @return interpolation CRS, or null. + */ +const crs::CRSPtr &CoordinateOperation::interpolationCRS() const { + return d->interpolationCRS_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the source epoch of coordinates. + * + * @return source epoch of coordinates, or empty. + */ +const util::optional<common::DataEpoch> & +CoordinateOperation::sourceCoordinateEpoch() const { + return d->sourceCoordinateEpoch_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the target epoch of coordinates. + * + * @return target epoch of coordinates, or empty. + */ +const util::optional<common::DataEpoch> & +CoordinateOperation::targetCoordinateEpoch() const { + return d->targetCoordinateEpoch_; +} + +// --------------------------------------------------------------------------- + +void CoordinateOperation::setWeakSourceTargetCRS( + std::weak_ptr<crs::CRS> sourceCRSIn, std::weak_ptr<crs::CRS> targetCRSIn) { + d->sourceCRSWeak_ = sourceCRSIn; + d->targetCRSWeak_ = targetCRSIn; +} + +// --------------------------------------------------------------------------- + +void CoordinateOperation::setCRSs(const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, + const crs::CRSPtr &interpolationCRSIn) { + d->strongRef_ = + internal::make_unique<Private::CRSStrongRef>(sourceCRSIn, targetCRSIn); + d->sourceCRSWeak_ = sourceCRSIn.as_nullable(); + d->targetCRSWeak_ = targetCRSIn.as_nullable(); + d->interpolationCRS_ = interpolationCRSIn; +} +// --------------------------------------------------------------------------- + +void CoordinateOperation::setCRSs(const CoordinateOperation *in, + bool inverseSourceTarget) { + auto l_sourceCRS = in->sourceCRS(); + auto l_targetCRS = in->targetCRS(); + if (l_sourceCRS && l_targetCRS) { + auto nn_sourceCRS = NN_NO_CHECK(l_sourceCRS); + auto nn_targetCRS = NN_NO_CHECK(l_targetCRS); + if (inverseSourceTarget) { + setCRSs(nn_targetCRS, nn_sourceCRS, in->interpolationCRS()); + } else { + setCRSs(nn_sourceCRS, nn_targetCRS, in->interpolationCRS()); + } + } +} + +// --------------------------------------------------------------------------- + +void CoordinateOperation::setAccuracies( + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + d->coordinateOperationAccuracies_ = accuracies; +} + +// --------------------------------------------------------------------------- + +/** \brief Return whether a coordinate operation can be instanciated as + * a PROJ pipeline, checking in particular that referenced grids are + * available. + */ +bool CoordinateOperation::isPROJInstanciable( + const io::DatabaseContextPtr &databaseContext) const { + try { + exportToPROJString(io::PROJStringFormatter::create().get()); + } catch (const std::exception &) { + return false; + } + for (const auto &gridDesc : gridsNeeded(databaseContext)) { + if (!gridDesc.available) { + return false; + } + } + return true; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct OperationMethod::Private { + util::optional<std::string> formula_{}; + util::optional<metadata::Citation> formulaCitation_{}; + std::vector<GeneralOperationParameterNNPtr> parameters_{}; +}; +//! @endcond + +// --------------------------------------------------------------------------- + +OperationMethod::OperationMethod() : d(internal::make_unique<Private>()) {} + +// --------------------------------------------------------------------------- + +OperationMethod::OperationMethod(const OperationMethod &other) + : IdentifiedObject(other), d(internal::make_unique<Private>(*other.d)) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +OperationMethod::~OperationMethod() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the formula(s) or procedure used by this coordinate operation + * method. + * + * This may be a reference to a publication (in which case use + * formulaCitation()). + * + * Note that the operation method may not be analytic, in which case this + * attribute references or contains the procedure, not an analytic formula. + * + * @return the formula, or empty. + */ +const util::optional<std::string> &OperationMethod::formula() PROJ_CONST_DEFN { + return d->formula_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return a reference to a publication giving the formula(s) or + * procedure + * used by the coordinate operation method. + * + * @return the formula citation, or empty. + */ +const util::optional<metadata::Citation> & +OperationMethod::formulaCitation() PROJ_CONST_DEFN { + return d->formulaCitation_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the parameters of this operation method. + * + * @return the parameters. + */ +const std::vector<GeneralOperationParameterNNPtr> & +OperationMethod::parameters() PROJ_CONST_DEFN { + return d->parameters_; +} + +// --------------------------------------------------------------------------- + +/** \brief Instantiate a operation method from a vector of + * GeneralOperationParameter. + * + * @param properties See \ref general_properties. At minimum the name should be + * defined. + * @param parameters Vector of GeneralOperationParameterNNPtr. + * @return a new OperationMethod. + */ +OperationMethodNNPtr OperationMethod::create( + const util::PropertyMap &properties, + const std::vector<GeneralOperationParameterNNPtr> ¶meters) { + OperationMethodNNPtr method( + OperationMethod::nn_make_shared<OperationMethod>()); + method->assignSelf(method); + method->setProperties(properties); + method->d->parameters_ = parameters; + return method; +} + +// --------------------------------------------------------------------------- + +/** \brief Instantiate a operation method from a vector of OperationParameter. + * + * @param properties See \ref general_properties. At minimum the name should be + * defined. + * @param parameters Vector of OperationParameterNNPtr. + * @return a new OperationMethod. + */ +OperationMethodNNPtr OperationMethod::create( + const util::PropertyMap &properties, + const std::vector<OperationParameterNNPtr> ¶meters) { + std::vector<GeneralOperationParameterNNPtr> parametersGeneral; + parametersGeneral.reserve(parameters.size()); + for (const auto &p : parameters) { + parametersGeneral.push_back(p); + } + return create(properties, parametersGeneral); +} + +// --------------------------------------------------------------------------- + +/** \brief Return the EPSG code, either directly, or through the name + * @return code, or 0 if not found + */ +int OperationMethod::getEPSGCode() PROJ_CONST_DEFN { + int epsg_code = IdentifiedObject::getEPSGCode(); + if (epsg_code == 0) { + const auto &l_name = nameStr(); + for (const auto &tuple : methodNameCodes) { + if (metadata::Identifier::isEquivalentName(l_name.c_str(), + tuple.name)) { + return tuple.epsg_code; + } + } + } + return epsg_code; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void OperationMethod::_exportToWKT(io::WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + formatter->startNode(isWKT2 ? io::WKTConstants::METHOD + : io::WKTConstants::PROJECTION, + !identifiers().empty()); + std::string l_name(nameStr()); + if (!isWKT2) { + const MethodMapping *mapping = getMapping(this); + if (mapping == nullptr) { + l_name = replaceAll(l_name, " ", "_"); + } else { + if (mapping->wkt1_name == nullptr) { + throw io::FormattingException( + std::string("Unsupported conversion method: ") + + mapping->wkt2_name); + } + l_name = mapping->wkt1_name; + } + } + formatter->addQuotedString(l_name); + if (formatter->outputId()) { + formatID(formatter); + } + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool OperationMethod::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherOM = dynamic_cast<const OperationMethod *>(other); + if (otherOM == nullptr || + !IdentifiedObject::_isEquivalentTo(other, criterion)) { + return false; + } + // TODO test formula and formulaCitation + const auto ¶ms = parameters(); + const auto &otherParams = otherOM->parameters(); + const auto paramsSize = params.size(); + if (paramsSize != otherParams.size()) { + return false; + } + if (criterion == util::IComparable::Criterion::STRICT) { + for (size_t i = 0; i < paramsSize; i++) { + if (!params[i]->_isEquivalentTo(otherParams[i].get(), criterion)) { + return false; + } + } + } else { + std::vector<bool> candidateIndices(paramsSize, true); + for (size_t i = 0; i < paramsSize; i++) { + bool found = false; + for (size_t j = 0; j < paramsSize; j++) { + if (candidateIndices[j] && + params[i]->_isEquivalentTo(otherParams[j].get(), + criterion)) { + candidateIndices[j] = false; + found = true; + break; + } + } + if (!found) { + return false; + } + } + } + return true; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct GeneralParameterValue::Private {}; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +GeneralParameterValue::GeneralParameterValue() : d(nullptr) {} + +// --------------------------------------------------------------------------- + +GeneralParameterValue::GeneralParameterValue(const GeneralParameterValue &) + : d(nullptr) {} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +GeneralParameterValue::~GeneralParameterValue() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct OperationParameterValue::Private { + OperationParameterNNPtr parameter; + ParameterValueNNPtr parameterValue; + + Private(const OperationParameterNNPtr ¶meterIn, + const ParameterValueNNPtr &valueIn) + : parameter(parameterIn), parameterValue(valueIn) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +OperationParameterValue::OperationParameterValue( + const OperationParameterValue &other) + : GeneralParameterValue(other), + d(internal::make_unique<Private>(*other.d)) {} + +// --------------------------------------------------------------------------- + +OperationParameterValue::OperationParameterValue( + const OperationParameterNNPtr ¶meterIn, + const ParameterValueNNPtr &valueIn) + : GeneralParameterValue(), + d(internal::make_unique<Private>(parameterIn, valueIn)) {} + +// --------------------------------------------------------------------------- + +/** \brief Instantiate a OperationParameterValue. + * + * @param parameterIn Parameter (definition). + * @param valueIn Parameter value. + * @return a new OperationParameterValue. + */ +OperationParameterValueNNPtr +OperationParameterValue::create(const OperationParameterNNPtr ¶meterIn, + const ParameterValueNNPtr &valueIn) { + return OperationParameterValue::nn_make_shared<OperationParameterValue>( + parameterIn, valueIn); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +OperationParameterValue::~OperationParameterValue() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the parameter (definition) + * + * @return the parameter (definition). + */ +const OperationParameterNNPtr & +OperationParameterValue::parameter() PROJ_CONST_DEFN { + return d->parameter; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the parameter value. + * + * @return the parameter value. + */ +const ParameterValueNNPtr & +OperationParameterValue::parameterValue() PROJ_CONST_DEFN { + return d->parameterValue; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void OperationParameterValue::_exportToWKT( + // cppcheck-suppress passedByValue + io::WKTFormatter *formatter) const { + _exportToWKT(formatter, nullptr); +} + +void OperationParameterValue::_exportToWKT(io::WKTFormatter *formatter, + const MethodMapping *mapping) const { + const ParamMapping *paramMapping = + mapping ? getMapping(mapping, this) : nullptr; + if (paramMapping && paramMapping->wkt1_name == nullptr) { + return; + } + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + if (isWKT2 && parameterValue()->type() == ParameterValue::Type::FILENAME) { + formatter->startNode(io::WKTConstants::PARAMETERFILE, + !parameter()->identifiers().empty()); + } else { + formatter->startNode(io::WKTConstants::PARAMETER, + !parameter()->identifiers().empty()); + } + if (paramMapping) { + formatter->addQuotedString(paramMapping->wkt1_name); + } else { + formatter->addQuotedString(parameter()->nameStr()); + } + parameterValue()->_exportToWKT(formatter); + if (formatter->outputId()) { + parameter()->formatID(formatter); + } + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +/** Utility method used on WKT2 import to convert from abridged transformation + * to "normal" transformation parameters. + */ +bool OperationParameterValue::convertFromAbridged( + const std::string ¶mName, double &val, + const common::UnitOfMeasure *&unit, int ¶mEPSGCode) { + if (metadata::Identifier::isEquivalentName( + paramName.c_str(), EPSG_NAME_PARAMETER_X_AXIS_TRANSLATION) || + paramEPSGCode == EPSG_CODE_PARAMETER_X_AXIS_TRANSLATION) { + unit = &common::UnitOfMeasure::METRE; + paramEPSGCode = EPSG_CODE_PARAMETER_X_AXIS_TRANSLATION; + return true; + } else if (metadata::Identifier::isEquivalentName( + paramName.c_str(), EPSG_NAME_PARAMETER_Y_AXIS_TRANSLATION) || + paramEPSGCode == EPSG_CODE_PARAMETER_Y_AXIS_TRANSLATION) { + unit = &common::UnitOfMeasure::METRE; + paramEPSGCode = EPSG_CODE_PARAMETER_Y_AXIS_TRANSLATION; + return true; + } else if (metadata::Identifier::isEquivalentName( + paramName.c_str(), EPSG_NAME_PARAMETER_Z_AXIS_TRANSLATION) || + paramEPSGCode == EPSG_CODE_PARAMETER_Z_AXIS_TRANSLATION) { + unit = &common::UnitOfMeasure::METRE; + paramEPSGCode = EPSG_CODE_PARAMETER_Z_AXIS_TRANSLATION; + return true; + } else if (metadata::Identifier::isEquivalentName( + paramName.c_str(), EPSG_NAME_PARAMETER_X_AXIS_ROTATION) || + paramEPSGCode == EPSG_CODE_PARAMETER_X_AXIS_ROTATION) { + unit = &common::UnitOfMeasure::ARC_SECOND; + paramEPSGCode = EPSG_CODE_PARAMETER_X_AXIS_ROTATION; + return true; + } else if (metadata::Identifier::isEquivalentName( + paramName.c_str(), EPSG_NAME_PARAMETER_Y_AXIS_ROTATION) || + paramEPSGCode == EPSG_CODE_PARAMETER_Y_AXIS_ROTATION) { + unit = &common::UnitOfMeasure::ARC_SECOND; + paramEPSGCode = EPSG_CODE_PARAMETER_Y_AXIS_ROTATION; + return true; + + } else if (metadata::Identifier::isEquivalentName( + paramName.c_str(), EPSG_NAME_PARAMETER_Z_AXIS_ROTATION) || + paramEPSGCode == EPSG_CODE_PARAMETER_Z_AXIS_ROTATION) { + unit = &common::UnitOfMeasure::ARC_SECOND; + paramEPSGCode = EPSG_CODE_PARAMETER_Z_AXIS_ROTATION; + return true; + + } else if (metadata::Identifier::isEquivalentName( + paramName.c_str(), EPSG_NAME_PARAMETER_SCALE_DIFFERENCE) || + paramEPSGCode == EPSG_CODE_PARAMETER_SCALE_DIFFERENCE) { + val = (val - 1.0) * 1e6; + unit = &common::UnitOfMeasure::PARTS_PER_MILLION; + paramEPSGCode = EPSG_CODE_PARAMETER_SCALE_DIFFERENCE; + return true; + } + return false; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool OperationParameterValue::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherOPV = dynamic_cast<const OperationParameterValue *>(other); + if (otherOPV == nullptr) { + return false; + } + return d->parameter->_isEquivalentTo(otherOPV->d->parameter.get(), + criterion) && + d->parameterValue->_isEquivalentTo(otherOPV->d->parameterValue.get(), + criterion); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct GeneralOperationParameter::Private {}; +//! @endcond + +// --------------------------------------------------------------------------- + +GeneralOperationParameter::GeneralOperationParameter() : d(nullptr) {} + +// --------------------------------------------------------------------------- + +GeneralOperationParameter::GeneralOperationParameter( + const GeneralOperationParameter &other) + : IdentifiedObject(other), d(nullptr) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +GeneralOperationParameter::~GeneralOperationParameter() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct OperationParameter::Private {}; +//! @endcond + +// --------------------------------------------------------------------------- + +OperationParameter::OperationParameter() : d(nullptr) {} + +// --------------------------------------------------------------------------- + +OperationParameter::OperationParameter(const OperationParameter &other) + : GeneralOperationParameter(other), d(nullptr) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +OperationParameter::~OperationParameter() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instantiate a OperationParameter. + * + * @param properties See \ref general_properties. At minimum the name should be + * defined. + * @return a new OperationParameter. + */ +OperationParameterNNPtr +OperationParameter::create(const util::PropertyMap &properties) { + OperationParameterNNPtr op( + OperationParameter::nn_make_shared<OperationParameter>()); + op->assignSelf(op); + op->setProperties(properties); + return op; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool OperationParameter::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherOP = dynamic_cast<const OperationParameter *>(other); + return otherOP != nullptr && + IdentifiedObject::_isEquivalentTo(other, criterion); +} +//! @endcond + +// --------------------------------------------------------------------------- + +void OperationParameter::_exportToWKT(io::WKTFormatter *) const {} + +// --------------------------------------------------------------------------- + +/** \brief Return the name of a parameter designed by its EPSG code + * @return name, or nullptr if not found + */ +const char *OperationParameter::getNameForEPSGCode(int epsg_code) noexcept { + for (const auto &tuple : paramNameCodes) { + if (tuple.epsg_code == epsg_code) { + return tuple.name; + } + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the EPSG code, either directly, or through the name + * @return code, or 0 if not found + */ +int OperationParameter::getEPSGCode() PROJ_CONST_DEFN { + int epsg_code = IdentifiedObject::getEPSGCode(); + if (epsg_code == 0) { + const auto &l_name = nameStr(); + for (const auto &tuple : paramNameCodes) { + if (metadata::Identifier::isEquivalentName(l_name.c_str(), + tuple.name)) { + return tuple.epsg_code; + } + } + } + return epsg_code; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct SingleOperation::Private { + std::vector<GeneralParameterValueNNPtr> parameterValues_{}; + OperationMethodNNPtr method_; + + explicit Private(const OperationMethodNNPtr &methodIn) + : method_(methodIn) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +SingleOperation::SingleOperation(const OperationMethodNNPtr &methodIn) + : d(internal::make_unique<Private>(methodIn)) {} + +// --------------------------------------------------------------------------- + +SingleOperation::SingleOperation(const SingleOperation &other) + : +#if !defined(COMPILER_WARNS_ABOUT_ABSTRACT_VBASE_INIT) + CoordinateOperation(other), +#endif + d(internal::make_unique<Private>(*other.d)) { +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +SingleOperation::~SingleOperation() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the parameter values. + * + * @return the parameter values. + */ +const std::vector<GeneralParameterValueNNPtr> & +SingleOperation::parameterValues() PROJ_CONST_DEFN { + return d->parameterValues_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the operation method associated to the operation. + * + * @return the operation method. + */ +const OperationMethodNNPtr &SingleOperation::method() PROJ_CONST_DEFN { + return d->method_; +} + +// --------------------------------------------------------------------------- + +void SingleOperation::setParameterValues( + const std::vector<GeneralParameterValueNNPtr> &values) { + d->parameterValues_ = values; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static const ParameterValuePtr nullParameterValue; +//! @endcond + +/** \brief Return the parameter value corresponding to a parameter name or + * EPSG code + * + * @param paramName the parameter name (or empty, in which case epsg_code + * should be non zero) + * @param epsg_code the parameter EPSG code (possibly zero) + * @return the value, or nullptr if not found. + */ +const ParameterValuePtr & +SingleOperation::parameterValue(const std::string ¶mName, + int epsg_code) const noexcept { + for (const auto &genOpParamvalue : parameterValues()) { + auto opParamvalue = dynamic_cast<const OperationParameterValue *>( + genOpParamvalue.get()); + if (opParamvalue) { + const auto ¶meter = opParamvalue->parameter(); + if ((epsg_code != 0 && parameter->getEPSGCode() == epsg_code) || + ci_equal(paramName, parameter->nameStr())) { + return opParamvalue->parameterValue(); + } + } + } + return nullParameterValue; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the parameter value corresponding to a EPSG code + * + * @param epsg_code the parameter EPSG code + * @return the value, or nullptr if not found. + */ +const ParameterValuePtr &SingleOperation::parameterValue(int epsg_code) const + noexcept { + for (const auto &genOpParamvalue : parameterValues()) { + auto opParamvalue = dynamic_cast<const OperationParameterValue *>( + genOpParamvalue.get()); + if (opParamvalue) { + const auto ¶meter = opParamvalue->parameter(); + if (parameter->getEPSGCode() == epsg_code) { + return opParamvalue->parameterValue(); + } + } + } + return nullParameterValue; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static const common::Measure nullMeasure; +//! @endcond + +/** \brief Return the parameter value, as a measure, corresponding to a + * parameter name or EPSG code + * + * @param paramName the parameter name (or empty, in which case epsg_code + * should be non zero) + * @param epsg_code the parameter EPSG code (possibly zero) + * @return the measure, or the empty Measure() object if not found. + */ +const common::Measure & +SingleOperation::parameterValueMeasure(const std::string ¶mName, + int epsg_code) const noexcept { + const auto &val = parameterValue(paramName, epsg_code); + if (val && val->type() == ParameterValue::Type::MEASURE) { + return val->value(); + } + return nullMeasure; +} + +/** \brief Return the parameter value, as a measure, corresponding to a + * EPSG code + * + * @param epsg_code the parameter EPSG code + * @return the measure, or the empty Measure() object if not found. + */ +const common::Measure & +SingleOperation::parameterValueMeasure(int epsg_code) const noexcept { + const auto &val = parameterValue(epsg_code); + if (val && val->type() == ParameterValue::Type::MEASURE) { + return val->value(); + } + return nullMeasure; +} + +//! @cond Doxygen_Suppress + +double SingleOperation::parameterValueNumericAsSI(int epsg_code) const + noexcept { + const auto &val = parameterValue(epsg_code); + if (val && val->type() == ParameterValue::Type::MEASURE) { + return val->value().getSIValue(); + } + return 0.0; +} + +double SingleOperation::parameterValueNumeric( + int epsg_code, const common::UnitOfMeasure &targetUnit) const noexcept { + const auto &val = parameterValue(epsg_code); + if (val && val->type() == ParameterValue::Type::MEASURE) { + return val->value().convertToUnit(targetUnit); + } + return 0.0; +} + +//! @endcond +// --------------------------------------------------------------------------- + +/** \brief Instanciate a PROJ-based single operation. + * + * \note The operation might internally be a pipeline chaining several + * operations. + * The use of the SingleOperation modeling here is mostly to be able to get + * the PROJ string as a parameter. + * + * @param properties Properties + * @param PROJString the PROJ string. + * @param sourceCRS source CRS (might be null). + * @param targetCRS target CRS (might be null). + * @param accuracies Vector of positional accuracy (might be empty). + * @return the new instance + */ +SingleOperationNNPtr SingleOperation::createPROJBased( + const util::PropertyMap &properties, const std::string &PROJString, + const crs::CRSPtr &sourceCRS, const crs::CRSPtr &targetCRS, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + return util::nn_static_pointer_cast<SingleOperation>( + PROJBasedOperation::create(properties, PROJString, sourceCRS, targetCRS, + accuracies)); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static SingleOperationNNPtr createPROJBased( + const util::PropertyMap &properties, + const io::IPROJStringExportableNNPtr &projExportable, + const crs::CRSNNPtr &sourceCRS, const crs::CRSNNPtr &targetCRS, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies = + std::vector<metadata::PositionalAccuracyNNPtr>()) { + return util::nn_static_pointer_cast<SingleOperation>( + PROJBasedOperation::create(properties, projExportable, false, sourceCRS, + targetCRS, accuracies)); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool SingleOperation::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherSO = dynamic_cast<const SingleOperation *>(other); + if (otherSO == nullptr || + (criterion == util::IComparable::Criterion::STRICT && + !ObjectUsage::_isEquivalentTo(other, criterion))) { + return false; + } + + const int methodEPSGCode = d->method_->getEPSGCode(); + if (!d->method_->_isEquivalentTo(otherSO->d->method_.get(), criterion)) { + if (criterion == util::IComparable::Criterion::EQUIVALENT) { + // _1SP methods can sometimes be equivalent to _2SP ones + // Check it by using convertToOtherMethod() + + const int otherMethodEPSGCode = otherSO->d->method_->getEPSGCode(); + if (methodEPSGCode == + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP && + otherMethodEPSGCode == + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP) { + // Convert from 2SP to 1SP as the other direction has more + // degree of liberties. + return otherSO->_isEquivalentTo(this, criterion); + } else if ((methodEPSGCode == EPSG_CODE_METHOD_MERCATOR_VARIANT_A && + otherMethodEPSGCode == + EPSG_CODE_METHOD_MERCATOR_VARIANT_B) || + (methodEPSGCode == EPSG_CODE_METHOD_MERCATOR_VARIANT_B && + otherMethodEPSGCode == + EPSG_CODE_METHOD_MERCATOR_VARIANT_A) || + (methodEPSGCode == + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP && + otherMethodEPSGCode == + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP)) { + auto conv = dynamic_cast<const Conversion *>(this); + if (conv) { + auto eqConv = + conv->convertToOtherMethod(otherMethodEPSGCode); + if (eqConv) { + return eqConv->_isEquivalentTo(other, criterion); + } + } + } + } + + return false; + } + + const auto &values = d->parameterValues_; + const auto &otherValues = otherSO->d->parameterValues_; + const auto valuesSize = values.size(); + if (valuesSize != otherValues.size()) { + return false; + } + if (criterion == util::IComparable::Criterion::STRICT) { + for (size_t i = 0; i < valuesSize; i++) { + if (!values[i]->_isEquivalentTo(otherValues[i].get(), criterion)) { + return false; + } + } + return true; + } + + std::vector<bool> candidateIndices(valuesSize, true); + bool equivalent = true; + for (size_t i = 0; i < valuesSize; i++) { + bool found = false; + for (size_t j = 0; j < valuesSize; j++) { + if (candidateIndices[j] && + values[i]->_isEquivalentTo(otherValues[j].get(), criterion)) { + candidateIndices[j] = false; + found = true; + break; + } + } + if (!found) { + equivalent = false; + if (methodEPSGCode == + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP) { + // For LCC_2SP, the standard parallels can be switched and + // this will result in the same result. + auto opParamvalue = + dynamic_cast<const OperationParameterValue *>( + values[i].get()); + if (opParamvalue) { + const int paramEPSGCode = + opParamvalue->parameter()->getEPSGCode(); + if (paramEPSGCode == + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL || + paramEPSGCode == + EPSG_CODE_PARAMETER_LATITUDE_2ND_STD_PARALLEL) { + auto value_1st = parameterValue( + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL); + auto value_2nd = parameterValue( + EPSG_CODE_PARAMETER_LATITUDE_2ND_STD_PARALLEL); + if (value_1st && value_2nd) { + equivalent = + value_1st->_isEquivalentTo( + otherSO + ->parameterValue( + EPSG_CODE_PARAMETER_LATITUDE_2ND_STD_PARALLEL) + .get(), + criterion) && + value_2nd->_isEquivalentTo( + otherSO + ->parameterValue( + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL) + .get(), + criterion); + } + } + } + } + if (!equivalent) { + break; + } + } + } + + // Equivalent formulations of 2SP can have different parameters + // Then convert to 1SP and compare. + if (!equivalent && + methodEPSGCode == EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP) { + auto conv = dynamic_cast<const Conversion *>(this); + auto otherConv = dynamic_cast<const Conversion *>(other); + if (conv && otherConv) { + auto thisAs1SP = conv->convertToOtherMethod( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP); + auto otherAs1SP = otherConv->convertToOtherMethod( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP); + if (thisAs1SP && otherAs1SP) { + equivalent = + thisAs1SP->_isEquivalentTo(otherAs1SP.get(), criterion); + } + } + } + return equivalent; +} +//! @endcond + +// --------------------------------------------------------------------------- + +std::set<GridDescription> SingleOperation::gridsNeeded( + const io::DatabaseContextPtr &databaseContext) const { + std::set<GridDescription> res; + for (const auto &genOpParamvalue : parameterValues()) { + auto opParamvalue = dynamic_cast<const OperationParameterValue *>( + genOpParamvalue.get()); + if (opParamvalue) { + const auto &value = opParamvalue->parameterValue(); + if (value->type() == ParameterValue::Type::FILENAME) { + GridDescription desc; + desc.shortName = value->valueFile(); + if (databaseContext) { + databaseContext->lookForGridInfo( + desc.shortName, desc.fullName, desc.packageName, + desc.url, desc.directDownload, desc.openLicense, + desc.available); + } + res.insert(desc); + } + } + } + return res; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct ParameterValue::Private { + ParameterValue::Type type_{ParameterValue::Type::STRING}; + std::unique_ptr<common::Measure> measure_{}; + std::unique_ptr<std::string> stringValue_{}; + int integerValue_{}; + bool booleanValue_{}; + + explicit Private(const common::Measure &valueIn) + : type_(ParameterValue::Type::MEASURE), + measure_(internal::make_unique<common::Measure>(valueIn)) {} + + Private(const std::string &stringValueIn, ParameterValue::Type typeIn) + : type_(typeIn), + stringValue_(internal::make_unique<std::string>(stringValueIn)) {} + + explicit Private(int integerValueIn) + : type_(ParameterValue::Type::INTEGER), integerValue_(integerValueIn) {} + + explicit Private(bool booleanValueIn) + : type_(ParameterValue::Type::BOOLEAN), booleanValue_(booleanValueIn) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +ParameterValue::~ParameterValue() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +ParameterValue::ParameterValue(const common::Measure &measureIn) + : d(internal::make_unique<Private>(measureIn)) {} + +// --------------------------------------------------------------------------- + +ParameterValue::ParameterValue(const std::string &stringValueIn, + ParameterValue::Type typeIn) + : d(internal::make_unique<Private>(stringValueIn, typeIn)) {} + +// --------------------------------------------------------------------------- + +ParameterValue::ParameterValue(int integerValueIn) + : d(internal::make_unique<Private>(integerValueIn)) {} + +// --------------------------------------------------------------------------- + +ParameterValue::ParameterValue(bool booleanValueIn) + : d(internal::make_unique<Private>(booleanValueIn)) {} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ParameterValue from a Measure (i.e. a value associated + * with a + * unit) + * + * @return a new ParameterValue. + */ +ParameterValueNNPtr ParameterValue::create(const common::Measure &measureIn) { + return ParameterValue::nn_make_shared<ParameterValue>(measureIn); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ParameterValue from a string value. + * + * @return a new ParameterValue. + */ +ParameterValueNNPtr ParameterValue::create(const char *stringValueIn) { + return ParameterValue::nn_make_shared<ParameterValue>( + std::string(stringValueIn), ParameterValue::Type::STRING); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ParameterValue from a string value. + * + * @return a new ParameterValue. + */ +ParameterValueNNPtr ParameterValue::create(const std::string &stringValueIn) { + return ParameterValue::nn_make_shared<ParameterValue>( + stringValueIn, ParameterValue::Type::STRING); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ParameterValue from a filename. + * + * @return a new ParameterValue. + */ +ParameterValueNNPtr +ParameterValue::createFilename(const std::string &stringValueIn) { + return ParameterValue::nn_make_shared<ParameterValue>( + stringValueIn, ParameterValue::Type::FILENAME); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ParameterValue from a integer value. + * + * @return a new ParameterValue. + */ +ParameterValueNNPtr ParameterValue::create(int integerValueIn) { + return ParameterValue::nn_make_shared<ParameterValue>(integerValueIn); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ParameterValue from a boolean value. + * + * @return a new ParameterValue. + */ +ParameterValueNNPtr ParameterValue::create(bool booleanValueIn) { + return ParameterValue::nn_make_shared<ParameterValue>(booleanValueIn); +} + +// --------------------------------------------------------------------------- + +/** \brief Returns the type of a parameter value. + * + * @return the type. + */ +const ParameterValue::Type &ParameterValue::type() PROJ_CONST_DEFN { + return d->type_; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns the value as a Measure (assumes type() == Type::MEASURE) + * @return the value as a Measure. + */ +const common::Measure &ParameterValue::value() PROJ_CONST_DEFN { + return *d->measure_; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns the value as a string (assumes type() == Type::STRING) + * @return the value as a string. + */ +const std::string &ParameterValue::stringValue() PROJ_CONST_DEFN { + return *d->stringValue_; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns the value as a filename (assumes type() == Type::FILENAME) + * @return the value as a filename. + */ +const std::string &ParameterValue::valueFile() PROJ_CONST_DEFN { + return *d->stringValue_; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns the value as a integer (assumes type() == Type::INTEGER) + * @return the value as a integer. + */ +int ParameterValue::integerValue() PROJ_CONST_DEFN { return d->integerValue_; } + +// --------------------------------------------------------------------------- + +/** \brief Returns the value as a boolean (assumes type() == Type::BOOLEAN) + * @return the value as a boolean. + */ +bool ParameterValue::booleanValue() PROJ_CONST_DEFN { return d->booleanValue_; } + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void ParameterValue::_exportToWKT(io::WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + + const auto &l_type = type(); + const auto &l_value = value(); + if (formatter->abridgedTransformation() && l_type == Type::MEASURE) { + const auto &unit = l_value.unit(); + const auto &unitType = unit.type(); + if (unitType == common::UnitOfMeasure::Type::LINEAR) { + formatter->add(l_value.getSIValue()); + } else if (unitType == common::UnitOfMeasure::Type::ANGULAR) { + formatter->add( + l_value.convertToUnit(common::UnitOfMeasure::ARC_SECOND)); + } else if (unit == common::UnitOfMeasure::PARTS_PER_MILLION) { + formatter->add(1.0 + l_value.value() * 1e-6); + } else { + formatter->add(l_value.value()); + } + } else if (l_type == Type::MEASURE) { + const auto &unit = l_value.unit(); + if (isWKT2) { + formatter->add(l_value.value()); + } else { + // In WKT1, as we don't output the natural unit, output to the + // registered linear / angular unit. + const auto &unitType = unit.type(); + if (unitType == common::UnitOfMeasure::Type::LINEAR) { + formatter->add( + l_value.convertToUnit(*(formatter->axisLinearUnit()))); + } else if (unitType == common::UnitOfMeasure::Type::ANGULAR) { + formatter->add( + l_value.convertToUnit(*(formatter->axisAngularUnit()))); + } else { + formatter->add(l_value.getSIValue()); + } + } + if (isWKT2 && unit != common::UnitOfMeasure::NONE) { + if (!formatter->primeMeridianOrParameterUnitOmittedIfSameAsAxis() || + (unit != common::UnitOfMeasure::SCALE_UNITY && + unit != *(formatter->axisLinearUnit()) && + unit != *(formatter->axisAngularUnit()))) { + unit._exportToWKT(formatter); + } + } + } else if (l_type == Type::STRING || l_type == Type::FILENAME) { + formatter->addQuotedString(stringValue()); + } else if (l_type == Type::INTEGER) { + formatter->add(integerValue()); + } else { + throw io::FormattingException("boolean parameter value not handled"); + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool ParameterValue::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherPV = dynamic_cast<const ParameterValue *>(other); + if (otherPV == nullptr) { + return false; + } + if (type() != otherPV->type()) { + return false; + } + switch (type()) { + case Type::MEASURE: { + return value()._isEquivalentTo(otherPV->value(), criterion); + } + + case Type::STRING: + case Type::FILENAME: { + return stringValue() == otherPV->stringValue(); + } + + case Type::INTEGER: { + return integerValue() == otherPV->integerValue(); + } + + case Type::BOOLEAN: { + return booleanValue() == otherPV->booleanValue(); + } + + default: { + assert(false); + break; + } + } + return true; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct Conversion::Private {}; +//! @endcond + +// --------------------------------------------------------------------------- + +Conversion::Conversion(const OperationMethodNNPtr &methodIn, + const std::vector<GeneralParameterValueNNPtr> &values) + : SingleOperation(methodIn), d(nullptr) { + setParameterValues(values); +} + +// --------------------------------------------------------------------------- + +Conversion::Conversion(const Conversion &other) + : CoordinateOperation(other), SingleOperation(other), d(nullptr) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +Conversion::~Conversion() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +ConversionNNPtr Conversion::shallowClone() const { + auto conv = Conversion::nn_make_shared<Conversion>(*this); + conv->assignSelf(conv); + conv->setCRSs(this, false); + return conv; +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a Conversion from a vector of GeneralParameterValue. + * + * @param properties See \ref general_properties. At minimum the name should be + * defined. + * @param methodIn the operation method. + * @param values the values. + * @return a new Conversion. + * @throws InvalidOperation + */ +ConversionNNPtr Conversion::create(const util::PropertyMap &properties, + const OperationMethodNNPtr &methodIn, + const std::vector<GeneralParameterValueNNPtr> + &values) // throw InvalidOperation +{ + if (methodIn->parameters().size() != values.size()) { + throw InvalidOperation( + "Inconsistent number of parameters and parameter values"); + } + auto conv = Conversion::nn_make_shared<Conversion>(methodIn, values); + conv->assignSelf(conv); + conv->setProperties(properties); + return conv; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a Conversion and its OperationMethod + * + * @param propertiesConversion See \ref general_properties of the conversion. + * At minimum the name should be defined. + * @param propertiesOperationMethod See \ref general_properties of the operation + * method. At minimum the name should be defined. + * @param parameters the operation parameters. + * @param values the operation values. Constraint: + * values.size() == parameters.size() + * @return a new Conversion. + * @throws InvalidOperation + */ +ConversionNNPtr Conversion::create( + const util::PropertyMap &propertiesConversion, + const util::PropertyMap &propertiesOperationMethod, + const std::vector<OperationParameterNNPtr> ¶meters, + const std::vector<ParameterValueNNPtr> &values) // throw InvalidOperation +{ + OperationMethodNNPtr op( + OperationMethod::create(propertiesOperationMethod, parameters)); + + if (parameters.size() != values.size()) { + throw InvalidOperation( + "Inconsistent number of parameters and parameter values"); + } + std::vector<GeneralParameterValueNNPtr> generalParameterValues; + generalParameterValues.reserve(values.size()); + for (size_t i = 0; i < values.size(); i++) { + generalParameterValues.push_back( + OperationParameterValue::create(parameters[i], values[i])); + } + return create(propertiesConversion, op, generalParameterValues); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +// --------------------------------------------------------------------------- + +static util::PropertyMap createMapNameEPSGCode(const std::string &name, + int code) { + return util::PropertyMap() + .set(common::IdentifiedObject::NAME_KEY, name) + .set(metadata::Identifier::CODESPACE_KEY, metadata::Identifier::EPSG) + .set(metadata::Identifier::CODE_KEY, code); +} + +// --------------------------------------------------------------------------- + +static util::PropertyMap createMapNameEPSGCode(const char *name, int code) { + return util::PropertyMap() + .set(common::IdentifiedObject::NAME_KEY, name) + .set(metadata::Identifier::CODESPACE_KEY, metadata::Identifier::EPSG) + .set(metadata::Identifier::CODE_KEY, code); +} + +// --------------------------------------------------------------------------- + +static util::PropertyMap createMethodMapNameEPSGCode(int code) { + const char *name = nullptr; + for (const auto &tuple : methodNameCodes) { + if (tuple.epsg_code == code) { + name = tuple.name; + break; + } + } + assert(name); + return createMapNameEPSGCode(name, code); +} + +// --------------------------------------------------------------------------- + +static util::PropertyMap +getUTMConversionProperty(const util::PropertyMap &properties, int zone, + bool north) { + if (properties.find(common::IdentifiedObject::NAME_KEY) == + properties.end()) { + std::string conversionName("UTM zone "); + conversionName += toString(zone); + conversionName += (north ? 'N' : 'S'); + + return createMapNameEPSGCode(conversionName, + (north ? 16000 : 17000) + zone); + } else { + return properties; + } +} + +// --------------------------------------------------------------------------- + +static util::PropertyMap +addDefaultNameIfNeeded(const util::PropertyMap &properties, + const std::string &defaultName) { + if (properties.find(common::IdentifiedObject::NAME_KEY) == + properties.end()) { + return util::PropertyMap(properties) + .set(common::IdentifiedObject::NAME_KEY, defaultName); + } else { + return properties; + } +} + +// --------------------------------------------------------------------------- + +static ConversionNNPtr +createConversion(const util::PropertyMap &properties, + const MethodMapping *mapping, + const std::vector<ParameterValueNNPtr> &values) { + + std::vector<OperationParameterNNPtr> parameters; + for (int i = 0; mapping->params[i] != nullptr; i++) { + const auto *param = mapping->params[i]; + auto paramProperties = util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, param->wkt2_name); + if (param->epsg_code != 0) { + paramProperties + .set(metadata::Identifier::CODESPACE_KEY, + metadata::Identifier::EPSG) + .set(metadata::Identifier::CODE_KEY, param->epsg_code); + } + auto parameter = OperationParameter::create(paramProperties); + parameters.push_back(parameter); + } + + auto methodProperties = util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, mapping->wkt2_name); + if (mapping->epsg_code != 0) { + methodProperties + .set(metadata::Identifier::CODESPACE_KEY, + metadata::Identifier::EPSG) + .set(metadata::Identifier::CODE_KEY, mapping->epsg_code); + } + return Conversion::create( + addDefaultNameIfNeeded(properties, mapping->wkt2_name), + methodProperties, parameters, values); +} +//! @endcond + +// --------------------------------------------------------------------------- + +ConversionNNPtr +Conversion::create(const util::PropertyMap &properties, int method_epsg_code, + const std::vector<ParameterValueNNPtr> &values) { + const MethodMapping *mapping = getMapping(method_epsg_code); + assert(mapping); + return createConversion(properties, mapping, values); +} + +// --------------------------------------------------------------------------- + +ConversionNNPtr +Conversion::create(const util::PropertyMap &properties, + const char *method_wkt2_name, + const std::vector<ParameterValueNNPtr> &values) { + const MethodMapping *mapping = getMapping(method_wkt2_name); + assert(mapping); + return createConversion(properties, mapping, values); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +struct VectorOfParameters : public std::vector<OperationParameterNNPtr> { + VectorOfParameters() : std::vector<OperationParameterNNPtr>() {} + explicit VectorOfParameters( + std::initializer_list<OperationParameterNNPtr> list) + : std::vector<OperationParameterNNPtr>(list) {} + VectorOfParameters(const VectorOfParameters &) = delete; + + ~VectorOfParameters(); +}; + +// This way, we disable inlining of destruction, and save a lot of space +VectorOfParameters::~VectorOfParameters() = default; + +struct VectorOfValues : public std::vector<ParameterValueNNPtr> { + VectorOfValues() : std::vector<ParameterValueNNPtr>() {} + explicit VectorOfValues(std::initializer_list<ParameterValueNNPtr> list) + : std::vector<ParameterValueNNPtr>(list) {} + + explicit VectorOfValues(std::initializer_list<common::Measure> list); + VectorOfValues(const VectorOfValues &) = delete; + VectorOfValues(VectorOfValues &&) = default; + + ~VectorOfValues(); +}; + +static std::vector<ParameterValueNNPtr> buildParameterValueFromMeasure( + const std::initializer_list<common::Measure> &list) { + std::vector<ParameterValueNNPtr> res; + for (const auto &v : list) { + res.emplace_back(ParameterValue::create(v)); + } + return res; +} + +VectorOfValues::VectorOfValues(std::initializer_list<common::Measure> list) + : std::vector<ParameterValueNNPtr>(buildParameterValueFromMeasure(list)) {} + +// This way, we disable inlining of destruction, and save a lot of space +VectorOfValues::~VectorOfValues() = default; + +PROJ_NO_INLINE static VectorOfValues createParams(const common::Measure &m1, + const common::Measure &m2, + const common::Measure &m3) { + return VectorOfValues{ParameterValue::create(m1), + ParameterValue::create(m2), + ParameterValue::create(m3)}; +} + +PROJ_NO_INLINE static VectorOfValues createParams(const common::Measure &m1, + const common::Measure &m2, + const common::Measure &m3, + const common::Measure &m4) { + return VectorOfValues{ + ParameterValue::create(m1), ParameterValue::create(m2), + ParameterValue::create(m3), ParameterValue::create(m4)}; +} + +PROJ_NO_INLINE static VectorOfValues createParams(const common::Measure &m1, + const common::Measure &m2, + const common::Measure &m3, + const common::Measure &m4, + const common::Measure &m5) { + return VectorOfValues{ + ParameterValue::create(m1), ParameterValue::create(m2), + ParameterValue::create(m3), ParameterValue::create(m4), + ParameterValue::create(m5), + }; +} + +PROJ_NO_INLINE static VectorOfValues +createParams(const common::Measure &m1, const common::Measure &m2, + const common::Measure &m3, const common::Measure &m4, + const common::Measure &m5, const common::Measure &m6) { + return VectorOfValues{ + ParameterValue::create(m1), ParameterValue::create(m2), + ParameterValue::create(m3), ParameterValue::create(m4), + ParameterValue::create(m5), ParameterValue::create(m6), + }; +} + +PROJ_NO_INLINE static VectorOfValues +createParams(const common::Measure &m1, const common::Measure &m2, + const common::Measure &m3, const common::Measure &m4, + const common::Measure &m5, const common::Measure &m6, + const common::Measure &m7) { + return VectorOfValues{ + ParameterValue::create(m1), ParameterValue::create(m2), + ParameterValue::create(m3), ParameterValue::create(m4), + ParameterValue::create(m5), ParameterValue::create(m6), + ParameterValue::create(m7), + }; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a [Universal Transverse Mercator] + *(https://proj4.org/operations/projections/utm.html) conversion. + * + * UTM is a family of conversions, of EPSG codes from 16001 to 16060 for the + * northern hemisphere, and 17001 t 17060 for the southern hemisphere, + * based on the Transverse Mercator projection method. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param zone UTM zone number between 1 and 60. + * @param north true for UTM northern hemisphere, false for UTM southern + * hemisphere. + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createUTM(const util::PropertyMap &properties, + int zone, bool north) { + return create( + getUTMConversionProperty(properties, zone, north), + EPSG_CODE_METHOD_TRANSVERSE_MERCATOR, + createParams(common::Angle(UTM_LATITUDE_OF_NATURAL_ORIGIN), + common::Angle(zone * 6.0 - 183.0), + common::Scale(UTM_SCALE_FACTOR), + common::Length(UTM_FALSE_EASTING), + common::Length(north ? UTM_NORTH_FALSE_NORTHING + : UTM_SOUTH_FALSE_NORTHING))); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Transverse Mercator] + *(https://proj4.org/operations/projections/tmerc.html) projection method. + * + * This method is defined as [EPSG:9807] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9807) + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLat See \ref center_latitude + * @param centerLong See \ref center_longitude + * @param scale See \ref scale + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createTransverseMercator( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Scale &scale, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, EPSG_CODE_METHOD_TRANSVERSE_MERCATOR, + createParams(centerLat, centerLong, scale, falseEasting, + falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Gauss Schreiber Transverse + *Mercator] + *(https://proj4.org/operations/projections/gstmerc.html) projection method. + * + * This method is also known as Gauss-Laborde Reunion. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLat See \ref center_latitude + * @param centerLong See \ref center_longitude + * @param scale See \ref scale + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createGaussSchreiberTransverseMercator( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Scale &scale, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, + PROJ_WKT2_NAME_METHOD_GAUSS_SCHREIBER_TRANSVERSE_MERCATOR, + createParams(centerLat, centerLong, scale, falseEasting, + falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Transverse Mercator South + *Orientated] + *(https://proj4.org/operations/projections/tmerc.html) projection method. + * + * This method is defined as [EPSG:9808] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9808) + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLat See \ref center_latitude + * @param centerLong See \ref center_longitude + * @param scale See \ref scale + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createTransverseMercatorSouthOriented( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Scale &scale, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, + EPSG_CODE_METHOD_TRANSVERSE_MERCATOR_SOUTH_ORIENTATED, + createParams(centerLat, centerLong, scale, falseEasting, + falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Two Point Equidistant] + *(https://proj4.org/operations/projections/tpeqd.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeFirstPoint Latitude of first point. + * @param longitudeFirstPoint Longitude of first point. + * @param latitudeSecondPoint Latitude of second point. + * @param longitudeSeconPoint Longitude of second point. + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr +Conversion::createTwoPointEquidistant(const util::PropertyMap &properties, + const common::Angle &latitudeFirstPoint, + const common::Angle &longitudeFirstPoint, + const common::Angle &latitudeSecondPoint, + const common::Angle &longitudeSeconPoint, + const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_TWO_POINT_EQUIDISTANT, + createParams(latitudeFirstPoint, longitudeFirstPoint, + latitudeSecondPoint, longitudeSeconPoint, + falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the Tunisia Mapping Grid projection + * method. + * + * This method is defined as [EPSG:9816] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9816) + * + * \note There is currently no implementation of the method formulas in PROJ. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLat See \ref center_latitude + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createTunisiaMappingGrid( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create( + properties, EPSG_CODE_METHOD_TUNISIA_MAPPING_GRID, + createParams(centerLat, centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Albers Conic Equal Area] + *(https://proj4.org/operations/projections/aea.html) projection method. + * + * This method is defined as [EPSG:9822] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9822) + * + * @note the order of arguments is conformant with the corresponding EPSG + * mode and different than OGRSpatialReference::setACEA() of GDAL <= 2.3 + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeFalseOrigin See \ref latitude_false_origin + * @param longitudeFalseOrigin See \ref longitude_false_origin + * @param latitudeFirstParallel See \ref latitude_first_std_parallel + * @param latitudeSecondParallel See \ref latitude_second_std_parallel + * @param eastingFalseOrigin See \ref easting_false_origin + * @param northingFalseOrigin See \ref northing_false_origin + * @return a new Conversion. + */ +ConversionNNPtr +Conversion::createAlbersEqualArea(const util::PropertyMap &properties, + const common::Angle &latitudeFalseOrigin, + const common::Angle &longitudeFalseOrigin, + const common::Angle &latitudeFirstParallel, + const common::Angle &latitudeSecondParallel, + const common::Length &eastingFalseOrigin, + const common::Length &northingFalseOrigin) { + return create(properties, EPSG_CODE_METHOD_ALBERS_EQUAL_AREA, + createParams(latitudeFalseOrigin, longitudeFalseOrigin, + latitudeFirstParallel, latitudeSecondParallel, + eastingFalseOrigin, northingFalseOrigin)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Lambert Conic Conformal 1SP] + *(https://proj4.org/operations/projections/lcc.html) projection method. + * + * This method is defined as [EPSG:9801] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9801) + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLat See \ref center_latitude + * @param centerLong See \ref center_longitude + * @param scale See \ref scale + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createLambertConicConformal_1SP( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Scale &scale, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP, + createParams(centerLat, centerLong, scale, falseEasting, + falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Lambert Conic Conformal (2SP)] + *(https://proj4.org/operations/projections/lcc.html) projection method. + * + * This method is defined as [EPSG:9802] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9802) + * + * @note the order of arguments is conformant with the corresponding EPSG + * mode and different than OGRSpatialReference::setLCC() of GDAL <= 2.3 + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeFalseOrigin See \ref latitude_false_origin + * @param longitudeFalseOrigin See \ref longitude_false_origin + * @param latitudeFirstParallel See \ref latitude_first_std_parallel + * @param latitudeSecondParallel See \ref latitude_second_std_parallel + * @param eastingFalseOrigin See \ref easting_false_origin + * @param northingFalseOrigin See \ref northing_false_origin + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createLambertConicConformal_2SP( + const util::PropertyMap &properties, + const common::Angle &latitudeFalseOrigin, + const common::Angle &longitudeFalseOrigin, + const common::Angle &latitudeFirstParallel, + const common::Angle &latitudeSecondParallel, + const common::Length &eastingFalseOrigin, + const common::Length &northingFalseOrigin) { + return create(properties, EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP, + createParams(latitudeFalseOrigin, longitudeFalseOrigin, + latitudeFirstParallel, latitudeSecondParallel, + eastingFalseOrigin, northingFalseOrigin)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Lambert Conic Conformal (2SP + *Michigan)] + *(https://proj4.org/operations/projections/lcc.html) projection method. + * + * This method is defined as [EPSG:1051] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::1051) + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeFalseOrigin See \ref latitude_false_origin + * @param longitudeFalseOrigin See \ref longitude_false_origin + * @param latitudeFirstParallel See \ref latitude_first_std_parallel + * @param latitudeSecondParallel See \ref latitude_second_std_parallel + * @param eastingFalseOrigin See \ref easting_false_origin + * @param northingFalseOrigin See \ref northing_false_origin + * @param ellipsoidScalingFactor Ellipsoid scaling factor. + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createLambertConicConformal_2SP_Michigan( + const util::PropertyMap &properties, + const common::Angle &latitudeFalseOrigin, + const common::Angle &longitudeFalseOrigin, + const common::Angle &latitudeFirstParallel, + const common::Angle &latitudeSecondParallel, + const common::Length &eastingFalseOrigin, + const common::Length &northingFalseOrigin, + const common::Scale &ellipsoidScalingFactor) { + return create(properties, + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP_MICHIGAN, + createParams(latitudeFalseOrigin, longitudeFalseOrigin, + latitudeFirstParallel, latitudeSecondParallel, + eastingFalseOrigin, northingFalseOrigin, + ellipsoidScalingFactor)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Lambert Conic Conformal (2SP + *Belgium)] + *(https://proj4.org/operations/projections/lcc.html) projection method. + * + * This method is defined as [EPSG:9803] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9803) + * + * \warning The formulas used currently in PROJ are, incorrectly, the ones of + * the regular LCC_2SP method. + * + * @note the order of arguments is conformant with the corresponding EPSG + * mode and different than OGRSpatialReference::setLCCB() of GDAL <= 2.3 + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeFalseOrigin See \ref latitude_false_origin + * @param longitudeFalseOrigin See \ref longitude_false_origin + * @param latitudeFirstParallel See \ref latitude_first_std_parallel + * @param latitudeSecondParallel See \ref latitude_second_std_parallel + * @param eastingFalseOrigin See \ref easting_false_origin + * @param northingFalseOrigin See \ref northing_false_origin + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createLambertConicConformal_2SP_Belgium( + const util::PropertyMap &properties, + const common::Angle &latitudeFalseOrigin, + const common::Angle &longitudeFalseOrigin, + const common::Angle &latitudeFirstParallel, + const common::Angle &latitudeSecondParallel, + const common::Length &eastingFalseOrigin, + const common::Length &northingFalseOrigin) { + + return create(properties, + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP_BELGIUM, + createParams(latitudeFalseOrigin, longitudeFalseOrigin, + latitudeFirstParallel, latitudeSecondParallel, + eastingFalseOrigin, northingFalseOrigin)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Modified Azimuthal + *Equidistant] + *(https://proj4.org/operations/projections/aeqd.html) projection method. + * + * This method is defined as [EPSG:9832] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9832) + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeNatOrigin See \ref center_latitude + * @param longitudeNatOrigin See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createAzimuthalEquidistant( + const util::PropertyMap &properties, const common::Angle &latitudeNatOrigin, + const common::Angle &longitudeNatOrigin, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create(properties, EPSG_CODE_METHOD_MODIFIED_AZIMUTHAL_EQUIDISTANT, + createParams(latitudeNatOrigin, longitudeNatOrigin, + falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Guam Projection] + *(https://proj4.org/operations/projections/aeqd.html) projection method. + * + * This method is defined as [EPSG:9831] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9831) + * + * @param properties See \ref general_properties of the conversion. If the name + *is + * not provided, it is automatically set. + * @param latitudeNatOrigin See \ref center_latitude + * @param longitudeNatOrigin See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createGuamProjection( + const util::PropertyMap &properties, const common::Angle &latitudeNatOrigin, + const common::Angle &longitudeNatOrigin, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create(properties, EPSG_CODE_METHOD_GUAM_PROJECTION, + createParams(latitudeNatOrigin, longitudeNatOrigin, + falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Bonne] + *(https://proj4.org/operations/projections/bonne.html) projection method. + * + * This method is defined as [EPSG:9827] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9827) + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeNatOrigin See \ref center_latitude . PROJ calls its the + * standard parallel 1. + * @param longitudeNatOrigin See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createBonne(const util::PropertyMap &properties, + const common::Angle &latitudeNatOrigin, + const common::Angle &longitudeNatOrigin, + const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create(properties, EPSG_CODE_METHOD_BONNE, + createParams(latitudeNatOrigin, longitudeNatOrigin, + falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Lambert Cylindrical Equal Area + *(Spherical)] + *(https://proj4.org/operations/projections/cea.html) projection method. + * + * This method is defined as [EPSG:9834] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9834) + * + * \warning The PROJ cea computation code would select the ellipsoidal form if + * a non-spherical ellipsoid is used for the base GeographicalCRS. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeFirstParallel See \ref latitude_first_std_parallel. + * @param longitudeNatOrigin See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createLambertCylindricalEqualAreaSpherical( + const util::PropertyMap &properties, + const common::Angle &latitudeFirstParallel, + const common::Angle &longitudeNatOrigin, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create(properties, + EPSG_CODE_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA_SPHERICAL, + createParams(latitudeFirstParallel, longitudeNatOrigin, + falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Lambert Cylindrical Equal Area + *(ellipsoidal form)] + *(https://proj4.org/operations/projections/cea.html) projection method. + * + * This method is defined as [EPSG:9835] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9835) + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeFirstParallel See \ref latitude_first_std_parallel. + * @param longitudeNatOrigin See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createLambertCylindricalEqualArea( + const util::PropertyMap &properties, + const common::Angle &latitudeFirstParallel, + const common::Angle &longitudeNatOrigin, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create(properties, EPSG_CODE_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA, + createParams(latitudeFirstParallel, longitudeNatOrigin, + falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Cassini-Soldner] + * (https://proj4.org/operations/projections/cass.html) projection method. + * + * This method is defined as [EPSG:9806] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9806) + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLat See \ref center_latitude + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createCassiniSoldner( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create( + properties, EPSG_CODE_METHOD_CASSINI_SOLDNER, + createParams(centerLat, centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Equidistant Conic] + *(https://proj4.org/operations/projections/eqdc.html) projection method. + * + * There is no equivalent in EPSG. + * + * @note Although not found in EPSG, the order of arguments is conformant with + * the "spirit" of EPSG and different than OGRSpatialReference::setEC() of GDAL + *<= 2.3 * @param properties See \ref general_properties of the conversion. + *If the name + * is not provided, it is automatically set. + * + * @param centerLat See \ref center_latitude + * @param centerLong See \ref center_longitude + * @param latitudeFirstParallel See \ref latitude_first_std_parallel + * @param latitudeSecondParallel See \ref latitude_second_std_parallel + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createEquidistantConic( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Angle &latitudeFirstParallel, + const common::Angle &latitudeSecondParallel, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_EQUIDISTANT_CONIC, + createParams(centerLat, centerLong, latitudeFirstParallel, + latitudeSecondParallel, falseEasting, + falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Eckert I] + * (https://proj4.org/operations/projections/eck1.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createEckertI(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_ECKERT_I, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Eckert II] + * (https://proj4.org/operations/projections/eck2.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createEckertII( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_ECKERT_II, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Eckert III] + * (https://proj4.org/operations/projections/eck3.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createEckertIII( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_ECKERT_III, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Eckert IV] + * (https://proj4.org/operations/projections/eck4.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createEckertIV( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_ECKERT_IV, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Eckert V] + * (https://proj4.org/operations/projections/eck5.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createEckertV(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_ECKERT_V, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Eckert VI] + * (https://proj4.org/operations/projections/eck6.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createEckertVI( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_ECKERT_VI, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Equidistant Cylindrical] + *(https://proj4.org/operations/projections/eqc.html) projection method. + * + * This is also known as the Equirectangular method, and in the particular case + * where the latitude of first parallel is 0. + * + * This method is defined as [EPSG:1028] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::1028) + * + * @note This is the equivalent OGRSpatialReference::SetEquirectangular2( + * 0.0, latitudeFirstParallel, falseEasting, falseNorthing ) of GDAL <= 2.3, + * where the lat_0 / center_latitude parameter is forced to 0. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeFirstParallel See \ref latitude_first_std_parallel. + * @param longitudeNatOrigin See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createEquidistantCylindrical( + const util::PropertyMap &properties, + const common::Angle &latitudeFirstParallel, + const common::Angle &longitudeNatOrigin, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create(properties, EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL, + createParams(latitudeFirstParallel, longitudeNatOrigin, + falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Equidistant Cylindrical + *(Spherical)] + *(https://proj4.org/operations/projections/eqc.html) projection method. + * + * This is also known as the Equirectangular method, and in the particular case + * where the latitude of first parallel is 0. + * + * This method is defined as [EPSG:1029] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::1029) + * + * @note This is the equivalent OGRSpatialReference::SetEquirectangular2( + * 0.0, latitudeFirstParallel, falseEasting, falseNorthing ) of GDAL <= 2.3, + * where the lat_0 / center_latitude parameter is forced to 0. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeFirstParallel See \ref latitude_first_std_parallel. + * @param longitudeNatOrigin See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createEquidistantCylindricalSpherical( + const util::PropertyMap &properties, + const common::Angle &latitudeFirstParallel, + const common::Angle &longitudeNatOrigin, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create(properties, + EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL_SPHERICAL, + createParams(latitudeFirstParallel, longitudeNatOrigin, + falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Gall (Stereographic)] + * (https://proj4.org/operations/projections/gall.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createGall(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_GALL_STEREOGRAPHIC, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Goode Homolosine] + * (https://proj4.org/operations/projections/goode.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createGoodeHomolosine( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_GOODE_HOMOLOSINE, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Interrupted Goode Homolosine] + * (https://proj4.org/operations/projections/igh.html) projection method. + * + * There is no equivalent in EPSG. + * + * @note OGRSpatialReference::SetIGH() of GDAL <= 2.3 assumes the 3 + * projection + * parameters to be zero and this is the nominal case. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createInterruptedGoodeHomolosine( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, + PROJ_WKT2_NAME_METHOD_INTERRUPTED_GOODE_HOMOLOSINE, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Geostationary Satellite View] + * (https://proj4.org/operations/projections/geos.html) projection method, + * with the sweep angle axis of the viewing instrument being x + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param height Height of the view point above the Earth. + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createGeostationarySatelliteSweepX( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &height, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create( + properties, PROJ_WKT2_NAME_METHOD_GEOSTATIONARY_SATELLITE_SWEEP_X, + createParams(centerLong, height, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Geostationary Satellite View] + * (https://proj4.org/operations/projections/geos.html) projection method, + * with the sweep angle axis of the viewing instrument being y. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param height Height of the view point above the Earth. + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createGeostationarySatelliteSweepY( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &height, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create( + properties, PROJ_WKT2_NAME_METHOD_GEOSTATIONARY_SATELLITE_SWEEP_Y, + createParams(centerLong, height, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Gnomonic] + *(https://proj4.org/operations/projections/gnom.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLat See \ref center_latitude + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createGnomonic( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create( + properties, PROJ_WKT2_NAME_METHOD_GNOMONIC, + createParams(centerLat, centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Hotine Oblique Mercator + *(Variant A)] + *(https://proj4.org/operations/projections/omerc.html) projection method + * + * This is the variant with the no_uoff parameter, which corresponds to + * GDAL >=2.3 Hotine_Oblique_Mercator projection. + * In this variant, the false grid coordinates are + * defined at the intersection of the initial line and the aposphere (the + * equator on one of the intermediate surfaces inherent in the method), that is + * at the natural origin of the coordinate system). + * + * This method is defined as [EPSG:9812] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9812) + * + * \note In the case where azimuthInitialLine = angleFromRectifiedToSkrewGrid = + *90deg, + * this maps to the [Swiss Oblique Mercator] + *(https://proj4.org/operations/projections/somerc.html) formulas. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeProjectionCentre See \ref latitude_projection_centre + * @param longitudeProjectionCentre See \ref longitude_projection_centre + * @param azimuthInitialLine See \ref azimuth_initial_line + * @param angleFromRectifiedToSkrewGrid See + * \ref angle_from_recitfied_to_skrew_grid + * @param scale See \ref scale_factor_initial_line + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createHotineObliqueMercatorVariantA( + const util::PropertyMap &properties, + const common::Angle &latitudeProjectionCentre, + const common::Angle &longitudeProjectionCentre, + const common::Angle &azimuthInitialLine, + const common::Angle &angleFromRectifiedToSkrewGrid, + const common::Scale &scale, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create( + properties, EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_A, + createParams(latitudeProjectionCentre, longitudeProjectionCentre, + azimuthInitialLine, angleFromRectifiedToSkrewGrid, scale, + falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Hotine Oblique Mercator + *(Variant B)] + *(https://proj4.org/operations/projections/omerc.html) projection method + * + * This is the variant without the no_uoff parameter, which corresponds to + * GDAL >=2.3 Hotine_Oblique_Mercator_Azimuth_Center projection. + * In this variant, the false grid coordinates are defined at the projection + *centre. + * + * This method is defined as [EPSG:9815] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9815) + * + * \note In the case where azimuthInitialLine = angleFromRectifiedToSkrewGrid = + *90deg, + * this maps to the [Swiss Oblique Mercator] + *(https://proj4.org/operations/projections/somerc.html) formulas. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeProjectionCentre See \ref latitude_projection_centre + * @param longitudeProjectionCentre See \ref longitude_projection_centre + * @param azimuthInitialLine See \ref azimuth_initial_line + * @param angleFromRectifiedToSkrewGrid See + * \ref angle_from_recitfied_to_skrew_grid + * @param scale See \ref scale_factor_initial_line + * @param eastingProjectionCentre See \ref easting_projection_centre + * @param northingProjectionCentre See \ref northing_projection_centre + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createHotineObliqueMercatorVariantB( + const util::PropertyMap &properties, + const common::Angle &latitudeProjectionCentre, + const common::Angle &longitudeProjectionCentre, + const common::Angle &azimuthInitialLine, + const common::Angle &angleFromRectifiedToSkrewGrid, + const common::Scale &scale, const common::Length &eastingProjectionCentre, + const common::Length &northingProjectionCentre) { + return create( + properties, EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B, + createParams(latitudeProjectionCentre, longitudeProjectionCentre, + azimuthInitialLine, angleFromRectifiedToSkrewGrid, scale, + eastingProjectionCentre, northingProjectionCentre)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Hotine Oblique Mercator Two + *Point Natural Origin] + *(https://proj4.org/operations/projections/omerc.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeProjectionCentre See \ref latitude_projection_centre + * @param latitudePoint1 Latitude of point 1. + * @param longitudePoint1 Latitude of point 1. + * @param latitudePoint2 Latitude of point 2. + * @param longitudePoint2 Longitude of point 2. + * @param scale See \ref scale_factor_initial_line + * @param eastingProjectionCentre See \ref easting_projection_centre + * @param northingProjectionCentre See \ref northing_projection_centre + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createHotineObliqueMercatorTwoPointNaturalOrigin( + const util::PropertyMap &properties, + const common::Angle &latitudeProjectionCentre, + const common::Angle &latitudePoint1, const common::Angle &longitudePoint1, + const common::Angle &latitudePoint2, const common::Angle &longitudePoint2, + const common::Scale &scale, const common::Length &eastingProjectionCentre, + const common::Length &northingProjectionCentre) { + return create( + properties, + PROJ_WKT2_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_TWO_POINT_NATURAL_ORIGIN, + { + ParameterValue::create(latitudeProjectionCentre), + ParameterValue::create(latitudePoint1), + ParameterValue::create(longitudePoint1), + ParameterValue::create(latitudePoint2), + ParameterValue::create(longitudePoint2), + ParameterValue::create(scale), + ParameterValue::create(eastingProjectionCentre), + ParameterValue::create(northingProjectionCentre), + }); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [International Map of the World + *Polyconic] + *(https://proj4.org/operations/projections/imw_p.html) projection method. + * + * There is no equivalent in EPSG. + * + * @note the order of arguments is conformant with the corresponding EPSG + * mode and different than OGRSpatialReference::SetIWMPolyconic() of GDAL <= + *2.3 + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param latitudeFirstParallel See \ref latitude_first_std_parallel + * @param latitudeSecondParallel See \ref latitude_second_std_parallel + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createInternationalMapWorldPolyconic( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Angle &latitudeFirstParallel, + const common::Angle &latitudeSecondParallel, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_INTERNATIONAL_MAP_WORLD_POLYCONIC, + createParams(centerLong, latitudeFirstParallel, + latitudeSecondParallel, falseEasting, + falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Krovak (north oriented)] + *(https://proj4.org/operations/projections/krovak.html) projection method. + * + * This method is defined as [EPSG:1041] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::1041) + * + * The coordinates are returned in the "GIS friendly" order: easting, northing. + * This method is similar to createKrovak(), except that the later returns + * projected values as southing, westing, where + * southing(Krovak) = -northing(Krovak_North) and + * westing(Krovak) = -easting(Krovak_North). + * + * @note The current PROJ implementation of Krovak hard-codes + * colatitudeConeAxis = 30deg17'17.30311" + * and latitudePseudoStandardParallel = 78deg30'N, which are the values used for + * the ProjectedCRS S-JTSK (Ferro) / Krovak East North (EPSG:5221). + * It also hard-codes the parameters of the Bessel ellipsoid typically used for + * Krovak. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeProjectionCentre See \ref latitude_projection_centre + * @param longitudeOfOrigin See \ref longitude_of_origin + * @param colatitudeConeAxis See \ref colatitude_cone_axis + * @param latitudePseudoStandardParallel See \ref + *latitude_pseudo_standard_parallel + * @param scaleFactorPseudoStandardParallel See \ref + *scale_factor_pseudo_standard_parallel + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createKrovakNorthOriented( + const util::PropertyMap &properties, + const common::Angle &latitudeProjectionCentre, + const common::Angle &longitudeOfOrigin, + const common::Angle &colatitudeConeAxis, + const common::Angle &latitudePseudoStandardParallel, + const common::Scale &scaleFactorPseudoStandardParallel, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, EPSG_CODE_METHOD_KROVAK_NORTH_ORIENTED, + createParams(latitudeProjectionCentre, longitudeOfOrigin, + colatitudeConeAxis, + latitudePseudoStandardParallel, + scaleFactorPseudoStandardParallel, falseEasting, + falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Krovak] + *(https://proj4.org/operations/projections/krovak.html) projection method. + * + * This method is defined as [EPSG:9819] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9819) + * + * The coordinates are returned in the historical order: southing, westing + * This method is similar to createKrovakNorthOriented(), except that the later + *returns + * projected values as easting, northing, where + * easting(Krovak_North) = -westing(Krovak) and + * northing(Krovak_North) = -southing(Krovak). + * + * @note The current PROJ implementation of Krovak hard-codes + * colatitudeConeAxis = 30deg17'17.30311" + * and latitudePseudoStandardParallel = 78deg30'N, which are the values used for + * the ProjectedCRS S-JTSK (Ferro) / Krovak East North (EPSG:5221). + * It also hard-codes the parameters of the Bessel ellipsoid typically used for + * Krovak. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeProjectionCentre See \ref latitude_projection_centre + * @param longitudeOfOrigin See \ref longitude_of_origin + * @param colatitudeConeAxis See \ref colatitude_cone_axis + * @param latitudePseudoStandardParallel See \ref + *latitude_pseudo_standard_parallel + * @param scaleFactorPseudoStandardParallel See \ref + *scale_factor_pseudo_standard_parallel + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr +Conversion::createKrovak(const util::PropertyMap &properties, + const common::Angle &latitudeProjectionCentre, + const common::Angle &longitudeOfOrigin, + const common::Angle &colatitudeConeAxis, + const common::Angle &latitudePseudoStandardParallel, + const common::Scale &scaleFactorPseudoStandardParallel, + const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create(properties, EPSG_CODE_METHOD_KROVAK, + createParams(latitudeProjectionCentre, longitudeOfOrigin, + colatitudeConeAxis, + latitudePseudoStandardParallel, + scaleFactorPseudoStandardParallel, falseEasting, + falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Lambert Azimuthal Equal Area] + *(https://proj4.org/operations/projections/laea.html) projection method. + * + * This method is defined as [EPSG:9820] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9820) + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeNatOrigin See \ref center_latitude + * @param longitudeNatOrigin See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createLambertAzimuthalEqualArea( + const util::PropertyMap &properties, const common::Angle &latitudeNatOrigin, + const common::Angle &longitudeNatOrigin, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create(properties, EPSG_CODE_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA, + createParams(latitudeNatOrigin, longitudeNatOrigin, + falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Miller Cylindrical] + *(https://proj4.org/operations/projections/mill.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createMillerCylindrical( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_MILLER_CYLINDRICAL, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Mercator] + *(https://proj4.org/operations/projections/merc.html) projection method. + * + * This is the variant, also known as Mercator (1SP), defined with the scale + * factor. Note that latitude of natural origin (centerLat) is a parameter, + * but unused in the transformation formulas. + * + * This method is defined as [EPSG:9804] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9804) + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLat See \ref center_latitude . Should be 0. + * @param centerLong See \ref center_longitude + * @param scale See \ref scale + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createMercatorVariantA( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Scale &scale, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, EPSG_CODE_METHOD_MERCATOR_VARIANT_A, + createParams(centerLat, centerLong, scale, falseEasting, + falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Mercator] + *(https://proj4.org/operations/projections/merc.html) projection method. + * + * This is the variant, also known as Mercator (2SP), defined with the latitude + * of the first standard parallel (the second standard parallel is implicitly + * the opposite value). The latitude of natural origin is fixed to zero. + * + * This method is defined as [EPSG:9805] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9805) + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeFirstParallel See \ref latitude_first_std_parallel + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createMercatorVariantB( + const util::PropertyMap &properties, + const common::Angle &latitudeFirstParallel, const common::Angle ¢erLong, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, EPSG_CODE_METHOD_MERCATOR_VARIANT_B, + createParams(latitudeFirstParallel, centerLong, falseEasting, + falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Popular Visualisation Pseudo + *Mercator] + *(https://proj4.org/operations/projections/webmerc.html) projection method. + * + * Also known as WebMercator. Mostly/only used for Projected CRS EPSG:3857 + * (WGS 84 / Pseudo-Mercator) + * + * This method is defined as [EPSG:1024] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::1024) + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLat See \ref center_latitude . Usually 0 + * @param centerLong See \ref center_longitude . Usually 0 + * @param falseEasting See \ref false_easting . Usually 0 + * @param falseNorthing See \ref false_northing . Usually 0 + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createPopularVisualisationPseudoMercator( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create( + properties, EPSG_CODE_METHOD_POPULAR_VISUALISATION_PSEUDO_MERCATOR, + createParams(centerLat, centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Mollweide] + * (https://proj4.org/operations/projections/moll.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createMollweide( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_MOLLWEIDE, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [New Zealand Map Grid] + * (https://proj4.org/operations/projections/nzmg.html) projection method. + * + * This method is defined as [EPSG:9811] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9811) + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLat See \ref center_latitude + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createNewZealandMappingGrid( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create( + properties, EPSG_CODE_METHOD_NZMG, + createParams(centerLat, centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Oblique Stereographic + *(Alternative)] + *(https://proj4.org/operations/projections/sterea.html) projection method. + * + * This method is defined as [EPSG:9809] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9809) + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLat See \ref center_latitude + * @param centerLong See \ref center_longitude + * @param scale See \ref scale + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createObliqueStereographic( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Scale &scale, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, EPSG_CODE_METHOD_OBLIQUE_STEREOGRAPHIC, + createParams(centerLat, centerLong, scale, falseEasting, + falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Orthographic] + *(https://proj4.org/operations/projections/ortho.html) projection method. + * + * This method is defined as [EPSG:9840] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9840) + * + * \note At the time of writing, PROJ only implements the spherical formulation + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLat See \ref center_latitude + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createOrthographic( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create( + properties, EPSG_CODE_METHOD_ORTHOGRAPHIC, + createParams(centerLat, centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [American Polyconic] + *(https://proj4.org/operations/projections/poly.html) projection method. + * + * This method is defined as [EPSG:9818] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9818) + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLat See \ref center_latitude + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createAmericanPolyconic( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create( + properties, EPSG_CODE_METHOD_AMERICAN_POLYCONIC, + createParams(centerLat, centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Polar Stereographic (Variant + *A)] + *(https://proj4.org/operations/projections/stere.html) projection method. + * + * This method is defined as [EPSG:9810] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9810) + * + * This is the variant of polar stereographic defined with a scale factor. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLat See \ref center_latitude . Should be 90 deg ou -90 deg. + * @param centerLong See \ref center_longitude + * @param scale See \ref scale + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createPolarStereographicVariantA( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Scale &scale, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, EPSG_CODE_METHOD_POLAR_STEREOGRAPHIC_VARIANT_A, + createParams(centerLat, centerLong, scale, falseEasting, + falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Polar Stereographic (Variant + *B)] + *(https://proj4.org/operations/projections/stere.html) projection method. + * + * This method is defined as [EPSG:9829] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9829) + * + * This is the variant of polar stereographic defined with a latitude of + * standard parallel. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeStandardParallel See \ref latitude_std_parallel + * @param longitudeOfOrigin See \ref longitude_of_origin + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createPolarStereographicVariantB( + const util::PropertyMap &properties, + const common::Angle &latitudeStandardParallel, + const common::Angle &longitudeOfOrigin, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create(properties, EPSG_CODE_METHOD_POLAR_STEREOGRAPHIC_VARIANT_B, + createParams(latitudeStandardParallel, longitudeOfOrigin, + falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Robinson] + * (https://proj4.org/operations/projections/robin.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createRobinson( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_ROBINSON, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Sinusoidal] + * (https://proj4.org/operations/projections/sinu.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createSinusoidal( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_SINUSOIDAL, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Stereographic] + *(https://proj4.org/operations/projections/stere.html) projection method. + * + * There is no equivalent in EPSG. This method implements the original "Oblique + * Stereographic" method described in "Snyder's Map Projections - A Working + *manual", + * which is different from the "Oblique Stereographic (alternative") method + * implemented in createObliqueStereographic(). + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLat See \ref center_latitude + * @param centerLong See \ref center_longitude + * @param scale See \ref scale + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createStereographic( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Scale &scale, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_STEREOGRAPHIC, + createParams(centerLat, centerLong, scale, falseEasting, + falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Van der Grinten] + * (https://proj4.org/operations/projections/vandg.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createVanDerGrinten( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_VAN_DER_GRINTEN, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Wagner I] + * (https://proj4.org/operations/projections/wag1.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createWagnerI(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_WAGNER_I, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Wagner II] + * (https://proj4.org/operations/projections/wag2.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createWagnerII( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_WAGNER_II, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Wagner III] + * (https://proj4.org/operations/projections/wag3.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param latitudeTrueScale Latitude of true scale. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createWagnerIII( + const util::PropertyMap &properties, const common::Angle &latitudeTrueScale, + const common::Angle ¢erLong, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_WAGNER_III, + createParams(latitudeTrueScale, centerLong, falseEasting, + falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Wagner IV] + * (https://proj4.org/operations/projections/wag4.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createWagnerIV( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_WAGNER_IV, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Wagner V] + * (https://proj4.org/operations/projections/wag5.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createWagnerV(const util::PropertyMap &properties, + const common::Angle ¢erLong, + const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_WAGNER_V, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Wagner VI] + * (https://proj4.org/operations/projections/wag6.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createWagnerVI( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_WAGNER_VI, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Wagner VII] + * (https://proj4.org/operations/projections/wag7.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createWagnerVII( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, PROJ_WKT2_NAME_METHOD_WAGNER_VII, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Quadrilateralized Spherical + *Cube] + *(https://proj4.org/operations/projections/qsc.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLat See \ref center_latitude + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createQuadrilateralizedSphericalCube( + const util::PropertyMap &properties, const common::Angle ¢erLat, + const common::Angle ¢erLong, const common::Length &falseEasting, + const common::Length &falseNorthing) { + return create( + properties, PROJ_WKT2_NAME_METHOD_QUADRILATERALIZED_SPHERICAL_CUBE, + createParams(centerLat, centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Spherical Cross-Track Height] + *(https://proj4.org/operations/projections/sch.html) projection method. + * + * There is no equivalent in EPSG. + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param pegPointLat Peg point latitude. + * @param pegPointLong Peg point longitude. + * @param pegPointHeading Peg point heading. + * @param pegPointHeight Peg point height. + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createSphericalCrossTrackHeight( + const util::PropertyMap &properties, const common::Angle &pegPointLat, + const common::Angle &pegPointLong, const common::Angle &pegPointHeading, + const common::Length &pegPointHeight) { + return create(properties, + PROJ_WKT2_NAME_METHOD_SPHERICAL_CROSS_TRACK_HEIGHT, + createParams(pegPointLat, pegPointLong, pegPointHeading, + pegPointHeight)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the [Equal Earth] + * (https://proj4.org/operations/projections/eqearth.html) projection method. + * + * This method is defined as [EPSG:1078] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::1078) + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param centerLong See \ref center_longitude + * @param falseEasting See \ref false_easting + * @param falseNorthing See \ref false_northing + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createEqualEarth( + const util::PropertyMap &properties, const common::Angle ¢erLong, + const common::Length &falseEasting, const common::Length &falseNorthing) { + return create(properties, EPSG_CODE_METHOD_EQUAL_EARTH, + createParams(centerLong, falseEasting, falseNorthing)); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +static OperationParameterNNPtr createOpParamNameEPSGCode(int code) { + const char *name = OperationParameter::getNameForEPSGCode(code); + assert(name); + return OperationParameter::create(createMapNameEPSGCode(name, code)); +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the Change of Vertical Unit + * method. + * + * This method is defined as [EPSG:1069] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::1069) + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @param factor Conversion factor + * @return a new Conversion. + */ +ConversionNNPtr +Conversion::createChangeVerticalUnit(const util::PropertyMap &properties, + const common::Scale &factor) { + return create(properties, createMethodMapNameEPSGCode( + EPSG_CODE_METHOD_CHANGE_VERTICAL_UNIT), + VectorOfParameters{ + createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_UNIT_CONVERSION_SCALAR), + }, + VectorOfValues{ + factor, + }); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the Axis order reversal method + * + * This swaps the longitude, latitude axis. + * + * This method is defined as [EPSG:9843] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9843), + * or for 3D as [EPSG:9844] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9844) + * + * @param is3D Whether this should apply on 3D geographicCRS + * @return a new Conversion. + */ +ConversionNNPtr Conversion::createAxisOrderReversal(bool is3D) { + if (is3D) { + return create(createMapNameEPSGCode( + "axis order change (geographic3D horizontal)", 15499), + createMethodMapNameEPSGCode( + EPSG_CODE_METHOD_AXIS_ORDER_REVERSAL_3D), + {}, {}); + } else { + return create(createMapNameEPSGCode("axis order change (2D)", 15498), + createMethodMapNameEPSGCode( + EPSG_CODE_METHOD_AXIS_ORDER_REVERSAL_2D), + {}, {}); + } +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a conversion based on the Geographic/Geocentric method. + * + * This method is defined as [EPSG:9602] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9602), + * + * @param properties See \ref general_properties of the conversion. If the name + * is not provided, it is automatically set. + * @return a new Conversion. + */ +ConversionNNPtr +Conversion::createGeographicGeocentric(const util::PropertyMap &properties) { + return create(properties, createMethodMapNameEPSGCode( + EPSG_CODE_METHOD_GEOGRAPHIC_GEOCENTRIC), + {}, {}); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +static util::PropertyMap &addDomains(util::PropertyMap &map, + const common::ObjectUsage *obj) { + + auto ar = util::ArrayOfBaseObject::create(); + for (const auto &domain : obj->domains()) { + ar->add(domain); + } + if (!ar->empty()) { + map.set(common::ObjectUsage::OBJECT_DOMAIN_KEY, ar); + } + return map; +} + +// --------------------------------------------------------------------------- + +static void addModifiedIdentifier(util::PropertyMap &map, + const common::IdentifiedObject *obj, + bool inverse, bool derivedFrom) { + // If original operation is AUTH:CODE, then assign INVERSE(AUTH):CODE + // as identifier. + + auto ar = util::ArrayOfBaseObject::create(); + for (const auto &idSrc : obj->identifiers()) { + auto authName = *(idSrc->codeSpace()); + const auto &srcCode = idSrc->code(); + if (derivedFrom) { + authName = concat("DERIVED_FROM(", authName, ")"); + } + if (inverse) { + if (starts_with(authName, "INVERSE(") && authName.back() == ')') { + authName = authName.substr(strlen("INVERSE(")); + authName.resize(authName.size() - 1); + } else { + authName = concat("INVERSE(", authName, ")"); + } + } + auto idsProp = util::PropertyMap().set( + metadata::Identifier::CODESPACE_KEY, authName); + ar->add(metadata::Identifier::create(srcCode, idsProp)); + } + if (!ar->empty()) { + map.set(common::IdentifiedObject::IDENTIFIERS_KEY, ar); + } +} + +// --------------------------------------------------------------------------- + +static util::PropertyMap +createPropertiesForInverse(const OperationMethodNNPtr &method) { + util::PropertyMap map; + + const std::string &forwardName = method->nameStr(); + if (!forwardName.empty()) { + if (starts_with(forwardName, INVERSE_OF)) { + map.set(common::IdentifiedObject::NAME_KEY, + forwardName.substr(INVERSE_OF.size())); + } else { + map.set(common::IdentifiedObject::NAME_KEY, + INVERSE_OF + forwardName); + } + } + + addModifiedIdentifier(map, method.get(), true, false); + + return map; +} + +// --------------------------------------------------------------------------- + +InverseConversion::InverseConversion(const ConversionNNPtr &forward) + : Conversion( + OperationMethod::create(createPropertiesForInverse(forward->method()), + forward->method()->parameters()), + forward->parameterValues()), + InverseCoordinateOperation(forward, true) { + setPropertiesFromForward(); +} + +// --------------------------------------------------------------------------- + +InverseConversion::~InverseConversion() = default; + +// --------------------------------------------------------------------------- + +ConversionNNPtr InverseConversion::inverseAsConversion() const { + return NN_NO_CHECK( + util::nn_dynamic_pointer_cast<Conversion>(forwardOperation_)); +} + +// --------------------------------------------------------------------------- + +CoordinateOperationNNPtr +InverseConversion::create(const ConversionNNPtr &forward) { + auto conv = util::nn_make_shared<InverseConversion>(forward); + conv->assignSelf(conv); + return conv; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +static bool isAxisOrderReversal2D(int methodEPSGCode) { + return methodEPSGCode == EPSG_CODE_METHOD_AXIS_ORDER_REVERSAL_2D; +} + +static bool isAxisOrderReversal3D(int methodEPSGCode) { + return methodEPSGCode == EPSG_CODE_METHOD_AXIS_ORDER_REVERSAL_3D; +} + +bool isAxisOrderReversal(int methodEPSGCode) { + return isAxisOrderReversal2D(methodEPSGCode) || + isAxisOrderReversal3D(methodEPSGCode); +} +//! @endcond + +// --------------------------------------------------------------------------- + +CoordinateOperationNNPtr Conversion::inverse() const { + const int methodEPSGCode = method()->getEPSGCode(); + + if (methodEPSGCode == EPSG_CODE_METHOD_CHANGE_VERTICAL_UNIT) { + const double convFactor = parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_UNIT_CONVERSION_SCALAR); + auto conv = createChangeVerticalUnit( + createPropertiesForInverse(this, false, false), + common::Scale(1.0 / convFactor)); + conv->setCRSs(this, true); + return conv; + } + + const bool l_isAxisOrderReversal2D = isAxisOrderReversal2D(methodEPSGCode); + const bool l_isAxisOrderReversal3D = isAxisOrderReversal3D(methodEPSGCode); + if (l_isAxisOrderReversal2D || l_isAxisOrderReversal3D) { + auto conv = createAxisOrderReversal(l_isAxisOrderReversal3D); + conv->setCRSs(this, true); + return conv; + } + + if (methodEPSGCode == EPSG_CODE_METHOD_GEOGRAPHIC_GEOCENTRIC) { + + auto conv = createGeographicGeocentric( + createPropertiesForInverse(this, false, false)); + conv->setCRSs(this, true); + return conv; + } + + return InverseConversion::create(NN_NO_CHECK( + util::nn_dynamic_pointer_cast<Conversion>(shared_from_this()))); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +static double msfn(double phi, double e2) { + const double sinphi = std::sin(phi); + const double cosphi = std::cos(phi); + return pj_msfn(sinphi, cosphi, e2); +} + +// --------------------------------------------------------------------------- + +static double tsfn(double phi, double ec) { + const double sinphi = std::sin(phi); + return pj_tsfn(phi, sinphi, ec); +} + +// --------------------------------------------------------------------------- + +// Function whose zeroes are the sin of the standard parallels of LCC_2SP +static double lcc_1sp_to_2sp_f(double sinphi, double K, double ec, double n) { + const double x = sinphi; + const double ecx = ec * x; + return (1 - x * x) / (1 - ecx * ecx) - + K * K * std::pow((1.0 - x) / (1.0 + x) * + std::pow((1.0 + ecx) / (1.0 - ecx), ec), + n); +} + +// --------------------------------------------------------------------------- + +// Find the sin of the standard parallels of LCC_2SP +static double find_zero_lcc_1sp_to_2sp_f(double sinphi0, bool bNorth, double K, + double ec) { + double a, b; + double f_a; + if (bNorth) { + // Look for zero above phi0 + a = sinphi0; + b = 1.0; // sin(North pole) + f_a = 1.0; // some positive value, but we only care about the sign + } else { + // Look for zero below phi0 + a = -1.0; // sin(South pole) + b = sinphi0; + f_a = -1.0; // minus infinity in fact, but we only care about the sign + } + // We use dichotomy search. lcc_1sp_to_2sp_f() is positive at sinphi_init, + // has a zero in ]-1,sinphi0[ and ]sinphi0,1[ ranges + for (int N = 0; N < 100; N++) { + double c = (a + b) / 2; + double f_c = lcc_1sp_to_2sp_f(c, K, ec, sinphi0); + if (f_c == 0.0 || (b - a) < 1e-18) { + return c; + } + if ((f_c > 0 && f_a > 0) || (f_c < 0 && f_a < 0)) { + a = c; + f_a = f_c; + } else { + b = c; + } + } + return (a + b) / 2; +} + +static inline double DegToRad(double x) { return x / 180.0 * M_PI; } +static inline double RadToDeg(double x) { return x / M_PI * 180.0; } + +//! @endcond + +// --------------------------------------------------------------------------- + +/** + * \brief Return an equivalent projection. + * + * Currently implemented: + * <ul> + * <li>EPSG_CODE_METHOD_MERCATOR_VARIANT_A (1SP) to + * EPSG_CODE_METHOD_MERCATOR_VARIANT_B (2SP)</li> + * <li>EPSG_CODE_METHOD_MERCATOR_VARIANT_B (2SP) to + * EPSG_CODE_METHOD_MERCATOR_VARIANT_A (1SP)</li> + * <li>EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP to + * EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP</li> + * <li>EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP to + * EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP</li> + * </ul> + * + * @param targetEPSGCode EPSG code of the target method. + * @return new conversion, or nullptr + */ +ConversionPtr Conversion::convertToOtherMethod(int targetEPSGCode) const { + const int current_epsg_code = method()->getEPSGCode(); + if (current_epsg_code == targetEPSGCode) { + return util::nn_dynamic_pointer_cast<Conversion>(shared_from_this()); + } + + auto geogCRS = dynamic_cast<crs::GeodeticCRS *>(sourceCRS().get()); + if (!geogCRS) { + return nullptr; + } + + const double e2 = geogCRS->ellipsoid()->squaredEccentricity(); + if (e2 < 0) { + return nullptr; + } + + if (current_epsg_code == EPSG_CODE_METHOD_MERCATOR_VARIANT_A && + targetEPSGCode == EPSG_CODE_METHOD_MERCATOR_VARIANT_B && + parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN) == 0.0) { + const double k0 = parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN); + if (!(k0 > 0 && k0 <= 1.0 + 1e-10)) + return nullptr; + const double dfStdP1Lat = + (k0 >= 1.0) + ? 0.0 + : std::acos(std::sqrt((1.0 - e2) / ((1.0 / (k0 * k0)) - e2))); + auto latitudeFirstParallel = common::Angle( + common::Angle(dfStdP1Lat, common::UnitOfMeasure::RADIAN) + .convertToUnit(common::UnitOfMeasure::DEGREE), + common::UnitOfMeasure::DEGREE); + auto conv = createMercatorVariantB( + util::PropertyMap(), latitudeFirstParallel, + common::Angle(parameterValueMeasure( + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN)), + common::Length( + parameterValueMeasure(EPSG_CODE_PARAMETER_FALSE_EASTING)), + common::Length( + parameterValueMeasure(EPSG_CODE_PARAMETER_FALSE_NORTHING))); + conv->setCRSs(this, false); + return conv; + } + + if (current_epsg_code == EPSG_CODE_METHOD_MERCATOR_VARIANT_B && + targetEPSGCode == EPSG_CODE_METHOD_MERCATOR_VARIANT_A) { + const double phi1 = parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL); + if (!(std::fabs(phi1) < M_PI / 2)) + return nullptr; + const double k0 = msfn(phi1, e2); + auto conv = createMercatorVariantA( + util::PropertyMap(), + common::Angle(0.0, common::UnitOfMeasure::DEGREE), + common::Angle(parameterValueMeasure( + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN)), + common::Scale(k0, common::UnitOfMeasure::SCALE_UNITY), + common::Length( + parameterValueMeasure(EPSG_CODE_PARAMETER_FALSE_EASTING)), + common::Length( + parameterValueMeasure(EPSG_CODE_PARAMETER_FALSE_NORTHING))); + conv->setCRSs(this, false); + return conv; + } + + if (current_epsg_code == EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP && + targetEPSGCode == EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP) { + // Notations m0, t0, n, m1, t1, F are those of the EPSG guidance + // "1.3.1.1 Lambert Conic Conformal (2SP)" and + // "1.3.1.2 Lambert Conic Conformal (1SP)" and + // or Snyder pages 106-109 + auto latitudeOfOrigin = common::Angle(parameterValueMeasure( + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN)); + const double phi0 = latitudeOfOrigin.getSIValue(); + const double k0 = parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN); + if (!(std::fabs(phi0) < M_PI / 2)) + return nullptr; + if (!(k0 > 0 && k0 <= 1.0 + 1e-10)) + return nullptr; + const double ec = std::sqrt(e2); + const double m0 = msfn(phi0, e2); + const double t0 = tsfn(phi0, ec); + const double n = sin(phi0); + if (std::fabs(n) < 1e-10) + return nullptr; + if (fabs(k0 - 1.0) <= 1e-10) { + auto conv = createLambertConicConformal_2SP( + util::PropertyMap(), latitudeOfOrigin, + common::Angle(parameterValueMeasure( + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN)), + latitudeOfOrigin, latitudeOfOrigin, + common::Length( + parameterValueMeasure(EPSG_CODE_PARAMETER_FALSE_EASTING)), + common::Length( + parameterValueMeasure(EPSG_CODE_PARAMETER_FALSE_NORTHING))); + conv->setCRSs(this, false); + return conv; + } else { + const double K = k0 * m0 / std::pow(t0, n); + const double phi1 = + std::asin(find_zero_lcc_1sp_to_2sp_f(n, true, K, ec)); + const double phi2 = + std::asin(find_zero_lcc_1sp_to_2sp_f(n, false, K, ec)); + double phi1Deg = RadToDeg(phi1); + double phi2Deg = RadToDeg(phi2); + + // Try to round to hundreth of degree if very close to it + if (std::fabs(phi1Deg * 1000 - std::floor(phi1Deg * 1000 + 0.5)) < + 1e-8) + phi1Deg = floor(phi1Deg * 1000 + 0.5) / 1000; + if (std::fabs(phi2Deg * 1000 - std::floor(phi2Deg * 1000 + 0.5)) < + 1e-8) + phi2Deg = std::floor(phi2Deg * 1000 + 0.5) / 1000; + + // The following improvement is too turn the LCC1SP equivalent of + // EPSG:2154 to the real LCC2SP + // If the computed latitude of origin is close to .0 or .5 degrees + // then check if rounding it to it will get a false northing + // close to an integer + const double FN = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_FALSE_NORTHING); + const double latitudeOfOriginDeg = + latitudeOfOrigin.convertToUnit(common::UnitOfMeasure::DEGREE); + if (std::fabs(latitudeOfOriginDeg * 2 - + std::floor(latitudeOfOriginDeg * 2 + 0.5)) < 0.2) { + const double dfRoundedLatOfOrig = + std::floor(latitudeOfOriginDeg * 2 + 0.5) / 2; + const double m1 = msfn(phi1, e2); + const double t1 = tsfn(phi1, ec); + const double F = m1 / (n * std::pow(t1, n)); + const double a = + geogCRS->ellipsoid()->semiMajorAxis().getSIValue(); + const double tRoundedLatOfOrig = + tsfn(DegToRad(dfRoundedLatOfOrig), ec); + const double FN_correction = + a * F * (std::pow(tRoundedLatOfOrig, n) - std::pow(t0, n)); + const double FN_corrected = FN - FN_correction; + const double FN_corrected_rounded = + std::floor(FN_corrected + 0.5); + if (std::fabs(FN_corrected - FN_corrected_rounded) < 1e-8) { + auto conv = createLambertConicConformal_2SP( + util::PropertyMap(), + common::Angle(dfRoundedLatOfOrig, + common::UnitOfMeasure::DEGREE), + common::Angle(parameterValueMeasure( + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN)), + common::Angle(phi1Deg, common::UnitOfMeasure::DEGREE), + common::Angle(phi2Deg, common::UnitOfMeasure::DEGREE), + common::Length(parameterValueMeasure( + EPSG_CODE_PARAMETER_FALSE_EASTING)), + common::Length(FN_corrected_rounded)); + conv->setCRSs(this, false); + return conv; + } + } + + auto conv = createLambertConicConformal_2SP( + util::PropertyMap(), latitudeOfOrigin, + common::Angle(parameterValueMeasure( + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN)), + common::Angle(phi1Deg, common::UnitOfMeasure::DEGREE), + common::Angle(phi2Deg, common::UnitOfMeasure::DEGREE), + common::Length( + parameterValueMeasure(EPSG_CODE_PARAMETER_FALSE_EASTING)), + common::Length(FN)); + conv->setCRSs(this, false); + return conv; + } + } + + if (current_epsg_code == EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP && + targetEPSGCode == EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP) { + // Notations m0, t0, m1, t1, m2, t2 n, F are those of the EPSG guidance + // "1.3.1.1 Lambert Conic Conformal (2SP)" and + // "1.3.1.2 Lambert Conic Conformal (1SP)" and + // or Snyder pages 106-109 + const double phiF = + parameterValueMeasure(EPSG_CODE_PARAMETER_LATITUDE_FALSE_ORIGIN) + .getSIValue(); + const double phi1 = + parameterValueMeasure(EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL) + .getSIValue(); + const double phi2 = + parameterValueMeasure(EPSG_CODE_PARAMETER_LATITUDE_2ND_STD_PARALLEL) + .getSIValue(); + if (!(std::fabs(phiF) < M_PI / 2)) + return nullptr; + if (!(std::fabs(phi1) < M_PI / 2)) + return nullptr; + if (!(std::fabs(phi2) < M_PI / 2)) + return nullptr; + const double ec = std::sqrt(e2); + const double m1 = msfn(phi1, e2); + const double m2 = msfn(phi2, e2); + const double t1 = tsfn(phi1, ec); + const double t2 = tsfn(phi2, ec); + const double n_denom = std::log(t1) - std::log(t2); + const double n = (std::fabs(n_denom) < 1e-10) + ? std::sin(phi1) + : (std::log(m1) - std::log(m2)) / n_denom; + if (std::fabs(n) < 1e-10) + return nullptr; + const double F = m1 / (n * std::pow(t1, n)); + const double phi0 = std::asin(n); + const double m0 = msfn(phi0, e2); + const double t0 = tsfn(phi0, ec); + const double F0 = m0 / (n * std::pow(t0, n)); + const double k0 = F / F0; + const double a = geogCRS->ellipsoid()->semiMajorAxis().getSIValue(); + const double tF = tsfn(phiF, ec); + const double FN_correction = + a * F * (std::pow(tF, n) - std::pow(t0, n)); + + double phi0Deg = RadToDeg(phi0); + // Try to round to thousandth of degree if very close to it + if (std::fabs(phi0Deg * 1000 - std::floor(phi0Deg * 1000 + 0.5)) < 1e-8) + phi0Deg = std::floor(phi0Deg * 1000 + 0.5) / 1000; + + auto conv = createLambertConicConformal_1SP( + util::PropertyMap(), + common::Angle(phi0Deg, common::UnitOfMeasure::DEGREE), + common::Angle(parameterValueMeasure( + EPSG_CODE_PARAMETER_LONGITUDE_FALSE_ORIGIN)), + common::Scale(k0), common::Length(parameterValueMeasure( + EPSG_CODE_PARAMETER_EASTING_FALSE_ORIGIN)), + common::Length( + parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_NORTHING_FALSE_ORIGIN) + + (std::fabs(FN_correction) > 1e-8 ? FN_correction : 0))); + conv->setCRSs(this, false); + return conv; + } + + return nullptr; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +static void getESRIMethodNameAndParams(const Conversion *conv, + const std::string &methodName, + int methodEPSGCode, + const char *&esriMethodName, + const ESRIParamMapping *&esriParams) { + esriParams = nullptr; + esriMethodName = nullptr; + const auto *esriMapping = getESRIMapping(methodName, methodEPSGCode); + const auto l_targetCRS = conv->targetCRS(); + if (esriMapping) { + esriParams = esriMapping->params; + esriMethodName = esriMapping->esri_name; + if (esriMapping->epsg_code == + EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL || + esriMapping->epsg_code == + EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL_SPHERICAL) { + if (l_targetCRS && + ci_find(l_targetCRS->nameStr(), "Plate Carree") != + std::string::npos && + conv->parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN) == 0.0) { + esriParams = paramsESRI_Plate_Carree; + esriMethodName = "Plate_Carree"; + } else { + esriParams = paramsESRI_Equidistant_Cylindrical; + esriMethodName = "Equidistant_Cylindrical"; + } + } else if (esriMapping->epsg_code == + EPSG_CODE_METHOD_TRANSVERSE_MERCATOR) { + if (l_targetCRS && + (ci_find(l_targetCRS->nameStr(), "Gauss") != + std::string::npos || + ci_find(l_targetCRS->nameStr(), "GK_") != std::string::npos)) { + esriParams = paramsESRI_Gauss_Kruger; + esriMethodName = "Gauss_Kruger"; + } else { + esriParams = paramsESRI_Transverse_Mercator; + esriMethodName = "Transverse_Mercator"; + } + } else if (esriMapping->epsg_code == + EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_A) { + if (conv->parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_AZIMUTH_INITIAL_LINE) == + conv->parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID)) { + esriParams = + paramsESRI_Hotine_Oblique_Mercator_Azimuth_Natural_Origin; + esriMethodName = + "Hotine_Oblique_Mercator_Azimuth_Natural_Origin"; + } else { + esriParams = + paramsESRI_Rectified_Skew_Orthomorphic_Natural_Origin; + esriMethodName = "Rectified_Skew_Orthomorphic_Natural_Origin"; + } + } else if (esriMapping->epsg_code == + EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B) { + if (conv->parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_AZIMUTH_INITIAL_LINE) == + conv->parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID)) { + esriParams = paramsESRI_Hotine_Oblique_Mercator_Azimuth_Center; + esriMethodName = "Hotine_Oblique_Mercator_Azimuth_Center"; + } else { + esriParams = paramsESRI_Rectified_Skew_Orthomorphic_Center; + esriMethodName = "Rectified_Skew_Orthomorphic_Center"; + } + } else if (esriMapping->epsg_code == + EPSG_CODE_METHOD_POLAR_STEREOGRAPHIC_VARIANT_B) { + if (conv->parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_LATITUDE_STD_PARALLEL) > 0) { + esriMethodName = "Stereographic_North_Pole"; + } else { + esriMethodName = "Stereographic_South_Pole"; + } + } + } +} + +// --------------------------------------------------------------------------- + +const char *Conversion::getESRIMethodName() const { + const auto &l_method = method(); + const auto &methodName = l_method->nameStr(); + const auto methodEPSGCode = l_method->getEPSGCode(); + const ESRIParamMapping *esriParams = nullptr; + const char *esriMethodName = nullptr; + getESRIMethodNameAndParams(this, methodName, methodEPSGCode, esriMethodName, + esriParams); + return esriMethodName; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +const char *Conversion::getWKT1GDALMethodName() const { + const auto &l_method = method(); + const auto methodEPSGCode = l_method->getEPSGCode(); + if (methodEPSGCode == + EPSG_CODE_METHOD_POPULAR_VISUALISATION_PSEUDO_MERCATOR) { + return "Mercator_1SP"; + } + const MethodMapping *mapping = getMapping(l_method.get()); + return mapping ? mapping->wkt1_name : nullptr; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void Conversion::_exportToWKT(io::WKTFormatter *formatter) const { + const auto &l_method = method(); + const auto &methodName = l_method->nameStr(); + const auto methodEPSGCode = l_method->getEPSGCode(); + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + + if (!isWKT2 && formatter->useESRIDialect()) { + if (methodEPSGCode == EPSG_CODE_METHOD_MERCATOR_VARIANT_A) { + auto eqConv = + convertToOtherMethod(EPSG_CODE_METHOD_MERCATOR_VARIANT_B); + if (eqConv) { + eqConv->_exportToWKT(formatter); + return; + } + } + } + + if (isWKT2) { + formatter->startNode(formatter->useDerivingConversion() + ? io::WKTConstants::DERIVINGCONVERSION + : io::WKTConstants::CONVERSION, + !identifiers().empty()); + formatter->addQuotedString(nameStr()); + } else { + formatter->enter(); + formatter->pushOutputUnit(false); + formatter->pushOutputId(false); + } + + bool bAlreadyWritten = false; + if (!isWKT2 && formatter->useESRIDialect()) { + const ESRIParamMapping *esriParams = nullptr; + const char *esriMethodName = nullptr; + getESRIMethodNameAndParams(this, methodName, methodEPSGCode, + esriMethodName, esriParams); + if (esriMethodName && esriParams) { + formatter->startNode(io::WKTConstants::PROJECTION, false); + formatter->addQuotedString(esriMethodName); + formatter->endNode(); + + for (int i = 0; esriParams[i].esri_name != nullptr; i++) { + const auto &esriParam = esriParams[i]; + formatter->startNode(io::WKTConstants::PARAMETER, false); + formatter->addQuotedString(esriParam.esri_name); + if (esriParam.wkt2_name) { + const auto &pv = parameterValue(esriParam.wkt2_name, + esriParam.epsg_code); + if (pv && pv->type() == ParameterValue::Type::MEASURE) { + const auto &v = pv->value(); + // as we don't output the natural unit, output + // to the registered linear / angular unit. + const auto &unitType = v.unit().type(); + if (unitType == common::UnitOfMeasure::Type::LINEAR) { + formatter->add(v.convertToUnit( + *(formatter->axisLinearUnit()))); + } else if (unitType == + common::UnitOfMeasure::Type::ANGULAR) { + const auto &angUnit = + *(formatter->axisAngularUnit()); + double val = v.convertToUnit(angUnit); + if (angUnit == common::UnitOfMeasure::DEGREE) { + if (val > 180.0) { + val -= 360.0; + } else if (val < -180.0) { + val += 360.0; + } + } + formatter->add(val); + } else { + formatter->add(v.getSIValue()); + } + } else if (ci_find(esriParam.esri_name, "scale") != + std::string::npos) { + formatter->add(1.0); + } else { + formatter->add(0.0); + } + } else { + formatter->add(esriParam.fixed_value); + } + formatter->endNode(); + } + bAlreadyWritten = true; + } + } else if (!isWKT2) { + if (methodEPSGCode == + EPSG_CODE_METHOD_POPULAR_VISUALISATION_PSEUDO_MERCATOR) { + const double latitudeOrigin = parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + common::UnitOfMeasure::DEGREE); + if (latitudeOrigin != 0) { + throw io::FormattingException( + std::string("Unsupported value for ") + + EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN); + } + + bAlreadyWritten = true; + formatter->startNode(io::WKTConstants::PROJECTION, false); + formatter->addQuotedString("Mercator_1SP"); + formatter->endNode(); + + formatter->startNode(io::WKTConstants::PARAMETER, false); + formatter->addQuotedString("central_meridian"); + const double centralMeridian = parameterValueNumeric( + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + common::UnitOfMeasure::DEGREE); + formatter->add(centralMeridian); + formatter->endNode(); + + formatter->startNode(io::WKTConstants::PARAMETER, false); + formatter->addQuotedString("scale_factor"); + formatter->add(1.0); + formatter->endNode(); + + formatter->startNode(io::WKTConstants::PARAMETER, false); + formatter->addQuotedString("false_easting"); + const double falseEasting = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_FALSE_EASTING); + formatter->add(falseEasting); + formatter->endNode(); + + formatter->startNode(io::WKTConstants::PARAMETER, false); + formatter->addQuotedString("false_northing"); + const double falseNorthing = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_FALSE_NORTHING); + formatter->add(falseNorthing); + formatter->endNode(); + } else if (starts_with(methodName, "PROJ ")) { + bAlreadyWritten = true; + formatter->startNode(io::WKTConstants::PROJECTION, false); + formatter->addQuotedString("custom_proj4"); + formatter->endNode(); + } + } + + if (!bAlreadyWritten) { + l_method->_exportToWKT(formatter); + + const MethodMapping *mapping = + !isWKT2 ? getMapping(l_method.get()) : nullptr; + for (const auto ¶mValue : parameterValues()) { + paramValue->_exportToWKT(formatter, mapping); + } + } + + if (isWKT2) { + if (formatter->outputId()) { + formatID(formatter); + } + formatter->endNode(); + } else { + formatter->popOutputUnit(); + formatter->popOutputId(); + formatter->leave(); + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static bool createPROJ4WebMercator(const Conversion *conv, + io::PROJStringFormatter *formatter) { + const double centralMeridian = conv->parameterValueNumeric( + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + common::UnitOfMeasure::DEGREE); + + const double falseEasting = + conv->parameterValueNumericAsSI(EPSG_CODE_PARAMETER_FALSE_EASTING); + + const double falseNorthing = + conv->parameterValueNumericAsSI(EPSG_CODE_PARAMETER_FALSE_NORTHING); + + auto sourceCRS = conv->sourceCRS(); + auto geogCRS = dynamic_cast<const crs::GeographicCRS *>(sourceCRS.get()); + if (!geogCRS) { + return false; + } + + formatter->addStep("merc"); + const double a = geogCRS->ellipsoid()->semiMajorAxis().getSIValue(); + formatter->addParam("a", a); + formatter->addParam("b", a); + formatter->addParam("lat_ts", 0.0); + formatter->addParam("lon_0", centralMeridian); + formatter->addParam("x_0", falseEasting); + formatter->addParam("y_0", falseNorthing); + formatter->addParam("k", 1.0); + formatter->addParam("units", "m"); + formatter->addParam("nadgrids", "@null"); + formatter->addParam("wktext"); + formatter->addParam("no_defs"); + return true; +} + +// --------------------------------------------------------------------------- + +static bool +createPROJExtensionFromCustomProj(const Conversion *conv, + io::PROJStringFormatter *formatter, + bool forExtensionNode) { + const auto &methodName = conv->method()->nameStr(); + assert(starts_with(methodName, "PROJ ")); + auto tokens = split(methodName, ' '); + + formatter->addStep(tokens[1]); + + if (forExtensionNode) { + auto sourceCRS = conv->sourceCRS(); + auto geogCRS = + dynamic_cast<const crs::GeographicCRS *>(sourceCRS.get()); + if (!geogCRS) { + return false; + } + geogCRS->addDatumInfoToPROJString(formatter); + } + + for (size_t i = 2; i < tokens.size(); i++) { + auto kv = split(tokens[i], '='); + if (kv.size() == 2) { + formatter->addParam(kv[0], kv[1]); + } else { + formatter->addParam(tokens[i]); + } + } + + for (const auto &genOpParamvalue : conv->parameterValues()) { + auto opParamvalue = dynamic_cast<const OperationParameterValue *>( + genOpParamvalue.get()); + if (opParamvalue) { + const auto ¶mName = opParamvalue->parameter()->nameStr(); + const auto ¶mValue = opParamvalue->parameterValue(); + if (paramValue->type() == ParameterValue::Type::MEASURE) { + const auto &measure = paramValue->value(); + const auto unitType = measure.unit().type(); + if (unitType == common::UnitOfMeasure::Type::LINEAR) { + formatter->addParam(paramName, measure.getSIValue()); + } else if (unitType == common::UnitOfMeasure::Type::ANGULAR) { + formatter->addParam( + paramName, + measure.convertToUnit(common::UnitOfMeasure::DEGREE)); + } else { + formatter->addParam(paramName, measure.value()); + } + } + } + } + + if (forExtensionNode) { + formatter->addParam("wktext"); + formatter->addParam("no_defs"); + } + return true; +} +//! @endcond + +// --------------------------------------------------------------------------- + +void Conversion::addWKTExtensionNode(io::WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + if (!isWKT2) { + const auto &methodName = method()->nameStr(); + const int methodEPSGCode = method()->getEPSGCode(); + if (methodEPSGCode == + EPSG_CODE_METHOD_POPULAR_VISUALISATION_PSEUDO_MERCATOR || + nameStr() == "Popular Visualisation Mercator") { + + auto projFormatter = io::PROJStringFormatter::create( + io::PROJStringFormatter::Convention::PROJ_4); + if (createPROJ4WebMercator(this, projFormatter.get())) { + formatter->startNode(io::WKTConstants::EXTENSION, false); + formatter->addQuotedString("PROJ4"); + formatter->addQuotedString(projFormatter->toString()); + formatter->endNode(); + } + } else if (starts_with(methodName, "PROJ ")) { + auto projFormatter = io::PROJStringFormatter::create( + io::PROJStringFormatter::Convention::PROJ_4); + if (createPROJExtensionFromCustomProj(this, projFormatter.get(), + true)) { + formatter->startNode(io::WKTConstants::EXTENSION, false); + formatter->addQuotedString("PROJ4"); + formatter->addQuotedString(projFormatter->toString()); + formatter->endNode(); + } + } + } +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void Conversion::_exportToPROJString( + io::PROJStringFormatter *formatter) const // throw(FormattingException) +{ + const auto &l_method = method(); + const auto &methodName = l_method->nameStr(); + const int methodEPSGCode = l_method->getEPSGCode(); + const bool isZUnitConversion = + methodEPSGCode == EPSG_CODE_METHOD_CHANGE_VERTICAL_UNIT; + const bool isAffineParametric = + methodEPSGCode == EPSG_CODE_METHOD_AFFINE_PARAMETRIC_TRANSFORMATION; + const bool isGeographicGeocentric = + methodEPSGCode == EPSG_CODE_METHOD_GEOGRAPHIC_GEOCENTRIC; + const bool applySourceCRSModifiers = + !isZUnitConversion && !isAffineParametric && + !isAxisOrderReversal(methodEPSGCode) && !isGeographicGeocentric; + const bool applyTargetCRSModifiers = applySourceCRSModifiers; + + auto l_sourceCRS = sourceCRS(); + if (l_sourceCRS && applySourceCRSModifiers && + formatter->convention() == + io::PROJStringFormatter::Convention::PROJ_5) { + auto geogCRS = + dynamic_cast<const crs::GeographicCRS *>(l_sourceCRS.get()); + if (geogCRS) { + formatter->setOmitProjLongLatIfPossible(true); + formatter->startInversion(); + geogCRS->_exportToPROJString(formatter); + formatter->stopInversion(); + formatter->setOmitProjLongLatIfPossible(false); + } + + auto projCRS = + dynamic_cast<const crs::ProjectedCRS *>(l_sourceCRS.get()); + if (projCRS) { + formatter->startInversion(); + projCRS->addUnitConvertAndAxisSwap(formatter, false); + formatter->stopInversion(); + } + } + + const auto &convName = nameStr(); + bool bConversionDone = false; + bool bEllipsoidParametersDone = false; + bool useETMerc = false; + if (methodEPSGCode == EPSG_CODE_METHOD_TRANSVERSE_MERCATOR) { + // Check for UTM + int zone = 0; + bool north = true; + if (isUTM(zone, north)) { + bConversionDone = true; + formatter->addStep("utm"); + formatter->addParam("zone", zone); + if (!north) { + formatter->addParam("south"); + } + } else { + useETMerc = formatter->getUseETMercForTMerc(); + } + } else if (methodEPSGCode == + EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_A) { + const double azimuth = + parameterValueNumeric(EPSG_CODE_PARAMETER_AZIMUTH_INITIAL_LINE, + common::UnitOfMeasure::DEGREE); + const double angleRectifiedToSkewGrid = parameterValueNumeric( + EPSG_CODE_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID, + common::UnitOfMeasure::DEGREE); + // Map to Swiss Oblique Mercator / somerc + if (std::fabs(azimuth - 90) < 1e-4 && + std::fabs(angleRectifiedToSkewGrid - 90) < 1e-4) { + bConversionDone = true; + formatter->addStep("somerc"); + formatter->addParam( + "lat_0", parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_PROJECTION_CENTRE, + common::UnitOfMeasure::DEGREE)); + formatter->addParam( + "lon_0", parameterValueNumeric( + EPSG_CODE_PARAMETER_LONGITUDE_PROJECTION_CENTRE, + common::UnitOfMeasure::DEGREE)); + formatter->addParam( + "k_0", parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_SCALE_FACTOR_INITIAL_LINE)); + formatter->addParam("x_0", parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_FALSE_EASTING)); + formatter->addParam("y_0", parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_FALSE_NORTHING)); + } + } else if (methodEPSGCode == + EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B) { + const double azimuth = + parameterValueNumeric(EPSG_CODE_PARAMETER_AZIMUTH_INITIAL_LINE, + common::UnitOfMeasure::DEGREE); + const double angleRectifiedToSkewGrid = parameterValueNumeric( + EPSG_CODE_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID, + common::UnitOfMeasure::DEGREE); + // Map to Swiss Oblique Mercator / somerc + if (std::fabs(azimuth - 90) < 1e-4 && + std::fabs(angleRectifiedToSkewGrid - 90) < 1e-4) { + bConversionDone = true; + formatter->addStep("somerc"); + formatter->addParam( + "lat_0", parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_PROJECTION_CENTRE, + common::UnitOfMeasure::DEGREE)); + formatter->addParam( + "lon_0", parameterValueNumeric( + EPSG_CODE_PARAMETER_LONGITUDE_PROJECTION_CENTRE, + common::UnitOfMeasure::DEGREE)); + formatter->addParam( + "k_0", parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_SCALE_FACTOR_INITIAL_LINE)); + formatter->addParam( + "x_0", parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_EASTING_PROJECTION_CENTRE)); + formatter->addParam( + "y_0", parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_NORTHING_PROJECTION_CENTRE)); + } + } else if (methodEPSGCode == EPSG_CODE_METHOD_KROVAK_NORTH_ORIENTED) { + double colatitude = + parameterValueNumeric(EPSG_CODE_PARAMETER_COLATITUDE_CONE_AXIS, + common::UnitOfMeasure::DEGREE); + double latitudePseudoStandardParallel = parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_PSEUDO_STANDARD_PARALLEL, + common::UnitOfMeasure::DEGREE); + if (std::fabs(colatitude - 30.28813972222222) > 1e-8) { + throw io::FormattingException( + std::string("Unsupported value for ") + + EPSG_NAME_PARAMETER_COLATITUDE_CONE_AXIS); + } + if (std::fabs(latitudePseudoStandardParallel - 78.5) > 1e-8) { + throw io::FormattingException( + std::string("Unsupported value for ") + + EPSG_NAME_PARAMETER_LATITUDE_PSEUDO_STANDARD_PARALLEL); + } + } else if (methodEPSGCode == EPSG_CODE_METHOD_MERCATOR_VARIANT_A) { + double latitudeOrigin = parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + common::UnitOfMeasure::DEGREE); + if (latitudeOrigin != 0) { + throw io::FormattingException( + std::string("Unsupported value for ") + + EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN); + } + // PROJ.4 specific hack for webmercator + } else if (formatter->convention() == + io::PROJStringFormatter::Convention::PROJ_4 && + methodEPSGCode == + EPSG_CODE_METHOD_POPULAR_VISUALISATION_PSEUDO_MERCATOR) { + if (!createPROJ4WebMercator(this, formatter)) { + throw io::FormattingException( + std::string("Cannot export ") + + EPSG_NAME_METHOD_POPULAR_VISUALISATION_PSEUDO_MERCATOR + + " as PROJ.4 string outside of a ProjectedCRS context"); + } + bConversionDone = true; + bEllipsoidParametersDone = true; + } else if (ci_equal(convName, "Popular Visualisation Mercator")) { + if (formatter->convention() == + io::PROJStringFormatter::Convention::PROJ_4) { + if (!createPROJ4WebMercator(this, formatter)) { + throw io::FormattingException(concat( + "Cannot export ", convName, + " as PROJ.4 string outside of a ProjectedCRS context")); + } + } else { + formatter->addStep("webmerc"); + if (l_sourceCRS) { + datum::Ellipsoid::WGS84->_exportToPROJString(formatter); + } + } + bConversionDone = true; + bEllipsoidParametersDone = true; + } else if (starts_with(methodName, "PROJ ")) { + bConversionDone = true; + createPROJExtensionFromCustomProj(this, formatter, false); + } else if (formatter->convention() == + io::PROJStringFormatter::Convention::PROJ_5 && + isZUnitConversion) { + double convFactor = parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_UNIT_CONVERSION_SCALAR); + auto uom = common::UnitOfMeasure(std::string(), convFactor, + common::UnitOfMeasure::Type::LINEAR) + .exportToPROJString(); + auto reverse_uom = + common::UnitOfMeasure(std::string(), 1.0 / convFactor, + common::UnitOfMeasure::Type::LINEAR) + .exportToPROJString(); + if (!uom.empty()) { + formatter->addStep("unitconvert"); + formatter->addParam("z_in", uom); + formatter->addParam("z_out", "m"); + } else if (!reverse_uom.empty()) { + formatter->addStep("unitconvert"); + formatter->addParam("z_in", "m"); + formatter->addParam("z_out", reverse_uom); + } else { + formatter->addStep("affine"); + formatter->addParam("s33", convFactor); + } + bConversionDone = true; + bEllipsoidParametersDone = true; + } + + bool bAxisSpecFound = false; + if (!bConversionDone) { + const MethodMapping *mapping = getMapping(l_method.get()); + if (mapping && mapping->proj_name_main) { + formatter->addStep(useETMerc ? "etmerc" : mapping->proj_name_main); + if (mapping->proj_name_aux) { + if (internal::starts_with(mapping->proj_name_aux, "axis=")) { + bAxisSpecFound = true; + } + auto kv = split(mapping->proj_name_aux, '='); + if (kv.size() == 2) { + formatter->addParam(kv[0], kv[1]); + } else { + formatter->addParam(mapping->proj_name_aux); + } + } + + if (mapping->epsg_code == + EPSG_CODE_METHOD_POLAR_STEREOGRAPHIC_VARIANT_B) { + double latitudeStdParallel = parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_STD_PARALLEL, + common::UnitOfMeasure::DEGREE); + formatter->addParam("lat_0", + (latitudeStdParallel >= 0) ? 90.0 : -90.0); + } + + for (int i = 0; mapping->params[i] != nullptr; i++) { + const auto *param = mapping->params[i]; + if (!param->proj_name) { + continue; + } + auto value = + parameterValueMeasure(param->wkt2_name, param->epsg_code); + if (mapping->epsg_code == + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP && + strcmp(param->proj_name, "lat_1") == 0) { + formatter->addParam( + param->proj_name, + value.convertToUnit(common::UnitOfMeasure::DEGREE)); + formatter->addParam( + "lat_0", + value.convertToUnit(common::UnitOfMeasure::DEGREE)); + } else if (param->unit_type == + common::UnitOfMeasure::Type::ANGULAR) { + formatter->addParam( + param->proj_name, + value.convertToUnit(common::UnitOfMeasure::DEGREE)); + } else { + formatter->addParam(param->proj_name, value.getSIValue()); + } + } + + } else { + if (!exportToPROJStringGeneric(formatter)) { + throw io::FormattingException( + concat("Unsupported conversion method: ", methodName)); + } + } + } + + auto l_targetCRS = targetCRS(); + if (l_targetCRS && applyTargetCRSModifiers) { + if (!bEllipsoidParametersDone) { + auto targetGeogCRS = l_targetCRS->extractGeographicCRS(); + if (targetGeogCRS) { + if (formatter->convention() == + io::PROJStringFormatter::Convention::PROJ_4) { + targetGeogCRS->addDatumInfoToPROJString(formatter); + } else { + targetGeogCRS->ellipsoid()->_exportToPROJString(formatter); + targetGeogCRS->primeMeridian()->_exportToPROJString( + formatter); + } + } + } + + auto projCRS = + dynamic_cast<const crs::ProjectedCRS *>(l_targetCRS.get()); + if (projCRS) { + projCRS->addUnitConvertAndAxisSwap(formatter, bAxisSpecFound); + } + + auto derivedGeographicCRS = + dynamic_cast<const crs::DerivedGeographicCRS *>(l_targetCRS.get()); + if (derivedGeographicCRS) { + if (formatter->convention() == + io::PROJStringFormatter::Convention::PROJ_5) { + auto geogCRS = derivedGeographicCRS->baseCRS(); + formatter->setOmitProjLongLatIfPossible(true); + geogCRS->_exportToPROJString(formatter); + formatter->setOmitProjLongLatIfPossible(false); + } + } + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return whether a conversion is a [Universal Transverse Mercator] + * (https://proj4.org/operations/projections/utm.html) conversion. + * + * @param[out] zone UTM zone number between 1 and 60. + * @param[out] north true for UTM northern hemisphere, false for UTM southern + * hemisphere. + * @return true if it is a UTM conversion. + */ +bool Conversion::isUTM(int &zone, bool &north) const { + zone = 0; + north = true; + + if (method()->getEPSGCode() == EPSG_CODE_METHOD_TRANSVERSE_MERCATOR) { + // Check for UTM + + bool bLatitudeNatOriginUTM = false; + bool bScaleFactorUTM = false; + bool bFalseEastingUTM = false; + bool bFalseNorthingUTM = false; + for (const auto &genOpParamvalue : parameterValues()) { + auto opParamvalue = dynamic_cast<const OperationParameterValue *>( + genOpParamvalue.get()); + if (opParamvalue) { + const auto epsg_code = opParamvalue->parameter()->getEPSGCode(); + const auto &l_parameterValue = opParamvalue->parameterValue(); + if (l_parameterValue->type() == ParameterValue::Type::MEASURE) { + const auto &measure = l_parameterValue->value(); + if (epsg_code == + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN && + measure.value() == UTM_LATITUDE_OF_NATURAL_ORIGIN) { + bLatitudeNatOriginUTM = true; + } else if ( + epsg_code == + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN && + measure.unit() == common::UnitOfMeasure::DEGREE) { + double dfZone = (measure.value() + 183.0) / 6.0; + if (dfZone > 0.9 && dfZone < 60.1 && + std::abs(dfZone - std::round(dfZone)) < 1e-10) { + zone = static_cast<int>(std::lround(dfZone)); + } + } else if ( + epsg_code == + EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN && + measure.value() == UTM_SCALE_FACTOR) { + bScaleFactorUTM = true; + } else if (epsg_code == EPSG_CODE_PARAMETER_FALSE_EASTING && + measure.value() == UTM_FALSE_EASTING && + measure.unit() == common::UnitOfMeasure::METRE) { + bFalseEastingUTM = true; + } else if (epsg_code == + EPSG_CODE_PARAMETER_FALSE_NORTHING && + measure.unit() == common::UnitOfMeasure::METRE) { + if (measure.value() == UTM_NORTH_FALSE_NORTHING) { + bFalseNorthingUTM = true; + north = true; + } else if (measure.value() == + UTM_SOUTH_FALSE_NORTHING) { + bFalseNorthingUTM = true; + north = false; + } + } + } + } + } + if (bLatitudeNatOriginUTM && zone > 0 && bScaleFactorUTM && + bFalseEastingUTM && bFalseNorthingUTM) { + return true; + } + } + return false; +} + +// --------------------------------------------------------------------------- + +/** \brief Return a Conversion object where some parameters are better + * identified. + * + * @return a new Conversion. + */ +ConversionNNPtr Conversion::identify() const { + auto newConversion = Conversion::nn_make_shared<Conversion>(*this); + newConversion->assignSelf(newConversion); + + if (method()->getEPSGCode() == EPSG_CODE_METHOD_TRANSVERSE_MERCATOR) { + // Check for UTM + int zone = 0; + bool north = true; + if (isUTM(zone, north)) { + newConversion->setProperties( + getUTMConversionProperty(util::PropertyMap(), zone, north)); + } + } + + return newConversion; +} + +//! @cond Doxygen_Suppress +// --------------------------------------------------------------------------- + +InvalidOperation::InvalidOperation(const char *message) : Exception(message) {} + +// --------------------------------------------------------------------------- + +InvalidOperation::InvalidOperation(const std::string &message) + : Exception(message) {} + +// --------------------------------------------------------------------------- + +InvalidOperation::InvalidOperation(const InvalidOperation &) = default; + +// --------------------------------------------------------------------------- + +InvalidOperation::~InvalidOperation() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct Transformation::Private { + + TransformationPtr forwardOperation_{}; + + TransformationNNPtr registerInv(util::BaseObjectNNPtr thisIn, + TransformationNNPtr invTransform); +}; +//! @endcond + +// --------------------------------------------------------------------------- + +Transformation::Transformation( + const crs::CRSNNPtr &sourceCRSIn, const crs::CRSNNPtr &targetCRSIn, + const crs::CRSPtr &interpolationCRSIn, const OperationMethodNNPtr &methodIn, + const std::vector<GeneralParameterValueNNPtr> &values, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) + : SingleOperation(methodIn), d(internal::make_unique<Private>()) { + setParameterValues(values); + setCRSs(sourceCRSIn, targetCRSIn, interpolationCRSIn); + setAccuracies(accuracies); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +Transformation::~Transformation() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the source crs::CRS of the transformation. + * + * @return the source CRS. + */ +const crs::CRSNNPtr &Transformation::sourceCRS() PROJ_CONST_DEFN { + return CoordinateOperation::getPrivate()->strongRef_->sourceCRS_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the target crs::CRS of the transformation. + * + * @return the target CRS. + */ +const crs::CRSNNPtr &Transformation::targetCRS() PROJ_CONST_DEFN { + return CoordinateOperation::getPrivate()->strongRef_->targetCRS_; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +/** \brief Return the TOWGS84 parameters of the transformation. + * + * If this transformation uses Coordinate Frame Rotation, Position Vector + * transformation or Geocentric translations, a vector of 7 double values + * using the Position Vector convention (EPSG:9606) is returned. Those values + * can be used as the value of the WKT1 TOWGS84 parameter or + * PROJ +towgs84 parameter. + * + * @return a vector of 7 values if valid, otherwise a io::FormattingException + * is thrown. + * @throws io::FormattingException + */ +std::vector<double> +Transformation::getTOWGS84Parameters() const // throw(io::FormattingException) +{ + // GDAL WKT1 assumes EPSG:9606 / Position Vector convention + + bool sevenParamsTransform = false; + bool threeParamsTransform = false; + bool invertRotSigns = false; + const auto &l_method = method(); + const auto &methodName = l_method->nameStr(); + const int methodEPSGCode = l_method->getEPSGCode(); + const auto paramCount = parameterValues().size(); + if ((paramCount == 7 && + ci_find(methodName, "Coordinate Frame") != std::string::npos) || + methodEPSGCode == EPSG_CODE_METHOD_COORDINATE_FRAME_GEOCENTRIC || + methodEPSGCode == EPSG_CODE_METHOD_COORDINATE_FRAME_GEOGRAPHIC_2D || + methodEPSGCode == EPSG_CODE_METHOD_COORDINATE_FRAME_GEOGRAPHIC_3D) { + sevenParamsTransform = true; + invertRotSigns = true; + } else if ((paramCount == 7 && + ci_find(methodName, "Position Vector") != std::string::npos) || + methodEPSGCode == EPSG_CODE_METHOD_POSITION_VECTOR_GEOCENTRIC || + methodEPSGCode == + EPSG_CODE_METHOD_POSITION_VECTOR_GEOGRAPHIC_2D || + methodEPSGCode == + EPSG_CODE_METHOD_POSITION_VECTOR_GEOGRAPHIC_3D) { + sevenParamsTransform = true; + invertRotSigns = false; + } else if ((paramCount == 3 && + ci_find(methodName, "Geocentric translations") != + std::string::npos) || + methodEPSGCode == + EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOCENTRIC || + methodEPSGCode == + EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOGRAPHIC_2D || + methodEPSGCode == + EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOGRAPHIC_3D) { + threeParamsTransform = true; + } + + if (threeParamsTransform || sevenParamsTransform) { + std::vector<double> params(7, 0.0); + bool foundX = false; + bool foundY = false; + bool foundZ = false; + bool foundRotX = false; + bool foundRotY = false; + bool foundRotZ = false; + bool foundScale = false; + const double rotSign = invertRotSigns ? -1.0 : 1.0; + for (const auto &genOpParamvalue : parameterValues()) { + auto opParamvalue = dynamic_cast<const OperationParameterValue *>( + genOpParamvalue.get()); + if (opParamvalue) { + const auto ¶meter = opParamvalue->parameter(); + const auto epsg_code = parameter->getEPSGCode(); + const auto &l_parameterValue = opParamvalue->parameterValue(); + if (l_parameterValue->type() == ParameterValue::Type::MEASURE) { + const auto &measure = l_parameterValue->value(); + if (epsg_code == EPSG_CODE_PARAMETER_X_AXIS_TRANSLATION) { + params[0] = measure.getSIValue(); + foundX = true; + } else if (epsg_code == + EPSG_CODE_PARAMETER_Y_AXIS_TRANSLATION) { + params[1] = measure.getSIValue(); + foundY = true; + } else if (epsg_code == + EPSG_CODE_PARAMETER_Z_AXIS_TRANSLATION) { + params[2] = measure.getSIValue(); + foundZ = true; + } else if (epsg_code == + EPSG_CODE_PARAMETER_X_AXIS_ROTATION) { + params[3] = rotSign * + measure.convertToUnit( + common::UnitOfMeasure::ARC_SECOND); + foundRotX = true; + } else if (epsg_code == + EPSG_CODE_PARAMETER_Y_AXIS_ROTATION) { + params[4] = rotSign * + measure.convertToUnit( + common::UnitOfMeasure::ARC_SECOND); + foundRotY = true; + } else if (epsg_code == + EPSG_CODE_PARAMETER_Z_AXIS_ROTATION) { + params[5] = rotSign * + measure.convertToUnit( + common::UnitOfMeasure::ARC_SECOND); + foundRotZ = true; + } else if (epsg_code == + EPSG_CODE_PARAMETER_SCALE_DIFFERENCE) { + params[6] = measure.convertToUnit( + common::UnitOfMeasure::PARTS_PER_MILLION); + foundScale = true; + } + } + } + } + if (foundX && foundY && foundZ && + (threeParamsTransform || + (foundRotX && foundRotY && foundRotZ && foundScale))) { + return params; + } else { + throw io::FormattingException( + "Missing required parameter values in transformation"); + } + } + +#if 0 + if (methodEPSGCode == EPSG_CODE_METHOD_GEOGRAPHIC2D_OFFSETS || + methodEPSGCode == EPSG_CODE_METHOD_GEOGRAPHIC3D_OFFSETS) { + auto offsetLat = + parameterValueMeasure(EPSG_CODE_PARAMETER_LATITUDE_OFFSET); + auto offsetLong = + parameterValueMeasure(EPSG_CODE_PARAMETER_LONGITUDE_OFFSET); + + auto offsetHeight = + parameterValueMeasure(EPSG_CODE_PARAMETER_VERTICAL_OFFSET); + + if (offsetLat.getSIValue() == 0.0 && offsetLong.getSIValue() == 0.0 && + offsetHeight.getSIValue() == 0.0) { + std::vector<double> params(7, 0.0); + return params; + } + } +#endif + + throw io::FormattingException( + "Transformation cannot be formatted as WKT1 TOWGS84 parameters"); +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a transformation from a vector of GeneralParameterValue. + * + * @param properties See \ref general_properties. At minimum the name should be + * defined. + * @param sourceCRSIn Source CRS. + * @param targetCRSIn Target CRS. + * @param interpolationCRSIn Interpolation CRS (might be null) + * @param methodIn Operation method. + * @param values Vector of GeneralOperationParameterNNPtr. + * @param accuracies Vector of positional accuracy (might be empty). + * @return new Transformation. + * @throws InvalidOperation + */ +TransformationNNPtr Transformation::create( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, const crs::CRSPtr &interpolationCRSIn, + const OperationMethodNNPtr &methodIn, + const std::vector<GeneralParameterValueNNPtr> &values, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + if (methodIn->parameters().size() != values.size()) { + throw InvalidOperation( + "Inconsistent number of parameters and parameter values"); + } + auto conv = Transformation::nn_make_shared<Transformation>( + sourceCRSIn, targetCRSIn, interpolationCRSIn, methodIn, values, + accuracies); + conv->assignSelf(conv); + conv->setProperties(properties); + return conv; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a transformation ands its OperationMethod. + * + * @param propertiesTransformation The \ref general_properties of the + * Transformation. + * At minimum the name should be defined. + * @param sourceCRSIn Source CRS. + * @param targetCRSIn Target CRS. + * @param interpolationCRSIn Interpolation CRS (might be null) + * @param propertiesOperationMethod The \ref general_properties of the + * OperationMethod. + * At minimum the name should be defined. + * @param parameters Vector of parameters of the operation method. + * @param values Vector of ParameterValueNNPtr. Constraint: + * values.size() == parameters.size() + * @param accuracies Vector of positional accuracy (might be empty). + * @return new Transformation. + * @throws InvalidOperation + */ +TransformationNNPtr +Transformation::create(const util::PropertyMap &propertiesTransformation, + const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, + const crs::CRSPtr &interpolationCRSIn, + const util::PropertyMap &propertiesOperationMethod, + const std::vector<OperationParameterNNPtr> ¶meters, + const std::vector<ParameterValueNNPtr> &values, + const std::vector<metadata::PositionalAccuracyNNPtr> + &accuracies) // throw InvalidOperation +{ + OperationMethodNNPtr op( + OperationMethod::create(propertiesOperationMethod, parameters)); + + if (parameters.size() != values.size()) { + throw InvalidOperation( + "Inconsistent number of parameters and parameter values"); + } + std::vector<GeneralParameterValueNNPtr> generalParameterValues; + generalParameterValues.reserve(values.size()); + for (size_t i = 0; i < values.size(); i++) { + generalParameterValues.push_back( + OperationParameterValue::create(parameters[i], values[i])); + } + return create(propertiesTransformation, sourceCRSIn, targetCRSIn, + interpolationCRSIn, op, generalParameterValues, accuracies); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +// --------------------------------------------------------------------------- + +static TransformationNNPtr createSevenParamsTransform( + const util::PropertyMap &properties, + const util::PropertyMap &methodProperties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, double translationXMetre, + double translationYMetre, double translationZMetre, + double rotationXArcSecond, double rotationYArcSecond, + double rotationZArcSecond, double scaleDifferencePPM, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + return Transformation::create( + properties, sourceCRSIn, targetCRSIn, nullptr, methodProperties, + VectorOfParameters{ + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_X_AXIS_TRANSLATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_Y_AXIS_TRANSLATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_Z_AXIS_TRANSLATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_X_AXIS_ROTATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_Y_AXIS_ROTATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_Z_AXIS_ROTATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_SCALE_DIFFERENCE), + }, + createParams(common::Length(translationXMetre), + common::Length(translationYMetre), + common::Length(translationZMetre), + common::Angle(rotationXArcSecond, + common::UnitOfMeasure::ARC_SECOND), + common::Angle(rotationYArcSecond, + common::UnitOfMeasure::ARC_SECOND), + common::Angle(rotationZArcSecond, + common::UnitOfMeasure::ARC_SECOND), + common::Scale(scaleDifferencePPM, + common::UnitOfMeasure::PARTS_PER_MILLION)), + accuracies); +} + +// --------------------------------------------------------------------------- + +static void getTransformationType(const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, + bool &isGeocentric, bool &isGeog2D, + bool &isGeog3D) { + auto sourceCRSGeod = + dynamic_cast<const crs::GeodeticCRS *>(sourceCRSIn.get()); + auto targetCRSGeod = + dynamic_cast<const crs::GeodeticCRS *>(targetCRSIn.get()); + isGeocentric = sourceCRSGeod && sourceCRSGeod->isGeocentric() && + targetCRSGeod && targetCRSGeod->isGeocentric(); + if (isGeocentric) { + isGeog2D = false; + isGeog3D = false; + return; + } + isGeocentric = false; + + auto sourceCRSGeog = + dynamic_cast<const crs::GeographicCRS *>(sourceCRSIn.get()); + auto targetCRSGeog = + dynamic_cast<const crs::GeographicCRS *>(targetCRSIn.get()); + if (!sourceCRSGeog || !targetCRSGeog) { + throw InvalidOperation("Inconsistent CRS type"); + } + const auto nSrcAxisCount = + sourceCRSGeog->coordinateSystem()->axisList().size(); + const auto nTargetAxisCount = + targetCRSGeog->coordinateSystem()->axisList().size(); + isGeog2D = nSrcAxisCount == 2 && nTargetAxisCount == 2; + isGeog3D = !isGeog2D && nSrcAxisCount >= 2 && nTargetAxisCount >= 2; +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a transformation with Geocentric Translations method. + * + * @param properties See \ref general_properties of the Transformation. + * At minimum the name should be defined. + * @param sourceCRSIn Source CRS. + * @param targetCRSIn Target CRS. + * @param translationXMetre Value of the Translation_X parameter (in metre). + * @param translationYMetre Value of the Translation_Y parameter (in metre). + * @param translationZMetre Value of the Translation_Z parameter (in metre). + * @param accuracies Vector of positional accuracy (might be empty). + * @return new Transformation. + */ +TransformationNNPtr Transformation::createGeocentricTranslations( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, double translationXMetre, + double translationYMetre, double translationZMetre, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + bool isGeocentric; + bool isGeog2D; + bool isGeog3D; + getTransformationType(sourceCRSIn, targetCRSIn, isGeocentric, isGeog2D, + isGeog3D); + return create( + properties, sourceCRSIn, targetCRSIn, nullptr, + createMethodMapNameEPSGCode( + isGeocentric + ? EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOCENTRIC + : isGeog2D + ? EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOGRAPHIC_2D + : EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOGRAPHIC_3D), + VectorOfParameters{ + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_X_AXIS_TRANSLATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_Y_AXIS_TRANSLATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_Z_AXIS_TRANSLATION), + }, + createParams(common::Length(translationXMetre), + common::Length(translationYMetre), + common::Length(translationZMetre)), + accuracies); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a transformation with Position vector transformation + * method. + * + * This is similar to createCoordinateFrameRotation(), except that the sign of + * the rotation terms is inverted. + * + * @param properties See \ref general_properties of the Transformation. + * At minimum the name should be defined. + * @param sourceCRSIn Source CRS. + * @param targetCRSIn Target CRS. + * @param translationXMetre Value of the Translation_X parameter (in metre). + * @param translationYMetre Value of the Translation_Y parameter (in metre). + * @param translationZMetre Value of the Translation_Z parameter (in metre). + * @param rotationXArcSecond Value of the Rotation_X parameter (in + * arc-second). + * @param rotationYArcSecond Value of the Rotation_Y parameter (in + * arc-second). + * @param rotationZArcSecond Value of the Rotation_Z parameter (in + * arc-second). + * @param scaleDifferencePPM Value of the Scale_Difference parameter (in + * parts-per-million). + * @param accuracies Vector of positional accuracy (might be empty). + * @return new Transformation. + */ +TransformationNNPtr Transformation::createPositionVector( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, double translationXMetre, + double translationYMetre, double translationZMetre, + double rotationXArcSecond, double rotationYArcSecond, + double rotationZArcSecond, double scaleDifferencePPM, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + + bool isGeocentric; + bool isGeog2D; + bool isGeog3D; + getTransformationType(sourceCRSIn, targetCRSIn, isGeocentric, isGeog2D, + isGeog3D); + return createSevenParamsTransform( + properties, + createMethodMapNameEPSGCode( + isGeocentric + ? EPSG_CODE_METHOD_POSITION_VECTOR_GEOCENTRIC + : isGeog2D ? EPSG_CODE_METHOD_POSITION_VECTOR_GEOGRAPHIC_2D + : EPSG_CODE_METHOD_POSITION_VECTOR_GEOGRAPHIC_3D), + sourceCRSIn, targetCRSIn, translationXMetre, translationYMetre, + translationZMetre, rotationXArcSecond, rotationYArcSecond, + rotationZArcSecond, scaleDifferencePPM, accuracies); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a transformation with Coordinate Frame Rotation method. + * + * This is similar to createPositionVector(), except that the sign of + * the rotation terms is inverted. + * + * @param properties See \ref general_properties of the Transformation. + * At minimum the name should be defined. + * @param sourceCRSIn Source CRS. + * @param targetCRSIn Target CRS. + * @param translationXMetre Value of the Translation_X parameter (in metre). + * @param translationYMetre Value of the Translation_Y parameter (in metre). + * @param translationZMetre Value of the Translation_Z parameter (in metre). + * @param rotationXArcSecond Value of the Rotation_X parameter (in + * arc-second). + * @param rotationYArcSecond Value of the Rotation_Y parameter (in + * arc-second). + * @param rotationZArcSecond Value of the Rotation_Z parameter (in + * arc-second). + * @param scaleDifferencePPM Value of the Scale_Difference parameter (in + * parts-per-million). + * @param accuracies Vector of positional accuracy (might be empty). + * @return new Transformation. + */ +TransformationNNPtr Transformation::createCoordinateFrameRotation( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, double translationXMetre, + double translationYMetre, double translationZMetre, + double rotationXArcSecond, double rotationYArcSecond, + double rotationZArcSecond, double scaleDifferencePPM, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + bool isGeocentric; + bool isGeog2D; + bool isGeog3D; + getTransformationType(sourceCRSIn, targetCRSIn, isGeocentric, isGeog2D, + isGeog3D); + return createSevenParamsTransform( + properties, + createMethodMapNameEPSGCode( + isGeocentric + ? EPSG_CODE_METHOD_COORDINATE_FRAME_GEOCENTRIC + : isGeog2D ? EPSG_CODE_METHOD_COORDINATE_FRAME_GEOGRAPHIC_2D + : EPSG_CODE_METHOD_COORDINATE_FRAME_GEOGRAPHIC_3D), + sourceCRSIn, targetCRSIn, translationXMetre, translationYMetre, + translationZMetre, rotationXArcSecond, rotationYArcSecond, + rotationZArcSecond, scaleDifferencePPM, accuracies); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static TransformationNNPtr createFifteenParamsTransform( + const util::PropertyMap &properties, + const util::PropertyMap &methodProperties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, double translationXMetre, + double translationYMetre, double translationZMetre, + double rotationXArcSecond, double rotationYArcSecond, + double rotationZArcSecond, double scaleDifferencePPM, + double rateTranslationX, double rateTranslationY, double rateTranslationZ, + double rateRotationX, double rateRotationY, double rateRotationZ, + double rateScaleDifference, double referenceEpochYear, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + return Transformation::create( + properties, sourceCRSIn, targetCRSIn, nullptr, methodProperties, + VectorOfParameters{ + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_X_AXIS_TRANSLATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_Y_AXIS_TRANSLATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_Z_AXIS_TRANSLATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_X_AXIS_ROTATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_Y_AXIS_ROTATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_Z_AXIS_ROTATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_SCALE_DIFFERENCE), + + createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_RATE_X_AXIS_TRANSLATION), + createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_RATE_Y_AXIS_TRANSLATION), + createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_RATE_Z_AXIS_TRANSLATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_RATE_X_AXIS_ROTATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_RATE_Y_AXIS_ROTATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_RATE_Z_AXIS_ROTATION), + createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_RATE_SCALE_DIFFERENCE), + + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_REFERENCE_EPOCH), + }, + VectorOfValues{ + common::Length(translationXMetre), + common::Length(translationYMetre), + common::Length(translationZMetre), + common::Angle(rotationXArcSecond, + common::UnitOfMeasure::ARC_SECOND), + common::Angle(rotationYArcSecond, + common::UnitOfMeasure::ARC_SECOND), + common::Angle(rotationZArcSecond, + common::UnitOfMeasure::ARC_SECOND), + common::Scale(scaleDifferencePPM, + common::UnitOfMeasure::PARTS_PER_MILLION), + common::Measure(rateTranslationX, + common::UnitOfMeasure::METRE_PER_YEAR), + common::Measure(rateTranslationY, + common::UnitOfMeasure::METRE_PER_YEAR), + common::Measure(rateTranslationZ, + common::UnitOfMeasure::METRE_PER_YEAR), + common::Measure(rateRotationX, + common::UnitOfMeasure::ARC_SECOND_PER_YEAR), + common::Measure(rateRotationY, + common::UnitOfMeasure::ARC_SECOND_PER_YEAR), + common::Measure(rateRotationZ, + common::UnitOfMeasure::ARC_SECOND_PER_YEAR), + common::Measure(rateScaleDifference, + common::UnitOfMeasure::PPM_PER_YEAR), + common::Measure(referenceEpochYear, common::UnitOfMeasure::YEAR), + }, + accuracies); +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a transformation with Time Dependent position vector + * transformation method. + * + * This is similar to createTimeDependentCoordinateFrameRotation(), except that + * the sign of + * the rotation terms is inverted. + * + * This method is defined as [EPSG:1053] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::1053) + * + * @param properties See \ref general_properties of the Transformation. + * At minimum the name should be defined. + * @param sourceCRSIn Source CRS. + * @param targetCRSIn Target CRS. + * @param translationXMetre Value of the Translation_X parameter (in metre). + * @param translationYMetre Value of the Translation_Y parameter (in metre). + * @param translationZMetre Value of the Translation_Z parameter (in metre). + * @param rotationXArcSecond Value of the Rotation_X parameter (in + * arc-second). + * @param rotationYArcSecond Value of the Rotation_Y parameter (in + * arc-second). + * @param rotationZArcSecond Value of the Rotation_Z parameter (in + * arc-second). + * @param scaleDifferencePPM Value of the Scale_Difference parameter (in + * parts-per-million). + * @param rateTranslationX Value of the rate of change of X-axis translation (in + * metre/year) + * @param rateTranslationY Value of the rate of change of Y-axis translation (in + * metre/year) + * @param rateTranslationZ Value of the rate of change of Z-axis translation (in + * metre/year) + * @param rateRotationX Value of the rate of change of X-axis rotation (in + * arc-second/year) + * @param rateRotationY Value of the rate of change of Y-axis rotation (in + * arc-second/year) + * @param rateRotationZ Value of the rate of change of Z-axis rotation (in + * arc-second/year) + * @param rateScaleDifference Value of the rate of change of scale difference + * (in PPM/year) + * @param referenceEpochYear Parameter reference epoch (in decimal year) + * @param accuracies Vector of positional accuracy (might be empty). + * @return new Transformation. + */ +TransformationNNPtr Transformation::createTimeDependentPositionVector( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, double translationXMetre, + double translationYMetre, double translationZMetre, + double rotationXArcSecond, double rotationYArcSecond, + double rotationZArcSecond, double scaleDifferencePPM, + double rateTranslationX, double rateTranslationY, double rateTranslationZ, + double rateRotationX, double rateRotationY, double rateRotationZ, + double rateScaleDifference, double referenceEpochYear, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + bool isGeocentric; + bool isGeog2D; + bool isGeog3D; + getTransformationType(sourceCRSIn, targetCRSIn, isGeocentric, isGeog2D, + isGeog3D); + return createFifteenParamsTransform( + properties, + createMethodMapNameEPSGCode( + isGeocentric + ? EPSG_CODE_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOCENTRIC + : isGeog2D + ? EPSG_CODE_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOGRAPHIC_2D + : EPSG_CODE_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOGRAPHIC_3D), + sourceCRSIn, targetCRSIn, translationXMetre, translationYMetre, + translationZMetre, rotationXArcSecond, rotationYArcSecond, + rotationZArcSecond, scaleDifferencePPM, rateTranslationX, + rateTranslationY, rateTranslationZ, rateRotationX, rateRotationY, + rateRotationZ, rateScaleDifference, referenceEpochYear, accuracies); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a transformation with Time Dependent Position coordinate + * frame rotation transformation method. + * + * This is similar to createTimeDependentPositionVector(), except that the sign + * of + * the rotation terms is inverted. + * + * This method is defined as [EPSG:1056] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::1056) + * + * @param properties See \ref general_properties of the Transformation. + * At minimum the name should be defined. + * @param sourceCRSIn Source CRS. + * @param targetCRSIn Target CRS. + * @param translationXMetre Value of the Translation_X parameter (in metre). + * @param translationYMetre Value of the Translation_Y parameter (in metre). + * @param translationZMetre Value of the Translation_Z parameter (in metre). + * @param rotationXArcSecond Value of the Rotation_X parameter (in + * arc-second). + * @param rotationYArcSecond Value of the Rotation_Y parameter (in + * arc-second). + * @param rotationZArcSecond Value of the Rotation_Z parameter (in + * arc-second). + * @param scaleDifferencePPM Value of the Scale_Difference parameter (in + * parts-per-million). + * @param rateTranslationX Value of the rate of change of X-axis translation (in + * metre/year) + * @param rateTranslationY Value of the rate of change of Y-axis translation (in + * metre/year) + * @param rateTranslationZ Value of the rate of change of Z-axis translation (in + * metre/year) + * @param rateRotationX Value of the rate of change of X-axis rotation (in + * arc-second/year) + * @param rateRotationY Value of the rate of change of Y-axis rotation (in + * arc-second/year) + * @param rateRotationZ Value of the rate of change of Z-axis rotation (in + * arc-second/year) + * @param rateScaleDifference Value of the rate of change of scale difference + * (in PPM/year) + * @param referenceEpochYear Parameter reference epoch (in decimal year) + * @param accuracies Vector of positional accuracy (might be empty). + * @return new Transformation. + * @throws InvalidOperation + */ +TransformationNNPtr Transformation::createTimeDependentCoordinateFrameRotation( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, double translationXMetre, + double translationYMetre, double translationZMetre, + double rotationXArcSecond, double rotationYArcSecond, + double rotationZArcSecond, double scaleDifferencePPM, + double rateTranslationX, double rateTranslationY, double rateTranslationZ, + double rateRotationX, double rateRotationY, double rateRotationZ, + double rateScaleDifference, double referenceEpochYear, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + + bool isGeocentric; + bool isGeog2D; + bool isGeog3D; + getTransformationType(sourceCRSIn, targetCRSIn, isGeocentric, isGeog2D, + isGeog3D); + return createFifteenParamsTransform( + properties, + createMethodMapNameEPSGCode( + isGeocentric + ? EPSG_CODE_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOCENTRIC + : isGeog2D + ? EPSG_CODE_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOGRAPHIC_2D + : EPSG_CODE_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOGRAPHIC_3D), + sourceCRSIn, targetCRSIn, translationXMetre, translationYMetre, + translationZMetre, rotationXArcSecond, rotationYArcSecond, + rotationZArcSecond, scaleDifferencePPM, rateTranslationX, + rateTranslationY, rateTranslationZ, rateRotationX, rateRotationY, + rateRotationZ, rateScaleDifference, referenceEpochYear, accuracies); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static TransformationNNPtr _createMolodensky( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, int methodEPSGCode, + double translationXMetre, double translationYMetre, + double translationZMetre, double semiMajorAxisDifferenceMetre, + double flattingDifference, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + return Transformation::create( + properties, sourceCRSIn, targetCRSIn, nullptr, + createMethodMapNameEPSGCode(methodEPSGCode), + VectorOfParameters{ + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_X_AXIS_TRANSLATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_Y_AXIS_TRANSLATION), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_Z_AXIS_TRANSLATION), + createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_SEMI_MAJOR_AXIS_DIFFERENCE), + createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_FLATTENING_DIFFERENCE), + }, + createParams( + common::Length(translationXMetre), + common::Length(translationYMetre), + common::Length(translationZMetre), + common::Length(semiMajorAxisDifferenceMetre), + common::Measure(flattingDifference, common::UnitOfMeasure::NONE)), + accuracies); +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a transformation with Molodensky method. + * + * @see createAbridgedMolodensky() for a related method. + * + * This method is defined as [EPSG:9604] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9604) + * + * @param properties See \ref general_properties of the Transformation. + * At minimum the name should be defined. + * @param sourceCRSIn Source CRS. + * @param targetCRSIn Target CRS. + * @param translationXMetre Value of the Translation_X parameter (in metre). + * @param translationYMetre Value of the Translation_Y parameter (in metre). + * @param translationZMetre Value of the Translation_Z parameter (in metre). + * @param semiMajorAxisDifferenceMetre The difference between the semi-major + * axis values of the ellipsoids used in the target and source CRS (in metre). + * @param flattingDifference The difference between the flattening values of + * the ellipsoids used in the target and source CRS. + * @param accuracies Vector of positional accuracy (might be empty). + * @return new Transformation. + * @throws InvalidOperation + */ +TransformationNNPtr Transformation::createMolodensky( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, double translationXMetre, + double translationYMetre, double translationZMetre, + double semiMajorAxisDifferenceMetre, double flattingDifference, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + return _createMolodensky( + properties, sourceCRSIn, targetCRSIn, EPSG_CODE_METHOD_MOLODENSKY, + translationXMetre, translationYMetre, translationZMetre, + semiMajorAxisDifferenceMetre, flattingDifference, accuracies); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a transformation with Abridged Molodensky method. + * + * @see createdMolodensky() for a related method. + * + * This method is defined as [EPSG:9605] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9605) + * + * @param properties See \ref general_properties of the Transformation. + * At minimum the name should be defined. + * @param sourceCRSIn Source CRS. + * @param targetCRSIn Target CRS. + * @param translationXMetre Value of the Translation_X parameter (in metre). + * @param translationYMetre Value of the Translation_Y parameter (in metre). + * @param translationZMetre Value of the Translation_Z parameter (in metre). + * @param semiMajorAxisDifferenceMetre The difference between the semi-major + * axis values of the ellipsoids used in the target and source CRS (in metre). + * @param flattingDifference The difference between the flattening values of + * the ellipsoids used in the target and source CRS. + * @param accuracies Vector of positional accuracy (might be empty). + * @return new Transformation. + * @throws InvalidOperation + */ +TransformationNNPtr Transformation::createAbridgedMolodensky( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, double translationXMetre, + double translationYMetre, double translationZMetre, + double semiMajorAxisDifferenceMetre, double flattingDifference, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + return _createMolodensky(properties, sourceCRSIn, targetCRSIn, + EPSG_CODE_METHOD_ABRIDGED_MOLODENSKY, + translationXMetre, translationYMetre, + translationZMetre, semiMajorAxisDifferenceMetre, + flattingDifference, accuracies); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a transformation from TOWGS84 parameters. + * + * This is a helper of createPositionVector() with the source CRS being the + * GeographicCRS of sourceCRSIn, and the target CRS being EPSG:4326 + * + * @param sourceCRSIn Source CRS. + * @param TOWGS84Parameters The vector of 3 double values (Translation_X,_Y,_Z) + * or 7 double values (Translation_X,_Y,_Z, Rotation_X,_Y,_Z, Scale_Difference) + * passed to createPositionVector() + * @return new Transformation. + * @throws InvalidOperation + */ +TransformationNNPtr Transformation::createTOWGS84( + const crs::CRSNNPtr &sourceCRSIn, + const std::vector<double> &TOWGS84Parameters) // throw InvalidOperation +{ + if (TOWGS84Parameters.size() != 3 && TOWGS84Parameters.size() != 7) { + throw InvalidOperation( + "Invalid number of elements in TOWGS84Parameters"); + } + + crs::CRSPtr transformSourceCRS = sourceCRSIn->extractGeographicCRS(); + if (!transformSourceCRS) { + throw InvalidOperation( + "Cannot find GeographicCRS in sourceCRS of TOWGS84 transformation"); + } + + if (TOWGS84Parameters.size() == 3) { + return createGeocentricTranslations( + util::PropertyMap().set(common::IdentifiedObject::NAME_KEY, + concat("Transformation from ", + transformSourceCRS->nameStr(), + " to WGS84")), + NN_NO_CHECK(transformSourceCRS), crs::GeographicCRS::EPSG_4326, + TOWGS84Parameters[0], TOWGS84Parameters[1], TOWGS84Parameters[2], + {}); + } + + return createPositionVector( + util::PropertyMap().set(common::IdentifiedObject::NAME_KEY, + concat("Transformation from ", + transformSourceCRS->nameStr(), + " to WGS84")), + NN_NO_CHECK(transformSourceCRS), crs::GeographicCRS::EPSG_4326, + TOWGS84Parameters[0], TOWGS84Parameters[1], TOWGS84Parameters[2], + TOWGS84Parameters[3], TOWGS84Parameters[4], TOWGS84Parameters[5], + TOWGS84Parameters[6], {}); +} + +// --------------------------------------------------------------------------- +/** \brief Instanciate a transformation with NTv2 method. + * + * @param properties See \ref general_properties of the Transformation. + * At minimum the name should be defined. + * @param sourceCRSIn Source CRS. + * @param targetCRSIn Target CRS. + * @param filename NTv2 filename. + * @param accuracies Vector of positional accuracy (might be empty). + * @return new Transformation. + */ +TransformationNNPtr Transformation::createNTv2( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, const std::string &filename, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + + return create(properties, sourceCRSIn, targetCRSIn, nullptr, + createMethodMapNameEPSGCode(EPSG_CODE_METHOD_NTV2), + VectorOfParameters{createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_LATITUDE_LONGITUDE_DIFFERENCE_FILE)}, + VectorOfValues{ParameterValue::createFilename(filename)}, + accuracies); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static TransformationNNPtr _createGravityRelatedHeightToGeographic3D( + const util::PropertyMap &properties, bool inverse, + const crs::CRSNNPtr &sourceCRSIn, const crs::CRSNNPtr &targetCRSIn, + const std::string &filename, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + + return Transformation::create( + properties, sourceCRSIn, targetCRSIn, nullptr, + util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, + inverse ? INVERSE_OF + PROJ_WKT2_NAME_METHOD_HEIGHT_TO_GEOG3D + : PROJ_WKT2_NAME_METHOD_HEIGHT_TO_GEOG3D), + VectorOfParameters{createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_GEOID_CORRECTION_FILENAME)}, + VectorOfValues{ParameterValue::createFilename(filename)}, accuracies); +} +//! @endcond + +// --------------------------------------------------------------------------- +/** \brief Instanciate a transformation from GravityRelatedHeight to + * Geographic3D + * + * @param properties See \ref general_properties of the Transformation. + * At minimum the name should be defined. + * @param sourceCRSIn Source CRS. + * @param targetCRSIn Target CRS. + * @param filename GRID filename. + * @param accuracies Vector of positional accuracy (might be empty). + * @return new Transformation. + */ +TransformationNNPtr Transformation::createGravityRelatedHeightToGeographic3D( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, const std::string &filename, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + + return _createGravityRelatedHeightToGeographic3D( + properties, false, sourceCRSIn, targetCRSIn, filename, accuracies); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a transformation with method VERTCON + * + * @param properties See \ref general_properties of the Transformation. + * At minimum the name should be defined. + * @param sourceCRSIn Source CRS. + * @param targetCRSIn Target CRS. + * @param filename GRID filename. + * @param accuracies Vector of positional accuracy (might be empty). + * @return new Transformation. + */ +TransformationNNPtr Transformation::createVERTCON( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, const std::string &filename, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + + return create(properties, sourceCRSIn, targetCRSIn, nullptr, + createMethodMapNameEPSGCode(EPSG_CODE_METHOD_VERTCON), + VectorOfParameters{createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_VERTICAL_OFFSET_FILE)}, + VectorOfValues{ParameterValue::createFilename(filename)}, + accuracies); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static inline std::vector<metadata::PositionalAccuracyNNPtr> +buildAccuracyZero() { + return std::vector<metadata::PositionalAccuracyNNPtr>{ + metadata::PositionalAccuracy::create("0")}; +} + +// --------------------------------------------------------------------------- + +//! @endcond + +/** \brief Instanciate a transformation with method Longitude rotation + * + * This method is defined as [EPSG:9601] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9601) + * * + * @param properties See \ref general_properties of the Transformation. + * At minimum the name should be defined. + * @param sourceCRSIn Source CRS. + * @param targetCRSIn Target CRS. + * @param offset Longitude offset to add. + * @return new Transformation. + */ +TransformationNNPtr Transformation::createLongitudeRotation( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, const common::Angle &offset) { + + return create( + properties, sourceCRSIn, targetCRSIn, nullptr, + createMethodMapNameEPSGCode(EPSG_CODE_METHOD_LONGITUDE_ROTATION), + VectorOfParameters{ + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_LONGITUDE_OFFSET)}, + VectorOfValues{ParameterValue::create(offset)}, buildAccuracyZero()); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool Transformation::isLongitudeRotation() const { + return method()->getEPSGCode() == EPSG_CODE_METHOD_LONGITUDE_ROTATION; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a transformation with method Geographic 2D offsets + * + * This method is defined as [EPSG:9619] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9619) + * * + * @param properties See \ref general_properties of the Transformation. + * At minimum the name should be defined. + * @param sourceCRSIn Source CRS. + * @param targetCRSIn Target CRS. + * @param offsetLat Latitude offset to add. + * @param offsetLon Longitude offset to add. + * @param accuracies Vector of positional accuracy (might be empty). + * @return new Transformation. + */ +TransformationNNPtr Transformation::createGeographic2DOffsets( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, const common::Angle &offsetLat, + const common::Angle &offsetLon, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + return create( + properties, sourceCRSIn, targetCRSIn, nullptr, + createMethodMapNameEPSGCode(EPSG_CODE_METHOD_GEOGRAPHIC2D_OFFSETS), + VectorOfParameters{ + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_LATITUDE_OFFSET), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_LONGITUDE_OFFSET)}, + VectorOfValues{offsetLat, offsetLon}, accuracies); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a transformation with method Geographic 3D offsets + * + * This method is defined as [EPSG:9660] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9660) + * * + * @param properties See \ref general_properties of the Transformation. + * At minimum the name should be defined. + * @param sourceCRSIn Source CRS. + * @param targetCRSIn Target CRS. + * @param offsetLat Latitude offset to add. + * @param offsetLon Longitude offset to add. + * @param offsetHeight Height offset to add. + * @param accuracies Vector of positional accuracy (might be empty). + * @return new Transformation. + */ +TransformationNNPtr Transformation::createGeographic3DOffsets( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, const common::Angle &offsetLat, + const common::Angle &offsetLon, const common::Length &offsetHeight, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + return create( + properties, sourceCRSIn, targetCRSIn, nullptr, + createMethodMapNameEPSGCode(EPSG_CODE_METHOD_GEOGRAPHIC3D_OFFSETS), + VectorOfParameters{ + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_LATITUDE_OFFSET), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_LONGITUDE_OFFSET), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_VERTICAL_OFFSET)}, + VectorOfValues{offsetLat, offsetLon, offsetHeight}, accuracies); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a transformation with method Geographic 2D with + * height + * offsets + * + * This method is defined as [EPSG:9618] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9618) + * * + * @param properties See \ref general_properties of the Transformation. + * At minimum the name should be defined. + * @param sourceCRSIn Source CRS. + * @param targetCRSIn Target CRS. + * @param offsetLat Latitude offset to add. + * @param offsetLon Longitude offset to add. + * @param offsetHeight Geoid undulation to add. + * @param accuracies Vector of positional accuracy (might be empty). + * @return new Transformation. + */ +TransformationNNPtr Transformation::createGeographic2DWithHeightOffsets( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, const common::Angle &offsetLat, + const common::Angle &offsetLon, const common::Length &offsetHeight, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + return create( + properties, sourceCRSIn, targetCRSIn, nullptr, + createMethodMapNameEPSGCode( + EPSG_CODE_METHOD_GEOGRAPHIC2D_WITH_HEIGHT_OFFSETS), + VectorOfParameters{ + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_LATITUDE_OFFSET), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_LONGITUDE_OFFSET), + createOpParamNameEPSGCode(EPSG_CODE_PARAMETER_GEOID_UNDULATION)}, + VectorOfValues{offsetLat, offsetLon, offsetHeight}, accuracies); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a transformation with method Vertical Offset. + * + * This method is defined as [EPSG:9616] + * (https://www.epsg-registry.org/export.htm?gml=urn:ogc:def:method:EPSG::9616) + * * + * @param properties See \ref general_properties of the Transformation. + * At minimum the name should be defined. + * @param sourceCRSIn Source CRS. + * @param targetCRSIn Target CRS. + * @param offsetHeight Geoid undulation to add. + * @param accuracies Vector of positional accuracy (might be empty). + * @return new Transformation. + */ +TransformationNNPtr Transformation::createVerticalOffset( + const util::PropertyMap &properties, const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, const common::Length &offsetHeight, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + return create(properties, sourceCRSIn, targetCRSIn, nullptr, + createMethodMapNameEPSGCode(EPSG_CODE_METHOD_VERTICAL_OFFSET), + VectorOfParameters{createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_VERTICAL_OFFSET)}, + VectorOfValues{offsetHeight}, accuracies); +} + +// --------------------------------------------------------------------------- + +static const char *getCRSQualifierStr(const crs::CRSPtr &crs) { + auto geod = dynamic_cast<crs::GeodeticCRS *>(crs.get()); + if (geod) { + if (geod->isGeocentric()) { + return " (geocentric)"; + } + auto geog = dynamic_cast<crs::GeographicCRS *>(geod); + if (geog) { + if (geog->coordinateSystem()->axisList().size() == 2) { + return " (geog2D)"; + } else { + return " (geog3D)"; + } + } + } + return ""; +} + +// --------------------------------------------------------------------------- + +static std::string buildOpName(const char *opType, const crs::CRSPtr &source, + const crs::CRSPtr &target) { + std::string res(opType); + const auto &srcName = source->nameStr(); + const auto &targetName = target->nameStr(); + const char *srcQualifier = ""; + const char *targetQualifier = ""; + if (srcName == targetName) { + srcQualifier = getCRSQualifierStr(source); + targetQualifier = getCRSQualifierStr(target); + if (strcmp(srcQualifier, targetQualifier) == 0) { + srcQualifier = ""; + targetQualifier = ""; + } + } + res += " from "; + res += srcName; + res += srcQualifier; + res += " to "; + res += targetName; + res += targetQualifier; + return res; +} + +// --------------------------------------------------------------------------- + +static util::PropertyMap +createPropertiesForInverse(const CoordinateOperation *op, bool derivedFrom, + bool approximateInversion) { + assert(op); + util::PropertyMap map; + + // The domain(s) are unchanged by the inverse operation + addDomains(map, op); + + const std::string &forwardName = op->nameStr(); + + // Forge a name for the inverse, either from the forward name, or + // from the source and target CRS names + const char *opType; + if (starts_with(forwardName, NULL_GEOCENTRIC_TRANSLATION)) { + opType = NULL_GEOCENTRIC_TRANSLATION; + } else if (starts_with(forwardName, NULL_GEOGRAPHIC_OFFSET)) { + opType = NULL_GEOGRAPHIC_OFFSET; + } else if (dynamic_cast<const Transformation *>(op) || + starts_with(forwardName, "Transformation from ")) { + opType = "Transformation"; + } else if (dynamic_cast<const Conversion *>(op)) { + opType = "Conversion"; + } else { + opType = "Operation"; + } + + auto sourceCRS = op->sourceCRS(); + auto targetCRS = op->targetCRS(); + std::string name; + if (!forwardName.empty()) { + if (starts_with(forwardName, INVERSE_OF)) { + name = forwardName.substr(INVERSE_OF.size()); + } else if (!sourceCRS || !targetCRS || + forwardName != buildOpName(opType, sourceCRS, targetCRS)) { + name = INVERSE_OF + forwardName; + } + } + if (name.empty() && sourceCRS && targetCRS) { + name = buildOpName(opType, targetCRS, sourceCRS); + } + if (approximateInversion) { + name += " (approx. inversion)"; + } + + if (!name.empty()) { + map.set(common::IdentifiedObject::NAME_KEY, name); + } + + addModifiedIdentifier(map, op, true, derivedFrom); + + return map; +} + +// --------------------------------------------------------------------------- + +static bool isTimeDependent(const std::string &methodName) { + return ci_find(methodName, "Time dependent") != std::string::npos || + ci_find(methodName, "Time-dependent") != std::string::npos; +} + +// --------------------------------------------------------------------------- + +// to avoid -0... +static double negate(double val) { + if (val != 0) { + return -val; + } + return 0.0; +} + +// --------------------------------------------------------------------------- + +static CoordinateOperationPtr +createApproximateInverseIfPossible(const Transformation *op) { + bool sevenParamsTransform = false; + bool fifteenParamsTransform = false; + const auto &method = op->method(); + const auto &methodName = method->nameStr(); + const int methodEPSGCode = method->getEPSGCode(); + const auto paramCount = op->parameterValues().size(); + const bool isPositionVector = + ci_find(methodName, "Position Vector") != std::string::npos; + const bool isCoordinateFrame = + ci_find(methodName, "Coordinate Frame") != std::string::npos; + + // See end of "2.4.3.3 Helmert 7-parameter transformations" + // in EPSG 7-2 guidance + // For practical purposes, the inverse of 7- or 15-parameters Helmert + // can be obtained by using the forward method with all parameters + // negated + // (except reference epoch!) + // So for WKT export use that. But for PROJ string, we use the +inv flag + // so as to get "perfect" round-tripability. + if ((paramCount == 7 && isCoordinateFrame && + !isTimeDependent(methodName)) || + methodEPSGCode == EPSG_CODE_METHOD_COORDINATE_FRAME_GEOCENTRIC || + methodEPSGCode == EPSG_CODE_METHOD_COORDINATE_FRAME_GEOGRAPHIC_2D || + methodEPSGCode == EPSG_CODE_METHOD_COORDINATE_FRAME_GEOGRAPHIC_3D) { + sevenParamsTransform = true; + } else if ( + (paramCount == 15 && isCoordinateFrame && + isTimeDependent(methodName)) || + methodEPSGCode == + EPSG_CODE_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOCENTRIC || + methodEPSGCode == + EPSG_CODE_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOGRAPHIC_2D || + methodEPSGCode == + EPSG_CODE_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOGRAPHIC_3D) { + fifteenParamsTransform = true; + } else if ((paramCount == 7 && isPositionVector && + !isTimeDependent(methodName)) || + methodEPSGCode == EPSG_CODE_METHOD_POSITION_VECTOR_GEOCENTRIC || + methodEPSGCode == + EPSG_CODE_METHOD_POSITION_VECTOR_GEOGRAPHIC_2D || + methodEPSGCode == + EPSG_CODE_METHOD_POSITION_VECTOR_GEOGRAPHIC_3D) { + sevenParamsTransform = true; + } else if ( + (paramCount == 15 && isPositionVector && isTimeDependent(methodName)) || + methodEPSGCode == + EPSG_CODE_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOCENTRIC || + methodEPSGCode == + EPSG_CODE_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOGRAPHIC_2D || + methodEPSGCode == + EPSG_CODE_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOGRAPHIC_3D) { + fifteenParamsTransform = true; + } + if (sevenParamsTransform || fifteenParamsTransform) { + double neg_x = negate(op->parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_X_AXIS_TRANSLATION)); + double neg_y = negate(op->parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_Y_AXIS_TRANSLATION)); + double neg_z = negate(op->parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_Z_AXIS_TRANSLATION)); + double neg_rx = negate( + op->parameterValueNumeric(EPSG_CODE_PARAMETER_X_AXIS_ROTATION, + common::UnitOfMeasure::ARC_SECOND)); + double neg_ry = negate( + op->parameterValueNumeric(EPSG_CODE_PARAMETER_Y_AXIS_ROTATION, + common::UnitOfMeasure::ARC_SECOND)); + double neg_rz = negate( + op->parameterValueNumeric(EPSG_CODE_PARAMETER_Z_AXIS_ROTATION, + common::UnitOfMeasure::ARC_SECOND)); + double neg_scaleDiff = negate(op->parameterValueNumeric( + EPSG_CODE_PARAMETER_SCALE_DIFFERENCE, + common::UnitOfMeasure::PARTS_PER_MILLION)); + auto methodProperties = util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, methodName); + int method_epsg_code = method->getEPSGCode(); + if (method_epsg_code) { + methodProperties + .set(metadata::Identifier::CODESPACE_KEY, + metadata::Identifier::EPSG) + .set(metadata::Identifier::CODE_KEY, method_epsg_code); + } + if (fifteenParamsTransform) { + double neg_rate_x = negate(op->parameterValueNumeric( + EPSG_CODE_PARAMETER_RATE_X_AXIS_TRANSLATION, + common::UnitOfMeasure::METRE_PER_YEAR)); + double neg_rate_y = negate(op->parameterValueNumeric( + EPSG_CODE_PARAMETER_RATE_Y_AXIS_TRANSLATION, + common::UnitOfMeasure::METRE_PER_YEAR)); + double neg_rate_z = negate(op->parameterValueNumeric( + EPSG_CODE_PARAMETER_RATE_Z_AXIS_TRANSLATION, + common::UnitOfMeasure::METRE_PER_YEAR)); + double neg_rate_rx = negate(op->parameterValueNumeric( + EPSG_CODE_PARAMETER_RATE_X_AXIS_ROTATION, + common::UnitOfMeasure::ARC_SECOND_PER_YEAR)); + double neg_rate_ry = negate(op->parameterValueNumeric( + EPSG_CODE_PARAMETER_RATE_Y_AXIS_ROTATION, + common::UnitOfMeasure::ARC_SECOND_PER_YEAR)); + double neg_rate_rz = negate(op->parameterValueNumeric( + EPSG_CODE_PARAMETER_RATE_Z_AXIS_ROTATION, + common::UnitOfMeasure::ARC_SECOND_PER_YEAR)); + double neg_rate_scaleDiff = negate(op->parameterValueNumeric( + EPSG_CODE_PARAMETER_RATE_SCALE_DIFFERENCE, + common::UnitOfMeasure::PPM_PER_YEAR)); + double referenceEpochYear = + op->parameterValueNumeric(EPSG_CODE_PARAMETER_REFERENCE_EPOCH, + common::UnitOfMeasure::YEAR); + return util::nn_static_pointer_cast<CoordinateOperation>( + createFifteenParamsTransform( + createPropertiesForInverse(op, false, true), + methodProperties, op->targetCRS(), op->sourceCRS(), + neg_x, neg_y, neg_z, neg_rx, neg_ry, neg_rz, + neg_scaleDiff, neg_rate_x, neg_rate_y, neg_rate_z, + neg_rate_rx, neg_rate_ry, neg_rate_rz, + neg_rate_scaleDiff, referenceEpochYear, + op->coordinateOperationAccuracies())) + .as_nullable(); + } else { + return util::nn_static_pointer_cast<CoordinateOperation>( + createSevenParamsTransform( + createPropertiesForInverse(op, false, true), + methodProperties, op->targetCRS(), op->sourceCRS(), + neg_x, neg_y, neg_z, neg_rx, neg_ry, neg_rz, + neg_scaleDiff, op->coordinateOperationAccuracies())) + .as_nullable(); + } + } + + return nullptr; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +TransformationNNPtr +Transformation::Private::registerInv(util::BaseObjectNNPtr thisIn, + TransformationNNPtr invTransform) { + invTransform->d->forwardOperation_ = + util::nn_dynamic_pointer_cast<Transformation>(thisIn); + return invTransform; +} +//! @endcond + +// --------------------------------------------------------------------------- + +CoordinateOperationNNPtr Transformation::inverse() const { + return inverseAsTransformation(); +} + +// --------------------------------------------------------------------------- + +TransformationNNPtr Transformation::inverseAsTransformation() const { + + if (d->forwardOperation_) { + return NN_NO_CHECK(d->forwardOperation_); + } + const auto &l_method = method(); + const auto &methodName = l_method->nameStr(); + const int methodEPSGCode = l_method->getEPSGCode(); + const auto &l_sourceCRS = sourceCRS(); + const auto &l_targetCRS = targetCRS(); + + // For geocentric translation, the inverse is exactly the negation of + // the parameters. + if (ci_find(methodName, "Geocentric translations") != std::string::npos || + methodEPSGCode == EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOCENTRIC || + methodEPSGCode == + EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOGRAPHIC_2D || + methodEPSGCode == + EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOGRAPHIC_3D) { + double x = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_X_AXIS_TRANSLATION); + double y = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_Y_AXIS_TRANSLATION); + double z = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_Z_AXIS_TRANSLATION); + return d->registerInv( + shared_from_this(), + createGeocentricTranslations( + createPropertiesForInverse(this, false, false), l_targetCRS, + l_sourceCRS, negate(x), negate(y), negate(z), + coordinateOperationAccuracies())); + } + + if (methodEPSGCode == EPSG_CODE_METHOD_MOLODENSKY || + methodEPSGCode == EPSG_CODE_METHOD_ABRIDGED_MOLODENSKY) { + double x = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_X_AXIS_TRANSLATION); + double y = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_Y_AXIS_TRANSLATION); + double z = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_Z_AXIS_TRANSLATION); + double da = parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_SEMI_MAJOR_AXIS_DIFFERENCE); + double df = parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_FLATTENING_DIFFERENCE); + + if (methodEPSGCode == EPSG_CODE_METHOD_ABRIDGED_MOLODENSKY) { + return d->registerInv( + shared_from_this(), + createAbridgedMolodensky( + createPropertiesForInverse(this, false, false), l_targetCRS, + l_sourceCRS, negate(x), negate(y), negate(z), negate(da), + negate(df), coordinateOperationAccuracies())); + } else { + return d->registerInv( + shared_from_this(), + createMolodensky(createPropertiesForInverse(this, false, false), + l_targetCRS, l_sourceCRS, negate(x), negate(y), + negate(z), negate(da), negate(df), + coordinateOperationAccuracies())); + } + } + + if (isLongitudeRotation()) { + auto offset = + parameterValueMeasure(EPSG_CODE_PARAMETER_LONGITUDE_OFFSET); + const common::Angle newOffset(negate(offset.value()), offset.unit()); + return d->registerInv( + shared_from_this(), + createLongitudeRotation( + createPropertiesForInverse(this, false, false), l_targetCRS, + l_sourceCRS, newOffset)); + } + + if (methodEPSGCode == EPSG_CODE_METHOD_GEOGRAPHIC2D_OFFSETS) { + auto offsetLat = + parameterValueMeasure(EPSG_CODE_PARAMETER_LATITUDE_OFFSET); + const common::Angle newOffsetLat(negate(offsetLat.value()), + offsetLat.unit()); + + auto offsetLong = + parameterValueMeasure(EPSG_CODE_PARAMETER_LONGITUDE_OFFSET); + const common::Angle newOffsetLong(negate(offsetLong.value()), + offsetLong.unit()); + + return d->registerInv( + shared_from_this(), + createGeographic2DOffsets( + createPropertiesForInverse(this, false, false), l_targetCRS, + l_sourceCRS, newOffsetLat, newOffsetLong, + coordinateOperationAccuracies())); + } + + if (methodEPSGCode == EPSG_CODE_METHOD_GEOGRAPHIC3D_OFFSETS) { + auto offsetLat = + parameterValueMeasure(EPSG_CODE_PARAMETER_LATITUDE_OFFSET); + const common::Angle newOffsetLat(negate(offsetLat.value()), + offsetLat.unit()); + + auto offsetLong = + parameterValueMeasure(EPSG_CODE_PARAMETER_LONGITUDE_OFFSET); + const common::Angle newOffsetLong(negate(offsetLong.value()), + offsetLong.unit()); + + auto offsetHeight = + parameterValueMeasure(EPSG_CODE_PARAMETER_VERTICAL_OFFSET); + const common::Length newOffsetHeight(negate(offsetHeight.value()), + offsetHeight.unit()); + + return d->registerInv( + shared_from_this(), + createGeographic3DOffsets( + createPropertiesForInverse(this, false, false), l_targetCRS, + l_sourceCRS, newOffsetLat, newOffsetLong, newOffsetHeight, + coordinateOperationAccuracies())); + } + + if (methodEPSGCode == EPSG_CODE_METHOD_GEOGRAPHIC2D_WITH_HEIGHT_OFFSETS) { + auto offsetLat = + parameterValueMeasure(EPSG_CODE_PARAMETER_LATITUDE_OFFSET); + const common::Angle newOffsetLat(negate(offsetLat.value()), + offsetLat.unit()); + + auto offsetLong = + parameterValueMeasure(EPSG_CODE_PARAMETER_LONGITUDE_OFFSET); + const common::Angle newOffsetLong(negate(offsetLong.value()), + offsetLong.unit()); + + auto offsetHeight = + parameterValueMeasure(EPSG_CODE_PARAMETER_GEOID_UNDULATION); + const common::Length newOffsetHeight(negate(offsetHeight.value()), + offsetHeight.unit()); + + return d->registerInv( + shared_from_this(), + createGeographic2DWithHeightOffsets( + createPropertiesForInverse(this, false, false), l_targetCRS, + l_sourceCRS, newOffsetLat, newOffsetLong, newOffsetHeight, + coordinateOperationAccuracies())); + } + + if (methodEPSGCode == EPSG_CODE_METHOD_VERTICAL_OFFSET) { + + auto offsetHeight = + parameterValueMeasure(EPSG_CODE_PARAMETER_VERTICAL_OFFSET); + const common::Length newOffsetHeight(negate(offsetHeight.value()), + offsetHeight.unit()); + + return d->registerInv( + shared_from_this(), + createVerticalOffset(createPropertiesForInverse(this, false, false), + l_targetCRS, l_sourceCRS, newOffsetHeight, + coordinateOperationAccuracies())); + } + + return InverseTransformation::create(NN_NO_CHECK( + util::nn_dynamic_pointer_cast<Transformation>(shared_from_this()))); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +// --------------------------------------------------------------------------- + +InverseTransformation::InverseTransformation(const TransformationNNPtr &forward) + : Transformation( + forward->targetCRS(), forward->sourceCRS(), + forward->interpolationCRS(), + OperationMethod::create(createPropertiesForInverse(forward->method()), + forward->method()->parameters()), + forward->parameterValues(), forward->coordinateOperationAccuracies()), + InverseCoordinateOperation(forward, true) { + setPropertiesFromForward(); +} + +// --------------------------------------------------------------------------- + +InverseTransformation::~InverseTransformation() = default; + +// --------------------------------------------------------------------------- + +TransformationNNPtr +InverseTransformation::create(const TransformationNNPtr &forward) { + auto conv = util::nn_make_shared<InverseTransformation>(forward); + conv->assignSelf(conv); + return conv; +} + +// --------------------------------------------------------------------------- + +void InverseTransformation::_exportToWKT(io::WKTFormatter *formatter) const { + + auto approxInverse = createApproximateInverseIfPossible( + util::nn_dynamic_pointer_cast<Transformation>(forwardOperation_).get()); + if (approxInverse) { + approxInverse->_exportToWKT(formatter); + } else { + Transformation::_exportToWKT(formatter); + } +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void Transformation::_exportToWKT(io::WKTFormatter *formatter) const { + exportTransformationToWKT(formatter); +} +//! @endcond + +// --------------------------------------------------------------------------- + +void SingleOperation::exportTransformationToWKT( + io::WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + if (!isWKT2) { + throw io::FormattingException( + "Transformation can only be exported to WKT2"); + } + + auto l_sourceCRS = sourceCRS(); + assert(l_sourceCRS); + auto l_targetCRS = targetCRS(); + assert(l_targetCRS); + + if (formatter->abridgedTransformation()) { + formatter->startNode(io::WKTConstants::ABRIDGEDTRANSFORMATION, + !identifiers().empty()); + } else { + formatter->startNode(io::WKTConstants::COORDINATEOPERATION, + !identifiers().empty()); + } + + formatter->addQuotedString(nameStr()); + + if (!formatter->abridgedTransformation()) { + formatter->startNode(io::WKTConstants::SOURCECRS, false); + l_sourceCRS->_exportToWKT(formatter); + formatter->endNode(); + + formatter->startNode(io::WKTConstants::TARGETCRS, false); + l_targetCRS->_exportToWKT(formatter); + formatter->endNode(); + } + + method()->_exportToWKT(formatter); + + const MethodMapping *mapping = + !isWKT2 ? getMapping(method().get()) : nullptr; + for (const auto ¶mValue : parameterValues()) { + paramValue->_exportToWKT(formatter, mapping); + } + + if (!formatter->abridgedTransformation()) { + if (interpolationCRS()) { + formatter->startNode(io::WKTConstants::INTERPOLATIONCRS, false); + interpolationCRS()->_exportToWKT(formatter); + formatter->endNode(); + } + + if (!coordinateOperationAccuracies().empty()) { + formatter->startNode(io::WKTConstants::OPERATIONACCURACY, false); + formatter->add(coordinateOperationAccuracies()[0]->value()); + formatter->endNode(); + } + } + + ObjectUsage::baseExportToWKT(formatter); + formatter->endNode(); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static const std::string nullString; + +static const std::string &_getNTv2Filename(const Transformation *op, + bool allowInverse) { + + const auto &l_method = op->method(); + if (l_method->getEPSGCode() == EPSG_CODE_METHOD_NTV2 || + (allowInverse && + ci_equal(l_method->nameStr(), INVERSE_OF + EPSG_NAME_METHOD_NTV2))) { + const auto &fileParameter = op->parameterValue( + EPSG_NAME_PARAMETER_LATITUDE_LONGITUDE_DIFFERENCE_FILE, + EPSG_CODE_PARAMETER_LATITUDE_LONGITUDE_DIFFERENCE_FILE); + if (fileParameter && + fileParameter->type() == ParameterValue::Type::FILENAME) { + return fileParameter->valueFile(); + } + } + return nullString; +} +//! @endcond + +// --------------------------------------------------------------------------- +//! @cond Doxygen_Suppress +const std::string &Transformation::getNTv2Filename() const { + + return _getNTv2Filename(this, false); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static const std::string &_getNTv1Filename(const Transformation *op, + bool allowInverse) { + + const auto &l_method = op->method(); + const auto &methodName = l_method->nameStr(); + if (l_method->getEPSGCode() == EPSG_CODE_METHOD_NTV1 || + (allowInverse && + ci_equal(methodName, INVERSE_OF + EPSG_NAME_METHOD_NTV1))) { + const auto &fileParameter = op->parameterValue( + EPSG_NAME_PARAMETER_LATITUDE_LONGITUDE_DIFFERENCE_FILE, + EPSG_CODE_PARAMETER_LATITUDE_LONGITUDE_DIFFERENCE_FILE); + if (fileParameter && + fileParameter->type() == ParameterValue::Type::FILENAME) { + return fileParameter->valueFile(); + } + } + return nullString; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static const std::string &_getCTABLE2Filename(const Transformation *op, + bool allowInverse) { + const auto &l_method = op->method(); + const auto &methodName = l_method->nameStr(); + if (ci_equal(methodName, PROJ_WKT2_NAME_METHOD_CTABLE2) || + (allowInverse && + ci_equal(methodName, INVERSE_OF + PROJ_WKT2_NAME_METHOD_CTABLE2))) { + const auto &fileParameter = op->parameterValue( + EPSG_NAME_PARAMETER_LATITUDE_LONGITUDE_DIFFERENCE_FILE, + EPSG_CODE_PARAMETER_LATITUDE_LONGITUDE_DIFFERENCE_FILE); + if (fileParameter && + fileParameter->type() == ParameterValue::Type::FILENAME) { + return fileParameter->valueFile(); + } + } + return nullString; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static const std::string & +_getHeightToGeographic3DFilename(const Transformation *op, bool allowInverse) { + + const auto &methodName = op->method()->nameStr(); + + if (ci_equal(methodName, PROJ_WKT2_NAME_METHOD_HEIGHT_TO_GEOG3D) || + (allowInverse && + ci_equal(methodName, + INVERSE_OF + PROJ_WKT2_NAME_METHOD_HEIGHT_TO_GEOG3D))) { + const auto &fileParameter = + op->parameterValue(EPSG_NAME_PARAMETER_GEOID_CORRECTION_FILENAME, + EPSG_CODE_PARAMETER_GEOID_CORRECTION_FILENAME); + if (fileParameter && + fileParameter->type() == ParameterValue::Type::FILENAME) { + return fileParameter->valueFile(); + } + } + return nullString; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +const std::string &Transformation::getHeightToGeographic3DFilename() const { + + return _getHeightToGeographic3DFilename(this, false); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static bool +isGeographic3DToGravityRelatedHeight(const OperationMethodNNPtr &method, + bool allowInverse) { + const auto &methodName = method->nameStr(); + static const char *const methodCodes[] = { + "1025", // Geographic3D to GravityRelatedHeight (EGM2008) + "1030", // Geographic3D to GravityRelatedHeight (NZgeoid) + "1045", // Geographic3D to GravityRelatedHeight (OSGM02-Ire) + "1047", // Geographic3D to GravityRelatedHeight (Gravsoft) + "1048", // Geographic3D to GravityRelatedHeight (Ausgeoid v2) + "1050", // Geographic3D to GravityRelatedHeight (CI) + "1059", // Geographic3D to GravityRelatedHeight (PNG) + "1060", // Geographic3D to GravityRelatedHeight (CGG2013) + "1072", // Geographic3D to GravityRelatedHeight (OSGM15-Ire) + "1073", // Geographic3D to GravityRelatedHeight (IGN2009) + "9661", // Geographic3D to GravityRelatedHeight (EGM) + "9662", // Geographic3D to GravityRelatedHeight (Ausgeoid98) + "9663", // Geographic3D to GravityRelatedHeight (OSGM-GB) + "9664", // Geographic3D to GravityRelatedHeight (IGN1997) + "9665", // Geographic3D to GravityRelatedHeight (US .gtx) + }; + + if (ci_find(methodName, "Geographic3D to GravityRelatedHeight") == 0) { + return true; + } + if (allowInverse && + ci_find(methodName, + INVERSE_OF + "Geographic3D to GravityRelatedHeight") == 0) { + return true; + } + + for (const auto &code : methodCodes) { + for (const auto &idSrc : method->identifiers()) { + const auto &srcAuthName = *(idSrc->codeSpace()); + const auto &srcCode = idSrc->code(); + if (ci_equal(srcAuthName, "EPSG") && srcCode == code) { + return true; + } + if (allowInverse && ci_equal(srcAuthName, "INVERSE(EPSG)") && + srcCode == code) { + return true; + } + } + } + return false; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static util::PropertyMap +createSimilarPropertiesMethod(common::IdentifiedObjectNNPtr obj) { + util::PropertyMap map; + + const std::string &forwardName = obj->nameStr(); + if (!forwardName.empty()) { + map.set(common::IdentifiedObject::NAME_KEY, forwardName); + } + + { + auto ar = util::ArrayOfBaseObject::create(); + for (const auto &idSrc : obj->identifiers()) { + const auto &srcAuthName = *(idSrc->codeSpace()); + const auto &srcCode = idSrc->code(); + auto idsProp = util::PropertyMap().set( + metadata::Identifier::CODESPACE_KEY, srcAuthName); + ar->add(metadata::Identifier::create(srcCode, idsProp)); + } + if (!ar->empty()) { + map.set(common::IdentifiedObject::IDENTIFIERS_KEY, ar); + } + } + + return map; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static util::PropertyMap +createSimilarPropertiesTransformation(TransformationNNPtr obj) { + util::PropertyMap map; + + // The domain(s) are unchanged + addDomains(map, obj.get()); + + std::string forwardName = obj->nameStr(); + if (!forwardName.empty()) { + map.set(common::IdentifiedObject::NAME_KEY, forwardName); + } + + addModifiedIdentifier(map, obj.get(), false, true); + + return map; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static TransformationNNPtr +createNTv1(const util::PropertyMap &properties, + const crs::CRSNNPtr &sourceCRSIn, const crs::CRSNNPtr &targetCRSIn, + const std::string &filename, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + return Transformation::create( + properties, sourceCRSIn, targetCRSIn, nullptr, + createMethodMapNameEPSGCode(EPSG_CODE_METHOD_NTV1), + {OperationParameter::create( + util::PropertyMap() + .set(common::IdentifiedObject::NAME_KEY, + EPSG_NAME_PARAMETER_LATITUDE_LONGITUDE_DIFFERENCE_FILE) + .set(metadata::Identifier::CODESPACE_KEY, + metadata::Identifier::EPSG) + .set(metadata::Identifier::CODE_KEY, + EPSG_CODE_PARAMETER_LATITUDE_LONGITUDE_DIFFERENCE_FILE))}, + {ParameterValue::createFilename(filename)}, accuracies); +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return an equivalent transformation to the current one, but using + * PROJ alternative grid names. + */ +TransformationNNPtr Transformation::substitutePROJAlternativeGridNames( + io::DatabaseContextNNPtr databaseContext) const { + auto self = NN_NO_CHECK(std::dynamic_pointer_cast<Transformation>( + shared_from_this().as_nullable())); + + const auto &l_method = method(); + const int methodEPSGCode = l_method->getEPSGCode(); + + std::string projFilename; + std::string projGridFormat; + bool inverseDirection = false; + + const auto &NTv1Filename = _getNTv1Filename(this, false); + const auto &NTv2Filename = _getNTv2Filename(this, false); + std::string lasFilename; + if (methodEPSGCode == EPSG_CODE_METHOD_NADCON) { + const auto &latitudeFileParameter = + parameterValue(EPSG_NAME_PARAMETER_LATITUDE_DIFFERENCE_FILE, + EPSG_CODE_PARAMETER_LATITUDE_DIFFERENCE_FILE); + const auto &longitudeFileParameter = + parameterValue(EPSG_NAME_PARAMETER_LONGITUDE_DIFFERENCE_FILE, + EPSG_CODE_PARAMETER_LONGITUDE_DIFFERENCE_FILE); + if (latitudeFileParameter && + latitudeFileParameter->type() == ParameterValue::Type::FILENAME && + longitudeFileParameter && + longitudeFileParameter->type() == ParameterValue::Type::FILENAME) { + lasFilename = latitudeFileParameter->valueFile(); + } + } + const auto &horizontalGridName = + !NTv1Filename.empty() ? NTv1Filename : !NTv2Filename.empty() + ? NTv2Filename + : lasFilename; + + if (!horizontalGridName.empty() && + databaseContext->lookForGridAlternative(horizontalGridName, + projFilename, projGridFormat, + inverseDirection)) { + + if (horizontalGridName == projFilename) { + assert(!inverseDirection); + return self; + } + + const auto &l_sourceCRS = sourceCRS(); + const auto &l_targetCRS = targetCRS(); + const auto &l_accuracies = coordinateOperationAccuracies(); + if (projGridFormat == "NTv1") { + if (inverseDirection) { + return createNTv1(createPropertiesForInverse( + self.as_nullable().get(), true, false), + l_targetCRS, l_sourceCRS, projFilename, + l_accuracies) + ->inverseAsTransformation(); + } else { + return createNTv1(createSimilarPropertiesTransformation(self), + l_sourceCRS, l_targetCRS, projFilename, + l_accuracies); + } + } else if (projGridFormat == "NTv2") { + if (inverseDirection) { + return createNTv2(createPropertiesForInverse( + self.as_nullable().get(), true, false), + l_targetCRS, l_sourceCRS, projFilename, + l_accuracies) + ->inverseAsTransformation(); + } else { + return createNTv2(createSimilarPropertiesTransformation(self), + l_sourceCRS, l_targetCRS, projFilename, + l_accuracies); + } + } else if (projGridFormat == "CTable2") { + auto parameters = + std::vector<OperationParameterNNPtr>{createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_LATITUDE_LONGITUDE_DIFFERENCE_FILE)}; + auto methodProperties = + util::PropertyMap().set(common::IdentifiedObject::NAME_KEY, + PROJ_WKT2_NAME_METHOD_CTABLE2); + auto values = std::vector<ParameterValueNNPtr>{ + ParameterValue::createFilename(projFilename)}; + if (inverseDirection) { + return create(createPropertiesForInverse( + self.as_nullable().get(), true, false), + l_targetCRS, l_sourceCRS, nullptr, + methodProperties, parameters, values, + l_accuracies) + ->inverseAsTransformation(); + + } else { + return create(createSimilarPropertiesTransformation(self), + l_sourceCRS, l_targetCRS, nullptr, + methodProperties, parameters, values, + l_accuracies); + } + } + } + + const auto &heightFilename = getHeightToGeographic3DFilename(); + if (!heightFilename.empty() && !projFilename.empty()) { + if (databaseContext->lookForGridAlternative( + heightFilename, projFilename, projGridFormat, + inverseDirection)) { + + if (heightFilename == projFilename) { + assert(!inverseDirection); + return self; + } + + if (inverseDirection) { + return createGravityRelatedHeightToGeographic3D( + createPropertiesForInverse(self.as_nullable().get(), + true, false), + targetCRS(), sourceCRS(), projFilename, + coordinateOperationAccuracies()) + ->inverseAsTransformation(); + } else { + return createGravityRelatedHeightToGeographic3D( + createSimilarPropertiesTransformation(self), sourceCRS(), + targetCRS(), projFilename, coordinateOperationAccuracies()); + } + } + } + + if (isGeographic3DToGravityRelatedHeight(method(), false)) { + const auto &fileParameter = + parameterValue(EPSG_NAME_PARAMETER_GEOID_CORRECTION_FILENAME, + EPSG_CODE_PARAMETER_GEOID_CORRECTION_FILENAME); + if (fileParameter && + fileParameter->type() == ParameterValue::Type::FILENAME) { + auto filename = fileParameter->valueFile(); + if (databaseContext->lookForGridAlternative( + filename, projFilename, projGridFormat, inverseDirection)) { + + if (filename == projFilename) { + assert(!inverseDirection); + return self; + } + + auto parameters = std::vector<OperationParameterNNPtr>{ + createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_GEOID_CORRECTION_FILENAME)}; + if (inverseDirection) { + return create(createPropertiesForInverse( + self.as_nullable().get(), true, false), + targetCRS(), sourceCRS(), nullptr, + createSimilarPropertiesMethod(method()), + parameters, {ParameterValue::createFilename( + projFilename)}, + coordinateOperationAccuracies()) + ->inverseAsTransformation(); + } else { + return create( + createSimilarPropertiesTransformation(self), + sourceCRS(), targetCRS(), nullptr, + createSimilarPropertiesMethod(method()), parameters, + {ParameterValue::createFilename(projFilename)}, + coordinateOperationAccuracies()); + } + } + } + } + + return self; +} +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +static void ThrowExpectionNotGeodeticGeographic(const char *trfrm_name) { + throw io::FormattingException(concat("Can apply ", std::string(trfrm_name), + " only to GeodeticCRS / " + "GeographicCRS")); +} + +// --------------------------------------------------------------------------- + +static void setupPROJGeodeticSourceCRS(io::PROJStringFormatter *formatter, + const crs::CRSNNPtr &crs, + const char *trfrm_name) { + auto sourceCRSGeog = dynamic_cast<const crs::GeographicCRS *>(crs.get()); + if (sourceCRSGeog) { + formatter->startInversion(); + sourceCRSGeog->_exportToPROJString(formatter); + formatter->stopInversion(); + + formatter->addStep("cart"); + sourceCRSGeog->ellipsoid()->_exportToPROJString(formatter); + } else { + auto sourceCRSGeod = dynamic_cast<const crs::GeodeticCRS *>(crs.get()); + if (!sourceCRSGeod) { + ThrowExpectionNotGeodeticGeographic(trfrm_name); + } + formatter->startInversion(); + sourceCRSGeod->addGeocentricUnitConversionIntoPROJString(formatter); + formatter->stopInversion(); + } +} +// --------------------------------------------------------------------------- + +static void setupPROJGeodeticTargetCRS(io::PROJStringFormatter *formatter, + const crs::CRSNNPtr &crs, + const char *trfrm_name) { + auto targetCRSGeog = dynamic_cast<const crs::GeographicCRS *>(crs.get()); + if (targetCRSGeog) { + formatter->addStep("cart"); + formatter->setCurrentStepInverted(true); + targetCRSGeog->ellipsoid()->_exportToPROJString(formatter); + + targetCRSGeog->_exportToPROJString(formatter); + } else { + auto targetCRSGeod = dynamic_cast<const crs::GeodeticCRS *>(crs.get()); + if (!targetCRSGeod) { + ThrowExpectionNotGeodeticGeographic(trfrm_name); + } + targetCRSGeod->addGeocentricUnitConversionIntoPROJString(formatter); + } +} + +inline static void consume_unused(const std::string &) {} + +//! @endcond +// --------------------------------------------------------------------------- + +void Transformation::_exportToPROJString( + io::PROJStringFormatter *formatter) const // throw(FormattingException) +{ + if (formatter->convention() == + io::PROJStringFormatter::Convention::PROJ_4) { + throw io::FormattingException( + "Transformation cannot be exported as a PROJ.4 string"); + } + + bool positionVectorConvention = true; + bool sevenParamsTransform = false; + bool threeParamsTransform = false; + bool fifteenParamsTransform = false; + const auto &l_method = method(); + const int methodEPSGCode = l_method->getEPSGCode(); + const auto &methodName = l_method->nameStr(); + const auto paramCount = parameterValues().size(); + const bool l_isTimeDependent = isTimeDependent(methodName); + const bool isPositionVector = + ci_find(methodName, "Position Vector") != std::string::npos || + ci_find(methodName, "PV") != std::string::npos; + const bool isCoordinateFrame = + ci_find(methodName, "Coordinate Frame") != std::string::npos || + ci_find(methodName, "CF") != std::string::npos; + if ((paramCount == 7 && isCoordinateFrame && !l_isTimeDependent) || + methodEPSGCode == EPSG_CODE_METHOD_COORDINATE_FRAME_GEOCENTRIC || + methodEPSGCode == EPSG_CODE_METHOD_COORDINATE_FRAME_GEOGRAPHIC_2D || + methodEPSGCode == EPSG_CODE_METHOD_COORDINATE_FRAME_GEOGRAPHIC_3D) { + positionVectorConvention = false; + sevenParamsTransform = true; + } else if ( + (paramCount == 15 && isCoordinateFrame && l_isTimeDependent) || + methodEPSGCode == + EPSG_CODE_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOCENTRIC || + methodEPSGCode == + EPSG_CODE_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOGRAPHIC_2D || + methodEPSGCode == + EPSG_CODE_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOGRAPHIC_3D) { + positionVectorConvention = false; + fifteenParamsTransform = true; + } else if ((paramCount == 7 && isPositionVector && !l_isTimeDependent) || + methodEPSGCode == EPSG_CODE_METHOD_POSITION_VECTOR_GEOCENTRIC || + methodEPSGCode == + EPSG_CODE_METHOD_POSITION_VECTOR_GEOGRAPHIC_2D || + methodEPSGCode == + EPSG_CODE_METHOD_POSITION_VECTOR_GEOGRAPHIC_3D) { + sevenParamsTransform = true; + } else if ( + (paramCount == 15 && isPositionVector && l_isTimeDependent) || + methodEPSGCode == + EPSG_CODE_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOCENTRIC || + methodEPSGCode == + EPSG_CODE_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOGRAPHIC_2D || + methodEPSGCode == + EPSG_CODE_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOGRAPHIC_3D) { + fifteenParamsTransform = true; + } else if ((paramCount == 3 && + ci_find(methodName, "Geocentric translations") != + std::string::npos) || + methodEPSGCode == + EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOCENTRIC || + methodEPSGCode == + EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOGRAPHIC_2D || + methodEPSGCode == + EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOGRAPHIC_3D) { + threeParamsTransform = true; + } + if (threeParamsTransform || sevenParamsTransform || + fifteenParamsTransform) { + double x = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_X_AXIS_TRANSLATION); + double y = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_Y_AXIS_TRANSLATION); + double z = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_Z_AXIS_TRANSLATION); + + setupPROJGeodeticSourceCRS(formatter, sourceCRS(), "Helmert"); + + formatter->addStep("helmert"); + formatter->addParam("x", x); + formatter->addParam("y", y); + formatter->addParam("z", z); + if (sevenParamsTransform || fifteenParamsTransform) { + double rx = + parameterValueNumeric(EPSG_CODE_PARAMETER_X_AXIS_ROTATION, + common::UnitOfMeasure::ARC_SECOND); + double ry = + parameterValueNumeric(EPSG_CODE_PARAMETER_Y_AXIS_ROTATION, + common::UnitOfMeasure::ARC_SECOND); + double rz = + parameterValueNumeric(EPSG_CODE_PARAMETER_Z_AXIS_ROTATION, + common::UnitOfMeasure::ARC_SECOND); + double scaleDiff = + parameterValueNumeric(EPSG_CODE_PARAMETER_SCALE_DIFFERENCE, + common::UnitOfMeasure::PARTS_PER_MILLION); + formatter->addParam("rx", rx); + formatter->addParam("ry", ry); + formatter->addParam("rz", rz); + formatter->addParam("s", scaleDiff); + if (fifteenParamsTransform) { + double rate_x = parameterValueNumeric( + EPSG_CODE_PARAMETER_RATE_X_AXIS_TRANSLATION, + common::UnitOfMeasure::METRE_PER_YEAR); + double rate_y = parameterValueNumeric( + EPSG_CODE_PARAMETER_RATE_Y_AXIS_TRANSLATION, + common::UnitOfMeasure::METRE_PER_YEAR); + double rate_z = parameterValueNumeric( + EPSG_CODE_PARAMETER_RATE_Z_AXIS_TRANSLATION, + common::UnitOfMeasure::METRE_PER_YEAR); + double rate_rx = parameterValueNumeric( + EPSG_CODE_PARAMETER_RATE_X_AXIS_ROTATION, + common::UnitOfMeasure::ARC_SECOND_PER_YEAR); + double rate_ry = parameterValueNumeric( + EPSG_CODE_PARAMETER_RATE_Y_AXIS_ROTATION, + common::UnitOfMeasure::ARC_SECOND_PER_YEAR); + double rate_rz = parameterValueNumeric( + EPSG_CODE_PARAMETER_RATE_Z_AXIS_ROTATION, + common::UnitOfMeasure::ARC_SECOND_PER_YEAR); + double rate_scaleDiff = parameterValueNumeric( + EPSG_CODE_PARAMETER_RATE_SCALE_DIFFERENCE, + common::UnitOfMeasure::PPM_PER_YEAR); + double referenceEpochYear = + parameterValueNumeric(EPSG_CODE_PARAMETER_REFERENCE_EPOCH, + common::UnitOfMeasure::YEAR); + formatter->addParam("dx", rate_x); + formatter->addParam("dy", rate_y); + formatter->addParam("dz", rate_z); + formatter->addParam("drx", rate_rx); + formatter->addParam("dry", rate_ry); + formatter->addParam("drz", rate_rz); + formatter->addParam("ds", rate_scaleDiff); + formatter->addParam("t_epoch", referenceEpochYear); + } + if (positionVectorConvention) { + formatter->addParam("convention", "position_vector"); + } else { + formatter->addParam("convention", "coordinate_frame"); + } + } + + setupPROJGeodeticTargetCRS(formatter, targetCRS(), "Helmert"); + + return; + } + + if (methodEPSGCode == EPSG_CODE_METHOD_MOLODENSKY_BADEKAS_CF_GEOCENTRIC || + methodEPSGCode == EPSG_CODE_METHOD_MOLODENSKY_BADEKAS_PV_GEOCENTRIC || + methodEPSGCode == + EPSG_CODE_METHOD_MOLODENSKY_BADEKAS_CF_GEOGRAPHIC_3D || + methodEPSGCode == + EPSG_CODE_METHOD_MOLODENSKY_BADEKAS_PV_GEOGRAPHIC_3D || + methodEPSGCode == + EPSG_CODE_METHOD_MOLODENSKY_BADEKAS_CF_GEOGRAPHIC_2D || + methodEPSGCode == + EPSG_CODE_METHOD_MOLODENSKY_BADEKAS_PV_GEOGRAPHIC_2D) { + consume_unused(EPSG_NAME_METHOD_MOLODENSKY_BADEKAS_CF_GEOCENTRIC); + consume_unused(EPSG_NAME_METHOD_MOLODENSKY_BADEKAS_PV_GEOCENTRIC); + consume_unused(EPSG_NAME_METHOD_MOLODENSKY_BADEKAS_CF_GEOGRAPHIC_3D); + consume_unused(EPSG_NAME_METHOD_MOLODENSKY_BADEKAS_PV_GEOGRAPHIC_3D); + consume_unused(EPSG_NAME_METHOD_MOLODENSKY_BADEKAS_CF_GEOGRAPHIC_2D); + consume_unused(EPSG_NAME_METHOD_MOLODENSKY_BADEKAS_PV_GEOGRAPHIC_2D); + positionVectorConvention = + isPositionVector || + methodEPSGCode == + EPSG_CODE_METHOD_MOLODENSKY_BADEKAS_PV_GEOCENTRIC || + methodEPSGCode == + EPSG_CODE_METHOD_MOLODENSKY_BADEKAS_PV_GEOGRAPHIC_3D || + methodEPSGCode == + EPSG_CODE_METHOD_MOLODENSKY_BADEKAS_PV_GEOGRAPHIC_2D; + + double x = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_X_AXIS_TRANSLATION); + double y = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_Y_AXIS_TRANSLATION); + double z = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_Z_AXIS_TRANSLATION); + double rx = parameterValueNumeric(EPSG_CODE_PARAMETER_X_AXIS_ROTATION, + common::UnitOfMeasure::ARC_SECOND); + double ry = parameterValueNumeric(EPSG_CODE_PARAMETER_Y_AXIS_ROTATION, + common::UnitOfMeasure::ARC_SECOND); + double rz = parameterValueNumeric(EPSG_CODE_PARAMETER_Z_AXIS_ROTATION, + common::UnitOfMeasure::ARC_SECOND); + double scaleDiff = + parameterValueNumeric(EPSG_CODE_PARAMETER_SCALE_DIFFERENCE, + common::UnitOfMeasure::PARTS_PER_MILLION); + + double px = parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_ORDINATE_1_EVAL_POINT); + double py = parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_ORDINATE_2_EVAL_POINT); + double pz = parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_ORDINATE_3_EVAL_POINT); + + setupPROJGeodeticSourceCRS(formatter, sourceCRS(), + "Molodensky-Badekas"); + + formatter->addStep("molobadekas"); + formatter->addParam("x", x); + formatter->addParam("y", y); + formatter->addParam("z", z); + formatter->addParam("rx", rx); + formatter->addParam("ry", ry); + formatter->addParam("rz", rz); + formatter->addParam("s", scaleDiff); + formatter->addParam("px", px); + formatter->addParam("py", py); + formatter->addParam("pz", pz); + if (positionVectorConvention) { + formatter->addParam("convention", "position_vector"); + } else { + formatter->addParam("convention", "coordinate_frame"); + } + + setupPROJGeodeticTargetCRS(formatter, targetCRS(), + "Molodensky-Badekas"); + + return; + } + + if (methodEPSGCode == EPSG_CODE_METHOD_MOLODENSKY || + methodEPSGCode == EPSG_CODE_METHOD_ABRIDGED_MOLODENSKY) { + double x = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_X_AXIS_TRANSLATION); + double y = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_Y_AXIS_TRANSLATION); + double z = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_Z_AXIS_TRANSLATION); + double da = parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_SEMI_MAJOR_AXIS_DIFFERENCE); + double df = parameterValueNumericAsSI( + EPSG_CODE_PARAMETER_FLATTENING_DIFFERENCE); + + auto sourceCRSGeog = + dynamic_cast<const crs::GeographicCRS *>(sourceCRS().get()); + if (!sourceCRSGeog) { + throw io::FormattingException( + "Can apply Molodensky only to GeographicCRS"); + } + + auto targetCRSGeog = + dynamic_cast<const crs::GeographicCRS *>(targetCRS().get()); + if (!targetCRSGeog) { + throw io::FormattingException( + "Can apply Molodensky only to GeographicCRS"); + } + + formatter->startInversion(); + sourceCRSGeog->_exportToPROJString(formatter); + formatter->stopInversion(); + + formatter->addStep("molodensky"); + sourceCRSGeog->ellipsoid()->_exportToPROJString(formatter); + formatter->addParam("dx", x); + formatter->addParam("dy", y); + formatter->addParam("dz", z); + formatter->addParam("da", da); + formatter->addParam("df", df); + + if (ci_find(methodName, "Abridged") != std::string::npos || + methodEPSGCode == EPSG_CODE_METHOD_ABRIDGED_MOLODENSKY) { + formatter->addParam("abridged"); + } + + targetCRSGeog->_exportToPROJString(formatter); + + return; + } + + if (methodEPSGCode == EPSG_CODE_METHOD_GEOGRAPHIC2D_OFFSETS) { + double offsetLat = + parameterValueNumeric(EPSG_CODE_PARAMETER_LATITUDE_OFFSET, + common::UnitOfMeasure::ARC_SECOND); + double offsetLong = + parameterValueNumeric(EPSG_CODE_PARAMETER_LONGITUDE_OFFSET, + common::UnitOfMeasure::ARC_SECOND); + + auto sourceCRSGeog = + dynamic_cast<const crs::GeographicCRS *>(sourceCRS().get()); + if (!sourceCRSGeog) { + throw io::FormattingException( + "Can apply Geographic 2D offsets only to GeographicCRS"); + } + + auto targetCRSGeog = + dynamic_cast<const crs::GeographicCRS *>(targetCRS().get()); + if (!targetCRSGeog) { + throw io::FormattingException( + "Can apply Geographic 2D offsets only to GeographicCRS"); + } + + formatter->startInversion(); + sourceCRSGeog->addAngularUnitConvertAndAxisSwap(formatter); + formatter->stopInversion(); + + if (offsetLat != 0.0 || offsetLong != 0.0) { + formatter->addStep("geogoffset"); + formatter->addParam("dlat", offsetLat); + formatter->addParam("dlon", offsetLong); + } + + targetCRSGeog->addAngularUnitConvertAndAxisSwap(formatter); + + return; + } + + if (methodEPSGCode == EPSG_CODE_METHOD_GEOGRAPHIC3D_OFFSETS) { + double offsetLat = + parameterValueNumeric(EPSG_CODE_PARAMETER_LATITUDE_OFFSET, + common::UnitOfMeasure::ARC_SECOND); + double offsetLong = + parameterValueNumeric(EPSG_CODE_PARAMETER_LONGITUDE_OFFSET, + common::UnitOfMeasure::ARC_SECOND); + double offsetHeight = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_VERTICAL_OFFSET); + + auto sourceCRSGeog = + dynamic_cast<const crs::GeographicCRS *>(sourceCRS().get()); + if (!sourceCRSGeog) { + throw io::FormattingException( + "Can apply Geographic 3D offsets only to GeographicCRS"); + } + + auto targetCRSGeog = + dynamic_cast<const crs::GeographicCRS *>(targetCRS().get()); + if (!targetCRSGeog) { + throw io::FormattingException( + "Can apply Geographic 3D offsets only to GeographicCRS"); + } + + formatter->startInversion(); + sourceCRSGeog->addAngularUnitConvertAndAxisSwap(formatter); + formatter->stopInversion(); + + if (offsetLat != 0.0 || offsetLong != 0.0 || offsetHeight != 0.0) { + formatter->addStep("geogoffset"); + formatter->addParam("dlat", offsetLat); + formatter->addParam("dlon", offsetLong); + formatter->addParam("dh", offsetHeight); + } + + targetCRSGeog->addAngularUnitConvertAndAxisSwap(formatter); + + return; + } + + if (methodEPSGCode == EPSG_CODE_METHOD_GEOGRAPHIC2D_WITH_HEIGHT_OFFSETS) { + double offsetLat = + parameterValueNumeric(EPSG_CODE_PARAMETER_LATITUDE_OFFSET, + common::UnitOfMeasure::ARC_SECOND); + double offsetLong = + parameterValueNumeric(EPSG_CODE_PARAMETER_LONGITUDE_OFFSET, + common::UnitOfMeasure::ARC_SECOND); + double offsetHeight = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_GEOID_UNDULATION); + + auto sourceCRSGeog = + dynamic_cast<const crs::GeographicCRS *>(sourceCRS().get()); + if (!sourceCRSGeog) { + auto sourceCRSCompound = + dynamic_cast<const crs::CompoundCRS *>(sourceCRS().get()); + if (sourceCRSCompound) { + sourceCRSGeog = sourceCRSCompound->extractGeographicCRS().get(); + } + if (!sourceCRSGeog) { + throw io::FormattingException("Can apply Geographic 2D with " + "height offsets only to " + "GeographicCRS / CompoundCRS"); + } + } + + auto targetCRSGeog = + dynamic_cast<const crs::GeographicCRS *>(targetCRS().get()); + if (!targetCRSGeog) { + auto targetCRSCompound = + dynamic_cast<const crs::CompoundCRS *>(targetCRS().get()); + if (targetCRSCompound) { + targetCRSGeog = targetCRSCompound->extractGeographicCRS().get(); + } + if (!targetCRSGeog) { + throw io::FormattingException("Can apply Geographic 2D with " + "height offsets only to " + "GeographicCRS / CompoundCRS"); + } + } + + formatter->startInversion(); + sourceCRSGeog->addAngularUnitConvertAndAxisSwap(formatter); + formatter->stopInversion(); + + if (offsetLat != 0.0 || offsetLong != 0.0 || offsetHeight != 0.0) { + formatter->addStep("geogoffset"); + formatter->addParam("dlat", offsetLat); + formatter->addParam("dlon", offsetLong); + formatter->addParam("dh", offsetHeight); + } + + targetCRSGeog->addAngularUnitConvertAndAxisSwap(formatter); + + return; + } + + if (methodEPSGCode == EPSG_CODE_METHOD_VERTICAL_OFFSET) { + + auto sourceCRSVert = + dynamic_cast<const crs::VerticalCRS *>(sourceCRS().get()); + if (!sourceCRSVert) { + throw io::FormattingException( + "Can apply Vertical offset only to VerticalCRS"); + } + + auto targetCRSVert = + dynamic_cast<const crs::VerticalCRS *>(targetCRS().get()); + if (!targetCRSVert) { + throw io::FormattingException( + "Can apply Vertical offset only to VerticalCRS"); + } + + auto offsetHeight = + parameterValueNumericAsSI(EPSG_CODE_PARAMETER_VERTICAL_OFFSET); + + formatter->startInversion(); + sourceCRSVert->addLinearUnitConvert(formatter); + formatter->stopInversion(); + + formatter->addStep("geogoffset"); + formatter->addParam("dh", offsetHeight); + + targetCRSVert->addLinearUnitConvert(formatter); + + return; + } + + // Substitute grid names with PROJ friendly names. + if (formatter->databaseContext()) { + auto alternate = substitutePROJAlternativeGridNames( + NN_NO_CHECK(formatter->databaseContext())); + auto self = NN_NO_CHECK(std::dynamic_pointer_cast<Transformation>( + shared_from_this().as_nullable())); + + if (alternate != self) { + alternate->_exportToPROJString(formatter); + return; + } + } + + const bool isMethodInverseOf = starts_with(methodName, INVERSE_OF); + + const auto &NTv1Filename = _getNTv1Filename(this, true); + const auto &NTv2Filename = _getNTv2Filename(this, true); + const auto &CTABLE2Filename = _getCTABLE2Filename(this, true); + const auto &hGridShiftFilename = + !NTv1Filename.empty() ? NTv1Filename : !NTv2Filename.empty() + ? NTv2Filename + : CTABLE2Filename; + if (!hGridShiftFilename.empty()) { + auto sourceCRSGeog = + dynamic_cast<const crs::GeographicCRS *>(sourceCRS().get()); + if (!sourceCRSGeog) { + throw io::FormattingException( + concat("Can apply ", methodName, " only to GeographicCRS")); + } + + auto targetCRSGeog = + dynamic_cast<const crs::GeographicCRS *>(targetCRS().get()); + if (!targetCRSGeog) { + throw io::FormattingException( + concat("Can apply ", methodName, " only to GeographicCRS")); + } + + formatter->startInversion(); + sourceCRSGeog->addAngularUnitConvertAndAxisSwap(formatter); + formatter->stopInversion(); + + if (isMethodInverseOf) { + formatter->startInversion(); + } + formatter->addStep("hgridshift"); + formatter->addParam("grids", hGridShiftFilename); + if (isMethodInverseOf) { + formatter->stopInversion(); + } + + targetCRSGeog->addAngularUnitConvertAndAxisSwap(formatter); + + return; + } + + const auto &heightFilename = _getHeightToGeographic3DFilename(this, true); + if (!heightFilename.empty()) { + if (isMethodInverseOf) { + formatter->startInversion(); + } + formatter->addStep("vgridshift"); + formatter->addParam("grids", heightFilename); + if (isMethodInverseOf) { + formatter->stopInversion(); + } + return; + } + + if (isGeographic3DToGravityRelatedHeight(method(), true)) { + auto fileParameter = + parameterValue(EPSG_NAME_PARAMETER_GEOID_CORRECTION_FILENAME, + EPSG_CODE_PARAMETER_GEOID_CORRECTION_FILENAME); + if (fileParameter && + fileParameter->type() == ParameterValue::Type::FILENAME) { + auto filename = fileParameter->valueFile(); + if (isMethodInverseOf) { + formatter->startInversion(); + } + formatter->addStep("vgridshift"); + formatter->addParam("grids", filename); + if (isMethodInverseOf) { + formatter->stopInversion(); + } + return; + } + } + + if (methodEPSGCode == EPSG_CODE_METHOD_VERTCON) { + auto fileParameter = + parameterValue(EPSG_NAME_PARAMETER_VERTICAL_OFFSET_FILE, + EPSG_CODE_PARAMETER_VERTICAL_OFFSET_FILE); + if (fileParameter && + fileParameter->type() == ParameterValue::Type::FILENAME) { + formatter->addStep("vgridshift"); + // The vertcon grids go from NGVD 29 to NAVD 88, with units + // in millimeter (see + // https://github.com/OSGeo/proj.4/issues/1071) + formatter->addParam("grids", fileParameter->valueFile()); + formatter->addParam("multiplier", 0.001); + return; + } + } + + if (isLongitudeRotation()) { + double offsetDeg = + parameterValueNumeric(EPSG_CODE_PARAMETER_LONGITUDE_OFFSET, + common::UnitOfMeasure::DEGREE); + + auto sourceCRSGeog = + dynamic_cast<const crs::GeographicCRS *>(sourceCRS().get()); + if (!sourceCRSGeog) { + throw io::FormattingException( + concat("Can apply ", methodName, " only to GeographicCRS")); + } + + auto targetCRSGeog = + dynamic_cast<const crs::GeographicCRS *>(targetCRS().get()); + if (!targetCRSGeog) { + throw io::FormattingException( + concat("Can apply ", methodName + " only to GeographicCRS")); + } + + if (!sourceCRSGeog->ellipsoid()->_isEquivalentTo( + targetCRSGeog->ellipsoid().get())) { + // This is arguable if we should check this... + throw io::FormattingException("Can apply Longitude rotation " + "only to SRS with same " + "ellipsoid"); + } + + formatter->startInversion(); + sourceCRSGeog->addAngularUnitConvertAndAxisSwap(formatter); + formatter->stopInversion(); + + bool done = false; + if (offsetDeg != 0.0) { + // Optimization: as we are doing nominally a +step=inv, + // if the negation of the offset value is a well-known name, + // then use forward case with this name. + auto projPMName = datum::PrimeMeridian::getPROJStringWellKnownName( + common::Angle(-offsetDeg)); + if (!projPMName.empty()) { + done = true; + formatter->addStep("longlat"); + sourceCRSGeog->ellipsoid()->_exportToPROJString(formatter); + formatter->addParam("pm", projPMName); + } + } + if (!done) { + // To actually add the offset, we must use the reverse longlat + // operation. + formatter->startInversion(); + formatter->addStep("longlat"); + sourceCRSGeog->ellipsoid()->_exportToPROJString(formatter); + datum::PrimeMeridian::create(util::PropertyMap(), + common::Angle(offsetDeg)) + ->_exportToPROJString(formatter); + formatter->stopInversion(); + } + + targetCRSGeog->addAngularUnitConvertAndAxisSwap(formatter); + + return; + } + + if (exportToPROJStringGeneric(formatter)) { + return; + } + + throw io::FormattingException("Unimplemented"); +} + +// --------------------------------------------------------------------------- + +bool SingleOperation::exportToPROJStringGeneric( + io::PROJStringFormatter *formatter) const { + const int methodEPSGCode = method()->getEPSGCode(); + + if (methodEPSGCode == EPSG_CODE_METHOD_AFFINE_PARAMETRIC_TRANSFORMATION) { + const double A0 = parameterValueMeasure(EPSG_CODE_PARAMETER_A0).value(); + const double A1 = parameterValueMeasure(EPSG_CODE_PARAMETER_A1).value(); + const double A2 = parameterValueMeasure(EPSG_CODE_PARAMETER_A2).value(); + const double B0 = parameterValueMeasure(EPSG_CODE_PARAMETER_B0).value(); + const double B1 = parameterValueMeasure(EPSG_CODE_PARAMETER_B1).value(); + const double B2 = parameterValueMeasure(EPSG_CODE_PARAMETER_B2).value(); + + // Do not mess with axis unit and order for that transformation + + formatter->addStep("affine"); + formatter->addParam("xoff", A0); + formatter->addParam("s11", A1); + formatter->addParam("s12", A2); + formatter->addParam("yoff", B0); + formatter->addParam("s21", B1); + formatter->addParam("s22", B2); + + return true; + } + + if (isAxisOrderReversal(methodEPSGCode)) { + formatter->addStep("axisswap"); + formatter->addParam("order", "2,1"); + return true; + } + + if (methodEPSGCode == EPSG_CODE_METHOD_GEOGRAPHIC_GEOCENTRIC) { + + auto sourceCRSGeod = + dynamic_cast<const crs::GeodeticCRS *>(sourceCRS().get()); + auto targetCRSGeod = + dynamic_cast<const crs::GeodeticCRS *>(targetCRS().get()); + if (sourceCRSGeod && targetCRSGeod) { + auto sourceCRSGeog = + dynamic_cast<const crs::GeographicCRS *>(sourceCRSGeod); + auto targetCRSGeog = + dynamic_cast<const crs::GeographicCRS *>(targetCRSGeod); + bool isSrcGeocentric = sourceCRSGeod->isGeocentric(); + bool isSrcGeographic = sourceCRSGeog != nullptr; + bool isTargetGeocentric = targetCRSGeod->isGeocentric(); + bool isTargetGeographic = targetCRSGeog != nullptr; + if ((isSrcGeocentric && isTargetGeographic) || + (isSrcGeographic && isTargetGeocentric)) { + + formatter->startInversion(); + sourceCRSGeod->_exportToPROJString(formatter); + formatter->stopInversion(); + + targetCRSGeod->_exportToPROJString(formatter); + + return true; + } + } + + throw io::FormattingException("Invalid nature of source and/or " + "targetCRS for Geographic/Geocentric " + "conversion"); + } + + return false; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +PointMotionOperation::~PointMotionOperation() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct ConcatenatedOperation::Private { + std::vector<CoordinateOperationNNPtr> operations_{}; + bool computedName_ = false; + + explicit Private(const std::vector<CoordinateOperationNNPtr> &operationsIn) + : operations_(operationsIn) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +ConcatenatedOperation::~ConcatenatedOperation() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +ConcatenatedOperation::ConcatenatedOperation( + const std::vector<CoordinateOperationNNPtr> &operationsIn) + : CoordinateOperation(), d(internal::make_unique<Private>(operationsIn)) {} + +// --------------------------------------------------------------------------- + +/** \brief Return the operation steps of the concatenated operation. + * + * @return the operation steps. + */ +const std::vector<CoordinateOperationNNPtr> & +ConcatenatedOperation::operations() const { + return d->operations_; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ConcatenatedOperation + * + * @param properties See \ref general_properties. At minimum the name should + * be + * defined. + * @param operationsIn Vector of the CoordinateOperation steps. + * @param accuracies Vector of positional accuracy (might be empty). + * @return new Transformation. + * @throws InvalidOperation + */ +ConcatenatedOperationNNPtr ConcatenatedOperation::create( + const util::PropertyMap &properties, + const std::vector<CoordinateOperationNNPtr> &operationsIn, + const std::vector<metadata::PositionalAccuracyNNPtr> + &accuracies) // throw InvalidOperation +{ + if (operationsIn.size() < 2) { + throw InvalidOperation( + "ConcatenatedOperation must have at least 2 operations"); + } + crs::CRSPtr lastTargetCRS; + for (size_t i = 0; i < operationsIn.size(); i++) { + auto l_sourceCRS = operationsIn[i]->sourceCRS(); + auto l_targetCRS = operationsIn[i]->targetCRS(); + if (l_sourceCRS == nullptr || l_targetCRS == nullptr) { + throw InvalidOperation("At least one of the operation lacks a " + "source and/or target CRS"); + } + if (i >= 1) { + const auto &sourceCRSIds = l_sourceCRS->identifiers(); + const auto &targetCRSIds = lastTargetCRS->identifiers(); + if (sourceCRSIds.size() == 1 && targetCRSIds.size() == 1 && + sourceCRSIds[0]->code() == targetCRSIds[0]->code() && + *sourceCRSIds[0]->codeSpace() == + *targetCRSIds[0]->codeSpace()) { + // same id --> ok + } else if (!l_sourceCRS->_isEquivalentTo( + lastTargetCRS.get(), + util::IComparable::Criterion::EQUIVALENT)) { + throw InvalidOperation( + "Inconsistent chaining of CRS in operations"); + } + } + lastTargetCRS = l_targetCRS; + } + auto op = ConcatenatedOperation::nn_make_shared<ConcatenatedOperation>( + operationsIn); + op->assignSelf(op); + op->setProperties(properties); + op->setCRSs(NN_NO_CHECK(operationsIn[0]->sourceCRS()), + NN_NO_CHECK(operationsIn.back()->targetCRS()), nullptr); + op->setAccuracies(accuracies); + return op; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static std::string computeConcatenatedName( + const std::vector<CoordinateOperationNNPtr> &flattenOps) { + std::string name; + for (const auto &subOp : flattenOps) { + if (!name.empty()) { + name += " + "; + } + const auto &l_name = subOp->nameStr(); + if (l_name.empty()) { + name += "unnamed"; + } else { + name += l_name; + } + } + return name; +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ConcatenatedOperation, or return a single + * coordinate + * operation. + * + * This computes its accuracy from the sum of its member operations, its + * extent + * + * @param operationsIn Vector of the CoordinateOperation steps. + * @param checkExtent Whether we should check the non-emptyness of the + * intersection + * of the extents of the operations + * @throws InvalidOperation + */ +CoordinateOperationNNPtr ConcatenatedOperation::createComputeMetadata( + const std::vector<CoordinateOperationNNPtr> &operationsIn, + bool checkExtent) // throw InvalidOperation +{ + util::PropertyMap properties; + + if (operationsIn.size() == 1) { + return operationsIn[0]; + } + + std::vector<CoordinateOperationNNPtr> flattenOps; + for (const auto &subOp : operationsIn) { + auto subOpConcat = + dynamic_cast<const ConcatenatedOperation *>(subOp.get()); + if (subOpConcat) { + auto subOps = subOpConcat->operations(); + for (const auto &subSubOp : subOps) { + flattenOps.emplace_back(subSubOp); + } + } else { + flattenOps.emplace_back(subOp); + } + } + if (flattenOps.size() == 1) { + return flattenOps[0]; + } + + properties.set(common::IdentifiedObject::NAME_KEY, + computeConcatenatedName(flattenOps)); + + bool emptyIntersection = false; + auto extent = getExtent(flattenOps, false, emptyIntersection); + if (checkExtent && emptyIntersection) { + std::string msg( + "empty intersection of area of validity of concantenated " + "operations"); + throw InvalidOperationEmptyIntersection(msg); + } + if (extent) { + properties.set(common::ObjectUsage::DOMAIN_OF_VALIDITY_KEY, + NN_NO_CHECK(extent)); + } + + std::vector<metadata::PositionalAccuracyNNPtr> accuracies; + const double accuracy = getAccuracy(flattenOps); + if (accuracy >= 0.0) { + accuracies.emplace_back( + metadata::PositionalAccuracy::create(toString(accuracy))); + } + + auto op = create(properties, flattenOps, accuracies); + op->d->computedName_ = true; + return op; +} + +// --------------------------------------------------------------------------- + +CoordinateOperationNNPtr ConcatenatedOperation::inverse() const { + std::vector<CoordinateOperationNNPtr> inversedOperations; + auto l_operations = operations(); + inversedOperations.reserve(l_operations.size()); + for (const auto &operation : l_operations) { + inversedOperations.emplace_back(operation->inverse()); + } + std::reverse(inversedOperations.begin(), inversedOperations.end()); + + auto properties = createPropertiesForInverse(this, false, false); + if (d->computedName_) { + properties.set(common::IdentifiedObject::NAME_KEY, + computeConcatenatedName(inversedOperations)); + } + + auto op = + create(properties, inversedOperations, coordinateOperationAccuracies()); + op->d->computedName_ = d->computedName_; + return op; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void ConcatenatedOperation::_exportToWKT(io::WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + if (!isWKT2 || !formatter->use2018Keywords()) { + throw io::FormattingException( + "Transformation can only be exported to WKT2:2018"); + } + + formatter->startNode(io::WKTConstants::CONCATENATEDOPERATION, + !identifiers().empty()); + formatter->addQuotedString(nameStr()); + + formatter->startNode(io::WKTConstants::SOURCECRS, false); + sourceCRS()->_exportToWKT(formatter); + formatter->endNode(); + + formatter->startNode(io::WKTConstants::TARGETCRS, false); + targetCRS()->_exportToWKT(formatter); + formatter->endNode(); + + for (const auto &operation : operations()) { + formatter->startNode(io::WKTConstants::STEP, false); + operation->_exportToWKT(formatter); + formatter->endNode(); + } + + ObjectUsage::baseExportToWKT(formatter); + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +void ConcatenatedOperation::_exportToPROJString( + io::PROJStringFormatter *formatter) const // throw(FormattingException) +{ + for (const auto &operation : operations()) { + operation->_exportToPROJString(formatter); + } +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool ConcatenatedOperation::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherCO = dynamic_cast<const ConcatenatedOperation *>(other); + if (otherCO == nullptr || !ObjectUsage::_isEquivalentTo(other, criterion)) { + return false; + } + const auto &steps = operations(); + const auto &otherSteps = otherCO->operations(); + if (steps.size() != otherSteps.size()) { + return false; + } + for (size_t i = 0; i < steps.size(); i++) { + if (!steps[i]->_isEquivalentTo(otherSteps[i].get(), criterion)) { + return false; + } + } + return true; +} +//! @endcond + +// --------------------------------------------------------------------------- + +std::set<GridDescription> ConcatenatedOperation::gridsNeeded( + const io::DatabaseContextPtr &databaseContext) const { + std::set<GridDescription> res; + for (const auto &operation : operations()) { + const auto l_gridsNeeded = operation->gridsNeeded(databaseContext); + for (const auto &gridDesc : l_gridsNeeded) { + res.insert(gridDesc); + } + } + return res; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct CoordinateOperationContext::Private { + io::AuthorityFactoryPtr authorityFactory_{}; + metadata::ExtentPtr extent_{}; + double accuracy_ = 0.0; + SourceTargetCRSExtentUse sourceAndTargetCRSExtentUse_ = + CoordinateOperationContext::SourceTargetCRSExtentUse::SMALLEST; + SpatialCriterion spatialCriterion_ = + CoordinateOperationContext::SpatialCriterion::STRICT_CONTAINMENT; + bool usePROJNames_ = true; + GridAvailabilityUse gridAvailabilityUse_ = + GridAvailabilityUse::USE_FOR_SORTING; + bool allowUseIntermediateCRS_ = true; + std::vector<std::pair<std::string, std::string>> + intermediateCRSAuthCodes_{}; +}; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +CoordinateOperationContext::~CoordinateOperationContext() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +CoordinateOperationContext::CoordinateOperationContext() + : d(internal::make_unique<Private>()) {} + +// --------------------------------------------------------------------------- + +/** \brief Return the authority factory, or null */ +const io::AuthorityFactoryPtr & +CoordinateOperationContext::getAuthorityFactory() const { + return d->authorityFactory_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the desired area of interest, or null */ +const metadata::ExtentPtr & +CoordinateOperationContext::getAreaOfInterest() const { + return d->extent_; +} + +// --------------------------------------------------------------------------- + +/** \brief Set the desired area of interest, or null */ +void CoordinateOperationContext::setAreaOfInterest( + const metadata::ExtentPtr &extent) { + d->extent_ = extent; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the desired accuracy (in metre), or 0 */ +double CoordinateOperationContext::getDesiredAccuracy() const { + return d->accuracy_; +} + +// --------------------------------------------------------------------------- + +/** \brief Set the desired accuracy (in metre), or 0 */ +void CoordinateOperationContext::setDesiredAccuracy(double accuracy) { + d->accuracy_ = accuracy; +} + +// --------------------------------------------------------------------------- + +/** \brief Set how source and target CRS extent should be used + * when considering if a transformation can be used (only takes effect if + * no area of interest is explicitly defined). + * + * The default is + * CoordinateOperationContext::SourceTargetCRSExtentUse::SMALLEST. + */ +void CoordinateOperationContext::setSourceAndTargetCRSExtentUse( + SourceTargetCRSExtentUse use) { + d->sourceAndTargetCRSExtentUse_ = use; +} + +// --------------------------------------------------------------------------- + +/** \brief Return how source and target CRS extent should be used + * when considering if a transformation can be used (only takes effect if + * no area of interest is explicitly defined). + * + * The default is + * CoordinateOperationContext::SourceTargetCRSExtentUse::SMALLEST. + */ +CoordinateOperationContext::SourceTargetCRSExtentUse +CoordinateOperationContext::getSourceAndTargetCRSExtentUse() const { + return d->sourceAndTargetCRSExtentUse_; +} + +// --------------------------------------------------------------------------- + +/** \brief Set the spatial criterion to use when comparing the area of + * validity + * of coordinate operations with the area of interest / area of validity of + * source and target CRS. + * + * The default is STRICT_CONTAINMENT. + */ +void CoordinateOperationContext::setSpatialCriterion( + SpatialCriterion criterion) { + d->spatialCriterion_ = criterion; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the spatial criterion to use when comparing the area of + * validity + * of coordinate operations with the area of interest / area of validity of + * source and target CRS. + * + * The default is STRICT_CONTAINMENT. + */ +CoordinateOperationContext::SpatialCriterion +CoordinateOperationContext::getSpatialCriterion() const { + return d->spatialCriterion_; +} + +// --------------------------------------------------------------------------- + +/** \brief Set whether PROJ alternative grid names should be substituted to + * the official authority names. + * + * This only has effect is an authority factory with a non-null database context + * has been attached to this context. + * + * If set to false, it is still possible to + * obtain later the substitution by using io::PROJStringFormatter::create() + * with a non-null database context. + * + * The default is true. + */ +void CoordinateOperationContext::setUsePROJAlternativeGridNames( + bool usePROJNames) { + d->usePROJNames_ = usePROJNames; +} + +// --------------------------------------------------------------------------- + +/** \brief Return whether PROJ alternative grid names should be substituted to + * the official authority names. + * + * The default is true. + */ +bool CoordinateOperationContext::getUsePROJAlternativeGridNames() const { + return d->usePROJNames_; +} + +// --------------------------------------------------------------------------- + +/** \brief Set how grid availability is used. + * + * The default is USE_FOR_SORTING. + */ +void CoordinateOperationContext::setGridAvailabilityUse( + GridAvailabilityUse use) { + d->gridAvailabilityUse_ = use; +} + +// --------------------------------------------------------------------------- + +/** \brief Return how grid availability is used. + * + * The default is USE_FOR_SORTING. + */ +CoordinateOperationContext::GridAvailabilityUse +CoordinateOperationContext::getGridAvailabilityUse() const { + return d->gridAvailabilityUse_; +} + +// --------------------------------------------------------------------------- + +/** \brief Set whether an intermediate pivot CRS can be used for researching + * coordinate operations between a source and target CRS. + * + * Concretely if in the database there is an operation from A to C + * (or C to A), and another one from C to B (or B to C), but no direct + * operation between A and B, setting this parameter to true, allow + * chaining both operations. + * + * The current implementation is limited to researching one intermediate + * step. + * + * By default, all potential C candidates will be used. setIntermediateCRS() + * can be used to restrict them. + * + * The default is true. + */ +void CoordinateOperationContext::setAllowUseIntermediateCRS(bool use) { + d->allowUseIntermediateCRS_ = use; +} + +// --------------------------------------------------------------------------- + +/** \brief Return whether an intermediate pivot CRS can be used for researching + * coordinate operations between a source and target CRS. + * + * Concretely if in the database there is an operation from A to C + * (or C to A), and another one from C to B (or B to C), but no direct + * operation between A and B, setting this parameter to true, allow + * chaining both operations. + * + * The default is true. + */ +bool CoordinateOperationContext::getAllowUseIntermediateCRS() const { + return d->allowUseIntermediateCRS_; +} + +// --------------------------------------------------------------------------- + +/** \brief Restrict the potential pivot CRSs that can be used when trying to + * build a coordinate operation between two CRS that have no direct operation. + * + * @param intermediateCRSAuthCodes a vector of (auth_name, code) that can be + * used as potential pivot RS + */ +void CoordinateOperationContext::setIntermediateCRS( + const std::vector<std::pair<std::string, std::string>> + &intermediateCRSAuthCodes) { + d->intermediateCRSAuthCodes_ = intermediateCRSAuthCodes; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the potential pivot CRSs that can be used when trying to + * build a coordinate operation between two CRS that have no direct operation. + * + */ +const std::vector<std::pair<std::string, std::string>> & +CoordinateOperationContext::getIntermediateCRS() const { + return d->intermediateCRSAuthCodes_; +} + +// --------------------------------------------------------------------------- + +/** \brief Creates a context for a coordinate operation. + * + * If a non null authorityFactory is provided, the resulting context should + * not be used simultaneously by more than one thread. + * + * @param authorityFactory Authority factory, or null if no database lookup + * is allowed. + * Use io::authorityFactory::create(context, std::string()) to allow all + * authorities to be used. + * @param extent Area of interest, or null if none is known. + * @param accuracy Maximum allowed accuracy in metre, as specified in or + * 0 to get best accuracy. + * @return a new context. + */ +CoordinateOperationContextNNPtr CoordinateOperationContext::create( + const io::AuthorityFactoryPtr &authorityFactory, + const metadata::ExtentPtr &extent, double accuracy) { + auto ctxt = NN_NO_CHECK( + CoordinateOperationContext::make_unique<CoordinateOperationContext>()); + ctxt->d->authorityFactory_ = authorityFactory; + ctxt->d->extent_ = extent; + ctxt->d->accuracy_ = accuracy; + return ctxt; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct CoordinateOperationFactory::Private { + + struct Context { + // This is the source CRS and target CRS of the initial + // CoordinateOperationFactory::createOperations() public call, not + // necessarily the ones of intermediate + // CoordinateOperationFactory::Private::createOperations() calls. + // This is used to compare transformations area of use against the + // area of use of the source & target CRS. + const crs::CRSNNPtr &sourceCRS; + const crs::CRSNNPtr &targetCRS; + const CoordinateOperationContextNNPtr &context; + bool inCreateOperationsWithDatumPivotAntiRecursion = false; + + Context(const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, + const CoordinateOperationContextNNPtr &contextIn) + : sourceCRS(sourceCRSIn), targetCRS(targetCRSIn), + context(contextIn) {} + }; + + static std::vector<CoordinateOperationNNPtr> + createOperations(const crs::CRSNNPtr &sourceCRS, + const crs::CRSNNPtr &targetCRS, Context &context); + + private: + static std::vector<CoordinateOperationNNPtr> createOperationsGeogToGeog( + std::vector<CoordinateOperationNNPtr> &res, + const crs::CRSNNPtr &sourceCRS, const crs::CRSNNPtr &targetCRS, + const crs::GeographicCRS *geogSrc, const crs::GeographicCRS *geogDst); + + static void createOperationsWithDatumPivot( + std::vector<CoordinateOperationNNPtr> &res, + const crs::CRSNNPtr &sourceCRS, const crs::CRSNNPtr &targetCRS, + const crs::GeodeticCRS *geodSrc, const crs::GeodeticCRS *geodDst, + Context &context); + + static bool + hasPerfectAccuracyResult(const std::vector<CoordinateOperationNNPtr> &res, + const Context &context); + + static ConversionNNPtr + createGeographicGeocentric(const crs::CRSNNPtr &sourceCRS, + const crs::CRSNNPtr &targetCRS); +}; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +CoordinateOperationFactory::~CoordinateOperationFactory() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +CoordinateOperationFactory::CoordinateOperationFactory() : d(nullptr) {} + +// --------------------------------------------------------------------------- + +/** \brief Find a CoordinateOperation from sourceCRS to targetCRS. + * + * This is a helper of createOperations(), using a coordinate operation + * context + * with no authority factory (so no catalog searching is done), no desired + * accuracy and no area of interest. + * This returns the first operation of the result set of createOperations(), + * or null if none found. + * + * @param sourceCRS source CRS. + * @param targetCRS source CRS. + * @return a CoordinateOperation or nullptr. + */ +CoordinateOperationPtr CoordinateOperationFactory::createOperation( + const crs::CRSNNPtr &sourceCRS, const crs::CRSNNPtr &targetCRS) const { + auto res = createOperations( + sourceCRS, targetCRS, + CoordinateOperationContext::create(nullptr, nullptr, 0.0)); + if (!res.empty()) { + return res[0]; + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +// --------------------------------------------------------------------------- + +struct PrecomputedOpCharacteristics { + double area_{}; + double accuracy_{}; + bool hasGrids_ = false; + bool gridsAvailable_ = false; + bool gridsKnown_ = false; + size_t stepCount_ = 0; + + PrecomputedOpCharacteristics() = default; + PrecomputedOpCharacteristics(double area, double accuracy, bool hasGrids, + bool gridsAvailable, bool gridsKnown, + size_t stepCount) + : area_(area), accuracy_(accuracy), hasGrids_(hasGrids), + gridsAvailable_(gridsAvailable), gridsKnown_(gridsKnown), + stepCount_(stepCount) {} +}; + +// --------------------------------------------------------------------------- + +// We could have used a lambda instead of this old-school way, but +// filterAndSort() is already huge. +struct SortFunction { + + const std::map<CoordinateOperation *, PrecomputedOpCharacteristics> ↦ + + explicit SortFunction(const std::map<CoordinateOperation *, + PrecomputedOpCharacteristics> &mapIn) + : map(mapIn) {} + + // Sorting function + // Return true if a < b + bool operator()(const CoordinateOperationNNPtr &a, + const CoordinateOperationNNPtr &b) const { + auto iterA = map.find(a.get()); + assert(iterA != map.end()); + auto iterB = map.find(b.get()); + assert(iterB != map.end()); + + // CAUTION: the order of the comparisons is extremely important + // to get the intended result. + + if (iterA->second.hasGrids_ && iterB->second.hasGrids_) { + // Operations where grids are all available go before other + if (iterA->second.gridsAvailable_ && + !iterB->second.gridsAvailable_) { + return true; + } + if (iterB->second.gridsAvailable_ && + !iterA->second.gridsAvailable_) { + return false; + } + } + + // Operations where grids are all known in our DB go before other + if (iterA->second.gridsKnown_ && !iterB->second.gridsKnown_) { + return true; + } + if (iterB->second.gridsKnown_ && !iterA->second.gridsKnown_) { + return false; + } + + // Operations with known accuracy go before those with unknown accuracy + const double accuracyA = iterA->second.accuracy_; + const double accuracyB = iterB->second.accuracy_; + if (accuracyA >= 0 && accuracyB < 0) { + return true; + } + if (accuracyB >= 0 && accuracyA < 0) { + return false; + } + + // Operations with larger non-zero area of use go before those with + // lower one + const double areaA = iterA->second.area_; + const double areaB = iterB->second.area_; + if (areaA > 0) { + if (areaA > areaB) { + return true; + } + if (areaA < areaB) { + return false; + } + } else if (areaB > 0) { + return false; + } + + // Operations with better accuracy go before those with worse one + if (accuracyA >= 0 && accuracyA < accuracyB) { + return true; + } + if (accuracyB >= 0 && accuracyB < accuracyA) { + return false; + } + + if (accuracyA >= 0 && accuracyA == accuracyB) { + // same accuracy ? then prefer operations without grids + if (!iterA->second.hasGrids_ && iterB->second.hasGrids_) { + return true; + } + if (iterA->second.hasGrids_ && !iterB->second.hasGrids_) { + return false; + } + } else if (accuracyA < 0 && accuracyB < 0) { + // unknown accuracy ? then prefer operations with grids, which + // are likely to have best practical accuracy + if (iterA->second.hasGrids_ && !iterB->second.hasGrids_) { + return true; + } + if (!iterA->second.hasGrids_ && iterB->second.hasGrids_) { + return false; + } + } + + // The less intermediate steps, the better + if (iterA->second.stepCount_ < iterB->second.stepCount_) { + return true; + } + if (iterB->second.stepCount_ < iterA->second.stepCount_) { + return false; + } + + const auto &a_name = a->nameStr(); + const auto &b_name = b->nameStr(); + // The shorter name, the better ? + if (a_name.size() < b_name.size()) { + return true; + } + if (b_name.size() < a_name.size()) { + return false; + } + + // Arbitrary final criterion + return a_name < b_name; + } +}; + +// --------------------------------------------------------------------------- + +static size_t getStepCount(const CoordinateOperationNNPtr &op) { + auto concat = dynamic_cast<const ConcatenatedOperation *>(op.get()); + size_t stepCount = 1; + if (concat) { + stepCount = concat->operations().size(); + } + return stepCount; +} + +// --------------------------------------------------------------------------- + +struct FilterAndSort { + + FilterAndSort(const std::vector<CoordinateOperationNNPtr> &sourceListIn, + const CoordinateOperationContextNNPtr &contextIn, + const crs::CRSNNPtr &sourceCRSIn, + const crs::CRSNNPtr &targetCRSIn, + bool forceStrictContainmentTest) + : sourceList(sourceListIn), context(contextIn), sourceCRS(sourceCRSIn), + targetCRS(targetCRSIn), sourceCRSExtent(getExtent(sourceCRS)), + targetCRSExtent(getExtent(targetCRS)), + areaOfInterest(context->getAreaOfInterest()), + desiredAccuracy(context->getDesiredAccuracy()), + sourceAndTargetCRSExtentUse( + context->getSourceAndTargetCRSExtentUse()) { + + computeAreaOfIntest(); + filterOut(forceStrictContainmentTest); + sort(); + + // And now that we have a sorted list, we can remove uninteresting + // results + // ... + removeSyntheticNullTransforms(); + removeUninterestingOps(); + removeDuplicateOps(); + removeSyntheticNullTransforms(); + } + + // ---------------------------------------------------------------------- + + // cppcheck-suppress functionStatic + const std::vector<CoordinateOperationNNPtr> &getRes() { return res; } + + // ---------------------------------------------------------------------- + private: + const std::vector<CoordinateOperationNNPtr> &sourceList; + const CoordinateOperationContextNNPtr &context; + const crs::CRSNNPtr &sourceCRS; + const crs::CRSNNPtr &targetCRS; + const metadata::ExtentPtr &sourceCRSExtent; + const metadata::ExtentPtr &targetCRSExtent; + metadata::ExtentPtr areaOfInterest; + const double desiredAccuracy = context->getDesiredAccuracy(); + const CoordinateOperationContext::SourceTargetCRSExtentUse + sourceAndTargetCRSExtentUse; + + bool hasOpThatContainsAreaOfInterest = false; + std::vector<CoordinateOperationNNPtr> res{}; + + // ---------------------------------------------------------------------- + void computeAreaOfIntest() { + + // Compute an area of interest from the CRS extent if the user did + // not specify one + if (!areaOfInterest) { + if (sourceAndTargetCRSExtentUse == + CoordinateOperationContext::SourceTargetCRSExtentUse:: + INTERSECTION) { + if (sourceCRSExtent && targetCRSExtent) { + areaOfInterest = sourceCRSExtent->intersection( + NN_NO_CHECK(targetCRSExtent)); + } + } else if (sourceAndTargetCRSExtentUse == + CoordinateOperationContext::SourceTargetCRSExtentUse:: + SMALLEST) { + if (sourceCRSExtent && targetCRSExtent) { + if (getPseudoArea(sourceCRSExtent) < + getPseudoArea(targetCRSExtent)) { + areaOfInterest = sourceCRSExtent; + } else { + areaOfInterest = targetCRSExtent; + } + } else if (sourceCRSExtent) { + areaOfInterest = sourceCRSExtent; + } else { + areaOfInterest = targetCRSExtent; + } + } + } + } + + // --------------------------------------------------------------------------- + + void filterOut(bool forceStrictContainmentTest) { + + // Filter out operations that do not match the expected accuracy + // and area of use. + const auto spatialCriterion = + forceStrictContainmentTest + ? CoordinateOperationContext::SpatialCriterion:: + STRICT_CONTAINMENT + : context->getSpatialCriterion(); + for (const auto &op : sourceList) { + if (desiredAccuracy != 0) { + const double accuracy = getAccuracy(op); + if (accuracy < 0 || accuracy > desiredAccuracy) { + continue; + } + } + if (areaOfInterest) { + bool emptyIntersection = false; + auto extent = getExtent(op, true, emptyIntersection); + if (!extent) + continue; + bool extentContains = + extent->contains(NN_NO_CHECK(areaOfInterest)); + if (extentContains) { + hasOpThatContainsAreaOfInterest = true; + } + if (spatialCriterion == + CoordinateOperationContext::SpatialCriterion:: + STRICT_CONTAINMENT && + !extentContains) { + continue; + } + if (spatialCriterion == + CoordinateOperationContext::SpatialCriterion:: + PARTIAL_INTERSECTION && + !extent->intersects(NN_NO_CHECK(areaOfInterest))) { + continue; + } + } else if (sourceAndTargetCRSExtentUse == + CoordinateOperationContext::SourceTargetCRSExtentUse:: + BOTH) { + bool emptyIntersection = false; + auto extent = getExtent(op, true, emptyIntersection); + if (!extent) + continue; + bool extentContainsSource = + !sourceCRSExtent || + extent->contains(NN_NO_CHECK(sourceCRSExtent)); + bool extentContainsTarget = + !targetCRSExtent || + extent->contains(NN_NO_CHECK(targetCRSExtent)); + if (extentContainsSource && extentContainsTarget) { + hasOpThatContainsAreaOfInterest = true; + } + if (spatialCriterion == + CoordinateOperationContext::SpatialCriterion:: + STRICT_CONTAINMENT) { + if (!extentContainsSource || !extentContainsTarget) { + continue; + } + } else if (spatialCriterion == + CoordinateOperationContext::SpatialCriterion:: + PARTIAL_INTERSECTION) { + bool extentIntersectsSource = + !sourceCRSExtent || + extent->intersects(NN_NO_CHECK(sourceCRSExtent)); + bool extentIntersectsTarget = + targetCRSExtent && + extent->intersects(NN_NO_CHECK(targetCRSExtent)); + if (!extentIntersectsSource || !extentIntersectsTarget) { + continue; + } + } + } + res.emplace_back(op); + } + } + + // ---------------------------------------------------------------------- + + void sort() { + + // Precompute a number of parameters for each operation that will be + // useful for the sorting. + std::map<CoordinateOperation *, PrecomputedOpCharacteristics> map; + for (const auto &op : res) { + bool dummy = false; + auto extentOp = getExtent(op, true, dummy); + double area = 0.0; + if (extentOp) { + if (areaOfInterest) { + area = getPseudoArea( + extentOp->intersection(NN_NO_CHECK(areaOfInterest))); + } else if (sourceCRSExtent && targetCRSExtent) { + auto x = + extentOp->intersection(NN_NO_CHECK(sourceCRSExtent)); + auto y = + extentOp->intersection(NN_NO_CHECK(targetCRSExtent)); + area = getPseudoArea(x) + getPseudoArea(y) - + ((x && y) + ? getPseudoArea(x->intersection(NN_NO_CHECK(y))) + : 0.0); + } else if (sourceCRSExtent) { + area = getPseudoArea( + extentOp->intersection(NN_NO_CHECK(sourceCRSExtent))); + } else if (targetCRSExtent) { + area = getPseudoArea( + extentOp->intersection(NN_NO_CHECK(targetCRSExtent))); + } else { + area = getPseudoArea(extentOp); + } + } + + bool hasGrids = false; + bool gridsAvailable = true; + bool gridsKnown = true; + if (context->getAuthorityFactory() && + context->getGridAvailabilityUse() == + CoordinateOperationContext::GridAvailabilityUse:: + USE_FOR_SORTING) { + const auto gridsNeeded = op->gridsNeeded( + context->getAuthorityFactory()->databaseContext()); + for (const auto &gridDesc : gridsNeeded) { + hasGrids = true; + if (!gridDesc.available) { + gridsAvailable = false; + } + if (gridDesc.packageName.empty()) { + gridsKnown = false; + } + } + } + + const auto stepCount = getStepCount(op); + + map[op.get()] = PrecomputedOpCharacteristics( + area, getAccuracy(op), hasGrids, gridsAvailable, gridsKnown, + stepCount); + } + + // Sort ! + std::sort(res.begin(), res.end(), SortFunction(map)); + } + + // ---------------------------------------------------------------------- + + void removeSyntheticNullTransforms() { + + // If we have more than one result, and than the last result is the + // default "Null geographic offset" or "Null geocentric translation" + // operations we have synthetized, remove it as + // all previous results are necessarily better + if (hasOpThatContainsAreaOfInterest && res.size() > 1) { + const std::string &name = res.back()->nameStr(); + if (name.find(NULL_GEOGRAPHIC_OFFSET) != std::string::npos || + name.find(NULL_GEOCENTRIC_TRANSLATION) != std::string::npos) { + std::vector<CoordinateOperationNNPtr> resTemp; + for (size_t i = 0; i < res.size() - 1; i++) { + resTemp.emplace_back(res[i]); + } + res = std::move(resTemp); + } + } + } + + // ---------------------------------------------------------------------- + + void removeUninterestingOps() { + + // Eliminate operations that bring nothing, ie for a given area of use, + // do not keep operations that have greater accuracy. Actually we must + // be a bit more subtle than that, and take into account grid + // availability + std::vector<CoordinateOperationNNPtr> resTemp; + metadata::ExtentPtr lastExtent; + double lastAccuracy = -1; + bool lastHasGrids = false; + bool lastGridsAvailable = true; + std::set<std::set<std::string>> setOfSetOfGrids; + size_t lastStepCount = 0; + CoordinateOperationPtr lastOp; + + bool first = true; + for (const auto &op : res) { + const auto curAccuracy = getAccuracy(op); + bool dummy = false; + const auto curExtent = getExtent(op, true, dummy); + bool curHasGrids = false; + bool curGridsAvailable = true; + std::set<std::string> curSetOfGrids; + + const auto curStepCount = getStepCount(op); + + if (context->getAuthorityFactory()) { + const auto gridsNeeded = op->gridsNeeded( + context->getAuthorityFactory()->databaseContext()); + for (const auto &gridDesc : gridsNeeded) { + curHasGrids = true; + curSetOfGrids.insert(gridDesc.shortName); + if (!gridDesc.available) { + curGridsAvailable = false; + } + } + } + + if (first) { + resTemp.emplace_back(op); + + lastHasGrids = curHasGrids; + lastGridsAvailable = curGridsAvailable; + first = false; + } else { + if (lastOp->_isEquivalentTo(op.get())) { + continue; + } + const bool sameExtent = + ((!curExtent && !lastExtent) || + (curExtent && lastExtent && + curExtent->contains(NN_NO_CHECK(lastExtent)) && + lastExtent->contains(NN_NO_CHECK(curExtent)))); + if (((curAccuracy > lastAccuracy && lastAccuracy >= 0) || + (curAccuracy < 0 && lastAccuracy >= 0)) && + sameExtent) { + // If that set of grids has always been used for that + // extent, + // no need to add them again + if (setOfSetOfGrids.find(curSetOfGrids) != + setOfSetOfGrids.end()) { + continue; + } + // If we have already found a operation without grids for + // that extent, no need to add any lower accuracy operation + if (!lastHasGrids) { + continue; + } + // If we had only operations involving grids, but one + // past operation had available grids, no need to add + // the new one. + if (curHasGrids && curGridsAvailable && + lastGridsAvailable) { + continue; + } + } else if (curAccuracy == lastAccuracy && sameExtent) { + if (curStepCount > lastStepCount) { + continue; + } + } + + resTemp.emplace_back(op); + + if (sameExtent) { + if (!curHasGrids) { + lastHasGrids = false; + } + if (curGridsAvailable) { + lastGridsAvailable = true; + } + } else { + setOfSetOfGrids.clear(); + + lastHasGrids = curHasGrids; + lastGridsAvailable = curGridsAvailable; + } + } + + lastOp = op.as_nullable(); + lastStepCount = curStepCount; + lastExtent = curExtent; + lastAccuracy = curAccuracy; + if (!curSetOfGrids.empty()) { + setOfSetOfGrids.insert(curSetOfGrids); + } + } + res = std::move(resTemp); + } + + // ---------------------------------------------------------------------- + + // cppcheck-suppress functionStatic + void removeDuplicateOps() { + + // When going from EPSG:4807 (NTF Paris) to EPSG:4171 (RGC93), we get + // EPSG:7811, NTF (Paris) to RGF93 (2), 1 m + // and unknown id, NTF (Paris) to NTF (1) + Inverse of RGF93 to NTF (2), + // 1 m + // both have same PROJ string and extent + // Do not keep the later (that has more steps) as it adds no value. + + std::set<std::string> setPROJPlusExtent; + std::vector<CoordinateOperationNNPtr> resTemp; + for (const auto &op : res) { + auto formatter = io::PROJStringFormatter::create(); + try { + std::string key(op->exportToPROJString(formatter.get())); + bool dummy = false; + auto extentOp = getExtent(op, true, dummy); + if (extentOp) { + const auto &geogElts = extentOp->geographicElements(); + if (geogElts.size() == 1) { + auto bbox = dynamic_cast< + const metadata::GeographicBoundingBox *>( + geogElts[0].get()); + if (bbox) { + double w = bbox->westBoundLongitude(); + double s = bbox->southBoundLatitude(); + double e = bbox->eastBoundLongitude(); + double n = bbox->northBoundLatitude(); + key += "-"; + key += toString(w); + key += "-"; + key += toString(s); + key += "-"; + key += toString(e); + key += "-"; + key += toString(n); + } + } + } + + if (setPROJPlusExtent.find(key) == setPROJPlusExtent.end()) { + resTemp.emplace_back(op); + setPROJPlusExtent.insert(key); + } + } catch (const std::exception &) { + resTemp.emplace_back(op); + } + } + res = std::move(resTemp); + } +}; + +// --------------------------------------------------------------------------- + +/** \brief Filter operations and sort them given context. + * + * If a desired accuracy is specified, only keep operations whose accuracy + * is at least the desired one. + * If an area of interest is specified, only keep operations whose area of + * use include the area of interest. + * Then sort remaining operations by descending area of use, and increasing + * accuracy. + */ +static std::vector<CoordinateOperationNNPtr> +filterAndSort(const std::vector<CoordinateOperationNNPtr> &sourceList, + const CoordinateOperationContextNNPtr &context, + const crs::CRSNNPtr &sourceCRS, const crs::CRSNNPtr &targetCRS) { + return FilterAndSort(sourceList, context, sourceCRS, targetCRS, false) + .getRes(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +// Apply the inverse() method on all elements of the input list +static std::vector<CoordinateOperationNNPtr> +applyInverse(const std::vector<CoordinateOperationNNPtr> &list) { + auto res = list; + for (auto &op : res) { + op = op->inverse(); + } + return res; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +// Look in the authority registry for operations from sourceCRS to targetCRS +static std::vector<CoordinateOperationNNPtr> +findOpsInRegistryDirect(const crs::CRSNNPtr &sourceCRS, + const crs::CRSNNPtr &targetCRS, + const CoordinateOperationContextNNPtr &context) { + const auto &authFactory = context->getAuthorityFactory(); + assert(authFactory); + for (const auto &idSrc : sourceCRS->identifiers()) { + const auto &srcAuthName = *(idSrc->codeSpace()); + const auto &srcCode = idSrc->code(); + if (!srcAuthName.empty()) { + for (const auto &idTarget : targetCRS->identifiers()) { + const auto &targetAuthName = *(idTarget->codeSpace()); + const auto &targetCode = idTarget->code(); + if (!targetAuthName.empty()) { + auto res = + authFactory->createFromCoordinateReferenceSystemCodes( + srcAuthName, srcCode, targetAuthName, targetCode, + context->getUsePROJAlternativeGridNames(), + context->getGridAvailabilityUse() == + CoordinateOperationContext:: + GridAvailabilityUse:: + DISCARD_OPERATION_IF_MISSING_GRID); + if (!res.empty()) { + return res; + } + } + } + } + } + return std::vector<CoordinateOperationNNPtr>(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +// Look in the authority registry for operations from sourceCRS to targetCRS +// using an intermediate pivot +static std::vector<CoordinateOperationNNPtr> findsOpsInRegistryWithIntermediate( + const crs::CRSNNPtr &sourceCRS, const crs::CRSNNPtr &targetCRS, + const CoordinateOperationContextNNPtr &context) { + if (!context->getAllowUseIntermediateCRS()) { + return std::vector<CoordinateOperationNNPtr>(); + } + + const auto &authFactory = context->getAuthorityFactory(); + assert(authFactory); + for (const auto &idSrc : sourceCRS->identifiers()) { + const auto &srcAuthName = *(idSrc->codeSpace()); + const auto &srcCode = idSrc->code(); + if (!srcAuthName.empty()) { + for (const auto &idTarget : targetCRS->identifiers()) { + const auto &targetAuthName = *(idTarget->codeSpace()); + const auto &targetCode = idTarget->code(); + if (!targetAuthName.empty()) { + auto res = authFactory->createFromCRSCodesWithIntermediates( + srcAuthName, srcCode, targetAuthName, targetCode, + context->getUsePROJAlternativeGridNames(), + context->getGridAvailabilityUse() == + CoordinateOperationContext::GridAvailabilityUse:: + DISCARD_OPERATION_IF_MISSING_GRID, + context->getIntermediateCRS()); + if (!res.empty()) { + return res; + } + } + } + } + } + return std::vector<CoordinateOperationNNPtr>(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static TransformationNNPtr +createNullGeographicOffset(const crs::CRSNNPtr &sourceCRS, + const crs::CRSNNPtr &targetCRS) { + std::string name(NULL_GEOGRAPHIC_OFFSET); + name += " from "; + name += sourceCRS->nameStr(); + name += " to "; + name += targetCRS->nameStr(); + + const auto &sourceCRSExtent = getExtent(sourceCRS); + const auto &targetCRSExtent = getExtent(targetCRS); + const bool sameExtent = + sourceCRSExtent && targetCRSExtent && + sourceCRSExtent->_isEquivalentTo( + targetCRSExtent.get(), util::IComparable::Criterion::EQUIVALENT); + + util::PropertyMap map; + map.set(common::IdentifiedObject::NAME_KEY, name) + .set(common::ObjectUsage::DOMAIN_OF_VALIDITY_KEY, + sameExtent ? NN_NO_CHECK(sourceCRSExtent) + : metadata::Extent::WORLD); + const common::Angle angle0(0); + if (dynamic_cast<const crs::SingleCRS *>(sourceCRS.get()) + ->coordinateSystem() + ->axisList() + .size() == 3 || + dynamic_cast<const crs::SingleCRS *>(targetCRS.get()) + ->coordinateSystem() + ->axisList() + .size() == 3) { + return Transformation::createGeographic3DOffsets( + map, sourceCRS, targetCRS, angle0, angle0, common::Length(0), {}); + } else { + return Transformation::createGeographic2DOffsets( + map, sourceCRS, targetCRS, angle0, angle0, {}); + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +struct MyPROJStringExportableGeodToGeod final + : public io::IPROJStringExportable { + crs::GeodeticCRSPtr geodSrc{}; + crs::GeodeticCRSPtr geodDst{}; + + MyPROJStringExportableGeodToGeod(const crs::GeodeticCRSPtr &geodSrcIn, + const crs::GeodeticCRSPtr &geodDstIn) + : geodSrc(geodSrcIn), geodDst(geodDstIn) {} + + ~MyPROJStringExportableGeodToGeod() override; + + void + // cppcheck-suppress functionStatic + _exportToPROJString(io::PROJStringFormatter *formatter) const override { + + formatter->startInversion(); + geodSrc->_exportToPROJString(formatter); + formatter->stopInversion(); + geodDst->_exportToPROJString(formatter); + } +}; + +MyPROJStringExportableGeodToGeod::~MyPROJStringExportableGeodToGeod() = default; + +// --------------------------------------------------------------------------- + +struct MyPROJStringExportableHorizVertical final + : public io::IPROJStringExportable { + CoordinateOperationPtr horizTransform{}; + CoordinateOperationPtr verticalTransform{}; + crs::GeographicCRSPtr geogDst{}; + + MyPROJStringExportableHorizVertical( + const CoordinateOperationPtr &horizTransformIn, + const CoordinateOperationPtr &verticalTransformIn, + const crs::GeographicCRSPtr &geogDstIn) + : horizTransform(horizTransformIn), + verticalTransform(verticalTransformIn), geogDst(geogDstIn) {} + + ~MyPROJStringExportableHorizVertical() override; + + void + // cppcheck-suppress functionStatic + _exportToPROJString(io::PROJStringFormatter *formatter) const override { + + formatter->setOmitZUnitConversion(true); + horizTransform->_exportToPROJString(formatter); + + formatter->startInversion(); + geogDst->addAngularUnitConvertAndAxisSwap(formatter); + formatter->stopInversion(); + formatter->setOmitZUnitConversion(false); + + verticalTransform->_exportToPROJString(formatter); + + formatter->setOmitZUnitConversion(true); + geogDst->addAngularUnitConvertAndAxisSwap(formatter); + formatter->setOmitZUnitConversion(false); + } +}; + +MyPROJStringExportableHorizVertical::~MyPROJStringExportableHorizVertical() = + default; + +// --------------------------------------------------------------------------- + +struct MyPROJStringExportableHorizVerticalHorizPROJBased final + : public io::IPROJStringExportable { + CoordinateOperationPtr opSrcCRSToGeogCRS{}; + CoordinateOperationPtr verticalTransform{}; + CoordinateOperationPtr opGeogCRStoDstCRS{}; + crs::GeographicCRSPtr interpolationGeogCRS{}; + + MyPROJStringExportableHorizVerticalHorizPROJBased( + const CoordinateOperationPtr &opSrcCRSToGeogCRSIn, + const CoordinateOperationPtr &verticalTransformIn, + const CoordinateOperationPtr &opGeogCRStoDstCRSIn, + const crs::GeographicCRSPtr &interpolationGeogCRSIn) + : opSrcCRSToGeogCRS(opSrcCRSToGeogCRSIn), + verticalTransform(verticalTransformIn), + opGeogCRStoDstCRS(opGeogCRStoDstCRSIn), + interpolationGeogCRS(interpolationGeogCRSIn) {} + + ~MyPROJStringExportableHorizVerticalHorizPROJBased() override; + + void + // cppcheck-suppress functionStatic + _exportToPROJString(io::PROJStringFormatter *formatter) const override { + + formatter->setOmitZUnitConversion(true); + + opSrcCRSToGeogCRS->_exportToPROJString(formatter); + + formatter->startInversion(); + interpolationGeogCRS->addAngularUnitConvertAndAxisSwap(formatter); + formatter->stopInversion(); + + formatter->setOmitZUnitConversion(false); + + verticalTransform->_exportToPROJString(formatter); + + formatter->setOmitZUnitConversion(true); + + interpolationGeogCRS->addAngularUnitConvertAndAxisSwap(formatter); + + opGeogCRStoDstCRS->_exportToPROJString(formatter); + + formatter->setOmitZUnitConversion(false); + } +}; + +MyPROJStringExportableHorizVerticalHorizPROJBased:: + ~MyPROJStringExportableHorizVerticalHorizPROJBased() = default; +} +NS_PROJ_END + +#if 0 +namespace dropbox{ namespace oxygen { +template<> nn<std::shared_ptr<NS_PROJ::operation::MyPROJStringExportableGeodToGeod>>::~nn() = default; +template<> nn<std::shared_ptr<NS_PROJ::operation::MyPROJStringExportableHorizVertical>>::~nn() = default; +template<> nn<std::shared_ptr<NS_PROJ::operation::MyPROJStringExportableHorizVerticalHorizPROJBased>>::~nn() = default; +}} +#endif + +NS_PROJ_START +namespace operation { + +// --------------------------------------------------------------------------- + +static std::string buildTransfName(const std::string &srcName, + const std::string &targetName) { + std::string name("Transformation from "); + name += srcName; + name += " to "; + name += targetName; + return name; +} + +// --------------------------------------------------------------------------- + +static CoordinateOperationNNPtr +createGeodToGeodPROJBased(const crs::CRSNNPtr &geodSrc, + const crs::CRSNNPtr &geodDst) { + + auto exportable = util::nn_make_shared<MyPROJStringExportableGeodToGeod>( + util::nn_dynamic_pointer_cast<crs::GeodeticCRS>(geodSrc), + util::nn_dynamic_pointer_cast<crs::GeodeticCRS>(geodDst)); + + auto properties = util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, + buildTransfName(geodSrc->nameStr(), geodDst->nameStr())); + return createPROJBased(properties, exportable, geodSrc, geodDst); +} + +// --------------------------------------------------------------------------- + +static CoordinateOperationNNPtr createHorizVerticalPROJBased( + const crs::CRSNNPtr &sourceCRS, const crs::CRSNNPtr &targetCRS, + const operation::CoordinateOperationNNPtr &horizTransform, + const operation::CoordinateOperationNNPtr &verticalTransform) { + + auto geogDst = util::nn_dynamic_pointer_cast<crs::GeographicCRS>(targetCRS); + assert(geogDst); + + auto exportable = util::nn_make_shared<MyPROJStringExportableHorizVertical>( + horizTransform, verticalTransform, geogDst); + + bool dummy = false; + auto ops = std::vector<CoordinateOperationNNPtr>{horizTransform, + verticalTransform}; + auto extent = getExtent(ops, true, dummy); + auto properties = util::PropertyMap(); + properties.set(common::IdentifiedObject::NAME_KEY, + computeConcatenatedName(ops)); + + if (extent) { + properties.set(common::ObjectUsage::DOMAIN_OF_VALIDITY_KEY, + NN_NO_CHECK(extent)); + } + + std::vector<metadata::PositionalAccuracyNNPtr> accuracies; + const double accuracy = getAccuracy(ops); + if (accuracy >= 0.0) { + accuracies.emplace_back( + metadata::PositionalAccuracy::create(toString(accuracy))); + } + + return createPROJBased(properties, exportable, sourceCRS, targetCRS, + accuracies); +} + +// --------------------------------------------------------------------------- + +static CoordinateOperationNNPtr createHorizVerticalHorizPROJBased( + const crs::CRSNNPtr &sourceCRS, const crs::CRSNNPtr &targetCRS, + const operation::CoordinateOperationNNPtr &opSrcCRSToGeogCRS, + const operation::CoordinateOperationNNPtr &verticalTransform, + const operation::CoordinateOperationNNPtr &opGeogCRStoDstCRS, + const crs::GeographicCRSPtr &interpolationGeogCRS) { + + auto exportable = + util::nn_make_shared<MyPROJStringExportableHorizVerticalHorizPROJBased>( + opSrcCRSToGeogCRS, verticalTransform, opGeogCRStoDstCRS, + interpolationGeogCRS); + + bool dummy = false; + auto ops = std::vector<CoordinateOperationNNPtr>{ + opSrcCRSToGeogCRS, verticalTransform, opGeogCRStoDstCRS}; + auto extent = getExtent(ops, true, dummy); + auto properties = util::PropertyMap(); + properties.set(common::IdentifiedObject::NAME_KEY, + computeConcatenatedName(ops)); + + if (extent) { + properties.set(common::ObjectUsage::DOMAIN_OF_VALIDITY_KEY, + NN_NO_CHECK(extent)); + } + + std::vector<metadata::PositionalAccuracyNNPtr> accuracies; + const double accuracy = getAccuracy(ops); + if (accuracy >= 0.0) { + accuracies.emplace_back( + metadata::PositionalAccuracy::create(toString(accuracy))); + } + + return createPROJBased(properties, exportable, sourceCRS, targetCRS, + accuracies); +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +ConversionNNPtr CoordinateOperationFactory::Private::createGeographicGeocentric( + const crs::CRSNNPtr &sourceCRS, const crs::CRSNNPtr &targetCRS) { + auto properties = util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, + buildOpName("Conversion", sourceCRS, targetCRS)); + auto conv = Conversion::createGeographicGeocentric(properties); + conv->setCRSs(sourceCRS, targetCRS, nullptr); + return conv; +} + +// --------------------------------------------------------------------------- + +std::vector<CoordinateOperationNNPtr> +CoordinateOperationFactory::Private::createOperationsGeogToGeog( + std::vector<CoordinateOperationNNPtr> &res, const crs::CRSNNPtr &sourceCRS, + const crs::CRSNNPtr &targetCRS, const crs::GeographicCRS *geogSrc, + const crs::GeographicCRS *geogDst) { + + assert(sourceCRS.get() == geogSrc); + assert(targetCRS.get() == geogDst); + const bool allowEmptyIntersection = true; + + const auto &src_pm = geogSrc->primeMeridian()->longitude(); + const auto &dst_pm = geogDst->primeMeridian()->longitude(); + auto offset_pm = + (src_pm.unit() == dst_pm.unit()) + ? common::Angle(src_pm.value() - dst_pm.value(), src_pm.unit()) + : common::Angle( + src_pm.convertToUnit(common::UnitOfMeasure::DEGREE) - + dst_pm.convertToUnit(common::UnitOfMeasure::DEGREE), + common::UnitOfMeasure::DEGREE); + + double vconvSrc = 1.0; + const auto &srcCS = geogSrc->coordinateSystem(); + const auto &srcAxisList = srcCS->axisList(); + if (srcAxisList.size() == 3) { + vconvSrc = srcAxisList[2]->unit().conversionToSI(); + } + double vconvDst = 1.0; + const auto &dstCS = geogDst->coordinateSystem(); + const auto &dstAxisList = dstCS->axisList(); + if (dstAxisList.size() == 3) { + vconvDst = dstAxisList[2]->unit().conversionToSI(); + } + + std::string name(buildTransfName(geogSrc->nameStr(), geogDst->nameStr())); + + // Do they differ by vertical units ? + if (vconvSrc != vconvDst && + geogSrc->ellipsoid()->_isEquivalentTo( + geogDst->ellipsoid().get(), + util::IComparable::Criterion::EQUIVALENT)) { + if (offset_pm.value() == 0) { + // If only by vertical units, use a Change of Vertical + // Unit + // transformation + const double factor = vconvSrc / vconvDst; + auto conv = Conversion::createChangeVerticalUnit( + util::PropertyMap().set(common::IdentifiedObject::NAME_KEY, + name), + common::Scale(factor)); + conv->setCRSs(sourceCRS, targetCRS, nullptr); + res.push_back(conv); + return res; + } else { + res.emplace_back(createGeodToGeodPROJBased(sourceCRS, targetCRS)); + return res; + } + } + + // Do the CRS differ only by their axis order ? + if (geogSrc->datum() != nullptr && geogDst->datum() != nullptr && + geogSrc->datum()->_isEquivalentTo( + geogDst->datum().get(), util::IComparable::Criterion::EQUIVALENT) && + !srcCS->_isEquivalentTo(dstCS.get(), + util::IComparable::Criterion::EQUIVALENT)) { + auto srcOrder = srcCS->axisOrder(); + auto dstOrder = dstCS->axisOrder(); + if ((srcOrder == cs::EllipsoidalCS::AxisOrder::LAT_NORTH_LONG_EAST && + dstOrder == cs::EllipsoidalCS::AxisOrder::LONG_EAST_LAT_NORTH) || + (srcOrder == cs::EllipsoidalCS::AxisOrder::LONG_EAST_LAT_NORTH && + dstOrder == cs::EllipsoidalCS::AxisOrder::LAT_NORTH_LONG_EAST)) { + auto conv = Conversion::createAxisOrderReversal(false); + conv->setCRSs(sourceCRS, targetCRS, nullptr); + res.emplace_back(conv); + return res; + } + if ((srcOrder == + cs::EllipsoidalCS::AxisOrder::LAT_NORTH_LONG_EAST_HEIGHT_UP && + dstOrder == + cs::EllipsoidalCS::AxisOrder::LONG_EAST_LAT_NORTH_HEIGHT_UP) || + (srcOrder == + cs::EllipsoidalCS::AxisOrder::LONG_EAST_LAT_NORTH_HEIGHT_UP && + dstOrder == + cs::EllipsoidalCS::AxisOrder::LAT_NORTH_LONG_EAST_HEIGHT_UP)) { + auto conv = Conversion::createAxisOrderReversal(true); + conv->setCRSs(sourceCRS, targetCRS, nullptr); + res.emplace_back(conv); + return res; + } + } + + std::vector<CoordinateOperationNNPtr> steps; + // If both are geographic and only differ by their prime + // meridian, + // apply a longitude rotation transformation. + if (geogSrc->ellipsoid()->_isEquivalentTo( + geogDst->ellipsoid().get(), + util::IComparable::Criterion::EQUIVALENT) && + src_pm.getSIValue() != dst_pm.getSIValue()) { + + steps.emplace_back(Transformation::createLongitudeRotation( + util::PropertyMap() + .set(common::IdentifiedObject::NAME_KEY, name) + .set(common::ObjectUsage::DOMAIN_OF_VALIDITY_KEY, + metadata::Extent::WORLD), + sourceCRS, targetCRS, offset_pm)); + // If only the target has a non-zero prime meridian, chain a + // null geographic offset and then the longitude rotation + } else if (src_pm.getSIValue() == 0 && dst_pm.getSIValue() != 0) { + auto datum = datum::GeodeticReferenceFrame::create( + util::PropertyMap(), geogDst->ellipsoid(), + util::optional<std::string>(), geogSrc->primeMeridian()); + std::string interm_crs_name(geogDst->nameStr()); + interm_crs_name += " altered to use prime meridian of "; + interm_crs_name += geogSrc->nameStr(); + auto interm_crs = + util::nn_static_pointer_cast<crs::CRS>(crs::GeographicCRS::create( + util::PropertyMap() + .set(common::IdentifiedObject::NAME_KEY, interm_crs_name) + .set(common::ObjectUsage::DOMAIN_OF_VALIDITY_KEY, + metadata::Extent::WORLD), + datum, dstCS)); + + steps.emplace_back(createNullGeographicOffset(sourceCRS, interm_crs)); + + steps.emplace_back(Transformation::createLongitudeRotation( + util::PropertyMap() + .set(common::IdentifiedObject::NAME_KEY, + buildTransfName(geogSrc->nameStr(), interm_crs->nameStr())) + .set(common::ObjectUsage::DOMAIN_OF_VALIDITY_KEY, + metadata::Extent::WORLD), + interm_crs, targetCRS, offset_pm)); + + } else { + // If the prime meridians are different, chain a longitude + // rotation and the null geographic offset. + if (src_pm.getSIValue() != dst_pm.getSIValue()) { + auto datum = datum::GeodeticReferenceFrame::create( + util::PropertyMap(), geogSrc->ellipsoid(), + util::optional<std::string>(), geogDst->primeMeridian()); + std::string interm_crs_name(geogSrc->nameStr()); + interm_crs_name += " altered to use prime meridian of "; + interm_crs_name += geogDst->nameStr(); + auto interm_crs = util::nn_static_pointer_cast<crs::CRS>( + crs::GeographicCRS::create( + util::PropertyMap().set(common::IdentifiedObject::NAME_KEY, + interm_crs_name), + datum, srcCS)); + + steps.emplace_back(Transformation::createLongitudeRotation( + util::PropertyMap() + .set(common::IdentifiedObject::NAME_KEY, + buildTransfName(geogSrc->nameStr(), + interm_crs->nameStr())) + .set(common::ObjectUsage::DOMAIN_OF_VALIDITY_KEY, + metadata::Extent::WORLD), + sourceCRS, interm_crs, offset_pm)); + steps.emplace_back( + createNullGeographicOffset(interm_crs, targetCRS)); + } else { + steps.emplace_back( + createNullGeographicOffset(sourceCRS, targetCRS)); + } + } + + res.emplace_back(ConcatenatedOperation::createComputeMetadata( + steps, !allowEmptyIntersection)); + return res; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +static bool hasIdentifiers(const CoordinateOperationNNPtr &op) { + if (!op->identifiers().empty()) { + return true; + } + auto concatenated = dynamic_cast<const ConcatenatedOperation *>(op.get()); + if (concatenated) { + for (const auto &subOp : concatenated->operations()) { + if (hasIdentifiers(subOp)) { + return true; + } + } + } + return false; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +static std::vector<crs::CRSNNPtr> +findCandidateGeodCRSForDatum(const io::AuthorityFactoryPtr &authFactory, + const datum::GeodeticReferenceFramePtr &datum) { + std::vector<crs::CRSNNPtr> candidates; + for (const auto &id : datum->identifiers()) { + const auto &authName = *(id->codeSpace()); + const auto &code = id->code(); + if (!authName.empty()) { + auto l_candidates = authFactory->createGeodeticCRSFromDatum( + authName, code, std::string()); + for (const auto &candidate : l_candidates) { + candidates.emplace_back(candidate); + } + } + } + return candidates; +} + +// --------------------------------------------------------------------------- + +static bool isNullTransformation(const std::string &name) { + + return starts_with(name, NULL_GEOCENTRIC_TRANSLATION) || + starts_with(name, NULL_GEOGRAPHIC_OFFSET); +} + +// --------------------------------------------------------------------------- + +void CoordinateOperationFactory::Private::createOperationsWithDatumPivot( + std::vector<CoordinateOperationNNPtr> &res, const crs::CRSNNPtr &sourceCRS, + const crs::CRSNNPtr &targetCRS, const crs::GeodeticCRS *geodSrc, + const crs::GeodeticCRS *geodDst, Private::Context &context) { + + const bool allowEmptyIntersection = true; + + struct CreateOperationsWithDatumPivotAntiRecursion { + Context &context; + + explicit CreateOperationsWithDatumPivotAntiRecursion(Context &contextIn) + : context(contextIn) { + assert(!context.inCreateOperationsWithDatumPivotAntiRecursion); + context.inCreateOperationsWithDatumPivotAntiRecursion = true; + } + + ~CreateOperationsWithDatumPivotAntiRecursion() { + context.inCreateOperationsWithDatumPivotAntiRecursion = false; + } + }; + CreateOperationsWithDatumPivotAntiRecursion guard(context); + + const auto &authFactory = context.context->getAuthorityFactory(); + const auto candidatesSrcGeod( + findCandidateGeodCRSForDatum(authFactory, geodSrc->datum())); + const auto candidatesDstGeod( + findCandidateGeodCRSForDatum(authFactory, geodDst->datum())); + + for (const auto &candidateSrcGeod : candidatesSrcGeod) { + const auto opsFirst = + createOperations(sourceCRS, candidateSrcGeod, context); + assert(!opsFirst.empty()); + const bool isNullFirst = isNullTransformation(opsFirst[0]->nameStr()); + + for (const auto &candidateDstGeod : candidatesDstGeod) { + const auto opsSecond = + createOperations(candidateSrcGeod, candidateDstGeod, context); + const auto opsThird = + createOperations(candidateDstGeod, targetCRS, context); + assert(!opsThird.empty()); + + for (auto &opSecond : opsSecond) { + // Check that it is not a transformation synthetized by + // ourselves + if (!hasIdentifiers(opSecond)) { + continue; + } + // And even if it is a referenced transformation, check that + // it is not a trivial one + auto so = dynamic_cast<const SingleOperation *>(opSecond.get()); + if (so && isAxisOrderReversal(so->method()->getEPSGCode())) { + continue; + } + + std::vector<CoordinateOperationNNPtr> subOps; + if (isNullFirst) { + opSecond->setCRSs(sourceCRS, + NN_CHECK_ASSERT(opSecond->targetCRS()), + nullptr); + } else { + subOps.emplace_back(opsFirst[0]); + } + if (isNullTransformation(opsThird[0]->nameStr())) { + opSecond->setCRSs(NN_CHECK_ASSERT(opSecond->sourceCRS()), + targetCRS, nullptr); + subOps.emplace_back(opSecond); + } else { + subOps.emplace_back(opSecond); + subOps.emplace_back(opsThird[0]); + } + res.emplace_back(ConcatenatedOperation::createComputeMetadata( + subOps, !allowEmptyIntersection)); + } + } + if (!res.empty()) { + return; + } + } +} + +// --------------------------------------------------------------------------- + +static CoordinateOperationNNPtr +createNullGeocentricTranslation(const crs::CRSNNPtr &sourceCRS, + const crs::CRSNNPtr &targetCRS) { + std::string name(NULL_GEOCENTRIC_TRANSLATION); + name += " from "; + name += sourceCRS->nameStr(); + name += " to "; + name += targetCRS->nameStr(); + + return util::nn_static_pointer_cast<CoordinateOperation>( + Transformation::createGeocentricTranslations( + util::PropertyMap() + .set(common::IdentifiedObject::NAME_KEY, name) + .set(common::ObjectUsage::DOMAIN_OF_VALIDITY_KEY, + metadata::Extent::WORLD), + sourceCRS, targetCRS, 0.0, 0.0, 0.0, {})); +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +bool CoordinateOperationFactory::Private::hasPerfectAccuracyResult( + const std::vector<CoordinateOperationNNPtr> &res, const Context &context) { + auto resTmp = FilterAndSort(res, context.context, context.sourceCRS, + context.targetCRS, true) + .getRes(); + for (const auto &op : resTmp) { + const double acc = getAccuracy(op); + if (acc == 0.0) { + return true; + } + } + return false; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +std::vector<CoordinateOperationNNPtr> +CoordinateOperationFactory::Private::createOperations( + const crs::CRSNNPtr &sourceCRS, const crs::CRSNNPtr &targetCRS, + Private::Context &context) { + + std::vector<CoordinateOperationNNPtr> res; + const bool allowEmptyIntersection = true; + + auto geodSrc = dynamic_cast<const crs::GeodeticCRS *>(sourceCRS.get()); + auto geodDst = dynamic_cast<const crs::GeodeticCRS *>(targetCRS.get()); + + // First look-up if the registry provide us with operations. + auto derivedSrc = dynamic_cast<const crs::DerivedCRS *>(sourceCRS.get()); + auto derivedDst = dynamic_cast<const crs::DerivedCRS *>(targetCRS.get()); + if (context.context->getAuthorityFactory() && + (derivedSrc == nullptr || + !derivedSrc->baseCRS()->_isEquivalentTo( + targetCRS.get(), util::IComparable::Criterion::EQUIVALENT)) && + (derivedDst == nullptr || + !derivedDst->baseCRS()->_isEquivalentTo( + sourceCRS.get(), util::IComparable::Criterion::EQUIVALENT))) { + + bool doFilterAndCheckPerfectOp = true; + res = findOpsInRegistryDirect(sourceCRS, targetCRS, context.context); + if (!sourceCRS->_isEquivalentTo(targetCRS.get())) { + auto resFromInverse = applyInverse( + findOpsInRegistryDirect(targetCRS, sourceCRS, context.context)); + res.insert(res.end(), resFromInverse.begin(), resFromInverse.end()); + + // If we get at least a result with perfect accuracy, do not + // bother generating synthetic transforms. + if (hasPerfectAccuracyResult(res, context)) { + return res; + } + + doFilterAndCheckPerfectOp = false; + + // NAD27 to NAD83 has tens of results already. No need to look + // for a pivot + if (res.size() < 5 || getenv("PROJ_FORCE_SEARCH_PIVOT")) { + auto resWithIntermediate = findsOpsInRegistryWithIntermediate( + sourceCRS, targetCRS, context.context); + res.insert(res.end(), resWithIntermediate.begin(), + resWithIntermediate.end()); + doFilterAndCheckPerfectOp = true; + } + } + + if (res.empty() && + !context.inCreateOperationsWithDatumPivotAntiRecursion && geodSrc && + geodDst) { + // If we still didn't find a transformation, and that the source + // and target are GeodeticCRS, then go through their underlying + // datum to find potential transformations between other GeodeticRSs + // that are made of those datum + // The typical example is if transforming between two GeographicCRS, + // but transformations are only available between their + // corresponding geocentric CRS. + const auto &srcDatum = geodSrc->datum(); + const bool srcHasDatumWithId = + srcDatum && !srcDatum->identifiers().empty(); + const auto &dstDatum = geodDst->datum(); + const bool dstHasDatumWithId = + dstDatum && !dstDatum->identifiers().empty(); + if (srcHasDatumWithId && dstHasDatumWithId) { + createOperationsWithDatumPivot(res, sourceCRS, targetCRS, + geodSrc, geodDst, context); + doFilterAndCheckPerfectOp = !res.empty(); + } + } + + if (doFilterAndCheckPerfectOp) { + // If we get at least a result with perfect accuracy, do not bother + // generating synthetic transforms. + if (hasPerfectAccuracyResult(res, context)) { + return res; + } + } + } + + // Special case if both CRS are geodetic + if (geodSrc && geodDst && !derivedSrc && !derivedDst) { + + if (geodSrc->ellipsoid()->celestialBody() != + geodDst->ellipsoid()->celestialBody()) { + throw util::UnsupportedOperationException( + "Source and target ellipsoid do not belong to the same " + "celestial body"); + } + + auto geogSrc = + dynamic_cast<const crs::GeographicCRS *>(sourceCRS.get()); + auto geogDst = + dynamic_cast<const crs::GeographicCRS *>(targetCRS.get()); + if (geogSrc && geogDst) { + return createOperationsGeogToGeog(res, sourceCRS, targetCRS, + geogSrc, geogDst); + } + + const bool isSrcGeocentric = geodSrc->isGeocentric(); + const bool isSrcGeographic = geogSrc != nullptr; + const bool isTargetGeocentric = geodDst->isGeocentric(); + const bool isTargetGeographic = geogDst != nullptr; + if (((isSrcGeocentric && isTargetGeographic) || + (isSrcGeographic && isTargetGeocentric)) && + geodSrc->datum() != nullptr && geodDst->datum() != nullptr) { + + // Same datum ? + if (geodSrc->datum()->_isEquivalentTo( + geodDst->datum().get(), + util::IComparable::Criterion::EQUIVALENT)) { + res.emplace_back( + createGeographicGeocentric(sourceCRS, targetCRS)); + } else if (isSrcGeocentric) { + std::string interm_crs_name(geogDst->nameStr()); + interm_crs_name += " (geocentric)"; + auto interm_crs = util::nn_static_pointer_cast<crs::CRS>( + crs::GeodeticCRS::create( + addDomains(util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, + interm_crs_name), + geogDst), + NN_NO_CHECK(geogDst->datum()), + NN_CHECK_ASSERT( + util::nn_dynamic_pointer_cast<cs::CartesianCS>( + geodSrc->coordinateSystem())))); + auto opFirst = + createNullGeocentricTranslation(sourceCRS, interm_crs); + auto opSecond = + createGeographicGeocentric(interm_crs, targetCRS); + res.emplace_back(ConcatenatedOperation::createComputeMetadata( + {opFirst, opSecond}, !allowEmptyIntersection)); + } else { + return applyInverse( + createOperations(targetCRS, sourceCRS, context)); + } + + return res; + } + + if (isSrcGeocentric && isTargetGeocentric) { + res.emplace_back( + createNullGeocentricTranslation(sourceCRS, targetCRS)); + return res; + } + + // Tranformation between two geodetic systems of unknown type + // This should normally not be triggered with "standard" CRS + res.emplace_back(createGeodToGeodPROJBased(sourceCRS, targetCRS)); + return res; + } + + // If the source is a derived CRS, then chain the inverse of its + // deriving conversion, with transforms from its baseCRS to the + // targetCRS + if (derivedSrc) { + auto opFirst = derivedSrc->derivingConversion()->inverse(); + // Small optimization if the targetCRS is the baseCRS of the source + // derivedCRS. + if (derivedSrc->baseCRS()->_isEquivalentTo( + targetCRS.get(), util::IComparable::Criterion::EQUIVALENT)) { + res.emplace_back(opFirst); + return res; + } + auto opsSecond = + createOperations(derivedSrc->baseCRS(), targetCRS, context); + for (const auto &opSecond : opsSecond) { + try { + res.emplace_back(ConcatenatedOperation::createComputeMetadata( + {opFirst, opSecond}, !allowEmptyIntersection)); + } catch (const InvalidOperationEmptyIntersection &) { + } + } + return res; + } + + // reverse of previous case + if (derivedDst) { + return applyInverse(createOperations(targetCRS, sourceCRS, context)); + } + + // boundCRS to a geogCRS that is the same as the hubCRS + auto boundSrc = dynamic_cast<const crs::BoundCRS *>(sourceCRS.get()); + auto geogDst = dynamic_cast<const crs::GeographicCRS *>(targetCRS.get()); + if (boundSrc && geogDst) { + const auto &hubSrc = boundSrc->hubCRS(); + auto hubSrcGeog = + dynamic_cast<const crs::GeographicCRS *>(hubSrc.get()); + auto geogCRSOfBaseOfBoundSrc = + boundSrc->baseCRS()->extractGeographicCRS(); + if (hubSrcGeog && + (hubSrcGeog->_isEquivalentTo( + geogDst, util::IComparable::Criterion::EQUIVALENT) || + hubSrcGeog->is2DPartOf3D(NN_NO_CHECK(geogDst))) && + geogCRSOfBaseOfBoundSrc) { + if (boundSrc->baseCRS() == geogCRSOfBaseOfBoundSrc) { + // Optimization to avoid creating a useless concatenated + // operation + res.emplace_back(boundSrc->transformation()); + return res; + } + auto opsFirst = + createOperations(boundSrc->baseCRS(), + NN_NO_CHECK(geogCRSOfBaseOfBoundSrc), context); + if (!opsFirst.empty()) { + for (const auto &opFirst : opsFirst) { + try { + res.emplace_back( + ConcatenatedOperation::createComputeMetadata( + {opFirst, boundSrc->transformation()}, + !allowEmptyIntersection)); + } catch (const InvalidOperationEmptyIntersection &) { + } + } + if (!res.empty()) { + return res; + } + } + } + + if (hubSrcGeog && + hubSrcGeog->_isEquivalentTo( + geogDst, util::IComparable::Criterion::EQUIVALENT) && + dynamic_cast<const crs::VerticalCRS *>(boundSrc->baseCRS().get())) { + res.emplace_back(boundSrc->transformation()); + return res; + } + + return createOperations(boundSrc->baseCRS(), targetCRS, context); + } + + // reverse of previous case + auto boundDst = dynamic_cast<const crs::BoundCRS *>(targetCRS.get()); + auto geogSrc = dynamic_cast<const crs::GeographicCRS *>(sourceCRS.get()); + if (geogSrc && boundDst) { + return applyInverse(createOperations(targetCRS, sourceCRS, context)); + } + + // vertCRS (as boundCRS with transformation to target vertCRS) to + // vertCRS + auto vertDst = dynamic_cast<const crs::VerticalCRS *>(targetCRS.get()); + if (boundSrc && vertDst) { + auto baseSrcVert = + dynamic_cast<const crs::VerticalCRS *>(boundSrc->baseCRS().get()); + const auto &hubSrc = boundSrc->hubCRS(); + auto hubSrcVert = dynamic_cast<const crs::VerticalCRS *>(hubSrc.get()); + if (baseSrcVert && hubSrcVert && + vertDst->_isEquivalentTo( + hubSrcVert, util::IComparable::Criterion::EQUIVALENT)) { + res.emplace_back(boundSrc->transformation()); + return res; + } + + return createOperations(boundSrc->baseCRS(), targetCRS, context); + } + + // reverse of previous case + auto vertSrc = dynamic_cast<const crs::VerticalCRS *>(sourceCRS.get()); + if (boundDst && vertSrc) { + return applyInverse(createOperations(targetCRS, sourceCRS, context)); + } + + if (vertSrc && vertDst) { + const auto &srcDatum = vertSrc->datum(); + const auto &dstDatum = vertDst->datum(); + if (srcDatum && dstDatum && + srcDatum->_isEquivalentTo( + dstDatum.get(), util::IComparable::Criterion::EQUIVALENT)) { + const double convSrc = vertSrc->coordinateSystem() + ->axisList()[0] + ->unit() + .conversionToSI(); + const double convDst = vertDst->coordinateSystem() + ->axisList()[0] + ->unit() + .conversionToSI(); + if (convSrc != convDst) { + const double factor = convSrc / convDst; + auto conv = Conversion::createChangeVerticalUnit( + util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, + buildTransfName(sourceCRS->nameStr(), + targetCRS->nameStr())), + common::Scale(factor)); + conv->setCRSs(sourceCRS, targetCRS, nullptr); + res.push_back(conv); + return res; + } + } + } + + // A bit odd case as we are comparing apples to oranges, but in case + // the vertical unit differ, do something useful. + if (vertSrc && geogDst) { + const double convSrc = + vertSrc->coordinateSystem()->axisList()[0]->unit().conversionToSI(); + double convDst = 1.0; + const auto &geogAxis = geogDst->coordinateSystem()->axisList(); + if (geogAxis.size() == 3) { + convDst = geogAxis[2]->unit().conversionToSI(); + } + if (convSrc != convDst) { + const double factor = convSrc / convDst; + auto conv = Conversion::createChangeVerticalUnit( + util::PropertyMap().set(common::IdentifiedObject::NAME_KEY, + buildTransfName(sourceCRS->nameStr(), + targetCRS->nameStr())), + common::Scale(factor)); + conv->setCRSs(sourceCRS, targetCRS, nullptr); + res.push_back(conv); + return res; + } + } + + // reverse of previous case + if (vertDst && geogSrc) { + return applyInverse(createOperations(targetCRS, sourceCRS, context)); + } + + // boundCRS to boundCRS using the same geographic hubCRS + if (boundSrc && boundDst) { + const auto &hubSrc = boundSrc->hubCRS(); + auto hubSrcGeog = + dynamic_cast<const crs::GeographicCRS *>(hubSrc.get()); + const auto &hubDst = boundDst->hubCRS(); + auto hubDstGeog = + dynamic_cast<const crs::GeographicCRS *>(hubDst.get()); + auto geogCRSOfBaseOfBoundSrc = + boundSrc->baseCRS()->extractGeographicCRS(); + auto geogCRSOfBaseOfBoundDst = + boundDst->baseCRS()->extractGeographicCRS(); + if (hubSrcGeog && hubDstGeog && + hubSrcGeog->_isEquivalentTo( + hubDstGeog, util::IComparable::Criterion::EQUIVALENT) && + geogCRSOfBaseOfBoundSrc && geogCRSOfBaseOfBoundDst) { + const bool firstIsNoOp = geogCRSOfBaseOfBoundSrc->_isEquivalentTo( + boundSrc->baseCRS().get(), + util::IComparable::Criterion::EQUIVALENT); + const bool lastIsNoOp = geogCRSOfBaseOfBoundDst->_isEquivalentTo( + boundDst->baseCRS().get(), + util::IComparable::Criterion::EQUIVALENT); + auto opsFirst = + createOperations(boundSrc->baseCRS(), + NN_NO_CHECK(geogCRSOfBaseOfBoundSrc), context); + auto opsLast = + createOperations(NN_NO_CHECK(geogCRSOfBaseOfBoundDst), + boundDst->baseCRS(), context); + if (!opsFirst.empty() && !opsLast.empty()) { + const auto &opSecond = boundSrc->transformation(); + auto opThird = boundDst->transformation()->inverse(); + for (const auto &opFirst : opsFirst) { + for (const auto &opLast : opsLast) { + try { + std::vector<CoordinateOperationNNPtr> ops; + if (!firstIsNoOp) { + ops.push_back(opFirst); + } + ops.push_back(opSecond); + ops.push_back(opThird); + if (!lastIsNoOp) { + ops.push_back(opLast); + } + res.emplace_back( + ConcatenatedOperation::createComputeMetadata( + ops, !allowEmptyIntersection)); + } catch (const InvalidOperationEmptyIntersection &) { + } + } + } + if (!res.empty()) { + return res; + } + } + } + + return createOperations(boundSrc->baseCRS(), boundDst->baseCRS(), + context); + } + + auto compoundSrc = dynamic_cast<crs::CompoundCRS *>(sourceCRS.get()); + if (compoundSrc && geogDst) { + const auto &componentsSrc = compoundSrc->componentReferenceSystems(); + if (!componentsSrc.empty()) { + std::vector<CoordinateOperationNNPtr> horizTransforms; + if (componentsSrc[0]->extractGeographicCRS()) { + horizTransforms = + createOperations(componentsSrc[0], targetCRS, context); + } + std::vector<CoordinateOperationNNPtr> verticalTransforms; + if (componentsSrc.size() >= 2 && + componentsSrc[1]->extractVerticalCRS()) { + verticalTransforms = + createOperations(componentsSrc[1], targetCRS, context); + } + if (!horizTransforms.empty() && !verticalTransforms.empty()) { + for (const auto &horizTransform : horizTransforms) { + for (const auto &verticalTransform : verticalTransforms) { + + auto op = createHorizVerticalPROJBased( + sourceCRS, targetCRS, horizTransform, + verticalTransform); + + res.emplace_back(op); + } + } + return res; + } else { + return horizTransforms; + } + } + } + + // reverse of previous case + auto compoundDst = dynamic_cast<const crs::CompoundCRS *>(targetCRS.get()); + if (geogSrc && compoundDst) { + return applyInverse(createOperations(targetCRS, sourceCRS, context)); + } + + if (compoundSrc && compoundDst) { + const auto &componentsSrc = compoundSrc->componentReferenceSystems(); + const auto &componentsDst = compoundDst->componentReferenceSystems(); + if (!componentsSrc.empty() && + componentsSrc.size() == componentsDst.size()) { + if (componentsSrc[0]->extractGeographicCRS() && + componentsDst[0]->extractGeographicCRS()) { + + std::vector<CoordinateOperationNNPtr> verticalTransforms; + if (componentsSrc.size() >= 2 && + componentsSrc[1]->extractVerticalCRS() && + componentsDst[1]->extractVerticalCRS()) { + verticalTransforms = createOperations( + componentsSrc[1], componentsDst[1], context); + } + + for (const auto &verticalTransform : verticalTransforms) { + auto interpolationGeogCRS = + NN_NO_CHECK(componentsSrc[0]->extractGeographicCRS()); + auto transformationVerticalTransform = + dynamic_cast<const Transformation *>( + verticalTransform.get()); + if (transformationVerticalTransform) { + auto interpTransformCRS = + transformationVerticalTransform->interpolationCRS(); + if (interpTransformCRS) { + auto nn_interpTransformCRS = + NN_NO_CHECK(interpTransformCRS); + if (dynamic_cast<const crs::GeographicCRS *>( + nn_interpTransformCRS.get())) { + interpolationGeogCRS = + NN_NO_CHECK(util::nn_dynamic_pointer_cast< + crs::GeographicCRS>( + nn_interpTransformCRS)); + } + } + } + auto opSrcCRSToGeogCRS = createOperations( + componentsSrc[0], interpolationGeogCRS, context); + auto opGeogCRStoDstCRS = createOperations( + interpolationGeogCRS, componentsDst[0], context); + for (const auto &opSrc : opSrcCRSToGeogCRS) { + for (const auto &opDst : opGeogCRStoDstCRS) { + + auto op = createHorizVerticalHorizPROJBased( + sourceCRS, targetCRS, opSrc, verticalTransform, + opDst, interpolationGeogCRS); + res.emplace_back(op); + } + } + } + + if (verticalTransforms.empty()) { + return createOperations(componentsSrc[0], componentsDst[0], + context); + } + } + } + } + + return res; +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Find a list of CoordinateOperation from sourceCRS to targetCRS. + * + * The operations are sorted with the most relevant ones first: by + * descending + * area (intersection of the transformation area with the area of interest, + * or intersection of the transformation with the area of use of the CRS), + * and + * by increasing accuracy. Operations with unknown accuracy are sorted last, + * whatever their area. + * + * @param sourceCRS source CRS. + * @param targetCRS source CRS. + * @param context Search context. + * @return a list + */ +std::vector<CoordinateOperationNNPtr> +CoordinateOperationFactory::createOperations( + const crs::CRSNNPtr &sourceCRS, const crs::CRSNNPtr &targetCRS, + const CoordinateOperationContextNNPtr &context) const { + + // Look if we are called on CRS that have a link to a 'canonical' + // BoundCRS + // If so, use that one as input + const auto &srcBoundCRS = sourceCRS->canonicalBoundCRS(); + const auto &targetBoundCRS = targetCRS->canonicalBoundCRS(); + auto l_sourceCRS = srcBoundCRS ? NN_NO_CHECK(srcBoundCRS) : sourceCRS; + auto l_targetCRS = targetBoundCRS ? NN_NO_CHECK(targetBoundCRS) : targetCRS; + + Private::Context contextPrivate(sourceCRS, targetCRS, context); + return filterAndSort( + Private::createOperations(l_sourceCRS, l_targetCRS, contextPrivate), + context, l_sourceCRS, l_targetCRS); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a CoordinateOperationFactory. + */ +CoordinateOperationFactoryNNPtr CoordinateOperationFactory::create() { + return NN_NO_CHECK( + CoordinateOperationFactory::make_unique<CoordinateOperationFactory>()); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +InverseCoordinateOperation::~InverseCoordinateOperation() = default; + +// --------------------------------------------------------------------------- + +InverseCoordinateOperation::InverseCoordinateOperation( + const CoordinateOperationNNPtr &forwardOperation, bool wktSupportsInversion) + : forwardOperation_(forwardOperation), + wktSupportsInversion_(wktSupportsInversion) {} + +// --------------------------------------------------------------------------- + +void InverseCoordinateOperation::setPropertiesFromForward() { + setProperties( + createPropertiesForInverse(forwardOperation_.get(), false, false)); + setAccuracies(forwardOperation_->coordinateOperationAccuracies()); + if (forwardOperation_->sourceCRS() && forwardOperation_->targetCRS()) { + setCRSs(forwardOperation_.get(), true); + } +} + +// --------------------------------------------------------------------------- + +CoordinateOperationNNPtr InverseCoordinateOperation::inverse() const { + return forwardOperation_; +} + +// --------------------------------------------------------------------------- + +void InverseCoordinateOperation::_exportToPROJString( + io::PROJStringFormatter *formatter) const { + formatter->startInversion(); + forwardOperation_->_exportToPROJString(formatter); + formatter->stopInversion(); +} + +// --------------------------------------------------------------------------- + +bool InverseCoordinateOperation::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherICO = dynamic_cast<const InverseCoordinateOperation *>(other); + if (otherICO == nullptr || + !ObjectUsage::_isEquivalentTo(other, criterion)) { + return false; + } + return inverse()->_isEquivalentTo(otherICO->inverse().get(), criterion); +} + +// --------------------------------------------------------------------------- + +PROJBasedOperation::~PROJBasedOperation() = default; + +// --------------------------------------------------------------------------- + +PROJBasedOperation::PROJBasedOperation( + const OperationMethodNNPtr &methodIn, + const std::vector<GeneralParameterValueNNPtr> &values) + : SingleOperation(methodIn) { + setParameterValues(values); +} + +// --------------------------------------------------------------------------- + +static const std::string PROJSTRING_PARAMETER_NAME("PROJ string"); + +PROJBasedOperationNNPtr PROJBasedOperation::create( + const util::PropertyMap &properties, const std::string &PROJString, + const crs::CRSPtr &sourceCRS, const crs::CRSPtr &targetCRS, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + auto parameter = OperationParameter::create(util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, PROJSTRING_PARAMETER_NAME)); + auto method = OperationMethod::create( + util::PropertyMap().set(common::IdentifiedObject::NAME_KEY, + "PROJ-based operation method"), + std::vector<OperationParameterNNPtr>{parameter}); + std::vector<GeneralParameterValueNNPtr> values; + values.push_back(OperationParameterValue::create( + parameter, ParameterValue::create(PROJString))); + auto op = + PROJBasedOperation::nn_make_shared<PROJBasedOperation>(method, values); + op->assignSelf(op); + if (sourceCRS && targetCRS) { + op->setCRSs(NN_NO_CHECK(sourceCRS), NN_NO_CHECK(targetCRS), nullptr); + } + op->setProperties( + addDefaultNameIfNeeded(properties, "PROJ-based coordinate operation")); + op->setAccuracies(accuracies); + return op; +} + +// --------------------------------------------------------------------------- + +static const std::string + APPROX_PROJSTRING_PARAMETER_NAME("(Approximte) PROJ string"); + +PROJBasedOperationNNPtr PROJBasedOperation::create( + const util::PropertyMap &properties, + const io::IPROJStringExportableNNPtr &projExportable, bool inverse, + const crs::CRSNNPtr &sourceCRS, const crs::CRSNNPtr &targetCRS, + const std::vector<metadata::PositionalAccuracyNNPtr> &accuracies) { + auto parameter = OperationParameter::create(util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, APPROX_PROJSTRING_PARAMETER_NAME)); + auto method = OperationMethod::create( + util::PropertyMap().set(common::IdentifiedObject::NAME_KEY, + "PROJ-based operation method"), + std::vector<OperationParameterNNPtr>{parameter}); + std::vector<GeneralParameterValueNNPtr> values; + + auto formatter = io::PROJStringFormatter::create(); + if (inverse) { + formatter->startInversion(); + } + projExportable->_exportToPROJString(formatter.get()); + if (inverse) { + formatter->stopInversion(); + } + auto projString = formatter->toString(); + + values.push_back(OperationParameterValue::create( + parameter, ParameterValue::create(projString))); + auto op = + PROJBasedOperation::nn_make_shared<PROJBasedOperation>(method, values); + op->assignSelf(op); + op->setCRSs(sourceCRS, targetCRS, nullptr); + op->setProperties( + addDefaultNameIfNeeded(properties, "PROJ-based coordinate operation")); + op->setAccuracies(accuracies); + op->projStringExportable_ = projExportable.as_nullable(); + op->inverse_ = inverse; + return op; +} + +// --------------------------------------------------------------------------- + +CoordinateOperationNNPtr PROJBasedOperation::inverse() const { + + if (projStringExportable_) { + return util::nn_static_pointer_cast<CoordinateOperation>( + PROJBasedOperation::create( + createPropertiesForInverse(this, false, false), + NN_NO_CHECK(projStringExportable_), !inverse_, + NN_NO_CHECK(targetCRS()), NN_NO_CHECK(sourceCRS()), + coordinateOperationAccuracies())); + } + + auto formatter = io::PROJStringFormatter::create(); + formatter->startInversion(); + try { + formatter->ingestPROJString( + parameterValue(PROJSTRING_PARAMETER_NAME)->stringValue()); + } catch (const io::ParsingException &e) { + throw util::UnsupportedOperationException( + std::string("PROJBasedOperation::inverse() failed: ") + e.what()); + } + formatter->stopInversion(); + + return util::nn_static_pointer_cast<CoordinateOperation>( + PROJBasedOperation::create( + createPropertiesForInverse(this, false, false), + formatter->toString(), targetCRS(), sourceCRS(), + coordinateOperationAccuracies())); +} + +// --------------------------------------------------------------------------- + +void PROJBasedOperation::_exportToWKT(io::WKTFormatter *formatter) const { + + if (sourceCRS() && targetCRS()) { + exportTransformationToWKT(formatter); + return; + } + + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + if (!isWKT2) { + throw io::FormattingException( + "PROJBasedOperation can only be exported to WKT2"); + } + + formatter->startNode(io::WKTConstants::CONVERSION, false); + formatter->addQuotedString(nameStr()); + method()->_exportToWKT(formatter); + + for (const auto ¶mValue : parameterValues()) { + paramValue->_exportToWKT(formatter); + } + formatter->endNode(); +} + +// --------------------------------------------------------------------------- + +void PROJBasedOperation::_exportToPROJString( + io::PROJStringFormatter *formatter) const { + if (projStringExportable_) { + if (inverse_) { + formatter->startInversion(); + } + projStringExportable_->_exportToPROJString(formatter); + if (inverse_) { + formatter->stopInversion(); + } + return; + } + + try { + formatter->ingestPROJString( + parameterValue(PROJSTRING_PARAMETER_NAME)->stringValue()); + } catch (const io::ParsingException &e) { + throw io::FormattingException( + std::string("PROJBasedOperation::exportToPROJString() failed: ") + + e.what()); + } +} + +// --------------------------------------------------------------------------- + +std::set<GridDescription> PROJBasedOperation::gridsNeeded( + const io::DatabaseContextPtr &databaseContext) const { + std::set<GridDescription> res; + + try { + auto formatterOut = io::PROJStringFormatter::create(); + auto formatter = io::PROJStringFormatter::create(); + formatter->ingestPROJString(exportToPROJString(formatterOut.get())); + const auto usedGridNames = formatter->getUsedGridNames(); + for (const auto &shortName : usedGridNames) { + GridDescription desc; + desc.shortName = shortName; + if (databaseContext) { + databaseContext->lookForGridInfo( + desc.shortName, desc.fullName, desc.packageName, desc.url, + desc.directDownload, desc.openLicense, desc.available); + } + res.insert(desc); + } + } catch (const io::ParsingException &) { + } + + return res; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +} // namespace operation +NS_PROJ_END diff --git a/src/coordinatesystem.cpp b/src/coordinatesystem.cpp new file mode 100644 index 00000000..1c84cf2c --- /dev/null +++ b/src/coordinatesystem.cpp @@ -0,0 +1,1107 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef FROM_PROJ_CPP +#define FROM_PROJ_CPP +#endif + +#include "proj/coordinatesystem.hpp" +#include "proj/common.hpp" +#include "proj/io.hpp" +#include "proj/metadata.hpp" +#include "proj/util.hpp" + +#include "proj/internal/coordinatesystem_internal.hpp" +#include "proj/internal/internal.hpp" +#include "proj/internal/io_internal.hpp" + +#include <map> +#include <memory> +#include <set> +#include <string> +#include <vector> + +using namespace NS_PROJ::internal; + +#if 0 +namespace dropbox{ namespace oxygen { +template<> nn<NS_PROJ::cs::MeridianPtr>::~nn() = default; +template<> nn<NS_PROJ::cs::CoordinateSystemAxisPtr>::~nn() = default; +template<> nn<NS_PROJ::cs::CoordinateSystemPtr>::~nn() = default; +template<> nn<NS_PROJ::cs::SphericalCSPtr>::~nn() = default; +template<> nn<NS_PROJ::cs::EllipsoidalCSPtr>::~nn() = default; +template<> nn<NS_PROJ::cs::CartesianCSPtr>::~nn() = default; +template<> nn<NS_PROJ::cs::TemporalCSPtr>::~nn() = default; +template<> nn<NS_PROJ::cs::TemporalCountCSPtr>::~nn() = default; +template<> nn<NS_PROJ::cs::TemporalMeasureCSPtr>::~nn() = default; +template<> nn<NS_PROJ::cs::DateTimeTemporalCSPtr>::~nn() = default; +template<> nn<NS_PROJ::cs::VerticalCSPtr>::~nn() = default; +template<> nn<NS_PROJ::cs::ParametricCSPtr>::~nn() = default; +template<> nn<NS_PROJ::cs::OrdinalCSPtr>::~nn() = default; +}} +#endif + +NS_PROJ_START +namespace cs { + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct Meridian::Private { + common::Angle longitude_{}; + + explicit Private(const common::Angle &longitude) : longitude_(longitude) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +Meridian::Meridian(const common::Angle &longitudeIn) + : d(internal::make_unique<Private>(longitudeIn)) {} + +// --------------------------------------------------------------------------- + +#ifdef notdef +Meridian::Meridian(const Meridian &other) + : IdentifiedObject(other), d(internal::make_unique<Private>(*other.d)) {} +#endif + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +Meridian::~Meridian() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the longitude of the meridian that the axis follows from the + * pole. + * + * @return the longitude. + */ +const common::Angle &Meridian::longitude() PROJ_CONST_DEFN { + return d->longitude_; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a Meridian. + * + * @param longitudeIn longitude of the meridian that the axis follows from the + * pole. + * @return new Meridian. + */ +MeridianNNPtr Meridian::create(const common::Angle &longitudeIn) { + return Meridian::nn_make_shared<Meridian>(longitudeIn); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void Meridian::_exportToWKT( + io::WKTFormatter *formatter) const // throw(FormattingException) +{ + formatter->startNode(io::WKTConstants::MERIDIAN, !identifiers().empty()); + formatter->add(longitude().value()); + longitude().unit()._exportToWKT(formatter, io::WKTConstants::ANGLEUNIT); + if (formatter->outputId()) { + formatID(formatter); + } + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct CoordinateSystemAxis::Private { + std::string abbreviation{}; + const AxisDirection *direction = &(AxisDirection::UNSPECIFIED); + common::UnitOfMeasure unit{}; + util::optional<double> minimumValue{}; + util::optional<double> maximumValue{}; + MeridianPtr meridian{}; + // TODO rangeMeaning +}; +//! @endcond + +// --------------------------------------------------------------------------- + +CoordinateSystemAxis::CoordinateSystemAxis() + : d(internal::make_unique<Private>()) {} + +// --------------------------------------------------------------------------- + +#ifdef notdef +CoordinateSystemAxis::CoordinateSystemAxis(const CoordinateSystemAxis &other) + : IdentifiedObject(other), d(internal::make_unique<Private>(*other.d)) {} +#endif + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +CoordinateSystemAxis::~CoordinateSystemAxis() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the axis abbreviation. + * + * The abbreviation used for this coordinate system axis; this abbreviation + * is also used to identify the coordinates in the coordinate tuple. + * Examples are X and Y. + * + * @return the abbreviation. + */ +const std::string &CoordinateSystemAxis::abbreviation() PROJ_CONST_DEFN { + return d->abbreviation; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the axis direction. + * + * The direction of this coordinate system axis (or in the case of Cartesian + * projected coordinates, the direction of this coordinate system axis locally) + * Examples: north or south, east or west, up or down. Within any set of + * coordinate system axes, only one of each pair of terms can be used. For + * Earth-fixed CRSs, this direction is often approximate and intended to + * provide a human interpretable meaning to the axis. When a geodetic reference + * frame is used, the precise directions of the axes may therefore vary + * slightly from this approximate direction. Note that an EngineeringCRS often + * requires specific descriptions of the directions of its coordinate system + * axes. + * + * @return the direction. + */ +const AxisDirection &CoordinateSystemAxis::direction() PROJ_CONST_DEFN { + return *(d->direction); +} + +// --------------------------------------------------------------------------- + +/** \brief Return the axis unit. + * + * This is the spatial unit or temporal quantity used for this coordinate + * system axis. The value of a coordinate in a coordinate tuple shall be + * recorded using this unit. + * + * @return the axis unit. + */ +const common::UnitOfMeasure &CoordinateSystemAxis::unit() PROJ_CONST_DEFN { + return d->unit; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the minimum value normally allowed for this axis, in the unit + * for the axis. + * + * @return the minimum value, or empty. + */ +const util::optional<double> & +CoordinateSystemAxis::minimumValue() PROJ_CONST_DEFN { + return d->minimumValue; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the maximum value normally allowed for this axis, in the unit + * for the axis. + * + * @return the maximum value, or empty. + */ +const util::optional<double> & +CoordinateSystemAxis::maximumValue() PROJ_CONST_DEFN { + return d->maximumValue; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the meridian that the axis follows from the pole, for a + * coordinate + * reference system centered on a pole. + * + * @return the meridian, or null. + */ +const MeridianPtr &CoordinateSystemAxis::meridian() PROJ_CONST_DEFN { + return d->meridian; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a CoordinateSystemAxis. + * + * @param properties See \ref general_properties. The name should generally be + * defined. + * @param abbreviationIn Axis abbreviation (might be empty) + * @param directionIn Axis direction + * @param unitIn Axis unit + * @param meridianIn The meridian that the axis follows from the pole, for a + * coordinate + * reference system centered on a pole, or nullptr + * @return a new CoordinateSystemAxis. + */ +CoordinateSystemAxisNNPtr CoordinateSystemAxis::create( + const util::PropertyMap &properties, const std::string &abbreviationIn, + const AxisDirection &directionIn, const common::UnitOfMeasure &unitIn, + const MeridianPtr &meridianIn) { + auto csa(CoordinateSystemAxis::nn_make_shared<CoordinateSystemAxis>()); + csa->setProperties(properties); + csa->d->abbreviation = abbreviationIn; + csa->d->direction = &directionIn; + csa->d->unit = unitIn; + csa->d->meridian = meridianIn; + return csa; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void CoordinateSystemAxis::_exportToWKT( + // cppcheck-suppress passedByValue + io::WKTFormatter *formatter) const // throw(FormattingException) +{ + _exportToWKT(formatter, 0, false); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +std::string CoordinateSystemAxis::normalizeAxisName(const std::string &str) { + if (str.empty()) { + return str; + } + // on import, transform from WKT2 "longitude" to "Longitude", as in the + // EPSG database. + return toupper(str.substr(0, 1)) + str.substr(1); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void CoordinateSystemAxis::_exportToWKT(io::WKTFormatter *formatter, int order, + bool disableAbbrev) const { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + formatter->startNode(io::WKTConstants::AXIS, !identifiers().empty()); + std::string axisName = *(name()->description()); + std::string abbrev = abbreviation(); + std::string parenthesedAbbrev = "(" + abbrev + ")"; + std::string dir = direction().toString(); + std::string axisDesignation; + + // It seems that the convention in WKT2 for axis name is first letter in + // lower case. Whereas in WKT1 GDAL, it is in upper case (as in the EPSG + // database) + if (!axisName.empty()) { + if (isWKT2) { + axisDesignation = + tolower(axisName.substr(0, 1)) + axisName.substr(1); + } else { + axisDesignation = axisName; + } + } + + if (!disableAbbrev && isWKT2 && + // For geodetic CS, export the axis name without abbreviation + !(axisName == AxisName::Latitude || axisName == AxisName::Longitude)) { + if (!axisDesignation.empty() && !abbrev.empty()) { + axisDesignation += " "; + } + if (!abbrev.empty()) { + axisDesignation += parenthesedAbbrev; + } + } + if (!isWKT2) { + dir = toupper(dir); + + if (direction() == AxisDirection::GEOCENTRIC_Z) { + dir = AxisDirectionWKT1::NORTH; + } else if (AxisDirectionWKT1::valueOf(dir) == nullptr) { + dir = AxisDirectionWKT1::OTHER; + } + } else if (!abbrev.empty()) { + // For geocentric CS, just put the abbreviation + if (direction() == AxisDirection::GEOCENTRIC_X || + direction() == AxisDirection::GEOCENTRIC_Y || + direction() == AxisDirection::GEOCENTRIC_Z) { + axisDesignation = parenthesedAbbrev; + } + // For cartesian CS with Easting/Northing, export only the abbreviation + else if ((order == 1 && axisName == AxisName::Easting && + abbrev == AxisAbbreviation::E) || + (order == 2 && axisName == AxisName::Northing && + abbrev == AxisAbbreviation::N)) { + axisDesignation = parenthesedAbbrev; + } + } + formatter->addQuotedString(axisDesignation); + formatter->add(dir); + const auto &l_meridian = meridian(); + if (isWKT2 && l_meridian) { + l_meridian->_exportToWKT(formatter); + } + if (formatter->outputAxisOrder() && order > 0) { + formatter->startNode(io::WKTConstants::ORDER, false); + formatter->add(order); + formatter->endNode(); + } + if (formatter->outputUnit() && + unit().type() != common::UnitOfMeasure::Type::NONE) { + unit()._exportToWKT(formatter); + } + if (formatter->outputId()) { + formatID(formatter); + } + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool CoordinateSystemAxis::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherCSA = dynamic_cast<const CoordinateSystemAxis *>(other); + if (otherCSA == nullptr) { + return false; + } + // For approximate comparison, only care about axis direction and unit. + if (!(*(d->direction) == *(otherCSA->d->direction) && + d->unit._isEquivalentTo(otherCSA->d->unit, criterion))) { + return false; + } + if (criterion == util::IComparable::Criterion::STRICT) { + if (!IdentifiedObject::_isEquivalentTo(other, criterion)) { + return false; + } + if (abbreviation() != otherCSA->abbreviation()) { + return false; + } + // TODO other metadata + } + + return true; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct CoordinateSystem::Private { + std::vector<CoordinateSystemAxisNNPtr> axisList{}; + + explicit Private(const std::vector<CoordinateSystemAxisNNPtr> &axisListIn) + : axisList(axisListIn) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +CoordinateSystem::CoordinateSystem( + const std::vector<CoordinateSystemAxisNNPtr> &axisIn) + : d(internal::make_unique<Private>(axisIn)) {} + +// --------------------------------------------------------------------------- + +#ifdef notdef +CoordinateSystem::CoordinateSystem(const CoordinateSystem &other) + : IdentifiedObject(other), d(internal::make_unique<Private>(*other.d)) {} +#endif + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +CoordinateSystem::~CoordinateSystem() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the list of axes of this coordinate system. + * + * @return the axes. + */ +const std::vector<CoordinateSystemAxisNNPtr> & +CoordinateSystem::axisList() PROJ_CONST_DEFN { + return d->axisList; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void CoordinateSystem::_exportToWKT( + io::WKTFormatter *formatter) const // throw(FormattingException) +{ + if (!formatter->outputAxis()) { + return; + } + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + + const auto &l_axisList = axisList(); + if (isWKT2) { + formatter->startNode(io::WKTConstants::CS, !identifiers().empty()); + formatter->add(getWKT2Type(formatter->use2018Keywords())); + formatter->add(static_cast<int>(l_axisList.size())); + formatter->endNode(); + formatter->startNode(std::string(), + false); // anonymous indentation level + } + + common::UnitOfMeasure unit = common::UnitOfMeasure::NONE; + bool bAllSameUnit = true; + bool bFirstUnit = true; + for (const auto &axis : l_axisList) { + const auto &l_unit = axis->unit(); + if (bFirstUnit) { + unit = l_unit; + bFirstUnit = false; + } else if (unit != l_unit) { + bAllSameUnit = false; + } + } + + formatter->pushOutputUnit( + isWKT2 && (!bAllSameUnit || !formatter->outputCSUnitOnlyOnceIfSame())); + + int order = 1; + const bool disableAbbrev = + (l_axisList.size() == 3 && + l_axisList[0]->nameStr() == AxisName::Latitude && + l_axisList[1]->nameStr() == AxisName::Longitude && + l_axisList[2]->nameStr() == AxisName::Ellipsoidal_height); + + for (auto &axis : l_axisList) { + int axisOrder = (isWKT2 && l_axisList.size() > 1) ? order : 0; + axis->_exportToWKT(formatter, axisOrder, disableAbbrev); + order++; + } + if (isWKT2 && !l_axisList.empty() && bAllSameUnit && + formatter->outputCSUnitOnlyOnceIfSame()) { + unit._exportToWKT(formatter); + } + + formatter->popOutputUnit(); + + if (isWKT2) { + formatter->endNode(); + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool CoordinateSystem::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherCS = dynamic_cast<const CoordinateSystem *>(other); + if (otherCS == nullptr || + !IdentifiedObject::_isEquivalentTo(other, criterion)) { + return false; + } + const auto &list = axisList(); + const auto &otherList = otherCS->axisList(); + if (list.size() != otherList.size()) { + return false; + } + if (getWKT2Type(true) != otherCS->getWKT2Type(true)) { + return false; + } + for (size_t i = 0; i < list.size(); i++) { + if (!list[i]->_isEquivalentTo(otherList[i].get(), criterion)) { + return false; + } + } + return true; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +SphericalCS::~SphericalCS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +SphericalCS::SphericalCS(const std::vector<CoordinateSystemAxisNNPtr> &axisIn) + : CoordinateSystem(axisIn) {} + +// --------------------------------------------------------------------------- + +#ifdef notdef +SphericalCS::SphericalCS(const SphericalCS &) = default; +#endif + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a SphericalCS. + * + * @param properties See \ref general_properties. + * @param axis1 The first axis. + * @param axis2 The second axis. + * @param axis3 The third axis. + * @return a new SphericalCS. + */ +SphericalCSNNPtr SphericalCS::create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axis1, + const CoordinateSystemAxisNNPtr &axis2, + const CoordinateSystemAxisNNPtr &axis3) { + std::vector<CoordinateSystemAxisNNPtr> axis{axis1, axis2, axis3}; + auto cs(SphericalCS::nn_make_shared<SphericalCS>(axis)); + cs->setProperties(properties); + return cs; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +EllipsoidalCS::~EllipsoidalCS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +EllipsoidalCS::EllipsoidalCS( + const std::vector<CoordinateSystemAxisNNPtr> &axisIn) + : CoordinateSystem(axisIn) {} + +// --------------------------------------------------------------------------- + +#ifdef notdef +EllipsoidalCS::EllipsoidalCS(const EllipsoidalCS &) = default; +#endif + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a EllipsoidalCS. + * + * @param properties See \ref general_properties. + * @param axis1 The first axis. + * @param axis2 The second axis. + * @return a new EllipsoidalCS. + */ +EllipsoidalCSNNPtr +EllipsoidalCS::create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axis1, + const CoordinateSystemAxisNNPtr &axis2) { + std::vector<CoordinateSystemAxisNNPtr> axis{axis1, axis2}; + auto cs(EllipsoidalCS::nn_make_shared<EllipsoidalCS>(axis)); + cs->setProperties(properties); + return cs; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a EllipsoidalCS. + * + * @param properties See \ref general_properties. + * @param axis1 The first axis. + * @param axis2 The second axis. + * @param axis3 The third axis. + * @return a new EllipsoidalCS. + */ +EllipsoidalCSNNPtr +EllipsoidalCS::create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axis1, + const CoordinateSystemAxisNNPtr &axis2, + const CoordinateSystemAxisNNPtr &axis3) { + std::vector<CoordinateSystemAxisNNPtr> axis{axis1, axis2, axis3}; + auto cs(EllipsoidalCS::nn_make_shared<EllipsoidalCS>(axis)); + cs->setProperties(properties); + return cs; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +CoordinateSystemAxisNNPtr +CoordinateSystemAxis::createLAT_NORTH(const common::UnitOfMeasure &unit) { + return create( + util::PropertyMap().set(IdentifiedObject::NAME_KEY, AxisName::Latitude), + AxisAbbreviation::lat, AxisDirection::NORTH, unit); +} + +CoordinateSystemAxisNNPtr +CoordinateSystemAxis::createLONG_EAST(const common::UnitOfMeasure &unit) { + return create(util::PropertyMap().set(IdentifiedObject::NAME_KEY, + AxisName::Longitude), + AxisAbbreviation::lon, AxisDirection::EAST, unit); +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a EllipsoidalCS with a Latitude (first) and Longitude + * (second) axis. + * + * @param unit Angular unit of the axes. + * @return a new EllipsoidalCS. + */ +EllipsoidalCSNNPtr +EllipsoidalCS::createLatitudeLongitude(const common::UnitOfMeasure &unit) { + return EllipsoidalCS::create(util::PropertyMap(), + CoordinateSystemAxis::createLAT_NORTH(unit), + CoordinateSystemAxis::createLONG_EAST(unit)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a EllipsoidalCS with a Latitude (first), Longitude + * (second) axis and ellipsoidal height (third) axis. + * + * @param angularUnit Angular unit of the latitude and longitude axes. + * @param linearUnit Linear unit of the ellipsoidal height axis. + * @return a new EllipsoidalCS. + */ +EllipsoidalCSNNPtr EllipsoidalCS::createLatitudeLongitudeEllipsoidalHeight( + const common::UnitOfMeasure &angularUnit, + const common::UnitOfMeasure &linearUnit) { + return EllipsoidalCS::create( + util::PropertyMap(), CoordinateSystemAxis::createLAT_NORTH(angularUnit), + CoordinateSystemAxis::createLONG_EAST(angularUnit), + CoordinateSystemAxis::create( + util::PropertyMap().set(IdentifiedObject::NAME_KEY, + AxisName::Ellipsoidal_height), + AxisAbbreviation::h, AxisDirection::UP, linearUnit)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a EllipsoidalCS with a Longitude (first) and Latitude + * (second) axis. + * + * @param unit Angular unit of the axes. + * @return a new EllipsoidalCS. + */ +EllipsoidalCSNNPtr +EllipsoidalCS::createLongitudeLatitude(const common::UnitOfMeasure &unit) { + return EllipsoidalCS::create(util::PropertyMap(), + CoordinateSystemAxis::createLONG_EAST(unit), + CoordinateSystemAxis::createLAT_NORTH(unit)); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +/** \brief Return the axis order in an enumerated way. */ +EllipsoidalCS::AxisOrder EllipsoidalCS::axisOrder() const { + const auto &l_axisList = CoordinateSystem::getPrivate()->axisList; + const auto &dir0 = l_axisList[0]->direction(); + const auto &dir1 = l_axisList[1]->direction(); + if (&dir0 == &AxisDirection::NORTH && &dir1 == &AxisDirection::EAST) { + if (l_axisList.size() == 2) { + return AxisOrder::LAT_NORTH_LONG_EAST; + } else if (&l_axisList[2]->direction() == &AxisDirection::UP) { + return AxisOrder::LAT_NORTH_LONG_EAST_HEIGHT_UP; + } + } else if (&dir0 == &AxisDirection::EAST && + &dir1 == &AxisDirection::NORTH) { + if (l_axisList.size() == 2) { + return AxisOrder::LONG_EAST_LAT_NORTH; + } else if (&l_axisList[2]->direction() == &AxisDirection::UP) { + return AxisOrder::LONG_EAST_LAT_NORTH_HEIGHT_UP; + } + } + + return AxisOrder::OTHER; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +VerticalCS::~VerticalCS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +VerticalCS::VerticalCS(const CoordinateSystemAxisNNPtr &axisIn) + : CoordinateSystem(std::vector<CoordinateSystemAxisNNPtr>{axisIn}) {} +//! @endcond + +// --------------------------------------------------------------------------- + +#ifdef notdef +VerticalCS::VerticalCS(const VerticalCS &) = default; +#endif + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a VerticalCS. + * + * @param properties See \ref general_properties. + * @param axis The axis. + * @return a new VerticalCS. + */ +VerticalCSNNPtr VerticalCS::create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axis) { + auto cs(VerticalCS::nn_make_shared<VerticalCS>(axis)); + cs->setProperties(properties); + return cs; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a VerticalCS with a Gravity-related height axis + * + * @param unit linear unit. + * @return a new VerticalCS. + */ +VerticalCSNNPtr +VerticalCS::createGravityRelatedHeight(const common::UnitOfMeasure &unit) { + auto cs(VerticalCS::nn_make_shared<VerticalCS>(CoordinateSystemAxis::create( + util::PropertyMap().set(IdentifiedObject::NAME_KEY, + "Gravity-related height"), + "H", AxisDirection::UP, unit))); + return cs; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +CartesianCS::~CartesianCS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +CartesianCS::CartesianCS(const std::vector<CoordinateSystemAxisNNPtr> &axisIn) + : CoordinateSystem(axisIn) {} + +// --------------------------------------------------------------------------- + +#ifdef notdef +CartesianCS::CartesianCS(const CartesianCS &) = default; +#endif + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a CartesianCS. + * + * @param properties See \ref general_properties. + * @param axis1 The first axis. + * @param axis2 The second axis. + * @return a new CartesianCS. + */ +CartesianCSNNPtr CartesianCS::create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axis1, + const CoordinateSystemAxisNNPtr &axis2) { + std::vector<CoordinateSystemAxisNNPtr> axis{axis1, axis2}; + auto cs(CartesianCS::nn_make_shared<CartesianCS>(axis)); + cs->setProperties(properties); + return cs; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a CartesianCS. + * + * @param properties See \ref general_properties. + * @param axis1 The first axis. + * @param axis2 The second axis. + * @param axis3 The third axis. + * @return a new CartesianCS. + */ +CartesianCSNNPtr CartesianCS::create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axis1, + const CoordinateSystemAxisNNPtr &axis2, + const CoordinateSystemAxisNNPtr &axis3) { + std::vector<CoordinateSystemAxisNNPtr> axis{axis1, axis2, axis3}; + auto cs(CartesianCS::nn_make_shared<CartesianCS>(axis)); + cs->setProperties(properties); + return cs; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a CartesianCS with a Easting (first) and Northing + * (second) axis. + * + * @param unit Linear unit of the axes. + * @return a new CartesianCS. + */ +CartesianCSNNPtr +CartesianCS::createEastingNorthing(const common::UnitOfMeasure &unit) { + return create(util::PropertyMap(), + CoordinateSystemAxis::create( + util::PropertyMap().set(IdentifiedObject::NAME_KEY, + AxisName::Easting), + AxisAbbreviation::E, AxisDirection::EAST, unit), + CoordinateSystemAxis::create( + util::PropertyMap().set(IdentifiedObject::NAME_KEY, + AxisName::Northing), + AxisAbbreviation::N, AxisDirection::NORTH, unit)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a CartesianCS with the three geocentric axes. + * + * @param unit Liinear unit of the axes. + * @return a new CartesianCS. + */ +CartesianCSNNPtr +CartesianCS::createGeocentric(const common::UnitOfMeasure &unit) { + return create(util::PropertyMap(), + CoordinateSystemAxis::create( + util::PropertyMap().set(IdentifiedObject::NAME_KEY, + AxisName::Geocentric_X), + AxisAbbreviation::X, AxisDirection::GEOCENTRIC_X, unit), + CoordinateSystemAxis::create( + util::PropertyMap().set(IdentifiedObject::NAME_KEY, + AxisName::Geocentric_Y), + AxisAbbreviation::Y, AxisDirection::GEOCENTRIC_Y, unit), + CoordinateSystemAxis::create( + util::PropertyMap().set(IdentifiedObject::NAME_KEY, + AxisName::Geocentric_Z), + AxisAbbreviation::Z, AxisDirection::GEOCENTRIC_Z, unit)); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +OrdinalCS::~OrdinalCS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +OrdinalCS::OrdinalCS(const std::vector<CoordinateSystemAxisNNPtr> &axisIn) + : CoordinateSystem(axisIn) {} + +// --------------------------------------------------------------------------- + +#ifdef notdef +OrdinalCS::OrdinalCS(const OrdinalCS &) = default; +#endif + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a OrdinalCS. + * + * @param properties See \ref general_properties. + * @param axisIn List of axis. + * @return a new OrdinalCS. + */ +OrdinalCSNNPtr +OrdinalCS::create(const util::PropertyMap &properties, + const std::vector<CoordinateSystemAxisNNPtr> &axisIn) { + auto cs(OrdinalCS::nn_make_shared<OrdinalCS>(axisIn)); + cs->setProperties(properties); + return cs; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +ParametricCS::~ParametricCS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +ParametricCS::ParametricCS(const std::vector<CoordinateSystemAxisNNPtr> &axisIn) + : CoordinateSystem(axisIn) {} + +// --------------------------------------------------------------------------- + +#ifdef notdef +ParametricCS::ParametricCS(const ParametricCS &) = default; +#endif + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ParametricCS. + * + * @param properties See \ref general_properties. + * @param axisIn Axis. + * @return a new ParametricCS. + */ +ParametricCSNNPtr +ParametricCS::create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axisIn) { + auto cs(ParametricCS::nn_make_shared<ParametricCS>( + std::vector<CoordinateSystemAxisNNPtr>{axisIn})); + cs->setProperties(properties); + return cs; +} + +// --------------------------------------------------------------------------- + +AxisDirection::AxisDirection(const std::string &nameIn) : CodeList(nameIn) { + assert(registry.find(nameIn) == registry.end()); + registry[nameIn] = this; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +const AxisDirection * +AxisDirection::valueOf(const std::string &nameIn) noexcept { + auto iter = registry.find(nameIn); + if (iter == registry.end()) + return nullptr; + return iter->second; +} +//! @endcond + +//! @cond Doxygen_Suppress +// --------------------------------------------------------------------------- + +AxisDirectionWKT1::AxisDirectionWKT1(const std::string &nameIn) + : CodeList(nameIn) { + assert(registry.find(nameIn) == registry.end()); + registry[nameIn] = this; +} + +// --------------------------------------------------------------------------- + +const AxisDirectionWKT1 *AxisDirectionWKT1::valueOf(const std::string &nameIn) { + auto iter = registry.find(nameIn); + if (iter == registry.end()) + return nullptr; + return iter->second; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +TemporalCS::~TemporalCS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +TemporalCS::TemporalCS(const CoordinateSystemAxisNNPtr &axisIn) + : CoordinateSystem(std::vector<CoordinateSystemAxisNNPtr>{axisIn}) {} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +DateTimeTemporalCS::~DateTimeTemporalCS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +DateTimeTemporalCS::DateTimeTemporalCS(const CoordinateSystemAxisNNPtr &axisIn) + : TemporalCS(axisIn) {} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a DateTimeTemporalCS. + * + * @param properties See \ref general_properties. + * @param axisIn The axis. + * @return a new DateTimeTemporalCS. + */ +DateTimeTemporalCSNNPtr +DateTimeTemporalCS::create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axisIn) { + auto cs(DateTimeTemporalCS::nn_make_shared<DateTimeTemporalCS>(axisIn)); + cs->setProperties(properties); + return cs; +} + +// --------------------------------------------------------------------------- + +std::string DateTimeTemporalCS::getWKT2Type(bool use2018Keywords) const { + return use2018Keywords ? "TemporalDateTime" : "temporal"; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +TemporalCountCS::~TemporalCountCS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +TemporalCountCS::TemporalCountCS(const CoordinateSystemAxisNNPtr &axisIn) + : TemporalCS(axisIn) {} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a TemporalCountCS. + * + * @param properties See \ref general_properties. + * @param axisIn The axis. + * @return a new TemporalCountCS. + */ +TemporalCountCSNNPtr +TemporalCountCS::create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axisIn) { + auto cs(TemporalCountCS::nn_make_shared<TemporalCountCS>(axisIn)); + cs->setProperties(properties); + return cs; +} + +// --------------------------------------------------------------------------- + +std::string TemporalCountCS::getWKT2Type(bool use2018Keywords) const { + return use2018Keywords ? "TemporalCount" : "temporal"; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +TemporalMeasureCS::~TemporalMeasureCS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +TemporalMeasureCS::TemporalMeasureCS(const CoordinateSystemAxisNNPtr &axisIn) + : TemporalCS(axisIn) {} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a TemporalMeasureCS. + * + * @param properties See \ref general_properties. + * @param axisIn The axis. + * @return a new TemporalMeasureCS. + */ +TemporalMeasureCSNNPtr +TemporalMeasureCS::create(const util::PropertyMap &properties, + const CoordinateSystemAxisNNPtr &axisIn) { + auto cs(TemporalMeasureCS::nn_make_shared<TemporalMeasureCS>(axisIn)); + cs->setProperties(properties); + return cs; +} + +// --------------------------------------------------------------------------- + +std::string TemporalMeasureCS::getWKT2Type(bool use2018Keywords) const { + return use2018Keywords ? "TemporalMeasure" : "temporal"; +} + +} // namespace cs +NS_PROJ_END diff --git a/src/crs.cpp b/src/crs.cpp new file mode 100644 index 00000000..dab704b4 --- /dev/null +++ b/src/crs.cpp @@ -0,0 +1,4490 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef FROM_PROJ_CPP +#define FROM_PROJ_CPP +#endif + +//! @cond Doxygen_Suppress +#define DO_NOT_DEFINE_EXTERN_DERIVED_CRS_TEMPLATE +//! @endcond + +#include "proj/crs.hpp" +#include "proj/common.hpp" +#include "proj/coordinateoperation.hpp" +#include "proj/coordinatesystem.hpp" +#include "proj/io.hpp" +#include "proj/util.hpp" + +#include "proj/internal/coordinatesystem_internal.hpp" +#include "proj/internal/internal.hpp" +#include "proj/internal/io_internal.hpp" + +#include <cassert> +#include <cstring> +#include <iostream> +#include <memory> +#include <string> +#include <vector> + +using namespace NS_PROJ::internal; + +#if 0 +namespace dropbox{ namespace oxygen { +template<> nn<NS_PROJ::crs::CRSPtr>::~nn() = default; +template<> nn<NS_PROJ::crs::SingleCRSPtr>::~nn() = default; +template<> nn<NS_PROJ::crs::GeodeticCRSPtr>::~nn() = default; +template<> nn<NS_PROJ::crs::GeographicCRSPtr>::~nn() = default; +template<> nn<NS_PROJ::crs::DerivedCRSPtr>::~nn() = default; +template<> nn<NS_PROJ::crs::ProjectedCRSPtr>::~nn() = default; +template<> nn<NS_PROJ::crs::VerticalCRSPtr>::~nn() = default; +template<> nn<NS_PROJ::crs::CompoundCRSPtr>::~nn() = default; +template<> nn<NS_PROJ::crs::TemporalCRSPtr>::~nn() = default; +template<> nn<NS_PROJ::crs::EngineeringCRSPtr>::~nn() = default; +template<> nn<NS_PROJ::crs::ParametricCRSPtr>::~nn() = default; +template<> nn<NS_PROJ::crs::BoundCRSPtr>::~nn() = default; +template<> nn<NS_PROJ::crs::DerivedGeodeticCRSPtr>::~nn() = default; +template<> nn<NS_PROJ::crs::DerivedGeographicCRSPtr>::~nn() = default; +template<> nn<NS_PROJ::crs::DerivedProjectedCRSPtr>::~nn() = default; +template<> nn<NS_PROJ::crs::DerivedVerticalCRSPtr>::~nn() = default; +template<> nn<NS_PROJ::crs::DerivedTemporalCRSPtr>::~nn() = default; +template<> nn<NS_PROJ::crs::DerivedEngineeringCRSPtr>::~nn() = default; +template<> nn<NS_PROJ::crs::DerivedParametricCRSPtr>::~nn() = default; +}} +#endif + +NS_PROJ_START + +namespace crs { + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct CRS::Private { + BoundCRSPtr canonicalBoundCRS_{}; +}; +//! @endcond + +// --------------------------------------------------------------------------- + +CRS::CRS() : d(internal::make_unique<Private>()) {} + +// --------------------------------------------------------------------------- + +CRS::CRS(const CRS &other) + : ObjectUsage(other), d(internal::make_unique<Private>(*(other.d))) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +CRS::~CRS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the BoundCRS potentially attached to this CRS. + * + * In the case this method is called on a object returned by + * BoundCRS::baseCRSWithCanonicalBoundCRS(), this method will return this + * BoundCRS + * + * @return a BoundCRSPtr, that might be null. + */ +const BoundCRSPtr &CRS::canonicalBoundCRS() PROJ_CONST_DEFN { + return d->canonicalBoundCRS_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the GeodeticCRS of the CRS. + * + * Returns the GeodeticCRS contained in a CRS. This works currently with + * input parameters of type GeodeticCRS or derived, ProjectedCRS, + * CompoundCRS or BoundCRS. + * + * @return a GeodeticCRSPtr, that might be null. + */ +GeodeticCRSPtr CRS::extractGeodeticCRS() const { + auto raw = extractGeodeticCRSRaw(); + if (raw) { + return std::dynamic_pointer_cast<GeodeticCRS>( + raw->shared_from_this().as_nullable()); + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +const GeodeticCRS *CRS::extractGeodeticCRSRaw() const { + auto geodCRS = dynamic_cast<const GeodeticCRS *>(this); + if (geodCRS) { + return geodCRS; + } + auto projCRS = dynamic_cast<const ProjectedCRS *>(this); + if (projCRS) { + return projCRS->baseCRS()->extractGeodeticCRSRaw(); + } + auto compoundCRS = dynamic_cast<const CompoundCRS *>(this); + if (compoundCRS) { + for (const auto &subCrs : compoundCRS->componentReferenceSystems()) { + auto retGeogCRS = subCrs->extractGeodeticCRSRaw(); + if (retGeogCRS) { + return retGeogCRS; + } + } + } + auto boundCRS = dynamic_cast<const BoundCRS *>(this); + if (boundCRS) { + return boundCRS->baseCRS()->extractGeodeticCRSRaw(); + } + return nullptr; +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the GeographicCRS of the CRS. + * + * Returns the GeographicCRS contained in a CRS. This works currently with + * input parameters of type GeographicCRS or derived, ProjectedCRS, + * CompoundCRS or BoundCRS. + * + * @return a GeographicCRSPtr, that might be null. + */ +GeographicCRSPtr CRS::extractGeographicCRS() const { + auto raw = extractGeodeticCRSRaw(); + if (raw) { + return std::dynamic_pointer_cast<GeographicCRS>( + raw->shared_from_this().as_nullable()); + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the VerticalCRS of the CRS. + * + * Returns the VerticalCRS contained in a CRS. This works currently with + * input parameters of type VerticalCRS or derived, CompoundCRS or BoundCRS. + * + * @return a VerticalCRSPtr, that might be null. + */ +VerticalCRSPtr CRS::extractVerticalCRS() const { + auto vertCRS = dynamic_cast<const VerticalCRS *>(this); + if (vertCRS) { + return std::dynamic_pointer_cast<VerticalCRS>( + shared_from_this().as_nullable()); + } + auto compoundCRS = dynamic_cast<const CompoundCRS *>(this); + if (compoundCRS) { + for (const auto &subCrs : compoundCRS->componentReferenceSystems()) { + auto retVertCRS = subCrs->extractVerticalCRS(); + if (retVertCRS) { + return retVertCRS; + } + } + } + auto boundCRS = dynamic_cast<const BoundCRS *>(this); + if (boundCRS) { + return boundCRS->baseCRS()->extractVerticalCRS(); + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns potentially + * a BoundCRS, with a transformation to EPSG:4326, wrapping this CRS + * + * If no such BoundCRS is possible, the object will be returned. + * + * The purpose of this method is to be able to format a PROJ.4 string with + * a +towgs84 parameter or a WKT1:GDAL string with a TOWGS node. + * + * This method will fetch the GeographicCRS of this CRS and find a + * transformation to EPSG:4326 using the domain of the validity of the main CRS. + * + * @return a CRS. + */ +CRSNNPtr CRS::createBoundCRSToWGS84IfPossible( + const io::DatabaseContextPtr &dbContext) const { + auto thisAsCRS = NN_NO_CHECK( + std::static_pointer_cast<CRS>(shared_from_this().as_nullable())); + auto boundCRS = util::nn_dynamic_pointer_cast<BoundCRS>(thisAsCRS); + if (!boundCRS) { + boundCRS = canonicalBoundCRS(); + } + if (boundCRS) { + if (boundCRS->hubCRS()->_isEquivalentTo( + GeographicCRS::EPSG_4326.get(), + util::IComparable::Criterion::EQUIVALENT)) { + return NN_NO_CHECK(boundCRS); + } + } + + auto geodCRS = util::nn_dynamic_pointer_cast<GeodeticCRS>(thisAsCRS); + auto geogCRS = extractGeographicCRS(); + auto hubCRS = util::nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4326); + if (geodCRS && !geogCRS) { + hubCRS = util::nn_static_pointer_cast<CRS>(GeodeticCRS::EPSG_4978); + } else if (!geogCRS || + geogCRS->_isEquivalentTo( + GeographicCRS::EPSG_4326.get(), + util::IComparable::Criterion::EQUIVALENT)) { + return thisAsCRS; + } else { + geodCRS = geogCRS; + } + auto l_domains = domains(); + metadata::ExtentPtr extent; + if (!l_domains.empty()) { + extent = l_domains[0]->domainOfValidity(); + } + + try { + auto authFactory = dbContext + ? io::AuthorityFactory::create( + NN_NO_CHECK(dbContext), std::string()) + .as_nullable() + : nullptr; + auto ctxt = operation::CoordinateOperationContext::create(authFactory, + extent, 0.0); + // ctxt->setSpatialCriterion( + // operation::CoordinateOperationContext::SpatialCriterion::PARTIAL_INTERSECTION); + auto list = + operation::CoordinateOperationFactory::create()->createOperations( + NN_NO_CHECK(geodCRS), hubCRS, ctxt); + for (const auto &op : list) { + auto transf = + util::nn_dynamic_pointer_cast<operation::Transformation>(op); + if (transf) { + try { + transf->getTOWGS84Parameters(); + } catch (const std::exception &) { + continue; + } + return util::nn_static_pointer_cast<CRS>( + BoundCRS::create(thisAsCRS, hubCRS, NN_NO_CHECK(transf))); + } else { + auto concatenated = + dynamic_cast<const operation::ConcatenatedOperation *>( + op.get()); + if (concatenated) { + // Case for EPSG:4807 / "NTF (Paris)" that is made of a + // longitude rotation followed by a Helmert + // The prime meridian shift will be accounted elsewhere + const auto &subops = concatenated->operations(); + if (subops.size() == 2) { + auto firstOpIsTransformation = + dynamic_cast<const operation::Transformation *>( + subops[0].get()); + auto firstOpIsConversion = + dynamic_cast<const operation::Conversion *>( + subops[0].get()); + if ((firstOpIsTransformation && + firstOpIsTransformation->isLongitudeRotation()) || + (dynamic_cast<DerivedCRS *>(thisAsCRS.get()) && + firstOpIsConversion)) { + transf = util::nn_dynamic_pointer_cast< + operation::Transformation>(subops[1]); + if (transf) { + try { + transf->getTOWGS84Parameters(); + } catch (const std::exception &) { + continue; + } + return util::nn_static_pointer_cast<CRS>( + BoundCRS::create(thisAsCRS, hubCRS, + NN_NO_CHECK(transf))); + } + } + } + } + } + } + } catch (const std::exception &) { + } + return thisAsCRS; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns a CRS whose coordinate system does not contain a vertical + * component + * + * @return a CRS. + */ +CRSNNPtr CRS::stripVerticalComponent() const { + auto self = NN_NO_CHECK( + std::dynamic_pointer_cast<CRS>(shared_from_this().as_nullable())); + + auto geogCRS = dynamic_cast<const GeographicCRS *>(this); + if (geogCRS) { + const auto &axisList = geogCRS->coordinateSystem()->axisList(); + if (axisList.size() == 3) { + auto cs = cs::EllipsoidalCS::create(util::PropertyMap(), + axisList[0], axisList[1]); + return util::nn_static_pointer_cast<CRS>(GeographicCRS::create( + util::PropertyMap().set(common::IdentifiedObject::NAME_KEY, + nameStr()), + geogCRS->datum(), geogCRS->datumEnsemble(), cs)); + } + } + auto projCRS = dynamic_cast<const ProjectedCRS *>(this); + if (projCRS) { + const auto &axisList = projCRS->coordinateSystem()->axisList(); + if (axisList.size() == 3) { + auto cs = cs::CartesianCS::create(util::PropertyMap(), axisList[0], + axisList[1]); + return util::nn_static_pointer_cast<CRS>(ProjectedCRS::create( + util::PropertyMap().set(common::IdentifiedObject::NAME_KEY, + nameStr()), + projCRS->baseCRS(), projCRS->derivingConversion(), cs)); + } + } + return self; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +/** \brief Return a shallow clone of this object. */ +CRSNNPtr CRS::shallowClone() const { return _shallowClone(); } + +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Identify the CRS with reference CRSs. + * + * The candidate CRSs are either hard-coded, or looked in the database when + * authorityFactory is not null. + * + * The method returns a list of matching reference CRS, and the percentage + * (0-100) of confidence in the match. + * 100% means that the name of the reference entry + * perfectly matches the CRS name, and both are equivalent. In which case a + * single result is returned. + * 90% means that CRS are equivalent, but the names are not exactly the same. + * 70% means that CRS are equivalent), but the names do not match at all. + * 25% means that the CRS are not equivalent, but there is some similarity in + * the names. + * Other confidence values may be returned by some specialized implementations. + * + * This is implemented for GeodeticCRS, ProjectedCRS, VerticalCRS and + * CompoundCRS. + * + * @param authorityFactory Authority factory (or null, but degraded + * functionality) + * @return a list of matching reference CRS, and the percentage (0-100) of + * confidence in the match. + */ +std::list<std::pair<CRSNNPtr, int>> +CRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const { + return _identify(authorityFactory); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +std::list<std::pair<CRSNNPtr, int>> +CRS::_identify(const io::AuthorityFactoryPtr &) const { + return {}; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct SingleCRS::Private { + datum::DatumPtr datum{}; + datum::DatumEnsemblePtr datumEnsemble{}; + cs::CoordinateSystemNNPtr coordinateSystem; + + Private(const datum::DatumPtr &datumIn, + const datum::DatumEnsemblePtr &datumEnsembleIn, + const cs::CoordinateSystemNNPtr &csIn) + : datum(datumIn), datumEnsemble(datumEnsembleIn), + coordinateSystem(csIn) { + if ((datum ? 1 : 0) + (datumEnsemble ? 1 : 0) != 1) { + throw util::Exception("datum or datumEnsemble should be set"); + } + } +}; +//! @endcond + +// --------------------------------------------------------------------------- + +SingleCRS::SingleCRS(const datum::DatumPtr &datumIn, + const datum::DatumEnsemblePtr &datumEnsembleIn, + const cs::CoordinateSystemNNPtr &csIn) + : d(internal::make_unique<Private>(datumIn, datumEnsembleIn, csIn)) {} + +// --------------------------------------------------------------------------- + +SingleCRS::SingleCRS(const SingleCRS &other) + : CRS(other), d(internal::make_unique<Private>(*other.d)) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +SingleCRS::~SingleCRS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the datum::Datum associated with the CRS. + * + * This might be null, in which case datumEnsemble() return will not be null. + * + * @return a Datum that might be null. + */ +const datum::DatumPtr &SingleCRS::datum() PROJ_CONST_DEFN { return d->datum; } + +// --------------------------------------------------------------------------- + +/** \brief Return the datum::DatumEnsemble associated with the CRS. + * + * This might be null, in which case datum() return will not be null. + * + * @return a DatumEnsemble that might be null. + */ +const datum::DatumEnsemblePtr &SingleCRS::datumEnsemble() PROJ_CONST_DEFN { + return d->datumEnsemble; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the cs::CoordinateSystem associated with the CRS. + * + * This might be null, in which case datumEnsemble() return will not be null. + * + * @return a CoordinateSystem that might be null. + */ +const cs::CoordinateSystemNNPtr &SingleCRS::coordinateSystem() PROJ_CONST_DEFN { + return d->coordinateSystem; +} + +// --------------------------------------------------------------------------- + +bool SingleCRS::baseIsEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherSingleCRS = dynamic_cast<const SingleCRS *>(other); + if (otherSingleCRS == nullptr || + (criterion == util::IComparable::Criterion::STRICT && + !ObjectUsage::_isEquivalentTo(other, criterion))) { + return false; + } + const auto &thisDatum = d->datum; + const auto &otherDatum = otherSingleCRS->d->datum; + if (thisDatum) { + if (!thisDatum->_isEquivalentTo(otherDatum.get(), criterion)) { + return false; + } + } else { + if (otherDatum) { + return false; + } + } + + // TODO test DatumEnsemble + return d->coordinateSystem->_isEquivalentTo( + otherSingleCRS->d->coordinateSystem.get(), criterion); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void SingleCRS::exportDatumOrDatumEnsembleToWkt( + io::WKTFormatter *formatter) const // throw(io::FormattingException) +{ + const auto &l_datum = d->datum; + if (l_datum) { + l_datum->_exportToWKT(formatter); + } else { + const auto &l_datumEnsemble = d->datumEnsemble; + assert(l_datumEnsemble); + l_datumEnsemble->_exportToWKT(formatter); + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct GeodeticCRS::Private { + std::vector<operation::PointMotionOperationNNPtr> velocityModel{}; + datum::GeodeticReferenceFramePtr datum_; + + explicit Private(const datum::GeodeticReferenceFramePtr &datumIn) + : datum_(datumIn) {} +}; + +// --------------------------------------------------------------------------- + +static const datum::DatumEnsemblePtr & +checkEnsembleForGeodeticCRS(const datum::GeodeticReferenceFramePtr &datumIn, + const datum::DatumEnsemblePtr &ensemble) { + const char *msg = "One of Datum or DatumEnsemble should be defined"; + if (datumIn) { + if (!ensemble) { + return ensemble; + } + msg = "Datum and DatumEnsemble should not be defined"; + } else if (ensemble) { + const auto &datums = ensemble->datums(); + assert(!datums.empty()); + auto grfFirst = + dynamic_cast<datum::GeodeticReferenceFrame *>(datums[0].get()); + if (grfFirst) { + return ensemble; + } + msg = "Ensemble should contain GeodeticReferenceFrame"; + } + throw util::Exception(msg); +} + +//! @endcond + +// --------------------------------------------------------------------------- + +GeodeticCRS::GeodeticCRS(const datum::GeodeticReferenceFramePtr &datumIn, + const datum::DatumEnsemblePtr &datumEnsembleIn, + const cs::EllipsoidalCSNNPtr &csIn) + : SingleCRS(datumIn, checkEnsembleForGeodeticCRS(datumIn, datumEnsembleIn), + csIn), + d(internal::make_unique<Private>(datumIn)) {} + +// --------------------------------------------------------------------------- + +GeodeticCRS::GeodeticCRS(const datum::GeodeticReferenceFramePtr &datumIn, + const datum::DatumEnsemblePtr &datumEnsembleIn, + const cs::SphericalCSNNPtr &csIn) + : SingleCRS(datumIn, checkEnsembleForGeodeticCRS(datumIn, datumEnsembleIn), + csIn), + d(internal::make_unique<Private>(datumIn)) {} + +// --------------------------------------------------------------------------- + +GeodeticCRS::GeodeticCRS(const datum::GeodeticReferenceFramePtr &datumIn, + const datum::DatumEnsemblePtr &datumEnsembleIn, + const cs::CartesianCSNNPtr &csIn) + : SingleCRS(datumIn, checkEnsembleForGeodeticCRS(datumIn, datumEnsembleIn), + csIn), + d(internal::make_unique<Private>(datumIn)) {} + +// --------------------------------------------------------------------------- + +GeodeticCRS::GeodeticCRS(const GeodeticCRS &other) + : SingleCRS(other), d(internal::make_unique<Private>(*other.d)) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +GeodeticCRS::~GeodeticCRS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +CRSNNPtr GeodeticCRS::_shallowClone() const { + auto crs(GeodeticCRS::nn_make_shared<GeodeticCRS>(*this)); + crs->assignSelf(crs); + return crs; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the datum::GeodeticReferenceFrame associated with the CRS. + * + * @return a GeodeticReferenceFrame or null (in which case datumEnsemble() + * should return a non-null pointer.) + */ +const datum::GeodeticReferenceFramePtr &GeodeticCRS::datum() PROJ_CONST_DEFN { + return d->datum_; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static datum::GeodeticReferenceFrame *oneDatum(const GeodeticCRS *crs) { + const auto &l_datumEnsemble = crs->datumEnsemble(); + assert(l_datumEnsemble); + const auto &l_datums = l_datumEnsemble->datums(); + return static_cast<datum::GeodeticReferenceFrame *>(l_datums[0].get()); +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the PrimeMeridian associated with the GeodeticReferenceFrame + * or with one of the GeodeticReferenceFrame of the datumEnsemble(). + * + * @return the PrimeMeridian. + */ +const datum::PrimeMeridianNNPtr &GeodeticCRS::primeMeridian() PROJ_CONST_DEFN { + if (d->datum_) { + return d->datum_->primeMeridian(); + } + return oneDatum(this)->primeMeridian(); +} + +// --------------------------------------------------------------------------- + +/** \brief Return the ellipsoid associated with the GeodeticReferenceFrame + * or with one of the GeodeticReferenceFrame of the datumEnsemble(). + * + * @return the PrimeMeridian. + */ +const datum::EllipsoidNNPtr &GeodeticCRS::ellipsoid() PROJ_CONST_DEFN { + if (d->datum_) { + return d->datum_->ellipsoid(); + } + return oneDatum(this)->ellipsoid(); +} + +// --------------------------------------------------------------------------- + +/** \brief Return the velocity model associated with the CRS. + * + * @return a velocity model. might be null. + */ +const std::vector<operation::PointMotionOperationNNPtr> & +GeodeticCRS::velocityModel() PROJ_CONST_DEFN { + return d->velocityModel; +} + +// --------------------------------------------------------------------------- + +/** \brief Return whether the CRS is a geocentric one. + * + * A geocentric CRS is a geodetic CRS that has a Cartesian coordinate system + * with three axis, whose direction is respectively + * cs::AxisDirection::GEOCENTRIC_X, + * cs::AxisDirection::GEOCENTRIC_Y and cs::AxisDirection::GEOCENTRIC_Z. + * + * @return true if the CRS is a geocentric CRS. + */ +bool GeodeticCRS::isGeocentric() PROJ_CONST_DEFN { + const auto &cs = coordinateSystem(); + const auto &axisList = cs->axisList(); + return axisList.size() == 3 && + dynamic_cast<cs::CartesianCS *>(cs.get()) != nullptr && + &axisList[0]->direction() == &cs::AxisDirection::GEOCENTRIC_X && + &axisList[1]->direction() == &cs::AxisDirection::GEOCENTRIC_Y && + &axisList[2]->direction() == &cs::AxisDirection::GEOCENTRIC_Z; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a GeodeticCRS from a datum::GeodeticReferenceFrame and a + * cs::SphericalCS. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param datum The datum of the CRS. + * @param cs a SphericalCS. + * @return new GeodeticCRS. + */ +GeodeticCRSNNPtr +GeodeticCRS::create(const util::PropertyMap &properties, + const datum::GeodeticReferenceFrameNNPtr &datum, + const cs::SphericalCSNNPtr &cs) { + return create(properties, datum.as_nullable(), nullptr, cs); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a GeodeticCRS from a datum::GeodeticReferenceFrame or + * datum::DatumEnsemble and a cs::SphericalCS. + * + * One and only one of datum or datumEnsemble should be set to a non-null value. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param datum The datum of the CRS, or nullptr + * @param datumEnsemble The datum ensemble of the CRS, or nullptr. + * @param cs a SphericalCS. + * @return new GeodeticCRS. + */ +GeodeticCRSNNPtr +GeodeticCRS::create(const util::PropertyMap &properties, + const datum::GeodeticReferenceFramePtr &datum, + const datum::DatumEnsemblePtr &datumEnsemble, + const cs::SphericalCSNNPtr &cs) { + auto crs( + GeodeticCRS::nn_make_shared<GeodeticCRS>(datum, datumEnsemble, cs)); + crs->assignSelf(crs); + crs->setProperties(properties); + return crs; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a GeodeticCRS from a datum::GeodeticReferenceFrame and a + * cs::CartesianCS. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param datum The datum of the CRS. + * @param cs a CartesianCS. + * @return new GeodeticCRS. + */ +GeodeticCRSNNPtr +GeodeticCRS::create(const util::PropertyMap &properties, + const datum::GeodeticReferenceFrameNNPtr &datum, + const cs::CartesianCSNNPtr &cs) { + return create(properties, datum.as_nullable(), nullptr, cs); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a GeodeticCRS from a datum::GeodeticReferenceFrame or + * datum::DatumEnsemble and a cs::CartesianCS. + * + * One and only one of datum or datumEnsemble should be set to a non-null value. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param datum The datum of the CRS, or nullptr + * @param datumEnsemble The datum ensemble of the CRS, or nullptr. + * @param cs a CartesianCS + * @return new GeodeticCRS. + */ +GeodeticCRSNNPtr +GeodeticCRS::create(const util::PropertyMap &properties, + const datum::GeodeticReferenceFramePtr &datum, + const datum::DatumEnsemblePtr &datumEnsemble, + const cs::CartesianCSNNPtr &cs) { + auto crs( + GeodeticCRS::nn_make_shared<GeodeticCRS>(datum, datumEnsemble, cs)); + crs->assignSelf(crs); + crs->setProperties(properties); + return crs; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void GeodeticCRS::_exportToWKT(io::WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + formatter->startNode(isWKT2 ? ((formatter->use2018Keywords() && + dynamic_cast<const GeographicCRS *>(this)) + ? io::WKTConstants::GEOGCRS + : io::WKTConstants::GEODCRS) + : isGeocentric() ? io::WKTConstants::GEOCCS + : io::WKTConstants::GEOGCS, + !identifiers().empty()); + auto l_name = nameStr(); + const auto &cs = coordinateSystem(); + const auto &axisList = cs->axisList(); + + if (formatter->useESRIDialect()) { + if (axisList.size() != 2) { + io::FormattingException::Throw( + "Only export of Geographic 2D CRS is supported in ESRI_WKT1"); + } + + if (l_name == "WGS 84") { + l_name = "GCS_WGS_1984"; + } else { + bool aliasFound = false; + const auto &dbContext = formatter->databaseContext(); + if (dbContext) { + auto l_alias = dbContext->getAliasFromOfficialName( + l_name, "geodetic_crs", "ESRI"); + if (!l_alias.empty()) { + l_name = l_alias; + aliasFound = true; + } + } + if (!aliasFound) { + l_name = io::WKTFormatter::morphNameToESRI(l_name); + if (!starts_with(l_name, "GCS_")) { + l_name = "GCS_" + l_name; + } + } + } + } + if (!isWKT2 && !formatter->useESRIDialect() && isDeprecated()) { + l_name += " (deprecated)"; + } + formatter->addQuotedString(l_name); + + const auto &unit = axisList[0]->unit(); + formatter->pushAxisAngularUnit(common::UnitOfMeasure::create(unit)); + exportDatumOrDatumEnsembleToWkt(formatter); + primeMeridian()->_exportToWKT(formatter); + formatter->popAxisAngularUnit(); + if (!isWKT2) { + unit._exportToWKT(formatter); + } + cs->_exportToWKT(formatter); + ObjectUsage::baseExportToWKT(formatter); + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void GeodeticCRS::addGeocentricUnitConversionIntoPROJString( + io::PROJStringFormatter *formatter) const { + + const auto &axisList = coordinateSystem()->axisList(); + const auto &unit = axisList[0]->unit(); + if (unit != common::UnitOfMeasure::METRE) { + if (formatter->convention() == + io::PROJStringFormatter::Convention::PROJ_4) { + io::FormattingException::Throw("GeodeticCRS::exportToPROJString(): " + "non-meter unit not supported for " + "PROJ.4"); + } + + formatter->addStep("unitconvert"); + formatter->addParam("xy_in", "m"); + formatter->addParam("z_in", "m"); + { + auto projUnit = unit.exportToPROJString(); + if (!projUnit.empty()) { + formatter->addParam("xy_out", projUnit); + formatter->addParam("z_out", projUnit); + return; + } + } + + const auto &toSI = unit.conversionToSI(); + formatter->addParam("xy_out", toSI); + formatter->addParam("z_out", toSI); + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void GeodeticCRS::_exportToPROJString( + io::PROJStringFormatter *formatter) const // throw(io::FormattingException) +{ + if (!isGeocentric()) { + io::FormattingException::Throw( + "GeodeticCRS::exportToPROJString() only " + "supports geocentric coordinate systems"); + } + + if (formatter->convention() == + io::PROJStringFormatter::Convention::PROJ_4) { + formatter->addStep("geocent"); + } else { + formatter->addStep("cart"); + } + ellipsoid()->_exportToPROJString(formatter); + if (formatter->convention() == + io::PROJStringFormatter::Convention::PROJ_4) { + const auto &TOWGS84Params = formatter->getTOWGS84Parameters(); + if (TOWGS84Params.size() == 7) { + formatter->addParam("towgs84", TOWGS84Params); + } + } + addGeocentricUnitConversionIntoPROJString(formatter); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void GeodeticCRS::addDatumInfoToPROJString( + io::PROJStringFormatter *formatter) const // throw(io::FormattingException) +{ + const auto &TOWGS84Params = formatter->getTOWGS84Parameters(); + bool datumWritten = false; + const auto &nadgrids = formatter->getHDatumExtension(); + const auto &l_datum = datum(); + if (formatter->convention() == + io::PROJStringFormatter::Convention::PROJ_4 && + l_datum && TOWGS84Params.empty() && nadgrids.empty()) { + if (l_datum->_isEquivalentTo( + datum::GeodeticReferenceFrame::EPSG_6326.get(), + util::IComparable::Criterion::EQUIVALENT)) { + datumWritten = true; + formatter->addParam("datum", "WGS84"); + } else if (l_datum->_isEquivalentTo( + datum::GeodeticReferenceFrame::EPSG_6267.get(), + util::IComparable::Criterion::EQUIVALENT)) { + datumWritten = true; + formatter->addParam("datum", "NAD27"); + } else if (l_datum->_isEquivalentTo( + datum::GeodeticReferenceFrame::EPSG_6269.get(), + util::IComparable::Criterion::EQUIVALENT)) { + datumWritten = true; + formatter->addParam("datum", "NAD83"); + } + } + if (!datumWritten) { + ellipsoid()->_exportToPROJString(formatter); + primeMeridian()->_exportToPROJString(formatter); + } + if (TOWGS84Params.size() == 7) { + formatter->addParam("towgs84", TOWGS84Params); + } + if (!nadgrids.empty()) { + formatter->addParam("nadgrids", nadgrids); + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static util::IComparable::Criterion +getStandardCriterion(util::IComparable::Criterion criterion) { + return criterion == util::IComparable::Criterion:: + EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS + ? util::IComparable::Criterion::EQUIVALENT + : criterion; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool GeodeticCRS::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + const auto standardCriterion = getStandardCriterion(criterion); + auto otherGeodCRS = dynamic_cast<const GeodeticCRS *>(other); + // TODO test velocityModel + return otherGeodCRS != nullptr && + SingleCRS::baseIsEquivalentTo(other, standardCriterion); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static util::PropertyMap createMapNameEPSGCode(const char *name, int code) { + return util::PropertyMap() + .set(common::IdentifiedObject::NAME_KEY, name) + .set(metadata::Identifier::CODESPACE_KEY, metadata::Identifier::EPSG) + .set(metadata::Identifier::CODE_KEY, code); +} +//! @endcond + +// --------------------------------------------------------------------------- + +GeodeticCRSNNPtr GeodeticCRS::createEPSG_4978() { + return create( + createMapNameEPSGCode("WGS 84", 4978), + datum::GeodeticReferenceFrame::EPSG_6326, + cs::CartesianCS::createGeocentric(common::UnitOfMeasure::METRE)); +} + +// --------------------------------------------------------------------------- + +/** \brief Identify the CRS with reference CRSs. + * + * The candidate CRSs are either hard-coded, or looked in the database when + * authorityFactory is not null. + * + * The method returns a list of matching reference CRS, and the percentage + * (0-100) of confidence in the match. + * 100% means that the name of the reference entry + * perfectly matches the CRS name, and both are equivalent. In which case a + * single result is returned. + * 90% means that CRS are equivalent, but the names are not exactly the same. + * 70% means that CRS are equivalent (equivalent datum and coordinate system), + * but the names do not match at all. + * 60% means that ellipsoid, prime meridian and coordinate systems are + * equivalent, but the CRS and datum names do not match. + * 25% means that the CRS are not equivalent, but there is some similarity in + * the names. + * + * @param authorityFactory Authority factory (or null, but degraded + * functionality) + * @return a list of matching reference CRS, and the percentage (0-100) of + * confidence in the match. + */ +std::list<std::pair<GeodeticCRSNNPtr, int>> +GeodeticCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const { + typedef std::pair<GeodeticCRSNNPtr, int> Pair; + std::list<Pair> res; + const auto &thisName(nameStr()); + + const GeographicCRSNNPtr candidatesCRS[] = {GeographicCRS::EPSG_4326, + GeographicCRS::EPSG_4267, + GeographicCRS::EPSG_4269}; + for (const auto &crs : candidatesCRS) { + const bool nameEquivalent = metadata::Identifier::isEquivalentName( + thisName.c_str(), crs->nameStr().c_str()); + const bool nameEqual = thisName == crs->nameStr(); + const bool isEq = _isEquivalentTo( + crs.get(), util::IComparable::Criterion::EQUIVALENT); + if (nameEquivalent && isEq && (!authorityFactory || nameEqual)) { + res.emplace_back(util::nn_static_pointer_cast<GeodeticCRS>(crs), + nameEqual ? 100 : 90); + return res; + } else if (nameEqual && !isEq && !authorityFactory) { + res.emplace_back(util::nn_static_pointer_cast<GeodeticCRS>(crs), + 25); + return res; + } else if (isEq && !authorityFactory) { + res.emplace_back(util::nn_static_pointer_cast<GeodeticCRS>(crs), + 70); + return res; + } + } + + std::string geodetic_crs_type; + if (isGeocentric()) { + geodetic_crs_type = "geocentric"; + } else { + auto geogCRS = dynamic_cast<const GeographicCRS *>(this); + if (geogCRS) { + if (coordinateSystem()->axisList().size() == 2) { + geodetic_crs_type = "geographic 2D"; + } else { + geodetic_crs_type = "geographic 3D"; + } + } + } + + if (authorityFactory) { + + const auto &thisDatum(datum()); + + auto searchByDatum = [this, &authorityFactory, &res, &thisDatum, + &geodetic_crs_type]() { + for (const auto &id : thisDatum->identifiers()) { + try { + auto tempRes = authorityFactory->createGeodeticCRSFromDatum( + *id->codeSpace(), id->code(), geodetic_crs_type); + for (const auto &crs : tempRes) { + if (_isEquivalentTo( + crs.get(), + util::IComparable::Criterion::EQUIVALENT)) { + res.emplace_back(crs, 70); + } + } + } catch (const std::exception &) { + } + } + }; + + const auto &thisEllipsoid(ellipsoid()); + auto searchByEllipsoid = [this, &authorityFactory, &res, &thisDatum, + &thisEllipsoid, &geodetic_crs_type]() { + const auto ellipsoids = + thisEllipsoid->identifiers().empty() + ? authorityFactory->createEllipsoidFromExisting( + thisEllipsoid) + : std::list<datum::EllipsoidNNPtr>{thisEllipsoid}; + for (const auto &ellps : ellipsoids) { + for (const auto &id : ellps->identifiers()) { + try { + auto tempRes = + authorityFactory->createGeodeticCRSFromEllipsoid( + *id->codeSpace(), id->code(), + geodetic_crs_type); + for (const auto &crs : tempRes) { + const auto &crsDatum(crs->datum()); + if (crsDatum && + crsDatum->ellipsoid()->_isEquivalentTo( + ellps.get(), + util::IComparable::Criterion::EQUIVALENT) && + crsDatum->primeMeridian()->_isEquivalentTo( + thisDatum->primeMeridian().get(), + util::IComparable::Criterion::EQUIVALENT) && + coordinateSystem()->_isEquivalentTo( + crs->coordinateSystem().get(), + util::IComparable::Criterion::EQUIVALENT) + + ) { + res.emplace_back(crs, 60); + } + } + } catch (const std::exception &) { + } + } + } + }; + + const bool unsignificantName = thisName.empty() || + ci_equal(thisName, "unknown") || + ci_equal(thisName, "unnamed"); + + if (unsignificantName) { + if (thisDatum) { + if (!thisDatum->identifiers().empty()) { + searchByDatum(); + } else { + searchByEllipsoid(); + } + } + } else if (!identifiers().empty()) { + // If the CRS has already an id, check in the database for the + // official object, and verify that they are equivalent. + for (const auto &id : identifiers()) { + try { + auto crs = io::AuthorityFactory::create( + authorityFactory->databaseContext(), + *id->codeSpace()) + ->createGeodeticCRS(id->code()); + bool match = _isEquivalentTo( + crs.get(), util::IComparable::Criterion::EQUIVALENT); + res.emplace_back(crs, match ? 100 : 25); + return res; + } catch (const std::exception &) { + } + } + } else { + for (int ipass = 0; ipass < 2; ipass++) { + const bool approximateMatch = ipass == 1; + auto objects = authorityFactory->createObjectsFromName( + thisName, {io::AuthorityFactory::ObjectType::GEODETIC_CRS}, + approximateMatch); + for (const auto &obj : objects) { + auto crs = util::nn_dynamic_pointer_cast<GeodeticCRS>(obj); + assert(crs); + auto crsNN = NN_NO_CHECK(crs); + if (_isEquivalentTo( + crs.get(), + util::IComparable::Criterion::EQUIVALENT)) { + if (crs->nameStr() == thisName) { + res.clear(); + res.emplace_back(crsNN, 100); + return res; + } + const bool eqName = + metadata::Identifier::isEquivalentName( + thisName.c_str(), crs->nameStr().c_str()); + res.emplace_back(crsNN, eqName ? 90 : 70); + } else { + res.emplace_back(crsNN, 25); + } + } + if (!res.empty()) { + break; + } + } + if (res.empty() && thisDatum) { + if (!thisDatum->identifiers().empty()) { + searchByDatum(); + } else { + searchByEllipsoid(); + } + } + } + + const auto &thisCS(coordinateSystem()); + // Sort results + res.sort([&thisName, &thisDatum, &thisCS](const Pair &a, + const Pair &b) { + // First consider confidence + if (a.second > b.second) { + return true; + } + if (a.second < b.second) { + return false; + } + + // Then consider exact name matching + const auto &aName(a.first->nameStr()); + const auto &bName(b.first->nameStr()); + if (aName == thisName && bName != thisName) { + return true; + } + if (bName == thisName && aName != thisName) { + return false; + } + + // Then datum matching + const auto &aDatum(a.first->datum()); + const auto &bDatum(b.first->datum()); + if (thisDatum && aDatum && bDatum) { + const auto thisEquivADatum(thisDatum->_isEquivalentTo( + aDatum.get(), util::IComparable::Criterion::EQUIVALENT)); + const auto thisEquivBDatum(thisDatum->_isEquivalentTo( + bDatum.get(), util::IComparable::Criterion::EQUIVALENT)); + + if (thisEquivADatum && !thisEquivBDatum) { + return true; + } + if (!thisEquivADatum && thisEquivBDatum) { + return false; + } + } + + // Then coordinate system matching + const auto &aCS(a.first->coordinateSystem()); + const auto &bCS(b.first->coordinateSystem()); + const auto thisEquivACs(thisCS->_isEquivalentTo( + aCS.get(), util::IComparable::Criterion::EQUIVALENT)); + const auto thisEquivBCs(thisCS->_isEquivalentTo( + bCS.get(), util::IComparable::Criterion::EQUIVALENT)); + if (thisEquivACs && !thisEquivBCs) { + return true; + } + if (!thisEquivACs && thisEquivBCs) { + return false; + } + + // Then dimension of the coordinate system matching + const auto thisCSAxisListSize = thisCS->axisList().size(); + const auto aCSAxistListSize = aCS->axisList().size(); + const auto bCSAxistListSize = bCS->axisList().size(); + if (thisCSAxisListSize == aCSAxistListSize && + thisCSAxisListSize != bCSAxistListSize) { + return true; + } + if (thisCSAxisListSize != aCSAxistListSize && + thisCSAxisListSize == bCSAxistListSize) { + return false; + } + + if (aDatum && bDatum) { + // Favor the CRS whole ellipsoid names matches the ellipsoid + // name (WGS84...) + const bool aEllpsNameEqCRSName = + metadata::Identifier::isEquivalentName( + aDatum->ellipsoid()->nameStr().c_str(), + a.first->nameStr().c_str()); + const bool bEllpsNameEqCRSName = + metadata::Identifier::isEquivalentName( + bDatum->ellipsoid()->nameStr().c_str(), + b.first->nameStr().c_str()); + if (aEllpsNameEqCRSName && !bEllpsNameEqCRSName) { + return true; + } + if (bEllpsNameEqCRSName && !aEllpsNameEqCRSName) { + return false; + } + } + + // Arbitrary final sorting criterion + return aName < bName; + }); + + // If there are results with 90% confidence, only keep those + if (res.size() >= 2 && res.front().second == 90) { + std::list<Pair> newRes; + for (const auto &pair : res) { + if (pair.second == 90) { + newRes.push_back(pair); + } else { + break; + } + } + return newRes; + } + } + return res; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +std::list<std::pair<CRSNNPtr, int>> +GeodeticCRS::_identify(const io::AuthorityFactoryPtr &authorityFactory) const { + typedef std::pair<CRSNNPtr, int> Pair; + std::list<Pair> res; + auto resTemp = identify(authorityFactory); + for (const auto &pair : resTemp) { + res.emplace_back(pair.first, pair.second); + } + return res; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct GeographicCRS::Private { + cs::EllipsoidalCSNNPtr coordinateSystem_; + explicit Private(const cs::EllipsoidalCSNNPtr &csIn) + : coordinateSystem_(csIn) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +GeographicCRS::GeographicCRS(const datum::GeodeticReferenceFramePtr &datumIn, + const datum::DatumEnsemblePtr &datumEnsembleIn, + const cs::EllipsoidalCSNNPtr &csIn) + : SingleCRS(datumIn, datumEnsembleIn, csIn), + GeodeticCRS(datumIn, + checkEnsembleForGeodeticCRS(datumIn, datumEnsembleIn), csIn), + d(internal::make_unique<Private>(csIn)) {} + +// --------------------------------------------------------------------------- + +GeographicCRS::GeographicCRS(const GeographicCRS &other) + : SingleCRS(other), GeodeticCRS(other), + d(internal::make_unique<Private>(*other.d)) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +GeographicCRS::~GeographicCRS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +CRSNNPtr GeographicCRS::_shallowClone() const { + auto crs(GeographicCRS::nn_make_shared<GeographicCRS>(*this)); + crs->assignSelf(crs); + return crs; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the cs::EllipsoidalCS associated with the CRS. + * + * @return a EllipsoidalCS. + */ +const cs::EllipsoidalCSNNPtr & +GeographicCRS::coordinateSystem() PROJ_CONST_DEFN { + return d->coordinateSystem_; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a GeographicCRS from a datum::GeodeticReferenceFrameNNPtr + * and a + * cs::EllipsoidalCS. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param datum The datum of the CRS. + * @param cs a EllipsoidalCS. + * @return new GeographicCRS. + */ +GeographicCRSNNPtr +GeographicCRS::create(const util::PropertyMap &properties, + const datum::GeodeticReferenceFrameNNPtr &datum, + const cs::EllipsoidalCSNNPtr &cs) { + return create(properties, datum.as_nullable(), nullptr, cs); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a GeographicCRS from a datum::GeodeticReferenceFramePtr + * or + * datum::DatumEnsemble and a + * cs::EllipsoidalCS. + * + * One and only one of datum or datumEnsemble should be set to a non-null value. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param datum The datum of the CRS, or nullptr + * @param datumEnsemble The datum ensemble of the CRS, or nullptr. + * @param cs a EllipsoidalCS. + * @return new GeographicCRS. + */ +GeographicCRSNNPtr +GeographicCRS::create(const util::PropertyMap &properties, + const datum::GeodeticReferenceFramePtr &datum, + const datum::DatumEnsemblePtr &datumEnsemble, + const cs::EllipsoidalCSNNPtr &cs) { + GeographicCRSNNPtr crs( + GeographicCRS::nn_make_shared<GeographicCRS>(datum, datumEnsemble, cs)); + crs->assignSelf(crs); + crs->setProperties(properties); + return crs; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +/** \brief Return whether the current GeographicCRS is the 2D part of the + * other 3D GeographicCRS. + */ +bool GeographicCRS::is2DPartOf3D(util::nn<const GeographicCRS *> other) + PROJ_CONST_DEFN { + const auto &axis = d->coordinateSystem_->axisList(); + const auto &otherAxis = other->d->coordinateSystem_->axisList(); + if (!(axis.size() == 2 && otherAxis.size() == 3)) { + return false; + } + const auto &firstAxis = axis[0]; + const auto &secondAxis = axis[1]; + const auto &otherFirstAxis = otherAxis[0]; + const auto &otherSecondAxis = otherAxis[1]; + if (!(firstAxis->_isEquivalentTo(otherFirstAxis.get()) && + secondAxis->_isEquivalentTo(otherSecondAxis.get()))) { + return false; + } + const auto &thisDatum = GeodeticCRS::getPrivate()->datum_; + const auto &otherDatum = other->GeodeticCRS::getPrivate()->datum_; + if (thisDatum && otherDatum) { + return thisDatum->_isEquivalentTo(otherDatum.get()); + } + return false; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool GeographicCRS::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherGeogCRS = dynamic_cast<const GeographicCRS *>(other); + if (otherGeogCRS == nullptr) { + return false; + } + const auto standardCriterion = getStandardCriterion(criterion); + if (GeodeticCRS::_isEquivalentTo(other, standardCriterion)) { + return true; + } + if (criterion != + util::IComparable::Criterion::EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS) { + return false; + } + const auto axisOrder = coordinateSystem()->axisOrder(); + if (axisOrder == cs::EllipsoidalCS::AxisOrder::LONG_EAST_LAT_NORTH || + axisOrder == cs::EllipsoidalCS::AxisOrder::LAT_NORTH_LONG_EAST) { + const auto &unit = coordinateSystem()->axisList()[0]->unit(); + return GeographicCRS::create( + util::PropertyMap().set(common::IdentifiedObject::NAME_KEY, + nameStr()), + datum(), datumEnsemble(), + axisOrder == + cs::EllipsoidalCS::AxisOrder::LONG_EAST_LAT_NORTH + ? cs::EllipsoidalCS::createLatitudeLongitude(unit) + : cs::EllipsoidalCS::createLongitudeLatitude(unit)) + ->GeodeticCRS::_isEquivalentTo(other, standardCriterion); + } + return false; +} +//! @endcond + +// --------------------------------------------------------------------------- + +GeographicCRSNNPtr GeographicCRS::createEPSG_4267() { + return create(createMapNameEPSGCode("NAD27", 4267), + datum::GeodeticReferenceFrame::EPSG_6267, + cs::EllipsoidalCS::createLatitudeLongitude( + common::UnitOfMeasure::DEGREE)); +} + +// --------------------------------------------------------------------------- + +GeographicCRSNNPtr GeographicCRS::createEPSG_4269() { + return create(createMapNameEPSGCode("NAD83", 4269), + datum::GeodeticReferenceFrame::EPSG_6269, + cs::EllipsoidalCS::createLatitudeLongitude( + common::UnitOfMeasure::DEGREE)); +} + +// --------------------------------------------------------------------------- + +GeographicCRSNNPtr GeographicCRS::createEPSG_4326() { + return create(createMapNameEPSGCode("WGS 84", 4326), + datum::GeodeticReferenceFrame::EPSG_6326, + cs::EllipsoidalCS::createLatitudeLongitude( + common::UnitOfMeasure::DEGREE)); +} + +// --------------------------------------------------------------------------- + +GeographicCRSNNPtr GeographicCRS::createOGC_CRS84() { + util::PropertyMap propertiesCRS; + propertiesCRS + .set(metadata::Identifier::CODESPACE_KEY, metadata::Identifier::OGC) + .set(metadata::Identifier::CODE_KEY, "CRS84") + .set(common::IdentifiedObject::NAME_KEY, "WGS 84 (CRS84)"); + return create(propertiesCRS, datum::GeodeticReferenceFrame::EPSG_6326, + cs::EllipsoidalCS::createLongitudeLatitude( // Long Lat ! + common::UnitOfMeasure::DEGREE)); +} + +// --------------------------------------------------------------------------- + +GeographicCRSNNPtr GeographicCRS::createEPSG_4979() { + return create( + createMapNameEPSGCode("WGS 84", 4979), + datum::GeodeticReferenceFrame::EPSG_6326, + cs::EllipsoidalCS::createLatitudeLongitudeEllipsoidalHeight( + common::UnitOfMeasure::DEGREE, common::UnitOfMeasure::METRE)); +} + +// --------------------------------------------------------------------------- + +GeographicCRSNNPtr GeographicCRS::createEPSG_4807() { + auto ellps(datum::Ellipsoid::createFlattenedSphere( + createMapNameEPSGCode("Clarke 1880 (IGN)", 7011), + common::Length(6378249.2), common::Scale(293.4660212936269))); + + auto cs(cs::EllipsoidalCS::createLatitudeLongitude( + common::UnitOfMeasure::GRAD)); + + auto datum(datum::GeodeticReferenceFrame::create( + createMapNameEPSGCode("Nouvelle Triangulation Francaise (Paris)", 6807), + ellps, util::optional<std::string>(), datum::PrimeMeridian::PARIS)); + + return create(createMapNameEPSGCode("NTF (Paris)", 4807), datum, cs); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void GeographicCRS::addAngularUnitConvertAndAxisSwap( + io::PROJStringFormatter *formatter) const { + const auto &axisList = coordinateSystem()->axisList(); + + if (formatter->convention() == + io::PROJStringFormatter::Convention::PROJ_5) { + + formatter->addStep("unitconvert"); + formatter->addParam("xy_in", "rad"); + if (axisList.size() == 3 && !formatter->omitZUnitConversion()) { + formatter->addParam("z_in", "m"); + } + { + const auto &unitHoriz = axisList[0]->unit(); + const auto projUnit = unitHoriz.exportToPROJString(); + if (projUnit.empty()) { + formatter->addParam("xy_out", unitHoriz.conversionToSI()); + } else { + formatter->addParam("xy_out", projUnit); + } + } + if (axisList.size() == 3 && !formatter->omitZUnitConversion()) { + const auto &unitZ = axisList[2]->unit(); + auto projVUnit = unitZ.exportToPROJString(); + if (projVUnit.empty()) { + formatter->addParam("z_out", unitZ.conversionToSI()); + } else { + formatter->addParam("z_out", projVUnit); + } + } + + const char *order[2] = {nullptr, nullptr}; + const char *one = "1"; + const char *two = "2"; + for (int i = 0; i < 2; i++) { + const auto &dir = axisList[i]->direction(); + if (&dir == &cs::AxisDirection::WEST) { + order[i] = "-1"; + } else if (&dir == &cs::AxisDirection::EAST) { + order[i] = one; + } else if (&dir == &cs::AxisDirection::SOUTH) { + order[i] = "-2"; + } else if (&dir == &cs::AxisDirection::NORTH) { + order[i] = two; + } + } + if (order[0] && order[1] && (order[0] != one || order[1] != two)) { + formatter->addStep("axisswap"); + char orderStr[10]; + strcpy(orderStr, order[0]); + strcat(orderStr, ","); + strcat(orderStr, order[1]); + formatter->addParam("order", orderStr); + } + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void GeographicCRS::_exportToPROJString( + io::PROJStringFormatter *formatter) const // throw(io::FormattingException) +{ + if (!formatter->omitProjLongLatIfPossible() || + primeMeridian()->longitude().getSIValue() != 0.0 || + !formatter->getTOWGS84Parameters().empty() || + !formatter->getHDatumExtension().empty()) { + formatter->addStep("longlat"); + addDatumInfoToPROJString(formatter); + } + + addAngularUnitConvertAndAxisSwap(formatter); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct VerticalCRS::Private { + std::vector<operation::TransformationNNPtr> geoidModel{}; + std::vector<operation::PointMotionOperationNNPtr> velocityModel{}; +}; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static const datum::DatumEnsemblePtr & +checkEnsembleForVerticalCRS(const datum::VerticalReferenceFramePtr &datumIn, + const datum::DatumEnsemblePtr &ensemble) { + const char *msg = "One of Datum or DatumEnsemble should be defined"; + if (datumIn) { + if (!ensemble) { + return ensemble; + } + msg = "Datum and DatumEnsemble should not be defined"; + } else if (ensemble) { + const auto &datums = ensemble->datums(); + assert(!datums.empty()); + auto grfFirst = + dynamic_cast<datum::VerticalReferenceFrame *>(datums[0].get()); + if (grfFirst) { + return ensemble; + } + msg = "Ensemble should contain VerticalReferenceFrame"; + } + throw util::Exception(msg); +} +//! @endcond + +// --------------------------------------------------------------------------- + +VerticalCRS::VerticalCRS(const datum::VerticalReferenceFramePtr &datumIn, + const datum::DatumEnsemblePtr &datumEnsembleIn, + const cs::VerticalCSNNPtr &csIn) + : SingleCRS(datumIn, checkEnsembleForVerticalCRS(datumIn, datumEnsembleIn), + csIn), + d(internal::make_unique<Private>()) {} + +// --------------------------------------------------------------------------- + +VerticalCRS::VerticalCRS(const VerticalCRS &other) + : SingleCRS(other), d(internal::make_unique<Private>(*other.d)) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +VerticalCRS::~VerticalCRS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +CRSNNPtr VerticalCRS::_shallowClone() const { + auto crs(VerticalCRS::nn_make_shared<VerticalCRS>(*this)); + crs->assignSelf(crs); + return crs; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the datum::VerticalReferenceFrame associated with the CRS. + * + * @return a VerticalReferenceFrame. + */ +const datum::VerticalReferenceFramePtr VerticalCRS::datum() const { + return std::static_pointer_cast<datum::VerticalReferenceFrame>( + SingleCRS::getPrivate()->datum); +} + +// --------------------------------------------------------------------------- + +/** \brief Return the geoid model associated with the CRS. + * + * Geoid height model or height correction model linked to a geoid-based + * vertical CRS. + * + * @return a geoid model. might be null + */ +const std::vector<operation::TransformationNNPtr> & +VerticalCRS::geoidModel() PROJ_CONST_DEFN { + return d->geoidModel; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the velocity model associated with the CRS. + * + * @return a velocity model. might be null. + */ +const std::vector<operation::PointMotionOperationNNPtr> & +VerticalCRS::velocityModel() PROJ_CONST_DEFN { + return d->velocityModel; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the cs::VerticalCS associated with the CRS. + * + * @return a VerticalCS. + */ +const cs::VerticalCSNNPtr VerticalCRS::coordinateSystem() const { + return util::nn_static_pointer_cast<cs::VerticalCS>( + SingleCRS::getPrivate()->coordinateSystem); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void VerticalCRS::_exportToWKT(io::WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + formatter->startNode(isWKT2 ? io::WKTConstants::VERTCRS + : io::WKTConstants::VERT_CS, + !identifiers().empty()); + formatter->addQuotedString(nameStr()); + exportDatumOrDatumEnsembleToWkt(formatter); + const auto &cs = SingleCRS::getPrivate()->coordinateSystem; + const auto &axisList = cs->axisList(); + if (!isWKT2) { + axisList[0]->unit()._exportToWKT(formatter); + } + cs->_exportToWKT(formatter); + ObjectUsage::baseExportToWKT(formatter); + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +void VerticalCRS::_exportToPROJString( + io::PROJStringFormatter *formatter) const // throw(io::FormattingException) +{ + auto geoidgrids = formatter->getVDatumExtension(); + if (!geoidgrids.empty()) { + formatter->addParam("geoidgrids", geoidgrids); + } + + auto &axisList = coordinateSystem()->axisList(); + if (!axisList.empty()) { + auto projUnit = axisList[0]->unit().exportToPROJString(); + if (projUnit.empty()) { + formatter->addParam("vto_meter", + axisList[0]->unit().conversionToSI()); + } else { + formatter->addParam("vunits", projUnit); + } + } +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void VerticalCRS::addLinearUnitConvert( + io::PROJStringFormatter *formatter) const { + auto &axisList = coordinateSystem()->axisList(); + + if (formatter->convention() == + io::PROJStringFormatter::Convention::PROJ_5) { + if (!axisList.empty()) { + auto projUnit = axisList[0]->unit().exportToPROJString(); + if (axisList[0]->unit().conversionToSI() != 1.0) { + formatter->addStep("unitconvert"); + formatter->addParam("z_in", "m"); + auto projVUnit = axisList[0]->unit().exportToPROJString(); + if (projVUnit.empty()) { + formatter->addParam("z_out", + axisList[0]->unit().conversionToSI()); + } else { + formatter->addParam("z_out", projVUnit); + } + } + } + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a VerticalCRS from a datum::VerticalReferenceFrame and a + * cs::VerticalCS. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param datumIn The datum of the CRS. + * @param csIn a VerticalCS. + * @return new VerticalCRS. + */ +VerticalCRSNNPtr +VerticalCRS::create(const util::PropertyMap &properties, + const datum::VerticalReferenceFrameNNPtr &datumIn, + const cs::VerticalCSNNPtr &csIn) { + return create(properties, datumIn.as_nullable(), nullptr, csIn); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a VerticalCRS from a datum::VerticalReferenceFrame or + * datum::DatumEnsemble and a cs::VerticalCS. + * + * One and only one of datum or datumEnsemble should be set to a non-null value. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param datumIn The datum of the CRS, or nullptr + * @param datumEnsembleIn The datum ensemble of the CRS, or nullptr. + * @param csIn a VerticalCS. + * @return new VerticalCRS. + */ +VerticalCRSNNPtr +VerticalCRS::create(const util::PropertyMap &properties, + const datum::VerticalReferenceFramePtr &datumIn, + const datum::DatumEnsemblePtr &datumEnsembleIn, + const cs::VerticalCSNNPtr &csIn) { + auto crs(VerticalCRS::nn_make_shared<VerticalCRS>(datumIn, datumEnsembleIn, + csIn)); + crs->assignSelf(crs); + crs->setProperties(properties); + return crs; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool VerticalCRS::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherVertCRS = dynamic_cast<const VerticalCRS *>(other); + // TODO test geoidModel and velocityModel + return otherVertCRS != nullptr && + SingleCRS::baseIsEquivalentTo(other, criterion); +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Identify the CRS with reference CRSs. + * + * The candidate CRSs are looked in the database when + * authorityFactory is not null. + * + * The method returns a list of matching reference CRS, and the percentage + * (0-100) of confidence in the match. + * 100% means that the name of the reference entry + * perfectly matches the CRS name, and both are equivalent. In which case a + * single result is returned. + * 90% means that CRS are equivalent, but the names are not exactly the same. + * 70% means that CRS are equivalent (equivalent datum and coordinate system), + * but the names do not match at all. + * 25% means that the CRS are not equivalent, but there is some similarity in + * the names. + * + * @param authorityFactory Authority factory (if null, will return an empty + * list) + * @return a list of matching reference CRS, and the percentage (0-100) of + * confidence in the match. + */ +std::list<std::pair<VerticalCRSNNPtr, int>> +VerticalCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const { + typedef std::pair<VerticalCRSNNPtr, int> Pair; + std::list<Pair> res; + + const auto &thisName(nameStr()); + + if (authorityFactory) { + + const bool unsignificantName = thisName.empty() || + ci_equal(thisName, "unknown") || + ci_equal(thisName, "unnamed"); + if (!identifiers().empty()) { + // If the CRS has already an id, check in the database for the + // official object, and verify that they are equivalent. + for (const auto &id : identifiers()) { + try { + auto crs = io::AuthorityFactory::create( + authorityFactory->databaseContext(), + *id->codeSpace()) + ->createVerticalCRS(id->code()); + bool match = _isEquivalentTo( + crs.get(), util::IComparable::Criterion::EQUIVALENT); + res.emplace_back(crs, match ? 100 : 25); + return res; + } catch (const std::exception &) { + } + } + } else if (!unsignificantName) { + for (int ipass = 0; ipass < 2; ipass++) { + const bool approximateMatch = ipass == 1; + auto objects = authorityFactory->createObjectsFromName( + thisName, {io::AuthorityFactory::ObjectType::VERTICAL_CRS}, + approximateMatch); + for (const auto &obj : objects) { + auto crs = util::nn_dynamic_pointer_cast<VerticalCRS>(obj); + assert(crs); + auto crsNN = NN_NO_CHECK(crs); + if (_isEquivalentTo( + crs.get(), + util::IComparable::Criterion::EQUIVALENT)) { + if (crs->nameStr() == thisName) { + res.clear(); + res.emplace_back(crsNN, 100); + return res; + } + res.emplace_back(crsNN, 90); + } else { + res.emplace_back(crsNN, 25); + } + } + if (!res.empty()) { + break; + } + } + } + + // Sort results + res.sort([&thisName](const Pair &a, const Pair &b) { + // First consider confidence + if (a.second > b.second) { + return true; + } + if (a.second < b.second) { + return false; + } + + // Then consider exact name matching + const auto &aName(a.first->nameStr()); + const auto &bName(b.first->nameStr()); + if (aName == thisName && bName != thisName) { + return true; + } + if (bName == thisName && aName != thisName) { + return false; + } + + // Arbitrary final sorting criterion + return aName < bName; + }); + + // Keep only results of the highest confidence + if (res.size() >= 2) { + const auto highestConfidence = res.front().second; + std::list<Pair> newRes; + for (const auto &pair : res) { + if (pair.second == highestConfidence) { + newRes.push_back(pair); + } else { + break; + } + } + return newRes; + } + } + + return res; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +std::list<std::pair<CRSNNPtr, int>> +VerticalCRS::_identify(const io::AuthorityFactoryPtr &authorityFactory) const { + typedef std::pair<CRSNNPtr, int> Pair; + std::list<Pair> res; + auto resTemp = identify(authorityFactory); + for (const auto &pair : resTemp) { + res.emplace_back(pair.first, pair.second); + } + return res; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct DerivedCRS::Private { + SingleCRSNNPtr baseCRS_; + operation::ConversionNNPtr derivingConversion_; + + Private(const SingleCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn) + : baseCRS_(baseCRSIn), derivingConversion_(derivingConversionIn) {} + + // For the conversion make a _shallowClone(), so that we can later set + // its targetCRS to this. + Private(const Private &other) + : baseCRS_(other.baseCRS_), + derivingConversion_(other.derivingConversion_->shallowClone()) {} +}; + +//! @endcond + +// --------------------------------------------------------------------------- + +// DerivedCRS is an abstract class, that virtually inherits from SingleCRS +// Consequently the base constructor in SingleCRS will never be called by +// that constructor. clang -Wabstract-vbase-init and VC++ underline this, but +// other +// compilers will complain if we don't call the base constructor. + +DerivedCRS::DerivedCRS(const SingleCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::CoordinateSystemNNPtr & +#if !defined(COMPILER_WARNS_ABOUT_ABSTRACT_VBASE_INIT) + cs +#endif + ) + : +#if !defined(COMPILER_WARNS_ABOUT_ABSTRACT_VBASE_INIT) + SingleCRS(baseCRSIn->datum(), baseCRSIn->datumEnsemble(), cs), +#endif + d(internal::make_unique<Private>(baseCRSIn, derivingConversionIn)) { +} + +// --------------------------------------------------------------------------- + +DerivedCRS::DerivedCRS(const DerivedCRS &other) + : +#if !defined(COMPILER_WARNS_ABOUT_ABSTRACT_VBASE_INIT) + SingleCRS(other), +#endif + d(internal::make_unique<Private>(*other.d)) { +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +DerivedCRS::~DerivedCRS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the base CRS of a DerivedCRS. + * + * @return the base CRS. + */ +const SingleCRSNNPtr &DerivedCRS::baseCRS() PROJ_CONST_DEFN { + return d->baseCRS_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the deriving conversion from the base CRS to this CRS. + * + * @return the deriving conversion. + */ +const operation::ConversionNNPtr DerivedCRS::derivingConversion() const { + return d->derivingConversion_->shallowClone(); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +const operation::ConversionNNPtr & +DerivedCRS::derivingConversionRef() PROJ_CONST_DEFN { + return d->derivingConversion_; +} +//! @endcond + +// --------------------------------------------------------------------------- + +bool DerivedCRS::_isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherDerivedCRS = dynamic_cast<const DerivedCRS *>(other); + const auto standardCriterion = getStandardCriterion(criterion); + if (otherDerivedCRS == nullptr || + !SingleCRS::baseIsEquivalentTo(other, standardCriterion)) { + return false; + } + return d->baseCRS_->_isEquivalentTo(otherDerivedCRS->d->baseCRS_.get(), + criterion) && + d->derivingConversion_->_isEquivalentTo( + otherDerivedCRS->d->derivingConversion_.get(), + standardCriterion); +} + +// --------------------------------------------------------------------------- + +void DerivedCRS::setDerivingConversionCRS() { + derivingConversionRef()->setWeakSourceTargetCRS( + baseCRS().as_nullable(), + std::static_pointer_cast<CRS>(shared_from_this().as_nullable())); +} + +// --------------------------------------------------------------------------- + +void DerivedCRS::baseExportToPROJString( + io::PROJStringFormatter *formatter) const // throw(io::FormattingException) +{ + d->derivingConversion_->_exportToPROJString(formatter); +} + +// --------------------------------------------------------------------------- + +void DerivedCRS::baseExportToWKT(io::WKTFormatter *&formatter, + const std::string &keyword, + const std::string &baseKeyword) const { + formatter->startNode(keyword, !identifiers().empty()); + formatter->addQuotedString(nameStr()); + + const auto &l_baseCRS = d->baseCRS_; + formatter->startNode(baseKeyword, !l_baseCRS->identifiers().empty()); + formatter->addQuotedString(l_baseCRS->nameStr()); + l_baseCRS->exportDatumOrDatumEnsembleToWkt(formatter); + formatter->endNode(); + + formatter->setUseDerivingConversion(true); + derivingConversionRef()->_exportToWKT(formatter); + formatter->setUseDerivingConversion(false); + + coordinateSystem()->_exportToWKT(formatter); + ObjectUsage::baseExportToWKT(formatter); + formatter->endNode(); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct ProjectedCRS::Private { + GeodeticCRSNNPtr baseCRS_; + cs::CartesianCSNNPtr cs_; + Private(const GeodeticCRSNNPtr &baseCRSIn, const cs::CartesianCSNNPtr &csIn) + : baseCRS_(baseCRSIn), cs_(csIn) {} + + inline const GeodeticCRSNNPtr &baseCRS() const { return baseCRS_; } + + inline const cs::CartesianCSNNPtr &coordinateSystem() const { return cs_; } +}; +//! @endcond + +// --------------------------------------------------------------------------- + +ProjectedCRS::ProjectedCRS( + const GeodeticCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::CartesianCSNNPtr &csIn) + : SingleCRS(baseCRSIn->datum(), baseCRSIn->datumEnsemble(), csIn), + DerivedCRS(baseCRSIn, derivingConversionIn, csIn), + d(internal::make_unique<Private>(baseCRSIn, csIn)) {} + +// --------------------------------------------------------------------------- + +ProjectedCRS::ProjectedCRS(const ProjectedCRS &other) + : SingleCRS(other), DerivedCRS(other), + d(internal::make_unique<Private>(other.baseCRS(), + other.coordinateSystem())) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +ProjectedCRS::~ProjectedCRS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +CRSNNPtr ProjectedCRS::_shallowClone() const { + auto crs(ProjectedCRS::nn_make_shared<ProjectedCRS>(*this)); + crs->assignSelf(crs); + crs->setDerivingConversionCRS(); + return crs; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the base CRS (a GeodeticCRS, which is generally a + * GeographicCRS) of the ProjectedCRS. + * + * @return the base CRS. + */ +const GeodeticCRSNNPtr &ProjectedCRS::baseCRS() PROJ_CONST_DEFN { + return d->baseCRS(); +} + +// --------------------------------------------------------------------------- + +/** \brief Return the cs::CartesianCS associated with the CRS. + * + * @return a CartesianCS + */ +const cs::CartesianCSNNPtr &ProjectedCRS::coordinateSystem() PROJ_CONST_DEFN { + return d->coordinateSystem(); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void ProjectedCRS::_exportToWKT(io::WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + + if (!isWKT2 && !formatter->useESRIDialect() && + starts_with(nameStr(), "Popular Visualisation CRS / Mercator")) { + formatter->startNode(io::WKTConstants::PROJCS, !identifiers().empty()); + formatter->addQuotedString(nameStr()); + formatter->setTOWGS84Parameters({0, 0, 0, 0, 0, 0, 0}); + baseCRS()->_exportToWKT(formatter); + formatter->setTOWGS84Parameters({}); + + formatter->startNode(io::WKTConstants::PROJECTION, false); + formatter->addQuotedString("Mercator_1SP"); + formatter->endNode(); + + formatter->startNode(io::WKTConstants::PARAMETER, false); + formatter->addQuotedString("central_meridian"); + formatter->add(0.0); + formatter->endNode(); + + formatter->startNode(io::WKTConstants::PARAMETER, false); + formatter->addQuotedString("scale_factor"); + formatter->add(1.0); + formatter->endNode(); + + formatter->startNode(io::WKTConstants::PARAMETER, false); + formatter->addQuotedString("false_easting"); + formatter->add(0.0); + formatter->endNode(); + + formatter->startNode(io::WKTConstants::PARAMETER, false); + formatter->addQuotedString("false_northing"); + formatter->add(0.0); + formatter->endNode(); + + const auto &axisList = d->coordinateSystem()->axisList(); + axisList[0]->unit()._exportToWKT(formatter); + d->coordinateSystem()->_exportToWKT(formatter); + derivingConversionRef()->addWKTExtensionNode(formatter); + ObjectUsage::baseExportToWKT(formatter); + formatter->endNode(); + return; + } + + formatter->startNode(isWKT2 ? io::WKTConstants::PROJCRS + : io::WKTConstants::PROJCS, + !identifiers().empty()); + auto l_name = nameStr(); + if (formatter->useESRIDialect()) { + bool aliasFound = false; + const auto &dbContext = formatter->databaseContext(); + if (dbContext) { + auto l_alias = dbContext->getAliasFromOfficialName( + l_name, "projected_crs", "ESRI"); + if (!l_alias.empty()) { + l_name = l_alias; + aliasFound = true; + } + } + if (!aliasFound) { + l_name = io::WKTFormatter::morphNameToESRI(l_name); + } + } + if (!isWKT2 && !formatter->useESRIDialect() && isDeprecated()) { + l_name += " (deprecated)"; + } + formatter->addQuotedString(l_name); + + const auto &l_baseCRS = d->baseCRS(); + const auto &geodeticCRSAxisList = l_baseCRS->coordinateSystem()->axisList(); + + if (isWKT2) { + formatter->startNode( + (formatter->use2018Keywords() && + dynamic_cast<const GeographicCRS *>(l_baseCRS.get())) + ? io::WKTConstants::BASEGEOGCRS + : io::WKTConstants::BASEGEODCRS, + !l_baseCRS->identifiers().empty()); + formatter->addQuotedString(l_baseCRS->nameStr()); + l_baseCRS->exportDatumOrDatumEnsembleToWkt(formatter); + // insert ellipsoidal cs unit when the units of the map + // projection angular parameters are not explicitly given within those + // parameters. See + // http://docs.opengeospatial.org/is/12-063r5/12-063r5.html#61 + if (formatter->primeMeridianOrParameterUnitOmittedIfSameAsAxis()) { + geodeticCRSAxisList[0]->unit()._exportToWKT(formatter); + } + l_baseCRS->primeMeridian()->_exportToWKT(formatter); + formatter->endNode(); + } else { + l_baseCRS->_exportToWKT(formatter); + } + + const auto &axisList = d->coordinateSystem()->axisList(); + formatter->pushAxisLinearUnit( + common::UnitOfMeasure::create(axisList[0]->unit())); + + formatter->pushAxisAngularUnit( + common::UnitOfMeasure::create(geodeticCRSAxisList[0]->unit())); + + derivingConversionRef()->_exportToWKT(formatter); + + formatter->popAxisAngularUnit(); + + formatter->popAxisLinearUnit(); + + if (!isWKT2) { + axisList[0]->unit()._exportToWKT(formatter); + } + + d->coordinateSystem()->_exportToWKT(formatter); + + if (!isWKT2 && !formatter->useESRIDialect()) { + derivingConversionRef()->addWKTExtensionNode(formatter); + } + + ObjectUsage::baseExportToWKT(formatter); + formatter->endNode(); + return; +} +//! @endcond + +// --------------------------------------------------------------------------- + +void ProjectedCRS::_exportToPROJString( + io::PROJStringFormatter *formatter) const // throw(io::FormattingException) +{ + baseExportToPROJString(formatter); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ProjectedCRS from a base CRS, a deriving + * operation::Conversion + * and a coordinate system. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param baseCRSIn The base CRS, a GeodeticCRS that is generally a + * GeographicCRS. + * @param derivingConversionIn The deriving operation::Conversion (typically + * using a map + * projection method) + * @param csIn The coordniate system. + * @return new ProjectedCRS. + */ +ProjectedCRSNNPtr +ProjectedCRS::create(const util::PropertyMap &properties, + const GeodeticCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::CartesianCSNNPtr &csIn) { + auto crs = ProjectedCRS::nn_make_shared<ProjectedCRS>( + baseCRSIn, derivingConversionIn, csIn); + crs->assignSelf(crs); + crs->setProperties(properties); + crs->setDerivingConversionCRS(); + return crs; +} + +// --------------------------------------------------------------------------- + +bool ProjectedCRS::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherProjCRS = dynamic_cast<const ProjectedCRS *>(other); + return otherProjCRS != nullptr && + DerivedCRS::_isEquivalentTo(other, criterion); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void ProjectedCRS::addUnitConvertAndAxisSwap(io::PROJStringFormatter *formatter, + bool axisSpecFound) const { + const auto &axisList = d->coordinateSystem()->axisList(); + const auto &unit = axisList[0]->unit(); + if (unit != common::UnitOfMeasure::METRE) { + auto projUnit = unit.exportToPROJString(); + const double toSI = unit.conversionToSI(); + if (formatter->convention() == + io::PROJStringFormatter::Convention::PROJ_5) { + formatter->addStep("unitconvert"); + formatter->addParam("xy_in", "m"); + formatter->addParam("z_in", "m"); + if (projUnit.empty()) { + formatter->addParam("xy_out", toSI); + formatter->addParam("z_out", toSI); + } else { + formatter->addParam("xy_out", projUnit); + formatter->addParam("z_out", projUnit); + } + } else { + if (projUnit.empty()) { + formatter->addParam("to_meter", toSI); + } else { + formatter->addParam("units", projUnit); + } + } + } + + if (formatter->convention() == + io::PROJStringFormatter::Convention::PROJ_5 && + !axisSpecFound) { + const auto &dir0 = axisList[0]->direction(); + const auto &dir1 = axisList[1]->direction(); + if (!(&dir0 == &cs::AxisDirection::EAST && + &dir1 == &cs::AxisDirection::NORTH) && + // For polar projections, that have south+south direction, + // we don't want to mess with axes. + dir0 != dir1) { + + const char *order[2] = {nullptr, nullptr}; + for (int i = 0; i < 2; i++) { + const auto &dir = axisList[i]->direction(); + if (&dir == &cs::AxisDirection::WEST) + order[i] = "-1"; + else if (&dir == &cs::AxisDirection::EAST) + order[i] = "1"; + else if (&dir == &cs::AxisDirection::SOUTH) + order[i] = "-2"; + else if (&dir == &cs::AxisDirection::NORTH) + order[i] = "2"; + } + + if (order[0] && order[1]) { + formatter->addStep("axisswap"); + char orderStr[10]; + strcpy(orderStr, order[0]); + strcat(orderStr, ","); + strcat(orderStr, order[1]); + formatter->addParam("order", orderStr); + } + } else { + const auto &name0 = axisList[0]->nameStr(); + const auto &name1 = axisList[1]->nameStr(); + const bool northingEasting = ci_starts_with(name0, "northing") && + ci_starts_with(name1, "easting"); + // case of EPSG:32661 ["WGS 84 / UPS North (N,E)]" + // case of EPSG:32761 ["WGS 84 / UPS South (N,E)]" + if (((&dir0 == &cs::AxisDirection::SOUTH && + &dir1 == &cs::AxisDirection::SOUTH) || + (&dir0 == &cs::AxisDirection::NORTH && + &dir1 == &cs::AxisDirection::NORTH)) && + northingEasting) { + formatter->addStep("axisswap"); + formatter->addParam("order", "2,1"); + } + } + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Identify the CRS with reference CRSs. + * + * The candidate CRSs are either hard-coded, or looked in the database when + * authorityFactory is not null. + * + * The method returns a list of matching reference CRS, and the percentage + * (0-100) of confidence in the match. + * 100% means that the name of the reference entry + * perfectly matches the CRS name, and both are equivalent. In which case a + * single result is returned. + * 90% means that CRS are equivalent, but the names are not exactly the same. + * 70% means that CRS are equivalent (equivalent base CRS, conversion and + * coordinate system), but the names do not match at all. + * 50% means that CRS have similarity (equivalent base CRS and conversion), + * but the coordinate system do not match (e.g. different axis ordering or + * axis unit). + * 25% means that the CRS are not equivalent, but there is some similarity in + * the names. + * + * For the purpose of this function, equivalence is tested with the + * util::IComparable::Criterion::EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS, that is + * to say that the axis order of the base GeographicCRS is ignored. + * + * @param authorityFactory Authority factory (or null, but degraded + * functionality) + * @return a list of matching reference CRS, and the percentage (0-100) of + * confidence in the match. + */ +std::list<std::pair<ProjectedCRSNNPtr, int>> +ProjectedCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const { + typedef std::pair<ProjectedCRSNNPtr, int> Pair; + std::list<Pair> res; + + const auto &thisName(nameStr()); + + std::list<std::pair<GeodeticCRSNNPtr, int>> baseRes; + const auto &l_baseCRS(baseCRS()); + auto geogCRS = dynamic_cast<const GeographicCRS *>(l_baseCRS.get()); + if (geogCRS && + geogCRS->coordinateSystem()->axisOrder() == + cs::EllipsoidalCS::AxisOrder::LONG_EAST_LAT_NORTH) { + baseRes = + GeographicCRS::create( + util::PropertyMap().set(common::IdentifiedObject::NAME_KEY, + geogCRS->nameStr()), + geogCRS->datum(), geogCRS->datumEnsemble(), + cs::EllipsoidalCS::createLatitudeLongitude( + geogCRS->coordinateSystem()->axisList()[0]->unit())) + ->identify(authorityFactory); + } else { + baseRes = l_baseCRS->identify(authorityFactory); + } + + int zone = 0; + bool north = false; + + auto computeConfidence = [&thisName](const std::string &crsName) { + return crsName == thisName ? 100 + : metadata::Identifier::isEquivalentName( + crsName.c_str(), thisName.c_str()) + ? 90 + : 70; + }; + auto computeUTMCRSName = [](const char *base, int l_zone, bool l_north) { + return base + toString(l_zone) + (l_north ? "N" : "S"); + }; + + const auto &conv = derivingConversionRef(); + const auto &cs = coordinateSystem(); + if (baseRes.size() == 1 && baseRes.front().second >= 70 && + conv->isUTM(zone, north) && + cs->_isEquivalentTo( + cs::CartesianCS::createEastingNorthing(common::UnitOfMeasure::METRE) + .get())) { + if (baseRes.front().first->_isEquivalentTo( + GeographicCRS::EPSG_4326.get(), + util::IComparable::Criterion::EQUIVALENT)) { + std::string crsName( + computeUTMCRSName("WGS 84 / UTM zone ", zone, north)); + res.emplace_back( + ProjectedCRS::create( + createMapNameEPSGCode(crsName.c_str(), + (north ? 32600 : 32700) + zone), + GeographicCRS::EPSG_4326, conv->identify(), cs), + computeConfidence(crsName)); + return res; + } else if (((zone >= 1 && zone <= 22) || zone == 59 || zone == 60) && + north && + baseRes.front().first->_isEquivalentTo( + GeographicCRS::EPSG_4267.get(), + util::IComparable::Criterion::EQUIVALENT)) { + std::string crsName( + computeUTMCRSName("NAD27 / UTM zone ", zone, north)); + res.emplace_back( + ProjectedCRS::create( + createMapNameEPSGCode(crsName.c_str(), + (zone >= 59) ? 3370 + zone - 59 + : 26700 + zone), + GeographicCRS::EPSG_4267, conv->identify(), cs), + computeConfidence(crsName)); + return res; + } else if (((zone >= 1 && zone <= 23) || zone == 59 || zone == 60) && + north && + baseRes.front().first->_isEquivalentTo( + GeographicCRS::EPSG_4269.get(), + util::IComparable::Criterion::EQUIVALENT)) { + std::string crsName( + computeUTMCRSName("NAD83 / UTM zone ", zone, north)); + res.emplace_back( + ProjectedCRS::create( + createMapNameEPSGCode(crsName.c_str(), + (zone >= 59) ? 3372 + zone - 59 + : 26900 + zone), + GeographicCRS::EPSG_4269, conv->identify(), cs), + computeConfidence(crsName)); + return res; + } + } + + if (authorityFactory) { + + const bool unsignificantName = thisName.empty() || + ci_equal(thisName, "unknown") || + ci_equal(thisName, "unnamed"); + bool foundEquivalentName = false; + + if (!identifiers().empty()) { + // If the CRS has already an id, check in the database for the + // official object, and verify that they are equivalent. + for (const auto &id : identifiers()) { + try { + auto crs = io::AuthorityFactory::create( + authorityFactory->databaseContext(), + *id->codeSpace()) + ->createProjectedCRS(id->code()); + bool match = _isEquivalentTo( + crs.get(), util::IComparable::Criterion::EQUIVALENT); + res.emplace_back(crs, match ? 100 : 25); + return res; + } catch (const std::exception &) { + } + } + } else if (!unsignificantName) { + for (int ipass = 0; ipass < 2; ipass++) { + const bool approximateMatch = ipass == 1; + auto objects = authorityFactory->createObjectsFromName( + thisName, {io::AuthorityFactory::ObjectType::PROJECTED_CRS}, + approximateMatch); + for (const auto &obj : objects) { + auto crs = util::nn_dynamic_pointer_cast<ProjectedCRS>(obj); + assert(crs); + auto crsNN = NN_NO_CHECK(crs); + const bool eqName = metadata::Identifier::isEquivalentName( + thisName.c_str(), crs->nameStr().c_str()); + foundEquivalentName |= eqName; + if (_isEquivalentTo( + crs.get(), + util::IComparable::Criterion::EQUIVALENT)) { + if (crs->nameStr() == thisName) { + res.clear(); + res.emplace_back(crsNN, 100); + return res; + } + res.emplace_back(crsNN, eqName ? 90 : 70); + } else { + res.emplace_back(crsNN, 25); + } + } + if (!res.empty()) { + break; + } + } + } + + const auto lambdaSort = [&thisName](const Pair &a, const Pair &b) { + // First consider confidence + if (a.second > b.second) { + return true; + } + if (a.second < b.second) { + return false; + } + + // Then consider exact name matching + const auto &aName(a.first->nameStr()); + const auto &bName(b.first->nameStr()); + if (aName == thisName && bName != thisName) { + return true; + } + if (bName == thisName && aName != thisName) { + return false; + } + + // Arbitrary final sorting criterion + return aName < bName; + }; + + // Sort results + res.sort(lambdaSort); + + if (identifiers().empty() && !foundEquivalentName && + (res.empty() || res.front().second < 50)) { + std::set<std::pair<std::string, std::string>> alreadyKnown; + for (const auto &pair : res) { + const auto &ids = pair.first->identifiers(); + assert(!ids.empty()); + alreadyKnown.insert(std::pair<std::string, std::string>( + *(ids[0]->codeSpace()), ids[0]->code())); + } + + auto self = NN_NO_CHECK(std::dynamic_pointer_cast<ProjectedCRS>( + shared_from_this().as_nullable())); + auto candidates = + authorityFactory->createProjectedCRSFromExisting(self); + const auto &ellipsoid = l_baseCRS->ellipsoid(); + for (const auto &crs : candidates) { + const auto &ids = crs->identifiers(); + assert(!ids.empty()); + if (alreadyKnown.find(std::pair<std::string, std::string>( + *(ids[0]->codeSpace()), ids[0]->code())) != + alreadyKnown.end()) { + continue; + } + + if (_isEquivalentTo(crs.get(), + util::IComparable::Criterion::EQUIVALENT)) { + res.emplace_back(crs, unsignificantName ? 90 : 70); + } else if (ellipsoid->_isEquivalentTo( + crs->baseCRS()->ellipsoid().get(), + util::IComparable::Criterion::EQUIVALENT) && + derivingConversionRef()->_isEquivalentTo( + crs->derivingConversionRef().get(), + util::IComparable::Criterion::EQUIVALENT)) { + if (coordinateSystem()->_isEquivalentTo( + crs->coordinateSystem().get(), + util::IComparable::Criterion::EQUIVALENT)) { + res.emplace_back(crs, 70); + } else { + res.emplace_back(crs, 50); + } + } else { + res.emplace_back(crs, 25); + } + } + + res.sort(lambdaSort); + } + + // Keep only results of the highest confidence + if (res.size() >= 2) { + const auto highestConfidence = res.front().second; + std::list<Pair> newRes; + for (const auto &pair : res) { + if (pair.second == highestConfidence) { + newRes.push_back(pair); + } else { + break; + } + } + return newRes; + } + } + + return res; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +std::list<std::pair<CRSNNPtr, int>> +ProjectedCRS::_identify(const io::AuthorityFactoryPtr &authorityFactory) const { + typedef std::pair<CRSNNPtr, int> Pair; + std::list<Pair> res; + auto resTemp = identify(authorityFactory); + for (const auto &pair : resTemp) { + res.emplace_back(pair.first, pair.second); + } + return res; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct CompoundCRS::Private { + std::vector<CRSNNPtr> components_{}; +}; +//! @endcond + +// --------------------------------------------------------------------------- + +CompoundCRS::CompoundCRS(const std::vector<CRSNNPtr> &components) + : CRS(), d(internal::make_unique<Private>()) { + d->components_ = components; +} + +// --------------------------------------------------------------------------- + +CompoundCRS::CompoundCRS(const CompoundCRS &other) + : CRS(other), d(internal::make_unique<Private>(*other.d)) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +CompoundCRS::~CompoundCRS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +CRSNNPtr CompoundCRS::_shallowClone() const { + auto crs(CompoundCRS::nn_make_shared<CompoundCRS>(*this)); + crs->assignSelf(crs); + return crs; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the components of a CompoundCRS. + * + * @return the components. + */ +const std::vector<CRSNNPtr> & +CompoundCRS::componentReferenceSystems() PROJ_CONST_DEFN { + return d->components_; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a CompoundCRS from a vector of CRS. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param components the component CRS of the CompoundCRS. + * @return new CompoundCRS. + */ +CompoundCRSNNPtr CompoundCRS::create(const util::PropertyMap &properties, + const std::vector<CRSNNPtr> &components) { + auto compoundCRS(CompoundCRS::nn_make_shared<CompoundCRS>(components)); + compoundCRS->assignSelf(compoundCRS); + compoundCRS->setProperties(properties); + if (properties.find(common::IdentifiedObject::NAME_KEY) == + properties.end()) { + std::string name; + for (const auto &crs : components) { + if (!name.empty()) { + name += " + "; + } + const auto &l_name = crs->nameStr(); + if (!l_name.empty()) { + name += l_name; + } else { + name += "unnamed"; + } + } + util::PropertyMap propertyName; + propertyName.set(common::IdentifiedObject::NAME_KEY, name); + compoundCRS->setProperties(propertyName); + } + + return compoundCRS; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void CompoundCRS::_exportToWKT(io::WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + formatter->startNode(isWKT2 ? io::WKTConstants::COMPOUNDCRS + : io::WKTConstants::COMPD_CS, + !identifiers().empty()); + formatter->addQuotedString(nameStr()); + for (const auto &crs : componentReferenceSystems()) { + crs->_exportToWKT(formatter); + } + ObjectUsage::baseExportToWKT(formatter); + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +void CompoundCRS::_exportToPROJString( + io::PROJStringFormatter *formatter) const // throw(io::FormattingException) +{ + for (const auto &crs : componentReferenceSystems()) { + auto crs_exportable = + dynamic_cast<const IPROJStringExportable *>(crs.get()); + if (crs_exportable) { + crs_exportable->_exportToPROJString(formatter); + } + } +} + +// --------------------------------------------------------------------------- + +bool CompoundCRS::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherCompoundCRS = dynamic_cast<const CompoundCRS *>(other); + if (otherCompoundCRS == nullptr || + (criterion == util::IComparable::Criterion::STRICT && + !ObjectUsage::_isEquivalentTo(other, criterion))) { + return false; + } + const auto &components = componentReferenceSystems(); + const auto &otherComponents = otherCompoundCRS->componentReferenceSystems(); + if (components.size() != otherComponents.size()) { + return false; + } + for (size_t i = 0; i < components.size(); i++) { + if (!components[i]->_isEquivalentTo(otherComponents[i].get(), + criterion)) { + return false; + } + } + return true; +} + +// --------------------------------------------------------------------------- + +/** \brief Identify the CRS with reference CRSs. + * + * The candidate CRSs are looked in the database when + * authorityFactory is not null. + * + * The method returns a list of matching reference CRS, and the percentage + * (0-100) of confidence in the match. + * 100% means that the name of the reference entry + * perfectly matches the CRS name, and both are equivalent. In which case a + * single result is returned. + * 90% means that CRS are equivalent, but the names are not exactly the same. + * 70% means that CRS are equivalent (equivalent horizontal and vertical CRS), + * but the names do not match at all. + * 25% means that the CRS are not equivalent, but there is some similarity in + * the names. + * + * @param authorityFactory Authority factory (if null, will return an empty + * list) + * @return a list of matching reference CRS, and the percentage (0-100) of + * confidence in the match. + */ +std::list<std::pair<CompoundCRSNNPtr, int>> +CompoundCRS::identify(const io::AuthorityFactoryPtr &authorityFactory) const { + typedef std::pair<CompoundCRSNNPtr, int> Pair; + std::list<Pair> res; + + const auto &thisName(nameStr()); + + if (authorityFactory) { + + const bool unsignificantName = thisName.empty() || + ci_equal(thisName, "unknown") || + ci_equal(thisName, "unnamed"); + bool foundEquivalentName = false; + + if (!identifiers().empty()) { + // If the CRS has already an id, check in the database for the + // official object, and verify that they are equivalent. + for (const auto &id : identifiers()) { + try { + auto crs = io::AuthorityFactory::create( + authorityFactory->databaseContext(), + *id->codeSpace()) + ->createCompoundCRS(id->code()); + bool match = _isEquivalentTo( + crs.get(), util::IComparable::Criterion::EQUIVALENT); + res.emplace_back(crs, match ? 100 : 25); + return res; + } catch (const std::exception &) { + } + } + } else if (!unsignificantName) { + for (int ipass = 0; ipass < 2; ipass++) { + const bool approximateMatch = ipass == 1; + auto objects = authorityFactory->createObjectsFromName( + thisName, {io::AuthorityFactory::ObjectType::COMPOUND_CRS}, + approximateMatch); + for (const auto &obj : objects) { + auto crs = util::nn_dynamic_pointer_cast<CompoundCRS>(obj); + assert(crs); + auto crsNN = NN_NO_CHECK(crs); + const bool eqName = metadata::Identifier::isEquivalentName( + thisName.c_str(), crs->nameStr().c_str()); + foundEquivalentName |= eqName; + if (_isEquivalentTo( + crs.get(), + util::IComparable::Criterion::EQUIVALENT)) { + if (crs->nameStr() == thisName) { + res.clear(); + res.emplace_back(crsNN, 100); + return res; + } + res.emplace_back(crsNN, eqName ? 90 : 70); + } else { + res.emplace_back(crsNN, 25); + } + } + if (!res.empty()) { + break; + } + } + } + + const auto lambdaSort = [&thisName](const Pair &a, const Pair &b) { + // First consider confidence + if (a.second > b.second) { + return true; + } + if (a.second < b.second) { + return false; + } + + // Then consider exact name matching + const auto &aName(a.first->nameStr()); + const auto &bName(b.first->nameStr()); + if (aName == thisName && bName != thisName) { + return true; + } + if (bName == thisName && aName != thisName) { + return false; + } + + // Arbitrary final sorting criterion + return aName < bName; + }; + + // Sort results + res.sort(lambdaSort); + + if (identifiers().empty() && !foundEquivalentName && + (res.empty() || res.front().second < 50)) { + std::set<std::pair<std::string, std::string>> alreadyKnown; + for (const auto &pair : res) { + const auto &ids = pair.first->identifiers(); + assert(!ids.empty()); + alreadyKnown.insert(std::pair<std::string, std::string>( + *(ids[0]->codeSpace()), ids[0]->code())); + } + + auto self = NN_NO_CHECK(std::dynamic_pointer_cast<CompoundCRS>( + shared_from_this().as_nullable())); + auto candidates = + authorityFactory->createCompoundCRSFromExisting(self); + for (const auto &crs : candidates) { + const auto &ids = crs->identifiers(); + assert(!ids.empty()); + if (alreadyKnown.find(std::pair<std::string, std::string>( + *(ids[0]->codeSpace()), ids[0]->code())) != + alreadyKnown.end()) { + continue; + } + + if (_isEquivalentTo(crs.get(), + util::IComparable::Criterion::EQUIVALENT)) { + res.emplace_back(crs, unsignificantName ? 90 : 70); + } else { + res.emplace_back(crs, 25); + } + } + + res.sort(lambdaSort); + } + + // Keep only results of the highest confidence + if (res.size() >= 2) { + const auto highestConfidence = res.front().second; + std::list<Pair> newRes; + for (const auto &pair : res) { + if (pair.second == highestConfidence) { + newRes.push_back(pair); + } else { + break; + } + } + return newRes; + } + } + + return res; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +std::list<std::pair<CRSNNPtr, int>> +CompoundCRS::_identify(const io::AuthorityFactoryPtr &authorityFactory) const { + typedef std::pair<CRSNNPtr, int> Pair; + std::list<Pair> res; + auto resTemp = identify(authorityFactory); + for (const auto &pair : resTemp) { + res.emplace_back(pair.first, pair.second); + } + return res; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct PROJ_INTERNAL BoundCRS::Private { + CRSNNPtr baseCRS_; + CRSNNPtr hubCRS_; + operation::TransformationNNPtr transformation_; + + Private(const CRSNNPtr &baseCRSIn, const CRSNNPtr &hubCRSIn, + const operation::TransformationNNPtr &transformationIn); + + inline const CRSNNPtr &baseCRS() const { return baseCRS_; } + inline const CRSNNPtr &hubCRS() const { return hubCRS_; } + inline const operation::TransformationNNPtr &transformation() const { + return transformation_; + } +}; + +BoundCRS::Private::Private( + const CRSNNPtr &baseCRSIn, const CRSNNPtr &hubCRSIn, + const operation::TransformationNNPtr &transformationIn) + : baseCRS_(baseCRSIn), hubCRS_(hubCRSIn), + transformation_(transformationIn) {} + +//! @endcond + +// --------------------------------------------------------------------------- + +BoundCRS::BoundCRS(const CRSNNPtr &baseCRSIn, const CRSNNPtr &hubCRSIn, + const operation::TransformationNNPtr &transformationIn) + : d(internal::make_unique<Private>(baseCRSIn, hubCRSIn, transformationIn)) { +} + +// --------------------------------------------------------------------------- + +BoundCRS::BoundCRS(const BoundCRS &other) + : CRS(other), + d(internal::make_unique<Private>(other.d->baseCRS(), other.d->hubCRS(), + other.d->transformation())) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +BoundCRS::~BoundCRS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +BoundCRSNNPtr BoundCRS::shallowCloneAsBoundCRS() const { + auto crs(BoundCRS::nn_make_shared<BoundCRS>(*this)); + crs->assignSelf(crs); + return crs; +} + +// --------------------------------------------------------------------------- + +CRSNNPtr BoundCRS::_shallowClone() const { return shallowCloneAsBoundCRS(); } + +// --------------------------------------------------------------------------- + +/** \brief Return the base CRS. + * + * This is the CRS into which coordinates of the BoundCRS are expressed. + * + * @return the base CRS. + */ +const CRSNNPtr &BoundCRS::baseCRS() PROJ_CONST_DEFN { return d->baseCRS_; } + +// --------------------------------------------------------------------------- + +// The only legit caller is BoundCRS::baseCRSWithCanonicalBoundCRS() +void CRS::setCanonicalBoundCRS(const BoundCRSNNPtr &boundCRS) { + + d->canonicalBoundCRS_ = boundCRS; +} + +// --------------------------------------------------------------------------- + +/** \brief Return a shallow clone of the base CRS that points to a + * shallow clone of this BoundCRS. + * + * The base CRS is the CRS into which coordinates of the BoundCRS are expressed. + * + * The returned CRS will actually be a shallow clone of the actual base CRS, + * with the extra property that CRS::canonicalBoundCRS() will point to a + * shallow clone of this BoundCRS. Use this only if you want to work with + * the base CRS object rather than the BoundCRS, but wanting to be able to + * retrieve the BoundCRS later. + * + * @return the base CRS. + */ +CRSNNPtr BoundCRS::baseCRSWithCanonicalBoundCRS() const { + auto baseCRSClone = baseCRS()->_shallowClone(); + baseCRSClone->setCanonicalBoundCRS(shallowCloneAsBoundCRS()); + return baseCRSClone; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the target / hub CRS. + * + * @return the hub CRS. + */ +const CRSNNPtr &BoundCRS::hubCRS() PROJ_CONST_DEFN { return d->hubCRS_; } + +// --------------------------------------------------------------------------- + +/** \brief Return the transformation to the hub RS. + * + * @return transformation. + */ +const operation::TransformationNNPtr & +BoundCRS::transformation() PROJ_CONST_DEFN { + return d->transformation_; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a BoundCRS from a base CRS, a hub CRS and a + * transformation. + * + * @param baseCRSIn base CRS. + * @param hubCRSIn hub CRS. + * @param transformationIn transformation from base CRS to hub CRS. + * @return new BoundCRS. + */ +BoundCRSNNPtr +BoundCRS::create(const CRSNNPtr &baseCRSIn, const CRSNNPtr &hubCRSIn, + const operation::TransformationNNPtr &transformationIn) { + auto crs = BoundCRS::nn_make_shared<BoundCRS>(baseCRSIn, hubCRSIn, + transformationIn); + crs->assignSelf(crs); + const auto &l_name = baseCRSIn->nameStr(); + if (!l_name.empty()) { + crs->setProperties(util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, l_name)); + } + return crs; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a BoundCRS from a base CRS and TOWGS84 parameters + * + * @param baseCRSIn base CRS. + * @param TOWGS84Parameters a vector of 3 or 7 double values representing WKT1 + * TOWGS84 parameter. + * @return new BoundCRS. + */ +BoundCRSNNPtr +BoundCRS::createFromTOWGS84(const CRSNNPtr &baseCRSIn, + const std::vector<double> &TOWGS84Parameters) { + return create( + baseCRSIn, GeographicCRS::EPSG_4326, + operation::Transformation::createTOWGS84(baseCRSIn, TOWGS84Parameters)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a BoundCRS from a base CRS and nadgrids parameters + * + * @param baseCRSIn base CRS. + * @param filename Horizontal grid filename + * @return new BoundCRS. + */ +BoundCRSNNPtr BoundCRS::createFromNadgrids(const CRSNNPtr &baseCRSIn, + const std::string &filename) { + const CRSPtr sourceGeographicCRS = baseCRSIn->extractGeographicCRS(); + auto transformationSourceCRS = + sourceGeographicCRS ? sourceGeographicCRS : baseCRSIn.as_nullable(); + std::string transformationName = transformationSourceCRS->nameStr(); + transformationName += " to WGS84"; + + return create( + baseCRSIn, GeographicCRS::EPSG_4326, + operation::Transformation::createNTv2( + util::PropertyMap().set(common::IdentifiedObject::NAME_KEY, + transformationName), + baseCRSIn, GeographicCRS::EPSG_4326, filename, + std::vector<metadata::PositionalAccuracyNNPtr>())); +} + +// --------------------------------------------------------------------------- + +bool BoundCRS::isTOWGS84Compatible() const { + return dynamic_cast<GeodeticCRS *>(d->hubCRS().get()) != nullptr && + ci_equal(d->hubCRS()->nameStr(), "WGS 84"); +} + +// --------------------------------------------------------------------------- + +std::string BoundCRS::getHDatumPROJ4GRIDS() const { + if (ci_equal(d->hubCRS()->nameStr(), "WGS 84")) { + return d->transformation()->getNTv2Filename(); + } + return std::string(); +} + +// --------------------------------------------------------------------------- + +std::string BoundCRS::getVDatumPROJ4GRIDS() const { + if (dynamic_cast<VerticalCRS *>(d->baseCRS().get()) && + ci_equal(d->hubCRS()->nameStr(), "WGS 84")) { + return d->transformation()->getHeightToGeographic3DFilename(); + } + return std::string(); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void BoundCRS::_exportToWKT(io::WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + if (isWKT2) { + formatter->startNode(io::WKTConstants::BOUNDCRS, false); + formatter->startNode(io::WKTConstants::SOURCECRS, false); + d->baseCRS()->_exportToWKT(formatter); + formatter->endNode(); + formatter->startNode(io::WKTConstants::TARGETCRS, false); + d->hubCRS()->_exportToWKT(formatter); + formatter->endNode(); + formatter->setAbridgedTransformation(true); + d->transformation()->_exportToWKT(formatter); + formatter->setAbridgedTransformation(false); + formatter->endNode(); + } else { + + auto vdatumProj4GridName = getVDatumPROJ4GRIDS(); + if (!vdatumProj4GridName.empty()) { + formatter->setVDatumExtension(vdatumProj4GridName); + d->baseCRS()->_exportToWKT(formatter); + formatter->setVDatumExtension(std::string()); + return; + } + + auto hdatumProj4GridName = getHDatumPROJ4GRIDS(); + if (!hdatumProj4GridName.empty()) { + formatter->setHDatumExtension(hdatumProj4GridName); + d->baseCRS()->_exportToWKT(formatter); + formatter->setHDatumExtension(std::string()); + return; + } + + if (!isTOWGS84Compatible()) { + io::FormattingException::Throw( + "Cannot export BoundCRS with non-WGS 84 hub CRS in WKT1"); + } + auto params = d->transformation()->getTOWGS84Parameters(); + if (!formatter->useESRIDialect()) { + formatter->setTOWGS84Parameters(params); + } + d->baseCRS()->_exportToWKT(formatter); + formatter->setTOWGS84Parameters(std::vector<double>()); + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +void BoundCRS::_exportToPROJString( + io::PROJStringFormatter *formatter) const // throw(io::FormattingException) +{ + if (formatter->convention() == + io::PROJStringFormatter::Convention::PROJ_5) { + io::FormattingException::Throw( + "BoundCRS cannot be exported as a PROJ.5 string, but its baseCRS " + "might"); + } + + auto crs_exportable = + dynamic_cast<const io::IPROJStringExportable *>(d->baseCRS_.get()); + if (!crs_exportable) { + io::FormattingException::Throw( + "baseCRS of BoundCRS cannot be exported as a PROJ string"); + } + + auto vdatumProj4GridName = getVDatumPROJ4GRIDS(); + if (!vdatumProj4GridName.empty()) { + formatter->setVDatumExtension(vdatumProj4GridName); + crs_exportable->_exportToPROJString(formatter); + formatter->setVDatumExtension(std::string()); + } else { + auto hdatumProj4GridName = getHDatumPROJ4GRIDS(); + if (!hdatumProj4GridName.empty()) { + formatter->setHDatumExtension(hdatumProj4GridName); + crs_exportable->_exportToPROJString(formatter); + formatter->setHDatumExtension(std::string()); + } else { + if (isTOWGS84Compatible()) { + auto params = transformation()->getTOWGS84Parameters(); + formatter->setTOWGS84Parameters(params); + } + crs_exportable->_exportToPROJString(formatter); + formatter->setTOWGS84Parameters(std::vector<double>()); + } + } +} + +// --------------------------------------------------------------------------- + +bool BoundCRS::_isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherBoundCRS = dynamic_cast<const BoundCRS *>(other); + if (otherBoundCRS == nullptr || + (criterion == util::IComparable::Criterion::STRICT && + !ObjectUsage::_isEquivalentTo(other, criterion))) { + return false; + } + return d->baseCRS_->_isEquivalentTo(otherBoundCRS->d->baseCRS_.get(), + criterion) && + d->hubCRS_->_isEquivalentTo(otherBoundCRS->d->hubCRS_.get(), + criterion) && + d->transformation_->_isEquivalentTo( + otherBoundCRS->d->transformation_.get(), criterion); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +std::list<std::pair<CRSNNPtr, int>> +BoundCRS::_identify(const io::AuthorityFactoryPtr &authorityFactory) const { + typedef std::pair<CRSNNPtr, int> Pair; + std::list<Pair> res; + if (authorityFactory && + d->hubCRS_->_isEquivalentTo(GeographicCRS::EPSG_4326.get(), + util::IComparable::Criterion::EQUIVALENT)) { + auto resTemp = d->baseCRS_->identify(authorityFactory); + for (const auto &pair : resTemp) { + const auto &candidateBaseCRS = pair.first; + auto projCRS = + dynamic_cast<const ProjectedCRS *>(candidateBaseCRS.get()); + auto geodCRS = projCRS ? projCRS->baseCRS().as_nullable() + : util::nn_dynamic_pointer_cast<GeodeticCRS>( + candidateBaseCRS); + if (geodCRS) { + auto context = operation::CoordinateOperationContext::create( + authorityFactory, nullptr, 0.0); + auto ops = + operation::CoordinateOperationFactory::create() + ->createOperations(NN_NO_CHECK(geodCRS), + GeographicCRS::EPSG_4326, context); + std::string refTransfPROJString; + bool refTransfPROJStringValid = false; + try { + refTransfPROJString = + d->transformation_->exportToPROJString( + io::PROJStringFormatter::create().get()); + refTransfPROJStringValid = true; + if (refTransfPROJString == "+proj=axisswap +order=2,1") { + refTransfPROJString.clear(); + } + } catch (const std::exception &) { + } + for (const auto &op : ops) { + std::string opTransfPROJString; + bool opTransfPROJStringValid = false; + try { + opTransfPROJString = op->exportToPROJString( + io::PROJStringFormatter::create().get()); + opTransfPROJStringValid = true; + } catch (const std::exception &) { + } + if ((refTransfPROJStringValid && opTransfPROJStringValid && + refTransfPROJString == opTransfPROJString) || + op->_isEquivalentTo( + d->transformation_.get(), + util::IComparable::Criterion::EQUIVALENT)) { + res.emplace_back( + create(candidateBaseCRS, d->hubCRS_, + NN_NO_CHECK(util::nn_dynamic_pointer_cast< + operation::Transformation>(op))), + pair.second); + break; + } + } + } + } + } + return res; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct DerivedGeodeticCRS::Private {}; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +DerivedGeodeticCRS::~DerivedGeodeticCRS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +DerivedGeodeticCRS::DerivedGeodeticCRS( + const GeodeticCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::CartesianCSNNPtr &csIn) + : SingleCRS(baseCRSIn->datum(), baseCRSIn->datumEnsemble(), csIn), + GeodeticCRS(baseCRSIn->datum(), baseCRSIn->datumEnsemble(), csIn), + DerivedCRS(baseCRSIn, derivingConversionIn, csIn), d(nullptr) {} + +// --------------------------------------------------------------------------- + +DerivedGeodeticCRS::DerivedGeodeticCRS( + const GeodeticCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::SphericalCSNNPtr &csIn) + : SingleCRS(baseCRSIn->datum(), baseCRSIn->datumEnsemble(), csIn), + GeodeticCRS(baseCRSIn->datum(), baseCRSIn->datumEnsemble(), csIn), + DerivedCRS(baseCRSIn, derivingConversionIn, csIn), d(nullptr) {} + +// --------------------------------------------------------------------------- + +DerivedGeodeticCRS::DerivedGeodeticCRS(const DerivedGeodeticCRS &other) + : SingleCRS(other), GeodeticCRS(other), DerivedCRS(other), d(nullptr) {} + +// --------------------------------------------------------------------------- + +CRSNNPtr DerivedGeodeticCRS::_shallowClone() const { + auto crs(DerivedGeodeticCRS::nn_make_shared<DerivedGeodeticCRS>(*this)); + crs->assignSelf(crs); + crs->setDerivingConversionCRS(); + return crs; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the base CRS (a GeodeticCRS) of a DerivedGeodeticCRS. + * + * @return the base CRS. + */ +const GeodeticCRSNNPtr DerivedGeodeticCRS::baseCRS() const { + return NN_NO_CHECK(util::nn_dynamic_pointer_cast<GeodeticCRS>( + DerivedCRS::getPrivate()->baseCRS_)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a DerivedGeodeticCRS from a base CRS, a deriving + * conversion and a cs::CartesianCS. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param baseCRSIn base CRS. + * @param derivingConversionIn the deriving conversion from the base CRS to this + * CRS. + * @param csIn the coordinate system. + * @return new DerivedGeodeticCRS. + */ +DerivedGeodeticCRSNNPtr DerivedGeodeticCRS::create( + const util::PropertyMap &properties, const GeodeticCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::CartesianCSNNPtr &csIn) { + auto crs(DerivedGeodeticCRS::nn_make_shared<DerivedGeodeticCRS>( + baseCRSIn, derivingConversionIn, csIn)); + crs->assignSelf(crs); + crs->setProperties(properties); + crs->setDerivingConversionCRS(); + return crs; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a DerivedGeodeticCRS from a base CRS, a deriving + * conversion and a cs::SphericalCS. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param baseCRSIn base CRS. + * @param derivingConversionIn the deriving conversion from the base CRS to this + * CRS. + * @param csIn the coordinate system. + * @return new DerivedGeodeticCRS. + */ +DerivedGeodeticCRSNNPtr DerivedGeodeticCRS::create( + const util::PropertyMap &properties, const GeodeticCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::SphericalCSNNPtr &csIn) { + auto crs(DerivedGeodeticCRS::nn_make_shared<DerivedGeodeticCRS>( + baseCRSIn, derivingConversionIn, csIn)); + crs->assignSelf(crs); + crs->setProperties(properties); + crs->setDerivingConversionCRS(); + return crs; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void DerivedGeodeticCRS::_exportToWKT(io::WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + if (!isWKT2) { + io::FormattingException::Throw( + "DerivedGeodeticCRS can only be exported to WKT2"); + } + formatter->startNode(io::WKTConstants::GEODCRS, !identifiers().empty()); + formatter->addQuotedString(nameStr()); + + auto l_baseCRS = baseCRS(); + formatter->startNode((formatter->use2018Keywords() && + dynamic_cast<const GeographicCRS *>(l_baseCRS.get())) + ? io::WKTConstants::BASEGEOGCRS + : io::WKTConstants::BASEGEODCRS, + !baseCRS()->identifiers().empty()); + formatter->addQuotedString(l_baseCRS->nameStr()); + auto l_datum = l_baseCRS->datum(); + if (l_datum) { + l_datum->_exportToWKT(formatter); + } else { + auto l_datumEnsemble = datumEnsemble(); + assert(l_datumEnsemble); + l_datumEnsemble->_exportToWKT(formatter); + } + l_baseCRS->primeMeridian()->_exportToWKT(formatter); + formatter->endNode(); + + formatter->setUseDerivingConversion(true); + derivingConversionRef()->_exportToWKT(formatter); + formatter->setUseDerivingConversion(false); + + coordinateSystem()->_exportToWKT(formatter); + ObjectUsage::baseExportToWKT(formatter); + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +void DerivedGeodeticCRS::_exportToPROJString( + io::PROJStringFormatter *formatter) const // throw(io::FormattingException) +{ + baseExportToPROJString(formatter); +} + +// --------------------------------------------------------------------------- + +bool DerivedGeodeticCRS::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherDerivedCRS = dynamic_cast<const DerivedGeodeticCRS *>(other); + return otherDerivedCRS != nullptr && + DerivedCRS::_isEquivalentTo(other, criterion); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +std::list<std::pair<CRSNNPtr, int>> +DerivedGeodeticCRS::_identify(const io::AuthorityFactoryPtr &factory) const { + return CRS::_identify(factory); +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct DerivedGeographicCRS::Private {}; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +DerivedGeographicCRS::~DerivedGeographicCRS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +DerivedGeographicCRS::DerivedGeographicCRS( + const GeodeticCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::EllipsoidalCSNNPtr &csIn) + : SingleCRS(baseCRSIn->datum(), baseCRSIn->datumEnsemble(), csIn), + GeographicCRS(baseCRSIn->datum(), baseCRSIn->datumEnsemble(), csIn), + DerivedCRS(baseCRSIn, derivingConversionIn, csIn), d(nullptr) {} + +// --------------------------------------------------------------------------- + +DerivedGeographicCRS::DerivedGeographicCRS(const DerivedGeographicCRS &other) + : SingleCRS(other), GeographicCRS(other), DerivedCRS(other), d(nullptr) {} + +// --------------------------------------------------------------------------- + +CRSNNPtr DerivedGeographicCRS::_shallowClone() const { + auto crs(DerivedGeographicCRS::nn_make_shared<DerivedGeographicCRS>(*this)); + crs->assignSelf(crs); + crs->setDerivingConversionCRS(); + return crs; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the base CRS (a GeodeticCRS) of a DerivedGeographicCRS. + * + * @return the base CRS. + */ +const GeodeticCRSNNPtr DerivedGeographicCRS::baseCRS() const { + return NN_NO_CHECK(util::nn_dynamic_pointer_cast<GeodeticCRS>( + DerivedCRS::getPrivate()->baseCRS_)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a DerivedGeographicCRS from a base CRS, a deriving + * conversion and a cs::EllipsoidalCS. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param baseCRSIn base CRS. + * @param derivingConversionIn the deriving conversion from the base CRS to this + * CRS. + * @param csIn the coordinate system. + * @return new DerivedGeographicCRS. + */ +DerivedGeographicCRSNNPtr DerivedGeographicCRS::create( + const util::PropertyMap &properties, const GeodeticCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::EllipsoidalCSNNPtr &csIn) { + auto crs(DerivedGeographicCRS::nn_make_shared<DerivedGeographicCRS>( + baseCRSIn, derivingConversionIn, csIn)); + crs->assignSelf(crs); + crs->setProperties(properties); + crs->setDerivingConversionCRS(); + return crs; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void DerivedGeographicCRS::_exportToWKT(io::WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + if (!isWKT2) { + io::FormattingException::Throw( + "DerivedGeographicCRS can only be exported to WKT2"); + } + formatter->startNode(formatter->use2018Keywords() + ? io::WKTConstants::GEOGCRS + : io::WKTConstants::GEODCRS, + !identifiers().empty()); + formatter->addQuotedString(nameStr()); + + auto l_baseCRS = baseCRS(); + formatter->startNode((formatter->use2018Keywords() && + dynamic_cast<const GeographicCRS *>(l_baseCRS.get())) + ? io::WKTConstants::BASEGEOGCRS + : io::WKTConstants::BASEGEODCRS, + !l_baseCRS->identifiers().empty()); + formatter->addQuotedString(l_baseCRS->nameStr()); + l_baseCRS->exportDatumOrDatumEnsembleToWkt(formatter); + l_baseCRS->primeMeridian()->_exportToWKT(formatter); + formatter->endNode(); + + formatter->setUseDerivingConversion(true); + derivingConversionRef()->_exportToWKT(formatter); + formatter->setUseDerivingConversion(false); + + coordinateSystem()->_exportToWKT(formatter); + ObjectUsage::baseExportToWKT(formatter); + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +void DerivedGeographicCRS::_exportToPROJString( + io::PROJStringFormatter *formatter) const // throw(io::FormattingException) +{ + baseExportToPROJString(formatter); +} + +// --------------------------------------------------------------------------- + +bool DerivedGeographicCRS::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherDerivedCRS = dynamic_cast<const DerivedGeographicCRS *>(other); + return otherDerivedCRS != nullptr && + DerivedCRS::_isEquivalentTo(other, criterion); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +std::list<std::pair<CRSNNPtr, int>> +DerivedGeographicCRS::_identify(const io::AuthorityFactoryPtr &factory) const { + return CRS::_identify(factory); +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct DerivedProjectedCRS::Private {}; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +DerivedProjectedCRS::~DerivedProjectedCRS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +DerivedProjectedCRS::DerivedProjectedCRS( + const ProjectedCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::CoordinateSystemNNPtr &csIn) + : SingleCRS(baseCRSIn->datum(), baseCRSIn->datumEnsemble(), csIn), + DerivedCRS(baseCRSIn, derivingConversionIn, csIn), d(nullptr) {} + +// --------------------------------------------------------------------------- + +DerivedProjectedCRS::DerivedProjectedCRS(const DerivedProjectedCRS &other) + : SingleCRS(other), DerivedCRS(other), d(nullptr) {} + +// --------------------------------------------------------------------------- + +CRSNNPtr DerivedProjectedCRS::_shallowClone() const { + auto crs(DerivedProjectedCRS::nn_make_shared<DerivedProjectedCRS>(*this)); + crs->assignSelf(crs); + crs->setDerivingConversionCRS(); + return crs; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the base CRS (a ProjectedCRS) of a DerivedProjectedCRS. + * + * @return the base CRS. + */ +const ProjectedCRSNNPtr DerivedProjectedCRS::baseCRS() const { + return NN_NO_CHECK(util::nn_dynamic_pointer_cast<ProjectedCRS>( + DerivedCRS::getPrivate()->baseCRS_)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a DerivedProjectedCRS from a base CRS, a deriving + * conversion and a cs::CS. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param baseCRSIn base CRS. + * @param derivingConversionIn the deriving conversion from the base CRS to this + * CRS. + * @param csIn the coordinate system. + * @return new DerivedProjectedCRS. + */ +DerivedProjectedCRSNNPtr DerivedProjectedCRS::create( + const util::PropertyMap &properties, const ProjectedCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::CoordinateSystemNNPtr &csIn) { + auto crs(DerivedProjectedCRS::nn_make_shared<DerivedProjectedCRS>( + baseCRSIn, derivingConversionIn, csIn)); + crs->assignSelf(crs); + crs->setProperties(properties); + crs->setDerivingConversionCRS(); + return crs; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void DerivedProjectedCRS::_exportToWKT(io::WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + if (!isWKT2 || !formatter->use2018Keywords()) { + io::FormattingException::Throw( + "DerivedProjectedCRS can only be exported to WKT2:2018"); + } + formatter->startNode(io::WKTConstants::DERIVEDPROJCRS, + !identifiers().empty()); + formatter->addQuotedString(nameStr()); + + { + auto l_baseProjCRS = baseCRS(); + formatter->startNode(io::WKTConstants::BASEPROJCRS, + !l_baseProjCRS->identifiers().empty()); + formatter->addQuotedString(l_baseProjCRS->nameStr()); + + auto l_baseGeodCRS = l_baseProjCRS->baseCRS(); + auto &geodeticCRSAxisList = + l_baseGeodCRS->coordinateSystem()->axisList(); + + formatter->startNode( + dynamic_cast<const GeographicCRS *>(l_baseGeodCRS.get()) + ? io::WKTConstants::BASEGEOGCRS + : io::WKTConstants::BASEGEODCRS, + !l_baseGeodCRS->identifiers().empty()); + formatter->addQuotedString(l_baseGeodCRS->nameStr()); + l_baseGeodCRS->exportDatumOrDatumEnsembleToWkt(formatter); + // insert ellipsoidal cs unit when the units of the map + // projection angular parameters are not explicitly given within those + // parameters. See + // http://docs.opengeospatial.org/is/12-063r5/12-063r5.html#61 + if (formatter->primeMeridianOrParameterUnitOmittedIfSameAsAxis() && + !geodeticCRSAxisList.empty()) { + geodeticCRSAxisList[0]->unit()._exportToWKT(formatter); + } + l_baseGeodCRS->primeMeridian()->_exportToWKT(formatter); + formatter->endNode(); + + l_baseProjCRS->derivingConversionRef()->_exportToWKT(formatter); + formatter->endNode(); + } + + formatter->setUseDerivingConversion(true); + derivingConversionRef()->_exportToWKT(formatter); + formatter->setUseDerivingConversion(false); + + coordinateSystem()->_exportToWKT(formatter); + ObjectUsage::baseExportToWKT(formatter); + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +void DerivedProjectedCRS::_exportToPROJString( + io::PROJStringFormatter *formatter) const // throw(io::FormattingException) +{ + baseExportToPROJString(formatter); +} + +// --------------------------------------------------------------------------- + +bool DerivedProjectedCRS::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherDerivedCRS = dynamic_cast<const DerivedProjectedCRS *>(other); + return otherDerivedCRS != nullptr && + DerivedCRS::_isEquivalentTo(other, criterion); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct TemporalCRS::Private {}; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +TemporalCRS::~TemporalCRS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +TemporalCRS::TemporalCRS(const datum::TemporalDatumNNPtr &datumIn, + const cs::TemporalCSNNPtr &csIn) + : SingleCRS(datumIn.as_nullable(), nullptr, csIn), d(nullptr) {} + +// --------------------------------------------------------------------------- + +TemporalCRS::TemporalCRS(const TemporalCRS &other) + : SingleCRS(other), d(nullptr) {} + +// --------------------------------------------------------------------------- + +CRSNNPtr TemporalCRS::_shallowClone() const { + auto crs(TemporalCRS::nn_make_shared<TemporalCRS>(*this)); + crs->assignSelf(crs); + return crs; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the datum::TemporalDatum associated with the CRS. + * + * @return a TemporalDatum + */ +const datum::TemporalDatumNNPtr TemporalCRS::datum() const { + return NN_NO_CHECK(std::static_pointer_cast<datum::TemporalDatum>( + SingleCRS::getPrivate()->datum)); +} + +// --------------------------------------------------------------------------- + +/** \brief Return the cs::TemporalCS associated with the CRS. + * + * @return a TemporalCS + */ +const cs::TemporalCSNNPtr TemporalCRS::coordinateSystem() const { + return util::nn_static_pointer_cast<cs::TemporalCS>( + SingleCRS::getPrivate()->coordinateSystem); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a TemporalCRS from a datum and a coordinate system. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param datumIn the datum. + * @param csIn the coordinate system. + * @return new TemporalCRS. + */ +TemporalCRSNNPtr TemporalCRS::create(const util::PropertyMap &properties, + const datum::TemporalDatumNNPtr &datumIn, + const cs::TemporalCSNNPtr &csIn) { + auto crs(TemporalCRS::nn_make_shared<TemporalCRS>(datumIn, csIn)); + crs->assignSelf(crs); + crs->setProperties(properties); + return crs; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void TemporalCRS::_exportToWKT(io::WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + if (!isWKT2) { + io::FormattingException::Throw( + "TemporalCRS can only be exported to WKT2"); + } + formatter->startNode(io::WKTConstants::TIMECRS, !identifiers().empty()); + formatter->addQuotedString(nameStr()); + datum()->_exportToWKT(formatter); + coordinateSystem()->_exportToWKT(formatter); + ObjectUsage::baseExportToWKT(formatter); + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +bool TemporalCRS::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherTemporalCRS = dynamic_cast<const TemporalCRS *>(other); + return otherTemporalCRS != nullptr && + SingleCRS::baseIsEquivalentTo(other, criterion); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct EngineeringCRS::Private {}; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +EngineeringCRS::~EngineeringCRS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +EngineeringCRS::EngineeringCRS(const datum::EngineeringDatumNNPtr &datumIn, + const cs::CoordinateSystemNNPtr &csIn) + : SingleCRS(datumIn.as_nullable(), nullptr, csIn), d(nullptr) {} + +// --------------------------------------------------------------------------- + +EngineeringCRS::EngineeringCRS(const EngineeringCRS &other) + : SingleCRS(other), d(nullptr) {} + +// --------------------------------------------------------------------------- + +CRSNNPtr EngineeringCRS::_shallowClone() const { + auto crs(EngineeringCRS::nn_make_shared<EngineeringCRS>(*this)); + crs->assignSelf(crs); + return crs; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the datum::EngineeringDatum associated with the CRS. + * + * @return a EngineeringDatum + */ +const datum::EngineeringDatumNNPtr EngineeringCRS::datum() const { + return NN_NO_CHECK(std::static_pointer_cast<datum::EngineeringDatum>( + SingleCRS::getPrivate()->datum)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a EngineeringCRS from a datum and a coordinate system. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param datumIn the datum. + * @param csIn the coordinate system. + * @return new EngineeringCRS. + */ +EngineeringCRSNNPtr +EngineeringCRS::create(const util::PropertyMap &properties, + const datum::EngineeringDatumNNPtr &datumIn, + const cs::CoordinateSystemNNPtr &csIn) { + auto crs(EngineeringCRS::nn_make_shared<EngineeringCRS>(datumIn, csIn)); + crs->assignSelf(crs); + crs->setProperties(properties); + return crs; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void EngineeringCRS::_exportToWKT(io::WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + formatter->startNode(isWKT2 ? io::WKTConstants::ENGCRS + : io::WKTConstants::LOCAL_CS, + !identifiers().empty()); + formatter->addQuotedString(nameStr()); + if (isWKT2 || !datum()->nameStr().empty()) { + datum()->_exportToWKT(formatter); + coordinateSystem()->_exportToWKT(formatter); + } + ObjectUsage::baseExportToWKT(formatter); + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +bool EngineeringCRS::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherEngineeringCRS = dynamic_cast<const EngineeringCRS *>(other); + return otherEngineeringCRS != nullptr && + SingleCRS::baseIsEquivalentTo(other, criterion); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct ParametricCRS::Private {}; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +ParametricCRS::~ParametricCRS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +ParametricCRS::ParametricCRS(const datum::ParametricDatumNNPtr &datumIn, + const cs::ParametricCSNNPtr &csIn) + : SingleCRS(datumIn.as_nullable(), nullptr, csIn), d(nullptr) {} + +// --------------------------------------------------------------------------- + +ParametricCRS::ParametricCRS(const ParametricCRS &other) + : SingleCRS(other), d(nullptr) {} + +// --------------------------------------------------------------------------- + +CRSNNPtr ParametricCRS::_shallowClone() const { + auto crs(ParametricCRS::nn_make_shared<ParametricCRS>(*this)); + crs->assignSelf(crs); + return crs; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the datum::ParametricDatum associated with the CRS. + * + * @return a ParametricDatum + */ +const datum::ParametricDatumNNPtr ParametricCRS::datum() const { + return NN_NO_CHECK(std::static_pointer_cast<datum::ParametricDatum>( + SingleCRS::getPrivate()->datum)); +} + +// --------------------------------------------------------------------------- + +/** \brief Return the cs::TemporalCS associated with the CRS. + * + * @return a TemporalCS + */ +const cs::ParametricCSNNPtr ParametricCRS::coordinateSystem() const { + return util::nn_static_pointer_cast<cs::ParametricCS>( + SingleCRS::getPrivate()->coordinateSystem); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ParametricCRS from a datum and a coordinate system. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param datumIn the datum. + * @param csIn the coordinate system. + * @return new ParametricCRS. + */ +ParametricCRSNNPtr +ParametricCRS::create(const util::PropertyMap &properties, + const datum::ParametricDatumNNPtr &datumIn, + const cs::ParametricCSNNPtr &csIn) { + auto crs(ParametricCRS::nn_make_shared<ParametricCRS>(datumIn, csIn)); + crs->assignSelf(crs); + crs->setProperties(properties); + return crs; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void ParametricCRS::_exportToWKT(io::WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + if (!isWKT2) { + io::FormattingException::Throw( + "ParametricCRS can only be exported to WKT2"); + } + formatter->startNode(io::WKTConstants::PARAMETRICCRS, + !identifiers().empty()); + formatter->addQuotedString(nameStr()); + datum()->_exportToWKT(formatter); + coordinateSystem()->_exportToWKT(formatter); + ObjectUsage::baseExportToWKT(formatter); + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +bool ParametricCRS::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherParametricCRS = dynamic_cast<const ParametricCRS *>(other); + return otherParametricCRS != nullptr && + SingleCRS::baseIsEquivalentTo(other, criterion); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct DerivedVerticalCRS::Private {}; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +DerivedVerticalCRS::~DerivedVerticalCRS() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +DerivedVerticalCRS::DerivedVerticalCRS( + const VerticalCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::VerticalCSNNPtr &csIn) + : SingleCRS(baseCRSIn->datum(), baseCRSIn->datumEnsemble(), csIn), + VerticalCRS(baseCRSIn->datum(), baseCRSIn->datumEnsemble(), csIn), + DerivedCRS(baseCRSIn, derivingConversionIn, csIn), d(nullptr) {} + +// --------------------------------------------------------------------------- + +DerivedVerticalCRS::DerivedVerticalCRS(const DerivedVerticalCRS &other) + : SingleCRS(other), VerticalCRS(other), DerivedCRS(other), d(nullptr) {} + +// --------------------------------------------------------------------------- + +CRSNNPtr DerivedVerticalCRS::_shallowClone() const { + auto crs(DerivedVerticalCRS::nn_make_shared<DerivedVerticalCRS>(*this)); + crs->assignSelf(crs); + crs->setDerivingConversionCRS(); + return crs; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the base CRS (a VerticalCRS) of a DerivedVerticalCRS. + * + * @return the base CRS. + */ +const VerticalCRSNNPtr DerivedVerticalCRS::baseCRS() const { + return NN_NO_CHECK(util::nn_dynamic_pointer_cast<VerticalCRS>( + DerivedCRS::getPrivate()->baseCRS_)); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a DerivedVerticalCRS from a base CRS, a deriving + * conversion and a cs::VerticalCS. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param baseCRSIn base CRS. + * @param derivingConversionIn the deriving conversion from the base CRS to this + * CRS. + * @param csIn the coordinate system. + * @return new DerivedVerticalCRS. + */ +DerivedVerticalCRSNNPtr DerivedVerticalCRS::create( + const util::PropertyMap &properties, const VerticalCRSNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const cs::VerticalCSNNPtr &csIn) { + auto crs(DerivedVerticalCRS::nn_make_shared<DerivedVerticalCRS>( + baseCRSIn, derivingConversionIn, csIn)); + crs->assignSelf(crs); + crs->setProperties(properties); + crs->setDerivingConversionCRS(); + return crs; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void DerivedVerticalCRS::_exportToWKT(io::WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + if (!isWKT2) { + io::FormattingException::Throw( + "DerivedVerticalCRS can only be exported to WKT2"); + } + baseExportToWKT(formatter, io::WKTConstants::VERTCRS, + io::WKTConstants::BASEVERTCRS); +} +//! @endcond + +// --------------------------------------------------------------------------- + +void DerivedVerticalCRS::_exportToPROJString( + io::PROJStringFormatter *formatter) const // throw(io::FormattingException) +{ + baseExportToPROJString(formatter); +} + +// --------------------------------------------------------------------------- + +bool DerivedVerticalCRS::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherDerivedCRS = dynamic_cast<const DerivedVerticalCRS *>(other); + return otherDerivedCRS != nullptr && + DerivedCRS::_isEquivalentTo(other, criterion); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +std::list<std::pair<CRSNNPtr, int>> +DerivedVerticalCRS::_identify(const io::AuthorityFactoryPtr &factory) const { + return CRS::_identify(factory); +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +template <class DerivedCRSTraits> +struct DerivedCRSTemplate<DerivedCRSTraits>::Private {}; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +template <class DerivedCRSTraits> +DerivedCRSTemplate<DerivedCRSTraits>::~DerivedCRSTemplate() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +template <class DerivedCRSTraits> +DerivedCRSTemplate<DerivedCRSTraits>::DerivedCRSTemplate( + const BaseNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, const CSNNPtr &csIn) + : SingleCRS(baseCRSIn->datum().as_nullable(), nullptr, csIn), + BaseType(baseCRSIn->datum(), csIn), + DerivedCRS(baseCRSIn, derivingConversionIn, csIn), d(nullptr) {} + +// --------------------------------------------------------------------------- + +template <class DerivedCRSTraits> +DerivedCRSTemplate<DerivedCRSTraits>::DerivedCRSTemplate( + const DerivedCRSTemplate &other) + : SingleCRS(other), BaseType(other), DerivedCRS(other), d(nullptr) {} + +// --------------------------------------------------------------------------- + +template <class DerivedCRSTraits> +const typename DerivedCRSTemplate<DerivedCRSTraits>::BaseNNPtr +DerivedCRSTemplate<DerivedCRSTraits>::baseCRS() const { + auto l_baseCRS = DerivedCRS::getPrivate()->baseCRS_; + return NN_NO_CHECK(util::nn_dynamic_pointer_cast<BaseType>(l_baseCRS)); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +template <class DerivedCRSTraits> +CRSNNPtr DerivedCRSTemplate<DerivedCRSTraits>::_shallowClone() const { + auto crs(DerivedCRSTemplate::nn_make_shared<DerivedCRSTemplate>(*this)); + crs->assignSelf(crs); + crs->setDerivingConversionCRS(); + return crs; +} + +// --------------------------------------------------------------------------- + +template <class DerivedCRSTraits> +typename DerivedCRSTemplate<DerivedCRSTraits>::NNPtr +DerivedCRSTemplate<DerivedCRSTraits>::create( + const util::PropertyMap &properties, const BaseNNPtr &baseCRSIn, + const operation::ConversionNNPtr &derivingConversionIn, + const CSNNPtr &csIn) { + auto crs(DerivedCRSTemplate::nn_make_shared<DerivedCRSTemplate>( + baseCRSIn, derivingConversionIn, csIn)); + crs->assignSelf(crs); + crs->setProperties(properties); + crs->setDerivingConversionCRS(); + return crs; +} + +// --------------------------------------------------------------------------- + +static void DerivedCRSTemplateCheckExportToWKT(io::WKTFormatter *&formatter, + const std::string &crsName, + bool wkt2_2018_only) { + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + if (!isWKT2 || (wkt2_2018_only && !formatter->use2018Keywords())) { + io::FormattingException::Throw(crsName + + " can only be exported to WKT2" + + (wkt2_2018_only ? ":2018" : "")); + } +} + +// --------------------------------------------------------------------------- + +template <class DerivedCRSTraits> +void DerivedCRSTemplate<DerivedCRSTraits>::_exportToWKT( + io::WKTFormatter *formatter) const { + DerivedCRSTemplateCheckExportToWKT(formatter, DerivedCRSTraits::CRSName(), + DerivedCRSTraits::wkt2_2018_only); + baseExportToWKT(formatter, DerivedCRSTraits::WKTKeyword(), + DerivedCRSTraits::WKTBaseKeyword()); +} + +// --------------------------------------------------------------------------- + +template <class DerivedCRSTraits> +bool DerivedCRSTemplate<DerivedCRSTraits>::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherDerivedCRS = dynamic_cast<const DerivedCRSTemplate *>(other); + return otherDerivedCRS != nullptr && + DerivedCRS::_isEquivalentTo(other, criterion); +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static const std::string STRING_DerivedEngineeringCRS("DerivedEngineeringCRS"); +const std::string &DerivedEngineeringCRSTraits::CRSName() { + return STRING_DerivedEngineeringCRS; +} +const std::string &DerivedEngineeringCRSTraits::WKTKeyword() { + return io::WKTConstants::ENGCRS; +} +const std::string &DerivedEngineeringCRSTraits::WKTBaseKeyword() { + return io::WKTConstants::BASEENGCRS; +} + +template class DerivedCRSTemplate<DerivedEngineeringCRSTraits>; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static const std::string STRING_DerivedParametricCRS("DerivedParametricCRS"); +const std::string &DerivedParametricCRSTraits::CRSName() { + return STRING_DerivedParametricCRS; +} +const std::string &DerivedParametricCRSTraits::WKTKeyword() { + return io::WKTConstants::PARAMETRICCRS; +} +const std::string &DerivedParametricCRSTraits::WKTBaseKeyword() { + return io::WKTConstants::BASEPARAMCRS; +} + +template class DerivedCRSTemplate<DerivedParametricCRSTraits>; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static const std::string STRING_DerivedTemporalCRS("DerivedTemporalCRS"); +const std::string &DerivedTemporalCRSTraits::CRSName() { + return STRING_DerivedTemporalCRS; +} +const std::string &DerivedTemporalCRSTraits::WKTKeyword() { + return io::WKTConstants::TIMECRS; +} +const std::string &DerivedTemporalCRSTraits::WKTBaseKeyword() { + return io::WKTConstants::BASETIMECRS; +} + +template class DerivedCRSTemplate<DerivedTemporalCRSTraits>; +//! @endcond + +// --------------------------------------------------------------------------- + +} // namespace crs +NS_PROJ_END diff --git a/src/datum.cpp b/src/datum.cpp new file mode 100644 index 00000000..b3edb152 --- /dev/null +++ b/src/datum.cpp @@ -0,0 +1,1983 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef FROM_PROJ_CPP +#define FROM_PROJ_CPP +#endif + +#include "proj/datum.hpp" +#include "proj/common.hpp" +#include "proj/io.hpp" +#include "proj/metadata.hpp" +#include "proj/util.hpp" + +#include "proj/internal/internal.hpp" +#include "proj/internal/io_internal.hpp" + +// PROJ include order is sensitive +// clang-format off +#include "proj.h" +#include "projects.h" +#include "proj_api.h" +// clang-format on + +#include <cmath> +#include <cstdlib> +#include <memory> +#include <string> + +using namespace NS_PROJ::internal; + +#if 0 +namespace dropbox{ namespace oxygen { +template<> nn<NS_PROJ::datum::DatumPtr>::~nn() = default; +template<> nn<NS_PROJ::datum::DatumEnsemblePtr>::~nn() = default; +template<> nn<NS_PROJ::datum::PrimeMeridianPtr>::~nn() = default; +template<> nn<NS_PROJ::datum::EllipsoidPtr>::~nn() = default; +template<> nn<NS_PROJ::datum::GeodeticReferenceFramePtr>::~nn() = default; +template<> nn<NS_PROJ::datum::DynamicGeodeticReferenceFramePtr>::~nn() = default; +template<> nn<NS_PROJ::datum::VerticalReferenceFramePtr>::~nn() = default; +template<> nn<NS_PROJ::datum::DynamicVerticalReferenceFramePtr>::~nn() = default; +template<> nn<NS_PROJ::datum::EngineeringDatumPtr>::~nn() = default; +template<> nn<NS_PROJ::datum::TemporalDatumPtr>::~nn() = default; +template<> nn<NS_PROJ::datum::ParametricDatumPtr>::~nn() = default; +}} +#endif + +NS_PROJ_START +namespace datum { + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static util::PropertyMap createMapNameEPSGCode(const char *name, int code) { + return util::PropertyMap() + .set(common::IdentifiedObject::NAME_KEY, name) + .set(metadata::Identifier::CODESPACE_KEY, metadata::Identifier::EPSG) + .set(metadata::Identifier::CODE_KEY, code); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct Datum::Private { + util::optional<std::string> anchorDefinition{}; + util::optional<common::DateTime> publicationDate{}; + common::IdentifiedObjectPtr conventionalRS{}; + + // cppcheck-suppress functionStatic + void exportAnchorDefinition(io::WKTFormatter *formatter) const; +}; + +// --------------------------------------------------------------------------- + +void Datum::Private::exportAnchorDefinition(io::WKTFormatter *formatter) const { + if (anchorDefinition) { + formatter->startNode(io::WKTConstants::ANCHOR, false); + formatter->addQuotedString(*anchorDefinition); + formatter->endNode(); + } +} + +//! @endcond + +// --------------------------------------------------------------------------- + +Datum::Datum() : d(internal::make_unique<Private>()) {} + +// --------------------------------------------------------------------------- + +#ifdef notdef +Datum::Datum(const Datum &other) + : ObjectUsage(other), d(internal::make_unique<Private>(*other.d)) {} +#endif + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +Datum::~Datum() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the anchor definition. + * + * A description - possibly including coordinates of an identified point or + * points - of the relationship used to anchor a coordinate system to the + * Earth or alternate object. + * <ul> + * <li>For modern geodetic reference frames the anchor may be a set of station + * coordinates; if the reference frame is dynamic it will also include + * coordinate velocities. For a traditional geodetic datum, this anchor may be + * a point known as the fundamental point, which is traditionally the point + * where the relationship between geoid and ellipsoid is defined, together + * with a direction from that point.</li> + * <li>For a vertical reference frame the anchor may be the zero level at one + * or more defined locations or a conventionally defined surface.</li> + * <li>For an engineering datum, the anchor may be an identified physical point + * with the orientation defined relative to the object.</li> + * </ul> + * + * @return the anchor definition, or empty. + */ +const util::optional<std::string> &Datum::anchorDefinition() const { + return d->anchorDefinition; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the date on which the datum definition was published. + * + * \note Departure from \ref ISO_19111_2018 : we return a DateTime instead of + * a Citation::Date. + * + * @return the publication date, or empty. + */ +const util::optional<common::DateTime> &Datum::publicationDate() const { + return d->publicationDate; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the conventional reference system. + * + * This is the name, identifier, alias and remarks for the terrestrial + * reference system or vertical reference system realized by this reference + * frame, for example "ITRS" for ITRF88 through ITRF2008 and ITRF2014, or + * "EVRS" for EVRF2000 and EVRF2007. + * + * @return the conventional reference system, or nullptr. + */ +const common::IdentifiedObjectPtr &Datum::conventionalRS() const { + return d->conventionalRS; +} + +// --------------------------------------------------------------------------- + +void Datum::setAnchor(const util::optional<std::string> &anchor) { + d->anchorDefinition = anchor; +} + +// --------------------------------------------------------------------------- + +bool Datum::__isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherDatum = dynamic_cast<const Datum *>(other); + if (otherDatum == nullptr || + !ObjectUsage::_isEquivalentTo(other, criterion)) { + return false; + } + if (criterion == util::IComparable::Criterion::STRICT) { + if ((anchorDefinition().has_value() ^ + otherDatum->anchorDefinition().has_value())) { + return false; + } + if (anchorDefinition().has_value() && + otherDatum->anchorDefinition().has_value() && + *anchorDefinition() != *otherDatum->anchorDefinition()) { + return false; + } + + if ((publicationDate().has_value() ^ + otherDatum->publicationDate().has_value())) { + return false; + } + if (publicationDate().has_value() && + otherDatum->publicationDate().has_value() && + publicationDate()->toString() != + otherDatum->publicationDate()->toString()) { + return false; + } + + if (((conventionalRS() != nullptr) ^ + (otherDatum->conventionalRS() != nullptr))) { + return false; + } + if (conventionalRS() && otherDatum->conventionalRS() && + conventionalRS()->_isEquivalentTo( + otherDatum->conventionalRS().get(), criterion)) { + return false; + } + } + return true; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct PrimeMeridian::Private { + common::Angle longitude_{}; + + explicit Private(const common::Angle &longitude) : longitude_(longitude) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +PrimeMeridian::PrimeMeridian(const common::Angle &longitudeIn) + : d(internal::make_unique<Private>(longitudeIn)) {} + +// --------------------------------------------------------------------------- + +#ifdef notdef +PrimeMeridian::PrimeMeridian(const PrimeMeridian &other) + : common::IdentifiedObject(other), + d(internal::make_unique<Private>(*other.d)) {} +#endif + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +PrimeMeridian::~PrimeMeridian() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the longitude of the prime meridian. + * + * It is measured from the internationally-recognised reference meridian + * ('Greenwich meridian'), positive eastward. + * The default value is 0 degrees. + * + * @return the longitude of the prime meridian. + */ +const common::Angle &PrimeMeridian::longitude() PROJ_CONST_DEFN { + return d->longitude_; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a PrimeMeridian. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param longitudeIn the longitude of the prime meridian. + * @return new PrimeMeridian. + */ +PrimeMeridianNNPtr PrimeMeridian::create(const util::PropertyMap &properties, + const common::Angle &longitudeIn) { + auto pm(PrimeMeridian::nn_make_shared<PrimeMeridian>(longitudeIn)); + pm->setProperties(properties); + return pm; +} + +// --------------------------------------------------------------------------- + +const PrimeMeridianNNPtr PrimeMeridian::createGREENWICH() { + return create(createMapNameEPSGCode("Greenwich", 8901), common::Angle(0)); +} + +// --------------------------------------------------------------------------- + +const PrimeMeridianNNPtr PrimeMeridian::createPARIS() { + return create(createMapNameEPSGCode("Paris", 8903), + common::Angle(2.5969213, common::UnitOfMeasure::GRAD)); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void PrimeMeridian::_exportToWKT( + io::WKTFormatter *formatter) const // throw(FormattingException) +{ + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + std::string l_name = + name()->description().has_value() ? nameStr() : "Greenwich"; + if (!(isWKT2 && formatter->primeMeridianOmittedIfGreenwich() && + l_name == "Greenwich")) { + formatter->startNode(io::WKTConstants::PRIMEM, !identifiers().empty()); + formatter->addQuotedString(l_name); + const auto &l_long = longitude(); + if (formatter->primeMeridianInDegree()) { + formatter->add(l_long.convertToUnit(common::UnitOfMeasure::DEGREE)); + } else { + formatter->add(l_long.value()); + } + const auto &unit = l_long.unit(); + if (isWKT2) { + if (!(formatter + ->primeMeridianOrParameterUnitOmittedIfSameAsAxis() && + unit == *(formatter->axisAngularUnit()))) { + unit._exportToWKT(formatter, io::WKTConstants::ANGLEUNIT); + } + } else if (!formatter->primeMeridianInDegree()) { + unit._exportToWKT(formatter); + } + if (formatter->outputId()) { + formatID(formatter); + } + formatter->endNode(); + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +std::string +PrimeMeridian::getPROJStringWellKnownName(const common::Angle &angle) { + const double valRad = angle.getSIValue(); + std::string projPMName; + projCtx ctxt = pj_ctx_alloc(); + auto proj_pm = proj_list_prime_meridians(); + for (int i = 0; proj_pm[i].id != nullptr; ++i) { + double valRefRad = dmstor_ctx(ctxt, proj_pm[i].defn, nullptr); + if (::fabs(valRad - valRefRad) < 1e-10) { + projPMName = proj_pm[i].id; + break; + } + } + pj_ctx_free(ctxt); + return projPMName; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void PrimeMeridian::_exportToPROJString( + io::PROJStringFormatter *formatter) const // throw(FormattingException) +{ + if (longitude().getSIValue() != 0) { + std::string projPMName(getPROJStringWellKnownName(longitude())); + if (!projPMName.empty()) { + formatter->addParam("pm", projPMName); + } else { + const double valDeg = + longitude().convertToUnit(common::UnitOfMeasure::DEGREE); + formatter->addParam("pm", valDeg); + } + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool PrimeMeridian::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherPM = dynamic_cast<const PrimeMeridian *>(other); + if (otherPM == nullptr || + !IdentifiedObject::_isEquivalentTo(other, criterion)) { + return false; + } + return longitude()._isEquivalentTo(otherPM->longitude(), criterion); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct Ellipsoid::Private { + common::Length semiMajorAxis_{}; + util::optional<common::Scale> inverseFlattening_{}; + util::optional<common::Length> semiMinorAxis_{}; + util::optional<common::Length> semiMedianAxis_{}; + std::string celestialBody_{}; + + explicit Private(const common::Length &radius, + const std::string &celestialBody) + : semiMajorAxis_(radius), celestialBody_(celestialBody) {} + + Private(const common::Length &semiMajorAxisIn, + const common::Scale &invFlattening, + const std::string &celestialBody) + : semiMajorAxis_(semiMajorAxisIn), inverseFlattening_(invFlattening), + celestialBody_(celestialBody) {} + + Private(const common::Length &semiMajorAxisIn, + const common::Length &semiMinorAxisIn, + const std::string &celestialBody) + : semiMajorAxis_(semiMajorAxisIn), semiMinorAxis_(semiMinorAxisIn), + celestialBody_(celestialBody) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +Ellipsoid::Ellipsoid(const common::Length &radius, + const std::string &celestialBodyIn) + : d(internal::make_unique<Private>(radius, celestialBodyIn)) {} + +// --------------------------------------------------------------------------- + +Ellipsoid::Ellipsoid(const common::Length &semiMajorAxisIn, + const common::Scale &invFlattening, + const std::string &celestialBodyIn) + : d(internal::make_unique<Private>(semiMajorAxisIn, invFlattening, + celestialBodyIn)) {} + +// --------------------------------------------------------------------------- + +Ellipsoid::Ellipsoid(const common::Length &semiMajorAxisIn, + const common::Length &semiMinorAxisIn, + const std::string &celestialBodyIn) + : d(internal::make_unique<Private>(semiMajorAxisIn, semiMinorAxisIn, + celestialBodyIn)) {} + +// --------------------------------------------------------------------------- + +#ifdef notdef +Ellipsoid::Ellipsoid(const Ellipsoid &other) + : common::IdentifiedObject(other), + d(internal::make_unique<Private>(*other.d)) {} +#endif + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +Ellipsoid::~Ellipsoid() = default; + +Ellipsoid::Ellipsoid(const Ellipsoid &other) + : IdentifiedObject(other), d(internal::make_unique<Private>(*(other.d))) {} + +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the length of the semi-major axis of the ellipsoid. + * + * @return the semi-major axis. + */ +const common::Length &Ellipsoid::semiMajorAxis() PROJ_CONST_DEFN { + return d->semiMajorAxis_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the inverse flattening value of the ellipsoid, if the + * ellipsoid + * has been defined with this value. + * + * @see computeInverseFlattening() that will always return a valid value of the + * inverse flattening, whether the ellipsoid has been defined through inverse + * flattening or semi-minor axis. + * + * @return the inverse flattening value of the ellipsoid, or empty. + */ +const util::optional<common::Scale> & +Ellipsoid::inverseFlattening() PROJ_CONST_DEFN { + return d->inverseFlattening_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the length of the semi-minor axis of the ellipsoid, if the + * ellipsoid + * has been defined with this value. + * + * @see computeSemiMinorAxis() that will always return a valid value of the + * inverse flattening, whether the ellipsoid has been defined through inverse + * flattening or semi-minor axis. + * + * @return the semi-minor axis of the ellipsoid, or empty. + */ +const util::optional<common::Length> & +Ellipsoid::semiMinorAxis() PROJ_CONST_DEFN { + return d->semiMinorAxis_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return whether the ellipsoid is spherical. + * + * That is to say is semiMajorAxis() == computeSemiMinorAxis(). + * + * A sphere is completely defined by the semi-major axis, which is the radius + * of the sphere. + * + * @return true if the ellipsoid is spherical. + */ +bool Ellipsoid::isSphere() PROJ_CONST_DEFN { + if (d->inverseFlattening_.has_value()) { + return d->inverseFlattening_->value() == 0; + } + + if (semiMinorAxis().has_value()) { + return semiMajorAxis() == *semiMinorAxis(); + } + + return true; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the length of the semi-median axis of a triaxial ellipsoid + * + * This parameter is not required for a biaxial ellipsoid. + * + * @return the semi-median axis of the ellipsoid, or empty. + */ +const util::optional<common::Length> & +Ellipsoid::semiMedianAxis() PROJ_CONST_DEFN { + return d->semiMedianAxis_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return or compute the inverse flattening value of the ellipsoid. + * + * If computed, the inverse flattening is the result of a / (a - b), + * where a is the semi-major axis and b the semi-minor axis. + * + * @return the inverse flattening value of the ellipsoid, or 0 for a sphere. + */ +double Ellipsoid::computedInverseFlattening() PROJ_CONST_DEFN { + if (d->inverseFlattening_.has_value()) { + return d->inverseFlattening_->getSIValue(); + } + + if (d->semiMinorAxis_.has_value()) { + const double a = d->semiMajorAxis_.getSIValue(); + const double b = d->semiMinorAxis_->getSIValue(); + return (a == b) ? 0.0 : a / (a - b); + } + + return 0.0; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the squared eccentricity of the ellipsoid. + * + * @return the squared eccentricity, or a negative value if invalid. + */ +double Ellipsoid::squaredEccentricity() PROJ_CONST_DEFN { + const double rf = computedInverseFlattening(); + const double f = rf != 0.0 ? 1. / rf : 0.0; + const double e2 = f * (2 - f); + return e2; +} + +// --------------------------------------------------------------------------- + +/** \brief Return or compute the length of the semi-minor axis of the ellipsoid. + * + * If computed, the semi-minor axis is the result of a * (1 - 1 / rf) + * where a is the semi-major axis and rf the reverse/inverse flattening. + + * @return the semi-minor axis of the ellipsoid. + */ +common::Length Ellipsoid::computeSemiMinorAxis() const { + if (d->semiMinorAxis_.has_value()) { + return *d->semiMinorAxis_; + } + + if (inverseFlattening().has_value()) { + return common::Length( + (1.0 - 1.0 / d->inverseFlattening_->getSIValue()) * + d->semiMajorAxis_.value(), + d->semiMajorAxis_.unit()); + } + + return d->semiMajorAxis_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the name of the celestial body on which the ellipsoid refers + * to. + */ +const std::string &Ellipsoid::celestialBody() PROJ_CONST_DEFN { + return d->celestialBody_; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a Ellipsoid as a sphere. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param radius the sphere radius (semi-major axis). + * @param celestialBody Name of the celestial body on which the ellipsoid refers + * to. + * @return new Ellipsoid. + */ +EllipsoidNNPtr Ellipsoid::createSphere(const util::PropertyMap &properties, + const common::Length &radius, + const std::string &celestialBody) { + auto ellipsoid(Ellipsoid::nn_make_shared<Ellipsoid>(radius, celestialBody)); + ellipsoid->setProperties(properties); + return ellipsoid; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a Ellipsoid from its inverse/reverse flattening. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param semiMajorAxisIn the semi-major axis. + * @param invFlattening the inverse/reverse flattening. + * @param celestialBody Name of the celestial body on which the ellipsoid refers + * to. + * @return new Ellipsoid. + */ +EllipsoidNNPtr Ellipsoid::createFlattenedSphere( + const util::PropertyMap &properties, const common::Length &semiMajorAxisIn, + const common::Scale &invFlattening, const std::string &celestialBody) { + auto ellipsoid(Ellipsoid::nn_make_shared<Ellipsoid>( + semiMajorAxisIn, invFlattening, celestialBody)); + ellipsoid->setProperties(properties); + return ellipsoid; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a Ellipsoid from the value of its two semi axis. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param semiMajorAxisIn the semi-major axis. + * @param semiMinorAxisIn the semi-minor axis. + * @param celestialBody Name of the celestial body on which the ellipsoid refers + * to. + * @return new Ellipsoid. + */ +EllipsoidNNPtr Ellipsoid::createTwoAxis(const util::PropertyMap &properties, + const common::Length &semiMajorAxisIn, + const common::Length &semiMinorAxisIn, + const std::string &celestialBody) { + auto ellipsoid(Ellipsoid::nn_make_shared<Ellipsoid>( + semiMajorAxisIn, semiMinorAxisIn, celestialBody)); + ellipsoid->setProperties(properties); + return ellipsoid; +} + +// --------------------------------------------------------------------------- + +const EllipsoidNNPtr Ellipsoid::createCLARKE_1866() { + return createTwoAxis(createMapNameEPSGCode("Clarke 1866", 7008), + common::Length(6378206.4), common::Length(6356583.8)); +} + +// --------------------------------------------------------------------------- + +const EllipsoidNNPtr Ellipsoid::createWGS84() { + return createFlattenedSphere(createMapNameEPSGCode("WGS 84", 7030), + common::Length(6378137), + common::Scale(298.257223563)); +} + +// --------------------------------------------------------------------------- + +const EllipsoidNNPtr Ellipsoid::createGRS1980() { + return createFlattenedSphere(createMapNameEPSGCode("GRS 1980", 7019), + common::Length(6378137), + common::Scale(298.257222101)); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void Ellipsoid::_exportToWKT( + io::WKTFormatter *formatter) const // throw(FormattingException) +{ + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + formatter->startNode(isWKT2 ? io::WKTConstants::ELLIPSOID + : io::WKTConstants::SPHEROID, + !identifiers().empty()); + { + auto l_name = nameStr(); + if (l_name.empty()) { + formatter->addQuotedString("unnamed"); + } else { + if (formatter->useESRIDialect()) { + if (l_name == "WGS 84") { + l_name = "WGS_1984"; + } else { + bool aliasFound = false; + const auto &dbContext = formatter->databaseContext(); + if (dbContext) { + auto l_alias = dbContext->getAliasFromOfficialName( + l_name, "ellipsoid", "ESRI"); + if (!l_alias.empty()) { + l_name = l_alias; + aliasFound = true; + } + } + if (!aliasFound) { + l_name = io::WKTFormatter::morphNameToESRI(l_name); + } + } + } + formatter->addQuotedString(l_name); + } + const auto &semiMajor = semiMajorAxis(); + if (isWKT2) { + formatter->add(semiMajor.value()); + } else { + formatter->add(semiMajor.getSIValue()); + } + formatter->add(computedInverseFlattening()); + const auto &unit = semiMajor.unit(); + if (isWKT2 && + !(formatter->ellipsoidUnitOmittedIfMetre() && + unit == common::UnitOfMeasure::METRE)) { + unit._exportToWKT(formatter, io::WKTConstants::LENGTHUNIT); + } + if (formatter->outputId()) { + formatID(formatter); + } + } + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +bool Ellipsoid::lookForProjWellKnownEllps(std::string &projEllpsName, + std::string &ellpsName) const { + const double a = semiMajorAxis().getSIValue(); + const double b = computeSemiMinorAxis().getSIValue(); + const double rf = computedInverseFlattening(); + auto proj_ellps = proj_list_ellps(); + for (int i = 0; proj_ellps[i].id != nullptr; i++) { + assert(strncmp(proj_ellps[i].major, "a=", 2) == 0); + const double a_iter = c_locale_stod(proj_ellps[i].major + 2); + if (::fabs(a - a_iter) < 1e-10 * a_iter) { + if (strncmp(proj_ellps[i].ell, "b=", 2) == 0) { + const double b_iter = c_locale_stod(proj_ellps[i].ell + 2); + if (::fabs(b - b_iter) < 1e-10 * b_iter) { + projEllpsName = proj_ellps[i].id; + ellpsName = proj_ellps[i].name; + if (ellpsName.find("GRS 1980") == 0) { + ellpsName = "GRS 1980"; + } + return true; + } + } else { + assert(strncmp(proj_ellps[i].ell, "rf=", 3) == 0); + const double rf_iter = c_locale_stod(proj_ellps[i].ell + 3); + if (::fabs(rf - rf_iter) < 1e-10 * rf_iter) { + projEllpsName = proj_ellps[i].id; + ellpsName = proj_ellps[i].name; + if (ellpsName.find("GRS 1980") == 0) { + ellpsName = "GRS 1980"; + } + return true; + } + } + } + } + return false; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void Ellipsoid::_exportToPROJString( + io::PROJStringFormatter *formatter) const // throw(FormattingException) +{ + const double a = semiMajorAxis().getSIValue(); + + std::string projEllpsName; + std::string ellpsName; + if (lookForProjWellKnownEllps(projEllpsName, ellpsName)) { + formatter->addParam("ellps", projEllpsName); + return; + } + + if (isSphere()) { + formatter->addParam("R", a); + } else { + formatter->addParam("a", a); + if (inverseFlattening().has_value()) { + const double rf = computedInverseFlattening(); + formatter->addParam("rf", rf); + } else { + const double b = computeSemiMinorAxis().getSIValue(); + formatter->addParam("b", b); + } + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return a Ellipsoid object where some parameters are better + * identified. + * + * @return a new Ellipsoid. + */ +EllipsoidNNPtr Ellipsoid::identify() const { + auto newEllipsoid = Ellipsoid::nn_make_shared<Ellipsoid>(*this); + newEllipsoid->assignSelf( + util::nn_static_pointer_cast<util::BaseObject>(newEllipsoid)); + + if (name()->description()->empty() || nameStr() == "unknown") { + std::string projEllpsName; + std::string ellpsName; + if (lookForProjWellKnownEllps(projEllpsName, ellpsName)) { + newEllipsoid->setProperties( + util::PropertyMap().set(IdentifiedObject::NAME_KEY, ellpsName)); + } + } + + return newEllipsoid; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool Ellipsoid::_isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherEllipsoid = dynamic_cast<const Ellipsoid *>(other); + if (otherEllipsoid == nullptr || + (criterion == util::IComparable::Criterion::STRICT && + !IdentifiedObject::_isEquivalentTo(other, criterion))) { + return false; + } + + // PROJ "clrk80" name is "Clarke 1880 mod." and GDAL tends to + // export to it a number of Clarke 1880 variants, so be lax + if (criterion != util::IComparable::Criterion::STRICT && + (nameStr() == "Clarke 1880 mod." || + otherEllipsoid->nameStr() == "Clarke 1880 mod.")) { + return std::fabs(semiMajorAxis().getSIValue() - + otherEllipsoid->semiMajorAxis().getSIValue()) < + 1e-8 * semiMajorAxis().getSIValue() && + std::fabs(computedInverseFlattening() - + otherEllipsoid->computedInverseFlattening()) < + 1e-5 * computedInverseFlattening(); + } + + if (!semiMajorAxis()._isEquivalentTo(otherEllipsoid->semiMajorAxis(), + criterion)) { + return false; + } + + const auto &l_semiMinorAxis = semiMinorAxis(); + const auto &l_other_semiMinorAxis = otherEllipsoid->semiMinorAxis(); + if (l_semiMinorAxis.has_value() && l_other_semiMinorAxis.has_value()) { + if (!l_semiMinorAxis->_isEquivalentTo(*l_other_semiMinorAxis, + criterion)) { + return false; + } + } + + const auto &l_inverseFlattening = inverseFlattening(); + const auto &l_other_sinverseFlattening = + otherEllipsoid->inverseFlattening(); + if (l_inverseFlattening.has_value() && + l_other_sinverseFlattening.has_value()) { + if (!l_inverseFlattening->_isEquivalentTo(*l_other_sinverseFlattening, + criterion)) { + return false; + } + } + + if (criterion == util::IComparable::Criterion::STRICT) { + if ((l_semiMinorAxis.has_value() ^ l_other_semiMinorAxis.has_value())) { + return false; + } + + if ((l_inverseFlattening.has_value() ^ + l_other_sinverseFlattening.has_value())) { + return false; + } + + } else { + if (!otherEllipsoid->computeSemiMinorAxis()._isEquivalentTo( + otherEllipsoid->computeSemiMinorAxis(), criterion)) { + return false; + } + } + + const auto &l_semiMedianAxis = semiMedianAxis(); + const auto &l_other_semiMedianAxis = otherEllipsoid->semiMedianAxis(); + if ((l_semiMedianAxis.has_value() ^ l_other_semiMedianAxis.has_value())) { + return false; + } + if (l_semiMedianAxis.has_value() && l_other_semiMedianAxis.has_value()) { + if (!l_semiMedianAxis->_isEquivalentTo(*l_other_semiMedianAxis, + criterion)) { + return false; + } + } + return true; +} +//! @endcond + +// --------------------------------------------------------------------------- + +std::string Ellipsoid::guessBodyName(const io::DatabaseContextPtr &dbContext, + double a) { + constexpr double relError = 0.005; + constexpr double earthMeanRadius = 6375000.0; + if (std::fabs(a - earthMeanRadius) < relError * earthMeanRadius) { + return Ellipsoid::EARTH; + } + if (dbContext) { + try { + auto factory = io::AuthorityFactory::create(NN_NO_CHECK(dbContext), + std::string()); + return factory->identifyBodyFromSemiMajorAxis(a, relError); + } catch (const std::exception &) { + } + } + return "Non-Earth body"; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct GeodeticReferenceFrame::Private { + PrimeMeridianNNPtr primeMeridian_; + EllipsoidNNPtr ellipsoid_; + + Private(const EllipsoidNNPtr &ellipsoidIn, + const PrimeMeridianNNPtr &primeMeridianIn) + : primeMeridian_(primeMeridianIn), ellipsoid_(ellipsoidIn) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +GeodeticReferenceFrame::GeodeticReferenceFrame( + const EllipsoidNNPtr &ellipsoidIn, + const PrimeMeridianNNPtr &primeMeridianIn) + : d(internal::make_unique<Private>(ellipsoidIn, primeMeridianIn)) {} + +// --------------------------------------------------------------------------- + +#ifdef notdef +GeodeticReferenceFrame::GeodeticReferenceFrame( + const GeodeticReferenceFrame &other) + : Datum(other), d(internal::make_unique<Private>(*other.d)) {} +#endif + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +GeodeticReferenceFrame::~GeodeticReferenceFrame() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the PrimeMeridian associated with a GeodeticReferenceFrame. + * + * @return the PrimeMeridian. + */ +const PrimeMeridianNNPtr & +GeodeticReferenceFrame::primeMeridian() PROJ_CONST_DEFN { + return d->primeMeridian_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the Ellipsoid associated with a GeodeticReferenceFrame. + * + * \note The \ref ISO_19111_2018 modelling allows (but discourages) a + * GeodeticReferenceFrame + * to not be associated with a Ellipsoid in the case where it is used by a + * geocentric crs::GeodeticCRS. We have made the choice of making the ellipsoid + * specification compulsory. + * + * @return the Ellipsoid. + */ +const EllipsoidNNPtr &GeodeticReferenceFrame::ellipsoid() PROJ_CONST_DEFN { + return d->ellipsoid_; +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a GeodeticReferenceFrame + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param ellipsoid the Ellipsoid. + * @param anchor the anchor definition, or empty. + * @param primeMeridian the PrimeMeridian. + * @return new GeodeticReferenceFrame. + */ +GeodeticReferenceFrameNNPtr +GeodeticReferenceFrame::create(const util::PropertyMap &properties, + const EllipsoidNNPtr &ellipsoid, + const util::optional<std::string> &anchor, + const PrimeMeridianNNPtr &primeMeridian) { + GeodeticReferenceFrameNNPtr grf( + GeodeticReferenceFrame::nn_make_shared<GeodeticReferenceFrame>( + ellipsoid, primeMeridian)); + grf->setAnchor(anchor); + grf->setProperties(properties); + return grf; +} + +// --------------------------------------------------------------------------- + +const GeodeticReferenceFrameNNPtr GeodeticReferenceFrame::createEPSG_6267() { + return create(createMapNameEPSGCode("North American Datum 1927", 6267), + Ellipsoid::CLARKE_1866, util::optional<std::string>(), + PrimeMeridian::GREENWICH); +} + +// --------------------------------------------------------------------------- + +const GeodeticReferenceFrameNNPtr GeodeticReferenceFrame::createEPSG_6269() { + return create(createMapNameEPSGCode("North American Datum 1983", 6269), + Ellipsoid::GRS1980, util::optional<std::string>(), + PrimeMeridian::GREENWICH); +} + +// --------------------------------------------------------------------------- + +const GeodeticReferenceFrameNNPtr GeodeticReferenceFrame::createEPSG_6326() { + return create(createMapNameEPSGCode("World Geodetic System 1984", 6326), + Ellipsoid::WGS84, util::optional<std::string>(), + PrimeMeridian::GREENWICH); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void GeodeticReferenceFrame::_exportToWKT( + io::WKTFormatter *formatter) const // throw(FormattingException) +{ + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + formatter->startNode(io::WKTConstants::DATUM, !identifiers().empty()); + auto l_name = nameStr(); + if (l_name.empty()) { + l_name = "unnamed"; + } + if (!isWKT2) { + if (formatter->useESRIDialect()) { + if (l_name == "World Geodetic System 1984") { + l_name = "D_WGS_1984"; + } else { + bool aliasFound = false; + const auto &dbContext = formatter->databaseContext(); + if (dbContext) { + auto l_alias = dbContext->getAliasFromOfficialName( + l_name, "geodetic_datum", "ESRI"); + size_t pos; + if (!l_alias.empty()) { + l_name = l_alias; + aliasFound = true; + } else if ((pos = l_name.find(" (")) != std::string::npos) { + l_alias = dbContext->getAliasFromOfficialName( + l_name.substr(0, pos), "geodetic_datum", "ESRI"); + if (!l_alias.empty()) { + l_name = l_alias; + aliasFound = true; + } + } + } + if (!aliasFound) { + l_name = io::WKTFormatter::morphNameToESRI(l_name); + if (!starts_with(l_name, "D_")) { + l_name = "D_" + l_name; + } + } + } + } else { + l_name = io::WKTFormatter::morphNameToESRI(l_name); + if (l_name == "World_Geodetic_System_1984") { + l_name = "WGS_1984"; + } + } + } + formatter->addQuotedString(l_name); + + ellipsoid()->_exportToWKT(formatter); + if (isWKT2) { + Datum::getPrivate()->exportAnchorDefinition(formatter); + } else { + const auto &TOWGS84Params = formatter->getTOWGS84Parameters(); + if (TOWGS84Params.size() == 7) { + formatter->startNode(io::WKTConstants::TOWGS84, false); + for (const auto &val : TOWGS84Params) { + formatter->add(val); + } + formatter->endNode(); + } + std::string extension = formatter->getHDatumExtension(); + if (!extension.empty()) { + formatter->startNode(io::WKTConstants::EXTENSION, false); + formatter->addQuotedString("PROJ4_GRIDS"); + formatter->addQuotedString(extension); + formatter->endNode(); + } + } + if (formatter->outputId()) { + formatID(formatter); + } + // the PRIMEM is exported as a child of the CRS + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool GeodeticReferenceFrame::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherGRF = dynamic_cast<const GeodeticReferenceFrame *>(other); + if (otherGRF == nullptr || !Datum::_isEquivalentTo(other, criterion)) { + return false; + } + return primeMeridian()->_isEquivalentTo(otherGRF->primeMeridian().get(), + criterion) && + ellipsoid()->_isEquivalentTo(otherGRF->ellipsoid().get(), criterion); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct DynamicGeodeticReferenceFrame::Private { + common::Measure frameReferenceEpoch{}; + util::optional<std::string> deformationModelName{}; + + explicit Private(const common::Measure &frameReferenceEpochIn) + : frameReferenceEpoch(frameReferenceEpochIn) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +DynamicGeodeticReferenceFrame::DynamicGeodeticReferenceFrame( + const EllipsoidNNPtr &ellipsoidIn, + const PrimeMeridianNNPtr &primeMeridianIn, + const common::Measure &frameReferenceEpochIn, + const util::optional<std::string> &deformationModelNameIn) + : GeodeticReferenceFrame(ellipsoidIn, primeMeridianIn), + d(internal::make_unique<Private>(frameReferenceEpochIn)) { + d->deformationModelName = deformationModelNameIn; +} + +// --------------------------------------------------------------------------- + +#ifdef notdef +DynamicGeodeticReferenceFrame::DynamicGeodeticReferenceFrame( + const DynamicGeodeticReferenceFrame &other) + : GeodeticReferenceFrame(other), + d(internal::make_unique<Private>(*other.d)) {} +#endif + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +DynamicGeodeticReferenceFrame::~DynamicGeodeticReferenceFrame() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the epoch to which the coordinates of stations defining the + * dynamic geodetic reference frame are referenced. + * + * Usually given as a decimal year e.g. 2016.47. + * + * @return the frame reference epoch. + */ +const common::Measure & +DynamicGeodeticReferenceFrame::frameReferenceEpoch() const { + return d->frameReferenceEpoch; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the name of the deformation model. + * + * @note This is an extension to the \ref ISO_19111_2018 modeling, to + * hold the content of the DYNAMIC.MODEL WKT2 node. + * + * @return the name of the deformation model. + */ +const util::optional<std::string> & +DynamicGeodeticReferenceFrame::deformationModelName() const { + return d->deformationModelName; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool DynamicGeodeticReferenceFrame::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherDGRF = dynamic_cast<const DynamicGeodeticReferenceFrame *>(other); + if (otherDGRF == nullptr || + !GeodeticReferenceFrame::_isEquivalentTo(other, criterion)) { + return false; + } + return frameReferenceEpoch()._isEquivalentTo( + otherDGRF->frameReferenceEpoch(), criterion) && + metadata::Identifier::isEquivalentName( + deformationModelName()->c_str(), + otherDGRF->deformationModelName()->c_str()); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void DynamicGeodeticReferenceFrame::_exportToWKT( + io::WKTFormatter *formatter) const // throw(FormattingException) +{ + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + if (isWKT2 && formatter->use2018Keywords()) { + formatter->startNode(io::WKTConstants::DYNAMIC, false); + formatter->startNode(io::WKTConstants::FRAMEEPOCH, false); + formatter->add( + frameReferenceEpoch().convertToUnit(common::UnitOfMeasure::YEAR)); + formatter->endNode(); + if (deformationModelName().has_value() && + !deformationModelName()->empty()) { + formatter->startNode(io::WKTConstants::MODEL, false); + formatter->addQuotedString(*deformationModelName()); + formatter->endNode(); + } + formatter->endNode(); + } + GeodeticReferenceFrame::_exportToWKT(formatter); +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a DyanmicGeodeticReferenceFrame + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param ellipsoid the Ellipsoid. + * @param anchor the anchor definition, or empty. + * @param primeMeridian the PrimeMeridian. + * @param frameReferenceEpochIn the frame reference epoch. + * @param deformationModelNameIn deformation model name, or empty + * @return new DyanmicGeodeticReferenceFrame. + */ +DynamicGeodeticReferenceFrameNNPtr DynamicGeodeticReferenceFrame::create( + const util::PropertyMap &properties, const EllipsoidNNPtr &ellipsoid, + const util::optional<std::string> &anchor, + const PrimeMeridianNNPtr &primeMeridian, + const common::Measure &frameReferenceEpochIn, + const util::optional<std::string> &deformationModelNameIn) { + DynamicGeodeticReferenceFrameNNPtr grf( + DynamicGeodeticReferenceFrame::nn_make_shared< + DynamicGeodeticReferenceFrame>(ellipsoid, primeMeridian, + frameReferenceEpochIn, + deformationModelNameIn)); + grf->setAnchor(anchor); + grf->setProperties(properties); + return grf; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct DatumEnsemble::Private { + std::vector<DatumNNPtr> datums{}; + metadata::PositionalAccuracyNNPtr positionalAccuracy; + + Private(const std::vector<DatumNNPtr> &datumsIn, + const metadata::PositionalAccuracyNNPtr &accuracy) + : datums(datumsIn), positionalAccuracy(accuracy) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +DatumEnsemble::DatumEnsemble(const std::vector<DatumNNPtr> &datumsIn, + const metadata::PositionalAccuracyNNPtr &accuracy) + : d(internal::make_unique<Private>(datumsIn, accuracy)) {} + +// --------------------------------------------------------------------------- + +#ifdef notdef +DatumEnsemble::DatumEnsemble(const DatumEnsemble &other) + : common::IdentifiedObject(other), + d(internal::make_unique<Private>(*other.d)) {} +#endif + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +DatumEnsemble::~DatumEnsemble() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the set of datums which may be considered to be + * insignificantly different from each other. + * + * @return the set of datums of the DatumEnsemble. + */ +const std::vector<DatumNNPtr> &DatumEnsemble::datums() const { + return d->datums; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the inaccuracy introduced through use of this collection of + * datums. + * + * It is an indication of the differences in coordinate values at all points + * between the various realizations that have been grouped into this datum + * ensemble. + * + * @return the accuracy. + */ +const metadata::PositionalAccuracyNNPtr & +DatumEnsemble::positionalAccuracy() const { + return d->positionalAccuracy; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void DatumEnsemble::_exportToWKT( + io::WKTFormatter *formatter) const // throw(FormattingException) +{ + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + if (!isWKT2 || !formatter->use2018Keywords()) { + throw io::FormattingException( + "DatumEnsemble can only be exported to WKT2:2018"); + } + + auto l_datums = datums(); + assert(!l_datums.empty()); + + formatter->startNode(io::WKTConstants::ENSEMBLE, false); + const auto &l_name = nameStr(); + if (!l_name.empty()) { + formatter->addQuotedString(l_name); + } else { + formatter->addQuotedString("unnamed"); + } + + for (const auto &datum : l_datums) { + formatter->startNode(io::WKTConstants::MEMBER, + !datum->identifiers().empty()); + const auto &l_datum_name = datum->nameStr(); + if (!l_datum_name.empty()) { + formatter->addQuotedString(l_datum_name); + } else { + formatter->addQuotedString("unnamed"); + } + if (formatter->outputId()) { + datum->formatID(formatter); + } + formatter->endNode(); + } + + auto grfFirst = std::dynamic_pointer_cast<GeodeticReferenceFrame>( + l_datums[0].as_nullable()); + if (grfFirst) { + grfFirst->ellipsoid()->_exportToWKT(formatter); + } + + formatter->startNode(io::WKTConstants::ENSEMBLEACCURACY, false); + formatter->add(positionalAccuracy()->value()); + formatter->endNode(); + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a DatumEnsemble. + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param datumsIn Array of at least 2 datums. + * @param accuracy Accuracy of the datum ensemble + * @return new DatumEnsemble. + * @throw util::Exception + */ +DatumEnsembleNNPtr DatumEnsemble::create( + const util::PropertyMap &properties, + const std::vector<DatumNNPtr> &datumsIn, + const metadata::PositionalAccuracyNNPtr &accuracy) // throw(Exception) +{ + if (datumsIn.size() < 2) { + throw util::Exception("ensemble should have at least 2 datums"); + } + if (auto grfFirst = + dynamic_cast<const GeodeticReferenceFrame *>(datumsIn[0].get())) { + for (size_t i = 1; i < datumsIn.size(); i++) { + auto grf = + dynamic_cast<const GeodeticReferenceFrame *>(datumsIn[i].get()); + if (!grf) { + throw util::Exception( + "ensemble should have consistent datum types"); + } + if (!grfFirst->ellipsoid()->_isEquivalentTo( + grf->ellipsoid().get())) { + throw util::Exception( + "ensemble should have datums with identical ellipsoid"); + } + if (!grfFirst->primeMeridian()->_isEquivalentTo( + grf->primeMeridian().get())) { + throw util::Exception( + "ensemble should have datums with identical " + "prime meridian"); + } + } + } else if (dynamic_cast<VerticalReferenceFrame *>(datumsIn[0].get())) { + for (size_t i = 1; i < datumsIn.size(); i++) { + if (!dynamic_cast<VerticalReferenceFrame *>(datumsIn[i].get())) { + throw util::Exception( + "ensemble should have consistent datum types"); + } + } + } + auto ensemble( + DatumEnsemble::nn_make_shared<DatumEnsemble>(datumsIn, accuracy)); + ensemble->setProperties(properties); + return ensemble; +} + +// --------------------------------------------------------------------------- + +RealizationMethod::RealizationMethod(const std::string &nameIn) + : CodeList(nameIn) {} + +// --------------------------------------------------------------------------- + +RealizationMethod::RealizationMethod(const RealizationMethod &) = default; + +// --------------------------------------------------------------------------- + +RealizationMethod &RealizationMethod:: +operator=(const RealizationMethod &other) { + CodeList::operator=(other); + return *this; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct VerticalReferenceFrame::Private { + util::optional<RealizationMethod> realizationMethod_{}; +}; +//! @endcond + +// --------------------------------------------------------------------------- + +VerticalReferenceFrame::VerticalReferenceFrame( + const util::optional<RealizationMethod> &realizationMethodIn) + : d(internal::make_unique<Private>()) { + if (!realizationMethodIn->toString().empty()) { + d->realizationMethod_ = *realizationMethodIn; + } +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +VerticalReferenceFrame::~VerticalReferenceFrame() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the method through which this vertical reference frame is + * realized. + * + * @return the realization method. + */ +const util::optional<RealizationMethod> & +VerticalReferenceFrame::realizationMethod() const { + return d->realizationMethod_; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a VerticalReferenceFrame + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param anchor the anchor definition, or empty. + * @param realizationMethodIn the realization method, or empty. + * @return new VerticalReferenceFrame. + */ +VerticalReferenceFrameNNPtr VerticalReferenceFrame::create( + const util::PropertyMap &properties, + const util::optional<std::string> &anchor, + const util::optional<RealizationMethod> &realizationMethodIn) { + auto rf(VerticalReferenceFrame::nn_make_shared<VerticalReferenceFrame>( + realizationMethodIn)); + rf->setAnchor(anchor); + rf->setProperties(properties); + return rf; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void VerticalReferenceFrame::_exportToWKT( + io::WKTFormatter *formatter) const // throw(FormattingException) +{ + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + formatter->startNode(isWKT2 ? io::WKTConstants::VDATUM + : io::WKTConstants::VERT_DATUM, + !identifiers().empty()); + const auto &l_name = nameStr(); + if (!l_name.empty()) { + formatter->addQuotedString(l_name); + } else { + formatter->addQuotedString("unnamed"); + } + if (isWKT2) { + Datum::getPrivate()->exportAnchorDefinition(formatter); + } else { + formatter->add(2005); // CS_VD_GeoidModelDerived from OGC 01-009 + const auto &extension = formatter->getVDatumExtension(); + if (!extension.empty()) { + formatter->startNode(io::WKTConstants::EXTENSION, false); + formatter->addQuotedString("PROJ4_GRIDS"); + formatter->addQuotedString(extension); + formatter->endNode(); + } + } + if (formatter->outputId()) { + formatID(formatter); + } + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool VerticalReferenceFrame::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherVRF = dynamic_cast<const VerticalReferenceFrame *>(other); + if (otherVRF == nullptr || !Datum::_isEquivalentTo(other, criterion)) { + return false; + } + if ((realizationMethod().has_value() ^ + otherVRF->realizationMethod().has_value())) { + return false; + } + if (realizationMethod().has_value() && + otherVRF->realizationMethod().has_value()) { + if (*(realizationMethod()) != *(otherVRF->realizationMethod())) { + return false; + } + } + return true; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct DynamicVerticalReferenceFrame::Private { + common::Measure frameReferenceEpoch{}; + util::optional<std::string> deformationModelName{}; + + explicit Private(const common::Measure &frameReferenceEpochIn) + : frameReferenceEpoch(frameReferenceEpochIn) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +DynamicVerticalReferenceFrame::DynamicVerticalReferenceFrame( + const util::optional<RealizationMethod> &realizationMethodIn, + const common::Measure &frameReferenceEpochIn, + const util::optional<std::string> &deformationModelNameIn) + : VerticalReferenceFrame(realizationMethodIn), + d(internal::make_unique<Private>(frameReferenceEpochIn)) { + d->deformationModelName = deformationModelNameIn; +} + +// --------------------------------------------------------------------------- + +#ifdef notdef +DynamicVerticalReferenceFrame::DynamicVerticalReferenceFrame( + const DynamicVerticalReferenceFrame &other) + : VerticalReferenceFrame(other), + d(internal::make_unique<Private>(*other.d)) {} +#endif + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +DynamicVerticalReferenceFrame::~DynamicVerticalReferenceFrame() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the epoch to which the coordinates of stations defining the + * dynamic geodetic reference frame are referenced. + * + * Usually given as a decimal year e.g. 2016.47. + * + * @return the frame reference epoch. + */ +const common::Measure & +DynamicVerticalReferenceFrame::frameReferenceEpoch() const { + return d->frameReferenceEpoch; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the name of the deformation model. + * + * @note This is an extension to the \ref ISO_19111_2018 modeling, to + * hold the content of the DYNAMIC.MODEL WKT2 node. + * + * @return the name of the deformation model. + */ +const util::optional<std::string> & +DynamicVerticalReferenceFrame::deformationModelName() const { + return d->deformationModelName; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool DynamicVerticalReferenceFrame::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherDGRF = dynamic_cast<const DynamicVerticalReferenceFrame *>(other); + if (otherDGRF == nullptr || + !VerticalReferenceFrame::_isEquivalentTo(other, criterion)) { + return false; + } + return frameReferenceEpoch()._isEquivalentTo( + otherDGRF->frameReferenceEpoch(), criterion) && + metadata::Identifier::isEquivalentName( + deformationModelName()->c_str(), + otherDGRF->deformationModelName()->c_str()); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void DynamicVerticalReferenceFrame::_exportToWKT( + io::WKTFormatter *formatter) const // throw(FormattingException) +{ + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + if (isWKT2 && formatter->use2018Keywords()) { + formatter->startNode(io::WKTConstants::DYNAMIC, false); + formatter->startNode(io::WKTConstants::FRAMEEPOCH, false); + formatter->add( + frameReferenceEpoch().convertToUnit(common::UnitOfMeasure::YEAR)); + formatter->endNode(); + if (!deformationModelName()->empty()) { + formatter->startNode(io::WKTConstants::MODEL, false); + formatter->addQuotedString(*deformationModelName()); + formatter->endNode(); + } + formatter->endNode(); + } + VerticalReferenceFrame::_exportToWKT(formatter); +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a DyanmicVerticalReferenceFrame + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param anchor the anchor definition, or empty. + * @param realizationMethodIn the realization method, or empty. + * @param frameReferenceEpochIn the frame reference epoch. + * @param deformationModelNameIn deformation model name, or empty + * @return new DyanmicVerticalReferenceFrame. + */ +DynamicVerticalReferenceFrameNNPtr DynamicVerticalReferenceFrame::create( + const util::PropertyMap &properties, + const util::optional<std::string> &anchor, + const util::optional<RealizationMethod> &realizationMethodIn, + const common::Measure &frameReferenceEpochIn, + const util::optional<std::string> &deformationModelNameIn) { + DynamicVerticalReferenceFrameNNPtr grf( + DynamicVerticalReferenceFrame::nn_make_shared< + DynamicVerticalReferenceFrame>(realizationMethodIn, + frameReferenceEpochIn, + deformationModelNameIn)); + grf->setAnchor(anchor); + grf->setProperties(properties); + return grf; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct TemporalDatum::Private { + common::DateTime temporalOrigin_; + std::string calendar_; + + Private(const common::DateTime &temporalOriginIn, + const std::string &calendarIn) + : temporalOrigin_(temporalOriginIn), calendar_(calendarIn) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +TemporalDatum::TemporalDatum(const common::DateTime &temporalOriginIn, + const std::string &calendarIn) + : d(internal::make_unique<Private>(temporalOriginIn, calendarIn)) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +TemporalDatum::~TemporalDatum() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the date and time to which temporal coordinates are + * referenced, expressed in conformance with ISO 8601. + * + * @return the temporal origin. + */ +const common::DateTime &TemporalDatum::temporalOrigin() const { + return d->temporalOrigin_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the calendar to which the temporal origin is referenced + * + * Default value: TemporalDatum::CALENDAR_PROLEPTIC_GREGORIAN. + * + * @return the calendar. + */ +const std::string &TemporalDatum::calendar() const { return d->calendar_; } + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a TemporalDatum + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param temporalOriginIn the temporal origin into which temporal coordinates + * are referenced. + * @param calendarIn the calendar (generally + * TemporalDatum::CALENDAR_PROLEPTIC_GREGORIAN) + * @return new TemporalDatum. + */ +TemporalDatumNNPtr +TemporalDatum::create(const util::PropertyMap &properties, + const common::DateTime &temporalOriginIn, + const std::string &calendarIn) { + auto datum(TemporalDatum::nn_make_shared<TemporalDatum>(temporalOriginIn, + calendarIn)); + datum->setProperties(properties); + return datum; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void TemporalDatum::_exportToWKT( + io::WKTFormatter *formatter) const // throw(FormattingException) +{ + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + if (!isWKT2) { + throw io::FormattingException( + "TemporalDatum can only be exported to WKT2"); + } + formatter->startNode(io::WKTConstants::TDATUM, !identifiers().empty()); + formatter->addQuotedString(nameStr()); + if (formatter->use2018Keywords()) { + formatter->startNode(io::WKTConstants::CALENDAR, false); + formatter->addQuotedString(calendar()); + formatter->endNode(); + } + + const auto &timeOriginStr = temporalOrigin().toString(); + if (!timeOriginStr.empty()) { + formatter->startNode(io::WKTConstants::TIMEORIGIN, false); + if (temporalOrigin().isISO_8601()) { + formatter->add(timeOriginStr); + } else { + formatter->addQuotedString(timeOriginStr); + } + formatter->endNode(); + } + + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool TemporalDatum::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherTD = dynamic_cast<const TemporalDatum *>(other); + if (otherTD == nullptr || !Datum::_isEquivalentTo(other, criterion)) { + return false; + } + return temporalOrigin().toString() == + otherTD->temporalOrigin().toString() && + calendar() == otherTD->calendar(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct EngineeringDatum::Private {}; +//! @endcond + +// --------------------------------------------------------------------------- + +EngineeringDatum::EngineeringDatum() : d(nullptr) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +EngineeringDatum::~EngineeringDatum() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a EngineeringDatum + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param anchor the anchor definition, or empty. + * @return new EngineeringDatum. + */ +EngineeringDatumNNPtr +EngineeringDatum::create(const util::PropertyMap &properties, + const util::optional<std::string> &anchor) { + auto datum(EngineeringDatum::nn_make_shared<EngineeringDatum>()); + datum->setAnchor(anchor); + datum->setProperties(properties); + return datum; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void EngineeringDatum::_exportToWKT( + io::WKTFormatter *formatter) const // throw(FormattingException) +{ + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + formatter->startNode(isWKT2 ? io::WKTConstants::EDATUM + : io::WKTConstants::LOCAL_DATUM, + !identifiers().empty()); + formatter->addQuotedString(nameStr()); + if (isWKT2) { + Datum::getPrivate()->exportAnchorDefinition(formatter); + } else { + // Somewhat picked up arbitrarily from OGC 01-009: + // CS_LD_Max (Attribute) : 32767 + // Highest possible value for local datum types. + formatter->add(32767); + } + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool EngineeringDatum::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherTD = dynamic_cast<const EngineeringDatum *>(other); + if (otherTD == nullptr || !Datum::_isEquivalentTo(other, criterion)) { + return false; + } + return true; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct ParametricDatum::Private {}; +//! @endcond + +// --------------------------------------------------------------------------- + +ParametricDatum::ParametricDatum() : d(nullptr) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +ParametricDatum::~ParametricDatum() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ParametricDatum + * + * @param properties See \ref general_properties. + * At minimum the name should be defined. + * @param anchor the anchor definition, or empty. + * @return new ParametricDatum. + */ +ParametricDatumNNPtr +ParametricDatum::create(const util::PropertyMap &properties, + const util::optional<std::string> &anchor) { + auto datum(ParametricDatum::nn_make_shared<ParametricDatum>()); + datum->setAnchor(anchor); + datum->setProperties(properties); + return datum; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void ParametricDatum::_exportToWKT( + io::WKTFormatter *formatter) const // throw(FormattingException) +{ + const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; + if (!isWKT2) { + throw io::FormattingException( + "ParametricDatum can only be exported to WKT2"); + } + formatter->startNode(io::WKTConstants::PDATUM, !identifiers().empty()); + formatter->addQuotedString(nameStr()); + Datum::getPrivate()->exportAnchorDefinition(formatter); + formatter->endNode(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool ParametricDatum::_isEquivalentTo( + const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherTD = dynamic_cast<const ParametricDatum *>(other); + if (otherTD == nullptr || !Datum::_isEquivalentTo(other, criterion)) { + return false; + } + return true; +} +//! @endcond + +} // namespace datum +NS_PROJ_END diff --git a/src/emess.h b/src/emess.h index 4a6f7587..82526776 100644 --- a/src/emess.h +++ b/src/emess.h @@ -11,7 +11,7 @@ struct EMESS { #ifdef EMESS_ROUTINE /* use type */ /* for emess procedure */ -struct EMESS emess_dat = { (char *)0, (char *)0, 0 }; +struct EMESS PROJ_DLL emess_dat = { (char *)0, (char *)0, 0 }; #ifdef sun /* Archaic SunOs 4.1.1, etc. */ extern char *sys_errlist[]; @@ -20,10 +20,10 @@ extern char *sys_errlist[]; #else /* for for calling procedures */ -extern struct EMESS emess_dat; +extern struct EMESS PROJ_DLL emess_dat; #endif /* use type */ -void emess(int, const char *, ...); +void PROJ_DLL emess(int, const char *, ...); #endif /* end EMESS_H */ diff --git a/src/factory.cpp b/src/factory.cpp new file mode 100644 index 00000000..3c360d13 --- /dev/null +++ b/src/factory.cpp @@ -0,0 +1,4350 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef FROM_PROJ_CPP +#define FROM_PROJ_CPP +#endif + +#include "proj/common.hpp" +#include "proj/coordinateoperation.hpp" +#include "proj/coordinatesystem.hpp" +#include "proj/crs.hpp" +#include "proj/datum.hpp" +#include "proj/io.hpp" +#include "proj/metadata.hpp" +#include "proj/util.hpp" + +#include "proj/internal/coordinateoperation_internal.hpp" +#include "proj/internal/internal.hpp" +#include "proj/internal/io_internal.hpp" +#include "proj/internal/lru_cache.hpp" + +#include <cmath> +#include <cstdlib> +#include <cstring> +#include <iomanip> +#include <limits> +#include <map> +#include <memory> +#include <sstream> // std::ostringstream +#include <string> + +#include "proj_constants.h" + +// PROJ include order is sensitive +// clang-format off +#include "proj.h" +#include "projects.h" +// clang-format on + +#include <sqlite3.h> + +// Custom SQLite VFS as our database is not supposed to be modified in +// parallel. This is slightly faster +#define ENABLE_CUSTOM_LOCKLESS_VFS + +using namespace NS_PROJ::internal; +using namespace NS_PROJ::common; + +NS_PROJ_START +namespace io { + +//! @cond Doxygen_Suppress + +#define GEOG_2D "'geographic 2D'" +#define GEOG_3D "'geographic 3D'" +#define GEOCENTRIC "'geocentric'" + +// --------------------------------------------------------------------------- + +struct SQLValues { + enum class Type { STRING, DOUBLE }; + + // cppcheck-suppress noExplicitConstructor + SQLValues(const std::string &value) : type_(Type::STRING), str_(value) {} + + // cppcheck-suppress noExplicitConstructor + SQLValues(double value) : type_(Type::DOUBLE), double_(value) {} + + const Type &type() const { return type_; } + + // cppcheck-suppress functionStatic + const std::string &stringValue() const { return str_; } + + // cppcheck-suppress functionStatic + double doubleValue() const { return double_; } + + private: + Type type_; + std::string str_{}; + double double_ = 0.0; +}; + +// --------------------------------------------------------------------------- + +using SQLRow = std::vector<std::string>; +using SQLResultSet = std::vector<SQLRow>; + +// --------------------------------------------------------------------------- + +struct DatabaseContext::Private { + Private(); + ~Private(); + + void open(const std::string &databasePath = std::string()); + void setHandle(sqlite3 *sqlite_handle); + + sqlite3 *handle() const { return sqlite_handle_; } + + PJ_CONTEXT *pjCtxt() const { return pjCtxt_; } + void setPjCtxt(PJ_CONTEXT *ctxt) { pjCtxt_ = ctxt; } + + SQLResultSet + run(const std::string &sql, + const std::vector<SQLValues> ¶meters = std::vector<SQLValues>()); + + std::vector<std::string> getDatabaseStructure(); + + // cppcheck-suppress functionStatic + const std::string &getPath() const { return databasePath_; } + + void attachExtraDatabases( + const std::vector<std::string> &auxiliaryDatabasePaths); + + // Mechanism to detect recursion in calls from + // AuthorityFactory::createXXX() -> createFromUserInput() -> + // AuthorityFactory::createXXX() + struct RecursionDetector { + explicit RecursionDetector(const DatabaseContextNNPtr &context) + : dbContext_(context) { + if (dbContext_->getPrivate()->recLevel_ == 2) { + // Throw exception before incrementing, since the destructor + // will not be called + throw FactoryException("Too many recursive calls"); + } + ++dbContext_->getPrivate()->recLevel_; + } + + ~RecursionDetector() { --dbContext_->getPrivate()->recLevel_; } + + private: + DatabaseContextNNPtr dbContext_; + }; + + private: + std::string databasePath_{}; + bool close_handle_ = true; + sqlite3 *sqlite_handle_{}; + std::map<std::string, sqlite3_stmt *> mapSqlToStatement_{}; + PJ_CONTEXT *pjCtxt_ = nullptr; + int recLevel_ = 0; + bool detach_ = false; + + void closeDB(); + + // cppcheck-suppress functionStatic + void registerFunctions(); + +#ifdef ENABLE_CUSTOM_LOCKLESS_VFS + std::string thisNamePtr_{}; + sqlite3_vfs *vfs_{}; + bool createCustomVFS(); +#endif + + Private(const Private &) = delete; + Private &operator=(const Private &) = delete; +}; + +// --------------------------------------------------------------------------- + +DatabaseContext::Private::Private() = default; + +// --------------------------------------------------------------------------- + +DatabaseContext::Private::~Private() { + assert(recLevel_ == 0); + + closeDB(); + +#ifdef ENABLE_CUSTOM_LOCKLESS_VFS + if (vfs_) { + sqlite3_vfs_unregister(vfs_); + delete vfs_; + } +#endif +} + +// --------------------------------------------------------------------------- + +void DatabaseContext::Private::closeDB() { + + if (detach_) { + // Workaround a bug visible in SQLite 3.8.1 and 3.8.2 that causes + // a crash in TEST(factory, attachExtraDatabases_auxiliary) + // due to possible wrong caching of key info. + // The bug is specific to using a memory file with shared cache as an + // auxiliary DB. + // The efinitive fix was likely in 3.8.8 + // https://github.com/mackyle/sqlite/commit/d412d4b8731991ecbd8811874aa463d0821673eb + // But just after 3.8.2, + // https://github.com/mackyle/sqlite/commit/ccf328c4318eacedab9ed08c404bc4f402dcad19 + // also seemed to hide the issue. + // Detaching a database hides the issue, not sure if it is by chance... + run("DETACH DATABASE db_0"); + detach_ = false; + } + + for (auto &pair : mapSqlToStatement_) { + sqlite3_finalize(pair.second); + } + mapSqlToStatement_.clear(); + + if (close_handle_ && sqlite_handle_ != nullptr) { + sqlite3_close(sqlite_handle_); + sqlite_handle_ = nullptr; + } +} + +// --------------------------------------------------------------------------- + +#ifdef ENABLE_CUSTOM_LOCKLESS_VFS + +typedef int (*ClosePtr)(sqlite3_file *); + +static int VFSClose(sqlite3_file *file) { + sqlite3_vfs *defaultVFS = sqlite3_vfs_find(nullptr); + assert(defaultVFS); + ClosePtr defaultClosePtr; + std::memcpy(&defaultClosePtr, + reinterpret_cast<char *>(file) + defaultVFS->szOsFile, + sizeof(ClosePtr)); + void *methods = const_cast<sqlite3_io_methods *>(file->pMethods); + int ret = defaultClosePtr(file); + std::free(methods); + return ret; +} + +// No-lock implementation +static int VSFLock(sqlite3_file *, int) { return SQLITE_OK; } + +static int VSFUnlock(sqlite3_file *, int) { return SQLITE_OK; } + +static int VFSOpen(sqlite3_vfs *vfs, const char *name, sqlite3_file *file, + int flags, int *outFlags) { + sqlite3_vfs *defaultVFS = static_cast<sqlite3_vfs *>(vfs->pAppData); + int ret = defaultVFS->xOpen(defaultVFS, name, file, flags, outFlags); + if (ret == SQLITE_OK) { + ClosePtr defaultClosePtr = file->pMethods->xClose; + assert(defaultClosePtr); + sqlite3_io_methods *methods = static_cast<sqlite3_io_methods *>( + std::malloc(sizeof(sqlite3_io_methods))); + if (!methods) { + file->pMethods->xClose(file); + return SQLITE_NOMEM; + } + memcpy(methods, file->pMethods, sizeof(sqlite3_io_methods)); + methods->xClose = VFSClose; + methods->xLock = VSFLock; + methods->xUnlock = VSFUnlock; + file->pMethods = methods; + // Save original xClose pointer at end of file structure + std::memcpy(reinterpret_cast<char *>(file) + defaultVFS->szOsFile, + &defaultClosePtr, sizeof(ClosePtr)); + } + return ret; +} + +static int VFSAccess(sqlite3_vfs *vfs, const char *zName, int flags, + int *pResOut) { + sqlite3_vfs *defaultVFS = static_cast<sqlite3_vfs *>(vfs->pAppData); + // Do not bother stat'ing for journal or wal files + if (std::strstr(zName, "-journal") || std::strstr(zName, "-wal")) { + *pResOut = false; + return SQLITE_OK; + } + return defaultVFS->xAccess(defaultVFS, zName, flags, pResOut); +} + +// --------------------------------------------------------------------------- + +bool DatabaseContext::Private::createCustomVFS() { + + sqlite3_vfs *defaultVFS = sqlite3_vfs_find(nullptr); + assert(defaultVFS); + + std::ostringstream buffer; + buffer << this; + thisNamePtr_ = buffer.str(); + + vfs_ = new sqlite3_vfs(); + vfs_->iVersion = 1; + vfs_->szOsFile = defaultVFS->szOsFile + sizeof(ClosePtr); + vfs_->mxPathname = defaultVFS->mxPathname; + vfs_->zName = thisNamePtr_.c_str(); + vfs_->pAppData = defaultVFS; + vfs_->xOpen = VFSOpen; + vfs_->xDelete = defaultVFS->xDelete; + vfs_->xAccess = VFSAccess; + vfs_->xFullPathname = defaultVFS->xFullPathname; + vfs_->xDlOpen = defaultVFS->xDlOpen; + vfs_->xDlError = defaultVFS->xDlError; + vfs_->xDlSym = defaultVFS->xDlSym; + vfs_->xDlClose = defaultVFS->xDlClose; + vfs_->xRandomness = defaultVFS->xRandomness; + vfs_->xSleep = defaultVFS->xSleep; + vfs_->xCurrentTime = defaultVFS->xCurrentTime; + vfs_->xGetLastError = defaultVFS->xGetLastError; + vfs_->xCurrentTimeInt64 = defaultVFS->xCurrentTimeInt64; + return sqlite3_vfs_register(vfs_, false) == SQLITE_OK; +} + +#endif // ENABLE_CUSTOM_LOCKLESS_VFS + +// --------------------------------------------------------------------------- + +void DatabaseContext::Private::open(const std::string &databasePath) { + std::string path(databasePath); + if (path.empty()) { + const char *proj_lib = std::getenv("PROJ_LIB"); +#ifdef PROJ_LIB + if (!proj_lib) { + proj_lib = PROJ_LIB; + } +#endif + if (!proj_lib) { + throw FactoryException( + "Cannot find proj.db due to missing PROJ_LIB"); + } + path = std::string(proj_lib) + DIR_CHAR + "proj.db"; + } + + if ( +#ifdef ENABLE_CUSTOM_LOCKLESS_VFS + !createCustomVFS() || +#endif + sqlite3_open_v2(path.c_str(), &sqlite_handle_, + SQLITE_OPEN_READONLY | SQLITE_OPEN_NOMUTEX, +#ifdef ENABLE_CUSTOM_LOCKLESS_VFS + thisNamePtr_.c_str() +#else + nullptr +#endif + ) != SQLITE_OK || + !sqlite_handle_) { + throw FactoryException("Open of " + path + " failed"); + } + + databasePath_ = path; + registerFunctions(); +} + +// --------------------------------------------------------------------------- + +void DatabaseContext::Private::setHandle(sqlite3 *sqlite_handle) { + + assert(sqlite_handle); + assert(!sqlite_handle_); + sqlite_handle_ = sqlite_handle; + close_handle_ = false; + + registerFunctions(); +} + +// --------------------------------------------------------------------------- + +std::vector<std::string> DatabaseContext::Private::getDatabaseStructure() { + auto sqlRes = run("SELECT sql FROM sqlite_master WHERE type " + "IN ('table', 'trigger', 'view') ORDER BY type"); + std::vector<std::string> res; + for (const auto &row : sqlRes) { + res.emplace_back(row[0]); + } + return res; +} + +// --------------------------------------------------------------------------- + +void DatabaseContext::Private::attachExtraDatabases( + const std::vector<std::string> &auxiliaryDatabasePaths) { + assert(close_handle_); + assert(sqlite_handle_); + + auto tables = + run("SELECT name FROM sqlite_master WHERE type IN ('table', 'view')"); + std::map<std::string, std::vector<std::string>> tableStructure; + for (const auto &rowTable : tables) { + auto tableName = rowTable[0]; + auto tableInfo = run("PRAGMA table_info(\"" + + replaceAll(tableName, "\"", "\"\"") + "\")"); + for (const auto &rowCol : tableInfo) { + const auto &colName = rowCol[1]; + tableStructure[tableName].push_back(colName); + } + } + + closeDB(); + + sqlite3_open_v2(":memory:", &sqlite_handle_, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_NOMUTEX +#ifdef SQLITE_OPEN_URI + | SQLITE_OPEN_URI +#endif + , + nullptr); + if (!sqlite_handle_) { + throw FactoryException("cannot create in memory database"); + } + + run("ATTACH DATABASE '" + replaceAll(databasePath_, "'", "''") + + "' AS db_0"); + detach_ = true; + int count = 1; + for (const auto &otherDb : auxiliaryDatabasePaths) { + std::string sql = "ATTACH DATABASE '"; + sql += replaceAll(otherDb, "'", "''"); + sql += "' AS db_"; + sql += toString(static_cast<int>(count)); + count++; + run(sql); + } + + for (const auto &pair : tableStructure) { + std::string sql("CREATE TEMP VIEW "); + sql += pair.first; + sql += " AS "; + for (size_t i = 0; i <= auxiliaryDatabasePaths.size(); ++i) { + std::string selectFromAux("SELECT "); + bool firstCol = true; + for (const auto &colName : pair.second) { + if (!firstCol) { + selectFromAux += ", "; + } + firstCol = false; + selectFromAux += colName; + } + selectFromAux += " FROM db_"; + selectFromAux += toString(static_cast<int>(i)); + selectFromAux += "."; + selectFromAux += pair.first; + + try { + // Check that the request will succeed. In case of 'sparse' + // databases... + run(selectFromAux + " LIMIT 0"); + + if (i > 0) { + sql += " UNION ALL "; + } + sql += selectFromAux; + } catch (const std::exception &) { + } + } + run(sql); + } + + registerFunctions(); +} + +// --------------------------------------------------------------------------- + +static double PROJ_SQLITE_GetValAsDouble(sqlite3_value *val, bool &gotVal) { + switch (sqlite3_value_type(val)) { + case SQLITE_FLOAT: + gotVal = true; + return sqlite3_value_double(val); + + case SQLITE_INTEGER: + gotVal = true; + return static_cast<double>(sqlite3_value_int64(val)); + + default: + gotVal = false; + return 0.0; + } +} + +// --------------------------------------------------------------------------- + +static void PROJ_SQLITE_pseudo_area_from_swne(sqlite3_context *pContext, + int /* argc */, + sqlite3_value **argv) { + bool b0, b1, b2, b3; + double south_lat = PROJ_SQLITE_GetValAsDouble(argv[0], b0); + double west_lon = PROJ_SQLITE_GetValAsDouble(argv[1], b1); + double north_lat = PROJ_SQLITE_GetValAsDouble(argv[2], b2); + double east_lon = PROJ_SQLITE_GetValAsDouble(argv[3], b3); + if (!b0 || !b1 || !b2 || !b3) { + sqlite3_result_null(pContext); + return; + } + // Deal with area crossing antimeridian + if (east_lon < west_lon) { + east_lon += 360.0; + } + // Integrate cos(lat) between south_lat and north_lat + double pseudo_area = (east_lon - west_lon) * + (std::sin(common::Angle(north_lat).getSIValue()) - + std::sin(common::Angle(south_lat).getSIValue())); + sqlite3_result_double(pContext, pseudo_area); +} + +// --------------------------------------------------------------------------- + +static void PROJ_SQLITE_intersects_bbox(sqlite3_context *pContext, + int /* argc */, sqlite3_value **argv) { + bool b0, b1, b2, b3, b4, b5, b6, b7; + double south_lat1 = PROJ_SQLITE_GetValAsDouble(argv[0], b0); + double west_lon1 = PROJ_SQLITE_GetValAsDouble(argv[1], b1); + double north_lat1 = PROJ_SQLITE_GetValAsDouble(argv[2], b2); + double east_lon1 = PROJ_SQLITE_GetValAsDouble(argv[3], b3); + double south_lat2 = PROJ_SQLITE_GetValAsDouble(argv[4], b4); + double west_lon2 = PROJ_SQLITE_GetValAsDouble(argv[5], b5); + double north_lat2 = PROJ_SQLITE_GetValAsDouble(argv[6], b6); + double east_lon2 = PROJ_SQLITE_GetValAsDouble(argv[7], b7); + if (!b0 || !b1 || !b2 || !b3 || !b4 || !b5 || !b6 || !b7) { + sqlite3_result_null(pContext); + return; + } + auto bbox1 = metadata::GeographicBoundingBox::create(west_lon1, south_lat1, + east_lon1, north_lat1); + auto bbox2 = metadata::GeographicBoundingBox::create(west_lon2, south_lat2, + east_lon2, north_lat2); + sqlite3_result_int(pContext, bbox1->intersects(bbox2) ? 1 : 0); +} + +// --------------------------------------------------------------------------- + +#ifndef SQLITE_DETERMINISTIC +#define SQLITE_DETERMINISTIC 0 +#endif + +void DatabaseContext::Private::registerFunctions() { + sqlite3_create_function(sqlite_handle_, "pseudo_area_from_swne", 4, + SQLITE_UTF8 | SQLITE_DETERMINISTIC, nullptr, + PROJ_SQLITE_pseudo_area_from_swne, nullptr, + nullptr); + + sqlite3_create_function(sqlite_handle_, "intersects_bbox", 8, + SQLITE_UTF8 | SQLITE_DETERMINISTIC, nullptr, + PROJ_SQLITE_intersects_bbox, nullptr, nullptr); +} + +// --------------------------------------------------------------------------- + +SQLResultSet +DatabaseContext::Private::run(const std::string &sql, + const std::vector<SQLValues> ¶meters) { + + sqlite3_stmt *stmt = nullptr; + auto iter = mapSqlToStatement_.find(sql); + if (iter != mapSqlToStatement_.end()) { + stmt = iter->second; + sqlite3_reset(stmt); + } else { + if (sqlite3_prepare_v2(sqlite_handle_, sql.c_str(), + static_cast<int>(sql.size()), &stmt, + nullptr) != SQLITE_OK) { + throw FactoryException("SQLite error on " + sql + ": " + + sqlite3_errmsg(sqlite_handle_)); + } + mapSqlToStatement_.insert( + std::pair<std::string, sqlite3_stmt *>(sql, stmt)); + } + + int nBindField = 1; + for (const auto ¶m : parameters) { + if (param.type() == SQLValues::Type::STRING) { + auto strValue = param.stringValue(); + sqlite3_bind_text(stmt, nBindField, strValue.c_str(), + static_cast<int>(strValue.size()), + SQLITE_TRANSIENT); + } else { + assert(param.type() == SQLValues::Type::DOUBLE); + sqlite3_bind_double(stmt, nBindField, param.doubleValue()); + } + nBindField++; + } + + SQLResultSet result; + const int column_count = sqlite3_column_count(stmt); + while (true) { + int ret = sqlite3_step(stmt); + if (ret == SQLITE_ROW) { + SQLRow row; + for (int i = 0; i < column_count; i++) { + const char *txt = reinterpret_cast<const char *>( + sqlite3_column_text(stmt, i)); + row.emplace_back(txt ? txt : std::string()); + } + result.emplace_back(row); + } else if (ret == SQLITE_DONE) { + break; + } else { + throw FactoryException("SQLite error on " + sql + ": " + + sqlite3_errmsg(sqlite_handle_)); + } + } + return result; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +DatabaseContext::~DatabaseContext() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +DatabaseContext::DatabaseContext() : d(internal::make_unique<Private>()) {} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a database context, using the default proj.db file + * + * It will be searched in the directory pointed by the PROJ_LIB environment + * variable. If not found, on Unix builds, it will be then searched first in + * the pkgdatadir directory of the installation prefix. + * + * This database context should be used only by one thread at a time. + * @throw FactoryException + */ +DatabaseContextNNPtr DatabaseContext::create() { + return create(std::string(), {}); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a database context from a full filename. + * + * This database context should be used only by one thread at a time. + * @param databasePath Path and filename of the database. Might be empty + * string for the default rules to locate the default proj.db + * @throw FactoryException + */ +DatabaseContextNNPtr DatabaseContext::create(const std::string &databasePath) { + return create(databasePath, {}); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a database context from a full filename, and attach + * auxiliary databases to it. + * + * This database context should be used only by one thread at a time. + * @param databasePath Path and filename of the database. Might be empty + * string for the default rules to locate the default proj.db + * @param auxiliaryDatabasePaths Path and filename of auxiliary databases; + * @throw FactoryException + */ +DatabaseContextNNPtr DatabaseContext::create( + const std::string &databasePath, + const std::vector<std::string> &auxiliaryDatabasePaths) { + auto ctxt = DatabaseContext::nn_make_shared<DatabaseContext>(); + ctxt->getPrivate()->open(databasePath); + if (!auxiliaryDatabasePaths.empty()) { + ctxt->getPrivate()->attachExtraDatabases(auxiliaryDatabasePaths); + } + return ctxt; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the list of authorities used in the database. + */ +std::set<std::string> DatabaseContext::getAuthorities() const { + auto res = d->run("SELECT auth_name FROM authority_list"); + std::set<std::string> list; + for (const auto &row : res) { + list.insert(row[0]); + } + return list; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the list of SQL commands (CREATE TABLE, CREATE TRIGGER, + * CREATE VIEW) needed to initialize a new database. + */ +std::vector<std::string> DatabaseContext::getDatabaseStructure() const { + return d->getDatabaseStructure(); +} + +// --------------------------------------------------------------------------- + +/** \brief Return the path to the database. + */ +const std::string &DatabaseContext::getPath() const { return d->getPath(); } + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +DatabaseContextNNPtr DatabaseContext::create(void *sqlite_handle) { + auto ctxt = DatabaseContext::nn_make_shared<DatabaseContext>(); + ctxt->getPrivate()->setHandle(static_cast<sqlite3 *>(sqlite_handle)); + return ctxt; +} + +// --------------------------------------------------------------------------- + +void *DatabaseContext::getSqliteHandle() const { + return getPrivate()->handle(); +} + +// --------------------------------------------------------------------------- + +void DatabaseContext::attachPJContext(void *pjCtxt) { + d->setPjCtxt(static_cast<PJ_CONTEXT *>(pjCtxt)); +} + +// --------------------------------------------------------------------------- + +bool DatabaseContext::lookForGridAlternative(const std::string &officialName, + std::string &projFilename, + std::string &projFormat, + bool &inverse) const { + auto res = d->run( + "SELECT proj_grid_name, proj_grid_format, inverse_direction FROM " + "grid_alternatives WHERE original_grid_name = ?", + {officialName}); + if (res.empty()) { + return false; + } + projFilename = res[0][0]; + projFormat = res[0][1]; + inverse = res[0][2] == "1"; + return true; +} + +// --------------------------------------------------------------------------- + +bool DatabaseContext::lookForGridInfo(const std::string &projFilename, + std::string &fullFilename, + std::string &packageName, + std::string &url, bool &directDownload, + bool &openLicense, + bool &gridAvailable) const { + fullFilename.clear(); + packageName.clear(); + url.clear(); + openLicense = false; + directDownload = false; + + fullFilename.resize(2048); + if (d->pjCtxt() == nullptr) { + d->setPjCtxt(pj_get_default_ctx()); + } + gridAvailable = + pj_find_file(d->pjCtxt(), projFilename.c_str(), &fullFilename[0], + fullFilename.size() - 1) != 0; + fullFilename.resize(strlen(fullFilename.c_str())); + + auto res = + d->run("SELECT " + "grid_packages.package_name, " + "grid_alternatives.url, " + "grid_packages.url AS package_url, " + "grid_alternatives.open_license, " + "grid_packages.open_license AS package_open_license, " + "grid_alternatives.direct_download, " + "grid_packages.direct_download AS package_direct_download " + "FROM grid_alternatives " + "LEFT JOIN grid_packages ON " + "grid_alternatives.package_name = grid_packages.package_name " + "WHERE proj_grid_name = ?", + {projFilename}); + if (res.empty()) { + return false; + } + packageName = std::move(res[0][0]); + url = res[0][1].empty() ? std::move(res[0][2]) : std::move(res[0][1]); + openLicense = (res[0][3].empty() ? res[0][4] : res[0][3]) == "1"; + directDownload = (res[0][5].empty() ? res[0][6] : res[0][5]) == "1"; + return true; +} + +// --------------------------------------------------------------------------- + +bool DatabaseContext::isKnownName(const std::string &name, + const std::string &tableName) const { + std::string sql("SELECT 1 FROM \""); + sql += replaceAll(tableName, "\"", "\"\""); + sql += "\" WHERE name = ? LIMIT 1"; + return !d->run(sql, {name}).empty(); +} + +// --------------------------------------------------------------------------- + +/** \brief Gets the alias name from an official name. + * + * @param officialName Official name. + * @param tableName Table name/category. Mandatory + * @param source Source of the alias. Mandatory + * @return Alias name (or empty if not found). + * @throw FactoryException + */ +std::string +DatabaseContext::getAliasFromOfficialName(const std::string &officialName, + const std::string &tableName, + const std::string &source) const { + std::string sql("SELECT auth_name, code FROM \""); + sql += replaceAll(tableName, "\"", "\"\""); + sql += "\" WHERE name = ?"; + if (tableName == "geodetic_crs") { + sql += " AND type = " GEOG_2D; + } + auto res = d->run(sql, {officialName}); + if (res.empty()) { + return std::string(); + } + res = d->run("SELECT alt_name FROM alias_name WHERE table_name = ? AND " + "auth_name = ? AND code = ? AND source = ?", + {tableName, res[0][0], res[0][1], source}); + if (res.empty()) { + return std::string(); + } + return res[0][0]; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct AuthorityFactory::Private { + Private(const DatabaseContextNNPtr &contextIn, + const std::string &authorityName) + : context_(contextIn), authority_(authorityName) {} + + inline const std::string &authority() PROJ_CONST_DEFN { return authority_; } + + inline const DatabaseContextNNPtr &context() PROJ_CONST_DEFN { + return context_; + } + + // cppcheck-suppress functionStatic + void setThis(AuthorityFactoryNNPtr factory) { + thisFactory_ = factory.as_nullable(); + } + + // cppcheck-suppress functionStatic + AuthorityFactoryPtr getSharedFromThis() { return thisFactory_.lock(); } + + AuthorityFactoryNNPtr createFactory(const std::string &auth_name); + + // cppcheck-suppress functionStatic + common::UnitOfMeasurePtr getUOMFromCache(const std::string &code); + // cppcheck-suppress functionStatic + void cache(const std::string &code, const common::UnitOfMeasureNNPtr &uom); + + // cppcheck-suppress functionStatic + crs::CRSPtr getCRSFromCache(const std::string &code); + // cppcheck-suppress functionStatic + void cache(const std::string &code, const crs::CRSNNPtr &crs); + + datum::GeodeticReferenceFramePtr + // cppcheck-suppress functionStatic + getGeodeticDatumFromCache(const std::string &code); + // cppcheck-suppress functionStatic + void cache(const std::string &code, + const datum::GeodeticReferenceFrameNNPtr &datum); + + bool rejectOpDueToMissingGrid(const operation::CoordinateOperationNNPtr &op, + bool discardIfMissingGrid); + + UnitOfMeasure createUnitOfMeasure(const std::string &auth_name, + const std::string &code); + + util::PropertyMap createProperties(const std::string &code, + const std::string &name, bool deprecated, + const metadata::ExtentPtr &extent); + + util::PropertyMap createProperties(const std::string &code, + const std::string &name, bool deprecated, + const std::string &area_of_use_auth_name, + const std::string &area_of_use_code); + + SQLResultSet + run(const std::string &sql, + const std::vector<SQLValues> ¶meters = std::vector<SQLValues>()); + + SQLResultSet runWithCodeParam(const std::string &sql, + const std::string &code); + + SQLResultSet runWithCodeParam(const char *sql, const std::string &code); + + private: + DatabaseContextNNPtr context_; + std::string authority_; + std::weak_ptr<AuthorityFactory> thisFactory_{}; + std::weak_ptr<AuthorityFactory> parentFactory_{}; + std::map<std::string, AuthorityFactoryNNPtr> mapFactory_{}; + lru11::Cache<std::string, util::BaseObjectPtr> cacheUOM_{}; + lru11::Cache<std::string, util::BaseObjectPtr> cacheCRS_{}; + lru11::Cache<std::string, util::BaseObjectPtr> cacheGeodeticDatum_{}; + + static void + insertIntoCache(lru11::Cache<std::string, util::BaseObjectPtr> &cache, + const std::string &code, const util::BaseObjectPtr &obj); + + static void + getFromCache(lru11::Cache<std::string, util::BaseObjectPtr> &cache, + const std::string &code, util::BaseObjectPtr &obj); +}; + +// --------------------------------------------------------------------------- + +AuthorityFactoryNNPtr +AuthorityFactory::Private::createFactory(const std::string &auth_name) { + + // If we are a child factory, then create new factory on the parent + auto parentFactoryLocked(parentFactory_.lock()); + if (parentFactoryLocked) { + return parentFactoryLocked->d->createFactory(auth_name); + } + + // If asked for a factory with our name, return ourselves. + auto lockedThisFactory(thisFactory_.lock()); + assert(lockedThisFactory); + if (auth_name == lockedThisFactory->getAuthority()) { + return NN_NO_CHECK(lockedThisFactory); + } + + // Find if there is already a child factory with the passed name. + auto iter = mapFactory_.find(auth_name); + if (iter == mapFactory_.end()) { + auto newFactory = AuthorityFactory::create(context_, auth_name); + newFactory->d->parentFactory_ = thisFactory_; + mapFactory_.insert(std::pair<std::string, AuthorityFactoryNNPtr>( + auth_name, newFactory)); + return newFactory; + } + return iter->second; +} + +// --------------------------------------------------------------------------- + +SQLResultSet +AuthorityFactory::Private::run(const std::string &sql, + const std::vector<SQLValues> ¶meters) { + return context()->getPrivate()->run(sql, parameters); +} + +// --------------------------------------------------------------------------- + +SQLResultSet +AuthorityFactory::Private::runWithCodeParam(const std::string &sql, + const std::string &code) { + return run(sql, {authority(), code}); +} + +// --------------------------------------------------------------------------- + +SQLResultSet +AuthorityFactory::Private::runWithCodeParam(const char *sql, + const std::string &code) { + return runWithCodeParam(std::string(sql), code); +} + +// --------------------------------------------------------------------------- + +UnitOfMeasure +AuthorityFactory::Private::createUnitOfMeasure(const std::string &auth_name, + const std::string &code) { + return *(createFactory(auth_name)->createUnitOfMeasure(code)); +} + +// --------------------------------------------------------------------------- + +util::PropertyMap AuthorityFactory::Private::createProperties( + const std::string &code, const std::string &name, bool deprecated, + const metadata::ExtentPtr &extent) { + auto props = util::PropertyMap() + .set(metadata::Identifier::CODESPACE_KEY, authority()) + .set(metadata::Identifier::CODE_KEY, code) + .set(common::IdentifiedObject::NAME_KEY, name) + .set(common::IdentifiedObject::DEPRECATED_KEY, deprecated); + if (extent) { + props.set( + common::ObjectUsage::DOMAIN_OF_VALIDITY_KEY, + NN_NO_CHECK(std::static_pointer_cast<util::BaseObject>(extent))); + } + return props; +} + +// --------------------------------------------------------------------------- + +util::PropertyMap AuthorityFactory::Private::createProperties( + const std::string &code, const std::string &name, bool deprecated, + const std::string &area_of_use_auth_name, + const std::string &area_of_use_code) { + return createProperties(code, name, deprecated, + area_of_use_auth_name.empty() + ? nullptr + : createFactory(area_of_use_auth_name) + ->createExtent(area_of_use_code) + .as_nullable()); +} + +// --------------------------------------------------------------------------- + +void AuthorityFactory::Private::insertIntoCache( + lru11::Cache<std::string, util::BaseObjectPtr> &cache, + const std::string &code, const util::BaseObjectPtr &obj) { + cache.insert(code, obj); +} + +// --------------------------------------------------------------------------- + +void AuthorityFactory::Private::getFromCache( + lru11::Cache<std::string, util::BaseObjectPtr> &cache, + const std::string &code, util::BaseObjectPtr &obj) { + cache.tryGet(code, obj); +} + +// --------------------------------------------------------------------------- + +crs::CRSPtr +AuthorityFactory::Private::getCRSFromCache(const std::string &code) { + util::BaseObjectPtr obj; + getFromCache(cacheCRS_, code, obj); + return std::static_pointer_cast<crs::CRS>(obj); +} + +// --------------------------------------------------------------------------- + +void AuthorityFactory::Private::cache(const std::string &code, + const crs::CRSNNPtr &crs) { + insertIntoCache(cacheCRS_, code, crs.as_nullable()); +} + +// --------------------------------------------------------------------------- + +common::UnitOfMeasurePtr +AuthorityFactory::Private::getUOMFromCache(const std::string &code) { + util::BaseObjectPtr obj; + getFromCache(cacheUOM_, code, obj); + return std::static_pointer_cast<common::UnitOfMeasure>(obj); +} + +// --------------------------------------------------------------------------- + +void AuthorityFactory::Private::cache(const std::string &code, + const common::UnitOfMeasureNNPtr &uom) { + insertIntoCache(cacheUOM_, code, uom.as_nullable()); +} + +// --------------------------------------------------------------------------- + +datum::GeodeticReferenceFramePtr +AuthorityFactory::Private::getGeodeticDatumFromCache(const std::string &code) { + util::BaseObjectPtr obj; + getFromCache(cacheGeodeticDatum_, code, obj); + return std::static_pointer_cast<datum::GeodeticReferenceFrame>(obj); +} + +// --------------------------------------------------------------------------- + +void AuthorityFactory::Private::cache( + const std::string &code, const datum::GeodeticReferenceFrameNNPtr &datum) { + insertIntoCache(cacheGeodeticDatum_, code, datum.as_nullable()); +} + +// --------------------------------------------------------------------------- + +bool AuthorityFactory::Private::rejectOpDueToMissingGrid( + const operation::CoordinateOperationNNPtr &op, bool discardIfMissingGrid) { + if (discardIfMissingGrid) { + for (const auto &gridDesc : op->gridsNeeded(context())) { + if (!gridDesc.available) { + return true; + } + } + } + return false; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +AuthorityFactory::~AuthorityFactory() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +AuthorityFactory::AuthorityFactory(const DatabaseContextNNPtr &context, + const std::string &authorityName) + : d(internal::make_unique<Private>(context, authorityName)) {} + +// --------------------------------------------------------------------------- + +// clang-format off +/** \brief Instanciate a AuthorityFactory. + * + * The authority name might be set to the empty string in the particular case + * where createFromCoordinateReferenceSystemCodes(const std::string&,const std::string&,const std::string&,const std::string&) const + * is called. + * + * @param context Contexte. + * @param authorityName Authority name. + * @return new AuthorityFactory. + */ +// clang-format on + +AuthorityFactoryNNPtr +AuthorityFactory::create(const DatabaseContextNNPtr &context, + const std::string &authorityName) { + auto factory = AuthorityFactory::nn_make_shared<AuthorityFactory>( + context, authorityName); + factory->d->setThis(factory); + return factory; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns the database context. */ +const DatabaseContextNNPtr &AuthorityFactory::databaseContext() const { + return d->context(); +} + +// --------------------------------------------------------------------------- + +/** \brief Returns an arbitrary object from a code. + * + * The returned object will typically be an instance of Datum, + * CoordinateSystem, ReferenceSystem or CoordinateOperation. If the type of + * the object is know at compile time, it is recommended to invoke the most + * precise method instead of this one (for example + * createCoordinateReferenceSystem(code) instead of createObject(code) + * if the caller know he is asking for a coordinate reference system). + * + * If there are several objects with the same code, a FactoryException is + * thrown. + * + * @param code Object code allocated by authority. (e.g. "4326") + * @return object. + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +util::BaseObjectNNPtr +AuthorityFactory::createObject(const std::string &code) const { + + auto res = d->runWithCodeParam( + "SELECT table_name FROM object_view WHERE auth_name = ? AND code = ?", + code); + if (res.empty()) { + throw NoSuchAuthorityCodeException("not found", getAuthority(), code); + } + if (res.size() != 1) { + std::string msg( + "More than one object matching specified code. Objects found in "); + bool first = true; + for (const auto &row : res) { + if (!first) + msg += ", "; + msg += row[0]; + first = false; + } + throw FactoryException(msg); + } + const auto &table_name = res[0][0]; + if (table_name == "area") { + return util::nn_static_pointer_cast<util::BaseObject>( + createExtent(code)); + } + if (table_name == "unit_of_measure") { + return util::nn_static_pointer_cast<util::BaseObject>( + createUnitOfMeasure(code)); + } + if (table_name == "prime_meridian") { + return util::nn_static_pointer_cast<util::BaseObject>( + createPrimeMeridian(code)); + } + if (table_name == "ellipsoid") { + return util::nn_static_pointer_cast<util::BaseObject>( + createEllipsoid(code)); + } + if (table_name == "geodetic_datum") { + return util::nn_static_pointer_cast<util::BaseObject>( + createGeodeticDatum(code)); + } + if (table_name == "vertical_datum") { + return util::nn_static_pointer_cast<util::BaseObject>( + createVerticalDatum(code)); + } + if (table_name == "geodetic_crs") { + return util::nn_static_pointer_cast<util::BaseObject>( + createGeodeticCRS(code)); + } + if (table_name == "vertical_crs") { + return util::nn_static_pointer_cast<util::BaseObject>( + createVerticalCRS(code)); + } + if (table_name == "projected_crs") { + return util::nn_static_pointer_cast<util::BaseObject>( + createProjectedCRS(code)); + } + if (table_name == "compound_crs") { + return util::nn_static_pointer_cast<util::BaseObject>( + createCompoundCRS(code)); + } + if (table_name == "conversion") { + return util::nn_static_pointer_cast<util::BaseObject>( + createConversion(code)); + } + if (table_name == "helmert_transformation" || + table_name == "grid_transformation" || + table_name == "other_transformation" || + table_name == "concatenated_operation") { + return util::nn_static_pointer_cast<util::BaseObject>( + createCoordinateOperation(code, false)); + } + throw FactoryException("unimplemented factory for " + res[0][0]); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static FactoryException buildFactoryException(const char *type, + const std::string &code, + const std::exception &ex) { + return FactoryException(std::string("cannot build ") + type + " " + code + + ": " + ex.what()); +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Returns a metadata::Extent from the specified code. + * + * @param code Object code allocated by authority. + * @return object. + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +metadata::ExtentNNPtr +AuthorityFactory::createExtent(const std::string &code) const { + auto sql = "SELECT name, south_lat, north_lat, west_lon, east_lon, " + "deprecated FROM area WHERE auth_name = ? AND code = ?"; + auto res = d->runWithCodeParam(sql, code); + if (res.empty()) { + throw NoSuchAuthorityCodeException("area not found", getAuthority(), + code); + } + try { + const auto &row = res[0]; + const auto &name = row[0]; + double south_lat = c_locale_stod(row[1]); + double north_lat = c_locale_stod(row[2]); + double west_lon = c_locale_stod(row[3]); + double east_lon = c_locale_stod(row[4]); + auto bbox = metadata::GeographicBoundingBox::create( + west_lon, south_lat, east_lon, north_lat); + + return metadata::Extent::create( + util::optional<std::string>(name), + std::vector<metadata::GeographicExtentNNPtr>{bbox}, + std::vector<metadata::VerticalExtentNNPtr>(), + std::vector<metadata::TemporalExtentNNPtr>()); + + } catch (const std::exception &ex) { + throw buildFactoryException("area", code, ex); + } +} + +// --------------------------------------------------------------------------- + +/** \brief Returns a common::UnitOfMeasure from the specified code. + * + * @param code Object code allocated by authority. + * @return object. + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +UnitOfMeasureNNPtr +AuthorityFactory::createUnitOfMeasure(const std::string &code) const { + { + auto uom = d->getUOMFromCache(code); + if (uom) { + return NN_NO_CHECK(uom); + } + } + auto res = d->runWithCodeParam( + "SELECT name, conv_factor, type, deprecated FROM unit_of_measure WHERE " + "auth_name = ? AND code = ?", + code); + if (res.empty()) { + throw NoSuchAuthorityCodeException("unit of measure not found", + getAuthority(), code); + } + try { + const auto &row = res[0]; + const auto &name = + (row[0] == "degree (supplier to define representation)") + ? UnitOfMeasure::DEGREE.name() + : row[0]; + double conv_factor = (code == "9107" || code == "9108") + ? UnitOfMeasure::DEGREE.conversionToSI() + : c_locale_stod(row[1]); + constexpr double EPS = 1e-10; + if (std::fabs(conv_factor - UnitOfMeasure::DEGREE.conversionToSI()) < + EPS * UnitOfMeasure::DEGREE.conversionToSI()) { + conv_factor = UnitOfMeasure::DEGREE.conversionToSI(); + } + if (std::fabs(conv_factor - + UnitOfMeasure::ARC_SECOND.conversionToSI()) < + EPS * UnitOfMeasure::ARC_SECOND.conversionToSI()) { + conv_factor = UnitOfMeasure::ARC_SECOND.conversionToSI(); + } + const auto &type_str = row[2]; + UnitOfMeasure::Type unitType = UnitOfMeasure::Type::UNKNOWN; + if (type_str == "length") + unitType = UnitOfMeasure::Type::LINEAR; + else if (type_str == "angle") + unitType = UnitOfMeasure::Type::ANGULAR; + else if (type_str == "scale") + unitType = UnitOfMeasure::Type::SCALE; + else if (type_str == "time") + unitType = UnitOfMeasure::Type::TIME; + auto uom = util::nn_make_shared<UnitOfMeasure>( + name, conv_factor, unitType, getAuthority(), code); + d->cache(code, uom); + return uom; + } catch (const std::exception &ex) { + throw buildFactoryException("unit of measure", code, ex); + } +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static void normalizeMeasure(const std::string &uom_code, + const std::string &value, + std::string &normalized_uom_code, + double &normalized_value) { + normalized_uom_code = uom_code; + normalized_value = c_locale_stod(value); + if (uom_code == "9110") // DDD.MMSSsss..... + { + std::ostringstream buffer; + buffer.imbue(std::locale::classic()); + constexpr size_t precision = 12; + buffer << std::fixed << std::setprecision(precision) + << normalized_value; + auto formatted = buffer.str(); + size_t dotPos = formatted.find('.'); + assert(dotPos + 1 + precision == formatted.size()); + auto minutes = formatted.substr(dotPos + 1, 2); + auto seconds = formatted.substr(dotPos + 3); + assert(seconds.size() == precision - 2); + normalized_value = + (normalized_value < 0 ? -1.0 : 1.0) * + (int(std::fabs(normalized_value)) + c_locale_stod(minutes) / 60. + + (c_locale_stod(seconds) / std::pow(10, seconds.size() - 2)) / + 3600.); + normalized_uom_code = common::UnitOfMeasure::DEGREE.code(); + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Returns a datum::PrimeMeridian from the specified code. + * + * @param code Object code allocated by authority. + * @return object. + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +datum::PrimeMeridianNNPtr +AuthorityFactory::createPrimeMeridian(const std::string &code) const { + auto res = d->runWithCodeParam( + "SELECT name, longitude, uom_auth_name, uom_code, deprecated FROM " + "prime_meridian WHERE " + "auth_name = ? AND code = ?", + code); + if (res.empty()) { + throw NoSuchAuthorityCodeException("prime meridian not found", + getAuthority(), code); + } + try { + const auto &row = res[0]; + const auto &name = row[0]; + const auto &longitude = row[1]; + const auto &uom_auth_name = row[2]; + const auto &uom_code = row[3]; + const bool deprecated = row[4] == "1"; + + std::string normalized_uom_code(uom_code); + double normalized_value(c_locale_stod(longitude)); + normalizeMeasure(uom_code, longitude, normalized_uom_code, + normalized_value); + + auto uom = d->createUnitOfMeasure(uom_auth_name, normalized_uom_code); + auto props = d->createProperties(code, name, deprecated, nullptr); + return datum::PrimeMeridian::create( + props, common::Angle(normalized_value, uom)); + } catch (const std::exception &ex) { + throw buildFactoryException("prime meridian", code, ex); + } +} + +// --------------------------------------------------------------------------- + +/** \brief Identify a celestial body from an approximate radius. + * + * @param semi_major_axis Approximate semi-major axis. + * @param tolerance Relative error allowed. + * @return celestial body name if one single match found. + * @throw FactoryException + */ + +std::string +AuthorityFactory::identifyBodyFromSemiMajorAxis(double semi_major_axis, + double tolerance) const { + auto res = + d->run("SELECT name, (ABS(semi_major_axis - ?) / semi_major_axis ) " + "AS rel_error FROM celestial_body WHERE rel_error <= ?", + {semi_major_axis, tolerance}); + if (res.empty()) { + throw FactoryException("no match found"); + } + if (res.size() > 1) { + throw FactoryException("more than one match found"); + } + return res[0][0]; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns a datum::Ellipsoid from the specified code. + * + * @param code Object code allocated by authority. + * @return object. + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +datum::EllipsoidNNPtr +AuthorityFactory::createEllipsoid(const std::string &code) const { + auto res = d->runWithCodeParam( + "SELECT ellipsoid.name, ellipsoid.semi_major_axis, " + "ellipsoid.uom_auth_name, ellipsoid.uom_code, " + "ellipsoid.inv_flattening, ellipsoid.semi_minor_axis, " + "celestial_body.name AS body_name, ellipsoid.deprecated FROM " + "ellipsoid JOIN celestial_body " + "ON ellipsoid.celestial_body_auth_name = celestial_body.auth_name AND " + "ellipsoid.celestial_body_code = celestial_body.code WHERE " + "ellipsoid.auth_name = ? AND ellipsoid.code = ?", + code); + if (res.empty()) { + throw NoSuchAuthorityCodeException("ellipsoid not found", + getAuthority(), code); + } + try { + const auto &row = res[0]; + const auto &name = row[0]; + const auto &semi_major_axis_str = row[1]; + double semi_major_axis = c_locale_stod(semi_major_axis_str); + const auto &uom_auth_name = row[2]; + const auto &uom_code = row[3]; + const auto &inv_flattening_str = row[4]; + const auto &semi_minor_axis_str = row[5]; + const auto &body = row[6]; + const bool deprecated = row[7] == "1"; + auto uom = d->createUnitOfMeasure(uom_auth_name, uom_code); + auto props = d->createProperties(code, name, deprecated, nullptr); + if (!inv_flattening_str.empty()) { + return datum::Ellipsoid::createFlattenedSphere( + props, common::Length(semi_major_axis, uom), + common::Scale(c_locale_stod(inv_flattening_str)), body); + } else if (semi_major_axis_str == semi_minor_axis_str) { + return datum::Ellipsoid::createSphere( + props, common::Length(semi_major_axis, uom), body); + } else { + return datum::Ellipsoid::createTwoAxis( + props, common::Length(semi_major_axis, uom), + common::Length(c_locale_stod(semi_minor_axis_str), uom), body); + } + } catch (const std::exception &ex) { + throw buildFactoryException("elllipsoid", code, ex); + } +} + +// --------------------------------------------------------------------------- + +/** \brief Returns a datum::GeodeticReferenceFrame from the specified code. + * + * @param code Object code allocated by authority. + * @return object. + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +datum::GeodeticReferenceFrameNNPtr +AuthorityFactory::createGeodeticDatum(const std::string &code) const { + { + auto datum = d->getGeodeticDatumFromCache(code); + if (datum) { + return NN_NO_CHECK(datum); + } + } + auto res = d->runWithCodeParam( + "SELECT name, ellipsoid_auth_name, ellipsoid_code, " + "prime_meridian_auth_name, prime_meridian_code, area_of_use_auth_name, " + "area_of_use_code, deprecated FROM geodetic_datum WHERE " + "auth_name = ? AND code = ?", + code); + if (res.empty()) { + throw NoSuchAuthorityCodeException("geodetic datum not found", + getAuthority(), code); + } + try { + const auto &row = res[0]; + const auto &name = row[0]; + const auto &ellipsoid_auth_name = row[1]; + const auto &ellipsoid_code = row[2]; + const auto &prime_meridian_auth_name = row[3]; + const auto &prime_meridian_code = row[4]; + const auto &area_of_use_auth_name = row[5]; + const auto &area_of_use_code = row[6]; + const bool deprecated = row[7] == "1"; + auto ellipsoid = d->createFactory(ellipsoid_auth_name) + ->createEllipsoid(ellipsoid_code); + auto pm = d->createFactory(prime_meridian_auth_name) + ->createPrimeMeridian(prime_meridian_code); + auto props = d->createProperties( + code, name, deprecated, area_of_use_auth_name, area_of_use_code); + auto anchor = util::optional<std::string>(); + auto datum = + datum::GeodeticReferenceFrame::create(props, ellipsoid, anchor, pm); + d->cache(code, datum); + return datum; + } catch (const std::exception &ex) { + throw buildFactoryException("geodetic reference frame", code, ex); + } +} + +// --------------------------------------------------------------------------- + +/** \brief Returns a datum::VerticalReferenceFrame from the specified code. + * + * @param code Object code allocated by authority. + * @return object. + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +datum::VerticalReferenceFrameNNPtr +AuthorityFactory::createVerticalDatum(const std::string &code) const { + auto res = d->runWithCodeParam( + "SELECT name, area_of_use_auth_name, area_of_use_code, deprecated FROM " + "vertical_datum WHERE auth_name = ? AND code = ?", + code); + if (res.empty()) { + throw NoSuchAuthorityCodeException("vertical datum not found", + getAuthority(), code); + } + try { + const auto &row = res[0]; + const auto &name = row[0]; + const auto &area_of_use_auth_name = row[1]; + const auto &area_of_use_code = row[2]; + const bool deprecated = row[3] == "1"; + auto props = d->createProperties( + code, name, deprecated, area_of_use_auth_name, area_of_use_code); + auto anchor = util::optional<std::string>(); + return datum::VerticalReferenceFrame::create(props, anchor); + } catch (const std::exception &ex) { + throw buildFactoryException("vertical reference frame", code, ex); + } +} + +// --------------------------------------------------------------------------- + +/** \brief Returns a datum::Datum from the specified code. + * + * @param code Object code allocated by authority. + * @return object. + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +datum::DatumNNPtr AuthorityFactory::createDatum(const std::string &code) const { + auto res = + d->run("SELECT 'geodetic_datum' FROM geodetic_datum WHERE " + "auth_name = ? AND code = ? " + "UNION ALL SELECT 'vertical_datum' FROM vertical_datum WHERE " + "auth_name = ? AND code = ?", + {getAuthority(), code, getAuthority(), code}); + if (res.empty()) { + throw NoSuchAuthorityCodeException("datum not found", getAuthority(), + code); + } + if (res[0][0] == "geodetic_datum") { + return createGeodeticDatum(code); + } + return createVerticalDatum(code); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static cs::MeridianPtr createMeridian(const std::string &val) { + try { + const std::string degW(std::string("\xC2\xB0") + "W"); + if (ends_with(val, degW)) { + return cs::Meridian::create(common::Angle( + -c_locale_stod(val.substr(0, val.size() - degW.size())))); + } + const std::string degE(std::string("\xC2\xB0") + "E"); + if (ends_with(val, degE)) { + return cs::Meridian::create(common::Angle( + c_locale_stod(val.substr(0, val.size() - degE.size())))); + } + } catch (const std::exception &) { + } + return nullptr; +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Returns a cs::CoordinateSystem from the specified code. + * + * @param code Object code allocated by authority. + * @return object. + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +cs::CoordinateSystemNNPtr +AuthorityFactory::createCoordinateSystem(const std::string &code) const { + auto res = d->runWithCodeParam( + "SELECT axis.name, abbrev, orientation, uom_auth_name, uom_code, " + "cs.type FROM " + "axis LEFT JOIN coordinate_system cs ON " + "axis.coordinate_system_auth_name = cs.auth_name AND " + "axis.coordinate_system_code = cs.code WHERE " + "coordinate_system_auth_name = ? AND coordinate_system_code = ? ORDER " + "BY coordinate_system_order", + code); + if (res.empty()) { + throw NoSuchAuthorityCodeException("coordinate system not found", + getAuthority(), code); + } + + const auto &csType = res[0][5]; + std::vector<cs::CoordinateSystemAxisNNPtr> axisList; + for (const auto &row : res) { + const auto &name = row[0]; + const auto &abbrev = row[1]; + const auto &orientation = row[2]; + const auto &uom_auth_name = row[3]; + const auto &uom_code = row[4]; + auto uom = d->createUnitOfMeasure(uom_auth_name, uom_code); + auto props = + util::PropertyMap().set(common::IdentifiedObject::NAME_KEY, name); + const cs::AxisDirection *direction = + cs::AxisDirection::valueOf(orientation); + cs::MeridianPtr meridian; + if (direction == nullptr) { + if (orientation == "Geocentre > equator/0" + "\xC2\xB0" + "E") { + direction = &(cs::AxisDirection::GEOCENTRIC_X); + } else if (orientation == "Geocentre > equator/90" + "\xC2\xB0" + "E") { + direction = &(cs::AxisDirection::GEOCENTRIC_Y); + } else if (orientation == "Geocentre > north pole") { + direction = &(cs::AxisDirection::GEOCENTRIC_Z); + } else if (starts_with(orientation, "North along ")) { + direction = &(cs::AxisDirection::NORTH); + meridian = + createMeridian(orientation.substr(strlen("North along "))); + } else if (starts_with(orientation, "South along ")) { + direction = &(cs::AxisDirection::SOUTH); + meridian = + createMeridian(orientation.substr(strlen("South along "))); + } else { + throw FactoryException("unknown axis direction: " + + orientation); + } + } + axisList.emplace_back(cs::CoordinateSystemAxis::create( + props, abbrev, *direction, uom, meridian)); + } + auto props = util::PropertyMap() + .set(metadata::Identifier::CODESPACE_KEY, getAuthority()) + .set(metadata::Identifier::CODE_KEY, code); + if (csType == "ellipsoidal") { + if (axisList.size() == 2) { + return cs::EllipsoidalCS::create(props, axisList[0], axisList[1]); + } + if (axisList.size() == 3) { + return cs::EllipsoidalCS::create(props, axisList[0], axisList[1], + axisList[2]); + } + throw FactoryException("invalid number of axis for EllipsoidalCS"); + } + if (csType == "Cartesian") { + if (axisList.size() == 2) { + return cs::CartesianCS::create(props, axisList[0], axisList[1]); + } + if (axisList.size() == 3) { + return cs::CartesianCS::create(props, axisList[0], axisList[1], + axisList[2]); + } + throw FactoryException("invalid number of axis for CartesianCS"); + } + if (csType == "vertical") { + if (axisList.size() == 1) { + return cs::VerticalCS::create(props, axisList[0]); + } + throw FactoryException("invalid number of axis for VerticalCS"); + } + throw FactoryException("unhandled coordinate system type: " + csType); +} + +// --------------------------------------------------------------------------- + +/** \brief Returns a crs::GeodeticCRS from the specified code. + * + * @param code Object code allocated by authority. + * @return object. + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +crs::GeodeticCRSNNPtr +AuthorityFactory::createGeodeticCRS(const std::string &code) const { + return createGeodeticCRS(code, false); +} + +// --------------------------------------------------------------------------- + +/** \brief Returns a crs::GeographicCRS from the specified code. + * + * @param code Object code allocated by authority. + * @return object. + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +crs::GeographicCRSNNPtr +AuthorityFactory::createGeographicCRS(const std::string &code) const { + return NN_NO_CHECK(util::nn_dynamic_pointer_cast<crs::GeographicCRS>( + createGeodeticCRS(code, true))); +} + +// --------------------------------------------------------------------------- + +static crs::GeodeticCRSNNPtr +cloneWithProps(const crs::GeodeticCRSNNPtr &geodCRS, + const util::PropertyMap &props) { + auto cs = geodCRS->coordinateSystem(); + auto datum = geodCRS->datum(); + if (!datum) { + return geodCRS; + } + auto ellipsoidalCS = util::nn_dynamic_pointer_cast<cs::EllipsoidalCS>(cs); + if (ellipsoidalCS) { + return crs::GeographicCRS::create(props, NN_NO_CHECK(datum), + NN_NO_CHECK(ellipsoidalCS)); + } + auto geocentricCS = util::nn_dynamic_pointer_cast<cs::CartesianCS>(cs); + if (geocentricCS) { + return crs::GeodeticCRS::create(props, NN_NO_CHECK(datum), + NN_NO_CHECK(geocentricCS)); + } + return geodCRS; +} + +// --------------------------------------------------------------------------- + +crs::GeodeticCRSNNPtr +AuthorityFactory::createGeodeticCRS(const std::string &code, + bool geographicOnly) const { + auto crs = + std::dynamic_pointer_cast<crs::GeodeticCRS>(d->getCRSFromCache(code)); + if (crs) { + return NN_NO_CHECK(crs); + } + std::string sql("SELECT name, type, coordinate_system_auth_name, " + "coordinate_system_code, datum_auth_name, datum_code, " + "area_of_use_auth_name, area_of_use_code, text_definition, " + "deprecated FROM " + "geodetic_crs WHERE auth_name = ? AND code = ?"); + if (geographicOnly) { + sql += " AND type in (" GEOG_2D "," GEOG_3D ")"; + } + auto res = d->runWithCodeParam(sql, code); + if (res.empty()) { + throw NoSuchAuthorityCodeException("geodeticCRS not found", + getAuthority(), code); + } + try { + const auto &row = res[0]; + const auto &name = row[0]; + const auto &type = row[1]; + const auto &cs_auth_name = row[2]; + const auto &cs_code = row[3]; + const auto &datum_auth_name = row[4]; + const auto &datum_code = row[5]; + const auto &area_of_use_auth_name = row[6]; + const auto &area_of_use_code = row[7]; + const auto &text_definition = row[8]; + const bool deprecated = row[9] == "1"; + + auto props = d->createProperties( + code, name, deprecated, area_of_use_auth_name, area_of_use_code); + + if (!text_definition.empty()) { + DatabaseContext::Private::RecursionDetector detector(d->context()); + auto obj = createFromUserInput(text_definition, d->context()); + auto geodCRS = util::nn_dynamic_pointer_cast<crs::GeodeticCRS>(obj); + if (geodCRS) { + return cloneWithProps(NN_NO_CHECK(geodCRS), props); + } + + auto boundCRS = dynamic_cast<const crs::BoundCRS *>(obj.get()); + if (boundCRS) { + geodCRS = util::nn_dynamic_pointer_cast<crs::GeodeticCRS>( + boundCRS->baseCRS()); + if (geodCRS) { + auto newBoundCRS = crs::BoundCRS::create( + cloneWithProps(NN_NO_CHECK(geodCRS), props), + boundCRS->hubCRS(), boundCRS->transformation()); + return NN_NO_CHECK( + util::nn_dynamic_pointer_cast<crs::GeodeticCRS>( + newBoundCRS->baseCRSWithCanonicalBoundCRS())); + } + } + + throw FactoryException( + "text_definition does not define a GeodeticCRS"); + } + + auto cs = + d->createFactory(cs_auth_name)->createCoordinateSystem(cs_code); + auto datum = + d->createFactory(datum_auth_name)->createGeodeticDatum(datum_code); + + auto ellipsoidalCS = + util::nn_dynamic_pointer_cast<cs::EllipsoidalCS>(cs); + if ((type == "geographic 2D" || type == "geographic 3D") && + ellipsoidalCS) { + auto crsRet = crs::GeographicCRS::create( + props, datum, NN_NO_CHECK(ellipsoidalCS)); + d->cache(code, crsRet); + return crsRet; + } + auto geocentricCS = util::nn_dynamic_pointer_cast<cs::CartesianCS>(cs); + if (type == "geocentric" && geocentricCS) { + auto crsRet = crs::GeodeticCRS::create(props, datum, + NN_NO_CHECK(geocentricCS)); + d->cache(code, crsRet); + return crsRet; + } + throw FactoryException("unsupported (type, CS type) for geodeticCRS: " + + type + ", " + cs->getWKT2Type(true)); + } catch (const std::exception &ex) { + throw buildFactoryException("geodeticCRS", code, ex); + } +} + +// --------------------------------------------------------------------------- + +/** \brief Returns a crs::VerticalCRS from the specified code. + * + * @param code Object code allocated by authority. + * @return object. + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +crs::VerticalCRSNNPtr +AuthorityFactory::createVerticalCRS(const std::string &code) const { + auto res = d->runWithCodeParam( + "SELECT name, coordinate_system_auth_name, " + "coordinate_system_code, datum_auth_name, datum_code, " + "area_of_use_auth_name, area_of_use_code, deprecated FROM " + "vertical_crs WHERE auth_name = ? AND code = ?", + code); + if (res.empty()) { + throw NoSuchAuthorityCodeException("verticalCRS not found", + getAuthority(), code); + } + try { + const auto &row = res[0]; + const auto &name = row[0]; + const auto &cs_auth_name = row[1]; + const auto &cs_code = row[2]; + const auto &datum_auth_name = row[3]; + const auto &datum_code = row[4]; + const auto &area_of_use_auth_name = row[5]; + const auto &area_of_use_code = row[6]; + const bool deprecated = row[7] == "1"; + auto cs = + d->createFactory(cs_auth_name)->createCoordinateSystem(cs_code); + auto datum = + d->createFactory(datum_auth_name)->createVerticalDatum(datum_code); + + auto props = d->createProperties( + code, name, deprecated, area_of_use_auth_name, area_of_use_code); + + auto verticalCS = util::nn_dynamic_pointer_cast<cs::VerticalCS>(cs); + if (verticalCS) { + return crs::VerticalCRS::create(props, datum, + NN_NO_CHECK(verticalCS)); + } + throw FactoryException("unsupported CS type for verticalCRS: " + + cs->getWKT2Type(true)); + } catch (const std::exception &ex) { + throw buildFactoryException("verticalCRS", code, ex); + } +} + +// --------------------------------------------------------------------------- + +/** \brief Returns a operation::Conversion from the specified code. + * + * @param code Object code allocated by authority. + * @return object. + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +operation::ConversionNNPtr +AuthorityFactory::createConversion(const std::string &code) const { + std::ostringstream buffer; + buffer.imbue(std::locale::classic()); + buffer << "SELECT name, area_of_use_auth_name, area_of_use_code, " + "method_auth_name, method_code, method_name"; + constexpr int N_MAX_PARAMS = 7; + for (int i = 1; i <= N_MAX_PARAMS; ++i) { + buffer << ", param" << i << "_auth_name"; + buffer << ", param" << i << "_code"; + buffer << ", param" << i << "_name"; + buffer << ", param" << i << "_value"; + buffer << ", param" << i << "_uom_auth_name"; + buffer << ", param" << i << "_uom_code"; + } + buffer << ", deprecated FROM conversion WHERE auth_name = ? AND code = ?"; + + auto res = d->runWithCodeParam(buffer.str(), code); + if (res.empty()) { + throw NoSuchAuthorityCodeException("conversion not found", + getAuthority(), code); + } + try { + const auto &row = res[0]; + size_t idx = 0; + const auto &name = row[idx++]; + const auto &area_of_use_auth_name = row[idx++]; + const auto &area_of_use_code = row[idx++]; + const auto &method_auth_name = row[idx++]; + const auto &method_code = row[idx++]; + const auto &method_name = row[idx++]; + const size_t base_param_idx = idx; + std::vector<operation::OperationParameterNNPtr> parameters; + std::vector<operation::ParameterValueNNPtr> values; + for (int i = 0; i < N_MAX_PARAMS; ++i) { + const auto ¶m_auth_name = row[base_param_idx + i * 6 + 0]; + if (param_auth_name.empty()) { + break; + } + const auto ¶m_code = row[base_param_idx + i * 6 + 1]; + const auto ¶m_name = row[base_param_idx + i * 6 + 2]; + const auto ¶m_value = row[base_param_idx + i * 6 + 3]; + const auto ¶m_uom_auth_name = row[base_param_idx + i * 6 + 4]; + const auto ¶m_uom_code = row[base_param_idx + i * 6 + 5]; + parameters.emplace_back(operation::OperationParameter::create( + util::PropertyMap() + .set(metadata::Identifier::CODESPACE_KEY, param_auth_name) + .set(metadata::Identifier::CODE_KEY, param_code) + .set(common::IdentifiedObject::NAME_KEY, param_name))); + std::string normalized_uom_code(param_uom_code); + double normalized_value(c_locale_stod(param_value)); + normalizeMeasure(param_uom_code, param_value, normalized_uom_code, + normalized_value); + auto uom = d->createUnitOfMeasure(param_uom_auth_name, + normalized_uom_code); + values.emplace_back(operation::ParameterValue::create( + common::Measure(normalized_value, uom))); + } + const bool deprecated = row[base_param_idx + N_MAX_PARAMS * 6] == "1"; + + auto propConversion = d->createProperties( + code, name, deprecated, area_of_use_auth_name, area_of_use_code); + + auto propMethod = util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, method_name); + if (!method_auth_name.empty()) { + propMethod + .set(metadata::Identifier::CODESPACE_KEY, method_auth_name) + .set(metadata::Identifier::CODE_KEY, method_code); + } + + return operation::Conversion::create(propConversion, propMethod, + parameters, values); + } catch (const std::exception &ex) { + throw buildFactoryException("conversion", code, ex); + } +} + +// --------------------------------------------------------------------------- + +/** \brief Returns a crs::ProjectedCRS from the specified code. + * + * @param code Object code allocated by authority. + * @return object. + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +crs::ProjectedCRSNNPtr +AuthorityFactory::createProjectedCRS(const std::string &code) const { + auto res = d->runWithCodeParam( + "SELECT name, coordinate_system_auth_name, " + "coordinate_system_code, geodetic_crs_auth_name, geodetic_crs_code, " + "conversion_auth_name, conversion_code, " + "area_of_use_auth_name, area_of_use_code, text_definition, " + "deprecated FROM projected_crs WHERE auth_name = ? AND code = ?", + code); + if (res.empty()) { + throw NoSuchAuthorityCodeException("projectedCRS not found", + getAuthority(), code); + } + try { + const auto &row = res[0]; + const auto &name = row[0]; + const auto &cs_auth_name = row[1]; + const auto &cs_code = row[2]; + const auto &geodetic_crs_auth_name = row[3]; + const auto &geodetic_crs_code = row[4]; + const auto &conversion_auth_name = row[5]; + const auto &conversion_code = row[6]; + const auto &area_of_use_auth_name = row[7]; + const auto &area_of_use_code = row[8]; + const auto &text_definition = row[9]; + const bool deprecated = row[10] == "1"; + + auto props = d->createProperties( + code, name, deprecated, area_of_use_auth_name, area_of_use_code); + + if (!text_definition.empty()) { + DatabaseContext::Private::RecursionDetector detector(d->context()); + auto obj = createFromUserInput(text_definition, d->context()); + auto projCRS = dynamic_cast<const crs::ProjectedCRS *>(obj.get()); + if (projCRS) { + const auto &conv = projCRS->derivingConversionRef(); + auto newConv = + (conv->nameStr() == "unnamed") + ? operation::Conversion::create( + util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, name), + conv->method(), conv->parameterValues()) + : conv; + return crs::ProjectedCRS::create(props, projCRS->baseCRS(), + newConv, + projCRS->coordinateSystem()); + } + + auto boundCRS = dynamic_cast<const crs::BoundCRS *>(obj.get()); + if (boundCRS) { + projCRS = dynamic_cast<const crs::ProjectedCRS *>( + boundCRS->baseCRS().get()); + if (projCRS) { + auto newBoundCRS = crs::BoundCRS::create( + crs::ProjectedCRS::create( + props, projCRS->baseCRS(), + projCRS->derivingConversionRef(), + projCRS->coordinateSystem()), + boundCRS->hubCRS(), boundCRS->transformation()); + return NN_NO_CHECK( + util::nn_dynamic_pointer_cast<crs::ProjectedCRS>( + newBoundCRS->baseCRSWithCanonicalBoundCRS())); + } + } + + throw FactoryException( + "text_definition does not define a ProjectedCRS"); + } + + auto cs = + d->createFactory(cs_auth_name)->createCoordinateSystem(cs_code); + + auto baseCRS = d->createFactory(geodetic_crs_auth_name) + ->createGeodeticCRS(geodetic_crs_code); + + auto conv = d->createFactory(conversion_auth_name) + ->createConversion(conversion_code); + + auto cartesianCS = util::nn_dynamic_pointer_cast<cs::CartesianCS>(cs); + if (cartesianCS) { + return crs::ProjectedCRS::create(props, baseCRS, conv, + NN_NO_CHECK(cartesianCS)); + } + throw FactoryException("unsupported CS type for projectedCRS: " + + cs->getWKT2Type(true)); + } catch (const std::exception &ex) { + throw buildFactoryException("projectedCRS", code, ex); + } +} + +// --------------------------------------------------------------------------- + +/** \brief Returns a crs::CompoundCRS from the specified code. + * + * @param code Object code allocated by authority. + * @return object. + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +crs::CompoundCRSNNPtr +AuthorityFactory::createCompoundCRS(const std::string &code) const { + auto res = d->runWithCodeParam( + "SELECT name, horiz_crs_auth_name, horiz_crs_code, " + "vertical_crs_auth_name, vertical_crs_code, " + "area_of_use_auth_name, area_of_use_code, deprecated FROM " + "compound_crs WHERE auth_name = ? AND code = ?", + code); + if (res.empty()) { + throw NoSuchAuthorityCodeException("compoundCRS not found", + getAuthority(), code); + } + try { + const auto &row = res[0]; + const auto &name = row[0]; + const auto &horiz_crs_auth_name = row[1]; + const auto &horiz_crs_code = row[2]; + const auto &vertical_crs_auth_name = row[3]; + const auto &vertical_crs_code = row[4]; + const auto &area_of_use_auth_name = row[5]; + const auto &area_of_use_code = row[6]; + const bool deprecated = row[7] == "1"; + + auto horizCRS = + d->createFactory(horiz_crs_auth_name) + ->createCoordinateReferenceSystem(horiz_crs_code, false); + auto vertCRS = d->createFactory(vertical_crs_auth_name) + ->createVerticalCRS(vertical_crs_code); + + auto props = d->createProperties( + code, name, deprecated, area_of_use_auth_name, area_of_use_code); + return crs::CompoundCRS::create( + props, std::vector<crs::CRSNNPtr>{horizCRS, vertCRS}); + } catch (const std::exception &ex) { + throw buildFactoryException("compoundCRS", code, ex); + } +} + +// --------------------------------------------------------------------------- + +/** \brief Returns a crs::CRS from the specified code. + * + * @param code Object code allocated by authority. + * @return object. + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +crs::CRSNNPtr AuthorityFactory::createCoordinateReferenceSystem( + const std::string &code) const { + return createCoordinateReferenceSystem(code, true); +} + +crs::CRSNNPtr +AuthorityFactory::createCoordinateReferenceSystem(const std::string &code, + bool allowCompound) const { + auto crs = d->getCRSFromCache(code); + if (crs) { + return NN_NO_CHECK(crs); + } + auto res = d->runWithCodeParam( + "SELECT type FROM crs_view WHERE auth_name = ? AND code = ?", code); + if (res.empty()) { + throw NoSuchAuthorityCodeException("crs not found", getAuthority(), + code); + } + const auto &type = res[0][0]; + if (type == "geographic 2D" || type == "geographic 3D" || + type == "geocentric") { + return createGeodeticCRS(code); + } + if (type == "vertical") { + return createVerticalCRS(code); + } + if (type == "projected") { + return createProjectedCRS(code); + } + if (allowCompound && type == "compound") { + return createCompoundCRS(code); + } + throw FactoryException("unhandled CRS type: " + type); +} +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +static util::PropertyMap createMapNameEPSGCode(const std::string &name, + int code) { + return util::PropertyMap() + .set(common::IdentifiedObject::NAME_KEY, name) + .set(metadata::Identifier::CODESPACE_KEY, metadata::Identifier::EPSG) + .set(metadata::Identifier::CODE_KEY, code); +} + +// --------------------------------------------------------------------------- + +static operation::OperationParameterNNPtr createOpParamNameEPSGCode(int code) { + const char *name = operation::OperationParameter::getNameForEPSGCode(code); + assert(name); + return operation::OperationParameter::create( + createMapNameEPSGCode(name, code)); +} + +static operation::ParameterValueNNPtr createLength(const std::string &value, + const UnitOfMeasure &uom) { + return operation::ParameterValue::create( + common::Length(c_locale_stod(value), uom)); +} + +static operation::ParameterValueNNPtr createAngle(const std::string &value, + const UnitOfMeasure &uom) { + return operation::ParameterValue::create( + common::Angle(c_locale_stod(value), uom)); +} + +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Returns a operation::CoordinateOperation from the specified code. + * + * @param code Object code allocated by authority. + * @param usePROJAlternativeGridNames Whether PROJ alternative grid names + * should be substituted to the official grid names. + * @return object. + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +operation::CoordinateOperationNNPtr AuthorityFactory::createCoordinateOperation( + const std::string &code, bool usePROJAlternativeGridNames) const { + return createCoordinateOperation(code, true, usePROJAlternativeGridNames); +} + +operation::CoordinateOperationNNPtr AuthorityFactory::createCoordinateOperation( + const std::string &code, bool allowConcatenated, + bool usePROJAlternativeGridNames) const { + auto res = d->runWithCodeParam( + "SELECT type FROM coordinate_operation_with_conversion_view " + "WHERE auth_name = ? AND code = ?", + code); + if (res.empty()) { + throw NoSuchAuthorityCodeException("coordinate operation not found", + getAuthority(), code); + } + const auto type = res[0][0]; + if (type == "conversion") { + return createConversion(code); + } + + if (type == "helmert_transformation") { + + res = d->runWithCodeParam( + "SELECT name, method_auth_name, method_code, method_name, " + "source_crs_auth_name, source_crs_code, target_crs_auth_name, " + "target_crs_code, area_of_use_auth_name, area_of_use_code, " + "accuracy, tx, ty, tz, translation_uom_auth_name, " + "translation_uom_code, rx, ry, rz, rotation_uom_auth_name, " + "rotation_uom_code, scale_difference, " + "scale_difference_uom_auth_name, scale_difference_uom_code, " + "rate_tx, rate_ty, rate_tz, rate_translation_uom_auth_name, " + "rate_translation_uom_code, rate_rx, rate_ry, rate_rz, " + "rate_rotation_uom_auth_name, rate_rotation_uom_code, " + "rate_scale_difference, rate_scale_difference_uom_auth_name, " + "rate_scale_difference_uom_code, epoch, epoch_uom_auth_name, " + "epoch_uom_code, px, py, pz, pivot_uom_auth_name, pivot_uom_code, " + "deprecated FROM " + "helmert_transformation WHERE auth_name = ? AND code = ?", + code); + if (res.empty()) { + // shouldn't happen if foreign keys are OK + throw NoSuchAuthorityCodeException( + "helmert_transformation not found", getAuthority(), code); + } + try { + const auto &row = res[0]; + size_t idx = 0; + const auto &name = row[idx++]; + const auto &method_auth_name = row[idx++]; + const auto &method_code = row[idx++]; + const auto &method_name = row[idx++]; + const auto &source_crs_auth_name = row[idx++]; + const auto &source_crs_code = row[idx++]; + const auto &target_crs_auth_name = row[idx++]; + const auto &target_crs_code = row[idx++]; + const auto &area_of_use_auth_name = row[idx++]; + const auto &area_of_use_code = row[idx++]; + const auto &accuracy = row[idx++]; + + const auto &tx = row[idx++]; + const auto &ty = row[idx++]; + const auto &tz = row[idx++]; + const auto &translation_uom_auth_name = row[idx++]; + const auto &translation_uom_code = row[idx++]; + const auto &rx = row[idx++]; + const auto &ry = row[idx++]; + const auto &rz = row[idx++]; + const auto &rotation_uom_auth_name = row[idx++]; + const auto &rotation_uom_code = row[idx++]; + const auto &scale_difference = row[idx++]; + const auto &scale_difference_uom_auth_name = row[idx++]; + const auto &scale_difference_uom_code = row[idx++]; + + const auto &rate_tx = row[idx++]; + const auto &rate_ty = row[idx++]; + const auto &rate_tz = row[idx++]; + const auto &rate_translation_uom_auth_name = row[idx++]; + const auto &rate_translation_uom_code = row[idx++]; + const auto &rate_rx = row[idx++]; + const auto &rate_ry = row[idx++]; + const auto &rate_rz = row[idx++]; + const auto &rate_rotation_uom_auth_name = row[idx++]; + const auto &rate_rotation_uom_code = row[idx++]; + const auto &rate_scale_difference = row[idx++]; + const auto &rate_scale_difference_uom_auth_name = row[idx++]; + const auto &rate_scale_difference_uom_code = row[idx++]; + + const auto &epoch = row[idx++]; + const auto &epoch_uom_auth_name = row[idx++]; + const auto &epoch_uom_code = row[idx++]; + + const auto &px = row[idx++]; + const auto &py = row[idx++]; + const auto &pz = row[idx++]; + const auto &pivot_uom_auth_name = row[idx++]; + const auto &pivot_uom_code = row[idx++]; + + const auto &deprecated_str = row[idx++]; + const bool deprecated = deprecated_str == "1"; + assert(idx == row.size()); + + auto uom_translation = d->createUnitOfMeasure( + translation_uom_auth_name, translation_uom_code); + + auto uom_epoch = epoch_uom_auth_name.empty() + ? common::UnitOfMeasure::NONE + : d->createUnitOfMeasure(epoch_uom_auth_name, + epoch_uom_code); + + auto sourceCRS = + d->createFactory(source_crs_auth_name) + ->createCoordinateReferenceSystem(source_crs_code); + auto targetCRS = + d->createFactory(target_crs_auth_name) + ->createCoordinateReferenceSystem(target_crs_code); + + std::vector<operation::OperationParameterNNPtr> parameters; + std::vector<operation::ParameterValueNNPtr> values; + + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_X_AXIS_TRANSLATION)); + values.emplace_back(createLength(tx, uom_translation)); + + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_Y_AXIS_TRANSLATION)); + values.emplace_back(createLength(ty, uom_translation)); + + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_Z_AXIS_TRANSLATION)); + values.emplace_back(createLength(tz, uom_translation)); + + if (!rx.empty()) { + // Helmert 7-, 8-, 10- or 15- parameter cases + auto uom_rotation = d->createUnitOfMeasure( + rotation_uom_auth_name, rotation_uom_code); + + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_X_AXIS_ROTATION)); + values.emplace_back(createAngle(rx, uom_rotation)); + + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_Y_AXIS_ROTATION)); + values.emplace_back(createAngle(ry, uom_rotation)); + + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_Z_AXIS_ROTATION)); + values.emplace_back(createAngle(rz, uom_rotation)); + + auto uom_scale_difference = + scale_difference_uom_auth_name.empty() + ? common::UnitOfMeasure::NONE + : d->createUnitOfMeasure(scale_difference_uom_auth_name, + scale_difference_uom_code); + + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_SCALE_DIFFERENCE)); + values.emplace_back(operation::ParameterValue::create( + common::Scale(c_locale_stod(scale_difference), + uom_scale_difference))); + } + + if (!rate_tx.empty()) { + // Helmert 15-parameter + + auto uom_rate_translation = d->createUnitOfMeasure( + rate_translation_uom_auth_name, rate_translation_uom_code); + + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_RATE_X_AXIS_TRANSLATION)); + values.emplace_back( + createLength(rate_tx, uom_rate_translation)); + + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_RATE_Y_AXIS_TRANSLATION)); + values.emplace_back( + createLength(rate_ty, uom_rate_translation)); + + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_RATE_Z_AXIS_TRANSLATION)); + values.emplace_back( + createLength(rate_tz, uom_rate_translation)); + + auto uom_rate_rotation = d->createUnitOfMeasure( + rate_rotation_uom_auth_name, rate_rotation_uom_code); + + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_RATE_X_AXIS_ROTATION)); + values.emplace_back(createAngle(rate_rx, uom_rate_rotation)); + + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_RATE_Y_AXIS_ROTATION)); + values.emplace_back(createAngle(rate_ry, uom_rate_rotation)); + + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_RATE_Z_AXIS_ROTATION)); + values.emplace_back(createAngle(rate_rz, uom_rate_rotation)); + + auto uom_rate_scale_difference = + d->createUnitOfMeasure(rate_scale_difference_uom_auth_name, + rate_scale_difference_uom_code); + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_RATE_SCALE_DIFFERENCE)); + values.emplace_back(operation::ParameterValue::create( + common::Scale(c_locale_stod(rate_scale_difference), + uom_rate_scale_difference))); + + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_REFERENCE_EPOCH)); + values.emplace_back(operation::ParameterValue::create( + common::Measure(c_locale_stod(epoch), uom_epoch))); + } else if (uom_epoch != common::UnitOfMeasure::NONE) { + // Helmert 8-parameter + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_TRANSFORMATION_REFERENCE_EPOCH)); + values.emplace_back(operation::ParameterValue::create( + common::Measure(c_locale_stod(epoch), uom_epoch))); + } else if (!px.empty()) { + // Molodensky-Badekas case + auto uom_pivot = + d->createUnitOfMeasure(pivot_uom_auth_name, pivot_uom_code); + + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_ORDINATE_1_EVAL_POINT)); + values.emplace_back(createLength(px, uom_pivot)); + + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_ORDINATE_2_EVAL_POINT)); + values.emplace_back(createLength(py, uom_pivot)); + + parameters.emplace_back(createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_ORDINATE_3_EVAL_POINT)); + values.emplace_back(createLength(pz, uom_pivot)); + } + + auto props = + d->createProperties(code, name, deprecated, + area_of_use_auth_name, area_of_use_code); + + auto propsMethod = + util::PropertyMap() + .set(metadata::Identifier::CODESPACE_KEY, method_auth_name) + .set(metadata::Identifier::CODE_KEY, method_code) + .set(common::IdentifiedObject::NAME_KEY, method_name); + + std::vector<metadata::PositionalAccuracyNNPtr> accuracies; + if (!accuracy.empty()) { + accuracies.emplace_back( + metadata::PositionalAccuracy::create(accuracy)); + } + return operation::Transformation::create( + props, sourceCRS, targetCRS, nullptr, propsMethod, parameters, + values, accuracies); + + } catch (const std::exception &ex) { + throw buildFactoryException("transformation", code, ex); + } + } + + if (type == "grid_transformation") { + res = d->runWithCodeParam( + "SELECT name, method_auth_name, method_code, method_name, " + "source_crs_auth_name, source_crs_code, target_crs_auth_name, " + "target_crs_code, area_of_use_auth_name, area_of_use_code, " + "accuracy, grid_param_auth_name, grid_param_code, grid_param_name, " + "grid_name, " + "grid2_param_auth_name, grid2_param_code, grid2_param_name, " + "grid2_name, " + "interpolation_crs_auth_name, interpolation_crs_code, deprecated " + "FROM " + "grid_transformation WHERE auth_name = ? AND code = ?", + code); + if (res.empty()) { + // shouldn't happen if foreign keys are OK + throw NoSuchAuthorityCodeException("grid_transformation not found", + getAuthority(), code); + } + try { + const auto &row = res[0]; + size_t idx = 0; + const auto &name = row[idx++]; + const auto &method_auth_name = row[idx++]; + const auto &method_code = row[idx++]; + const auto &method_name = row[idx++]; + const auto &source_crs_auth_name = row[idx++]; + const auto &source_crs_code = row[idx++]; + const auto &target_crs_auth_name = row[idx++]; + const auto &target_crs_code = row[idx++]; + const auto &area_of_use_auth_name = row[idx++]; + const auto &area_of_use_code = row[idx++]; + const auto &accuracy = row[idx++]; + const auto &grid_param_auth_name = row[idx++]; + const auto &grid_param_code = row[idx++]; + const auto &grid_param_name = row[idx++]; + const auto &grid_name = row[idx++]; + const auto &grid2_param_auth_name = row[idx++]; + const auto &grid2_param_code = row[idx++]; + const auto &grid2_param_name = row[idx++]; + const auto &grid2_name = row[idx++]; + const auto &interpolation_crs_auth_name = row[idx++]; + const auto &interpolation_crs_code = row[idx++]; + + const auto &deprecated_str = row[idx++]; + const bool deprecated = deprecated_str == "1"; + assert(idx == row.size()); + + auto sourceCRS = + d->createFactory(source_crs_auth_name) + ->createCoordinateReferenceSystem(source_crs_code); + auto targetCRS = + d->createFactory(target_crs_auth_name) + ->createCoordinateReferenceSystem(target_crs_code); + auto interpolationCRS = + interpolation_crs_auth_name.empty() + ? nullptr + : d->createFactory(interpolation_crs_auth_name) + ->createCoordinateReferenceSystem( + interpolation_crs_code) + .as_nullable(); + + std::vector<operation::OperationParameterNNPtr> parameters; + std::vector<operation::ParameterValueNNPtr> values; + + parameters.emplace_back(operation::OperationParameter::create( + util::PropertyMap() + .set(common::IdentifiedObject::NAME_KEY, grid_param_name) + .set(metadata::Identifier::CODESPACE_KEY, + grid_param_auth_name) + .set(metadata::Identifier::CODE_KEY, grid_param_code))); + values.emplace_back( + operation::ParameterValue::createFilename(grid_name)); + if (!grid2_name.empty()) { + parameters.emplace_back(operation::OperationParameter::create( + util::PropertyMap() + .set(common::IdentifiedObject::NAME_KEY, + grid2_param_name) + .set(metadata::Identifier::CODESPACE_KEY, + grid2_param_auth_name) + .set(metadata::Identifier::CODE_KEY, + grid2_param_code))); + values.emplace_back( + operation::ParameterValue::createFilename(grid2_name)); + } + + auto props = + d->createProperties(code, name, deprecated, + area_of_use_auth_name, area_of_use_code); + auto propsMethod = + util::PropertyMap() + .set(metadata::Identifier::CODESPACE_KEY, method_auth_name) + .set(metadata::Identifier::CODE_KEY, method_code) + .set(common::IdentifiedObject::NAME_KEY, method_name); + + std::vector<metadata::PositionalAccuracyNNPtr> accuracies; + if (!accuracy.empty()) { + accuracies.emplace_back( + metadata::PositionalAccuracy::create(accuracy)); + } + auto transf = operation::Transformation::create( + props, sourceCRS, targetCRS, interpolationCRS, propsMethod, + parameters, values, accuracies); + if (usePROJAlternativeGridNames) { + return transf->substitutePROJAlternativeGridNames(d->context()); + } + return transf; + + } catch (const std::exception &ex) { + throw buildFactoryException("transformation", code, ex); + } + } + + if (type == "other_transformation") { + std::ostringstream buffer; + buffer.imbue(std::locale::classic()); + buffer + << "SELECT name, method_auth_name, method_code, method_name, " + "source_crs_auth_name, source_crs_code, target_crs_auth_name, " + "target_crs_code, area_of_use_auth_name, area_of_use_code, " + "accuracy"; + constexpr int N_MAX_PARAMS = 7; + for (int i = 1; i <= N_MAX_PARAMS; ++i) { + buffer << ", param" << i << "_auth_name"; + buffer << ", param" << i << "_code"; + buffer << ", param" << i << "_name"; + buffer << ", param" << i << "_value"; + buffer << ", param" << i << "_uom_auth_name"; + buffer << ", param" << i << "_uom_code"; + } + buffer << ", deprecated FROM other_transformation WHERE auth_name = ? " + "AND code = ?"; + + res = d->runWithCodeParam(buffer.str(), code); + if (res.empty()) { + // shouldn't happen if foreign keys are OK + throw NoSuchAuthorityCodeException("other_transformation not found", + getAuthority(), code); + } + try { + const auto &row = res[0]; + size_t idx = 0; + const auto &name = row[idx++]; + const auto &method_auth_name = row[idx++]; + const auto &method_code = row[idx++]; + const auto &method_name = row[idx++]; + const auto &source_crs_auth_name = row[idx++]; + const auto &source_crs_code = row[idx++]; + const auto &target_crs_auth_name = row[idx++]; + const auto &target_crs_code = row[idx++]; + const auto &area_of_use_auth_name = row[idx++]; + const auto &area_of_use_code = row[idx++]; + const auto &accuracy = row[idx++]; + + const size_t base_param_idx = idx; + std::vector<operation::OperationParameterNNPtr> parameters; + std::vector<operation::ParameterValueNNPtr> values; + for (int i = 0; i < N_MAX_PARAMS; ++i) { + const auto ¶m_auth_name = row[base_param_idx + i * 6 + 0]; + if (param_auth_name.empty()) { + break; + } + const auto ¶m_code = row[base_param_idx + i * 6 + 1]; + const auto ¶m_name = row[base_param_idx + i * 6 + 2]; + const auto ¶m_value = row[base_param_idx + i * 6 + 3]; + const auto ¶m_uom_auth_name = + row[base_param_idx + i * 6 + 4]; + const auto ¶m_uom_code = row[base_param_idx + i * 6 + 5]; + parameters.emplace_back(operation::OperationParameter::create( + util::PropertyMap() + .set(metadata::Identifier::CODESPACE_KEY, + param_auth_name) + .set(metadata::Identifier::CODE_KEY, param_code) + .set(common::IdentifiedObject::NAME_KEY, param_name))); + std::string normalized_uom_code(param_uom_code); + double normalized_value(c_locale_stod(param_value)); + normalizeMeasure(param_uom_code, param_value, + normalized_uom_code, normalized_value); + auto uom = d->createUnitOfMeasure(param_uom_auth_name, + normalized_uom_code); + values.emplace_back(operation::ParameterValue::create( + common::Measure(normalized_value, uom))); + } + idx = base_param_idx + 6 * N_MAX_PARAMS; + + const auto &deprecated_str = row[idx++]; + const bool deprecated = deprecated_str == "1"; + assert(idx == row.size()); + + auto sourceCRS = + d->createFactory(source_crs_auth_name) + ->createCoordinateReferenceSystem(source_crs_code); + auto targetCRS = + d->createFactory(target_crs_auth_name) + ->createCoordinateReferenceSystem(target_crs_code); + + auto props = + d->createProperties(code, name, deprecated, + area_of_use_auth_name, area_of_use_code); + + std::vector<metadata::PositionalAccuracyNNPtr> accuracies; + if (!accuracy.empty()) { + accuracies.emplace_back( + metadata::PositionalAccuracy::create(accuracy)); + } + + if (method_auth_name == "PROJ") { + if (method_code == "PROJString") { + return operation::SingleOperation::createPROJBased( + props, method_name, sourceCRS, targetCRS, accuracies); + } else if (method_code == "WKT") { + auto op = util::nn_dynamic_pointer_cast< + operation::CoordinateOperation>( + WKTParser().createFromWKT(method_name)); + if (!op) { + throw FactoryException("WKT string does not express a " + "coordinate operation"); + } + op->setCRSs(sourceCRS, targetCRS, nullptr); + return NN_NO_CHECK(op); + } + } + + auto propsMethod = + util::PropertyMap() + .set(metadata::Identifier::CODESPACE_KEY, method_auth_name) + .set(metadata::Identifier::CODE_KEY, method_code) + .set(common::IdentifiedObject::NAME_KEY, method_name); + + if (method_auth_name == metadata::Identifier::EPSG && + operation::isAxisOrderReversal( + std::atoi(method_code.c_str()))) { + auto op = operation::Conversion::create(props, propsMethod, + parameters, values); + op->setCRSs(sourceCRS, targetCRS, nullptr); + return op; + } + return operation::Transformation::create( + props, sourceCRS, targetCRS, nullptr, propsMethod, parameters, + values, accuracies); + + } catch (const std::exception &ex) { + throw buildFactoryException("transformation", code, ex); + } + } + + if (allowConcatenated && type == "concatenated_operation") { + res = d->runWithCodeParam( + "SELECT name, source_crs_auth_name, source_crs_code, " + "target_crs_auth_name, target_crs_code, " + "area_of_use_auth_name, area_of_use_code, accuracy, " + "step1_auth_name, step1_code, step2_auth_name, step2_code, " + "step3_auth_name, step3_code, deprecated FROM " + "concatenated_operation WHERE auth_name = ? AND code = ?", + code); + if (res.empty()) { + // shouldn't happen if foreign keys are OK + throw NoSuchAuthorityCodeException( + "concatenated_operation not found", getAuthority(), code); + } + try { + const auto &row = res[0]; + size_t idx = 0; + const auto &name = row[idx++]; + const auto &source_crs_auth_name = row[idx++]; + const auto &source_crs_code = row[idx++]; + const auto &target_crs_auth_name = row[idx++]; + const auto &target_crs_code = row[idx++]; + const auto &area_of_use_auth_name = row[idx++]; + const auto &area_of_use_code = row[idx++]; + const auto &accuracy = row[idx++]; + const auto &step1_auth_name = row[idx++]; + const auto &step1_code = row[idx++]; + const auto &step2_auth_name = row[idx++]; + const auto &step2_code = row[idx++]; + const auto &step3_auth_name = row[idx++]; + const auto &step3_code = row[idx++]; + const auto &deprecated_str = row[idx++]; + const bool deprecated = deprecated_str == "1"; + + std::vector<operation::CoordinateOperationNNPtr> operations; + operations.push_back( + d->createFactory(step1_auth_name) + ->createCoordinateOperation(step1_code, false, + usePROJAlternativeGridNames)); + operations.push_back( + d->createFactory(step2_auth_name) + ->createCoordinateOperation(step2_code, false, + usePROJAlternativeGridNames)); + + if (!step3_auth_name.empty()) { + operations.push_back( + d->createFactory(step3_auth_name) + ->createCoordinateOperation( + step3_code, false, usePROJAlternativeGridNames)); + } + + // In case the operation is a conversion (we hope this is the + // forward case!) + if (!operations[0]->sourceCRS() || !operations[0]->targetCRS()) { + if (!operations[1]->sourceCRS()) { + throw FactoryException( + "chaining of conversion not supported"); + } + operations[0]->setCRSs( + d->createFactory(source_crs_auth_name) + ->createCoordinateReferenceSystem(source_crs_code), + NN_NO_CHECK(operations[1]->sourceCRS()), nullptr); + } + + // Some concatenated operations, like 8443, might actually chain + // reverse operations rather than forward operations. + { + const auto &op0SrcId = + operations[0]->sourceCRS()->identifiers()[0]; + if (op0SrcId->code() != source_crs_code || + *op0SrcId->codeSpace() != source_crs_auth_name) { + operations[0] = operations[0]->inverse(); + } + } + + { + const auto &op0SrcId = + operations[0]->sourceCRS()->identifiers()[0]; + if (op0SrcId->code() != source_crs_code || + *op0SrcId->codeSpace() != source_crs_auth_name) { + throw FactoryException( + "Source CRS of first operation in concatenated " + "operation " + + code + " does not match source CRS of " + "concatenated operation"); + } + } + + // In case the operation is a conversion (we hope this is the + // forward case!) + if (!operations[1]->sourceCRS() || !operations[1]->targetCRS()) { + if (step3_auth_name.empty()) { + operations[1]->setCRSs( + NN_NO_CHECK(operations[0]->targetCRS()), + d->createFactory(target_crs_auth_name) + ->createCoordinateReferenceSystem(target_crs_code), + nullptr); + } else { + if (!operations[2]->sourceCRS()) { + throw FactoryException( + "chaining of conversion not supported"); + } + operations[1]->setCRSs( + NN_NO_CHECK(operations[0]->targetCRS()), + NN_NO_CHECK(operations[2]->sourceCRS()), nullptr); + } + } + + const auto &op1SrcId = operations[1]->sourceCRS()->identifiers()[0]; + const auto &op0TargetId = + operations[0]->targetCRS()->identifiers()[0]; + while (true) { + if (step3_auth_name.empty()) { + const auto &opLastTargetId = + operations.back()->targetCRS()->identifiers()[0]; + if (opLastTargetId->code() == target_crs_code && + *opLastTargetId->codeSpace() == target_crs_auth_name) { + // in case we have only 2 steps, and + // step2.targetCRS == concatenate.targetCRS do nothing, + // but ConcatenatedOperation::create() will ultimately + // check that step1.targetCRS == step2.sourceCRS + break; + } + } + if (op1SrcId->code() != op0TargetId->code() || + *op1SrcId->codeSpace() != *op0TargetId->codeSpace()) { + operations[1] = operations[1]->inverse(); + } + break; + } + + if (!step3_auth_name.empty()) { + + const auto &op2Src = operations[2]->sourceCRS(); + // In case the operation is a conversion (we hope this is the + // forward case!) + if (!op2Src || !operations[2]->targetCRS()) { + operations[2]->setCRSs( + NN_NO_CHECK(operations[1]->targetCRS()), + d->createFactory(target_crs_auth_name) + ->createCoordinateReferenceSystem(target_crs_code), + nullptr); + } + + const auto &op2SrcId = op2Src->identifiers()[0]; + const auto &op1TargetId = + operations[1]->targetCRS()->identifiers()[0]; + if (op2SrcId->code() != op1TargetId->code() || + *op2SrcId->codeSpace() != *op1TargetId->codeSpace()) { + operations[2] = operations[2]->inverse(); + } + } + + const auto &opLastTargetId = + operations.back()->targetCRS()->identifiers()[0]; + if (opLastTargetId->code() != target_crs_code || + *opLastTargetId->codeSpace() != target_crs_auth_name) { + throw FactoryException( + "Target CRS of last operation in concatenated operation " + + code + + " doest not match target CRS of concatenated operation"); + } + + auto props = + d->createProperties(code, name, deprecated, + area_of_use_auth_name, area_of_use_code); + + std::vector<metadata::PositionalAccuracyNNPtr> accuracies; + if (!accuracy.empty()) { + accuracies.emplace_back( + metadata::PositionalAccuracy::create(accuracy)); + } else { + // Try to compute a reasonable accuracy from the members + double totalAcc = -1; + try { + for (const auto &op : operations) { + auto accs = op->coordinateOperationAccuracies(); + if (accs.size() == 1) { + double acc = c_locale_stod(accs[0]->value()); + if (totalAcc < 0) { + totalAcc = acc; + } else { + totalAcc += acc; + } + } else { + totalAcc = -1; + break; + } + } + if (totalAcc >= 0) { + accuracies.emplace_back( + metadata::PositionalAccuracy::create( + toString(totalAcc))); + } + } catch (const std::exception &) { + } + } + return operation::ConcatenatedOperation::create(props, operations, + accuracies); + + } catch (const std::exception &ex) { + throw buildFactoryException("transformation", code, ex); + } + } + + throw FactoryException("unhandled coordinate operation type: " + type); +} + +// --------------------------------------------------------------------------- + +/** \brief Returns a list operation::CoordinateOperation between two CRS. + * + * The list is ordered with preferred operations first. No attempt is made + * at infering operations that are not explicitly in the database. + * + * Deprecated operations are rejected. + * + * @param sourceCRSCode Source CRS code allocated by authority. + * @param targetCRSCode Source CRS code allocated by authority. + * @return list of coordinate operations + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +std::vector<operation::CoordinateOperationNNPtr> +AuthorityFactory::createFromCoordinateReferenceSystemCodes( + const std::string &sourceCRSCode, const std::string &targetCRSCode) const { + return createFromCoordinateReferenceSystemCodes( + getAuthority(), sourceCRSCode, getAuthority(), targetCRSCode, false, + false); +} + +// --------------------------------------------------------------------------- + +/** \brief Returns a list operation::CoordinateOperation between two CRS. + * + * The list is ordered with preferred operations first. No attempt is made + * at infering operations that are not explicitly in the database (see + * createFromCRSCodesWithIntermediates() for that), and only + * source -> target operations are searched (ie if target -> source is present, + * you need to call this method with the arguments reversed, and apply the + * reverse transformations). + * + * Deprecated operations are rejected. + * + * If getAuthority() returns empty, then coordinate operations from all + * authorities are considered. + * + * @param sourceCRSAuthName Authority name of sourceCRSCode + * @param sourceCRSCode Source CRS code allocated by authority + * sourceCRSAuthName. + * @param targetCRSAuthName Authority name of targetCRSCode + * @param targetCRSCode Source CRS code allocated by authority + * targetCRSAuthName. + * @param usePROJAlternativeGridNames Whether PROJ alternative grid names + * should be substituted to the official grid names. + * @param discardIfMissingGrid Whether coordinate operations that reference + * missing grids should be removed from the result set. + * @return list of coordinate operations + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +std::vector<operation::CoordinateOperationNNPtr> +AuthorityFactory::createFromCoordinateReferenceSystemCodes( + const std::string &sourceCRSAuthName, const std::string &sourceCRSCode, + const std::string &targetCRSAuthName, const std::string &targetCRSCode, + bool usePROJAlternativeGridNames, bool discardIfMissingGrid) const { + std::vector<operation::CoordinateOperationNNPtr> list; + + // Look-up first for conversion which is the most precise. + std::string sql( + "SELECT conversion_auth_name, conversion_code FROM " + "projected_crs WHERE geodetic_crs_auth_name = ? AND geodetic_crs_code " + "= ? AND auth_name = ? AND code = ? AND deprecated != 1"); + auto params = std::vector<SQLValues>{sourceCRSAuthName, sourceCRSCode, + targetCRSAuthName, targetCRSCode}; + if (!getAuthority().empty()) { + sql += " AND conversion_auth_name = ?"; + params.emplace_back(getAuthority()); + } + auto res = d->run(sql, params); + if (!res.empty()) { + auto targetCRS = d->createFactory(targetCRSAuthName) + ->createProjectedCRS(targetCRSCode); + auto conv = targetCRS->derivingConversion(); + list.emplace_back(conv); + return list; + } + sql = + "SELECT cov.auth_name, cov.code FROM " + "coordinate_operation_view cov JOIN area ON cov.area_of_use_auth_name " + "= area.auth_name AND cov.area_of_use_code = area.code WHERE " + "source_crs_auth_name = ? AND source_crs_code = ? AND " + "target_crs_auth_name = ? AND target_crs_code = ? AND " + "cov.deprecated != 1"; + params = {sourceCRSAuthName, sourceCRSCode, targetCRSAuthName, + targetCRSCode}; + if (!getAuthority().empty()) { + sql += " AND cov.auth_name = ?"; + params.emplace_back(getAuthority()); + } + sql += " ORDER BY pseudo_area_from_swne(south_lat, west_lon, north_lat, " + "east_lon) DESC, " + "(CASE WHEN accuracy is NULL THEN 1 ELSE 0 END), accuracy"; + res = d->run(sql, params); + for (const auto &row : res) { + const auto &auth_name = row[0]; + const auto &code = row[1]; + auto op = d->createFactory(auth_name)->createCoordinateOperation( + code, true, usePROJAlternativeGridNames); + if (!d->rejectOpDueToMissingGrid(op, discardIfMissingGrid)) { + list.emplace_back(op); + } + } + return list; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static std::string +buildIntermediateWhere(const std::vector<std::pair<std::string, std::string>> + &intermediateCRSAuthCodes, + const std::string &first_field, + const std::string &second_field) { + if (intermediateCRSAuthCodes.empty()) { + return std::string(); + } + std::string sql(" AND ("); + for (size_t i = 0; i < intermediateCRSAuthCodes.size(); ++i) { + if (i > 0) { + sql += " OR"; + } + sql += "(v1." + first_field + "_crs_auth_name = ? AND "; + sql += "v1." + first_field + "_crs_code = ? AND "; + sql += "v2." + second_field + "_crs_auth_name = ? AND "; + sql += "v2." + second_field + "_crs_code = ?) "; + } + sql += ")"; + return sql; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static bool useIrrelevantPivot(const operation::CoordinateOperationNNPtr &op, + const std::string &sourceCRSAuthName, + const std::string &sourceCRSCode, + const std::string &targetCRSAuthName, + const std::string &targetCRSCode) { + auto concat = + dynamic_cast<const operation::ConcatenatedOperation *>(op.get()); + if (!concat) { + return false; + } + auto ops = concat->operations(); + for (size_t i = 0; i + 1 < ops.size(); i++) { + auto targetCRS = ops[i]->targetCRS(); + if (targetCRS) { + const auto &ids = targetCRS->identifiers(); + if (ids.size() == 1 && + ((*ids[0]->codeSpace() == sourceCRSAuthName && + ids[0]->code() == sourceCRSCode) || + (*ids[0]->codeSpace() == targetCRSAuthName && + ids[0]->code() == targetCRSCode))) { + return true; + } + } + } + return false; +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Returns a list operation::CoordinateOperation between two CRS, + * using intermediate codes. + * + * The list is ordered with preferred operations first. + * + * Deprecated operations are rejected. + * + * The method will take care of considering all potential combinations (ie + * contrary to createFromCoordinateReferenceSystemCodes(), you do not need to + * call it with sourceCRS and targetCRS switched) + * + * If getAuthority() returns empty, then coordinate operations from all + * authorities are considered. + * + * @param sourceCRSAuthName Authority name of sourceCRSCode + * @param sourceCRSCode Source CRS code allocated by authority + * sourceCRSAuthName. + * @param targetCRSAuthName Authority name of targetCRSCode + * @param targetCRSCode Source CRS code allocated by authority + * targetCRSAuthName. + * @param usePROJAlternativeGridNames Whether PROJ alternative grid names + * should be substituted to the official grid names. + * @param discardIfMissingGrid Whether coordinate operations that reference + * missing grids should be removed from the result set. + * @param intermediateCRSAuthCodes List of (auth_name, code) of CRS that can be + * used as potential intermediate CRS. If the list is empty, the database will + * be used to find common CRS in operations involving both the source and + * target CRS. + * @return list of coordinate operations + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ + +std::vector<operation::CoordinateOperationNNPtr> +AuthorityFactory::createFromCRSCodesWithIntermediates( + const std::string &sourceCRSAuthName, const std::string &sourceCRSCode, + const std::string &targetCRSAuthName, const std::string &targetCRSCode, + bool usePROJAlternativeGridNames, bool discardIfMissingGrid, + const std::vector<std::pair<std::string, std::string>> + &intermediateCRSAuthCodes) const { + + std::vector<operation::CoordinateOperationNNPtr> listTmp; + + if (sourceCRSAuthName == targetCRSAuthName && + sourceCRSCode == targetCRSCode) { + return listTmp; + } + + const std::string sqlProlog( + "SELECT v1.auth_name AS auth_name1, v1.code AS code1, " + "v1.accuracy AS accuracy1, " + "v2.auth_name AS auth_name2, v2.code AS code2, " + "v2.accuracy as accuracy2, " + "a1.south_lat AS south_lat1, " + "a1.west_lon AS west_lon1, " + "a1.north_lat AS north_lat1, " + "a1.east_lon AS east_lon1, " + "a2.south_lat AS south_lat2, " + "a2.west_lon AS west_lon2, " + "a2.north_lat AS north_lat2, " + "a2.east_lon AS east_lon2 " + "FROM coordinate_operation_view v1 " + "JOIN coordinate_operation_view v2 "); + const std::string joinArea( + "JOIN area a1 ON v1.area_of_use_auth_name = a1.auth_name " + "AND v1.area_of_use_code = a1.code " + "JOIN area a2 ON v2.area_of_use_auth_name = a2.auth_name " + "AND v2.area_of_use_code = a2.code "); + const std::string orderBy( + "ORDER BY (CASE WHEN accuracy1 is NULL THEN 1 ELSE 0 END) + " + "(CASE WHEN accuracy2 is NULL THEN 1 ELSE 0 END), " + "accuracy1 + accuracy2"); + + // Case (source->intermediate) and (intermediate->target) + std::string sql( + sqlProlog + "ON v1.target_crs_auth_name = v2.source_crs_auth_name " + "AND v1.target_crs_code = v2.source_crs_code " + + joinArea + + "WHERE v1.source_crs_auth_name = ? AND v1.source_crs_code = ? " + "AND v2.target_crs_auth_name = ? AND v2.target_crs_code = ? "); + auto params = std::vector<SQLValues>{sourceCRSAuthName, sourceCRSCode, + targetCRSAuthName, targetCRSCode}; + + std::string additionalWhere( + "AND v1.deprecated = 0 AND v2.deprecated = 0 " + "AND intersects_bbox(south_lat1, west_lon1, north_lat1, east_lon1, " + "south_lat2, west_lon2, north_lat2, east_lon2) == 1 "); + if (!getAuthority().empty()) { + additionalWhere += "AND v1.auth_name = ? AND v2.auth_name = ? "; + params.emplace_back(getAuthority()); + params.emplace_back(getAuthority()); + } + std::string intermediateWhere = + buildIntermediateWhere(intermediateCRSAuthCodes, "target", "source"); + for (const auto &pair : intermediateCRSAuthCodes) { + params.emplace_back(pair.first); + params.emplace_back(pair.second); + params.emplace_back(pair.first); + params.emplace_back(pair.second); + } + auto res = + d->run(sql + additionalWhere + intermediateWhere + orderBy, params); + + for (const auto &row : res) { + const auto &auth_name1 = row[0]; + const auto &code1 = row[1]; + // const auto &accuracy1 = row[2]; + const auto &auth_name2 = row[3]; + const auto &code2 = row[4]; + // const auto &accuracy2 = row[5]; + auto op1 = d->createFactory(auth_name1) + ->createCoordinateOperation(code1, true, + usePROJAlternativeGridNames); + if (useIrrelevantPivot(op1, sourceCRSAuthName, sourceCRSCode, + targetCRSAuthName, targetCRSCode)) { + continue; + } + auto op2 = d->createFactory(auth_name2) + ->createCoordinateOperation(code2, true, + usePROJAlternativeGridNames); + if (useIrrelevantPivot(op2, sourceCRSAuthName, sourceCRSCode, + targetCRSAuthName, targetCRSCode)) { + continue; + } + + listTmp.emplace_back( + operation::ConcatenatedOperation::createComputeMetadata({op1, op2}, + false)); + } + + // Case (source->intermediate) and (target->intermediate) + sql = sqlProlog + "ON v1.target_crs_auth_name = v2.target_crs_auth_name " + "AND v1.target_crs_code = v2.target_crs_code " + + joinArea + + "WHERE v1.source_crs_auth_name = ? AND v1.source_crs_code = ? " + "AND v2.source_crs_auth_name = ? AND v2.source_crs_code = ? "; + intermediateWhere = + buildIntermediateWhere(intermediateCRSAuthCodes, "target", "target"); + res = d->run(sql + additionalWhere + intermediateWhere + orderBy, params); + for (const auto &row : res) { + const auto &auth_name1 = row[0]; + const auto &code1 = row[1]; + // const auto &accuracy1 = row[2]; + const auto &auth_name2 = row[3]; + const auto &code2 = row[4]; + // const auto &accuracy2 = row[5]; + auto op1 = d->createFactory(auth_name1) + ->createCoordinateOperation(code1, true, + usePROJAlternativeGridNames); + if (useIrrelevantPivot(op1, sourceCRSAuthName, sourceCRSCode, + targetCRSAuthName, targetCRSCode)) { + continue; + } + auto op2 = d->createFactory(auth_name2) + ->createCoordinateOperation(code2, true, + usePROJAlternativeGridNames); + if (useIrrelevantPivot(op2, sourceCRSAuthName, sourceCRSCode, + targetCRSAuthName, targetCRSCode)) { + continue; + } + + listTmp.emplace_back( + operation::ConcatenatedOperation::createComputeMetadata( + {op1, op2->inverse()}, false)); + } + + // Case (intermediate->source) and (intermediate->target) + sql = sqlProlog + "ON v1.source_crs_auth_name = v2.source_crs_auth_name " + "AND v1.source_crs_code = v2.source_crs_code " + + joinArea + + "WHERE v1.target_crs_auth_name = ? AND v1.target_crs_code = ? " + "AND v2.target_crs_auth_name = ? AND v2.target_crs_code = ? "; + intermediateWhere = + buildIntermediateWhere(intermediateCRSAuthCodes, "source", "source"); + res = d->run(sql + additionalWhere + intermediateWhere + orderBy, params); + for (const auto &row : res) { + const auto &auth_name1 = row[0]; + const auto &code1 = row[1]; + // const auto &accuracy1 = row[2]; + const auto &auth_name2 = row[3]; + const auto &code2 = row[4]; + // const auto &accuracy2 = row[5]; + auto op1 = d->createFactory(auth_name1) + ->createCoordinateOperation(code1, true, + usePROJAlternativeGridNames); + if (useIrrelevantPivot(op1, sourceCRSAuthName, sourceCRSCode, + targetCRSAuthName, targetCRSCode)) { + continue; + } + auto op2 = d->createFactory(auth_name2) + ->createCoordinateOperation(code2, true, + usePROJAlternativeGridNames); + if (useIrrelevantPivot(op2, sourceCRSAuthName, sourceCRSCode, + targetCRSAuthName, targetCRSCode)) { + continue; + } + + listTmp.emplace_back( + operation::ConcatenatedOperation::createComputeMetadata( + {op1->inverse(), op2}, false)); + } + + // Case (intermediate->source) and (target->intermediate) + sql = sqlProlog + "ON v1.source_crs_auth_name = v2.target_crs_auth_name " + "AND v1.source_crs_code = v2.target_crs_code " + + joinArea + + "WHERE v1.target_crs_auth_name = ? AND v1.target_crs_code = ? " + "AND v2.source_crs_auth_name = ? AND v2.source_crs_code = ? "; + intermediateWhere = + buildIntermediateWhere(intermediateCRSAuthCodes, "source", "target"); + res = d->run(sql + additionalWhere + intermediateWhere + orderBy, params); + for (const auto &row : res) { + const auto &auth_name1 = row[0]; + const auto &code1 = row[1]; + // const auto &accuracy1 = row[2]; + const auto &auth_name2 = row[3]; + const auto &code2 = row[4]; + // const auto &accuracy2 = row[5]; + auto op1 = d->createFactory(auth_name1) + ->createCoordinateOperation(code1, true, + usePROJAlternativeGridNames); + if (useIrrelevantPivot(op1, sourceCRSAuthName, sourceCRSCode, + targetCRSAuthName, targetCRSCode)) { + continue; + } + auto op2 = d->createFactory(auth_name2) + ->createCoordinateOperation(code2, true, + usePROJAlternativeGridNames); + if (useIrrelevantPivot(op2, sourceCRSAuthName, sourceCRSCode, + targetCRSAuthName, targetCRSCode)) { + continue; + } + + listTmp.emplace_back( + operation::ConcatenatedOperation::createComputeMetadata( + {op1->inverse(), op2->inverse()}, false)); + } + + std::vector<operation::CoordinateOperationNNPtr> list; + for (const auto &op : listTmp) { + if (!d->rejectOpDueToMissingGrid(op, discardIfMissingGrid)) { + list.emplace_back(op); + } + } + + return list; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns the authority name associated to this factory. + * @return name. + */ +const std::string &AuthorityFactory::getAuthority() PROJ_CONST_DEFN { + return d->authority(); +} + +// --------------------------------------------------------------------------- + +/** \brief Returns the set of authority codes of the given object type. + * + * @param type Object type. + * @param allowDeprecated whether we should return deprecated objects as well. + * @return the set of authority codes for spatial reference objects of the given + * type + * @throw FactoryException + */ +std::set<std::string> +AuthorityFactory::getAuthorityCodes(const ObjectType &type, + bool allowDeprecated) const { + std::string sql; + switch (type) { + case ObjectType::PRIME_MERIDIAN: + sql = "SELECT code FROM prime_meridian WHERE "; + break; + case ObjectType::ELLIPSOID: + sql = "SELECT code FROM ellipsoid WHERE "; + break; + case ObjectType::DATUM: + sql = "SELECT code FROM object_view WHERE table_name IN " + "('geodetic_datum', 'vertical_datum') AND "; + break; + case ObjectType::GEODETIC_REFERENCE_FRAME: + sql = "SELECT code FROM geodetic_datum WHERE "; + break; + case ObjectType::VERTICAL_REFERENCE_FRAME: + sql = "SELECT code FROM vertical_datum WHERE "; + break; + case ObjectType::CRS: + sql = "SELECT code FROM crs_view WHERE "; + break; + case ObjectType::GEODETIC_CRS: + sql = "SELECT code FROM geodetic_crs WHERE "; + break; + case ObjectType::GEOCENTRIC_CRS: + sql = "SELECT code FROM geodetic_crs WHERE type = " GEOCENTRIC " AND "; + break; + case ObjectType::GEOGRAPHIC_CRS: + sql = "SELECT code FROM geodetic_crs WHERE type IN (" GEOG_2D + "," GEOG_3D ") AND "; + break; + case ObjectType::GEOGRAPHIC_2D_CRS: + sql = "SELECT code FROM geodetic_crs WHERE type = " GEOG_2D " AND "; + break; + case ObjectType::GEOGRAPHIC_3D_CRS: + sql = "SELECT code FROM geodetic_crs WHERE type = " GEOG_3D " AND "; + break; + case ObjectType::VERTICAL_CRS: + sql = "SELECT code FROM vertical_crs WHERE "; + break; + case ObjectType::PROJECTED_CRS: + sql = "SELECT code FROM projected_crs WHERE "; + break; + case ObjectType::COMPOUND_CRS: + sql = "SELECT code FROM compound_crs WHERE "; + break; + case ObjectType::COORDINATE_OPERATION: + sql = + "SELECT code FROM coordinate_operation_with_conversion_view WHERE "; + break; + case ObjectType::CONVERSION: + sql = "SELECT code FROM conversion WHERE "; + break; + case ObjectType::TRANSFORMATION: + sql = "SELECT code FROM coordinate_operation_view WHERE table_name != " + "'concatenated_operation' AND "; + break; + case ObjectType::CONCATENATED_OPERATION: + sql = "SELECT code FROM concatenated_operation WHERE "; + break; + } + + sql += "auth_name = ?"; + if (!allowDeprecated) { + sql += " AND deprecated != 1"; + } + + auto res = d->run(sql, {getAuthority()}); + std::set<std::string> set; + for (const auto &row : res) { + set.insert(row[0]); + } + return set; +} + +// --------------------------------------------------------------------------- + +/** \brief Gets a description of the object corresponding to a code. + * + * \note In case of several objects of different types with the same code, + * one of them will be arbitrarily selected. + * + * @param code Object code allocated by authority. (e.g. "4326") + * @return description. + * @throw NoSuchAuthorityCodeException + * @throw FactoryException + */ +std::string +AuthorityFactory::getDescriptionText(const std::string &code) const { + auto sql = "SELECT name FROM object_view WHERE auth_name = ? AND code = " + "? ORDER BY table_name"; + auto res = d->runWithCodeParam(sql, code); + if (res.empty()) { + throw NoSuchAuthorityCodeException("object not found", getAuthority(), + code); + } + return res[0][0]; +} + +// --------------------------------------------------------------------------- + +/** \brief Gets the official name from a possibly alias name. + * + * @param aliasedName Alias name. + * @param tableName Table name/category. Can help in case of ambiguities. + * Or empty otherwise. + * @param source Source of the alias. Can help in case of ambiguities. + * Or empty otherwise. + * @param outTableName Table name in which the official name has been found. + * @param outAuthName Authority name of the official name that has been found. + * @param outCode Code of the official name that has been found. + * @return official name (or empty if not found). + * @throw FactoryException + */ +std::string AuthorityFactory::getOfficialNameFromAlias( + const std::string &aliasedName, const std::string &tableName, + const std::string &source, std::string &outTableName, + std::string &outAuthName, std::string &outCode) const { + std::string sql("SELECT table_name, auth_name, code FROM alias_name WHERE " + "alt_name = ?"); + std::vector<SQLValues> params{aliasedName}; + if (!tableName.empty()) { + sql += " AND table_name = ?"; + params.push_back(tableName); + } + if (!source.empty()) { + sql += " AND source = ?"; + params.push_back(source); + } + auto res = d->run(sql, params); + if (res.empty()) { + return std::string(); + } + outTableName = res[0][0]; + outAuthName = res[0][1]; + outCode = res[0][2]; + sql = "SELECT name FROM \""; + sql += replaceAll(outTableName, "\"", "\"\""); + sql += "\" WHERE auth_name = ? AND code = ?"; + res = d->run(sql, {outAuthName, outCode}); + if (res.empty()) { // shouldn't happen normally + return std::string(); + } + return res[0][0]; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +static void addToListString(std::string &out, const char *in) { + if (!out.empty()) { + out += ','; + } + out += in; +} + +static void addToListStringWithOR(std::string &out, const char *in) { + if (!out.empty()) { + out += " OR "; + } + out += in; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return a list of objects by their name + * + * @param searchedName Searched name. Must be at least 2 character long. + * @param allowedObjectTypes List of object types into which to search. If + * empty, all object types will be searched. + * @param approximateMatch Whether approximate name identification is allowed. + * @param limitResultCount Maximum number of results to return. + * Or 0 for unlimited. + * @return list of matched objects. + * @throw FactoryException + */ +std::list<common::IdentifiedObjectNNPtr> +AuthorityFactory::createObjectsFromName( + const std::string &searchedName, + const std::vector<ObjectType> &allowedObjectTypes, bool approximateMatch, + size_t limitResultCount) { + + std::string searchedNameWithoutDeprecated(searchedName); + bool deprecated = false; + if (ends_with(searchedNameWithoutDeprecated, " (deprecated)")) { + deprecated = true; + searchedNameWithoutDeprecated.resize( + searchedNameWithoutDeprecated.size() - strlen(" (deprecated)")); + } + + const std::string canonicalizedSearchedName( + metadata::Identifier::canonicalizeName(searchedNameWithoutDeprecated)); + if (canonicalizedSearchedName.size() <= 1) { + return {}; + } + + std::string sql( + "SELECT table_name, auth_name, code, name FROM object_view WHERE " + "deprecated = ? AND "); + std::vector<SQLValues> params{deprecated ? 1.0 : 0.0}; + if (!approximateMatch) { + sql += "name LIKE ? AND "; + params.push_back(searchedNameWithoutDeprecated); + } + if (!getAuthority().empty()) { + sql += " auth_name = ? AND "; + params.emplace_back(getAuthority()); + } + + if (allowedObjectTypes.empty()) { + sql += "table_name IN (" + "'prime_meridian','ellipsoid','geodetic_datum'," + "'vertical_datum','geodetic_crs','projected_crs'," + "'vertical_crs','compound_crs','conversion'," + "'helmert_transformation','grid_transformation'," + "'other_transformation','concatenated_operation'" + ")"; + } else { + std::string tableNameList; + std::string otherConditions; + for (const auto type : allowedObjectTypes) { + switch (type) { + case ObjectType::PRIME_MERIDIAN: + addToListString(tableNameList, "'prime_meridian'"); + break; + case ObjectType::ELLIPSOID: + addToListString(tableNameList, "'ellipsoid'"); + break; + case ObjectType::DATUM: + addToListString(tableNameList, + "'geodetic_datum','vertical_datum'"); + break; + case ObjectType::GEODETIC_REFERENCE_FRAME: + addToListString(tableNameList, "'geodetic_datum'"); + break; + case ObjectType::VERTICAL_REFERENCE_FRAME: + addToListString(tableNameList, "'vertical_datum'"); + break; + case ObjectType::CRS: + addToListString(tableNameList, "'geodetic_crs','projected_crs'," + "'vertical_crs','compound_crs'"); + break; + case ObjectType::GEODETIC_CRS: + addToListString(tableNameList, "'geodetic_crs'"); + break; + case ObjectType::GEOCENTRIC_CRS: + addToListStringWithOR(otherConditions, + "(table_name = " GEOCENTRIC " AND " + "type = " GEOCENTRIC ")"); + break; + case ObjectType::GEOGRAPHIC_CRS: + addToListStringWithOR(otherConditions, + "(table_name = 'geodetic_crs' AND " + "type IN (" GEOG_2D "," GEOG_3D "))"); + break; + case ObjectType::GEOGRAPHIC_2D_CRS: + addToListStringWithOR(otherConditions, + "(table_name = 'geodetic_crs' AND " + "type = " GEOG_2D ")"); + break; + case ObjectType::GEOGRAPHIC_3D_CRS: + addToListStringWithOR(otherConditions, + "(table_name = 'geodetic_crs' AND " + "type = " GEOG_3D ")"); + break; + case ObjectType::PROJECTED_CRS: + addToListString(tableNameList, "'projected_crs'"); + break; + case ObjectType::VERTICAL_CRS: + addToListString(tableNameList, "'vertical_crs'"); + break; + case ObjectType::COMPOUND_CRS: + addToListString(tableNameList, "'compound_crs'"); + break; + case ObjectType::COORDINATE_OPERATION: + addToListString(tableNameList, + "'conversion','helmert_transformation'," + "'grid_transformation','other_transformation'," + "'concatenated_operation'"); + break; + case ObjectType::CONVERSION: + addToListString(tableNameList, "'conversion'"); + break; + case ObjectType::TRANSFORMATION: + addToListString(tableNameList, + "'helmert_transformation'," + "'grid_transformation','other_transformation'"); + break; + case ObjectType::CONCATENATED_OPERATION: + addToListString(tableNameList, "'concatenated_operation'"); + break; + } + } + if (!tableNameList.empty()) { + sql += "((table_name IN ("; + sql += tableNameList; + sql += "))"; + if (!otherConditions.empty()) { + sql += " OR "; + sql += otherConditions; + } + sql += ')'; + } else if (!otherConditions.empty()) { + sql += "("; + sql += otherConditions; + sql += ')'; + } + } + sql += " ORDER BY length(name), name"; + if (limitResultCount > 0 && + limitResultCount < + static_cast<size_t>(std::numeric_limits<int>::max()) && + !approximateMatch) { + sql += " LIMIT "; + sql += toString(static_cast<int>(limitResultCount)); + } + + std::list<common::IdentifiedObjectNNPtr> res; + auto sqlRes = d->run(sql, params); + for (const auto &row : sqlRes) { + const auto &name = row[3]; + if (approximateMatch) { + bool match = ci_find(name, searchedNameWithoutDeprecated) != + std::string::npos; + if (!match) { + const auto canonicalizedName( + metadata::Identifier::canonicalizeName(name)); + match = ci_find(canonicalizedName, canonicalizedSearchedName) != + std::string::npos; + } + if (!match) { + continue; + } + } + const auto &table_name = row[0]; + const auto &auth_name = row[1]; + const auto &code = row[2]; + auto factory = d->createFactory(auth_name); + if (table_name == "prime_meridian") { + res.emplace_back(factory->createPrimeMeridian(code)); + } else if (table_name == "ellipsoid") { + res.emplace_back(factory->createEllipsoid(code)); + } else if (table_name == "geodetic_datum") { + res.emplace_back(factory->createGeodeticDatum(code)); + } else if (table_name == "vertical_datum") { + res.emplace_back(factory->createVerticalDatum(code)); + } else if (table_name == "geodetic_crs") { + res.emplace_back(factory->createGeodeticCRS(code)); + } else if (table_name == "projected_crs") { + res.emplace_back(factory->createProjectedCRS(code)); + } else if (table_name == "vertical_crs") { + res.emplace_back(factory->createVerticalCRS(code)); + } else if (table_name == "compound_crs") { + res.emplace_back(factory->createCompoundCRS(code)); + } else if (table_name == "conversion") { + res.emplace_back(factory->createConversion(code)); + } else if (table_name == "grid_transformation" || + table_name == "helmert_transformation" || + table_name == "other_transformation" || + table_name == "concatenated_operation") { + res.emplace_back(factory->createCoordinateOperation(code, true)); + } else { + assert(false); + } + if (limitResultCount > 0 && res.size() == limitResultCount) { + break; + } + } + + auto sortLambda = [](const common::IdentifiedObjectNNPtr &a, + const common::IdentifiedObjectNNPtr &b) { + const auto &aName = a->nameStr(); + const auto &bName = b->nameStr(); + if (aName.size() < bName.size()) { + return true; + } + if (aName.size() > bName.size()) { + return false; + } + + const auto &aIds = a->identifiers(); + const auto &bIds = b->identifiers(); + if (aIds.size() < bIds.size()) { + return true; + } + if (aIds.size() > bIds.size()) { + return false; + } + for (size_t idx = 0; idx < aIds.size(); idx++) { + const auto &aCodeSpace = *aIds[idx]->codeSpace(); + const auto &bCodeSpace = *bIds[idx]->codeSpace(); + const auto codeSpaceComparison = aCodeSpace.compare(bCodeSpace); + if (codeSpaceComparison < 0) { + return true; + } + if (codeSpaceComparison > 0) { + return false; + } + const auto &aCode = aIds[idx]->code(); + const auto &bCode = bIds[idx]->code(); + const auto codeComparison = aCode.compare(bCode); + if (codeComparison < 0) { + return true; + } + if (codeComparison > 0) { + return false; + } + } + return strcmp(typeid(a.get()).name(), typeid(b.get()).name()) < 0; + }; + + res.sort(sortLambda); + + return res; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +std::list<datum::EllipsoidNNPtr> AuthorityFactory::createEllipsoidFromExisting( + const datum::EllipsoidNNPtr &ellipsoid) const { + std::string sql( + "SELECT auth_name, code FROM ellipsoid WHERE " + "abs(semi_major_axis - ?) < 1e-10 * abs(semi_major_axis) AND " + "((semi_minor_axis IS NOT NULL AND " + "abs(semi_minor_axis - ?) < 1e-10 * abs(semi_minor_axis)) OR " + "((inv_flattening IS NOT NULL AND " + "abs(inv_flattening - ?) < 1e-10 * abs(inv_flattening))))"); + std::vector<SQLValues> params{ + ellipsoid->semiMajorAxis().getSIValue(), + ellipsoid->computeSemiMinorAxis().getSIValue(), + ellipsoid->computedInverseFlattening()}; + auto sqlRes = d->run(sql, params); + std::list<datum::EllipsoidNNPtr> res; + for (const auto &row : sqlRes) { + const auto &auth_name = row[0]; + const auto &code = row[1]; + res.emplace_back(d->createFactory(auth_name)->createEllipsoid(code)); + } + return res; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +std::list<crs::GeodeticCRSNNPtr> AuthorityFactory::createGeodeticCRSFromDatum( + const std::string &datum_auth_name, const std::string &datum_code, + const std::string &geodetic_crs_type) const { + std::string sql( + "SELECT auth_name, code FROM geodetic_crs WHERE " + "datum_auth_name = ? AND datum_code = ? AND deprecated = 0"); + std::vector<SQLValues> params{datum_auth_name, datum_code}; + if (!getAuthority().empty()) { + sql += " AND auth_name = ?"; + params.emplace_back(getAuthority()); + } + if (!geodetic_crs_type.empty()) { + sql += " AND type = ?"; + params.emplace_back(geodetic_crs_type); + } + auto sqlRes = d->run(sql, params); + std::list<crs::GeodeticCRSNNPtr> res; + for (const auto &row : sqlRes) { + const auto &auth_name = row[0]; + const auto &code = row[1]; + res.emplace_back(d->createFactory(auth_name)->createGeodeticCRS(code)); + } + return res; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +std::list<crs::GeodeticCRSNNPtr> +AuthorityFactory::createGeodeticCRSFromEllipsoid( + const std::string &ellipsoid_auth_name, const std::string &ellipsoid_code, + const std::string &geodetic_crs_type) const { + std::string sql( + "SELECT geodetic_crs.auth_name, geodetic_crs.code FROM geodetic_crs " + "JOIN geodetic_datum ON " + "geodetic_crs.datum_auth_name = geodetic_datum.auth_name AND " + "geodetic_crs.datum_code = geodetic_datum.code WHERE " + "geodetic_datum.ellipsoid_auth_name = ? AND " + "geodetic_datum.ellipsoid_code = ? AND " + "geodetic_datum.deprecated = 0 AND " + "geodetic_crs.deprecated = 0"); + std::vector<SQLValues> params{ellipsoid_auth_name, ellipsoid_code}; + if (!getAuthority().empty()) { + sql += " AND geodetic_crs.auth_name = ?"; + params.emplace_back(getAuthority()); + } + if (!geodetic_crs_type.empty()) { + sql += " AND geodetic_crs.type = ?"; + params.emplace_back(geodetic_crs_type); + } + auto sqlRes = d->run(sql, params); + std::list<crs::GeodeticCRSNNPtr> res; + for (const auto &row : sqlRes) { + const auto &auth_name = row[0]; + const auto &code = row[1]; + res.emplace_back(d->createFactory(auth_name)->createGeodeticCRS(code)); + } + return res; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static std::string buildSqlLookForAuthNameCode( + const std::list<std::pair<crs::CRSNNPtr, int>> &list, + std::vector<SQLValues> ¶ms, const char *prefixField) { + std::string sql("("); + + std::set<std::string> authorities; + for (const auto &crs : list) { + const auto &ids = crs.first->identifiers(); + if (!ids.empty()) { + authorities.insert(*(ids[0]->codeSpace())); + } + } + bool firstAuth = true; + for (const auto &auth_name : authorities) { + if (!firstAuth) { + sql += " OR "; + } + firstAuth = false; + sql += "( "; + sql += prefixField; + sql += "auth_name = ? AND "; + sql += prefixField; + sql += "code IN ("; + params.emplace_back(auth_name); + bool firstGeodCRSForAuth = true; + for (const auto &crs : list) { + const auto &ids = crs.first->identifiers(); + if (!ids.empty() && *(ids[0]->codeSpace()) == auth_name) { + if (!firstGeodCRSForAuth) { + sql += ','; + } + firstGeodCRSForAuth = false; + sql += '?'; + params.emplace_back(ids[0]->code()); + } + } + sql += "))"; + } + sql += ')'; + return sql; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +std::list<crs::ProjectedCRSNNPtr> +AuthorityFactory::createProjectedCRSFromExisting( + const crs::ProjectedCRSNNPtr &crs) const { + std::list<crs::ProjectedCRSNNPtr> res; + + const auto &conv = crs->derivingConversionRef(); + const auto &method = conv->method(); + const auto methodEPSGCode = method->getEPSGCode(); + if (methodEPSGCode == 0) { + return res; + } + + auto lockedThisFactory(d->getSharedFromThis()); + assert(lockedThisFactory); + const auto &baseCRS(crs->baseCRS()); + auto candidatesGeodCRS = baseCRS->crs::CRS::identify(lockedThisFactory); + auto geogCRS = dynamic_cast<const crs::GeographicCRS *>(baseCRS.get()); + if (geogCRS) { + const auto axisOrder = geogCRS->coordinateSystem()->axisOrder(); + if (axisOrder == cs::EllipsoidalCS::AxisOrder::LONG_EAST_LAT_NORTH || + axisOrder == cs::EllipsoidalCS::AxisOrder::LAT_NORTH_LONG_EAST) { + const auto &unit = + geogCRS->coordinateSystem()->axisList()[0]->unit(); + auto otherOrderGeogCRS = crs::GeographicCRS::create( + util::PropertyMap().set(common::IdentifiedObject::NAME_KEY, + geogCRS->nameStr()), + geogCRS->datum(), geogCRS->datumEnsemble(), + axisOrder == cs::EllipsoidalCS::AxisOrder::LONG_EAST_LAT_NORTH + ? cs::EllipsoidalCS::createLatitudeLongitude(unit) + : cs::EllipsoidalCS::createLongitudeLatitude(unit)); + auto otherCandidatesGeodCRS = + otherOrderGeogCRS->crs::CRS::identify(lockedThisFactory); + candidatesGeodCRS.insert(candidatesGeodCRS.end(), + otherCandidatesGeodCRS.begin(), + otherCandidatesGeodCRS.end()); + } + } + + std::string sql( + "SELECT projected_crs.auth_name, projected_crs.code FROM projected_crs " + "JOIN conversion ON " + "projected_crs.conversion_auth_name = conversion.auth_name AND " + "projected_crs.conversion_code = conversion.code WHERE " + "projected_crs.deprecated = 0 AND "); + std::vector<SQLValues> params; + if (!candidatesGeodCRS.empty()) { + sql += buildSqlLookForAuthNameCode(candidatesGeodCRS, params, + "projected_crs.geodetic_crs_"); + sql += " AND "; + } + sql += "conversion.method_auth_name = 'EPSG' AND " + "conversion.method_code = ?"; + params.emplace_back(toString(methodEPSGCode)); + if (!getAuthority().empty()) { + sql += " AND projected_crs.auth_name = ?"; + params.emplace_back(getAuthority()); + } + + int iParam = 1; + for (const auto &genOpParamvalue : conv->parameterValues()) { + auto opParamvalue = + dynamic_cast<const operation::OperationParameterValue *>( + genOpParamvalue.get()); + if (!opParamvalue) { + break; + } + const auto paramEPSGCode = opParamvalue->parameter()->getEPSGCode(); + const auto ¶meterValue = opParamvalue->parameterValue(); + if (!(paramEPSGCode > 0 && + parameterValue->type() == + operation::ParameterValue::Type::MEASURE)) { + break; + } + const auto &measure = parameterValue->value(); + const auto &unit = measure.unit(); + if (unit == common::UnitOfMeasure::DEGREE && + geogCRS->coordinateSystem()->axisList()[0]->unit() == unit) { + const auto iParamAsStr(toString(iParam)); + sql += " AND conversion.param"; + sql += iParamAsStr; + sql += "_code = ? AND conversion.param"; + sql += iParamAsStr; + sql += "_auth_name = 'EPSG' AND conversion.param"; + sql += iParamAsStr; + sql += "_value BETWEEN ? AND ?"; + // As angles might be expressed with the odd unit EPSG:9110 + // "sexagesimal DMS", we have to provide a broad range + params.emplace_back(toString(paramEPSGCode)); + params.emplace_back(measure.value() - 1); + params.emplace_back(measure.value() + 1); + } + iParam++; + } + auto sqlRes = d->run(sql, params); + + params.clear(); + + sql = "SELECT auth_name, code FROM projected_crs WHERE " + "deprecated = 0 AND conversion_auth_name IS NULL AND "; + if (!candidatesGeodCRS.empty()) { + sql += buildSqlLookForAuthNameCode(candidatesGeodCRS, params, + "geodetic_crs_"); + sql += " AND "; + } + + const auto escapeLikeStr = [](const std::string &str) { + return replaceAll(replaceAll(replaceAll(str, "\\", "\\\\"), "_", "\\_"), + "%", "\\%"); + }; + + const auto ellpsSemiMajorStr = + toString(baseCRS->ellipsoid()->semiMajorAxis().getSIValue(), 10); + + sql += "(text_definition LIKE ? ESCAPE '\\'"; + + // WKT2 definition + { + std::string patternVal("%"); + + patternVal += ','; + patternVal += ellpsSemiMajorStr; + patternVal += '%'; + + patternVal += escapeLikeStr(method->nameStr()); + patternVal += '%'; + + params.emplace_back(patternVal); + } + + const auto *mapping = getMapping(method.get()); + if (mapping && mapping->proj_name_main) { + sql += " OR (text_definition LIKE ? AND (text_definition LIKE ?"; + + std::string patternVal("%"); + patternVal += "proj="; + patternVal += mapping->proj_name_main; + patternVal += '%'; + params.emplace_back(patternVal); + + // could be a= or R= + patternVal = "%="; + patternVal += ellpsSemiMajorStr; + patternVal += '%'; + params.emplace_back(patternVal); + + std::string projEllpsName; + std::string ellpsName; + if (baseCRS->ellipsoid()->lookForProjWellKnownEllps(projEllpsName, + ellpsName)) { + sql += " OR text_definition LIKE ?"; + // Could be ellps= or datum= + patternVal = "%="; + patternVal += projEllpsName; + patternVal += '%'; + params.emplace_back(patternVal); + } + + sql += "))"; + } + + // WKT1_GDAL definition + const char *wkt1GDALMethodName = conv->getWKT1GDALMethodName(); + if (wkt1GDALMethodName) { + sql += " OR text_definition LIKE ? ESCAPE '\\'"; + std::string patternVal("%"); + + patternVal += ','; + patternVal += ellpsSemiMajorStr; + patternVal += '%'; + + patternVal += escapeLikeStr(wkt1GDALMethodName); + patternVal += '%'; + + params.emplace_back(patternVal); + } + + // WKT1_ESRI definition + const char *esriMethodName = conv->getESRIMethodName(); + if (esriMethodName) { + sql += " OR text_definition LIKE ? ESCAPE '\\'"; + std::string patternVal("%"); + + patternVal += ','; + patternVal += ellpsSemiMajorStr; + patternVal += '%'; + + patternVal += escapeLikeStr(esriMethodName); + patternVal += '%'; + + auto fe = + &conv->parameterValueMeasure(EPSG_CODE_PARAMETER_FALSE_EASTING); + if (*fe == Measure()) { + fe = &conv->parameterValueMeasure( + EPSG_CODE_PARAMETER_EASTING_FALSE_ORIGIN); + } + if (!(*fe == Measure())) { + patternVal += "PARAMETER[\"False\\_Easting\","; + patternVal += + toString(fe->convertToUnit( + crs->coordinateSystem()->axisList()[0]->unit()), + 10); + patternVal += '%'; + } + + auto lat = &conv->parameterValueMeasure( + EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN); + if (*lat == Measure()) { + lat = &conv->parameterValueMeasure( + EPSG_NAME_PARAMETER_LATITUDE_FALSE_ORIGIN); + } + if (!(*lat == Measure())) { + patternVal += "PARAMETER[\"Latitude\\_Of\\_Origin\","; + const auto &angularUnit = + dynamic_cast<crs::GeographicCRS *>(crs->baseCRS().get()) + ? crs->baseCRS()->coordinateSystem()->axisList()[0]->unit() + : UnitOfMeasure::DEGREE; + patternVal += toString(lat->convertToUnit(angularUnit), 10); + patternVal += '%'; + } + + params.emplace_back(patternVal); + } + sql += ")"; + if (!getAuthority().empty()) { + sql += " AND auth_name = ?"; + params.emplace_back(getAuthority()); + } + + auto sqlRes2 = d->run(sql, params); + + if (sqlRes.size() <= 200) { + for (const auto &row : sqlRes) { + const auto &auth_name = row[0]; + const auto &code = row[1]; + res.emplace_back( + d->createFactory(auth_name)->createProjectedCRS(code)); + } + } + if (sqlRes2.size() <= 200) { + for (const auto &row : sqlRes2) { + const auto &auth_name = row[0]; + const auto &code = row[1]; + res.emplace_back( + d->createFactory(auth_name)->createProjectedCRS(code)); + } + } + + return res; +} + +// --------------------------------------------------------------------------- + +std::list<crs::CompoundCRSNNPtr> +AuthorityFactory::createCompoundCRSFromExisting( + const crs::CompoundCRSNNPtr &crs) const { + std::list<crs::CompoundCRSNNPtr> res; + + auto lockedThisFactory(d->getSharedFromThis()); + assert(lockedThisFactory); + + const auto &components = crs->componentReferenceSystems(); + if (components.size() != 2) { + return res; + } + auto candidatesHorizCRS = components[0]->identify(lockedThisFactory); + auto candidatesVertCRS = components[1]->identify(lockedThisFactory); + if (candidatesHorizCRS.empty() && candidatesVertCRS.empty()) { + return res; + } + + std::string sql("SELECT auth_name, code FROM compound_crs WHERE " + "deprecated = 0 AND "); + std::vector<SQLValues> params; + bool addAnd = false; + if (!candidatesHorizCRS.empty()) { + sql += buildSqlLookForAuthNameCode(candidatesHorizCRS, params, + "horiz_crs_"); + addAnd = true; + } + if (!candidatesVertCRS.empty()) { + if (addAnd) { + sql += " AND "; + } + sql += buildSqlLookForAuthNameCode(candidatesVertCRS, params, + "vertical_crs_"); + addAnd = true; + } + if (!getAuthority().empty()) { + if (addAnd) { + sql += " AND "; + } + sql += "auth_name = ?"; + params.emplace_back(getAuthority()); + } + + auto sqlRes = d->run(sql, params); + for (const auto &row : sqlRes) { + const auto &auth_name = row[0]; + const auto &code = row[1]; + res.emplace_back(d->createFactory(auth_name)->createCompoundCRS(code)); + } + return res; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +FactoryException::FactoryException(const char *message) : Exception(message) {} + +// --------------------------------------------------------------------------- + +FactoryException::FactoryException(const std::string &message) + : Exception(message) {} + +// --------------------------------------------------------------------------- + +FactoryException::~FactoryException() = default; + +// --------------------------------------------------------------------------- + +FactoryException::FactoryException(const FactoryException &) = default; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +struct NoSuchAuthorityCodeException::Private { + std::string authority_; + std::string code_; + + Private(const std::string &authority, const std::string &code) + : authority_(authority), code_(code) {} +}; + +// --------------------------------------------------------------------------- + +NoSuchAuthorityCodeException::NoSuchAuthorityCodeException( + const std::string &message, const std::string &authority, + const std::string &code) + : FactoryException(message), + d(internal::make_unique<Private>(authority, code)) {} + +// --------------------------------------------------------------------------- + +NoSuchAuthorityCodeException::~NoSuchAuthorityCodeException() = default; + +// --------------------------------------------------------------------------- + +NoSuchAuthorityCodeException::NoSuchAuthorityCodeException( + const NoSuchAuthorityCodeException &other) + : FactoryException(other), d(internal::make_unique<Private>(*(other.d))) {} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Returns authority name. */ +const std::string &NoSuchAuthorityCodeException::getAuthority() const { + return d->authority_; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns authority code. */ +const std::string &NoSuchAuthorityCodeException::getAuthorityCode() const { + return d->code_; +} + +// --------------------------------------------------------------------------- + +} // namespace io +NS_PROJ_END diff --git a/src/general_doc.dox b/src/general_doc.dox new file mode 100644 index 00000000..ce5a8130 --- /dev/null +++ b/src/general_doc.dox @@ -0,0 +1,158 @@ +/*! + +\page general_doc General documentation + +\section general_api_design General API design + +The design of the class hierarchy is strongly derived from \ref ISO_19111_2018. + +Classes for which the constructors are not directly accessible have their +instances constructed with create() methods. The returned object is a non-null +shared pointer. Such objects are immutable, and thread-safe. + +TODO + +\section general_properties General properties + +All classes deriving from IdentifiedObject have general properties that can +be defined at creation time. Those properties are: + +<ul> +<li>osgeo::proj::metadata::Identifier::DESCRIPTION_KEY ("description"): the +natural language description of the meaning of the code value, provided a a string.</li> +<li>osgeo::proj::metadata::Identifier::CODE_KEY ("code"): a numeric or +alphanumeric code, provided as a integer or a string. For example 4326, for +the EPSG:4326 "WGS84" GeographicalCRS</li> +<li>osgeo::proj::metadata::Identifier::CODESPACE_KEY ("codespace"): the organization +responsible for definition and maintenance of the code., provided a a string. +For example "EPSG".</li> +<li>osgeo::proj::metadata::Identifier::VERSION_KEY ("version"): the version +identifier for the namespace, provided a a string.</li> +<li>osgeo::proj::metadata::Identifier::AUTHORITY_KEY ("authority"): a citation for the authority, +provided as a string or a osgeo::proj::metadata::Citation object. Often unused</li> +<li>osgeo::proj::metadata::Identifier::URI_KEY ("uri"): the URI of the identifier, +provided as a string. Often unused</li> + +<li>osgeo::proj::common::IdentifiedObject::NAME_KEY ("name"): the name of a +osgeo::proj::common::IdentifiedObject, provided as a string or +osgeo::proj::metadata::IdentifierNNPtr.</li> +<li>osgeo::proj::common::IdentifiedObject::IDENTIFIERS_KEY ("identifiers"): +the identifier(s) of a osgeo::proj::common::IdentifiedObject, provided as +a osgeo::proj::common::IdentifierNNPtr or a +osgeo::proj::util::ArrayOfBaseObjectNNPtr of +osgeo::proj::metadata::IdentifierNNPtr.</li> +<li>osgeo::proj::common::IdentifiedObject::ALIAS_KEY ("alias"): +the alias(es) of a osgeo::proj::common::IdentifiedObject, +provided as string, a osgeo::proj::util::GenericNameNNPtr or a +osgeo::proj::util::ArrayOfBaseObjectNNPtr +of osgeo::proj::util::GenericNameNNPtr.</li> +<li>osgeo::proj::common::IdentifiedObject::REMARKS_KEY ("remarks"): +the remarks of a osgeo::proj::common::IdentifiedObject, +provided as a string.</li> +<li>osgeo::proj::common::IdentifiedObject::DEPRECATED_KEY ("deprecated"): +the deprecation flag of a osgeo::proj::common::IdentifiedObject, +provided as a boolean.</li> + +<li>osgeo::proj::common::ObjectUsage::SCOPE_KEY ("scope"): +the scope of a osgeo::proj::common::ObjectUsage, provided as a string.</li> +<li>osgeo::proj::common::ObjectUsage::DOMAIN_OF_VALIDITY_KEY ("domainOfValidity"): +the domain of validity of a osgeo::proj::common::ObjectUsage, +provided as a osgeo::proj::metadata::ExtentNNPtr.</li> +<li>osgeo::proj::common::ObjectUsage::OBJECT_DOMAIN_KEY ("objectDomain"): +the object domain(s) of a osgeo::proj::common::ObjectUsage, +provided as a osgeo::proj::common::ObjectDomainNNPtr or a +osgeo::proj::util::ArrayOfBaseObjectNNPtr +of osgeo::proj::common::ObjectDomainNNPtr.</li> + +</ul> + +\section standards Applicable standards + +\subsection ISO_19111 ISO:19111 / OGC Topic 2 standard + +Topic 2 - Spatial referencing by coordinates. + +This is an Abstract Specification describes the data elements, relationships and +associated metadata required for spatial referencing by coordinates. It describes +Coordinate Reference Systems (CRS), coordinate systems (CS) and coordinate +transformation or coordinate conversion between two different coordinate +reference systems. + +\subsubsection ISO_19111_2018 ISO 19111:2018 + +This is the revision mostly used for PROJ C++ modelling. + +[OGC 18-005r1, 2018-04-04, ISO 19111:2018] +(https://portal.opengeospatial.org/files/?artifact_id=78556) +(not yet adopted, at time of writing) + +\subsubsection ISO_19111_2007 ISO 19111:2007 + +The precedent version of the specification was: +[OGC 08-015r2, 2010-04-27, ISO 19111:2007] +(http://portal.opengeospatial.org/files/?artifact_id=39049) + +\subsection WKT2 WKT2 standard + +Well-known text representation of coordinate reference systems. + +Well-known Text (WKT) offers a compact machine- and human-readable +representation of the critical elements of coordinate reference system (CRS) +definitions, and coordinate operations. This is an implementation of +\ref ISO_19111 + +PROJ implements the two following revisions of the standard: + +\subsubsection WKT2_2018 WKT2:2018 + +[OGC 18-010r1, 2018-06-08, WKT2-2018] +(https://portal.opengeospatial.org/files/?artifact_id=79826) +(not yet adopted, at time of writing) + +\subsubsection WKT2_2015 WKT2:2015 + +[OGC 12-063r5, 2015-05-01, WKT2-2015] +(http://docs.opengeospatial.org/is/12-063r5/12-063r5.html) + +\subsection WKT1 WKT1 specification + +Older specifications of well-known text representation of coordinate reference +systems are also supported by PROJ, mostly for compatibility with legacy +systems, or older versions of GDAL. + +GDAL v2.3 and earlier mostly implements: + +[OGC 01-009, 2001-01-12, OpenGIS Coordinate Transformation Service Implementation Specification] +(http://portal.opengeospatial.org/files/?artifact_id=999) + +The [GDAL documentation, OGC WKT Coordinate System Issues] +(http://www.gdal.org/wktproblems.html) discusses issues, and GDAL implementation +choices. + +An older specification of WKT1 is/was used by some software packages: + +[OGC 99-049, 1999-05-05, OpenGIS Simple Features Specification For SQL v1.1] +(http://portal.opengeospatial.org/files/?artifact_id=829) + +\subsection ISO_19115 ISO 19115 (Metadata) + +Defines the schema required for describing geographic information and services. +It provides information about the identification, the extent, the quality, the +spatial and temporal schema, spatial reference, and distribution of digital +geographic data. + +PROJ implements a simplified subset of ISO 19115. + +\subsection GeoAPI GeoAPI + +A set of Java and Python language programming interfaces for geospatial +applications. + +[GeoAPI main page](http://www.geoapi.org/) + +[GeoAPI Javadoc](http://www.geoapi.org/3.0/javadoc/index.html) + +[OGC GeoAPI Implementation Specification] +(http://www.opengeospatial.org/standards/geoapi) + +*/ diff --git a/src/geodesic.h b/src/geodesic.h index 0e18af5a..11484ec7 100644 --- a/src/geodesic.h +++ b/src/geodesic.h @@ -157,6 +157,20 @@ GEODESIC_VERSION_MINOR, \ GEODESIC_VERSION_PATCH) +#ifndef GEOD_DLL +#if defined(_MSC_VER) +#define GEOD_DLL __declspec(dllexport) +#elif defined(__GNUC__) +#define GEOD_DLL __attribute__ ((visibility("default"))) +#else +#define GEOD_DLL +#endif +#endif + +#ifdef PROJ_RENAME_SYMBOLS +#include "proj_symbol_rename.h" +#endif + #if defined(__cplusplus) extern "C" { #endif @@ -224,7 +238,7 @@ extern "C" { * @param[in] a the equatorial radius (meters). * @param[in] f the flattening. **********************************************************************/ - void geod_init(struct geod_geodesic* g, double a, double f); + void GEOD_DLL geod_init(struct geod_geodesic* g, double a, double f); /** * Solve the direct geodesic problem. @@ -262,7 +276,7 @@ extern "C" { printf("%.5f %.5f\n", lat, lon); @endcode **********************************************************************/ - void geod_direct(const struct geod_geodesic* g, + void GEOD_DLL geod_direct(const struct geod_geodesic* g, double lat1, double lon1, double azi1, double s12, double* plat2, double* plon2, double* pazi2); @@ -304,7 +318,7 @@ extern "C" { * that the quantity \e lon2 − \e lon1 indicates how many times and in * what sense the geodesic encircles the ellipsoid. **********************************************************************/ - double geod_gendirect(const struct geod_geodesic* g, + double GEOD_DLL geod_gendirect(const struct geod_geodesic* g, double lat1, double lon1, double azi1, unsigned flags, double s12_a12, double* plat2, double* plon2, double* pazi2, @@ -349,7 +363,7 @@ extern "C" { printf("%.3f\n", s12); @endcode **********************************************************************/ - void geod_inverse(const struct geod_geodesic* g, + void GEOD_DLL geod_inverse(const struct geod_geodesic* g, double lat1, double lon1, double lat2, double lon2, double* ps12, double* pazi1, double* pazi2); @@ -380,7 +394,7 @@ extern "C" { * "return" arguments \e ps12, etc., may be replaced by 0, if you do not need * some quantities computed. **********************************************************************/ - double geod_geninverse(const struct geod_geodesic* g, + double GEOD_DLL geod_geninverse(const struct geod_geodesic* g, double lat1, double lon1, double lat2, double lon2, double* ps12, double* pazi1, double* pazi2, double* pm12, double* pM12, double* pM21, @@ -425,7 +439,7 @@ extern "C" { * When initialized by this function, point 3 is undefined (l->s13 = l->a13 = * NaN). **********************************************************************/ - void geod_lineinit(struct geod_geodesicline* l, + void GEOD_DLL geod_lineinit(struct geod_geodesicline* l, const struct geod_geodesic* g, double lat1, double lon1, double azi1, unsigned caps); @@ -450,7 +464,7 @@ extern "C" { * 2 of the direct geodesic problem. See geod_lineinit() for more * information. **********************************************************************/ - void geod_directline(struct geod_geodesicline* l, + void GEOD_DLL geod_directline(struct geod_geodesicline* l, const struct geod_geodesic* g, double lat1, double lon1, double azi1, double s12, unsigned caps); @@ -480,7 +494,7 @@ extern "C" { * 2 of the direct geodesic problem. See geod_lineinit() for more * information. **********************************************************************/ - void geod_gendirectline(struct geod_geodesicline* l, + void GEOD_DLL geod_gendirectline(struct geod_geodesicline* l, const struct geod_geodesic* g, double lat1, double lon1, double azi1, unsigned flags, double s12_a12, @@ -506,7 +520,7 @@ extern "C" { * 2 of the inverse geodesic problem. See geod_lineinit() for more * information. **********************************************************************/ - void geod_inverseline(struct geod_geodesicline* l, + void GEOD_DLL geod_inverseline(struct geod_geodesicline* l, const struct geod_geodesic* g, double lat1, double lon1, double lat2, double lon2, unsigned caps); @@ -556,7 +570,7 @@ extern "C" { } @endcode **********************************************************************/ - void geod_position(const struct geod_geodesicline* l, double s12, + void GEOD_DLL geod_position(const struct geod_geodesicline* l, double s12, double* plat2, double* plon2, double* pazi2); /** @@ -623,7 +637,7 @@ extern "C" { } @endcode **********************************************************************/ - double geod_genposition(const struct geod_geodesicline* l, + double GEOD_DLL geod_genposition(const struct geod_geodesicline* l, unsigned flags, double s12_a12, double* plat2, double* plon2, double* pazi2, double* ps12, double* pm12, @@ -640,7 +654,7 @@ extern "C" { * This is only useful if the geod_geodesicline object has been constructed * with \e caps |= GEOD_DISTANCE_IN. **********************************************************************/ - void geod_setdistance(struct geod_geodesicline* l, double s13); + void GEOD_DLL geod_setdistance(struct geod_geodesicline* l, double s13); /** * Specify position of point 3 in terms of either distance or arc length. @@ -657,7 +671,7 @@ extern "C" { * GEOD_ARCMODE, the \e s13 is only set if the geod_geodesicline object has * been constructed with \e caps |= GEOD_DISTANCE. **********************************************************************/ - void geod_gensetdistance(struct geod_geodesicline* l, + void GEOD_DLL geod_gensetdistance(struct geod_geodesicline* l, unsigned flags, double s13_a13); /** @@ -679,14 +693,14 @@ extern "C" { * An example of the use of this function is given in the documentation for * geod_polygon_compute(). **********************************************************************/ - void geod_polygon_init(struct geod_polygon* p, int polylinep); + void GEOD_DLL geod_polygon_init(struct geod_polygon* p, int polylinep); /** * Clear the polygon, allowing a new polygon to be started. * * @param[in,out] p a pointer to the object to be cleared. **********************************************************************/ - void geod_polygon_clear(struct geod_polygon* p); + void GEOD_DLL geod_polygon_clear(struct geod_polygon* p); /** * Add a point to the polygon or polyline. @@ -706,7 +720,7 @@ extern "C" { * An example of the use of this function is given in the documentation for * geod_polygon_compute(). **********************************************************************/ - void geod_polygon_addpoint(const struct geod_geodesic* g, + void GEOD_DLL geod_polygon_addpoint(const struct geod_geodesic* g, struct geod_polygon* p, double lat, double lon); @@ -726,7 +740,7 @@ extern "C" { * added yet. The \e lat and \e lon fields of \e p give the location of the * new vertex. **********************************************************************/ - void geod_polygon_addedge(const struct geod_geodesic* g, + void GEOD_DLL geod_polygon_addedge(const struct geod_geodesic* g, struct geod_polygon* p, double azi, double s); @@ -773,7 +787,7 @@ extern "C" { printf("%d %.8f %.3f\n", n, P, A); @endcode **********************************************************************/ - unsigned geod_polygon_compute(const struct geod_geodesic* g, + unsigned GEOD_DLL geod_polygon_compute(const struct geod_geodesic* g, const struct geod_polygon* p, int reverse, int sign, double* pA, double* pP); @@ -804,7 +818,7 @@ extern "C" { * * \e lat should be in the range [−90°, 90°]. **********************************************************************/ - unsigned geod_polygon_testpoint(const struct geod_geodesic* g, + unsigned GEOD_DLL geod_polygon_testpoint(const struct geod_geodesic* g, const struct geod_polygon* p, double lat, double lon, int reverse, int sign, @@ -835,7 +849,7 @@ extern "C" { * polyline (meters). * @return the number of points. **********************************************************************/ - unsigned geod_polygon_testedge(const struct geod_geodesic* g, + unsigned GEOD_DLL geod_polygon_testedge(const struct geod_geodesic* g, const struct geod_polygon* p, double azi, double s, int reverse, int sign, @@ -873,7 +887,7 @@ extern "C" { printf("%.0f %.2f\n", A, P); @endcode **********************************************************************/ - void geod_polygonarea(const struct geod_geodesic* g, + void GEOD_DLL geod_polygonarea(const struct geod_geodesic* g, double lats[], double lons[], int n, double* pA, double* pP); diff --git a/src/internal.cpp b/src/internal.cpp new file mode 100644 index 00000000..aa27192a --- /dev/null +++ b/src/internal.cpp @@ -0,0 +1,298 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef FROM_PROJ_CPP +#define FROM_PROJ_CPP +#endif + +#include "proj/internal/internal.hpp" + +#include <cstring> +#ifdef _MSC_VER +#include <string.h> +#else +#include <strings.h> +#endif +#include <exception> +#include <iomanip> // std::setprecision +#include <locale> +#include <sstream> // std::istringstream and std::ostringstream +#include <string> + +NS_PROJ_START + +namespace internal { + +// --------------------------------------------------------------------------- + +/** + * Replace all occurrences of before with after. + */ +std::string replaceAll(const std::string &str, const std::string &before, + const std::string &after) { + std::string ret(str); + const size_t nBeforeSize = before.size(); + const size_t nAfterSize = after.size(); + if (nBeforeSize) { + size_t nStartPos = 0; + while ((nStartPos = ret.find(before, nStartPos)) != std::string::npos) { + ret.replace(nStartPos, nBeforeSize, after); + nStartPos += nAfterSize; + } + } + return ret; +} + +// --------------------------------------------------------------------------- + +inline static bool EQUALN(const char *a, const char *b, size_t size) { +#ifdef _MSC_VER + return _strnicmp(a, b, size) == 0; +#else + return strncasecmp(a, b, size) == 0; +#endif +} + +/** + * Case-insensitive equality test + */ +bool ci_equal(const std::string &a, const std::string &b) noexcept { + const auto size = a.size(); + if (size != b.size()) { + return false; + } + return EQUALN(a.c_str(), b.c_str(), size); +} + +bool ci_equal(const std::string &a, const char *b) noexcept { + const auto size = a.size(); + if (size != strlen(b)) { + return false; + } + return EQUALN(a.c_str(), b, size); +} + +bool ci_equal(const char *a, const char *b) noexcept { + const auto size = strlen(a); + if (size != strlen(b)) { + return false; + } + return EQUALN(a, b, size); +} + +// --------------------------------------------------------------------------- + +/** + * Convert to lower case. + */ + +std::string tolower(const std::string &str) + +{ + std::string ret(str); + for (size_t i = 0; i < ret.size(); i++) + ret[i] = static_cast<char>(::tolower(ret[i])); + return ret; +} + +// --------------------------------------------------------------------------- + +/** + * Convert to upper case. + */ + +std::string toupper(const std::string &str) + +{ + std::string ret(str); + for (size_t i = 0; i < ret.size(); i++) + ret[i] = static_cast<char>(::toupper(ret[i])); + return ret; +} + +// --------------------------------------------------------------------------- + +/** Strip leading and trailing double quote characters */ +std::string stripQuotes(const std::string &str) { + if (str.size() >= 2 && str[0] == '"' && str.back() == '"') { + return str.substr(1, str.size() - 2); + } + return str; +} + +// --------------------------------------------------------------------------- + +size_t ci_find(const std::string &str, const char *needle) noexcept { + const size_t needleSize = strlen(needle); + for (size_t i = 0; i + needleSize <= str.size(); i++) { + if (EQUALN(str.c_str() + i, needle, needleSize)) { + return i; + } + } + return std::string::npos; +} + +// --------------------------------------------------------------------------- + +size_t ci_find(const std::string &str, const std::string &needle, + size_t startPos) noexcept { + const size_t needleSize = needle.size(); + for (size_t i = startPos; i + needleSize <= str.size(); i++) { + if (EQUALN(str.c_str() + i, needle.c_str(), needleSize)) { + return i; + } + } + return std::string::npos; +} + +// --------------------------------------------------------------------------- + +/* +bool starts_with(const std::string &str, const std::string &prefix) noexcept { + if (str.size() < prefix.size()) { + return false; + } + return std::memcmp(str.c_str(), prefix.c_str(), prefix.size()) == 0; +} +*/ + +// --------------------------------------------------------------------------- + +/* +bool starts_with(const std::string &str, const char *prefix) noexcept { + const size_t prefixSize = std::strlen(prefix); + if (str.size() < prefixSize) { + return false; + } + return std::memcmp(str.c_str(), prefix, prefixSize) == 0; +} +*/ + +// --------------------------------------------------------------------------- + +bool ci_starts_with(const char *str, const char *prefix) noexcept { + const auto str_size = strlen(str); + const auto prefix_size = strlen(prefix); + if (str_size < prefix_size) { + return false; + } + return EQUALN(str, prefix, prefix_size); +} + +// --------------------------------------------------------------------------- + +bool ci_starts_with(const std::string &str, + const std::string &prefix) noexcept { + if (str.size() < prefix.size()) { + return false; + } + return EQUALN(str.c_str(), prefix.c_str(), prefix.size()); +} + +// --------------------------------------------------------------------------- + +bool ends_with(const std::string &str, const std::string &suffix) noexcept { + if (str.size() < suffix.size()) { + return false; + } + return std::memcmp(str.c_str() + str.size() - suffix.size(), suffix.c_str(), + suffix.size()) == 0; +} + +// --------------------------------------------------------------------------- + +double c_locale_stod(const std::string &s) { + std::istringstream iss(s); + iss.imbue(std::locale::classic()); + double d; + iss >> d; + if (!iss.eof() || iss.fail()) { + throw std::invalid_argument("non double value"); + } + return d; +} + +// --------------------------------------------------------------------------- + +std::vector<std::string> split(const std::string &str, char separator) { + std::vector<std::string> res; + size_t lastPos = 0; + size_t newPos = 0; + while ((newPos = str.find(separator, lastPos)) != std::string::npos) { + res.push_back(str.substr(lastPos, newPos - lastPos)); + lastPos = newPos + 1; + } + res.push_back(str.substr(lastPos)); + return res; +} + +// --------------------------------------------------------------------------- + +std::string toString(int val) { + std::ostringstream buffer; + buffer.imbue(std::locale::classic()); + buffer << val; + return buffer.str(); +} + +std::string toString(double val, int precision) { + std::ostringstream buffer; + buffer.imbue(std::locale::classic()); + buffer << std::setprecision(precision); + buffer << val; + auto str = buffer.str(); + if (precision == 15 && str.find("9999999999") != std::string::npos) { + buffer.str(""); + buffer.clear(); + buffer << std::setprecision(14); + buffer << val; + return buffer.str(); + } + return str; +} + +// --------------------------------------------------------------------------- + +std::string concat(const char *a, const std::string &b) { + std::string res(a); + res += b; + return res; +} + +std::string concat(const char *a, const std::string &b, const char *c) { + std::string res(a); + res += b; + res += c; + return res; +} + +// --------------------------------------------------------------------------- + +} // namespace internal + +NS_PROJ_END diff --git a/src/io.cpp b/src/io.cpp new file mode 100644 index 00000000..83450745 --- /dev/null +++ b/src/io.cpp @@ -0,0 +1,6827 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef FROM_PROJ_CPP +#define FROM_PROJ_CPP +#endif + +#include <algorithm> +#include <cassert> +#include <cctype> +#include <cmath> +#include <cstring> +#include <list> +#include <locale> +#include <map> +#include <set> +#include <sstream> // std::istringstream +#include <string> +#include <utility> +#include <vector> + +#include "proj/common.hpp" +#include "proj/coordinateoperation.hpp" +#include "proj/coordinatesystem.hpp" +#include "proj/crs.hpp" +#include "proj/datum.hpp" +#include "proj/io.hpp" +#include "proj/metadata.hpp" +#include "proj/util.hpp" + +#include "proj/internal/coordinateoperation_internal.hpp" +#include "proj/internal/coordinatesystem_internal.hpp" +#include "proj/internal/internal.hpp" +#include "proj/internal/io_internal.hpp" + +#include "proj_constants.h" + +// PROJ include order is sensitive +// clang-format off +#include "proj.h" +#include "projects.h" +#include "proj_api.h" +// clang-format on + +using namespace NS_PROJ::common; +using namespace NS_PROJ::crs; +using namespace NS_PROJ::cs; +using namespace NS_PROJ::datum; +using namespace NS_PROJ::internal; +using namespace NS_PROJ::metadata; +using namespace NS_PROJ::operation; +using namespace NS_PROJ::util; + +//! @cond Doxygen_Suppress +static const std::string emptyString{}; +//! @endcond + +#if 0 +namespace dropbox{ namespace oxygen { +template<> nn<NS_PROJ::io::DatabaseContextPtr>::~nn() = default; +template<> nn<NS_PROJ::io::AuthorityFactoryPtr>::~nn() = default; +template<> nn<std::shared_ptr<NS_PROJ::io::IPROJStringExportable>>::~nn() = default; +template<> nn<std::unique_ptr<NS_PROJ::io::PROJStringFormatter, std::default_delete<NS_PROJ::io::PROJStringFormatter> > >::~nn() = default; +template<> nn<std::unique_ptr<NS_PROJ::io::WKTFormatter, std::default_delete<NS_PROJ::io::WKTFormatter> > >::~nn() = default; +template<> nn<std::unique_ptr<NS_PROJ::io::WKTNode, std::default_delete<NS_PROJ::io::WKTNode> > >::~nn() = default; +}} +#endif + +NS_PROJ_START +namespace io { + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +IWKTExportable::~IWKTExportable() = default; + +// --------------------------------------------------------------------------- + +std::string IWKTExportable::exportToWKT(WKTFormatter *formatter) const { + _exportToWKT(formatter); + return formatter->toString(); +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct WKTFormatter::Private { + struct Params { + WKTFormatter::Convention convention_ = WKTFormatter::Convention::WKT2; + WKTFormatter::Version version_ = WKTFormatter::Version::WKT2; + bool multiLine_ = true; + bool strict_ = true; + int indentWidth_ = 4; + bool idOnTopLevelOnly_ = false; + bool outputAxisOrder_ = false; + bool primeMeridianOmittedIfGreenwich_ = false; + bool ellipsoidUnitOmittedIfMetre_ = false; + bool primeMeridianOrParameterUnitOmittedIfSameAsAxis_ = false; + bool forceUNITKeyword_ = false; + bool outputCSUnitOnlyOnceIfSame_ = false; + bool primeMeridianInDegree_ = false; + bool use2018Keywords_ = false; + bool useESRIDialect_ = false; + bool outputAxis_ = true; + }; + Params params_{}; + DatabaseContextPtr dbContext_{}; + + int indentLevel_ = 0; + int level_ = 0; + std::vector<bool> stackHasChild_{}; + std::vector<bool> stackHasId_{false}; + std::vector<bool> stackEmptyKeyword_{}; + std::vector<bool> outputUnitStack_{true}; + std::vector<bool> outputIdStack_{true}; + std::vector<UnitOfMeasureNNPtr> axisLinearUnitStack_{ + util::nn_make_shared<UnitOfMeasure>(UnitOfMeasure::METRE)}; + std::vector<UnitOfMeasureNNPtr> axisAngularUnitStack_{ + util::nn_make_shared<UnitOfMeasure>(UnitOfMeasure::DEGREE)}; + bool abridgedTransformation_ = false; + bool useDerivingConversion_ = false; + std::vector<double> toWGS84Parameters_{}; + std::string hDatumExtension_{}; + std::string vDatumExtension_{}; + std::vector<bool> inversionStack_{false}; + std::string result_{}; + + // cppcheck-suppress functionStatic + void addNewLine(); + void addIndentation(); + // cppcheck-suppress functionStatic + void startNewChild(); +}; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Constructs a new formatter. + * + * A formatter can be used only once (its internal state is mutated) + * + * Its default behaviour can be adjusted with the different setters. + * + * @param convention WKT flavor. Defaults to Convention::WKT2 + * @param dbContext Database context, to allow queries in it if needed. + * This is used for example for WKT1_ESRI output to do name substitutions. + * + * @return new formatter. + */ +WKTFormatterNNPtr WKTFormatter::create(Convention convention, + // cppcheck-suppress passedByValue + DatabaseContextPtr dbContext) { + auto ret = NN_NO_CHECK(WKTFormatter::make_unique<WKTFormatter>(convention)); + ret->d->dbContext_ = dbContext; + return ret; +} + +// --------------------------------------------------------------------------- + +/** \brief Constructs a new formatter from another one. + * + * A formatter can be used only once (its internal state is mutated) + * + * Its default behaviour can be adjusted with the different setters. + * + * @param other source formatter. + * @return new formatter. + */ +WKTFormatterNNPtr WKTFormatter::create(const WKTFormatterNNPtr &other) { + auto f = create(other->d->params_.convention_, other->d->dbContext_); + f->d->params_ = other->d->params_; + return f; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +WKTFormatter::~WKTFormatter() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Whether to use multi line output or not. */ +WKTFormatter &WKTFormatter::setMultiLine(bool multiLine) noexcept { + d->params_.multiLine_ = multiLine; + return *this; +} + +// --------------------------------------------------------------------------- + +/** \brief Set number of spaces for each indentation level (defaults to 4). + */ +WKTFormatter &WKTFormatter::setIndentationWidth(int width) noexcept { + d->params_.indentWidth_ = width; + return *this; +} + +// --------------------------------------------------------------------------- + +/** \brief Set whether AXIS nodes should be output. + * + * This can typically be set to false for some variants of WKT1_GDAL. + */ +WKTFormatter &WKTFormatter::setOutputAxis(bool outputAxisIn) noexcept { + d->params_.outputAxis_ = outputAxisIn; + return *this; +} + +// --------------------------------------------------------------------------- + +/** \brief Set whether the formatter should operate on strict more or not. + * + * The default is strit mode, in which case a FormattingException can be thrown. + */ +WKTFormatter &WKTFormatter::setStrict(bool strictIn) noexcept { + d->params_.strict_ = strictIn; + return *this; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns whether the formatter is in strict mode. */ +bool WKTFormatter::isStrict() const noexcept { return d->params_.strict_; } + +// --------------------------------------------------------------------------- + +/** Returns the WKT string from the formatter. */ +const std::string &WKTFormatter::toString() const { + if (d->indentLevel_ > 0 || d->level_ > 0) { + // For intermediary nodes, the formatter is in a inconsistent + // state. + throw FormattingException("toString() called on intermediate nodes"); + } + if (d->axisLinearUnitStack_.size() != 1) + throw FormattingException( + "Unbalanced pushAxisLinearUnit() / popAxisLinearUnit()"); + if (d->axisAngularUnitStack_.size() != 1) + throw FormattingException( + "Unbalanced pushAxisAngularUnit() / popAxisAngularUnit()"); + if (d->outputIdStack_.size() != 1) + throw FormattingException("Unbalanced pushOutputId() / popOutputId()"); + if (d->outputUnitStack_.size() != 1) + throw FormattingException( + "Unbalanced pushOutputUnit() / popOutputUnit()"); + + return d->result_; +} + +//! @cond Doxygen_Suppress + +// --------------------------------------------------------------------------- + +WKTFormatter::WKTFormatter(Convention convention) + : d(internal::make_unique<Private>()) { + d->params_.convention_ = convention; + switch (convention) { + case Convention::WKT2_2018: + d->params_.use2018Keywords_ = true; + PROJ_FALLTHROUGH + case Convention::WKT2: + d->params_.version_ = WKTFormatter::Version::WKT2; + d->params_.outputAxisOrder_ = true; + break; + + case Convention::WKT2_2018_SIMPLIFIED: + d->params_.use2018Keywords_ = true; + PROJ_FALLTHROUGH + case Convention::WKT2_SIMPLIFIED: + d->params_.version_ = WKTFormatter::Version::WKT2; + d->params_.idOnTopLevelOnly_ = true; + d->params_.outputAxisOrder_ = false; + d->params_.primeMeridianOmittedIfGreenwich_ = true; + d->params_.ellipsoidUnitOmittedIfMetre_ = true; + d->params_.primeMeridianOrParameterUnitOmittedIfSameAsAxis_ = true; + d->params_.forceUNITKeyword_ = true; + d->params_.outputCSUnitOnlyOnceIfSame_ = true; + break; + + case Convention::WKT1_GDAL: + d->params_.version_ = WKTFormatter::Version::WKT1; + d->params_.outputAxisOrder_ = false; + d->params_.forceUNITKeyword_ = true; + d->params_.primeMeridianInDegree_ = true; + break; + + case Convention::WKT1_ESRI: + d->params_.version_ = WKTFormatter::Version::WKT1; + d->params_.outputAxisOrder_ = false; + d->params_.forceUNITKeyword_ = true; + d->params_.primeMeridianInDegree_ = true; + d->params_.useESRIDialect_ = true; + d->params_.multiLine_ = false; + d->params_.outputAxis_ = false; + break; + + default: + assert(false); + break; + } +} + +// --------------------------------------------------------------------------- + +WKTFormatter &WKTFormatter::setOutputId(bool outputIdIn) { + if (d->indentLevel_ != 0) { + throw Exception( + "setOutputId() shall only be called when the stack state is empty"); + } + d->outputIdStack_[0] = outputIdIn; + return *this; +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::Private::addNewLine() { result_ += '\n'; } + +// --------------------------------------------------------------------------- + +void WKTFormatter::Private::addIndentation() { + result_ += std::string(indentLevel_ * params_.indentWidth_, ' '); +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::enter() { + if (d->indentLevel_ == 0 && d->level_ == 0) { + d->stackHasChild_.push_back(false); + } + ++d->level_; +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::leave() { + assert(d->level_ > 0); + --d->level_; + if (d->indentLevel_ == 0 && d->level_ == 0) { + d->stackHasChild_.pop_back(); + } +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::startNode(const std::string &keyword, bool hasId) { + if (!d->stackHasChild_.empty()) { + d->startNewChild(); + } else if (!d->result_.empty()) { + d->result_ += ","; + if (d->params_.multiLine_ && !keyword.empty()) { + d->addNewLine(); + } + } + + if (d->params_.multiLine_) { + if ((d->indentLevel_ || d->level_) && !keyword.empty()) { + if (!d->result_.empty()) { + d->addNewLine(); + } + d->addIndentation(); + } + } + + if (!keyword.empty()) { + d->result_ += keyword; + d->result_ += "["; + } + d->indentLevel_++; + d->stackHasChild_.push_back(false); + d->stackEmptyKeyword_.push_back(keyword.empty()); + + // Starting from a node that has a ID, we should emit ID nodes for : + // - this node + // - and for METHOD&PARAMETER nodes in WKT2, unless idOnTopLevelOnly_ is + // set. + // For WKT2, all other intermediate nodes shouldn't have ID ("not + // recommended") + if (!d->params_.idOnTopLevelOnly_ && d->indentLevel_ >= 2 && + d->params_.version_ == WKTFormatter::Version::WKT2 && + (keyword == WKTConstants::METHOD || + keyword == WKTConstants::PARAMETER)) { + pushOutputId(d->outputIdStack_[0]); + } else if (d->indentLevel_ >= 2 && + d->params_.version_ == WKTFormatter::Version::WKT2) { + pushOutputId(d->outputIdStack_[0] && !d->stackHasId_.back()); + } else { + pushOutputId(outputId()); + } + + d->stackHasId_.push_back(hasId || d->stackHasId_.back()); +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::endNode() { + assert(d->indentLevel_ > 0); + d->stackHasId_.pop_back(); + popOutputId(); + d->indentLevel_--; + bool emptyKeyword = d->stackEmptyKeyword_.back(); + d->stackEmptyKeyword_.pop_back(); + d->stackHasChild_.pop_back(); + if (!emptyKeyword) + d->result_ += "]"; +} + +// --------------------------------------------------------------------------- + +WKTFormatter &WKTFormatter::simulCurNodeHasId() { + d->stackHasId_.back() = true; + return *this; +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::Private::startNewChild() { + assert(!stackHasChild_.empty()); + if (stackHasChild_.back()) { + result_ += ","; + } + stackHasChild_.back() = true; +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::addQuotedString(const char *str) { + addQuotedString(std::string(str)); +} + +void WKTFormatter::addQuotedString(const std::string &str) { + d->startNewChild(); + d->result_ += "\""; + d->result_ += replaceAll(str, "\"", "\"\""); + d->result_ += "\""; +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::add(const std::string &str) { + d->startNewChild(); + d->result_ += str; +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::add(int number) { + d->startNewChild(); + d->result_ += internal::toString(number); +} + +// --------------------------------------------------------------------------- + +#ifdef __MINGW32__ +static std::string normalizeSerializedString(const std::string &in) { + // mingw will output 1e-0xy instead of 1e-xy. Fix that + auto pos = in.find("e-0"); + if (pos == std::string::npos) { + return in; + } + if (pos + 4 < in.size() && isdigit(in[pos + 3]) && isdigit(in[pos + 4])) { + return in.substr(0, pos + 2) + in.substr(pos + 3); + } + return in; +} +#else +static std::string normalizeSerializedString(const std::string &in) { + return in; +} +#endif + +// --------------------------------------------------------------------------- + +void WKTFormatter::add(double number, int precision) { + d->startNewChild(); + std::string val( + normalizeSerializedString(internal::toString(number, precision))); + d->result_ += val; + if (d->params_.useESRIDialect_ && val.find('.') == std::string::npos) { + d->result_ += ".0"; + } +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::pushOutputUnit(bool outputUnitIn) { + d->outputUnitStack_.push_back(outputUnitIn); +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::popOutputUnit() { d->outputUnitStack_.pop_back(); } + +// --------------------------------------------------------------------------- + +bool WKTFormatter::outputUnit() const { return d->outputUnitStack_.back(); } + +// --------------------------------------------------------------------------- + +void WKTFormatter::pushOutputId(bool outputIdIn) { + d->outputIdStack_.push_back(outputIdIn); +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::popOutputId() { d->outputIdStack_.pop_back(); } + +// --------------------------------------------------------------------------- + +bool WKTFormatter::outputId() const { + return !d->params_.useESRIDialect_ && d->outputIdStack_.back(); +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::pushAxisLinearUnit(const UnitOfMeasureNNPtr &unit) { + d->axisLinearUnitStack_.push_back(unit); +} +// --------------------------------------------------------------------------- + +void WKTFormatter::popAxisLinearUnit() { d->axisLinearUnitStack_.pop_back(); } + +// --------------------------------------------------------------------------- + +const UnitOfMeasureNNPtr &WKTFormatter::axisLinearUnit() const { + return d->axisLinearUnitStack_.back(); +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::pushAxisAngularUnit(const UnitOfMeasureNNPtr &unit) { + d->axisAngularUnitStack_.push_back(unit); +} +// --------------------------------------------------------------------------- + +void WKTFormatter::popAxisAngularUnit() { d->axisAngularUnitStack_.pop_back(); } + +// --------------------------------------------------------------------------- + +const UnitOfMeasureNNPtr &WKTFormatter::axisAngularUnit() const { + return d->axisAngularUnitStack_.back(); +} + +// --------------------------------------------------------------------------- + +bool WKTFormatter::outputAxis() const { return d->params_.outputAxis_; } + +// --------------------------------------------------------------------------- + +bool WKTFormatter::outputAxisOrder() const { + return d->params_.outputAxisOrder_; +} + +// --------------------------------------------------------------------------- + +bool WKTFormatter::primeMeridianOmittedIfGreenwich() const { + return d->params_.primeMeridianOmittedIfGreenwich_; +} + +// --------------------------------------------------------------------------- + +bool WKTFormatter::ellipsoidUnitOmittedIfMetre() const { + return d->params_.ellipsoidUnitOmittedIfMetre_; +} + +// --------------------------------------------------------------------------- + +bool WKTFormatter::primeMeridianOrParameterUnitOmittedIfSameAsAxis() const { + return d->params_.primeMeridianOrParameterUnitOmittedIfSameAsAxis_; +} + +// --------------------------------------------------------------------------- + +bool WKTFormatter::outputCSUnitOnlyOnceIfSame() const { + return d->params_.outputCSUnitOnlyOnceIfSame_; +} + +// --------------------------------------------------------------------------- + +bool WKTFormatter::forceUNITKeyword() const { + return d->params_.forceUNITKeyword_; +} + +// --------------------------------------------------------------------------- + +bool WKTFormatter::primeMeridianInDegree() const { + return d->params_.primeMeridianInDegree_; +} + +// --------------------------------------------------------------------------- + +WKTFormatter::Version WKTFormatter::version() const { + return d->params_.version_; +} + +// --------------------------------------------------------------------------- + +bool WKTFormatter::use2018Keywords() const { + return d->params_.use2018Keywords_; +} + +// --------------------------------------------------------------------------- + +bool WKTFormatter::useESRIDialect() const { return d->params_.useESRIDialect_; } + +// --------------------------------------------------------------------------- + +const DatabaseContextPtr &WKTFormatter::databaseContext() const { + return d->dbContext_; +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::setAbridgedTransformation(bool outputIn) { + d->abridgedTransformation_ = outputIn; +} + +// --------------------------------------------------------------------------- + +bool WKTFormatter::abridgedTransformation() const { + return d->abridgedTransformation_; +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::setUseDerivingConversion(bool useDerivingConversionIn) { + d->useDerivingConversion_ = useDerivingConversionIn; +} + +// --------------------------------------------------------------------------- + +bool WKTFormatter::useDerivingConversion() const { + return d->useDerivingConversion_; +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::setTOWGS84Parameters(const std::vector<double> ¶ms) { + d->toWGS84Parameters_ = params; +} + +// --------------------------------------------------------------------------- + +const std::vector<double> &WKTFormatter::getTOWGS84Parameters() const { + return d->toWGS84Parameters_; +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::setVDatumExtension(const std::string &filename) { + d->vDatumExtension_ = filename; +} + +// --------------------------------------------------------------------------- + +const std::string &WKTFormatter::getVDatumExtension() const { + return d->vDatumExtension_; +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::setHDatumExtension(const std::string &filename) { + d->hDatumExtension_ = filename; +} + +// --------------------------------------------------------------------------- + +const std::string &WKTFormatter::getHDatumExtension() const { + return d->hDatumExtension_; +} + +// --------------------------------------------------------------------------- + +std::string WKTFormatter::morphNameToESRI(const std::string &name) { + std::string ret; + bool insertUnderscore = false; + // Replace any special character by underscore, except at the beginning + // and of the name where those characters are removed. + for (char ch : name) { + if (ch == '+' || (ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'z') || + (ch >= 'A' && ch <= 'Z')) { + if (insertUnderscore && !ret.empty()) { + ret += '_'; + } + ret += ch; + insertUnderscore = false; + } else { + insertUnderscore = true; + } + } + return ret; +} + +#ifdef unused +// --------------------------------------------------------------------------- + +void WKTFormatter::startInversion() { + d->inversionStack_.push_back(!d->inversionStack_.back()); +} + +// --------------------------------------------------------------------------- + +void WKTFormatter::stopInversion() { + assert(!d->inversionStack_.empty()); + d->inversionStack_.pop_back(); +} + +// --------------------------------------------------------------------------- + +bool WKTFormatter::isInverted() const { return d->inversionStack_.back(); } +#endif + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +static WKTNodeNNPtr + null_node(NN_NO_CHECK(internal::make_unique<WKTNode>(std::string()))); + +static inline bool isNull(const WKTNodeNNPtr &node) { + return &node == &null_node; +} + +struct WKTNode::Private { + std::string value_{}; + std::vector<WKTNodeNNPtr> children_{}; + + explicit Private(const std::string &valueIn) : value_(valueIn) {} + + // cppcheck-suppress functionStatic + inline const std::string &value() PROJ_CONST_DEFN { return value_; } + + // cppcheck-suppress functionStatic + inline const std::vector<WKTNodeNNPtr> &children() PROJ_CONST_DEFN { + return children_; + } + + // cppcheck-suppress functionStatic + inline size_t childrenSize() PROJ_CONST_DEFN { return children_.size(); } + + // cppcheck-suppress functionStatic + const WKTNodeNNPtr &lookForChild(const std::string &childName, + int occurrence) const noexcept; + + // cppcheck-suppress functionStatic + const WKTNodeNNPtr &lookForChild(const std::string &name) const noexcept; + + // cppcheck-suppress functionStatic + const WKTNodeNNPtr &lookForChild(const std::string &name, + const std::string &name2) const noexcept; + + // cppcheck-suppress functionStatic + const WKTNodeNNPtr &lookForChild(const std::string &name, + const std::string &name2, + const std::string &name3) const noexcept; + + // cppcheck-suppress functionStatic + const WKTNodeNNPtr &lookForChild(const std::string &name, + const std::string &name2, + const std::string &name3, + const std::string &name4) const noexcept; +}; + +#define GP() getPrivate() + +// --------------------------------------------------------------------------- + +const WKTNodeNNPtr &WKTNode::Private::lookForChild(const std::string &childName, + int occurrence) const + noexcept { + int occCount = 0; + for (const auto &child : children_) { + if (ci_equal(child->GP()->value(), childName)) { + if (occurrence == occCount) { + return child; + } + occCount++; + } + } + return null_node; +} + +const WKTNodeNNPtr & +WKTNode::Private::lookForChild(const std::string &name) const noexcept { + for (const auto &child : children_) { + const auto &v = child->GP()->value(); + if (ci_equal(v, name)) { + return child; + } + } + return null_node; +} + +const WKTNodeNNPtr & +WKTNode::Private::lookForChild(const std::string &name, + const std::string &name2) const noexcept { + for (const auto &child : children_) { + const auto &v = child->GP()->value(); + if (ci_equal(v, name) || ci_equal(v, name2)) { + return child; + } + } + return null_node; +} + +const WKTNodeNNPtr & +WKTNode::Private::lookForChild(const std::string &name, + const std::string &name2, + const std::string &name3) const noexcept { + for (const auto &child : children_) { + const auto &v = child->GP()->value(); + if (ci_equal(v, name) || ci_equal(v, name2) || ci_equal(v, name3)) { + return child; + } + } + return null_node; +} + +const WKTNodeNNPtr &WKTNode::Private::lookForChild( + const std::string &name, const std::string &name2, const std::string &name3, + const std::string &name4) const noexcept { + for (const auto &child : children_) { + const auto &v = child->GP()->value(); + if (ci_equal(v, name) || ci_equal(v, name2) || ci_equal(v, name3) || + ci_equal(v, name4)) { + return child; + } + } + return null_node; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a WKTNode. + * + * @param valueIn the name of the node. + */ +WKTNode::WKTNode(const std::string &valueIn) + : d(internal::make_unique<Private>(valueIn)) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +WKTNode::~WKTNode() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Adds a child to the current node. + * + * @param child child to add. This should not be a parent of this node. + */ +void WKTNode::addChild(WKTNodeNNPtr &&child) { + d->children_.push_back(std::move(child)); +} + +// --------------------------------------------------------------------------- + +/** \brief Return the (occurrence-1)th sub-node of name childName. + * + * @param childName name of the child. + * @param occurrence occurrence index (starting at 0) + * @return the child, or nullptr. + */ +const WKTNodePtr &WKTNode::lookForChild(const std::string &childName, + int occurrence) const noexcept { + int occCount = 0; + for (const auto &child : d->children_) { + if (ci_equal(child->GP()->value(), childName)) { + if (occurrence == occCount) { + return child; + } + occCount++; + } + } + return null_node; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the count of children of given name. + * + * @param childName name of the children to look for. + * @return count + */ +int WKTNode::countChildrenOfName(const std::string &childName) const noexcept { + int occCount = 0; + for (const auto &child : d->children_) { + if (ci_equal(child->GP()->value(), childName)) { + occCount++; + } + } + return occCount; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the value of a node. + */ +const std::string &WKTNode::value() const { return d->value_; } + +// --------------------------------------------------------------------------- + +/** \brief Return the children of a node. + */ +const std::vector<WKTNodeNNPtr> &WKTNode::children() const { + return d->children_; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static size_t skipSpace(const std::string &str, size_t start) { + size_t i = start; + while (i < str.size() && ::isspace(str[i])) { + ++i; + } + return i; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +// As used in examples of OGC 12-063r5 +static const std::string startPrintedQuote("\xE2\x80\x9C"); +static const std::string endPrintedQuote("\xE2\x80\x9D"); +//! @endcond + +WKTNodeNNPtr WKTNode::createFrom(const std::string &wkt, size_t indexStart, + int recLevel, size_t &indexEnd) { + if (recLevel == 16) { + throw ParsingException("too many nesting levels"); + } + std::string value; + size_t i = skipSpace(wkt, indexStart); + if (i == wkt.size()) { + throw ParsingException("whitespace only string"); + } + std::string closingStringMarker; + bool inString = false; + + for (; i < wkt.size() && + (inString || (wkt[i] != '[' && wkt[i] != '(' && wkt[i] != ',' && + wkt[i] != ']' && wkt[i] != ')' && !::isspace(wkt[i]))); + ++i) { + if (wkt[i] == '"') { + if (!inString) { + inString = true; + closingStringMarker = "\""; + } else if (closingStringMarker == "\"") { + if (i + 1 < wkt.size() && wkt[i + 1] == '"') { + i++; + } else { + inString = false; + closingStringMarker.clear(); + } + } + } else if (i + 3 <= wkt.size() && + wkt.substr(i, 3) == startPrintedQuote) { + if (!inString) { + inString = true; + closingStringMarker = endPrintedQuote; + value += "\""; + i += 2; + continue; + } + } else if (i + 3 <= wkt.size() && + closingStringMarker == endPrintedQuote && + wkt.substr(i, 3) == endPrintedQuote) { + inString = false; + closingStringMarker.clear(); + value += "\""; + i += 2; + continue; + } + value += wkt[i]; + } + i = skipSpace(wkt, i); + if (i == wkt.size()) { + if (indexStart == 0) { + throw ParsingException("missing ["); + } else { + throw ParsingException("missing , or ]"); + } + } + + auto node = NN_NO_CHECK(internal::make_unique<WKTNode>(value)); + + if (indexStart > 0) { + if (wkt[i] == ',') { + indexEnd = i + 1; + return node; + } + if (wkt[i] == ']' || wkt[i] == ')') { + indexEnd = i; + return node; + } + } + if (wkt[i] != '[' && wkt[i] != '(') { + throw ParsingException("missing ["); + } + ++i; // skip [ + i = skipSpace(wkt, i); + while (i < wkt.size() && wkt[i] != ']' && wkt[i] != ')') { + size_t indexEndChild; + node->addChild(createFrom(wkt, i, recLevel + 1, indexEndChild)); + assert(indexEndChild > i); + i = indexEndChild; + i = skipSpace(wkt, i); + } + if (i == wkt.size() || (wkt[i] != ']' && wkt[i] != ')')) { + throw ParsingException("missing ]"); + } + indexEnd = i + 1; + return node; +} +// --------------------------------------------------------------------------- + +/** \brief Instanciate a WKTNode hierarchy from a WKT string. + * + * @param wkt the WKT string to parse. + * @param indexStart the start index in the wkt string. + * @throw ParsingException + */ +WKTNodeNNPtr WKTNode::createFrom(const std::string &wkt, size_t indexStart) { + size_t indexEnd; + return createFrom(wkt, indexStart, 0, indexEnd); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static std::string escapeIfQuotedString(const std::string &str) { + if (str.size() > 2 && str[0] == '"' && str.back() == '"') { + std::string res("\""); + res += replaceAll(str.substr(1, str.size() - 2), "\"", "\"\""); + res += "\""; + return res; + } else { + return str; + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return a WKT representation of the tree structure. + */ +std::string WKTNode::toString() const { + std::string str(escapeIfQuotedString(d->value_)); + if (!d->children_.empty()) { + str += "["; + bool first = true; + for (auto &child : d->children_) { + if (!first) { + str += ","; + } + first = false; + str += child->toString(); + } + str += "]"; + } + return str; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct WKTParser::Private { + bool strict_ = true; + std::vector<std::string> warningList_{}; + std::vector<double> toWGS84Parameters_{}; + std::string datumPROJ4Grids_{}; + bool esriStyle_ = false; + DatabaseContextPtr dbContext_{}; + + static constexpr int MAX_PROPERTY_SIZE = 1024; + PropertyMap **properties_{}; + int propertyCount_ = 0; + + Private() { properties_ = new PropertyMap *[MAX_PROPERTY_SIZE]; } + + ~Private() { + for (int i = 0; i < propertyCount_; i++) { + delete properties_[i]; + } + delete[] properties_; + } + Private(const Private &) = delete; + Private &operator=(const Private &) = delete; + + void emitRecoverableAssertion(const std::string &errorMsg); + + BaseObjectNNPtr build(const WKTNodeNNPtr &node); + + IdentifierPtr buildId(const WKTNodeNNPtr &node, bool tolerant = true); + + PropertyMap &buildProperties(const WKTNodeNNPtr &node); + + ObjectDomainPtr buildObjectDomain(const WKTNodeNNPtr &node); + + static std::string stripQuotes(const WKTNodeNNPtr &node); + + static double asDouble(const WKTNodeNNPtr &node); + + UnitOfMeasure + buildUnit(const WKTNodeNNPtr &node, + UnitOfMeasure::Type type = UnitOfMeasure::Type::UNKNOWN); + + UnitOfMeasure buildUnitInSubNode( + const WKTNodeNNPtr &node, + common::UnitOfMeasure::Type type = UnitOfMeasure::Type::UNKNOWN); + + EllipsoidNNPtr buildEllipsoid(const WKTNodeNNPtr &node); + + PrimeMeridianNNPtr + buildPrimeMeridian(const WKTNodeNNPtr &node, + const UnitOfMeasure &defaultAngularUnit); + + optional<std::string> getAnchor(const WKTNodeNNPtr &node); + + static void parseDynamic(const WKTNodeNNPtr &dynamicNode, + double &frameReferenceEpoch, + util::optional<std::string> &modelName); + + GeodeticReferenceFrameNNPtr + buildGeodeticReferenceFrame(const WKTNodeNNPtr &node, + const PrimeMeridianNNPtr &primeMeridian, + const WKTNodeNNPtr &dynamicNode); + + DatumEnsembleNNPtr buildDatumEnsemble(const WKTNodeNNPtr &node, + const PrimeMeridianPtr &primeMeridian, + bool expectEllipsoid); + + MeridianNNPtr buildMeridian(const WKTNodeNNPtr &node); + CoordinateSystemAxisNNPtr buildAxis(const WKTNodeNNPtr &node, + const UnitOfMeasure &unitIn, + bool isGeocentric, + int expectedOrderNum); + + CoordinateSystemNNPtr buildCS(const WKTNodeNNPtr &node, /* maybe null */ + const WKTNodeNNPtr &parentNode, + const UnitOfMeasure &defaultAngularUnit); + + GeodeticCRSNNPtr buildGeodeticCRS(const WKTNodeNNPtr &node); + + CRSNNPtr buildDerivedGeodeticCRS(const WKTNodeNNPtr &node); + + static UnitOfMeasure + guessUnitForParameter(const std::string ¶mName, + const UnitOfMeasure &defaultLinearUnit, + const UnitOfMeasure &defaultAngularUnit); + + void consumeParameters(const WKTNodeNNPtr &node, bool isAbridged, + std::vector<OperationParameterNNPtr> ¶meters, + std::vector<ParameterValueNNPtr> &values, + const UnitOfMeasure &defaultLinearUnit, + const UnitOfMeasure &defaultAngularUnit); + + ConversionNNPtr buildConversion(const WKTNodeNNPtr &node, + const UnitOfMeasure &defaultLinearUnit, + const UnitOfMeasure &defaultAngularUnit); + + static bool hasWebMercPROJ4String(const WKTNodeNNPtr &projCRSNode, + const WKTNodeNNPtr &projectionNode); + + ConversionNNPtr buildProjection(const WKTNodeNNPtr &projCRSNode, + const WKTNodeNNPtr &projectionNode, + const UnitOfMeasure &defaultLinearUnit, + const UnitOfMeasure &defaultAngularUnit); + + ConversionNNPtr + buildProjectionStandard(const WKTNodeNNPtr &projCRSNode, + const WKTNodeNNPtr &projectionNode, + const UnitOfMeasure &defaultLinearUnit, + const UnitOfMeasure &defaultAngularUnit); + + ConversionNNPtr + buildProjectionFromESRI(const WKTNodeNNPtr &projCRSNode, + const WKTNodeNNPtr &projectionNode, + const UnitOfMeasure &defaultLinearUnit, + const UnitOfMeasure &defaultAngularUnit); + + ProjectedCRSNNPtr buildProjectedCRS(const WKTNodeNNPtr &node); + + VerticalReferenceFrameNNPtr + buildVerticalReferenceFrame(const WKTNodeNNPtr &node, + const WKTNodeNNPtr &dynamicNode); + + TemporalDatumNNPtr buildTemporalDatum(const WKTNodeNNPtr &node); + + EngineeringDatumNNPtr buildEngineeringDatum(const WKTNodeNNPtr &node); + + ParametricDatumNNPtr buildParametricDatum(const WKTNodeNNPtr &node); + + CRSNNPtr buildVerticalCRS(const WKTNodeNNPtr &node); + + DerivedVerticalCRSNNPtr buildDerivedVerticalCRS(const WKTNodeNNPtr &node); + + CompoundCRSNNPtr buildCompoundCRS(const WKTNodeNNPtr &node); + + BoundCRSNNPtr buildBoundCRS(const WKTNodeNNPtr &node); + + TemporalCSNNPtr buildTemporalCS(const WKTNodeNNPtr &parentNode); + + TemporalCRSNNPtr buildTemporalCRS(const WKTNodeNNPtr &node); + + DerivedTemporalCRSNNPtr buildDerivedTemporalCRS(const WKTNodeNNPtr &node); + + EngineeringCRSNNPtr buildEngineeringCRS(const WKTNodeNNPtr &node); + + EngineeringCRSNNPtr + buildEngineeringCRSFromLocalCS(const WKTNodeNNPtr &node); + + DerivedEngineeringCRSNNPtr + buildDerivedEngineeringCRS(const WKTNodeNNPtr &node); + + ParametricCSNNPtr buildParametricCS(const WKTNodeNNPtr &parentNode); + + ParametricCRSNNPtr buildParametricCRS(const WKTNodeNNPtr &node); + + DerivedParametricCRSNNPtr + buildDerivedParametricCRS(const WKTNodeNNPtr &node); + + DerivedProjectedCRSNNPtr buildDerivedProjectedCRS(const WKTNodeNNPtr &node); + + CRSPtr buildCRS(const WKTNodeNNPtr &node); + + CoordinateOperationNNPtr buildCoordinateOperation(const WKTNodeNNPtr &node); + + ConcatenatedOperationNNPtr + buildConcatenatedOperation(const WKTNodeNNPtr &node); +}; + +// --------------------------------------------------------------------------- + +WKTParser::WKTParser() : d(internal::make_unique<Private>()) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +WKTParser::~WKTParser() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Set whether parsing should be done in strict mode. + */ +WKTParser &WKTParser::setStrict(bool strict) { + d->strict_ = strict; + return *this; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the list of warnings found during parsing. + * + * \note The list might be non-empty only is setStrict(false) has been called. + */ +std::vector<std::string> WKTParser::warningList() const { + return d->warningList_; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void WKTParser::Private::emitRecoverableAssertion(const std::string &errorMsg) { + if (strict_) { + throw ParsingException(errorMsg); + } else { + warningList_.push_back(errorMsg); + } +} + +// --------------------------------------------------------------------------- + +static double asDouble(const std::string &val) { return c_locale_stod(val); } + +// --------------------------------------------------------------------------- + +PROJ_NO_RETURN static void ThrowNotEnoughChildren(const std::string &nodeName) { + throw ParsingException( + concat("not enough children in ", nodeName, " node")); +} + +// --------------------------------------------------------------------------- + +PROJ_NO_RETURN static void +ThrowNotRequiredNumberOfChildren(const std::string &nodeName) { + throw ParsingException( + concat("not required number of children in ", nodeName, " node")); +} + +// --------------------------------------------------------------------------- + +PROJ_NO_RETURN static void ThrowMissing(const std::string &nodeName) { + throw ParsingException(concat("missing ", nodeName, " node")); +} + +// --------------------------------------------------------------------------- + +PROJ_NO_RETURN static void +ThrowNotExpectedCSType(const std::string &expectedCSType) { + throw ParsingException(concat("CS node is not of type ", expectedCSType)); +} + +// --------------------------------------------------------------------------- + +static ParsingException buildRethrow(const char *funcName, + const std::exception &e) { + std::string res(funcName); + res += ": "; + res += e.what(); + return ParsingException(res); +} + +// --------------------------------------------------------------------------- + +std::string WKTParser::Private::stripQuotes(const WKTNodeNNPtr &node) { + return ::stripQuotes(node->GP()->value()); +} + +// --------------------------------------------------------------------------- + +double WKTParser::Private::asDouble(const WKTNodeNNPtr &node) { + return io::asDouble(node->GP()->value()); +} + +// --------------------------------------------------------------------------- + +IdentifierPtr WKTParser::Private::buildId(const WKTNodeNNPtr &node, + bool tolerant) { + const auto *nodeP = node->GP(); + const auto &nodeChidren = nodeP->children(); + if (nodeChidren.size() >= 2) { + auto codeSpace = stripQuotes(nodeChidren[0]); + auto code = stripQuotes(nodeChidren[1]); + auto &citationNode = nodeP->lookForChild(WKTConstants::CITATION); + auto &uriNode = nodeP->lookForChild(WKTConstants::URI); + PropertyMap propertiesId; + propertiesId.set(Identifier::CODESPACE_KEY, codeSpace); + bool authoritySet = false; + /*if (!isNull(citationNode))*/ { + const auto *citationNodeP = citationNode->GP(); + if (citationNodeP->childrenSize() == 1) { + authoritySet = true; + propertiesId.set(Identifier::AUTHORITY_KEY, + stripQuotes(citationNodeP->children()[0])); + } + } + if (!authoritySet) { + propertiesId.set(Identifier::AUTHORITY_KEY, codeSpace); + } + /*if (!isNull(uriNode))*/ { + const auto *uriNodeP = uriNode->GP(); + if (uriNodeP->childrenSize() == 1) { + propertiesId.set(Identifier::URI_KEY, + stripQuotes(uriNodeP->children()[0])); + } + } + if (nodeChidren.size() >= 3 && + nodeChidren[2]->GP()->childrenSize() == 0) { + auto version = stripQuotes(nodeChidren[2]); + propertiesId.set(Identifier::VERSION_KEY, version); + } + return Identifier::create(code, propertiesId); + } else if (strict_ || !tolerant) { + ThrowNotEnoughChildren(nodeP->value()); + } else { + std::string msg("not enough children in "); + msg += nodeP->value(); + msg += " node"; + warningList_.emplace_back(std::move(msg)); + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +PropertyMap &WKTParser::Private::buildProperties(const WKTNodeNNPtr &node) { + + if (propertyCount_ == MAX_PROPERTY_SIZE) { + throw ParsingException("MAX_PROPERTY_SIZE reached"); + } + properties_[propertyCount_] = new PropertyMap(); + auto &&properties = properties_[propertyCount_]; + propertyCount_++; + + std::string authNameFromAlias; + std::string codeFromAlias; + const auto *nodeP = node->GP(); + const auto &nodeChildren = nodeP->children(); + if (!nodeChildren.empty()) { + const auto &nodeName(nodeP->value()); + auto name(stripQuotes(nodeChildren[0])); + + const char *tableNameForAlias = nullptr; + if (ci_equal(nodeName, WKTConstants::GEOGCS)) { + if (starts_with(name, "GCS_")) { + esriStyle_ = true; + if (name == "GCS_WGS_1984") { + name = "WGS 84"; + } else { + tableNameForAlias = "geodetic_crs"; + } + } + } else if (esriStyle_ && ci_equal(nodeName, WKTConstants::SPHEROID)) { + if (name == "WGS_1984") { + name = "WGS 84"; + authNameFromAlias = Identifier::EPSG; + codeFromAlias = "7030"; + } else { + tableNameForAlias = "ellipsoid"; + } + } + + if (dbContext_ && tableNameForAlias) { + std::string outTableName; + auto authFactory = AuthorityFactory::create(NN_NO_CHECK(dbContext_), + std::string()); + auto officialName = authFactory->getOfficialNameFromAlias( + name, tableNameForAlias, "ESRI", outTableName, + authNameFromAlias, codeFromAlias); + if (!officialName.empty()) { + name = officialName; + + // Clearing authority for geodetic_crs because of + // potential axis order mismatch. + if (strcmp(tableNameForAlias, "geodetic_crs") == 0) { + authNameFromAlias.clear(); + codeFromAlias.clear(); + } + } + } + + properties->set(IdentifiedObject::NAME_KEY, name); + } + + auto identifiers = ArrayOfBaseObject::create(); + for (const auto &subNode : nodeChildren) { + const auto &subNodeName(subNode->GP()->value()); + if (ci_equal(subNodeName, WKTConstants::ID) || + ci_equal(subNodeName, WKTConstants::AUTHORITY)) { + auto id = buildId(subNode); + if (id) { + identifiers->add(NN_NO_CHECK(id)); + } + } + } + if (identifiers->empty() && !authNameFromAlias.empty()) { + identifiers->add(Identifier::create( + codeFromAlias, + PropertyMap() + .set(Identifier::CODESPACE_KEY, authNameFromAlias) + .set(Identifier::AUTHORITY_KEY, authNameFromAlias))); + } + if (!identifiers->empty()) { + properties->set(IdentifiedObject::IDENTIFIERS_KEY, identifiers); + } + + auto &remarkNode = nodeP->lookForChild(WKTConstants::REMARK); + if (!isNull(remarkNode)) { + const auto &remarkChildren = remarkNode->GP()->children(); + if (remarkChildren.size() == 1) { + properties->set(IdentifiedObject::REMARKS_KEY, + stripQuotes(remarkChildren[0])); + } else { + ThrowNotRequiredNumberOfChildren(remarkNode->GP()->value()); + } + } + + ArrayOfBaseObjectNNPtr array = ArrayOfBaseObject::create(); + for (const auto &subNode : nodeP->children()) { + const auto &subNodeName(subNode->GP()->value()); + if (ci_equal(subNodeName, WKTConstants::USAGE)) { + auto objectDomain = buildObjectDomain(subNode); + if (!objectDomain) { + throw ParsingException( + concat("missing children in ", subNodeName, " node")); + } + array->add(NN_NO_CHECK(objectDomain)); + } + } + if (!array->empty()) { + properties->set(ObjectUsage::OBJECT_DOMAIN_KEY, array); + } else { + auto objectDomain = buildObjectDomain(node); + if (objectDomain) { + properties->set(ObjectUsage::OBJECT_DOMAIN_KEY, + NN_NO_CHECK(objectDomain)); + } + } + + return *properties; +} + +// --------------------------------------------------------------------------- + +ObjectDomainPtr +WKTParser::Private::buildObjectDomain(const WKTNodeNNPtr &node) { + + const auto *nodeP = node->GP(); + auto &scopeNode = nodeP->lookForChild(WKTConstants::SCOPE); + auto &areaNode = nodeP->lookForChild(WKTConstants::AREA); + auto &bboxNode = nodeP->lookForChild(WKTConstants::BBOX); + auto &verticalExtentNode = + nodeP->lookForChild(WKTConstants::VERTICALEXTENT); + auto &temporalExtentNode = nodeP->lookForChild(WKTConstants::TIMEEXTENT); + if (!isNull(scopeNode) || !isNull(areaNode) || !isNull(bboxNode) || + !isNull(verticalExtentNode) || !isNull(temporalExtentNode)) { + optional<std::string> scope; + const auto *scopeNodeP = scopeNode->GP(); + const auto &scopeChildren = scopeNodeP->children(); + if (scopeChildren.size() == 1) { + scope = stripQuotes(scopeChildren[0]); + } + ExtentPtr extent; + if (!isNull(areaNode) || !isNull(bboxNode)) { + util::optional<std::string> description; + std::vector<GeographicExtentNNPtr> geogExtent; + std::vector<VerticalExtentNNPtr> verticalExtent; + std::vector<TemporalExtentNNPtr> temporalExtent; + if (!isNull(areaNode)) { + const auto &areaChildren = areaNode->GP()->children(); + if (areaChildren.size() == 1) { + description = stripQuotes(areaChildren[0]); + } else { + ThrowNotRequiredNumberOfChildren(areaNode->GP()->value()); + } + } + if (!isNull(bboxNode)) { + const auto &bboxChildren = bboxNode->GP()->children(); + if (bboxChildren.size() == 4) { + try { + double south = asDouble(bboxChildren[0]); + double west = asDouble(bboxChildren[1]); + double north = asDouble(bboxChildren[2]); + double east = asDouble(bboxChildren[3]); + auto bbox = GeographicBoundingBox::create(west, south, + east, north); + geogExtent.emplace_back(bbox); + } catch (const std::exception &) { + throw ParsingException(concat("not 4 double values in ", + bboxNode->GP()->value(), + " node")); + } + } else { + ThrowNotRequiredNumberOfChildren(bboxNode->GP()->value()); + } + } + + if (!isNull(verticalExtentNode)) { + const auto &verticalExtentChildren = + verticalExtentNode->GP()->children(); + const auto verticalExtentChildrenSize = + verticalExtentChildren.size(); + if (verticalExtentChildrenSize == 2 || + verticalExtentChildrenSize == 3) { + double min; + double max; + try { + min = asDouble(verticalExtentChildren[0]); + max = asDouble(verticalExtentChildren[1]); + } catch (const std::exception &) { + throw ParsingException( + concat("not 2 double values in ", + verticalExtentNode->GP()->value(), " node")); + } + UnitOfMeasure unit = UnitOfMeasure::METRE; + if (verticalExtentChildrenSize == 3) { + unit = buildUnit(verticalExtentChildren[2], + UnitOfMeasure::Type::LINEAR); + } + verticalExtent.emplace_back(VerticalExtent::create( + min, max, util::nn_make_shared<UnitOfMeasure>(unit))); + } else { + ThrowNotRequiredNumberOfChildren( + verticalExtentNode->GP()->value()); + } + } + + if (!isNull(temporalExtentNode)) { + const auto &temporalExtentChildren = + temporalExtentNode->GP()->children(); + if (temporalExtentChildren.size() == 2) { + temporalExtent.emplace_back(TemporalExtent::create( + stripQuotes(temporalExtentChildren[0]), + stripQuotes(temporalExtentChildren[1]))); + } else { + ThrowNotRequiredNumberOfChildren( + temporalExtentNode->GP()->value()); + } + } + extent = Extent::create(description, geogExtent, verticalExtent, + temporalExtent) + .as_nullable(); + } + return ObjectDomain::create(scope, extent).as_nullable(); + } + + return nullptr; +} + +// --------------------------------------------------------------------------- + +UnitOfMeasure WKTParser::Private::buildUnit(const WKTNodeNNPtr &node, + UnitOfMeasure::Type type) { + const auto *nodeP = node->GP(); + const auto &children = nodeP->children(); + if ((type != UnitOfMeasure::Type::TIME && children.size() < 2) || + (type == UnitOfMeasure::Type::TIME && children.size() < 1)) { + ThrowNotEnoughChildren(nodeP->value()); + } + try { + std::string unitName(stripQuotes(children[0])); + PropertyMap properties(buildProperties(node)); + auto &idNode = + nodeP->lookForChild(WKTConstants::ID, WKTConstants::AUTHORITY); + if (!isNull(idNode) && idNode->GP()->childrenSize() < 2) { + emitRecoverableAssertion("not enough children in " + + idNode->GP()->value() + " node"); + } + const bool hasValidIdNode = + !isNull(idNode) && idNode->GP()->childrenSize() >= 2; + + const auto &idNodeChildren(idNode->GP()->children()); + std::string codeSpace(hasValidIdNode ? stripQuotes(idNodeChildren[0]) + : std::string()); + std::string code(hasValidIdNode ? stripQuotes(idNodeChildren[1]) + : std::string()); + + bool queryDb = true; + if (type == UnitOfMeasure::Type::UNKNOWN) { + if (ci_equal(unitName, "METER") || ci_equal(unitName, "METRE")) { + type = UnitOfMeasure::Type::LINEAR; + unitName = "metre"; + if (codeSpace.empty()) { + codeSpace = Identifier::EPSG; + code = "9001"; + queryDb = false; + } + } else if (ci_equal(unitName, "DEGREE") || + ci_equal(unitName, "GRAD")) { + type = UnitOfMeasure::Type::ANGULAR; + } + } + + if (esriStyle_ && dbContext_ && queryDb) { + std::string outTableName; + std::string authNameFromAlias; + std::string codeFromAlias; + auto authFactory = AuthorityFactory::create(NN_NO_CHECK(dbContext_), + std::string()); + auto officialName = authFactory->getOfficialNameFromAlias( + unitName, "unit_of_measure", "ESRI", outTableName, + authNameFromAlias, codeFromAlias); + if (!officialName.empty()) { + unitName = officialName; + codeSpace = authNameFromAlias; + code = codeFromAlias; + } + } + + double convFactor = children.size() >= 2 ? asDouble(children[1]) : 0.0; + constexpr double US_FOOT_CONV_FACTOR = 12.0 / 39.37; + constexpr double REL_ERROR = 1e-10; + // Fix common rounding errors + if (std::fabs(convFactor - UnitOfMeasure::DEGREE.conversionToSI()) < + REL_ERROR * convFactor) { + convFactor = UnitOfMeasure::DEGREE.conversionToSI(); + } else if (std::fabs(convFactor - US_FOOT_CONV_FACTOR) < + REL_ERROR * convFactor) { + convFactor = US_FOOT_CONV_FACTOR; + } + + return UnitOfMeasure(unitName, convFactor, type, codeSpace, code); + } catch (const std::exception &e) { + throw buildRethrow(__FUNCTION__, e); + } +} + +// --------------------------------------------------------------------------- + +// node here is a parent node, not a UNIT/LENGTHUNIT/ANGLEUNIT/TIMEUNIT/... node +UnitOfMeasure WKTParser::Private::buildUnitInSubNode(const WKTNodeNNPtr &node, + UnitOfMeasure::Type type) { + const auto *nodeP = node->GP(); + { + auto &unitNode = nodeP->lookForChild(WKTConstants::LENGTHUNIT); + if (!isNull(unitNode)) { + return buildUnit(unitNode, UnitOfMeasure::Type::LINEAR); + } + } + + { + auto &unitNode = nodeP->lookForChild(WKTConstants::ANGLEUNIT); + if (!isNull(unitNode)) { + return buildUnit(unitNode, UnitOfMeasure::Type::ANGULAR); + } + } + + { + auto &unitNode = nodeP->lookForChild(WKTConstants::SCALEUNIT); + if (!isNull(unitNode)) { + return buildUnit(unitNode, UnitOfMeasure::Type::SCALE); + } + } + + { + auto &unitNode = nodeP->lookForChild(WKTConstants::TIMEUNIT); + if (!isNull(unitNode)) { + return buildUnit(unitNode, UnitOfMeasure::Type::TIME); + } + } + + { + auto &unitNode = nodeP->lookForChild(WKTConstants::PARAMETRICUNIT); + if (!isNull(unitNode)) { + return buildUnit(unitNode, UnitOfMeasure::Type::PARAMETRIC); + } + } + + { + auto &unitNode = nodeP->lookForChild(WKTConstants::UNIT); + if (!isNull(unitNode)) { + return buildUnit(unitNode, type); + } + } + + return UnitOfMeasure::NONE; +} + +// --------------------------------------------------------------------------- + +EllipsoidNNPtr WKTParser::Private::buildEllipsoid(const WKTNodeNNPtr &node) { + const auto *nodeP = node->GP(); + const auto &children = nodeP->children(); + if (children.size() < 3) { + ThrowNotEnoughChildren(nodeP->value()); + } + try { + UnitOfMeasure unit = + buildUnitInSubNode(node, UnitOfMeasure::Type::LINEAR); + if (unit == UnitOfMeasure::NONE) { + unit = UnitOfMeasure::METRE; + } + Length semiMajorAxis(asDouble(children[1]), unit); + Scale invFlattening(asDouble(children[2])); + const auto celestialBody( + Ellipsoid::guessBodyName(dbContext_, semiMajorAxis.getSIValue())); + if (invFlattening.getSIValue() == 0) { + return Ellipsoid::createSphere(buildProperties(node), semiMajorAxis, + celestialBody); + } else { + return Ellipsoid::createFlattenedSphere( + buildProperties(node), semiMajorAxis, invFlattening, + celestialBody); + } + } catch (const std::exception &e) { + throw buildRethrow(__FUNCTION__, e); + } +} + +// --------------------------------------------------------------------------- + +PrimeMeridianNNPtr WKTParser::Private::buildPrimeMeridian( + const WKTNodeNNPtr &node, const UnitOfMeasure &defaultAngularUnit) { + const auto *nodeP = node->GP(); + const auto &children = nodeP->children(); + if (children.size() < 2) { + ThrowNotEnoughChildren(nodeP->value()); + } + auto name = stripQuotes(children[0]); + UnitOfMeasure unit = buildUnitInSubNode(node, UnitOfMeasure::Type::ANGULAR); + if (unit == UnitOfMeasure::NONE) { + unit = defaultAngularUnit; + if (unit == UnitOfMeasure::NONE) { + unit = UnitOfMeasure::DEGREE; + } + } + try { + double angleValue = asDouble(children[1]); + + // Correct for GDAL WKT1 departure + if (name == "Paris" && std::fabs(angleValue - 2.33722917) < 1e-8 && + unit == UnitOfMeasure::GRAD) { + angleValue = 2.5969213; + } + + Angle angle(angleValue, unit); + return PrimeMeridian::create(buildProperties(node), angle); + } catch (const std::exception &e) { + throw buildRethrow(__FUNCTION__, e); + } +} + +// --------------------------------------------------------------------------- + +optional<std::string> WKTParser::Private::getAnchor(const WKTNodeNNPtr &node) { + + auto &anchorNode = node->GP()->lookForChild(WKTConstants::ANCHOR); + if (anchorNode->GP()->childrenSize() == 1) { + return optional<std::string>( + stripQuotes(anchorNode->GP()->children()[0])); + } + return optional<std::string>(); +} + +// --------------------------------------------------------------------------- + +static const PrimeMeridianNNPtr &createReferenceMeridian() { + static const PrimeMeridianNNPtr meridian = PrimeMeridian::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Reference meridian"), + common::Angle(0)); + return meridian; +} + +// --------------------------------------------------------------------------- + +static const PrimeMeridianNNPtr & +fixupPrimeMeridan(const EllipsoidNNPtr &ellipsoid, + const PrimeMeridianNNPtr &pm) { + return (ellipsoid->celestialBody() != Ellipsoid::EARTH && + pm.get() == PrimeMeridian::GREENWICH.get()) + ? createReferenceMeridian() + : pm; +} + +// --------------------------------------------------------------------------- + +GeodeticReferenceFrameNNPtr WKTParser::Private::buildGeodeticReferenceFrame( + const WKTNodeNNPtr &node, const PrimeMeridianNNPtr &primeMeridian, + const WKTNodeNNPtr &dynamicNode) { + const auto *nodeP = node->GP(); + auto &ellipsoidNode = + nodeP->lookForChild(WKTConstants::ELLIPSOID, WKTConstants::SPHEROID); + if (isNull(ellipsoidNode)) { + ThrowMissing(WKTConstants::ELLIPSOID); + } + auto &properties = buildProperties(node); + + // do that before buildEllipsoid() so that esriStyle_ can be set + auto name = stripQuotes(nodeP->children()[0]); + if (name == "WGS_1984") { + properties.set(IdentifiedObject::NAME_KEY, + GeodeticReferenceFrame::EPSG_6326->nameStr()); + } else if (starts_with(name, "D_")) { + esriStyle_ = true; + const char *tableNameForAlias = nullptr; + std::string authNameFromAlias; + std::string codeFromAlias; + if (name == "D_WGS_1984") { + name = "World Geodetic System 1984"; + authNameFromAlias = Identifier::EPSG; + codeFromAlias = "6326"; + } else { + tableNameForAlias = "geodetic_datum"; + } + + if (dbContext_ && tableNameForAlias) { + std::string outTableName; + auto authFactory = AuthorityFactory::create(NN_NO_CHECK(dbContext_), + std::string()); + auto officialName = authFactory->getOfficialNameFromAlias( + name, tableNameForAlias, "ESRI", outTableName, + authNameFromAlias, codeFromAlias); + if (!officialName.empty()) { + if (primeMeridian->nameStr() != + PrimeMeridian::GREENWICH->nameStr()) { + auto nameWithPM = + officialName + " (" + primeMeridian->nameStr() + ")"; + if (dbContext_->isKnownName(nameWithPM, "geodetic_datum")) { + officialName = nameWithPM; + } + } + name = officialName; + } + } + + properties.set(IdentifiedObject::NAME_KEY, name); + if (!authNameFromAlias.empty()) { + auto identifiers = ArrayOfBaseObject::create(); + identifiers->add(Identifier::create( + codeFromAlias, + PropertyMap() + .set(Identifier::CODESPACE_KEY, authNameFromAlias) + .set(Identifier::AUTHORITY_KEY, authNameFromAlias))); + properties.set(IdentifiedObject::IDENTIFIERS_KEY, identifiers); + } + } + + auto ellipsoid = buildEllipsoid(ellipsoidNode); + const auto &primeMeridianModified = + fixupPrimeMeridan(ellipsoid, primeMeridian); + + auto &TOWGS84Node = nodeP->lookForChild(WKTConstants::TOWGS84); + if (!isNull(TOWGS84Node)) { + const auto &TOWGS84Children = TOWGS84Node->GP()->children(); + const size_t TOWGS84Size = TOWGS84Children.size(); + if (TOWGS84Size == 3 || TOWGS84Size == 7) { + try { + for (const auto &child : TOWGS84Children) { + toWGS84Parameters_.push_back(asDouble(child)); + } + for (size_t i = TOWGS84Size; i < 7; ++i) { + toWGS84Parameters_.push_back(0.0); + } + } catch (const std::exception &) { + throw ParsingException("Invalid TOWGS84 node"); + } + } else { + throw ParsingException("Invalid TOWGS84 node"); + } + } + auto &extensionNode = nodeP->lookForChild(WKTConstants::EXTENSION); + const auto &extensionChildren = extensionNode->GP()->children(); + if (extensionChildren.size() == 2) { + if (ci_equal(stripQuotes(extensionChildren[0]), "PROJ4_GRIDS")) { + datumPROJ4Grids_ = stripQuotes(extensionChildren[1]); + } + } + + if (!isNull(dynamicNode)) { + double frameReferenceEpoch = 0.0; + util::optional<std::string> modelName; + parseDynamic(dynamicNode, frameReferenceEpoch, modelName); + return DynamicGeodeticReferenceFrame::create( + properties, ellipsoid, getAnchor(node), primeMeridianModified, + common::Measure(frameReferenceEpoch, common::UnitOfMeasure::YEAR), + modelName); + } + + return GeodeticReferenceFrame::create( + properties, ellipsoid, getAnchor(node), primeMeridianModified); +} + +// --------------------------------------------------------------------------- + +DatumEnsembleNNPtr +WKTParser::Private::buildDatumEnsemble(const WKTNodeNNPtr &node, + const PrimeMeridianPtr &primeMeridian, + bool expectEllipsoid) { + const auto *nodeP = node->GP(); + auto &ellipsoidNode = + nodeP->lookForChild(WKTConstants::ELLIPSOID, WKTConstants::SPHEROID); + if (expectEllipsoid && isNull(ellipsoidNode)) { + ThrowMissing(WKTConstants::ELLIPSOID); + } + + std::vector<DatumNNPtr> datums; + for (const auto &subNode : nodeP->children()) { + if (ci_equal(subNode->GP()->value(), WKTConstants::MEMBER)) { + if (subNode->GP()->childrenSize() == 0) { + throw ParsingException("Invalid MEMBER node"); + } + if (expectEllipsoid) { + datums.emplace_back(GeodeticReferenceFrame::create( + buildProperties(subNode), buildEllipsoid(ellipsoidNode), + optional<std::string>(), + primeMeridian ? NN_NO_CHECK(primeMeridian) + : PrimeMeridian::GREENWICH)); + } else { + datums.emplace_back( + VerticalReferenceFrame::create(buildProperties(subNode))); + } + } + } + + auto &accuracyNode = nodeP->lookForChild(WKTConstants::ENSEMBLEACCURACY); + auto &accuracyNodeChildren = accuracyNode->GP()->children(); + if (accuracyNodeChildren.empty()) { + ThrowMissing(WKTConstants::ENSEMBLEACCURACY); + } + auto accuracy = + PositionalAccuracy::create(accuracyNodeChildren[0]->GP()->value()); + + try { + return DatumEnsemble::create(buildProperties(node), datums, accuracy); + } catch (const util::Exception &e) { + throw buildRethrow(__FUNCTION__, e); + } +} + +// --------------------------------------------------------------------------- + +MeridianNNPtr WKTParser::Private::buildMeridian(const WKTNodeNNPtr &node) { + const auto *nodeP = node->GP(); + const auto &children = nodeP->children(); + if (children.size() < 2) { + ThrowNotEnoughChildren(nodeP->value()); + } + UnitOfMeasure unit = buildUnitInSubNode(node, UnitOfMeasure::Type::ANGULAR); + try { + double angleValue = asDouble(children[0]); + Angle angle(angleValue, unit); + return Meridian::create(angle); + } catch (const std::exception &e) { + throw buildRethrow(__FUNCTION__, e); + } +} + +// --------------------------------------------------------------------------- + +CoordinateSystemAxisNNPtr +WKTParser::Private::buildAxis(const WKTNodeNNPtr &node, + const UnitOfMeasure &unitIn, bool isGeocentric, + int expectedOrderNum) { + const auto *nodeP = node->GP(); + const auto &children = nodeP->children(); + if (children.size() < 2) { + ThrowNotEnoughChildren(nodeP->value()); + } + + auto &orderNode = nodeP->lookForChild(WKTConstants::ORDER); + if (!isNull(orderNode)) { + const auto &orderNodeChildren = orderNode->GP()->children(); + if (orderNodeChildren.size() != 1) { + ThrowNotEnoughChildren(WKTConstants::ORDER); + } + const auto &order = orderNodeChildren[0]->GP()->value(); + int orderNum; + try { + orderNum = std::stoi(order); + } catch (const std::exception &) { + throw ParsingException( + concat("buildAxis: invalid ORDER value: ", order)); + } + if (orderNum != expectedOrderNum) { + throw ParsingException( + concat("buildAxis: did not get expected ORDER value: ", order)); + } + } + + // The axis designation in WK2 can be: "name", "(abbrev)" or "name + // (abbrev)" + std::string axisDesignation(stripQuotes(children[0])); + size_t sepPos = axisDesignation.find(" ("); + std::string axisName; + std::string abbreviation; + if (sepPos != std::string::npos && axisDesignation.back() == ')') { + axisName = CoordinateSystemAxis::normalizeAxisName( + axisDesignation.substr(0, sepPos)); + abbreviation = axisDesignation.substr(sepPos + 2); + abbreviation.resize(abbreviation.size() - 1); + } else if (!axisDesignation.empty() && axisDesignation[0] == '(' && + axisDesignation.back() == ')') { + abbreviation = axisDesignation.substr(1, axisDesignation.size() - 2); + if (abbreviation == AxisAbbreviation::E) { + axisName = AxisName::Easting; + } else if (abbreviation == AxisAbbreviation::N) { + axisName = AxisName::Northing; + } else if (abbreviation == AxisAbbreviation::lat) { + axisName = AxisName::Latitude; + } else if (abbreviation == AxisAbbreviation::lon) { + axisName = AxisName::Longitude; + } + } else { + axisName = CoordinateSystemAxis::normalizeAxisName(axisDesignation); + if (axisName == AxisName::Latitude) { + abbreviation = AxisAbbreviation::lat; + } else if (axisName == AxisName::Longitude) { + abbreviation = AxisAbbreviation::lon; + } else if (axisName == AxisName::Ellipsoidal_height) { + abbreviation = AxisAbbreviation::h; + } + } + const std::string &dirString = children[1]->GP()->value(); + const AxisDirection *direction = AxisDirection::valueOf(dirString); + + // WKT2, geocentric CS: axis names are omitted + if (axisName.empty()) { + if (direction == &AxisDirection::GEOCENTRIC_X && + abbreviation == AxisAbbreviation::X) { + axisName = AxisName::Geocentric_X; + } else if (direction == &AxisDirection::GEOCENTRIC_Y && + abbreviation == AxisAbbreviation::Y) { + axisName = AxisName::Geocentric_Y; + } else if (direction == &AxisDirection::GEOCENTRIC_Z && + abbreviation == AxisAbbreviation::Z) { + axisName = AxisName::Geocentric_Z; + } + } + + // WKT1 + if (!direction && isGeocentric && axisName == AxisName::Geocentric_X) { + abbreviation = AxisAbbreviation::X; + direction = &AxisDirection::GEOCENTRIC_X; + } else if (!direction && isGeocentric && + axisName == AxisName::Geocentric_Y) { + abbreviation = AxisAbbreviation::Y; + direction = &AxisDirection::GEOCENTRIC_Y; + } else if (isGeocentric && axisName == AxisName::Geocentric_Z && + dirString == AxisDirectionWKT1::NORTH.toString()) { + abbreviation = AxisAbbreviation::Z; + direction = &AxisDirection::GEOCENTRIC_Z; + } else if (dirString == AxisDirectionWKT1::OTHER.toString()) { + direction = &AxisDirection::UNSPECIFIED; + } else if (!direction && AxisDirectionWKT1::valueOf(dirString) != nullptr) { + direction = AxisDirection::valueOf(tolower(dirString)); + } + + if (!direction) { + throw ParsingException( + concat("unhandled axis direction: ", children[1]->GP()->value())); + } + UnitOfMeasure unit(buildUnitInSubNode(node)); + if (unit == UnitOfMeasure::NONE) { + // If no unit in the AXIS node, use the one potentially coming from + // the CS. + unit = unitIn; + } + + auto &meridianNode = nodeP->lookForChild(WKTConstants::MERIDIAN); + + return CoordinateSystemAxis::create( + buildProperties(node).set(IdentifiedObject::NAME_KEY, axisName), + abbreviation, *direction, unit, + !isNull(meridianNode) ? buildMeridian(meridianNode).as_nullable() + : nullptr); +} + +// --------------------------------------------------------------------------- + +static const PropertyMap emptyPropertyMap{}; + +PROJ_NO_RETURN static void ThrowParsingException(const std::string &msg) { + throw ParsingException(msg); +} + +PROJ_NO_RETURN static void ThrowParsingExceptionMissingUNIT() { + throw ParsingException("buildCS: missing UNIT"); +} + +static ParsingException +buildParsingExceptionInvalidAxisCount(const std::string &csType) { + return ParsingException( + concat("buildCS: invalid CS axis count for ", csType)); +} + +CoordinateSystemNNPtr +WKTParser::Private::buildCS(const WKTNodeNNPtr &node, /* maybe null */ + const WKTNodeNNPtr &parentNode, + const UnitOfMeasure &defaultAngularUnit) { + bool isGeocentric = false; + std::string csType; + const int numberOfAxis = + parentNode->countChildrenOfName(WKTConstants::AXIS); + int axisCount = numberOfAxis; + if (!isNull(node)) { + const auto *nodeP = node->GP(); + const auto &children = nodeP->children(); + if (children.size() < 2) { + ThrowNotEnoughChildren(nodeP->value()); + } + csType = children[0]->GP()->value(); + try { + axisCount = std::stoi(children[1]->GP()->value()); + } catch (const std::exception &) { + ThrowParsingException(concat("buildCS: invalid CS axis count: ", + children[1]->GP()->value())); + } + } else { + const char *csTypeCStr = ""; + const auto &parentNodeName = parentNode->GP()->value(); + if (ci_equal(parentNodeName, WKTConstants::GEOCCS)) { + csTypeCStr = "Cartesian"; + isGeocentric = true; + if (axisCount == 0) { + auto unit = + buildUnitInSubNode(parentNode, UnitOfMeasure::Type::LINEAR); + if (unit == UnitOfMeasure::NONE) { + ThrowParsingExceptionMissingUNIT(); + } + return CartesianCS::createGeocentric(unit); + } + } else if (ci_equal(parentNodeName, WKTConstants::GEOGCS)) { + csTypeCStr = "Ellipsoidal"; + if (axisCount == 0) { + // Missing axis with GEOGCS ? Presumably Long/Lat order + // implied + auto unit = buildUnitInSubNode(parentNode, + UnitOfMeasure::Type::ANGULAR); + if (unit == UnitOfMeasure::NONE) { + ThrowParsingExceptionMissingUNIT(); + } + // WKT1 --> long/lat + return EllipsoidalCS::createLongitudeLatitude(unit); + } + } else if (ci_equal(parentNodeName, WKTConstants::BASEGEODCRS) || + ci_equal(parentNodeName, WKTConstants::BASEGEOGCRS)) { + csTypeCStr = "Ellipsoidal"; + if (axisCount == 0) { + auto unit = buildUnitInSubNode(parentNode, + UnitOfMeasure::Type::ANGULAR); + if (unit == UnitOfMeasure::NONE) { + unit = defaultAngularUnit; + } + // WKT2 --> presumably lat/long + return EllipsoidalCS::createLatitudeLongitude(unit); + } + } else if (ci_equal(parentNodeName, WKTConstants::PROJCS) || + ci_equal(parentNodeName, WKTConstants::BASEPROJCRS) || + ci_equal(parentNodeName, WKTConstants::BASEENGCRS)) { + csTypeCStr = "Cartesian"; + if (axisCount == 0) { + auto unit = + buildUnitInSubNode(parentNode, UnitOfMeasure::Type::LINEAR); + if (unit == UnitOfMeasure::NONE) { + if (ci_equal(parentNodeName, WKTConstants::PROJCS)) { + ThrowParsingExceptionMissingUNIT(); + } else { + unit = UnitOfMeasure::METRE; + } + } + return CartesianCS::createEastingNorthing(unit); + } + } else if (ci_equal(parentNodeName, WKTConstants::VERT_CS) || + ci_equal(parentNodeName, WKTConstants::BASEVERTCRS)) { + csTypeCStr = "vertical"; + if (axisCount == 0) { + auto unit = + buildUnitInSubNode(parentNode, UnitOfMeasure::Type::LINEAR); + if (unit == UnitOfMeasure::NONE) { + if (ci_equal(parentNodeName, WKTConstants::VERT_CS)) { + ThrowParsingExceptionMissingUNIT(); + } else { + unit = UnitOfMeasure::METRE; + } + } + return VerticalCS::createGravityRelatedHeight(unit); + } + } else if (ci_equal(parentNodeName, WKTConstants::LOCAL_CS)) { + if (axisCount == 0) { + auto unit = + buildUnitInSubNode(parentNode, UnitOfMeasure::Type::LINEAR); + if (unit == UnitOfMeasure::NONE) { + unit = UnitOfMeasure::METRE; + } + return CartesianCS::createEastingNorthing(unit); + } else if (axisCount == 1) { + csTypeCStr = "vertical"; + } else if (axisCount == 2) { + csTypeCStr = "Cartesian"; + } else { + throw ParsingException( + "buildCS: unexpected AXIS count for LOCAL_CS"); + } + } else if (ci_equal(parentNodeName, WKTConstants::BASEPARAMCRS)) { + csTypeCStr = "parametric"; + if (axisCount == 0) { + auto unit = + buildUnitInSubNode(parentNode, UnitOfMeasure::Type::LINEAR); + if (unit == UnitOfMeasure::NONE) { + unit = UnitOfMeasure("unknown", 1, + UnitOfMeasure::Type::PARAMETRIC); + } + return ParametricCS::create( + emptyPropertyMap, + CoordinateSystemAxis::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, + "unknown parametric"), + std::string(), AxisDirection::UNSPECIFIED, unit)); + } + } else if (ci_equal(parentNodeName, WKTConstants::BASETIMECRS)) { + csTypeCStr = "temporal"; + if (axisCount == 0) { + auto unit = + buildUnitInSubNode(parentNode, UnitOfMeasure::Type::TIME); + if (unit == UnitOfMeasure::NONE) { + unit = + UnitOfMeasure("unknown", 1, UnitOfMeasure::Type::TIME); + } + return DateTimeTemporalCS::create( + emptyPropertyMap, + CoordinateSystemAxis::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, + "unknown temporal"), + std::string(), AxisDirection::FUTURE, unit)); + } + } else { + // Shouldn't happen normally + throw ParsingException( + concat("buildCS: unexpected parent node: ", parentNodeName)); + } + csType = csTypeCStr; + } + + if (axisCount != 1 && axisCount != 2 && axisCount != 3) { + throw buildParsingExceptionInvalidAxisCount(csType); + } + if (numberOfAxis != axisCount) { + throw ParsingException("buildCS: declared number of axis by CS node " + "and number of AXIS are inconsistent"); + } + + UnitOfMeasure unit = buildUnitInSubNode( + parentNode, + ci_equal(csType, "ellipsoidal") + ? UnitOfMeasure::Type::ANGULAR + : ci_equal(csType, "ordinal") + ? UnitOfMeasure::Type::NONE + : ci_equal(csType, "parametric") + ? UnitOfMeasure::Type::PARAMETRIC + : ci_equal(csType, "Cartesian") || + ci_equal(csType, "vertical") + ? UnitOfMeasure::Type::LINEAR + : (ci_equal(csType, "temporal") || + ci_equal(csType, "TemporalDateTime") || + ci_equal(csType, "TemporalCount") || + ci_equal(csType, "TemporalMeasure")) + ? UnitOfMeasure::Type::TIME + : UnitOfMeasure::Type::UNKNOWN); + + std::vector<CoordinateSystemAxisNNPtr> axisList; + for (int i = 0; i < axisCount; i++) { + axisList.emplace_back( + buildAxis(parentNode->GP()->lookForChild(WKTConstants::AXIS, i), + unit, isGeocentric, i + 1)); + }; + + const PropertyMap &csMap = emptyPropertyMap; + if (ci_equal(csType, "ellipsoidal")) { + if (axisCount == 2) { + return EllipsoidalCS::create(csMap, axisList[0], axisList[1]); + } else if (axisCount == 3) { + return EllipsoidalCS::create(csMap, axisList[0], axisList[1], + axisList[2]); + } + } else if (ci_equal(csType, "Cartesian")) { + if (axisCount == 2) { + return CartesianCS::create(csMap, axisList[0], axisList[1]); + } else if (axisCount == 3) { + return CartesianCS::create(csMap, axisList[0], axisList[1], + axisList[2]); + } + } else if (ci_equal(csType, "vertical")) { + if (axisCount == 1) { + return VerticalCS::create(csMap, axisList[0]); + } + } else if (ci_equal(csType, "spherical")) { + if (axisCount == 3) { + return SphericalCS::create(csMap, axisList[0], axisList[1], + axisList[2]); + } + } else if (ci_equal(csType, "ordinal")) { // WKT2-2018 + return OrdinalCS::create(csMap, axisList); + } else if (ci_equal(csType, "parametric")) { + if (axisCount == 1) { + return ParametricCS::create(csMap, axisList[0]); + } + } else if (ci_equal(csType, "temporal")) { // WKT2-2015 + if (axisCount == 1) { + return DateTimeTemporalCS::create( + csMap, + axisList[0]); // FIXME: there are 3 possible subtypes of + // TemporalCS + } + } else if (ci_equal(csType, "TemporalDateTime")) { // WKT2-2018 + if (axisCount == 1) { + return DateTimeTemporalCS::create(csMap, axisList[0]); + } + } else if (ci_equal(csType, "TemporalCount")) { // WKT2-2018 + if (axisCount == 1) { + return TemporalCountCS::create(csMap, axisList[0]); + } + } else if (ci_equal(csType, "TemporalMeasure")) { // WKT2-2018 + if (axisCount == 1) { + return TemporalMeasureCS::create(csMap, axisList[0]); + } + } else { + throw ParsingException(concat("unhandled CS type: ", csType)); + } + throw buildParsingExceptionInvalidAxisCount(csType); +} + +// --------------------------------------------------------------------------- + +GeodeticCRSNNPtr +WKTParser::Private::buildGeodeticCRS(const WKTNodeNNPtr &node) { + const auto *nodeP = node->GP(); + auto &datumNode = nodeP->lookForChild( + WKTConstants::DATUM, WKTConstants::GEODETICDATUM, WKTConstants::TRF); + auto &ensembleNode = nodeP->lookForChild(WKTConstants::ENSEMBLE); + if (isNull(datumNode) && isNull(ensembleNode)) { + throw ParsingException("Missing DATUM or ENSEMBLE node"); + } + + auto &dynamicNode = nodeP->lookForChild(WKTConstants::DYNAMIC); + + auto &csNode = nodeP->lookForChild(WKTConstants::CS); + const auto &nodeName = nodeP->value(); + if (isNull(csNode) && !ci_equal(nodeName, WKTConstants::GEOGCS) && + !ci_equal(nodeName, WKTConstants::GEOCCS) && + !ci_equal(nodeName, WKTConstants::BASEGEODCRS) && + !ci_equal(nodeName, WKTConstants::BASEGEOGCRS)) { + ThrowMissing(WKTConstants::CS); + } + + auto &primeMeridianNode = + nodeP->lookForChild(WKTConstants::PRIMEM, WKTConstants::PRIMEMERIDIAN); + if (isNull(primeMeridianNode)) { + // PRIMEM is required in WKT1 + if (ci_equal(nodeName, WKTConstants::GEOGCS) || + ci_equal(nodeName, WKTConstants::GEOCCS)) { + emitRecoverableAssertion(nodeName + " should have a PRIMEM node"); + } + } + + auto angularUnit = + buildUnitInSubNode(node, ci_equal(nodeName, WKTConstants::GEOGCS) + ? UnitOfMeasure::Type::ANGULAR + : UnitOfMeasure::Type::UNKNOWN); + if (angularUnit.type() != UnitOfMeasure::Type::ANGULAR) { + angularUnit = UnitOfMeasure::NONE; + } + + auto primeMeridian = + !isNull(primeMeridianNode) + ? buildPrimeMeridian(primeMeridianNode, angularUnit) + : PrimeMeridian::GREENWICH; + if (angularUnit == UnitOfMeasure::NONE) { + angularUnit = primeMeridian->longitude().unit(); + } + + auto datum = + !isNull(datumNode) + ? buildGeodeticReferenceFrame(datumNode, primeMeridian, dynamicNode) + .as_nullable() + : nullptr; + auto datumEnsemble = + !isNull(ensembleNode) + ? buildDatumEnsemble(ensembleNode, primeMeridian, true) + .as_nullable() + : nullptr; + auto cs = buildCS(csNode, node, angularUnit); + auto ellipsoidalCS = nn_dynamic_pointer_cast<EllipsoidalCS>(cs); + if (ellipsoidalCS) { + assert(!ci_equal(nodeName, WKTConstants::GEOCCS)); + try { + return GeographicCRS::create(buildProperties(node), datum, + datumEnsemble, + NN_NO_CHECK(ellipsoidalCS)); + } catch (const util::Exception &e) { + throw ParsingException(std::string("buildGeodeticCRS: ") + + e.what()); + } + } else if (ci_equal(nodeName, WKTConstants::GEOGCRS) || + ci_equal(nodeName, WKTConstants::GEOGRAPHICCRS) || + ci_equal(nodeName, WKTConstants::BASEGEOGCRS)) { + // This is a WKT2-2018 GeographicCRS. An ellipsoidal CS is expected + throw ParsingException(concat("ellipsoidal CS expected, but found ", + cs->getWKT2Type(true))); + } + + auto cartesianCS = nn_dynamic_pointer_cast<CartesianCS>(cs); + if (cartesianCS) { + if (cartesianCS->axisList().size() != 3) { + throw ParsingException( + "Cartesian CS for a GeodeticCRS should have 3 axis"); + } + try { + return GeodeticCRS::create(buildProperties(node), datum, + datumEnsemble, NN_NO_CHECK(cartesianCS)); + } catch (const util::Exception &e) { + throw ParsingException(std::string("buildGeodeticCRS: ") + + e.what()); + } + } + + auto sphericalCS = nn_dynamic_pointer_cast<SphericalCS>(cs); + if (sphericalCS) { + try { + return GeodeticCRS::create(buildProperties(node), datum, + datumEnsemble, NN_NO_CHECK(sphericalCS)); + } catch (const util::Exception &e) { + throw ParsingException(std::string("buildGeodeticCRS: ") + + e.what()); + } + } + + throw ParsingException( + concat("unhandled CS type: ", cs->getWKT2Type(true))); +} + +// --------------------------------------------------------------------------- + +CRSNNPtr WKTParser::Private::buildDerivedGeodeticCRS(const WKTNodeNNPtr &node) { + const auto *nodeP = node->GP(); + auto &baseGeodCRSNode = nodeP->lookForChild(WKTConstants::BASEGEODCRS, + WKTConstants::BASEGEOGCRS); + // given the constraints enforced on calling code path + assert(!isNull(baseGeodCRSNode)); + + auto baseGeodCRS = buildGeodeticCRS(baseGeodCRSNode); + + auto &derivingConversionNode = + nodeP->lookForChild(WKTConstants::DERIVINGCONVERSION); + if (isNull(derivingConversionNode)) { + ThrowMissing(WKTConstants::DERIVINGCONVERSION); + } + auto derivingConversion = buildConversion( + derivingConversionNode, UnitOfMeasure::NONE, UnitOfMeasure::NONE); + + auto &csNode = nodeP->lookForChild(WKTConstants::CS); + if (isNull(csNode)) { + ThrowMissing(WKTConstants::CS); + } + auto cs = buildCS(csNode, node, UnitOfMeasure::NONE); + + auto ellipsoidalCS = nn_dynamic_pointer_cast<EllipsoidalCS>(cs); + if (ellipsoidalCS) { + return DerivedGeographicCRS::create(buildProperties(node), baseGeodCRS, + derivingConversion, + NN_NO_CHECK(ellipsoidalCS)); + } else if (ci_equal(nodeP->value(), WKTConstants::GEOGCRS)) { + // This is a WKT2-2018 GeographicCRS. An ellipsoidal CS is expected + throw ParsingException(concat("ellipsoidal CS expected, but found ", + cs->getWKT2Type(true))); + } + + auto cartesianCS = nn_dynamic_pointer_cast<CartesianCS>(cs); + if (cartesianCS) { + if (cartesianCS->axisList().size() != 3) { + throw ParsingException( + "Cartesian CS for a GeodeticCRS should have 3 axis"); + } + return DerivedGeodeticCRS::create(buildProperties(node), baseGeodCRS, + derivingConversion, + NN_NO_CHECK(cartesianCS)); + } + + auto sphericalCS = nn_dynamic_pointer_cast<SphericalCS>(cs); + if (sphericalCS) { + return DerivedGeodeticCRS::create(buildProperties(node), baseGeodCRS, + derivingConversion, + NN_NO_CHECK(sphericalCS)); + } + + throw ParsingException( + concat("unhandled CS type: ", cs->getWKT2Type(true))); +} + +// --------------------------------------------------------------------------- + +UnitOfMeasure WKTParser::Private::guessUnitForParameter( + const std::string ¶mName, const UnitOfMeasure &defaultLinearUnit, + const UnitOfMeasure &defaultAngularUnit) { + UnitOfMeasure unit; + // scale must be first because of 'Scale factor on pseudo standard parallel' + if (ci_find(paramName, "scale") != std::string::npos) { + unit = UnitOfMeasure::SCALE_UNITY; + } else if (ci_find(paramName, "latitude") != std::string::npos || + ci_find(paramName, "longitude") != std::string::npos || + ci_find(paramName, "meridian") != std::string::npos || + ci_find(paramName, "parallel") != std::string::npos || + ci_find(paramName, "azimuth") != std::string::npos || + ci_find(paramName, "angle") != std::string::npos) { + unit = defaultAngularUnit; + } else if (ci_find(paramName, "easting") != std::string::npos || + ci_find(paramName, "northing") != std::string::npos || + ci_find(paramName, "height") != std::string::npos) { + unit = defaultLinearUnit; + } + return unit; +} + +// --------------------------------------------------------------------------- + +void WKTParser::Private::consumeParameters( + const WKTNodeNNPtr &node, bool isAbridged, + std::vector<OperationParameterNNPtr> ¶meters, + std::vector<ParameterValueNNPtr> &values, + const UnitOfMeasure &defaultLinearUnit, + const UnitOfMeasure &defaultAngularUnit) { + for (const auto &childNode : node->GP()->children()) { + const auto &childNodeChildren = childNode->GP()->children(); + if (ci_equal(childNode->GP()->value(), WKTConstants::PARAMETER)) { + if (childNodeChildren.size() < 2) { + ThrowNotEnoughChildren(childNode->GP()->value()); + } + parameters.push_back( + OperationParameter::create(buildProperties(childNode))); + const auto ¶mValue = childNodeChildren[1]->GP()->value(); + if (!paramValue.empty() && paramValue[0] == '"') { + values.push_back( + ParameterValue::create(stripQuotes(childNodeChildren[1]))); + } else { + try { + double val = asDouble(childNodeChildren[1]); + auto unit = buildUnitInSubNode(childNode); + if (unit == UnitOfMeasure::NONE) { + const auto ¶mName = + childNodeChildren[0]->GP()->value(); + unit = guessUnitForParameter( + paramName, defaultLinearUnit, defaultAngularUnit); + } + + if (isAbridged) { + const auto ¶mName = parameters.back()->nameStr(); + int paramEPSGCode = 0; + const auto ¶mIds = parameters.back()->identifiers(); + if (paramIds.size() == 1 && + ci_equal(*(paramIds[0]->codeSpace()), + Identifier::EPSG)) { + paramEPSGCode = ::atoi(paramIds[0]->code().c_str()); + } + const common::UnitOfMeasure *pUnit = nullptr; + if (OperationParameterValue::convertFromAbridged( + paramName, val, pUnit, paramEPSGCode)) { + unit = *pUnit; + parameters.back() = OperationParameter::create( + buildProperties(childNode) + .set(Identifier::CODESPACE_KEY, + Identifier::EPSG) + .set(Identifier::CODE_KEY, paramEPSGCode)); + } + } + + values.push_back( + ParameterValue::create(Measure(val, unit))); + } catch (const std::exception &) { + throw ParsingException(concat( + "unhandled parameter value type : ", paramValue)); + } + } + } else if (ci_equal(childNode->GP()->value(), + WKTConstants::PARAMETERFILE)) { + if (childNodeChildren.size() < 2) { + ThrowNotEnoughChildren(childNode->GP()->value()); + } + parameters.push_back( + OperationParameter::create(buildProperties(childNode))); + values.push_back(ParameterValue::createFilename( + stripQuotes(childNodeChildren[1]))); + } + } +} + +// --------------------------------------------------------------------------- + +ConversionNNPtr +WKTParser::Private::buildConversion(const WKTNodeNNPtr &node, + const UnitOfMeasure &defaultLinearUnit, + const UnitOfMeasure &defaultAngularUnit) { + auto &methodNode = node->GP()->lookForChild(WKTConstants::METHOD, + WKTConstants::PROJECTION); + if (isNull(methodNode)) { + ThrowMissing(WKTConstants::METHOD); + } + if (methodNode->GP()->childrenSize() == 0) { + ThrowNotEnoughChildren(WKTConstants::METHOD); + } + + std::vector<OperationParameterNNPtr> parameters; + std::vector<ParameterValueNNPtr> values; + consumeParameters(node, false, parameters, values, defaultLinearUnit, + defaultAngularUnit); + + return Conversion::create(buildProperties(node), + buildProperties(methodNode), parameters, values); +} + +// --------------------------------------------------------------------------- + +CoordinateOperationNNPtr +WKTParser::Private::buildCoordinateOperation(const WKTNodeNNPtr &node) { + const auto *nodeP = node->GP(); + auto &methodNode = nodeP->lookForChild(WKTConstants::METHOD); + if (isNull(methodNode)) { + ThrowMissing(WKTConstants::METHOD); + } + if (methodNode->GP()->childrenSize() == 0) { + ThrowNotEnoughChildren(WKTConstants::METHOD); + } + + auto &sourceCRSNode = nodeP->lookForChild(WKTConstants::SOURCECRS); + if (/*isNull(sourceCRSNode) ||*/ sourceCRSNode->GP()->childrenSize() != 1) { + ThrowMissing(WKTConstants::SOURCECRS); + } + auto sourceCRS = buildCRS(sourceCRSNode->GP()->children()[0]); + if (!sourceCRS) { + throw ParsingException("Invalid content in SOURCECRS node"); + } + + auto &targetCRSNode = nodeP->lookForChild(WKTConstants::TARGETCRS); + if (/*isNull(targetCRSNode) ||*/ targetCRSNode->GP()->childrenSize() != 1) { + ThrowMissing(WKTConstants::TARGETCRS); + } + auto targetCRS = buildCRS(targetCRSNode->GP()->children()[0]); + if (!targetCRS) { + throw ParsingException("Invalid content in TARGETCRS node"); + } + + auto &interpolationCRSNode = + nodeP->lookForChild(WKTConstants::INTERPOLATIONCRS); + CRSPtr interpolationCRS; + if (/*!isNull(interpolationCRSNode) && */ interpolationCRSNode->GP() + ->childrenSize() == 1) { + interpolationCRS = buildCRS(interpolationCRSNode->GP()->children()[0]); + } + + std::vector<OperationParameterNNPtr> parameters; + std::vector<ParameterValueNNPtr> values; + auto defaultLinearUnit = UnitOfMeasure::NONE; + auto defaultAngularUnit = UnitOfMeasure::NONE; + consumeParameters(node, false, parameters, values, defaultLinearUnit, + defaultAngularUnit); + + std::vector<PositionalAccuracyNNPtr> accuracies; + auto &accuracyNode = nodeP->lookForChild(WKTConstants::OPERATIONACCURACY); + if (/*!isNull(accuracyNode) && */ accuracyNode->GP()->childrenSize() == 1) { + accuracies.push_back(PositionalAccuracy::create( + stripQuotes(accuracyNode->GP()->children()[0]))); + } + + return util::nn_static_pointer_cast<CoordinateOperation>( + Transformation::create(buildProperties(node), NN_NO_CHECK(sourceCRS), + NN_NO_CHECK(targetCRS), interpolationCRS, + buildProperties(methodNode), parameters, values, + accuracies)); +} + +// --------------------------------------------------------------------------- + +ConcatenatedOperationNNPtr +WKTParser::Private::buildConcatenatedOperation(const WKTNodeNNPtr &node) { + std::vector<CoordinateOperationNNPtr> operations; + for (const auto &childNode : node->GP()->children()) { + if (ci_equal(childNode->GP()->value(), WKTConstants::STEP)) { + if (childNode->GP()->childrenSize() != 1) { + throw ParsingException("Invalid content in STEP node"); + } + auto op = nn_dynamic_pointer_cast<CoordinateOperation>( + build(childNode->GP()->children()[0])); + if (!op) { + throw ParsingException("Invalid content in STEP node"); + } + operations.emplace_back(NN_NO_CHECK(op)); + } + } + try { + return ConcatenatedOperation::create( + buildProperties(node), operations, + std::vector<PositionalAccuracyNNPtr>()); + } catch (const InvalidOperation &e) { + throw ParsingException( + std::string("Cannot build concatenated operation: ") + e.what()); + } +} + +// --------------------------------------------------------------------------- + +bool WKTParser::Private::hasWebMercPROJ4String( + const WKTNodeNNPtr &projCRSNode, const WKTNodeNNPtr &projectionNode) { + if (projectionNode->GP()->childrenSize() == 0) { + ThrowNotEnoughChildren(WKTConstants::PROJECTION); + } + const std::string wkt1ProjectionName = + stripQuotes(projectionNode->GP()->children()[0]); + + auto &extensionNode = projCRSNode->lookForChild(WKTConstants::EXTENSION); + + if (metadata::Identifier::isEquivalentName(wkt1ProjectionName.c_str(), + "Mercator_1SP") && + projCRSNode->countChildrenOfName("center_latitude") == 0) { + + // Hack to detect the hacky way of encodign webmerc in GDAL WKT1 + // with a EXTENSION["PROJ", "+proj=merc +a=6378137 +b=6378137 + // +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m + // +nadgrids=@null +wktext +no_defs"] node + if (extensionNode && extensionNode->GP()->childrenSize() == 2 && + ci_equal(stripQuotes(extensionNode->GP()->children()[0]), + "PROJ4")) { + std::string projString = + stripQuotes(extensionNode->GP()->children()[1]); + if (projString.find("+proj=merc") != std::string::npos && + projString.find("+a=6378137") != std::string::npos && + projString.find("+b=6378137") != std::string::npos && + projString.find("+lon_0=0") != std::string::npos && + projString.find("+x_0=0") != std::string::npos && + projString.find("+y_0=0") != std::string::npos && + projString.find("+nadgrids=@null") != std::string::npos && + (projString.find("+lat_ts=") == std::string::npos || + projString.find("+lat_ts=0") != std::string::npos) && + (projString.find("+k=") == std::string::npos || + projString.find("+k=1") != std::string::npos) && + (projString.find("+units=") == std::string::npos || + projString.find("+units=m") != std::string::npos)) { + return true; + } + } + } + return false; +} + +// --------------------------------------------------------------------------- + +ConversionNNPtr WKTParser::Private::buildProjectionFromESRI( + const WKTNodeNNPtr &projCRSNode, const WKTNodeNNPtr &projectionNode, + const UnitOfMeasure &defaultLinearUnit, + const UnitOfMeasure &defaultAngularUnit) { + const std::string esriProjectionName = + stripQuotes(projectionNode->GP()->children()[0]); + + // Lambert_Conformal_Conic or Krovak may map to different WKT2 methods + // depending + // on the parameters / their values + const auto esriMappings = getMappingsFromESRI(esriProjectionName); + if (esriMappings.empty()) { + return buildProjectionStandard(projCRSNode, projectionNode, + defaultLinearUnit, defaultAngularUnit); + } + + // Build a map of present parameters + std::map<std::string, std::string> mapParamNameToValue; + for (const auto &childNode : projCRSNode->GP()->children()) { + if (ci_equal(childNode->GP()->value(), WKTConstants::PARAMETER)) { + const auto &childNodeChildren = childNode->GP()->children(); + if (childNodeChildren.size() < 2) { + ThrowNotEnoughChildren(WKTConstants::PARAMETER); + } + const std::string parameterName(stripQuotes(childNodeChildren[0])); + const auto ¶mValue = childNodeChildren[1]->GP()->value(); + mapParamNameToValue[parameterName] = paramValue; + } + } + + // Compare parameters present with the ones expected in the mapping + const ESRIMethodMapping *esriMapping = esriMappings[0]; + int bestMatchCount = -1; + for (const auto &mapping : esriMappings) { + int matchCount = 0; + for (const auto *param = mapping->params; param->esri_name; ++param) { + auto iter = mapParamNameToValue.find(param->esri_name); + if (iter != mapParamNameToValue.end()) { + if (param->wkt2_name == nullptr) { + try { + if (param->fixed_value == io::asDouble(iter->second)) { + matchCount++; + } + } catch (const std::exception &) { + } + } else { + matchCount++; + } + } + } + if (matchCount > bestMatchCount) { + esriMapping = mapping; + bestMatchCount = matchCount; + } + } + + std::map<std::string, const char *> mapWKT2NameToESRIName; + for (const auto *param = esriMapping->params; param->esri_name; ++param) { + if (param->wkt2_name) { + mapWKT2NameToESRIName[param->wkt2_name] = param->esri_name; + } + } + + const auto *wkt2_mapping = getMapping(esriMapping->wkt2_name); + assert(wkt2_mapping); + if (esriProjectionName == "Stereographic") { + try { + if (std::fabs(io::asDouble( + mapParamNameToValue["Latitude_Of_Origin"])) == 90.0) { + wkt2_mapping = + getMapping(EPSG_CODE_METHOD_POLAR_STEREOGRAPHIC_VARIANT_A); + } + } catch (const std::exception &) { + } + } + + PropertyMap propertiesMethod; + propertiesMethod.set(IdentifiedObject::NAME_KEY, wkt2_mapping->wkt2_name); + if (wkt2_mapping->epsg_code != 0) { + propertiesMethod.set(Identifier::CODE_KEY, wkt2_mapping->epsg_code); + propertiesMethod.set(Identifier::CODESPACE_KEY, Identifier::EPSG); + } + + std::vector<OperationParameterNNPtr> parameters; + std::vector<ParameterValueNNPtr> values; + + if (wkt2_mapping->epsg_code == EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL && + ci_equal(esriProjectionName, "Plate_Carree")) { + // Add a fixed Latitude of 1st parallel = 0 so as to have all + // parameters expected by Equidistant Cylindrical. + mapWKT2NameToESRIName[EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL] = + "Standard_Parallel_1"; + mapParamNameToValue["Standard_Parallel_1"] = "0"; + } else if ((wkt2_mapping->epsg_code == + EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_A || + wkt2_mapping->epsg_code == + EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B) && + !ci_equal(esriProjectionName, + "Rectified_Skew_Orthomorphic_Natural_Origin") && + !ci_equal(esriProjectionName, + "Rectified_Skew_Orthomorphic_Center")) { + // ESRI WKT lacks the angle to skew grid + // Take it from the azimuth value + mapWKT2NameToESRIName + [EPSG_NAME_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID] = "Azimuth"; + } + + for (int i = 0; wkt2_mapping->params[i] != nullptr; i++) { + const auto *paramMapping = wkt2_mapping->params[i]; + + auto iter = mapWKT2NameToESRIName.find(paramMapping->wkt2_name); + if (iter == mapWKT2NameToESRIName.end()) { + continue; + } + auto iter2 = mapParamNameToValue.find(iter->second); + if (iter2 == mapParamNameToValue.end()) { + continue; + } + + PropertyMap propertiesParameter; + propertiesParameter.set(IdentifiedObject::NAME_KEY, + paramMapping->wkt2_name); + if (paramMapping->epsg_code != 0) { + propertiesParameter.set(Identifier::CODE_KEY, + paramMapping->epsg_code); + propertiesParameter.set(Identifier::CODESPACE_KEY, + Identifier::EPSG); + } + parameters.push_back(OperationParameter::create(propertiesParameter)); + + try { + double val = io::asDouble(iter2->second); + auto unit = guessUnitForParameter( + paramMapping->wkt2_name, defaultLinearUnit, defaultAngularUnit); + values.push_back(ParameterValue::create(Measure(val, unit))); + } catch (const std::exception &) { + throw ParsingException( + concat("unhandled parameter value type : ", iter2->second)); + } + } + + return Conversion::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), + propertiesMethod, parameters, values) + ->identify(); +} + +// --------------------------------------------------------------------------- + +ConversionNNPtr +WKTParser::Private::buildProjection(const WKTNodeNNPtr &projCRSNode, + const WKTNodeNNPtr &projectionNode, + const UnitOfMeasure &defaultLinearUnit, + const UnitOfMeasure &defaultAngularUnit) { + if (projectionNode->GP()->childrenSize() == 0) { + ThrowNotEnoughChildren(WKTConstants::PROJECTION); + } + if (esriStyle_) { + return buildProjectionFromESRI(projCRSNode, projectionNode, + defaultLinearUnit, defaultAngularUnit); + } + return buildProjectionStandard(projCRSNode, projectionNode, + defaultLinearUnit, defaultAngularUnit); +} +// --------------------------------------------------------------------------- + +ConversionNNPtr WKTParser::Private::buildProjectionStandard( + const WKTNodeNNPtr &projCRSNode, const WKTNodeNNPtr &projectionNode, + const UnitOfMeasure &defaultLinearUnit, + const UnitOfMeasure &defaultAngularUnit) { + const std::string wkt1ProjectionName = + stripQuotes(projectionNode->GP()->children()[0]); + + std::vector<OperationParameterNNPtr> parameters; + std::vector<ParameterValueNNPtr> values; + bool tryToIdentifyWKT1Method = true; + + auto &extensionNode = projCRSNode->lookForChild(WKTConstants::EXTENSION); + const auto &extensionChildren = extensionNode->GP()->children(); + + if (metadata::Identifier::isEquivalentName(wkt1ProjectionName.c_str(), + "Mercator_1SP") && + projCRSNode->countChildrenOfName("center_latitude") == 0) { + + // The latitude of origin, which should always be zero, is + // missing + // in GDAL WKT1, but provisionned in the EPSG Mercator_1SP + // definition, + // so add it manually. + PropertyMap propertiesParameter; + propertiesParameter.set(IdentifiedObject::NAME_KEY, + "Latitude of natural origin"); + propertiesParameter.set(Identifier::CODE_KEY, 8801); + propertiesParameter.set(Identifier::CODESPACE_KEY, Identifier::EPSG); + parameters.push_back(OperationParameter::create(propertiesParameter)); + values.push_back( + ParameterValue::create(Measure(0, UnitOfMeasure::DEGREE))); + + } else if (metadata::Identifier::isEquivalentName( + wkt1ProjectionName.c_str(), "Polar_Stereographic")) { + std::map<std::string, Measure> mapParameters; + for (const auto &childNode : projCRSNode->GP()->children()) { + const auto &childNodeChildren = childNode->GP()->children(); + if (ci_equal(childNode->GP()->value(), WKTConstants::PARAMETER) && + childNodeChildren.size() == 2) { + const std::string wkt1ParameterName( + stripQuotes(childNodeChildren[0])); + try { + double val = asDouble(childNodeChildren[1]); + auto unit = guessUnitForParameter(wkt1ParameterName, + defaultLinearUnit, + defaultAngularUnit); + mapParameters.insert(std::pair<std::string, Measure>( + wkt1ParameterName, Measure(val, unit))); + } catch (const std::exception &) { + } + } + } + + Measure latitudeOfOrigin = mapParameters["latitude_of_origin"]; + Measure centralMeridian = mapParameters["central_meridian"]; + Measure scaleFactorFromMap = mapParameters["scale_factor"]; + Measure scaleFactor((scaleFactorFromMap.unit() == UnitOfMeasure::NONE) + ? Measure(1.0, UnitOfMeasure::SCALE_UNITY) + : scaleFactorFromMap); + Measure falseEasting = mapParameters["false_easting"]; + Measure falseNorthing = mapParameters["false_northing"]; + if (latitudeOfOrigin.unit() != UnitOfMeasure::NONE && + std::fabs(std::fabs(latitudeOfOrigin.convertToUnit( + UnitOfMeasure::DEGREE)) - + 90.0) < 1e-10) { + return Conversion::createPolarStereographicVariantA( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), + Angle(latitudeOfOrigin.value(), latitudeOfOrigin.unit()), + Angle(centralMeridian.value(), centralMeridian.unit()), + Scale(scaleFactor.value(), scaleFactor.unit()), + Length(falseEasting.value(), falseEasting.unit()), + Length(falseNorthing.value(), falseNorthing.unit())); + } else if (latitudeOfOrigin.unit() != UnitOfMeasure::NONE && + scaleFactor.getSIValue() == 1.0) { + return Conversion::createPolarStereographicVariantB( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), + Angle(latitudeOfOrigin.value(), latitudeOfOrigin.unit()), + Angle(centralMeridian.value(), centralMeridian.unit()), + Length(falseEasting.value(), falseEasting.unit()), + Length(falseNorthing.value(), falseNorthing.unit())); + } + tryToIdentifyWKT1Method = false; + // Import GDAL PROJ4 extension nodes + } else if (extensionChildren.size() == 2 && + ci_equal(stripQuotes(extensionChildren[0]), "PROJ4")) { + std::string projString = stripQuotes(extensionChildren[1]); + if (starts_with(projString, "+proj=")) { + try { + auto projObj = + PROJStringParser().createFromPROJString(projString); + auto projObjCrs = + nn_dynamic_pointer_cast<ProjectedCRS>(projObj); + if (projObjCrs) { + return projObjCrs->derivingConversion(); + } + } catch (const io::ParsingException &) { + } + } + } + + std::string projectionName(wkt1ProjectionName); + const MethodMapping *mapping = + tryToIdentifyWKT1Method ? getMappingFromWKT1(projectionName) : nullptr; + + // For Krovak, we need to look at axis to decide between the Krovak and + // Krovak East-North Oriented methods + if (ci_equal(projectionName, "Krovak") && + projCRSNode->countChildrenOfName(WKTConstants::AXIS) == 2 && + &buildAxis( + projCRSNode->GP()->lookForChild(WKTConstants::AXIS, 0), + defaultLinearUnit, false, + 1)->direction() == &AxisDirection::SOUTH && + &buildAxis( + projCRSNode->GP()->lookForChild(WKTConstants::AXIS, 1), + defaultLinearUnit, false, + 2)->direction() == &AxisDirection::WEST) { + mapping = getMapping(EPSG_CODE_METHOD_KROVAK); + } + + PropertyMap propertiesMethod; + if (mapping) { + projectionName = mapping->wkt2_name; + if (mapping->epsg_code != 0) { + propertiesMethod.set(Identifier::CODE_KEY, mapping->epsg_code); + propertiesMethod.set(Identifier::CODESPACE_KEY, Identifier::EPSG); + } + } + propertiesMethod.set(IdentifiedObject::NAME_KEY, projectionName); + + for (const auto &childNode : projCRSNode->GP()->children()) { + if (ci_equal(childNode->GP()->value(), WKTConstants::PARAMETER)) { + const auto &childNodeChildren = childNode->GP()->children(); + if (childNodeChildren.size() < 2) { + ThrowNotEnoughChildren(WKTConstants::PARAMETER); + } + PropertyMap propertiesParameter; + const std::string wkt1ParameterName( + stripQuotes(childNodeChildren[0])); + std::string parameterName(wkt1ParameterName); + const auto *paramMapping = + mapping ? getMappingFromWKT1(mapping, parameterName) : nullptr; + if (paramMapping) { + parameterName = paramMapping->wkt2_name; + if (paramMapping->epsg_code != 0) { + propertiesParameter.set(Identifier::CODE_KEY, + paramMapping->epsg_code); + propertiesParameter.set(Identifier::CODESPACE_KEY, + Identifier::EPSG); + } + } + propertiesParameter.set(IdentifiedObject::NAME_KEY, parameterName); + parameters.push_back( + OperationParameter::create(propertiesParameter)); + const auto ¶mValue = childNodeChildren[1]->GP()->value(); + try { + double val = io::asDouble(paramValue); + auto unit = guessUnitForParameter( + wkt1ParameterName, defaultLinearUnit, defaultAngularUnit); + values.push_back(ParameterValue::create(Measure(val, unit))); + } catch (const std::exception &) { + throw ParsingException( + concat("unhandled parameter value type : ", paramValue)); + } + } + } + + return Conversion::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), + propertiesMethod, parameters, values) + ->identify(); +} + +// --------------------------------------------------------------------------- + +ProjectedCRSNNPtr +WKTParser::Private::buildProjectedCRS(const WKTNodeNNPtr &node) { + + const auto *nodeP = node->GP(); + auto &conversionNode = nodeP->lookForChild(WKTConstants::CONVERSION); + auto &projectionNode = nodeP->lookForChild(WKTConstants::PROJECTION); + if (isNull(conversionNode) && isNull(projectionNode)) { + ThrowMissing(WKTConstants::CONVERSION); + } + if (isNull(conversionNode) && hasWebMercPROJ4String(node, projectionNode)) { + auto conversion = Conversion::createPopularVisualisationPseudoMercator( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), Angle(0), + Angle(0), Length(0), Length(0)); + return ProjectedCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, + "WGS 84 / Pseudo-Mercator"), + GeographicCRS::EPSG_4326, conversion, + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + } + + auto &baseGeodCRSNode = + nodeP->lookForChild(WKTConstants::BASEGEODCRS, + WKTConstants::BASEGEOGCRS, WKTConstants::GEOGCS); + if (isNull(baseGeodCRSNode)) { + throw ParsingException( + "Missing BASEGEODCRS / BASEGEOGCRS / GEOGCS node"); + } + auto baseGeodCRS = buildGeodeticCRS(baseGeodCRSNode); + + auto linearUnit = buildUnitInSubNode(node, UnitOfMeasure::Type::LINEAR); + auto angularUnit = baseGeodCRS->coordinateSystem()->axisList()[0]->unit(); + + auto conversion = + !isNull(conversionNode) + ? buildConversion(conversionNode, linearUnit, angularUnit) + : buildProjection(node, projectionNode, linearUnit, angularUnit); + + auto &csNode = nodeP->lookForChild(WKTConstants::CS); + const auto &nodeValue = nodeP->value(); + if (isNull(csNode) && !ci_equal(nodeValue, WKTConstants::PROJCS) && + !ci_equal(nodeValue, WKTConstants::BASEPROJCRS)) { + ThrowMissing(WKTConstants::CS); + } + auto cs = buildCS(csNode, node, UnitOfMeasure::NONE); + auto cartesianCS = nn_dynamic_pointer_cast<CartesianCS>(cs); + + if (isNull(csNode) && node->countChildrenOfName(WKTConstants::AXIS) == 0) { + const auto methodCode = conversion->method()->getEPSGCode(); + // Krovak south oriented ? + if (methodCode == EPSG_CODE_METHOD_KROVAK) { + cartesianCS = + CartesianCS::create( + PropertyMap(), + CoordinateSystemAxis::create( + util::PropertyMap().set(IdentifiedObject::NAME_KEY, + AxisName::Southing), + emptyString, AxisDirection::SOUTH, linearUnit), + CoordinateSystemAxis::create( + util::PropertyMap().set(IdentifiedObject::NAME_KEY, + AxisName::Westing), + emptyString, AxisDirection::WEST, linearUnit)) + .as_nullable(); + } else if (esriStyle_ && + methodCode == + EPSG_CODE_METHOD_POLAR_STEREOGRAPHIC_VARIANT_A) { + // It is likely that the ESRI definition of EPSG:32661 (UPS North) & + // EPSG:32761 (UPS South) uses the easting-northing order, instead + // of the EPSG northing-easting order. + const double lat0 = conversion->parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + common::UnitOfMeasure::DEGREE); + if (std::fabs(lat0 - 90) < 1e-10) { + cartesianCS = + CartesianCS::create( + PropertyMap(), + CoordinateSystemAxis::create( + util::PropertyMap().set(IdentifiedObject::NAME_KEY, + AxisName::Easting), + AxisAbbreviation::E, AxisDirection::SOUTH, + linearUnit, + Meridian::create(Angle(90, UnitOfMeasure::DEGREE))), + CoordinateSystemAxis::create( + util::PropertyMap().set(IdentifiedObject::NAME_KEY, + AxisName::Northing), + AxisAbbreviation::N, AxisDirection::SOUTH, + linearUnit, Meridian::create( + Angle(180, UnitOfMeasure::DEGREE)))) + .as_nullable(); + } else if (std::fabs(lat0 - -90) < 1e-10) { + cartesianCS = + CartesianCS::create( + PropertyMap(), + CoordinateSystemAxis::create( + util::PropertyMap().set(IdentifiedObject::NAME_KEY, + AxisName::Easting), + AxisAbbreviation::E, AxisDirection::NORTH, + linearUnit, + Meridian::create(Angle(90, UnitOfMeasure::DEGREE))), + CoordinateSystemAxis::create( + util::PropertyMap().set(IdentifiedObject::NAME_KEY, + AxisName::Northing), + AxisAbbreviation::N, AxisDirection::NORTH, + linearUnit, + Meridian::create(Angle(0, UnitOfMeasure::DEGREE)))) + .as_nullable(); + } + } + } + if (!cartesianCS) { + ThrowNotExpectedCSType("Cartesian"); + } + + auto props = buildProperties(node); + if (esriStyle_ && dbContext_) { + auto projCRSName = stripQuotes(nodeP->children()[0]); + + // It is likely that the ESRI definition of EPSG:32661 (UPS North) & + // EPSG:32761 (UPS South) uses the easting-northing order, instead + // of the EPSG northing-easting order + // so don't substitue names to avoid confusion. + if (projCRSName == "UPS_North") { + props.set(IdentifiedObject::NAME_KEY, "WGS 84 / UPS North (E,N)"); + } else if (projCRSName == "UPS_South") { + props.set(IdentifiedObject::NAME_KEY, "WGS 84 / UPS South (E,N)"); + } else { + std::string outTableName; + std::string authNameFromAlias; + std::string codeFromAlias; + auto authFactory = AuthorityFactory::create(NN_NO_CHECK(dbContext_), + std::string()); + auto officialName = authFactory->getOfficialNameFromAlias( + projCRSName, "projected_crs", "ESRI", outTableName, + authNameFromAlias, codeFromAlias); + if (!officialName.empty()) { + props.set(IdentifiedObject::NAME_KEY, officialName); + } + } + } + + return ProjectedCRS::create(props, baseGeodCRS, conversion, + NN_NO_CHECK(cartesianCS)); +} + +// --------------------------------------------------------------------------- + +void WKTParser::Private::parseDynamic(const WKTNodeNNPtr &dynamicNode, + double &frameReferenceEpoch, + util::optional<std::string> &modelName) { + auto &frameEpochNode = dynamicNode->lookForChild(WKTConstants::FRAMEEPOCH); + const auto &frameEpochChildren = frameEpochNode->GP()->children(); + if (frameEpochChildren.empty()) { + ThrowMissing(WKTConstants::FRAMEEPOCH); + } + try { + frameReferenceEpoch = asDouble(frameEpochChildren[0]); + } catch (const std::exception &) { + throw ParsingException("Invalid FRAMEEPOCH node"); + } + auto &modelNode = dynamicNode->GP()->lookForChild( + WKTConstants::MODEL, WKTConstants::VELOCITYGRID); + const auto &modelChildren = modelNode->GP()->children(); + if (modelChildren.size() == 1) { + modelName = stripQuotes(modelChildren[0]); + } +} + +// --------------------------------------------------------------------------- + +VerticalReferenceFrameNNPtr WKTParser::Private::buildVerticalReferenceFrame( + const WKTNodeNNPtr &node, const WKTNodeNNPtr &dynamicNode) { + + if (!isNull(dynamicNode)) { + double frameReferenceEpoch = 0.0; + util::optional<std::string> modelName; + parseDynamic(dynamicNode, frameReferenceEpoch, modelName); + return DynamicVerticalReferenceFrame::create( + buildProperties(node), getAnchor(node), + optional<RealizationMethod>(), + common::Measure(frameReferenceEpoch, common::UnitOfMeasure::YEAR), + modelName); + } + + // WKT1 VERT_DATUM has a datum type after the datum name that we ignore. + return VerticalReferenceFrame::create(buildProperties(node), + getAnchor(node)); +} + +// --------------------------------------------------------------------------- + +TemporalDatumNNPtr +WKTParser::Private::buildTemporalDatum(const WKTNodeNNPtr &node) { + const auto *nodeP = node->GP(); + auto &calendarNode = nodeP->lookForChild(WKTConstants::CALENDAR); + std::string calendar = TemporalDatum::CALENDAR_PROLEPTIC_GREGORIAN; + const auto &calendarChildren = calendarNode->GP()->children(); + if (calendarChildren.size() == 1) { + calendar = stripQuotes(calendarChildren[0]); + } + + auto &timeOriginNode = nodeP->lookForChild(WKTConstants::TIMEORIGIN); + std::string originStr; + const auto &timeOriginNodeChildren = timeOriginNode->GP()->children(); + if (timeOriginNodeChildren.size() == 1) { + originStr = stripQuotes(timeOriginNodeChildren[0]); + } + auto origin = DateTime::create(originStr); + return TemporalDatum::create(buildProperties(node), origin, calendar); +} + +// --------------------------------------------------------------------------- + +EngineeringDatumNNPtr +WKTParser::Private::buildEngineeringDatum(const WKTNodeNNPtr &node) { + return EngineeringDatum::create(buildProperties(node), getAnchor(node)); +} + +// --------------------------------------------------------------------------- + +ParametricDatumNNPtr +WKTParser::Private::buildParametricDatum(const WKTNodeNNPtr &node) { + return ParametricDatum::create(buildProperties(node), getAnchor(node)); +} + +// --------------------------------------------------------------------------- + +CRSNNPtr WKTParser::Private::buildVerticalCRS(const WKTNodeNNPtr &node) { + const auto *nodeP = node->GP(); + auto &datumNode = + nodeP->lookForChild(WKTConstants::VDATUM, WKTConstants::VERT_DATUM, + WKTConstants::VERTICALDATUM, WKTConstants::VRF); + auto &ensembleNode = nodeP->lookForChild(WKTConstants::ENSEMBLE); + if (isNull(datumNode) && isNull(ensembleNode)) { + throw ParsingException("Missing VDATUM or ENSEMBLE node"); + } + + auto &dynamicNode = nodeP->lookForChild(WKTConstants::DYNAMIC); + auto datum = + !isNull(datumNode) + ? buildVerticalReferenceFrame(datumNode, dynamicNode).as_nullable() + : nullptr; + auto datumEnsemble = + !isNull(ensembleNode) + ? buildDatumEnsemble(ensembleNode, nullptr, false).as_nullable() + : nullptr; + + auto &csNode = nodeP->lookForChild(WKTConstants::CS); + const auto &nodeValue = nodeP->value(); + if (isNull(csNode) && !ci_equal(nodeValue, WKTConstants::VERT_CS) && + !ci_equal(nodeValue, WKTConstants::BASEVERTCRS)) { + ThrowMissing(WKTConstants::CS); + } + auto cs = buildCS(csNode, node, UnitOfMeasure::NONE); + auto verticalCS = nn_dynamic_pointer_cast<VerticalCS>(cs); + if (!verticalCS) { + ThrowNotExpectedCSType("vertical"); + } + + auto crs = nn_static_pointer_cast<CRS>(VerticalCRS::create( + buildProperties(node), datum, datumEnsemble, NN_NO_CHECK(verticalCS))); + + if (!isNull(datumNode)) { + auto &extensionNode = datumNode->lookForChild(WKTConstants::EXTENSION); + const auto &extensionChildren = extensionNode->GP()->children(); + if (extensionChildren.size() == 2) { + if (ci_equal(stripQuotes(extensionChildren[0]), "PROJ4_GRIDS")) { + std::string transformationName(crs->nameStr()); + if (!ends_with(transformationName, " height")) { + transformationName += " height"; + } + transformationName += " to WGS84 ellipsoidal height"; + auto transformation = + Transformation::createGravityRelatedHeightToGeographic3D( + PropertyMap().set(IdentifiedObject::NAME_KEY, + transformationName), + crs, GeographicCRS::EPSG_4979, + stripQuotes(extensionChildren[1]), + std::vector<PositionalAccuracyNNPtr>()); + return nn_static_pointer_cast<CRS>(BoundCRS::create( + crs, GeographicCRS::EPSG_4979, transformation)); + } + } + } + + return crs; +} + +// --------------------------------------------------------------------------- + +DerivedVerticalCRSNNPtr +WKTParser::Private::buildDerivedVerticalCRS(const WKTNodeNNPtr &node) { + const auto *nodeP = node->GP(); + auto &baseVertCRSNode = nodeP->lookForChild(WKTConstants::BASEVERTCRS); + // given the constraints enforced on calling code path + assert(!isNull(baseVertCRSNode)); + + auto baseVertCRS_tmp = buildVerticalCRS(baseVertCRSNode); + auto baseVertCRS = NN_NO_CHECK(baseVertCRS_tmp->extractVerticalCRS()); + + auto &derivingConversionNode = + nodeP->lookForChild(WKTConstants::DERIVINGCONVERSION); + if (isNull(derivingConversionNode)) { + ThrowMissing(WKTConstants::DERIVINGCONVERSION); + } + auto derivingConversion = buildConversion( + derivingConversionNode, UnitOfMeasure::NONE, UnitOfMeasure::NONE); + + auto &csNode = nodeP->lookForChild(WKTConstants::CS); + if (isNull(csNode)) { + ThrowMissing(WKTConstants::CS); + } + auto cs = buildCS(csNode, node, UnitOfMeasure::NONE); + + auto verticalCS = nn_dynamic_pointer_cast<VerticalCS>(cs); + if (!verticalCS) { + throw ParsingException( + concat("vertical CS expected, but found ", cs->getWKT2Type(true))); + } + + return DerivedVerticalCRS::create(buildProperties(node), baseVertCRS, + derivingConversion, + NN_NO_CHECK(verticalCS)); +} + +// --------------------------------------------------------------------------- + +CompoundCRSNNPtr +WKTParser::Private::buildCompoundCRS(const WKTNodeNNPtr &node) { + std::vector<CRSNNPtr> components; + for (const auto &child : node->GP()->children()) { + auto crs = buildCRS(child); + if (crs) { + components.push_back(NN_NO_CHECK(crs)); + } + } + return CompoundCRS::create(buildProperties(node), components); +} + +// --------------------------------------------------------------------------- + +BoundCRSNNPtr WKTParser::Private::buildBoundCRS(const WKTNodeNNPtr &node) { + const auto *nodeP = node->GP(); + auto &abridgedNode = + nodeP->lookForChild(WKTConstants::ABRIDGEDTRANSFORMATION); + if (isNull(abridgedNode)) { + ThrowNotEnoughChildren(WKTConstants::ABRIDGEDTRANSFORMATION); + } + + auto &methodNode = abridgedNode->GP()->lookForChild(WKTConstants::METHOD); + if (isNull(methodNode)) { + ThrowMissing(WKTConstants::METHOD); + } + if (methodNode->GP()->childrenSize() == 0) { + ThrowNotEnoughChildren(WKTConstants::METHOD); + } + + auto &sourceCRSNode = nodeP->lookForChild(WKTConstants::SOURCECRS); + const auto &sourceCRSNodeChildren = sourceCRSNode->GP()->children(); + if (sourceCRSNodeChildren.size() != 1) { + ThrowNotEnoughChildren(WKTConstants::SOURCECRS); + } + auto sourceCRS = buildCRS(sourceCRSNodeChildren[0]); + if (!sourceCRS) { + throw ParsingException("Invalid content in SOURCECRS node"); + } + + auto &targetCRSNode = nodeP->lookForChild(WKTConstants::TARGETCRS); + const auto &targetCRSNodeChildren = targetCRSNode->GP()->children(); + if (targetCRSNodeChildren.size() != 1) { + ThrowNotEnoughChildren(WKTConstants::TARGETCRS); + } + auto targetCRS = buildCRS(targetCRSNodeChildren[0]); + if (!targetCRS) { + throw ParsingException("Invalid content in TARGETCRS node"); + } + + std::vector<OperationParameterNNPtr> parameters; + std::vector<ParameterValueNNPtr> values; + auto defaultLinearUnit = UnitOfMeasure::NONE; + auto defaultAngularUnit = UnitOfMeasure::NONE; + consumeParameters(abridgedNode, true, parameters, values, defaultLinearUnit, + defaultAngularUnit); + + CRSPtr sourceTransformationCRS; + if (dynamic_cast<GeographicCRS *>(targetCRS.get())) { + sourceTransformationCRS = sourceCRS->extractGeographicCRS(); + if (!sourceTransformationCRS) { + throw ParsingException("Cannot find GeographicCRS in sourceCRS"); + } + } else { + sourceTransformationCRS = sourceCRS; + } + + auto transformation = Transformation::create( + buildProperties(abridgedNode), NN_NO_CHECK(sourceTransformationCRS), + NN_NO_CHECK(targetCRS), nullptr, buildProperties(methodNode), + parameters, values, std::vector<PositionalAccuracyNNPtr>()); + + return BoundCRS::create(NN_NO_CHECK(sourceCRS), NN_NO_CHECK(targetCRS), + transformation); +} + +// --------------------------------------------------------------------------- + +TemporalCSNNPtr +WKTParser::Private::buildTemporalCS(const WKTNodeNNPtr &parentNode) { + + auto &csNode = parentNode->GP()->lookForChild(WKTConstants::CS); + if (isNull(csNode) && + !ci_equal(parentNode->GP()->value(), WKTConstants::BASETIMECRS)) { + ThrowMissing(WKTConstants::CS); + } + auto cs = buildCS(csNode, parentNode, UnitOfMeasure::NONE); + auto temporalCS = nn_dynamic_pointer_cast<TemporalCS>(cs); + if (!temporalCS) { + ThrowNotExpectedCSType("temporal"); + } + return NN_NO_CHECK(temporalCS); +} + +// --------------------------------------------------------------------------- + +TemporalCRSNNPtr +WKTParser::Private::buildTemporalCRS(const WKTNodeNNPtr &node) { + auto &datumNode = + node->GP()->lookForChild(WKTConstants::TDATUM, WKTConstants::TIMEDATUM); + if (isNull(datumNode)) { + throw ParsingException("Missing TDATUM / TIMEDATUM node"); + } + + return TemporalCRS::create(buildProperties(node), + buildTemporalDatum(datumNode), + buildTemporalCS(node)); +} + +// --------------------------------------------------------------------------- + +DerivedTemporalCRSNNPtr +WKTParser::Private::buildDerivedTemporalCRS(const WKTNodeNNPtr &node) { + const auto *nodeP = node->GP(); + auto &baseCRSNode = nodeP->lookForChild(WKTConstants::BASETIMECRS); + // given the constraints enforced on calling code path + assert(!isNull(baseCRSNode)); + + auto &derivingConversionNode = + nodeP->lookForChild(WKTConstants::DERIVINGCONVERSION); + if (isNull(derivingConversionNode)) { + ThrowNotEnoughChildren(WKTConstants::DERIVINGCONVERSION); + } + + return DerivedTemporalCRS::create( + buildProperties(node), buildTemporalCRS(baseCRSNode), + buildConversion(derivingConversionNode, UnitOfMeasure::NONE, + UnitOfMeasure::NONE), + buildTemporalCS(node)); +} + +// --------------------------------------------------------------------------- + +EngineeringCRSNNPtr +WKTParser::Private::buildEngineeringCRS(const WKTNodeNNPtr &node) { + const auto *nodeP = node->GP(); + auto &datumNode = nodeP->lookForChild(WKTConstants::EDATUM, + WKTConstants::ENGINEERINGDATUM); + if (isNull(datumNode)) { + throw ParsingException("Missing EDATUM / ENGINEERINGDATUM node"); + } + + auto &csNode = nodeP->lookForChild(WKTConstants::CS); + if (isNull(csNode) && !ci_equal(nodeP->value(), WKTConstants::BASEENGCRS)) { + ThrowMissing(WKTConstants::CS); + } + + auto cs = buildCS(csNode, node, UnitOfMeasure::NONE); + return EngineeringCRS::create(buildProperties(node), + buildEngineeringDatum(datumNode), cs); +} + +// --------------------------------------------------------------------------- + +EngineeringCRSNNPtr +WKTParser::Private::buildEngineeringCRSFromLocalCS(const WKTNodeNNPtr &node) { + auto &datumNode = node->GP()->lookForChild(WKTConstants::LOCAL_DATUM); + auto cs = buildCS(null_node, node, UnitOfMeasure::NONE); + auto datum = EngineeringDatum::create( + !isNull(datumNode) + ? buildProperties(datumNode) + : + // In theory OGC 01-009 mandates LOCAL_DATUM, but GDAL has a + // tradition of emitting just LOCAL_CS["foo"] + emptyPropertyMap); + return EngineeringCRS::create(buildProperties(node), datum, cs); +} + +// --------------------------------------------------------------------------- + +DerivedEngineeringCRSNNPtr +WKTParser::Private::buildDerivedEngineeringCRS(const WKTNodeNNPtr &node) { + const auto *nodeP = node->GP(); + auto &baseEngCRSNode = nodeP->lookForChild(WKTConstants::BASEENGCRS); + // given the constraints enforced on calling code path + assert(!isNull(baseEngCRSNode)); + + auto baseEngCRS = buildEngineeringCRS(baseEngCRSNode); + + auto &derivingConversionNode = + nodeP->lookForChild(WKTConstants::DERIVINGCONVERSION); + if (isNull(derivingConversionNode)) { + ThrowNotEnoughChildren(WKTConstants::DERIVINGCONVERSION); + } + auto derivingConversion = buildConversion( + derivingConversionNode, UnitOfMeasure::NONE, UnitOfMeasure::NONE); + + auto &csNode = nodeP->lookForChild(WKTConstants::CS); + if (isNull(csNode)) { + ThrowMissing(WKTConstants::CS); + } + auto cs = buildCS(csNode, node, UnitOfMeasure::NONE); + + return DerivedEngineeringCRS::create(buildProperties(node), baseEngCRS, + derivingConversion, cs); +} + +// --------------------------------------------------------------------------- + +ParametricCSNNPtr +WKTParser::Private::buildParametricCS(const WKTNodeNNPtr &parentNode) { + + auto &csNode = parentNode->GP()->lookForChild(WKTConstants::CS); + if (isNull(csNode) && + !ci_equal(parentNode->GP()->value(), WKTConstants::BASEPARAMCRS)) { + ThrowMissing(WKTConstants::CS); + } + auto cs = buildCS(csNode, parentNode, UnitOfMeasure::NONE); + auto parametricCS = nn_dynamic_pointer_cast<ParametricCS>(cs); + if (!parametricCS) { + ThrowNotExpectedCSType("parametric"); + } + return NN_NO_CHECK(parametricCS); +} + +// --------------------------------------------------------------------------- + +ParametricCRSNNPtr +WKTParser::Private::buildParametricCRS(const WKTNodeNNPtr &node) { + auto &datumNode = node->GP()->lookForChild(WKTConstants::PDATUM, + WKTConstants::PARAMETRICDATUM); + if (isNull(datumNode)) { + throw ParsingException("Missing PDATUM / PARAMETRICDATUM node"); + } + + return ParametricCRS::create(buildProperties(node), + buildParametricDatum(datumNode), + buildParametricCS(node)); +} + +// --------------------------------------------------------------------------- + +DerivedParametricCRSNNPtr +WKTParser::Private::buildDerivedParametricCRS(const WKTNodeNNPtr &node) { + const auto *nodeP = node->GP(); + auto &baseParamCRSNode = nodeP->lookForChild(WKTConstants::BASEPARAMCRS); + // given the constraints enforced on calling code path + assert(!isNull(baseParamCRSNode)); + + auto &derivingConversionNode = + nodeP->lookForChild(WKTConstants::DERIVINGCONVERSION); + if (isNull(derivingConversionNode)) { + ThrowNotEnoughChildren(WKTConstants::DERIVINGCONVERSION); + } + + return DerivedParametricCRS::create( + buildProperties(node), buildParametricCRS(baseParamCRSNode), + buildConversion(derivingConversionNode, UnitOfMeasure::NONE, + UnitOfMeasure::NONE), + buildParametricCS(node)); +} + +// --------------------------------------------------------------------------- + +DerivedProjectedCRSNNPtr +WKTParser::Private::buildDerivedProjectedCRS(const WKTNodeNNPtr &node) { + const auto *nodeP = node->GP(); + auto &baseProjCRSNode = nodeP->lookForChild(WKTConstants::BASEPROJCRS); + if (isNull(baseProjCRSNode)) { + ThrowNotEnoughChildren(WKTConstants::BASEPROJCRS); + } + auto baseProjCRS = buildProjectedCRS(baseProjCRSNode); + + auto &conversionNode = + nodeP->lookForChild(WKTConstants::DERIVINGCONVERSION); + if (isNull(conversionNode)) { + ThrowNotEnoughChildren(WKTConstants::DERIVINGCONVERSION); + } + + auto linearUnit = buildUnitInSubNode(node); + auto angularUnit = + baseProjCRS->baseCRS()->coordinateSystem()->axisList()[0]->unit(); + + auto conversion = buildConversion(conversionNode, linearUnit, angularUnit); + + auto &csNode = nodeP->lookForChild(WKTConstants::CS); + if (isNull(csNode) && !ci_equal(nodeP->value(), WKTConstants::PROJCS)) { + ThrowMissing(WKTConstants::CS); + } + auto cs = buildCS(csNode, node, UnitOfMeasure::NONE); + return DerivedProjectedCRS::create(buildProperties(node), baseProjCRS, + conversion, cs); +} + +// --------------------------------------------------------------------------- + +static bool isGeodeticCRS(const std::string &name) { + return ci_equal(name, WKTConstants::GEODCRS) || // WKT2 + ci_equal(name, WKTConstants::GEODETICCRS) || // WKT2 + ci_equal(name, WKTConstants::GEOGCRS) || // WKT2 2018 + ci_equal(name, WKTConstants::GEOGRAPHICCRS) || // WKT2 2018 + ci_equal(name, WKTConstants::GEOGCS) || // WKT1 + ci_equal(name, WKTConstants::GEOCCS); // WKT1 +} + +// --------------------------------------------------------------------------- + +CRSPtr WKTParser::Private::buildCRS(const WKTNodeNNPtr &node) { + const auto *nodeP = node->GP(); + const std::string &name(nodeP->value()); + + if (isGeodeticCRS(name)) { + if (!isNull(nodeP->lookForChild(WKTConstants::BASEGEOGCRS, + WKTConstants::BASEGEODCRS))) { + return buildDerivedGeodeticCRS(node); + } else { + return util::nn_static_pointer_cast<CRS>(buildGeodeticCRS(node)); + } + } + + if (ci_equal(name, WKTConstants::PROJCS) || + ci_equal(name, WKTConstants::PROJCRS) || + ci_equal(name, WKTConstants::PROJECTEDCRS)) { + return util::nn_static_pointer_cast<CRS>(buildProjectedCRS(node)); + } + + if (ci_equal(name, WKTConstants::VERT_CS) || + ci_equal(name, WKTConstants::VERTCRS) || + ci_equal(name, WKTConstants::VERTICALCRS)) { + if (!isNull(nodeP->lookForChild(WKTConstants::BASEVERTCRS))) { + return util::nn_static_pointer_cast<CRS>( + buildDerivedVerticalCRS(node)); + } else { + return util::nn_static_pointer_cast<CRS>(buildVerticalCRS(node)); + } + } + + if (ci_equal(name, WKTConstants::COMPD_CS) || + ci_equal(name, WKTConstants::COMPOUNDCRS)) { + return util::nn_static_pointer_cast<CRS>(buildCompoundCRS(node)); + } + + if (ci_equal(name, WKTConstants::BOUNDCRS)) { + return util::nn_static_pointer_cast<CRS>(buildBoundCRS(node)); + } + + if (ci_equal(name, WKTConstants::TIMECRS)) { + if (!isNull(nodeP->lookForChild(WKTConstants::BASETIMECRS))) { + return util::nn_static_pointer_cast<CRS>( + buildDerivedTemporalCRS(node)); + } else { + return util::nn_static_pointer_cast<CRS>(buildTemporalCRS(node)); + } + } + + if (ci_equal(name, WKTConstants::DERIVEDPROJCRS)) { + return util::nn_static_pointer_cast<CRS>( + buildDerivedProjectedCRS(node)); + } + + if (ci_equal(name, WKTConstants::ENGCRS) || + ci_equal(name, WKTConstants::ENGINEERINGCRS)) { + if (!isNull(nodeP->lookForChild(WKTConstants::BASEENGCRS))) { + return util::nn_static_pointer_cast<CRS>( + buildDerivedEngineeringCRS(node)); + } else { + return util::nn_static_pointer_cast<CRS>(buildEngineeringCRS(node)); + } + } + + if (ci_equal(name, WKTConstants::LOCAL_CS)) { + return util::nn_static_pointer_cast<CRS>( + buildEngineeringCRSFromLocalCS(node)); + } + + if (ci_equal(name, WKTConstants::PARAMETRICCRS)) { + if (!isNull(nodeP->lookForChild(WKTConstants::BASEPARAMCRS))) { + return util::nn_static_pointer_cast<CRS>( + buildDerivedParametricCRS(node)); + } else { + return util::nn_static_pointer_cast<CRS>(buildParametricCRS(node)); + } + } + + return nullptr; +} + +// --------------------------------------------------------------------------- + +BaseObjectNNPtr WKTParser::Private::build(const WKTNodeNNPtr &node) { + const auto *nodeP = node->GP(); + const std::string &name(nodeP->value()); + + auto crs = buildCRS(node); + if (crs) { + if (!toWGS84Parameters_.empty()) { + return util::nn_static_pointer_cast<BaseObject>( + BoundCRS::createFromTOWGS84(NN_NO_CHECK(crs), + toWGS84Parameters_)); + } + if (!datumPROJ4Grids_.empty()) { + return util::nn_static_pointer_cast<BaseObject>( + BoundCRS::createFromNadgrids(NN_NO_CHECK(crs), + datumPROJ4Grids_)); + } + return util::nn_static_pointer_cast<BaseObject>(NN_NO_CHECK(crs)); + } + + if (ci_equal(name, WKTConstants::DATUM) || + ci_equal(name, WKTConstants::GEODETICDATUM) || + ci_equal(name, WKTConstants::TRF)) { + return util::nn_static_pointer_cast<BaseObject>( + buildGeodeticReferenceFrame(node, PrimeMeridian::GREENWICH, + null_node)); + } + + if (ci_equal(name, WKTConstants::ENSEMBLE)) { + return util::nn_static_pointer_cast<BaseObject>(buildDatumEnsemble( + node, PrimeMeridian::GREENWICH, + !isNull(nodeP->lookForChild(WKTConstants::ELLIPSOID)))); + } + + if (ci_equal(name, WKTConstants::VDATUM) || + ci_equal(name, WKTConstants::VERT_DATUM) || + ci_equal(name, WKTConstants::VERTICALDATUM) || + ci_equal(name, WKTConstants::VRF)) { + return util::nn_static_pointer_cast<BaseObject>( + buildVerticalReferenceFrame(node, null_node)); + } + + if (ci_equal(name, WKTConstants::TDATUM) || + ci_equal(name, WKTConstants::TIMEDATUM)) { + return util::nn_static_pointer_cast<BaseObject>( + buildTemporalDatum(node)); + } + + if (ci_equal(name, WKTConstants::EDATUM) || + ci_equal(name, WKTConstants::ENGINEERINGDATUM)) { + return util::nn_static_pointer_cast<BaseObject>( + buildEngineeringDatum(node)); + } + + if (ci_equal(name, WKTConstants::PDATUM) || + ci_equal(name, WKTConstants::PARAMETRICDATUM)) { + return util::nn_static_pointer_cast<BaseObject>( + buildParametricDatum(node)); + } + + if (ci_equal(name, WKTConstants::ELLIPSOID) || + ci_equal(name, WKTConstants::SPHEROID)) { + return util::nn_static_pointer_cast<BaseObject>(buildEllipsoid(node)); + } + + if (ci_equal(name, WKTConstants::COORDINATEOPERATION)) { + return util::nn_static_pointer_cast<BaseObject>( + buildCoordinateOperation(node)); + } + + if (ci_equal(name, WKTConstants::CONVERSION)) { + return util::nn_static_pointer_cast<BaseObject>( + buildConversion(node, UnitOfMeasure::METRE, UnitOfMeasure::DEGREE)); + } + + if (ci_equal(name, WKTConstants::CONCATENATEDOPERATION)) { + return util::nn_static_pointer_cast<BaseObject>( + buildConcatenatedOperation(node)); + } + + if (ci_equal(name, WKTConstants::ID) || + ci_equal(name, WKTConstants::AUTHORITY)) { + return util::nn_static_pointer_cast<BaseObject>( + NN_NO_CHECK(buildId(node, false))); + } + + throw ParsingException(concat("unhandled keyword: ", name)); +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a sub-class of BaseObject from a user specified text. + * + * The text can be a: + * <ul> + * <li>WKT string</li> + * <li>PROJ string</li> + * <li>database code, prefixed by its authoriy. e.g. "EPSG:4326"</li> + * <li>URN. e.g. "urn:ogc:def:crs:EPSG::4326", + * "urn:ogc:def:coordinateOperation:EPSG::1671"</li> + * <li>an objet name. e.g "WGS 84", "WGS 84 / UTM zone 31N". In that case as + * uniqueness is not guaranteed, the function may apply heuristics to + * determine the appropriate best match.</li> + * </ul> + * + * @throw ParsingException + */ +BaseObjectNNPtr createFromUserInput(const std::string &text, + const DatabaseContextPtr &dbContext) { + for (const auto &wktConstants : WKTConstants::constants()) { + if (ci_starts_with(text, wktConstants)) { + return WKTParser().attachDatabaseContext(dbContext).createFromWKT( + text); + } + } + const char *textWithoutPlusPrefix = text.c_str(); + if (textWithoutPlusPrefix[0] == '+') + textWithoutPlusPrefix++; + + if (strncmp(textWithoutPlusPrefix, "proj=", strlen("proj=")) == 0 || + strncmp(textWithoutPlusPrefix, "init=", strlen("init=")) == 0 || + strncmp(textWithoutPlusPrefix, "title=", strlen("title=")) == 0) { + return PROJStringParser() + .attachDatabaseContext(dbContext) + .createFromPROJString(text); + } + + auto tokens = split(text, ':'); + if (tokens.size() == 2) { + if (!dbContext) { + throw ParsingException("no database context specified"); + } + auto factory = + AuthorityFactory::create(NN_NO_CHECK(dbContext), tokens[0]); + return factory->createCoordinateReferenceSystem(tokens[1]); + } + + // urn:ogc:def:crs:EPSG::4326 + if (tokens.size() == 7) { + if (!dbContext) { + throw ParsingException("no database context specified"); + } + const auto &type = tokens[3]; + auto factory = + AuthorityFactory::create(NN_NO_CHECK(dbContext), tokens[4]); + const auto &code = tokens[6]; + if (type == "crs") { + return factory->createCoordinateReferenceSystem(code); + } + if (type == "coordinateOperation") { + return factory->createCoordinateOperation(code, true); + } + if (type == "datum") { + return factory->createDatum(code); + } + if (type == "ellipsoid") { + return factory->createEllipsoid(code); + } + if (type == "meridian") { + return factory->createPrimeMeridian(code); + } + throw ParsingException(concat("unhandled object type: ", type)); + } + + if (dbContext) { + auto factory = + AuthorityFactory::create(NN_NO_CHECK(dbContext), std::string()); + // First pass: exact match on CRS objects + // Second pass: exact match on other objects + // Third pass: approximate match on CRS objects + // Fourth pass: approximate match on other objects + constexpr size_t limitResultCount = 10; + for (int pass = 0; pass <= 3; ++pass) { + const bool approximateMatch = (pass >= 2); + auto res = factory->createObjectsFromName( + text, + (pass == 0 || pass == 2) + ? std::vector< + AuthorityFactory::ObjectType>{AuthorityFactory:: + ObjectType::CRS} + : std::vector< + AuthorityFactory:: + ObjectType>{AuthorityFactory::ObjectType:: + ELLIPSOID, + AuthorityFactory::ObjectType::DATUM, + AuthorityFactory::ObjectType:: + COORDINATE_OPERATION}, + approximateMatch, limitResultCount); + if (res.size() == 1) { + return res.front(); + } + if (res.size() > 1) { + if (pass == 0 || pass == 2) { + for (size_t ndim = 2; ndim <= 3; ndim++) { + for (const auto &obj : res) { + auto crs = + dynamic_cast<crs::GeographicCRS *>(obj.get()); + if (crs && + crs->coordinateSystem()->axisList().size() == + ndim) { + return obj; + } + } + } + } + + std::string msg("several objects matching this name: "); + bool first = true; + for (const auto &obj : res) { + if (msg.size() > 200) { + msg += ", ..."; + break; + } + if (!first) { + msg += ", "; + } + first = false; + msg += obj->nameStr(); + } + throw ParsingException(msg); + } + } + } + + throw ParsingException("unrecognized format / unknown name"); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a sub-class of BaseObject from a WKT string. + * @throw ParsingException + */ +BaseObjectNNPtr WKTParser::createFromWKT(const std::string &wkt) { + WKTNodeNNPtr root = WKTNode::createFrom(wkt); + return d->build(root); +} + +// --------------------------------------------------------------------------- + +/** \brief Attach a database context, to allow queries in it if needed. + */ +WKTParser & +WKTParser::attachDatabaseContext(const DatabaseContextPtr &dbContext) { + d->dbContext_ = dbContext; + return *this; +} + +// --------------------------------------------------------------------------- + +/** \brief Guess the "dialect" of the WKT string. + */ +WKTParser::WKTGuessedDialect +WKTParser::guessDialect(const std::string &wkt) noexcept { + const std::string *const wkt1_keywords[] = { + &WKTConstants::GEOCCS, &WKTConstants::GEOGCS, &WKTConstants::COMPD_CS, + &WKTConstants::PROJCS, &WKTConstants::VERT_CS, &WKTConstants::LOCAL_CS}; + for (const auto &pointerKeyword : wkt1_keywords) { + if (ci_starts_with(wkt, *pointerKeyword)) { + + if (ci_find(wkt, "GEOGCS[\"GCS_") != std::string::npos) { + return WKTGuessedDialect::WKT1_ESRI; + } + + return WKTGuessedDialect::WKT1_GDAL; + } + } + + const std::string *const wkt2_2018_only_keywords[] = { + &WKTConstants::GEOGCRS, + // contained in previous one + // &WKTConstants::BASEGEOGCRS, + &WKTConstants::CONCATENATEDOPERATION, &WKTConstants::USAGE, + &WKTConstants::DYNAMIC, &WKTConstants::FRAMEEPOCH, &WKTConstants::MODEL, + &WKTConstants::VELOCITYGRID, &WKTConstants::ENSEMBLE, + &WKTConstants::DERIVEDPROJCRS, &WKTConstants::BASEPROJCRS, + &WKTConstants::GEOGRAPHICCRS, &WKTConstants::TRF, &WKTConstants::VRF}; + + for (const auto &pointerKeyword : wkt2_2018_only_keywords) { + auto pos = ci_find(wkt, *pointerKeyword); + if (pos != std::string::npos && + wkt[pos + pointerKeyword->size()] == '[') { + return WKTGuessedDialect::WKT2_2018; + } + } + static const char *const wkt2_2018_only_substrings[] = { + "CS[TemporalDateTime,", "CS[TemporalCount,", "CS[TemporalMeasure,", + }; + for (const auto &substrings : wkt2_2018_only_substrings) { + if (ci_find(wkt, substrings) != std::string::npos) { + return WKTGuessedDialect::WKT2_2018; + } + } + + for (const auto &wktConstants : WKTConstants::constants()) { + if (ci_starts_with(wkt, wktConstants)) { + return WKTGuessedDialect::WKT2_2015; + } + } + + return WKTGuessedDialect::NOT_WKT; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +FormattingException::FormattingException(const char *message) + : Exception(message) {} + +// --------------------------------------------------------------------------- + +FormattingException::FormattingException(const std::string &message) + : Exception(message) {} + +// --------------------------------------------------------------------------- + +FormattingException::FormattingException(const FormattingException &) = default; + +// --------------------------------------------------------------------------- + +FormattingException::~FormattingException() = default; + +// --------------------------------------------------------------------------- + +void FormattingException::Throw(const char *msg) { + throw FormattingException(msg); +} + +// --------------------------------------------------------------------------- + +void FormattingException::Throw(const std::string &msg) { + throw FormattingException(msg); +} + +// --------------------------------------------------------------------------- + +ParsingException::ParsingException(const char *message) : Exception(message) {} + +// --------------------------------------------------------------------------- + +ParsingException::ParsingException(const std::string &message) + : Exception(message) {} + +// --------------------------------------------------------------------------- + +ParsingException::ParsingException(const ParsingException &) = default; + +// --------------------------------------------------------------------------- + +ParsingException::~ParsingException() = default; + +// --------------------------------------------------------------------------- + +IPROJStringExportable::~IPROJStringExportable() = default; + +// --------------------------------------------------------------------------- + +std::string IPROJStringExportable::exportToPROJString( + PROJStringFormatter *formatter) const { + _exportToPROJString(formatter); + return formatter->toString(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +struct Step { + std::string name{}; + bool isInit = false; + bool inverted{false}; + + struct KeyValue { + std::string key{}; + std::string value{}; + + explicit KeyValue(const std::string &keyIn) : key(keyIn) {} + + KeyValue(const char *keyIn, const std::string &valueIn); + + KeyValue(const std::string &keyIn, const std::string &valueIn) + : key(keyIn), value(valueIn) {} + + // cppcheck-suppress functionStatic + bool keyEquals(const char *otherKey) const noexcept { + return key == otherKey; + } + + // cppcheck-suppress functionStatic + bool equals(const char *otherKey, const char *otherVal) const noexcept { + return key == otherKey && value == otherVal; + } + + bool operator!=(const KeyValue &other) const noexcept { + return key != other.key || value != other.value; + } + }; + + std::vector<KeyValue> paramValues{}; +}; + +Step::KeyValue::KeyValue(const char *keyIn, const std::string &valueIn) + : key(keyIn), value(valueIn) {} + +struct PROJStringFormatter::Private { + PROJStringFormatter::Convention convention_ = + PROJStringFormatter::Convention::PROJ_5; + std::vector<double> toWGS84Parameters_{}; + std::string vDatumExtension_{}; + std::string hDatumExtension_{}; + + std::list<Step> steps_{}; + std::vector<Step::KeyValue> globalParamValues_{}; + + struct InversionStackElt { + std::list<Step>::iterator startIter{}; + bool iterValid = false; + bool currentInversionState = false; + }; + std::vector<InversionStackElt> inversionStack_{InversionStackElt()}; + bool omitProjLongLatIfPossible_ = false; + bool omitZUnitConversion_ = false; + DatabaseContextPtr dbContext_{}; + bool useETMercForTMerc_ = false; + + std::string result_{}; + + // cppcheck-suppress functionStatic + void appendToResult(const char *str); + + // cppcheck-suppress functionStatic + void addStep(); +}; + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +PROJStringFormatter::PROJStringFormatter(Convention conventionIn, + const DatabaseContextPtr &dbContext) + : d(internal::make_unique<Private>()) { + d->convention_ = conventionIn; + d->dbContext_ = dbContext; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +PROJStringFormatter::~PROJStringFormatter() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Constructs a new formatter. + * + * A formatter can be used only once (its internal state is mutated) + * + * Its default behaviour can be adjusted with the different setters. + * + * @param conventionIn PROJ string flavor. Defaults to Convention::PROJ_5 + * @param dbContext Database context (can help to find alternative grid names). + * May be nullptr + * @return new formatter. + */ +PROJStringFormatterNNPtr +PROJStringFormatter::create(Convention conventionIn, + DatabaseContextPtr dbContext) { + return NN_NO_CHECK(PROJStringFormatter::make_unique<PROJStringFormatter>( + conventionIn, dbContext)); +} + +// --------------------------------------------------------------------------- + +/** \brief Set whether Extented Transverse Mercator (etmerc) should be used + * instead of tmerc */ +void PROJStringFormatter::setUseETMercForTMerc(bool flag) { + d->useETMercForTMerc_ = flag; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns the PROJ string. */ +const std::string &PROJStringFormatter::toString() const { + + assert(d->inversionStack_.size() == 1); + + d->result_.clear(); + + for (auto iter = d->steps_.begin(); iter != d->steps_.end();) { + // Remove no-op helmert + auto &step = *iter; + const auto paramCount = step.paramValues.size(); + if (step.name == "helmert" && (paramCount == 3 || paramCount == 8) && + step.paramValues[0].equals("x", "0") && + step.paramValues[1].equals("y", "0") && + step.paramValues[2].equals("z", "0") && + (paramCount == 3 || + (step.paramValues[3].equals("rx", "0") && + step.paramValues[4].equals("ry", "0") && + step.paramValues[5].equals("rz", "0") && + step.paramValues[6].equals("s", "0") && + step.paramValues[7].keyEquals("convention")))) { + iter = d->steps_.erase(iter); + } else { + ++iter; + } + } + + for (auto &step : d->steps_) { + if (!step.inverted) { + continue; + } + + const auto paramCount = step.paramValues.size(); + + // axisswap order=2,1 is its own inverse + if (step.name == "axisswap" && paramCount == 1 && + step.paramValues[0].equals("order", "2,1")) { + step.inverted = false; + continue; + } + + // handle unitconvert inverse + if (step.name == "unitconvert" && paramCount == 2 && + step.paramValues[0].keyEquals("xy_in") && + step.paramValues[1].keyEquals("xy_out")) { + std::swap(step.paramValues[0].value, step.paramValues[1].value); + step.inverted = false; + continue; + } + + if (step.name == "unitconvert" && paramCount == 2 && + step.paramValues[0].keyEquals("z_in") && + step.paramValues[1].keyEquals("z_out")) { + std::swap(step.paramValues[0].value, step.paramValues[1].value); + step.inverted = false; + continue; + } + + if (step.name == "unitconvert" && paramCount == 4 && + step.paramValues[0].keyEquals("xy_in") && + step.paramValues[1].keyEquals("z_in") && + step.paramValues[2].keyEquals("xy_out") && + step.paramValues[3].keyEquals("z_out")) { + std::swap(step.paramValues[0].value, step.paramValues[2].value); + std::swap(step.paramValues[1].value, step.paramValues[3].value); + step.inverted = false; + continue; + } + } + + bool changeDone; + do { + changeDone = false; + auto iterPrev = d->steps_.begin(); + if (iterPrev == d->steps_.end()) { + break; + } + auto iterCur = iterPrev; + iterCur++; + for (size_t i = 1; i < d->steps_.size(); ++i, ++iterCur, ++iterPrev) { + + auto &prevStep = *iterPrev; + auto &curStep = *iterCur; + + const auto curStepParamCount = curStep.paramValues.size(); + const auto prevStepParamCount = prevStep.paramValues.size(); + + // longlat (or its inverse) with ellipsoid only is a no-op + // do that only for an internal step + if (i + 1 < d->steps_.size() && curStep.name == "longlat" && + curStepParamCount == 1 && + curStep.paramValues[0].keyEquals("ellps")) { + d->steps_.erase(iterCur); + changeDone = true; + break; + } + + // unitconvert (xy) followed by its inverse is a no-op + if (curStep.name == "unitconvert" && + prevStep.name == "unitconvert" && !curStep.inverted && + !prevStep.inverted && curStepParamCount == 2 && + prevStepParamCount == 2 && + curStep.paramValues[0].keyEquals("xy_in") && + prevStep.paramValues[0].keyEquals("xy_in") && + curStep.paramValues[1].keyEquals("xy_out") && + prevStep.paramValues[1].keyEquals("xy_out") && + curStep.paramValues[0].value == prevStep.paramValues[1].value && + curStep.paramValues[1].value == prevStep.paramValues[0].value) { + ++iterCur; + d->steps_.erase(iterPrev, iterCur); + changeDone = true; + break; + } + + // unitconvert (z) followed by its inverse is a no-op + if (curStep.name == "unitconvert" && + prevStep.name == "unitconvert" && !curStep.inverted && + !prevStep.inverted && curStepParamCount == 2 && + prevStepParamCount == 2 && + curStep.paramValues[0].keyEquals("z_in") && + prevStep.paramValues[0].keyEquals("z_in") && + curStep.paramValues[1].keyEquals("z_out") && + prevStep.paramValues[1].keyEquals("z_out") && + curStep.paramValues[0].value == prevStep.paramValues[1].value && + curStep.paramValues[1].value == prevStep.paramValues[0].value) { + ++iterCur; + d->steps_.erase(iterPrev, iterCur); + changeDone = true; + break; + } + + // unitconvert (xyz) followed by its inverse is a no-op + if (curStep.name == "unitconvert" && + prevStep.name == "unitconvert" && !curStep.inverted && + !prevStep.inverted && curStepParamCount == 4 && + prevStepParamCount == 4 && + curStep.paramValues[0].keyEquals("xy_in") && + prevStep.paramValues[0].keyEquals("xy_in") && + curStep.paramValues[1].keyEquals("z_in") && + prevStep.paramValues[1].keyEquals("z_in") && + curStep.paramValues[2].keyEquals("xy_out") && + prevStep.paramValues[2].keyEquals("xy_out") && + curStep.paramValues[3].keyEquals("z_out") && + prevStep.paramValues[3].keyEquals("z_out") && + curStep.paramValues[0].value == prevStep.paramValues[2].value && + curStep.paramValues[1].value == prevStep.paramValues[3].value && + curStep.paramValues[2].value == prevStep.paramValues[0].value && + curStep.paramValues[3].value == prevStep.paramValues[1].value) { + ++iterCur; + d->steps_.erase(iterPrev, iterCur); + changeDone = true; + break; + } + + // combine unitconvert (xy) and unitconvert (z) + for (int k = 0; k < 2; ++k) { + auto &first = (k == 0) ? curStep : prevStep; + auto &second = (k == 0) ? prevStep : curStep; + if (first.name == "unitconvert" && + second.name == "unitconvert" && !first.inverted && + !second.inverted && first.paramValues.size() == 2 && + second.paramValues.size() == 2 && + second.paramValues[0].keyEquals("xy_in") && + second.paramValues[1].keyEquals("xy_out") && + first.paramValues[0].keyEquals("z_in") && + first.paramValues[1].keyEquals("z_out")) { + + auto xy_in = second.paramValues[0].value; + auto xy_out = second.paramValues[1].value; + auto z_in = first.paramValues[0].value; + auto z_out = first.paramValues[1].value; + d->steps_.erase(iterPrev, iterCur); + iterCur->paramValues.clear(); + iterCur->paramValues.emplace_back( + Step::KeyValue("xy_in", xy_in)); + iterCur->paramValues.emplace_back( + Step::KeyValue("z_in", z_in)); + iterCur->paramValues.emplace_back( + Step::KeyValue("xy_out", xy_out)); + iterCur->paramValues.emplace_back( + Step::KeyValue("z_out", z_out)); + changeDone = true; + break; + } + } + if (changeDone) { + break; + } + + // +step +proj=unitconvert +xy_in=X1 +xy_out=X2 + // +step +proj=unitconvert +xy_in=X2 +z_in=Z1 +xy_out=X1 +z_out=Z2 + // ==> step +proj=unitconvert +z_in=Z1 +z_out=Z2 + for (int k = 0; k < 2; ++k) { + auto &first = (k == 0) ? curStep : prevStep; + auto &second = (k == 0) ? prevStep : curStep; + if (first.name == "unitconvert" && + second.name == "unitconvert" && !first.inverted && + !second.inverted && first.paramValues.size() == 4 && + second.paramValues.size() == 2 && + first.paramValues[0].keyEquals("xy_in") && + first.paramValues[1].keyEquals("z_in") && + first.paramValues[2].keyEquals("xy_out") && + first.paramValues[3].keyEquals("z_out") && + second.paramValues[0].keyEquals("xy_in=") && + second.paramValues[1].keyEquals("xy_out") && + first.paramValues[0].value == second.paramValues[1].value && + first.paramValues[2].value == second.paramValues[0].value) { + auto z_in = first.paramValues[1].value; + auto z_out = first.paramValues[3].value; + if (z_in != z_out) { + d->steps_.erase(iterPrev, iterCur); + iterCur->paramValues.clear(); + iterCur->paramValues.emplace_back( + Step::KeyValue("z_in", z_in)); + iterCur->paramValues.emplace_back( + Step::KeyValue("z_out", z_out)); + } else { + ++iterCur; + d->steps_.erase(iterPrev, iterCur); + } + changeDone = true; + break; + } + } + if (changeDone) { + break; + } + + // axisswap order=2,1 followed by itself is a no-op + if (curStep.name == "axisswap" && prevStep.name == "axisswap" && + curStepParamCount == 1 && prevStepParamCount == 1 && + curStep.paramValues[0].equals("order", "2,1") && + prevStep.paramValues[0].equals("order", "2,1")) { + ++iterCur; + d->steps_.erase(iterPrev, iterCur); + changeDone = true; + break; + } + + // for practical purposes WGS84 and GRS80 ellipsoids are + // equivalents (cartesian transform between both lead to differences + // of the order of 1e-14 deg..). + // No need to do a cart roundtrip for that... + // and actually IGNF uses the GRS80 definition for the WGS84 datum + if (curStep.name == "cart" && prevStep.name == "cart" && + curStep.inverted == !prevStep.inverted && + curStepParamCount == 1 && prevStepParamCount == 1 && + ((curStep.paramValues[0].equals("ellps", "WGS84") && + prevStep.paramValues[0].equals("ellps", "GRS80")) || + (curStep.paramValues[0].equals("ellps", "GRS80") && + prevStep.paramValues[0].equals("ellps", "WGS84")))) { + ++iterCur; + d->steps_.erase(iterPrev, iterCur); + changeDone = true; + break; + } + + if (curStep.name == "helmert" && prevStep.name == "helmert" && + !curStep.inverted && !prevStep.inverted && + curStepParamCount == 3 && + curStepParamCount == prevStepParamCount) { + std::map<std::string, double> leftParamsMap; + std::map<std::string, double> rightParamsMap; + try { + for (const auto &kv : prevStep.paramValues) { + leftParamsMap[kv.key] = c_locale_stod(kv.value); + } + for (const auto &kv : curStep.paramValues) { + rightParamsMap[kv.key] = c_locale_stod(kv.value); + } + } catch (const std::invalid_argument &) { + break; + } + const std::string x("x"); + const std::string y("y"); + const std::string z("z"); + if (leftParamsMap.find(x) != leftParamsMap.end() && + leftParamsMap.find(y) != leftParamsMap.end() && + leftParamsMap.find(z) != leftParamsMap.end() && + rightParamsMap.find(x) != rightParamsMap.end() && + rightParamsMap.find(y) != rightParamsMap.end() && + rightParamsMap.find(z) != rightParamsMap.end()) { + + const double xSum = leftParamsMap[x] + rightParamsMap[x]; + const double ySum = leftParamsMap[y] + rightParamsMap[y]; + const double zSum = leftParamsMap[z] + rightParamsMap[z]; + if (xSum == 0.0 && ySum == 0.0 && zSum == 0.0) { + ++iterCur; + d->steps_.erase(iterPrev, iterCur); + } else { + prevStep.paramValues[0] = + Step::KeyValue("x", internal::toString(xSum)); + prevStep.paramValues[1] = + Step::KeyValue("y", internal::toString(ySum)); + prevStep.paramValues[2] = + Step::KeyValue("z", internal::toString(zSum)); + + d->steps_.erase(iterCur); + } + changeDone = true; + break; + } + } + + // hermert followed by its inverse is a no-op + if (curStep.name == "helmert" && prevStep.name == "helmert" && + !curStep.inverted && !prevStep.inverted && + curStepParamCount == prevStepParamCount) { + std::set<std::string> leftParamsSet; + std::set<std::string> rightParamsSet; + std::map<std::string, std::string> leftParamsMap; + std::map<std::string, std::string> rightParamsMap; + for (const auto &kv : prevStep.paramValues) { + leftParamsSet.insert(kv.key); + leftParamsMap[kv.key] = kv.value; + } + for (const auto &kv : curStep.paramValues) { + rightParamsSet.insert(kv.key); + rightParamsMap[kv.key] = kv.value; + } + if (leftParamsSet == rightParamsSet) { + bool doErase = true; + try { + for (const auto ¶m : leftParamsSet) { + if (param == "convention" || param == "t_epoch" || + param == "t_obs") { + if (leftParamsMap[param] != + rightParamsMap[param]) { + doErase = false; + break; + } + } else if (c_locale_stod(leftParamsMap[param]) != + -c_locale_stod(rightParamsMap[param])) { + doErase = false; + break; + } + } + } catch (const std::invalid_argument &) { + break; + } + if (doErase) { + ++iterCur; + d->steps_.erase(iterPrev, iterCur); + changeDone = true; + break; + } + } + } + + // detect a step and its inverse + if (curStep.inverted != prevStep.inverted && + curStep.name == prevStep.name && + curStepParamCount == prevStepParamCount) { + bool allSame = true; + for (size_t j = 0; j < curStepParamCount; j++) { + if (curStep.paramValues[j] != prevStep.paramValues[j]) { + allSame = false; + break; + } + } + if (allSame) { + ++iterCur; + d->steps_.erase(iterPrev, iterCur); + changeDone = true; + break; + } + } + } + } while (changeDone); + + if (d->steps_.size() > 1 || + (d->steps_.size() == 1 && + (d->steps_.front().inverted || !d->globalParamValues_.empty()))) { + d->appendToResult("+proj=pipeline"); + + for (const auto ¶mValue : d->globalParamValues_) { + d->appendToResult("+"); + d->result_ += paramValue.key; + if (!paramValue.value.empty()) { + d->result_ += "="; + d->result_ += paramValue.value; + } + } + } + + for (const auto &step : d->steps_) { + if (!d->result_.empty()) { + d->appendToResult("+step"); + } + if (step.inverted) { + d->appendToResult("+inv"); + } + if (!step.name.empty()) { + d->appendToResult(step.isInit ? "+init=" : "+proj="); + d->result_ += step.name; + } + for (const auto ¶mValue : step.paramValues) { + d->appendToResult("+"); + d->result_ += paramValue.key; + if (!paramValue.value.empty()) { + d->result_ += "="; + d->result_ += paramValue.value; + } + } + } + return d->result_; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +PROJStringFormatter::Convention PROJStringFormatter::convention() const { + return d->convention_; +} + +// --------------------------------------------------------------------------- + +bool PROJStringFormatter::getUseETMercForTMerc() const { + return d->useETMercForTMerc_; +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::Private::appendToResult(const char *str) { + if (!result_.empty()) { + result_ += " "; + } + result_ += str; +} + +// --------------------------------------------------------------------------- + +static void +PROJStringSyntaxParser(const std::string &projString, std::vector<Step> &steps, + std::vector<Step::KeyValue> &globalParamValues, + std::string &title, std::string &vunits, + std::string &vto_meter) { + std::string word; + std::istringstream iss(projString, std::istringstream::in); + bool inverted = false; + bool prevWasStep = false; + bool inProj = false; + bool inPipeline = false; + bool prevWasTitle = false; + bool prevWasInit = false; + + while (iss >> word) { + if (word[0] == '+') { + word = word.substr(1); + } else if (prevWasTitle && word.find('=') == std::string::npos) { + title += " "; + title += word; + continue; + } + + prevWasTitle = false; + if (word == "proj=pipeline") { + if (inPipeline) { + throw ParsingException("nested pipeline not supported"); + } + inverted = false; + prevWasStep = false; + inProj = true; + inPipeline = true; + } else if (word == "step") { + if (!inPipeline) { + throw ParsingException("+step found outside pipeline"); + } + inverted = false; + prevWasStep = true; + prevWasInit = false; + } else if (word == "inv") { + if (prevWasStep) { + inverted = true; + } else { + if (steps.empty()) { + throw ParsingException("+inv found at unexpected place"); + } + steps.back().inverted = true; + } + prevWasStep = false; + } else if (starts_with(word, "proj=")) { + if (prevWasInit) { + throw ParsingException("+init= found at unexpected place"); + } + auto stepName = word.substr(strlen("proj=")); + steps.push_back(Step()); + steps.back().name = stepName; + steps.back().inverted = inverted; + prevWasStep = false; + inProj = true; + } else if (starts_with(word, "init=")) { + if (prevWasInit) { + throw ParsingException("+init= found at unexpected place"); + } + auto initName = word.substr(strlen("init=")); + steps.push_back(Step()); + steps.back().name = initName; + steps.back().isInit = true; + steps.back().inverted = inverted; + prevWasStep = false; + prevWasInit = true; + inProj = true; + } else if (inProj) { + const auto pos = word.find('='); + auto key = word.substr(0, pos); + auto pair = (pos != std::string::npos) + ? Step::KeyValue(key, word.substr(pos + 1)) + : Step::KeyValue(key); + if (steps.empty()) { + globalParamValues.push_back(pair); + } else { + steps.back().paramValues.push_back(pair); + } + prevWasStep = false; + } else if (starts_with(word, "vunits=")) { + vunits = word.substr(strlen("vunits=")); + } else if (starts_with(word, "vto_meter=")) { + vto_meter = word.substr(strlen("vto_meter=")); + } else if (starts_with(word, "title=")) { + title = word.substr(strlen("title=")); + prevWasTitle = true; + } else { + throw ParsingException("Unexpected token: " + word); + } + } +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::ingestPROJString( + const std::string &str) // throw ParsingException +{ + std::vector<Step> steps; + std::string title; + std::string vunits; + std::string vto_meter; + PROJStringSyntaxParser(str, steps, d->globalParamValues_, title, vunits, + vto_meter); + d->steps_.insert(d->steps_.begin(), steps.begin(), steps.end()); +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::startInversion() { + PROJStringFormatter::Private::InversionStackElt elt; + elt.startIter = d->steps_.end(); + if (elt.startIter != d->steps_.begin()) { + elt.iterValid = true; + --elt.startIter; // point to the last valid element + } else { + elt.iterValid = false; + } + elt.currentInversionState = + !d->inversionStack_.back().currentInversionState; + d->inversionStack_.push_back(elt); +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::stopInversion() { + assert(!d->inversionStack_.empty()); + auto startIter = d->inversionStack_.back().startIter; + if (!d->inversionStack_.back().iterValid) { + startIter = d->steps_.begin(); + } else { + ++startIter; // advance after the last valid element we marked above + } + // Invert the inversion status of the steps between the start point and + // the current end of steps + for (auto iter = startIter; iter != d->steps_.end(); ++iter) { + iter->inverted = !iter->inverted; + } + // And reverse the order of steps in that range as well. + std::reverse(startIter, d->steps_.end()); + d->inversionStack_.pop_back(); +} + +// --------------------------------------------------------------------------- + +bool PROJStringFormatter::isInverted() const { + return d->inversionStack_.back().currentInversionState; +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::Private::addStep() { steps_.emplace_back(Step()); } + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::addStep(const char *stepName) { + d->addStep(); + d->steps_.back().name.assign(stepName); +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::addStep(const std::string &stepName) { + d->addStep(); + d->steps_.back().name = stepName; +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::setCurrentStepInverted(bool inverted) { + assert(!d->steps_.empty()); + d->steps_.back().inverted = inverted; +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::addParam(const std::string ¶mName) { + if (d->steps_.empty()) { + d->addStep(); + } + d->steps_.back().paramValues.push_back(Step::KeyValue(paramName)); +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::addParam(const char *paramName, int val) { + addParam(std::string(paramName), val); +} + +void PROJStringFormatter::addParam(const std::string ¶mName, int val) { + addParam(paramName, internal::toString(val)); +} + +// --------------------------------------------------------------------------- + +static std::string formatToString(double val) { + if (std::abs(val * 10 - std::round(val * 10)) < 1e-8) { + // For the purpose of + // https://www.epsg-registry.org/export.htm?wkt=urn:ogc:def:crs:EPSG::27561 + // Latitude of natural of origin to be properly rounded from 55 grad + // to + // 49.5 deg + val = std::round(val * 10) / 10; + } + return normalizeSerializedString(internal::toString(val)); +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::addParam(const char *paramName, double val) { + addParam(std::string(paramName), val); +} + +void PROJStringFormatter::addParam(const std::string ¶mName, double val) { + addParam(paramName, formatToString(val)); +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::addParam(const char *paramName, + const std::vector<double> &vals) { + std::string paramValue; + for (size_t i = 0; i < vals.size(); ++i) { + if (i > 0) { + paramValue += ","; + } + paramValue += formatToString(vals[i]); + } + addParam(paramName, paramValue); +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::addParam(const char *paramName, const char *val) { + addParam(std::string(paramName), val); +} + +void PROJStringFormatter::addParam(const char *paramName, + const std::string &val) { + addParam(std::string(paramName), val); +} + +void PROJStringFormatter::addParam(const std::string ¶mName, + const char *val) { + addParam(paramName, std::string(val)); +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::addParam(const std::string ¶mName, + const std::string &val) { + if (d->steps_.empty()) { + d->addStep(); + } + d->steps_.back().paramValues.push_back(Step::KeyValue(paramName, val)); +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::setTOWGS84Parameters( + const std::vector<double> ¶ms) { + d->toWGS84Parameters_ = params; +} + +// --------------------------------------------------------------------------- + +const std::vector<double> &PROJStringFormatter::getTOWGS84Parameters() const { + return d->toWGS84Parameters_; +} + +// --------------------------------------------------------------------------- + +std::set<std::string> PROJStringFormatter::getUsedGridNames() const { + std::set<std::string> res; + for (const auto &step : d->steps_) { + for (const auto ¶m : step.paramValues) { + if (param.keyEquals("grids")) { + res.insert(param.value); + } + } + } + return res; +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::setVDatumExtension(const std::string &filename) { + d->vDatumExtension_ = filename; +} + +// --------------------------------------------------------------------------- + +const std::string &PROJStringFormatter::getVDatumExtension() const { + return d->vDatumExtension_; +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::setHDatumExtension(const std::string &filename) { + d->hDatumExtension_ = filename; +} + +// --------------------------------------------------------------------------- + +const std::string &PROJStringFormatter::getHDatumExtension() const { + return d->hDatumExtension_; +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::setOmitProjLongLatIfPossible(bool omit) { + assert(d->omitProjLongLatIfPossible_ ^ omit); + d->omitProjLongLatIfPossible_ = omit; +} + +// --------------------------------------------------------------------------- + +bool PROJStringFormatter::omitProjLongLatIfPossible() const { + return d->omitProjLongLatIfPossible_; +} + +// --------------------------------------------------------------------------- + +void PROJStringFormatter::setOmitZUnitConversion(bool omit) { + assert(d->omitZUnitConversion_ ^ omit); + d->omitZUnitConversion_ = omit; +} + +// --------------------------------------------------------------------------- + +bool PROJStringFormatter::omitZUnitConversion() const { + return d->omitZUnitConversion_; +} + +// --------------------------------------------------------------------------- + +const DatabaseContextPtr &PROJStringFormatter::databaseContext() const { + return d->dbContext_; +} + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +struct PROJStringParser::Private { + DatabaseContextPtr dbContext_{}; + std::vector<std::string> warningList_{}; + + std::vector<Step> steps_{}; + std::vector<Step::KeyValue> globalParamValues_{}; + std::string title_{}; + + template <class T> + // cppcheck-suppress functionStatic + bool hasParamValue(const Step &step, const T key) { + for (const auto &pair : globalParamValues_) { + if (ci_equal(pair.key, key)) { + return true; + } + } + for (const auto &pair : step.paramValues) { + if (ci_equal(pair.key, key)) { + return true; + } + } + return false; + } + + template <class T> + // cppcheck-suppress functionStatic + const std::string &getParamValue(const Step &step, const T key) { + for (const auto &pair : globalParamValues_) { + if (ci_equal(pair.key, key)) { + return pair.value; + } + } + for (const auto &pair : step.paramValues) { + if (ci_equal(pair.key, key)) { + return pair.value; + } + } + return emptyString; + } + + // cppcheck-suppress functionStatic + std::string guessBodyName(double a); + + PrimeMeridianNNPtr buildPrimeMeridian(const Step &step); + GeodeticReferenceFrameNNPtr buildDatum(const Step &step, + const std::string &title); + GeographicCRSNNPtr buildGeographicCRS(int iStep, int iUnitConvert, + int iAxisSwap, bool ignoreVUnits, + bool ignorePROJAxis); + GeodeticCRSNNPtr buildGeocentricCRS(int iStep, int iUnitConvert); + CRSNNPtr buildProjectedCRS(int iStep, GeographicCRSNNPtr geogCRS, + int iUnitConvert, int iAxisSwap); + CRSNNPtr buildBoundOrCompoundCRSIfNeeded(int iStep, CRSNNPtr crs); + UnitOfMeasure buildUnit(const Step &step, const std::string &unitsParamName, + const std::string &toMeterParamName); + CoordinateOperationNNPtr buildHelmertTransformation( + int iStep, int iFirstAxisSwap = -1, int iFirstUnitConvert = -1, + int iFirstGeogStep = -1, int iSecondGeogStep = -1, + int iSecondAxisSwap = -1, int iSecondUnitConvert = -1); + CoordinateOperationNNPtr buildMolodenskyTransformation( + int iStep, int iFirstAxisSwap = -1, int iFirstUnitConvert = -1, + int iFirstGeogStep = -1, int iSecondGeogStep = -1, + int iSecondAxisSwap = -1, int iSecondUnitConvert = -1); + + enum class AxisType { REGULAR, NORTH_POLE, SOUTH_POLE }; + + std::vector<CoordinateSystemAxisNNPtr> + processAxisSwap(const Step &step, const UnitOfMeasure &unit, int iAxisSwap, + AxisType axisType, bool ignorePROJAxis); + + EllipsoidalCSNNPtr buildEllipsoidalCS(int iStep, int iUnitConvert, + int iAxisSwap, bool ignoreVUnits, + bool ignorePROJAxis); +}; + +// --------------------------------------------------------------------------- + +PROJStringParser::PROJStringParser() : d(internal::make_unique<Private>()) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +PROJStringParser::~PROJStringParser() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Attach a database context, to allow queries in it if needed. + */ +PROJStringParser & +PROJStringParser::attachDatabaseContext(const DatabaseContextPtr &dbContext) { + d->dbContext_ = dbContext; + return *this; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the list of warnings found during parsing. + */ +std::vector<std::string> PROJStringParser::warningList() const { + return d->warningList_; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +// --------------------------------------------------------------------------- + +static const struct LinearUnitDesc { + const char *projName; + const char *convToMeter; + const char *name; + int epsgCode; +} linearUnitDescs[] = { + {"mm", "0.001", "millimetre", 1025}, + {"cm", "0.01", "centimetre", 1033}, + {"m", "1.0", "metre", 9001}, + {"meter", "1.0", "metre", 9001}, // alternative + {"metre", "1.0", "metre", 9001}, // alternative + {"ft", "0.3048", "foot", 9002}, + {"us-ft", "0.3048006096012192", "US survey foot", 9003}, + {"fath", "1.8288", "fathom", 9014}, + {"kmi", "1852", "nautical mile", 9030}, + {"us-ch", "20.11684023368047", "US survey chain", 9033}, + {"us-mi", "1609.347218694437", "US survey mile", 9035}, + {"km", "1000.0", "kilometre", 9036}, + {"ind-ft", "0.30479841", "Indian foot (1937)", 9081}, + {"ind-yd", "0.91439523", "Indian yard (1937)", 9085}, + {"mi", "1609.344", "Statute mile", 9093}, + {"yd", "0.9144", "yard", 9096}, + {"ch", "20.1168", "chain", 9097}, + {"link", "0.201168", "link", 9098}, + {"dm", "0.1", "decimetre", 0}, // no EPSG equivalent + {"in", "0.0254", "inch", 0}, // no EPSG equivalent + {"us-in", "0.025400050800101", "US survey inch", 0}, // no EPSG equivalent + {"us-yd", "0.914401828803658", "US survey yard", 0}, // no EPSG equivalent + {"ind-ch", "20.11669506", "Indian chain", 0}, // no EPSG equivalent +}; + +static const LinearUnitDesc *getLinearUnits(const std::string &projName) { + for (const auto &desc : linearUnitDescs) { + if (desc.projName == projName) + return &desc; + } + return nullptr; +} + +static const LinearUnitDesc *getLinearUnits(double toMeter) { + for (const auto &desc : linearUnitDescs) { + if (std::fabs(c_locale_stod(desc.convToMeter) - toMeter) < + 1e-10 * toMeter) { + return &desc; + } + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +static UnitOfMeasure _buildUnit(const LinearUnitDesc *unitsMatch) { + std::string unitsCode; + if (unitsMatch->epsgCode) { + std::ostringstream buffer; + buffer.imbue(std::locale::classic()); + buffer << unitsMatch->epsgCode; + unitsCode = buffer.str(); + } + return UnitOfMeasure( + unitsMatch->name, c_locale_stod(unitsMatch->convToMeter), + UnitOfMeasure::Type::LINEAR, + unitsMatch->epsgCode ? Identifier::EPSG : std::string(), unitsCode); +} + +// --------------------------------------------------------------------------- + +static UnitOfMeasure _buildUnit(double to_meter_value) { + // TODO: look-up in EPSG catalog + return UnitOfMeasure("unknown", to_meter_value, + UnitOfMeasure::Type::LINEAR); +} + +// --------------------------------------------------------------------------- + +UnitOfMeasure +PROJStringParser::Private::buildUnit(const Step &step, + const std::string &unitsParamName, + const std::string &toMeterParamName) { + UnitOfMeasure unit = UnitOfMeasure::METRE; + const LinearUnitDesc *unitsMatch = nullptr; + const auto &projUnits = getParamValue(step, unitsParamName); + if (!projUnits.empty()) { + unitsMatch = getLinearUnits(projUnits); + if (unitsMatch == nullptr) { + throw ParsingException("unhandled " + unitsParamName + "=" + + projUnits); + } + } + + const auto &toMeter = getParamValue(step, toMeterParamName); + if (!toMeter.empty()) { + double to_meter_value; + try { + to_meter_value = c_locale_stod(toMeter); + } catch (const std::invalid_argument &) { + throw ParsingException("invalid value for " + toMeterParamName); + } + unitsMatch = getLinearUnits(to_meter_value); + if (unitsMatch == nullptr) { + unit = _buildUnit(to_meter_value); + } + } + + if (unitsMatch) { + unit = _buildUnit(unitsMatch); + } + + return unit; +} + +// --------------------------------------------------------------------------- + +static const struct DatumDesc { + const char *projName; + const char *gcsName; + int gcsCode; + const char *datumName; + int datumCode; + const char *ellipsoidName; + int ellipsoidCode; + double a; + double rf; +} datumDescs[] = { + {"GGRS87", "GGRS87", 4121, "Greek Geodetic Reference System 1987", 6121, + "GRS 1980", 7019, 6378137, 298.257222101}, + {"postdam", "DHDN", 4314, "Deutsches Hauptdreiecksnetz", 6314, + "Bessel 1841", 7004, 6377397.155, 299.1528128}, + {"carthage", "Carthage", 4223, "Carthage", 6223, "Clarke 1880 (IGN)", 7011, + 6378249.2, 293.4660213}, + {"hermannskogel", "MGI", 4312, "Militar-Geographische Institut", 6312, + "Bessel 1841", 7004, 6377397.155, 299.1528128}, + {"ire65", "TM65", 4299, "TM65", 6299, "Airy Modified 1849", 7002, + 6377340.189, 299.3249646}, + {"nzgd49", "NZGD49", 4272, "New Zealand Geodetic Datum 1949", 6272, + "International 1924", 7022, 6378388, 297}, + {"OSGB36", "OSGB 1936", 4277, "OSGB 1936", 6277, "Airy 1830", 7001, + 6377563.396, 299.3249646}, +}; + +// --------------------------------------------------------------------------- + +static bool isGeodeticStep(const std::string &name) { + return name == "longlat" || name == "lonlat" || name == "latlong" || + name == "latlon"; +} + +// --------------------------------------------------------------------------- + +static bool isGeocentricStep(const std::string &name) { + return name == "geocent" || name == "cart"; +} + +// --------------------------------------------------------------------------- + +static bool isProjectedStep(const std::string &name) { + if (name == "etmerc" || name == "utm" || + !getMappingsFromPROJName(name).empty()) { + return true; + } + // IMPROVE ME: have a better way of distinguishing projections from + // other + // transformations. + if (name == "pipeline" || name == "geoc" || name == "deformation" || + name == "helmert" || name == "hgridshift" || name == "molodensky" || + name == "vgridshit") { + return false; + } + const auto *operations = proj_list_operations(); + for (int i = 0; operations[i].id != nullptr; ++i) { + if (name == operations[i].id) { + return true; + } + } + return false; +} + +// --------------------------------------------------------------------------- + +static PropertyMap createMapWithUnknownName() { + return PropertyMap().set(common::IdentifiedObject::NAME_KEY, "unknown"); +} + +// --------------------------------------------------------------------------- + +PrimeMeridianNNPtr +PROJStringParser::Private::buildPrimeMeridian(const Step &step) { + + PrimeMeridianNNPtr pm = PrimeMeridian::GREENWICH; + const auto &pmStr = getParamValue(step, "pm"); + if (!pmStr.empty()) { + try { + double pmValue = c_locale_stod(pmStr); + pm = PrimeMeridian::create(createMapWithUnknownName(), + Angle(pmValue)); + } catch (const std::invalid_argument &) { + bool found = false; + if (pmStr == "paris") { + found = true; + pm = PrimeMeridian::PARIS; + } + auto proj_prime_meridians = proj_list_prime_meridians(); + for (int i = 0; !found && proj_prime_meridians[i].id != nullptr; + i++) { + if (pmStr == proj_prime_meridians[i].id) { + found = true; + std::string name = static_cast<char>(::toupper(pmStr[0])) + + pmStr.substr(1); + double pmValue = + dmstor(proj_prime_meridians[i].defn, nullptr) * + RAD_TO_DEG; + pm = PrimeMeridian::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, name), + Angle(pmValue)); + break; + } + } + if (!found) { + throw ParsingException("unknown pm " + pmStr); + } + } + } + return pm; +} + +// --------------------------------------------------------------------------- + +std::string PROJStringParser::Private::guessBodyName(double a) { + return Ellipsoid::guessBodyName(dbContext_, a); +} + +// --------------------------------------------------------------------------- + +GeodeticReferenceFrameNNPtr +PROJStringParser::Private::buildDatum(const Step &step, + const std::string &title) { + + const auto &ellpsStr = getParamValue(step, "ellps"); + const auto &datumStr = getParamValue(step, "datum"); + const auto &aStr = getParamValue(step, "a"); + const auto &bStr = getParamValue(step, "b"); + const auto &rfStr = getParamValue(step, "rf"); + const auto &RStr = getParamValue(step, "R"); + const util::optional<std::string> optionalEmptyString{}; + + PrimeMeridianNNPtr pm(buildPrimeMeridian(step)); + PropertyMap grfMap; + + if (!datumStr.empty()) { + if (datumStr == "WGS84") { + return GeodeticReferenceFrame::EPSG_6326; + } else if (datumStr == "NAD83") { + return GeodeticReferenceFrame::EPSG_6269; + } else if (datumStr == "NAD27") { + return GeodeticReferenceFrame::EPSG_6267; + } else { + + for (const auto &datumDesc : datumDescs) { + if (datumStr == datumDesc.projName) { + (void)datumDesc.gcsName; // to please cppcheck + (void)datumDesc.gcsCode; // to please cppcheck + auto ellipsoid = Ellipsoid::createFlattenedSphere( + grfMap + .set(IdentifiedObject::NAME_KEY, + datumDesc.ellipsoidName) + .set(Identifier::CODESPACE_KEY, Identifier::EPSG) + .set(Identifier::CODE_KEY, datumDesc.ellipsoidCode), + Length(datumDesc.a), Scale(datumDesc.rf)); + return GeodeticReferenceFrame::create( + grfMap + .set(IdentifiedObject::NAME_KEY, + datumDesc.datumName) + .set(Identifier::CODESPACE_KEY, Identifier::EPSG) + .set(Identifier::CODE_KEY, datumDesc.datumCode), + ellipsoid, optionalEmptyString, pm); + } + } + } + throw ParsingException("unknown datum " + datumStr); + } + + else if (!ellpsStr.empty()) { + if (ellpsStr == "WGS84") { + return GeodeticReferenceFrame::create( + grfMap.set(IdentifiedObject::NAME_KEY, + title.empty() ? "Unknown based on WGS84 ellipsoid" + : title.c_str()), + Ellipsoid::WGS84, optionalEmptyString, pm); + } else if (ellpsStr == "GRS80") { + return GeodeticReferenceFrame::create( + grfMap.set(IdentifiedObject::NAME_KEY, + title.empty() ? "Unknown based on GRS80 ellipsoid" + : title.c_str()), + Ellipsoid::GRS1980, optionalEmptyString, pm); + } else { + auto proj_ellps = proj_list_ellps(); + for (int i = 0; proj_ellps[i].id != nullptr; i++) { + if (ellpsStr == proj_ellps[i].id) { + assert(strncmp(proj_ellps[i].major, "a=", 2) == 0); + const double a_iter = + c_locale_stod(proj_ellps[i].major + 2); + EllipsoidPtr ellipsoid; + PropertyMap ellpsMap; + if (strncmp(proj_ellps[i].ell, "b=", 2) == 0) { + const double b_iter = + c_locale_stod(proj_ellps[i].ell + 2); + ellipsoid = Ellipsoid::createTwoAxis( + ellpsMap.set(IdentifiedObject::NAME_KEY, + proj_ellps[i].name), + Length(a_iter), Length(b_iter)) + .as_nullable(); + } else { + assert(strncmp(proj_ellps[i].ell, "rf=", 3) == 0); + const double rf_iter = + c_locale_stod(proj_ellps[i].ell + 3); + ellipsoid = Ellipsoid::createFlattenedSphere( + ellpsMap.set(IdentifiedObject::NAME_KEY, + proj_ellps[i].name), + Length(a_iter), Scale(rf_iter)) + .as_nullable(); + } + return GeodeticReferenceFrame::create( + grfMap.set(IdentifiedObject::NAME_KEY, + title.empty() + ? std::string("Unknown based on ") + + proj_ellps[i].name + " ellipsoid" + : title), + NN_NO_CHECK(ellipsoid), optionalEmptyString, pm); + } + } + throw ParsingException("unknown ellipsoid " + ellpsStr); + } + } + + else if (!aStr.empty() && !bStr.empty()) { + double a; + try { + a = c_locale_stod(aStr); + } catch (const std::invalid_argument &) { + throw ParsingException("Invalid a value"); + } + double b; + try { + b = c_locale_stod(bStr); + } catch (const std::invalid_argument &) { + throw ParsingException("Invalid b value"); + } + auto ellipsoid = + Ellipsoid::createTwoAxis(createMapWithUnknownName(), Length(a), + Length(b), guessBodyName(a)) + ->identify(); + return GeodeticReferenceFrame::create( + grfMap.set(IdentifiedObject::NAME_KEY, + title.empty() ? "unknown" : title.c_str()), + ellipsoid, optionalEmptyString, fixupPrimeMeridan(ellipsoid, pm)); + } + + else if (!aStr.empty() && !rfStr.empty()) { + double a; + try { + a = c_locale_stod(aStr); + } catch (const std::invalid_argument &) { + throw ParsingException("Invalid a value"); + } + double rf; + try { + rf = c_locale_stod(rfStr); + } catch (const std::invalid_argument &) { + throw ParsingException("Invalid rf value"); + } + auto ellipsoid = Ellipsoid::createFlattenedSphere( + createMapWithUnknownName(), Length(a), Scale(rf), + guessBodyName(a)) + ->identify(); + return GeodeticReferenceFrame::create( + grfMap.set(IdentifiedObject::NAME_KEY, + title.empty() ? "unknown" : title.c_str()), + ellipsoid, optionalEmptyString, fixupPrimeMeridan(ellipsoid, pm)); + } + + else if (!RStr.empty()) { + double R; + try { + R = c_locale_stod(RStr); + } catch (const std::invalid_argument &) { + throw ParsingException("Invalid R value"); + } + auto ellipsoid = Ellipsoid::createSphere(createMapWithUnknownName(), + Length(R), guessBodyName(R)); + return GeodeticReferenceFrame::create( + grfMap.set(IdentifiedObject::NAME_KEY, + title.empty() ? "unknown" : title.c_str()), + ellipsoid, optionalEmptyString, fixupPrimeMeridan(ellipsoid, pm)); + } + + if (!aStr.empty() && bStr.empty() && rfStr.empty()) { + throw ParsingException("a found, but b or rf missing"); + } + + if (!bStr.empty() && aStr.empty()) { + throw ParsingException("b found, but a missing"); + } + + if (!rfStr.empty() && aStr.empty()) { + throw ParsingException("rf found, but a missing"); + } + + if (pm->_isEquivalentTo(PrimeMeridian::GREENWICH.get())) { + return GeodeticReferenceFrame::EPSG_6326; + } else { + return GeodeticReferenceFrame::create( + grfMap.set(IdentifiedObject::NAME_KEY, + "Unknown based on WGS84 ellipsoid"), + Ellipsoid::WGS84, optionalEmptyString, pm); + } +} + +// --------------------------------------------------------------------------- + +static const MeridianPtr nullMeridian{}; + +static CoordinateSystemAxisNNPtr +createAxis(const std::string &name, const std::string &abbreviation, + const AxisDirection &direction, const common::UnitOfMeasure &unit, + const MeridianPtr &meridian = nullMeridian) { + return CoordinateSystemAxis::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, name), abbreviation, + direction, unit, meridian); +} + +std::vector<CoordinateSystemAxisNNPtr> +PROJStringParser::Private::processAxisSwap(const Step &step, + const UnitOfMeasure &unit, + int iAxisSwap, AxisType axisType, + bool ignorePROJAxis) { + assert(iAxisSwap < 0 || ci_equal(steps_[iAxisSwap].name, "axisswap")); + + const bool isGeographic = unit.type() == UnitOfMeasure::Type::ANGULAR; + const auto &eastName = + isGeographic ? AxisName::Longitude : AxisName::Easting; + const auto &eastAbbev = + isGeographic ? AxisAbbreviation::lon : AxisAbbreviation::E; + const auto &eastDir = isGeographic + ? AxisDirection::EAST + : (axisType == AxisType::NORTH_POLE) + ? AxisDirection::SOUTH + : (axisType == AxisType::SOUTH_POLE) + ? AxisDirection::NORTH + : AxisDirection::EAST; + CoordinateSystemAxisNNPtr east = createAxis( + eastName, eastAbbev, eastDir, unit, + (!isGeographic && + (axisType == AxisType::NORTH_POLE || axisType == AxisType::SOUTH_POLE)) + ? Meridian::create(Angle(90, UnitOfMeasure::DEGREE)).as_nullable() + : nullMeridian); + + const auto &northName = + isGeographic ? AxisName::Latitude : AxisName::Northing; + const auto &northAbbev = + isGeographic ? AxisAbbreviation::lat : AxisAbbreviation::N; + const auto &northDir = isGeographic + ? AxisDirection::NORTH + : (axisType == AxisType::NORTH_POLE) + ? AxisDirection::SOUTH + : (axisType == AxisType::SOUTH_POLE) + ? AxisDirection::NORTH + : AxisDirection::NORTH; + CoordinateSystemAxisNNPtr north = createAxis( + northName, northAbbev, northDir, unit, + (!isGeographic && axisType == AxisType::NORTH_POLE) + ? Meridian::create(Angle(180, UnitOfMeasure::DEGREE)).as_nullable() + : (!isGeographic && axisType == AxisType::SOUTH_POLE) + ? Meridian::create(Angle(0, UnitOfMeasure::DEGREE)) + .as_nullable() + : nullMeridian); + + CoordinateSystemAxisNNPtr west = + createAxis(isGeographic ? AxisName::Longitude : AxisName::Westing, + isGeographic ? AxisAbbreviation::lon : std::string(), + AxisDirection::WEST, unit); + + CoordinateSystemAxisNNPtr south = + createAxis(isGeographic ? AxisName::Latitude : AxisName::Southing, + isGeographic ? AxisAbbreviation::lat : std::string(), + AxisDirection::SOUTH, unit); + + std::vector<CoordinateSystemAxisNNPtr> axis{east, north}; + + const auto &axisStr = getParamValue(step, "axis"); + if (!ignorePROJAxis && !axisStr.empty()) { + if (axisStr.size() == 3) { + for (int i = 0; i < 2; i++) { + if (axisStr[i] == 'n') { + axis[i] = north; + } else if (axisStr[i] == 's') { + axis[i] = south; + } else if (axisStr[i] == 'e') { + axis[i] = east; + } else if (axisStr[i] == 'w') { + axis[i] = west; + } else { + throw ParsingException("Unhandled axis=" + axisStr); + } + } + } else { + throw ParsingException("Unhandled axis=" + axisStr); + } + } else if (iAxisSwap >= 0) { + const auto &stepAxisSwap = steps_[iAxisSwap]; + const auto &orderStr = getParamValue(stepAxisSwap, "order"); + auto orderTab = split(orderStr, ','); + if (orderTab.size() != 2) { + throw ParsingException("Unhandled order=" + orderStr); + } + if (stepAxisSwap.inverted) { + throw ParsingException("Unhandled +inv for +proj=axisswap"); + } + + for (size_t i = 0; i < 2; i++) { + if (orderTab[i] == "1") { + axis[i] = east; + } else if (orderTab[i] == "-1") { + axis[i] = west; + } else if (orderTab[i] == "2") { + axis[i] = north; + } else if (orderTab[i] == "-2") { + axis[i] = south; + } else { + throw ParsingException("Unhandled order=" + orderStr); + } + } + } + return axis; +} + +// --------------------------------------------------------------------------- + +EllipsoidalCSNNPtr +PROJStringParser::Private::buildEllipsoidalCS(int iStep, int iUnitConvert, + int iAxisSwap, bool ignoreVUnits, + bool ignorePROJAxis) { + const auto &step = steps_[iStep]; + assert(iUnitConvert < 0 || + ci_equal(steps_[iUnitConvert].name, "unitconvert")); + + UnitOfMeasure angularUnit = UnitOfMeasure::DEGREE; + if (iUnitConvert >= 0) { + const auto &stepUnitConvert = steps_[iUnitConvert]; + const std::string *xy_in = &getParamValue(stepUnitConvert, "xy_in"); + const std::string *xy_out = &getParamValue(stepUnitConvert, "xy_out"); + if (stepUnitConvert.inverted) { + std::swap(xy_in, xy_out); + } + if (iUnitConvert < iStep) { + std::swap(xy_in, xy_out); + } + if (xy_in->empty() || xy_out->empty() || *xy_in != "rad" || + (*xy_out != "rad" && *xy_out != "deg" && *xy_out != "grad")) { + throw ParsingException("unhandled values for xy_in and/or xy_out"); + } + if (*xy_out == "rad") { + angularUnit = UnitOfMeasure::RADIAN; + } else if (*xy_out == "grad") { + angularUnit = UnitOfMeasure::GRAD; + } + } + + std::vector<CoordinateSystemAxisNNPtr> axis = processAxisSwap( + step, angularUnit, iAxisSwap, AxisType::REGULAR, ignorePROJAxis); + CoordinateSystemAxisNNPtr up = CoordinateSystemAxis::create( + util::PropertyMap().set(IdentifiedObject::NAME_KEY, + AxisName::Ellipsoidal_height), + AxisAbbreviation::h, AxisDirection::UP, + buildUnit(step, "vunits", "vto_meter")); + + return (!ignoreVUnits && !hasParamValue(step, "geoidgrids") && + (hasParamValue(step, "vunits") || hasParamValue(step, "vto_meter"))) + ? EllipsoidalCS::create(emptyPropertyMap, axis[0], axis[1], up) + : EllipsoidalCS::create(emptyPropertyMap, axis[0], axis[1]); +} + +// --------------------------------------------------------------------------- + +GeographicCRSNNPtr +PROJStringParser::Private::buildGeographicCRS(int iStep, int iUnitConvert, + int iAxisSwap, bool ignoreVUnits, + bool ignorePROJAxis) { + const auto &step = steps_[iStep]; + + const auto &title = isGeodeticStep(step.name) ? title_ : emptyString; + + auto datum = buildDatum(step, title); + + return GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, + title.empty() ? "unknown" : title), + datum, buildEllipsoidalCS(iStep, iUnitConvert, iAxisSwap, ignoreVUnits, + ignorePROJAxis)); +} + +// --------------------------------------------------------------------------- + +GeodeticCRSNNPtr +PROJStringParser::Private::buildGeocentricCRS(int iStep, int iUnitConvert) { + const auto &step = steps_[iStep]; + + assert(isGeocentricStep(step.name)); + assert(iUnitConvert < 0 || + ci_equal(steps_[iUnitConvert].name, "unitconvert")); + + const auto &title = title_; + + auto datum = buildDatum(step, title); + + UnitOfMeasure unit = UnitOfMeasure::METRE; + if (iUnitConvert >= 0) { + const auto &stepUnitConvert = steps_[iUnitConvert]; + const std::string *xy_in = &getParamValue(stepUnitConvert, "xy_in"); + const std::string *xy_out = &getParamValue(stepUnitConvert, "xy_out"); + const std::string *z_in = &getParamValue(stepUnitConvert, "z_in"); + const std::string *z_out = &getParamValue(stepUnitConvert, "z_out"); + if (stepUnitConvert.inverted) { + std::swap(xy_in, xy_out); + std::swap(z_in, z_out); + } + if (xy_in->empty() || xy_out->empty() || *xy_in != "m" || + *z_in != "m" || *xy_out != *z_out) { + throw ParsingException( + "unhandled values for xy_in, z_in, xy_out or z_out"); + } + + const LinearUnitDesc *unitsMatch = nullptr; + try { + double to_meter_value = c_locale_stod(*xy_out); + unitsMatch = getLinearUnits(to_meter_value); + if (unitsMatch == nullptr) { + unit = _buildUnit(to_meter_value); + } + } catch (const std::invalid_argument &) { + unitsMatch = getLinearUnits(*xy_out); + if (!unitsMatch) { + throw ParsingException( + "unhandled values for xy_in, z_in, xy_out or z_out"); + } + unit = _buildUnit(unitsMatch); + } + } + + auto cs = CartesianCS::createGeocentric(unit); + return GeodeticCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, + title.empty() ? "unknown" : title), + datum, cs); +} + +// --------------------------------------------------------------------------- + +CRSNNPtr +PROJStringParser::Private::buildBoundOrCompoundCRSIfNeeded(int iStep, + CRSNNPtr crs) { + const auto &step = steps_[iStep]; + const auto &towgs84 = getParamValue(step, "towgs84"); + if (!towgs84.empty()) { + std::vector<double> towgs84Values; + const auto tokens = split(towgs84, ','); + for (const auto &str : tokens) { + try { + towgs84Values.push_back(c_locale_stod(str)); + } catch (const std::invalid_argument &) { + throw ParsingException("Non numerical value in towgs84 clause"); + } + } + crs = BoundCRS::createFromTOWGS84(crs, towgs84Values); + } + + const auto &nadgrids = getParamValue(step, "nadgrids"); + if (!nadgrids.empty()) { + crs = BoundCRS::createFromNadgrids(crs, nadgrids); + } + + const auto &geoidgrids = getParamValue(step, "geoidgrids"); + if (!geoidgrids.empty()) { + auto vdatum = + VerticalReferenceFrame::create(createMapWithUnknownName()); + + const UnitOfMeasure unit = buildUnit(step, "vunits", "vto_meter"); + + auto vcrs = + VerticalCRS::create(createMapWithUnknownName(), vdatum, + VerticalCS::createGravityRelatedHeight(unit)); + + auto transformation = + Transformation::createGravityRelatedHeightToGeographic3D( + PropertyMap().set(IdentifiedObject::NAME_KEY, + "unknown to WGS84 ellipsoidal height"), + crs, GeographicCRS::EPSG_4979, geoidgrids, + std::vector<PositionalAccuracyNNPtr>()); + auto boundvcrs = + BoundCRS::create(vcrs, GeographicCRS::EPSG_4979, transformation); + + crs = CompoundCRS::create(createMapWithUnknownName(), + std::vector<CRSNNPtr>{crs, boundvcrs}); + } + + return crs; +} + +// --------------------------------------------------------------------------- + +static double getAngularValue(const std::string ¶mValue, + bool *pHasError = nullptr) { + char *endptr = nullptr; + double value = dmstor(paramValue.c_str(), &endptr) * RAD_TO_DEG; + if (value == HUGE_VAL || endptr != paramValue.c_str() + paramValue.size()) { + if (pHasError) + *pHasError = true; + return 0.0; + } + if (pHasError) + *pHasError = false; + return value; +} + +// --------------------------------------------------------------------------- + +static double getNumericValue(const std::string ¶mValue, + bool *pHasError = nullptr) { + try { + double value = c_locale_stod(paramValue); + if (pHasError) + *pHasError = false; + return value; + } catch (const std::invalid_argument &) { + if (pHasError) + *pHasError = true; + return 0.0; + } +} + +// --------------------------------------------------------------------------- + +CRSNNPtr PROJStringParser::Private::buildProjectedCRS( + int iStep, GeographicCRSNNPtr geogCRS, int iUnitConvert, int iAxisSwap) { + auto &step = steps_[iStep]; + auto mappings = getMappingsFromPROJName(step.name); + const MethodMapping *mapping = mappings.empty() ? nullptr : mappings[0]; + + assert(isProjectedStep(step.name)); + assert(iUnitConvert < 0 || + ci_equal(steps_[iUnitConvert].name, "unitconvert")); + + const auto &title = title_; + + if (!buildPrimeMeridian(step)->longitude()._isEquivalentTo( + geogCRS->primeMeridian()->longitude(), + util::IComparable::Criterion::EQUIVALENT)) { + throw ParsingException("inconsistant pm values between projectedCRS " + "and its base geographicalCRS"); + } + + auto axisType = AxisType::REGULAR; + + if (step.name == "tmerc" && getParamValue(step, "axis") == "wsu") { + mapping = + getMapping(EPSG_CODE_METHOD_TRANSVERSE_MERCATOR_SOUTH_ORIENTATED); + } else if (step.name == "etmerc") { + mapping = getMapping(EPSG_CODE_METHOD_TRANSVERSE_MERCATOR); + // TODO: we loose the link to the proj etmerc method here. Add some + // property to Conversion to keep it ? + } else if (step.name == "lcc") { + const auto &lat_0 = getParamValue(step, "lat_0"); + const auto &lat_1 = getParamValue(step, "lat_1"); + const auto &lat_2 = getParamValue(step, "lat_2"); + const auto &k_0 = getParamValue(step, "k_0"); + const auto &k = getParamValue(step, "k"); + if (lat_2.empty() && !lat_0.empty() && !lat_1.empty() && + getAngularValue(lat_0) == getAngularValue(lat_1)) { + mapping = getMapping(EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP); + } else if ((!k_0.empty() && getNumericValue(k_0) != 1.0) || + (!k.empty() && getNumericValue(k) != 1.0)) { + mapping = getMapping( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP_MICHIGAN); + } else { + mapping = getMapping(EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP); + } + } else if (step.name == "aeqd" && hasParamValue(step, "guam")) { + mapping = getMapping(EPSG_CODE_METHOD_GUAM_PROJECTION); + } else if (step.name == "cea" && + !geogCRS->datum()->ellipsoid()->isSphere()) { + mapping = getMapping(EPSG_CODE_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA); + } else if (step.name == "geos" && getParamValue(step, "sweep") == "x") { + mapping = + getMapping(PROJ_WKT2_NAME_METHOD_GEOSTATIONARY_SATELLITE_SWEEP_X); + } else if (step.name == "geos") { + mapping = + getMapping(PROJ_WKT2_NAME_METHOD_GEOSTATIONARY_SATELLITE_SWEEP_Y); + } else if (step.name == "omerc") { + if (hasParamValue(step, "no_uoff") || hasParamValue(step, "no_off")) { + mapping = + getMapping(EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_A); + } else if (hasParamValue(step, "lat_1") && + hasParamValue(step, "lon_1") && + hasParamValue(step, "lat_2") && + hasParamValue(step, "lon_2")) { + mapping = getMapping( + PROJ_WKT2_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_TWO_POINT_NATURAL_ORIGIN); + } else { + mapping = + getMapping(EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B); + } + } else if (step.name == "somerc") { + mapping = + getMapping(EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B); + step.paramValues.emplace_back(Step::KeyValue("alpha", "90")); + step.paramValues.emplace_back(Step::KeyValue("gamma", "90")); + step.paramValues.emplace_back( + Step::KeyValue("lonc", getParamValue(step, "lon_0"))); + } else if (step.name == "krovak" && getParamValue(step, "axis") == "swu") { + mapping = getMapping(EPSG_CODE_METHOD_KROVAK); + } else if (step.name == "merc") { + if (hasParamValue(step, "a") && hasParamValue(step, "b") && + getParamValue(step, "a") == getParamValue(step, "b") && + (!hasParamValue(step, "lat_ts") || + getAngularValue(getParamValue(step, "lat_ts")) == 0.0) && + (!hasParamValue(step, "k") || + getNumericValue(getParamValue(step, "k")) == 1.0) && + getParamValue(step, "nadgrids") == "@null") { + mapping = getMapping( + EPSG_CODE_METHOD_POPULAR_VISUALISATION_PSEUDO_MERCATOR); + for (size_t i = 0; i < step.paramValues.size(); ++i) { + if (ci_equal(step.paramValues[i].key, "nadgrids")) { + step.paramValues.erase(step.paramValues.begin() + i); + break; + } + } + } else if (hasParamValue(step, "lat_ts")) { + mapping = getMapping(EPSG_CODE_METHOD_MERCATOR_VARIANT_B); + } else { + mapping = getMapping(EPSG_CODE_METHOD_MERCATOR_VARIANT_A); + } + } else if (step.name == "stere") { + if (hasParamValue(step, "lat_0") && + std::fabs(std::fabs(getAngularValue(getParamValue(step, "lat_0"))) - + 90.0) < 1e-10) { + const double lat_0 = getAngularValue(getParamValue(step, "lat_0")); + if (lat_0 > 0) { + axisType = AxisType::NORTH_POLE; + } else { + axisType = AxisType::SOUTH_POLE; + } + if (hasParamValue(step, "lat_ts")) { + mapping = + getMapping(EPSG_CODE_METHOD_POLAR_STEREOGRAPHIC_VARIANT_B); + } else { + mapping = + getMapping(EPSG_CODE_METHOD_POLAR_STEREOGRAPHIC_VARIANT_A); + } + } else { + mapping = getMapping(PROJ_WKT2_NAME_METHOD_STEREOGRAPHIC); + } + } + + UnitOfMeasure unit = buildUnit(step, "units", "to_meter"); + if (iUnitConvert >= 0) { + const auto &stepUnitConvert = steps_[iUnitConvert]; + const std::string *xy_in = &getParamValue(stepUnitConvert, "xy_in"); + const std::string *xy_out = &getParamValue(stepUnitConvert, "xy_out"); + if (stepUnitConvert.inverted) { + std::swap(xy_in, xy_out); + } + if (xy_in->empty() || xy_out->empty() || *xy_in != "m") { + if (step.name != "ob_tran") { + throw ParsingException( + "unhandled values for xy_in and/or xy_out"); + } + } + + const LinearUnitDesc *unitsMatch = nullptr; + try { + double to_meter_value = c_locale_stod(*xy_out); + unitsMatch = getLinearUnits(to_meter_value); + if (unitsMatch == nullptr) { + unit = _buildUnit(to_meter_value); + } + } catch (const std::invalid_argument &) { + unitsMatch = getLinearUnits(*xy_out); + if (!unitsMatch) { + if (step.name != "ob_tran") { + throw ParsingException( + "unhandled values for xy_in and/or xy_out"); + } + } else { + unit = _buildUnit(unitsMatch); + } + } + } + + ConversionPtr conv; + + auto mapWithUnknownName = createMapWithUnknownName(); + + if (step.name == "utm") { + const int zone = std::atoi(getParamValue(step, "zone").c_str()); + const bool north = !hasParamValue(step, "south"); + conv = + Conversion::createUTM(emptyPropertyMap, zone, north).as_nullable(); + } else if (mapping) { + + auto methodMap = + PropertyMap().set(IdentifiedObject::NAME_KEY, mapping->wkt2_name); + if (mapping->epsg_code) { + methodMap.set(Identifier::CODESPACE_KEY, Identifier::EPSG) + .set(Identifier::CODE_KEY, mapping->epsg_code); + } + std::vector<OperationParameterNNPtr> parameters; + std::vector<ParameterValueNNPtr> values; + for (int i = 0; mapping->params[i] != nullptr; i++) { + const auto *param = mapping->params[i]; + std::string proj_name(param->proj_name ? param->proj_name : ""); + const std::string *paramValue = + !proj_name.empty() ? &getParamValue(step, proj_name) + : &emptyString; + // k and k_0 may be used indifferently + if (paramValue->empty() && proj_name == "k") { + paramValue = &getParamValue(step, "k_0"); + } else if (paramValue->empty() && proj_name == "k_0") { + paramValue = &getParamValue(step, "k"); + } + double value = 0; + if (!paramValue->empty()) { + bool hasError = false; + if (param->unit_type == UnitOfMeasure::Type::ANGULAR) { + value = getAngularValue(*paramValue, &hasError); + } else { + value = getNumericValue(*paramValue, &hasError); + } + if (hasError) { + throw ParsingException("invalid value for " + proj_name); + } + + } else if (param->unit_type == UnitOfMeasure::Type::SCALE) { + value = 1; + } else { + // For omerc, if gamma is missing, the default value is + // alpha + if (step.name == "omerc" && proj_name == "gamma") { + paramValue = &getParamValue(step, "alpha"); + if (!paramValue->empty()) { + value = getAngularValue(*paramValue); + } + } else if (step.name == "krovak") { + if (param->epsg_code == + EPSG_CODE_PARAMETER_COLATITUDE_CONE_AXIS) { + value = 30.2881397222222; + } else if ( + param->epsg_code == + EPSG_CODE_PARAMETER_LATITUDE_PSEUDO_STANDARD_PARALLEL) { + value = 78.5; + } + } + } + + PropertyMap propertiesParameter; + propertiesParameter.set(IdentifiedObject::NAME_KEY, + param->wkt2_name); + if (param->epsg_code) { + propertiesParameter.set(Identifier::CODE_KEY, param->epsg_code); + propertiesParameter.set(Identifier::CODESPACE_KEY, + Identifier::EPSG); + } + parameters.push_back( + OperationParameter::create(propertiesParameter)); + // In PROJ convention, angular parameters are always in degree + // and linear parameters always in metre. + double valRounded = + param->unit_type == UnitOfMeasure::Type::LINEAR + ? Length(value, UnitOfMeasure::METRE).convertToUnit(unit) + : value; + if (std::fabs(valRounded - std::round(valRounded)) < 1e-8) { + valRounded = std::round(valRounded); + } + values.push_back(ParameterValue::create(Measure( + valRounded, + param->unit_type == UnitOfMeasure::Type::ANGULAR + ? UnitOfMeasure::DEGREE + : param->unit_type == UnitOfMeasure::Type::LINEAR + ? unit + : param->unit_type == UnitOfMeasure::Type::SCALE + ? UnitOfMeasure::SCALE_UNITY + : UnitOfMeasure::NONE))); + } + + conv = Conversion::create(mapWithUnknownName, methodMap, parameters, + values) + .as_nullable(); + } else { + std::vector<OperationParameterNNPtr> parameters; + std::vector<ParameterValueNNPtr> values; + std::string methodName = "PROJ " + step.name; + for (const auto ¶m : step.paramValues) { + if (param.key == "wktext" || param.key == "no_defs" || + param.key == "datum" || param.key == "ellps" || + param.key == "a" || param.key == "b" || param.key == "R" || + param.key == "towgs84" || param.key == "nadgrids" || + param.key == "geoidgrids" || param.key == "units" || + param.key == "to_meter" || param.key == "vunits" || + param.key == "vto_meter") { + continue; + } + if (param.value.empty()) { + methodName += " " + param.key; + } else if (param.key == "o_proj") { + methodName += " " + param.key + "=" + param.value; + } else { + parameters.push_back(OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, param.key))); + bool hasError = false; + if (param.key == "x_0" || param.key == "y_0") { + double value = getNumericValue(param.value, &hasError); + values.push_back(ParameterValue::create( + Measure(value, UnitOfMeasure::METRE))); + } else if (param.key == "k" || param.key == "k_0") { + double value = getNumericValue(param.value, &hasError); + values.push_back(ParameterValue::create( + Measure(value, UnitOfMeasure::SCALE_UNITY))); + } else { + double value = getAngularValue(param.value, &hasError); + values.push_back(ParameterValue::create( + Measure(value, UnitOfMeasure::DEGREE))); + } + if (hasError) { + throw ParsingException("invalid value for " + param.key); + } + } + } + conv = Conversion::create( + mapWithUnknownName, + PropertyMap().set(IdentifiedObject::NAME_KEY, methodName), + parameters, values) + .as_nullable(); + + if (methodName == "PROJ ob_tran o_proj=longlat") { + return DerivedGeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), + geogCRS, NN_NO_CHECK(conv), + buildEllipsoidalCS(iStep, iUnitConvert, iAxisSwap, false, + false)); + } + } + + std::vector<CoordinateSystemAxisNNPtr> axis = + processAxisSwap(step, unit, iAxisSwap, axisType, false); + + auto cs = CartesianCS::create(emptyPropertyMap, axis[0], axis[1]); + + CRSNNPtr crs = ProjectedCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, + title.empty() ? "unknown" : title), + geogCRS, NN_NO_CHECK(conv), cs); + + if (!hasParamValue(step, "geoidgrids") && + (hasParamValue(step, "vunits") || hasParamValue(step, "vto_meter"))) { + auto vdatum = VerticalReferenceFrame::create(mapWithUnknownName); + + const UnitOfMeasure vunit = buildUnit(step, "vunits", "vto_meter"); + + auto vcrs = + VerticalCRS::create(mapWithUnknownName, vdatum, + VerticalCS::createGravityRelatedHeight(vunit)); + + crs = CompoundCRS::create(mapWithUnknownName, + std::vector<CRSNNPtr>{crs, vcrs}); + } + + return crs; +} + +// --------------------------------------------------------------------------- + +static bool isDatumDefiningParam(const std::string ¶m) { + return (param == "datum" || param == "ellps" || param == "a" || + param == "b" || param == "rf" || param == "R"); +} + +// --------------------------------------------------------------------------- + +CoordinateOperationNNPtr PROJStringParser::Private::buildHelmertTransformation( + int iStep, int iFirstAxisSwap, int iFirstUnitConvert, int iFirstGeogStep, + int iSecondGeogStep, int iSecondAxisSwap, int iSecondUnitConvert) { + auto &step = steps_[iStep]; + auto datum = buildDatum(step, std::string()); + auto cs = CartesianCS::createGeocentric(UnitOfMeasure::METRE); + + auto mapWithUnknownName = createMapWithUnknownName(); + + auto sourceCRS = + iFirstGeogStep >= 0 + ? util::nn_static_pointer_cast<crs::CRS>( + buildGeographicCRS(iFirstGeogStep, iFirstUnitConvert, + iFirstAxisSwap, true, false)) + : util::nn_static_pointer_cast<crs::CRS>( + GeodeticCRS::create(mapWithUnknownName, datum, cs)); + auto targetCRS = + iSecondGeogStep >= 0 + ? util::nn_static_pointer_cast<crs::CRS>( + buildGeographicCRS(iSecondGeogStep, iSecondUnitConvert, + iSecondAxisSwap, true, false)) + : util::nn_static_pointer_cast<crs::CRS>( + GeodeticCRS::create(mapWithUnknownName, datum, cs)); + + double x = 0; + double y = 0; + double z = 0; + double rx = 0; + double ry = 0; + double rz = 0; + double s = 0; + double dx = 0; + double dy = 0; + double dz = 0; + double drx = 0; + double dry = 0; + double drz = 0; + double ds = 0; + double t_epoch = 0; + bool rotationTerms = false; + bool timeDependent = false; + bool conventionFound = false; + bool positionVectorConvention = false; + + struct Params { + double *pValue; + const char *name; + bool *pPresent; + }; + const Params knownParams[] = { + {&x, "x", nullptr}, + {&y, "y", nullptr}, + {&z, "z", nullptr}, + {&rx, "rx", &rotationTerms}, + {&ry, "ry", &rotationTerms}, + {&rz, "rz", &rotationTerms}, + {&s, "s", &rotationTerms}, + {&dx, "dx", &timeDependent}, + {&dy, "dy", &timeDependent}, + {&dz, "dz", &timeDependent}, + {&drx, "drx", &timeDependent}, + {&dry, "dry", &timeDependent}, + {&drz, "drz", &timeDependent}, + {&ds, "ds", &timeDependent}, + {&t_epoch, "t_epoch", &timeDependent}, + {nullptr, "exact", nullptr}, + }; + + for (const auto ¶m : step.paramValues) { + if (isDatumDefiningParam(param.key)) { + continue; + } + if (param.key == "convention") { + if (param.value == "position_vector") { + positionVectorConvention = true; + conventionFound = true; + } else if (param.value == "coordinate_frame") { + positionVectorConvention = false; + conventionFound = true; + } else { + throw ParsingException("unsupported convention"); + } + } else { + bool found = false; + for (auto &&knownParam : knownParams) { + if (param.key == knownParam.name) { + found = true; + if (knownParam.pValue) + *(knownParam.pValue) = getNumericValue(param.value); + if (knownParam.pPresent) + *(knownParam.pPresent) = true; + break; + } + } + if (!found) { + throw ParsingException("unsupported keyword for Helmert: " + + param.key); + } + } + } + + rotationTerms |= timeDependent; + if (rotationTerms && !conventionFound) { + throw ParsingException("missing convention"); + } + + std::vector<metadata::PositionalAccuracyNNPtr> emptyAccuracies; + + auto transf = ([&]() { + if (!rotationTerms) { + return Transformation::createGeocentricTranslations( + mapWithUnknownName, sourceCRS, targetCRS, x, y, z, + emptyAccuracies); + } else if (positionVectorConvention) { + if (timeDependent) { + return Transformation::createTimeDependentPositionVector( + mapWithUnknownName, sourceCRS, targetCRS, x, y, z, rx, ry, + rz, s, dx, dy, dz, drx, dry, drz, ds, t_epoch, + emptyAccuracies); + } else { + return Transformation::createPositionVector( + mapWithUnknownName, sourceCRS, targetCRS, x, y, z, rx, ry, + rz, s, emptyAccuracies); + } + } else { + if (timeDependent) { + return Transformation:: + createTimeDependentCoordinateFrameRotation( + mapWithUnknownName, sourceCRS, targetCRS, x, y, z, rx, + ry, rz, s, dx, dy, dz, drx, dry, drz, ds, t_epoch, + emptyAccuracies); + } else { + return Transformation::createCoordinateFrameRotation( + mapWithUnknownName, sourceCRS, targetCRS, x, y, z, rx, ry, + rz, s, emptyAccuracies); + } + } + })(); + + if (step.inverted) { + return util::nn_static_pointer_cast<CoordinateOperation>( + transf->inverse()); + } else { + return util::nn_static_pointer_cast<CoordinateOperation>(transf); + } +} + +// --------------------------------------------------------------------------- + +CoordinateOperationNNPtr +PROJStringParser::Private::buildMolodenskyTransformation( + int iStep, int iFirstAxisSwap, int iFirstUnitConvert, int iFirstGeogStep, + int iSecondGeogStep, int iSecondAxisSwap, int iSecondUnitConvert) { + auto &step = steps_[iStep]; + + double dx = 0; + double dy = 0; + double dz = 0; + double da = 0; + double df = 0; + + struct Params { + double *pValue; + const char *name; + }; + const Params knownParams[] = { + {&dx, "dx"}, {&dy, "dy"}, {&dz, "dz"}, {&da, "da"}, {&df, "df"}, + }; + bool abridged = false; + + for (const auto ¶m : step.paramValues) { + if (isDatumDefiningParam(param.key)) { + continue; + } else if (param.key == "abridged") { + abridged = true; + } else { + bool found = false; + for (auto &&knownParam : knownParams) { + if (param.key == knownParam.name) { + found = true; + if (knownParam.pValue) + *(knownParam.pValue) = getNumericValue(param.value); + break; + } + } + if (!found) { + throw ParsingException("unsupported keyword for Molodensky: " + + param.key); + } + } + } + + auto datum = buildDatum(step, std::string()); + auto sourceCRS = iFirstGeogStep >= 0 + ? buildGeographicCRS(iFirstGeogStep, iFirstUnitConvert, + iFirstAxisSwap, true, false) + : buildGeographicCRS(iStep, -1, -1, true, false); + + const auto &ellps = sourceCRS->ellipsoid(); + const double a = ellps->semiMajorAxis().getSIValue(); + const double rf = ellps->computedInverseFlattening(); + const double target_a = a + da; + const double target_rf = 1.0 / (1.0 / rf + df); + + auto mapWithUnknownName = createMapWithUnknownName(); + + auto target_ellipsoid = + Ellipsoid::createFlattenedSphere(mapWithUnknownName, Length(target_a), + Scale(target_rf)) + ->identify(); + auto target_datum = GeodeticReferenceFrame::create( + mapWithUnknownName, target_ellipsoid, util::optional<std::string>(), + PrimeMeridian::GREENWICH); + + auto targetCRS = util::nn_static_pointer_cast<crs::CRS>( + iSecondGeogStep >= 0 + ? buildGeographicCRS(iSecondGeogStep, iSecondUnitConvert, + iSecondAxisSwap, true, false) + : GeographicCRS::create(mapWithUnknownName, target_datum, + EllipsoidalCS::createLongitudeLatitude( + UnitOfMeasure::DEGREE))); + + auto sourceCRS_as_CRS = util::nn_static_pointer_cast<crs::CRS>(sourceCRS); + + std::vector<metadata::PositionalAccuracyNNPtr> emptyAccuracies; + + auto transf = ([&]() { + if (abridged) { + return Transformation::createAbridgedMolodensky( + mapWithUnknownName, sourceCRS_as_CRS, targetCRS, dx, dy, dz, da, + df, emptyAccuracies); + } else { + return Transformation::createMolodensky( + mapWithUnknownName, sourceCRS_as_CRS, targetCRS, dx, dy, dz, da, + df, emptyAccuracies); + } + })(); + + if (step.inverted) { + return util::nn_static_pointer_cast<CoordinateOperation>( + transf->inverse()); + } else { + return util::nn_static_pointer_cast<CoordinateOperation>(transf); + } +} + +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a sub-class of BaseObject from a PROJ string. + * @throw ParsingException + */ +BaseObjectNNPtr +PROJStringParser::createFromPROJString(const std::string &projString) { + std::string vunits; + std::string vto_meter; + + PROJStringSyntaxParser(projString, d->steps_, d->globalParamValues_, + d->title_, vunits, vto_meter); + + if (d->steps_.empty()) { + + if (!vunits.empty() || !vto_meter.empty()) { + Step fakeStep; + if (!vunits.empty()) { + fakeStep.paramValues.emplace_back( + Step::KeyValue("vunits", vunits)); + } + if (!vto_meter.empty()) { + fakeStep.paramValues.emplace_back( + Step::KeyValue("vto_meter", vto_meter)); + } + auto vdatum = + VerticalReferenceFrame::create(createMapWithUnknownName()); + auto vcrs = VerticalCRS::create( + createMapWithUnknownName(), vdatum, + VerticalCS::createGravityRelatedHeight( + d->buildUnit(fakeStep, "vunits", "vto_meter"))); + return vcrs; + } + } + + if ((d->steps_.size() == 1 || + (d->steps_.size() == 2 && d->steps_[1].name == "unitconvert")) && + isGeocentricStep(d->steps_[0].name)) { + return d->buildGeocentricCRS( + 0, (d->steps_.size() == 2 && d->steps_[1].name == "unitconvert") + ? 1 + : -1); + } + + int iFirstGeogStep = -1; + int iSecondGeogStep = -1; + int iProjStep = -1; + int iFirstUnitConvert = -1; + int iSecondUnitConvert = -1; + int iFirstAxisSwap = -1; + int iSecondAxisSwap = -1; + int iHelmert = -1; + int iFirstCart = -1; + int iSecondCart = -1; + int iMolodensky = -1; + bool unexpectedStructure = false; + for (int i = 0; i < static_cast<int>(d->steps_.size()); i++) { + const auto &stepName = d->steps_[i].name; + if (isGeodeticStep(stepName)) { + if (iFirstGeogStep < 0) { + iFirstGeogStep = i; + } else if (iSecondGeogStep < 0) { + iSecondGeogStep = i; + } else { + unexpectedStructure = true; + break; + } + } else if (ci_equal(stepName, "unitconvert")) { + if (iFirstUnitConvert < 0) { + iFirstUnitConvert = i; + } else if (iSecondUnitConvert < 0) { + iSecondUnitConvert = i; + } else { + unexpectedStructure = true; + break; + } + } else if (ci_equal(stepName, "axisswap")) { + if (iFirstAxisSwap < 0) { + iFirstAxisSwap = i; + } else if (iSecondAxisSwap < 0) { + iSecondAxisSwap = i; + } else { + unexpectedStructure = true; + break; + } + } else if (stepName == "helmert") { + if (iHelmert >= 0) { + unexpectedStructure = true; + break; + } + iHelmert = i; + } else if (stepName == "cart") { + if (iFirstCart < 0) { + iFirstCart = i; + } else if (iSecondCart < 0) { + iSecondCart = i; + } else { + unexpectedStructure = true; + break; + } + } else if (stepName == "molodensky") { + if (iMolodensky >= 0) { + unexpectedStructure = true; + break; + } + iMolodensky = i; + } else if (isProjectedStep(stepName)) { + if (iProjStep >= 0) { + unexpectedStructure = true; + break; + } + iProjStep = i; + } else { + unexpectedStructure = true; + break; + } + } + + if (!unexpectedStructure) { + if (iFirstGeogStep == 0 && iSecondGeogStep < 0 && iProjStep < 0 && + iHelmert < 0 && iFirstCart < 0 && iMolodensky < 0 && + (iFirstUnitConvert < 0 || iSecondUnitConvert < 0) && + (iFirstAxisSwap < 0 || iSecondAxisSwap < 0)) { + const bool ignoreVUnits = false; + return d->buildBoundOrCompoundCRSIfNeeded( + 0, d->buildGeographicCRS(iFirstGeogStep, iFirstUnitConvert, + iFirstAxisSwap, ignoreVUnits, false)); + } + if (iProjStep >= 0 && !d->steps_[iProjStep].inverted && + (iFirstGeogStep < 0 || iFirstGeogStep + 1 == iProjStep) && + iMolodensky < 0 && iSecondGeogStep < 0 && iFirstCart < 0 && + iHelmert < 0) { + if (iFirstGeogStep < 0) + iFirstGeogStep = iProjStep; + const bool ignoreVUnits = true; + return d->buildBoundOrCompoundCRSIfNeeded( + iProjStep, + d->buildProjectedCRS( + iProjStep, + d->buildGeographicCRS( + iFirstGeogStep, + iFirstUnitConvert < iFirstGeogStep ? iFirstUnitConvert + : -1, + iFirstAxisSwap < iFirstGeogStep ? iFirstAxisSwap : -1, + ignoreVUnits, true), + iFirstUnitConvert < iFirstGeogStep ? iSecondUnitConvert + : iFirstUnitConvert, + iFirstAxisSwap < iFirstGeogStep ? iSecondAxisSwap + : iFirstAxisSwap)); + } + if (d->steps_.size() == 1 && iHelmert == 0) { + return d->buildHelmertTransformation(iHelmert); + } + + if (iProjStep < 0 && iHelmert > 0 && iMolodensky < 0 && + (iFirstGeogStep < 0 || iFirstGeogStep == iFirstCart - 1 || + (iFirstGeogStep == iSecondCart + 1 && iSecondGeogStep < 0)) && + iFirstCart == iHelmert - 1 && iSecondCart == iHelmert + 1 && + (iSecondGeogStep < 0 || iSecondGeogStep == iSecondCart + 1) && + !d->steps_[iFirstCart].inverted && + d->steps_[iSecondCart].inverted && iFirstAxisSwap < iHelmert && + iFirstUnitConvert < iHelmert && + (iSecondAxisSwap < 0 || iSecondAxisSwap > iHelmert) && + (iSecondUnitConvert < 0 || iSecondUnitConvert > iHelmert)) { + return d->buildHelmertTransformation( + iHelmert, iFirstAxisSwap, iFirstUnitConvert, + iFirstGeogStep >= 0 && iFirstGeogStep == iFirstCart - 1 + ? iFirstGeogStep + : iFirstCart, + iFirstGeogStep == iSecondCart + 1 + ? iFirstGeogStep + : iSecondGeogStep == iSecondCart + 1 ? iSecondGeogStep + : iSecondCart, + iSecondAxisSwap, iSecondUnitConvert); + } + + if (d->steps_.size() == 1 && iMolodensky == 0) { + return d->buildMolodenskyTransformation(iMolodensky); + } + + if (iProjStep < 0 && iHelmert < 0 && iMolodensky > 0 && + (iFirstGeogStep < 0 || iFirstGeogStep == iMolodensky - 1 || + (iFirstGeogStep == iMolodensky + 1 && iSecondGeogStep < 0)) && + (iSecondGeogStep < 0 || iSecondGeogStep == iMolodensky + 1) && + iFirstAxisSwap < iMolodensky && iFirstUnitConvert < iMolodensky && + (iSecondAxisSwap < 0 || iSecondAxisSwap > iMolodensky) && + (iSecondUnitConvert < 0 || iSecondUnitConvert > iMolodensky)) { + return d->buildMolodenskyTransformation( + iMolodensky, iFirstAxisSwap, iFirstUnitConvert, + iFirstGeogStep >= 0 && iFirstGeogStep == iMolodensky - 1 + ? iFirstGeogStep + : iMolodensky, + iFirstGeogStep == iMolodensky + 1 + ? iFirstGeogStep + : iSecondGeogStep == iMolodensky + 1 ? iSecondGeogStep + : iMolodensky, + iSecondAxisSwap, iSecondUnitConvert); + } + } + + struct Logger { + std::string msg{}; + + // cppcheck-suppress functionStatic + void setMessage(const char *msgIn) noexcept { + try { + msg = msgIn; + } catch (const std::exception &) { + } + } + + static void log(void *user_data, int level, const char *msg) { + if (level == PJ_LOG_ERROR) { + static_cast<Logger *>(user_data)->setMessage(msg); + } + } + }; + + // If the structure is not recognized, then try to instanciate the + // pipeline, and if successful, wrap it in a PROJBasedOperation + Logger logger; + auto pj_context = proj_context_create(); + if (!pj_context) { + throw ParsingException("out of memory"); + } + proj_log_func(pj_context, &logger, Logger::log); + auto pj = proj_create(pj_context, projString.c_str()); + bool valid = pj != nullptr; + proj_destroy(pj); + + if (!valid && logger.msg.empty()) { + logger.setMessage(proj_errno_string(proj_context_errno(pj_context))); + } + + proj_context_destroy(pj_context); + + if (!valid) { + throw ParsingException(logger.msg); + } + + auto props = PropertyMap(); + if (!d->title_.empty()) { + props.set(IdentifiedObject::NAME_KEY, d->title_); + } + return operation::SingleOperation::createPROJBased(props, projString, + nullptr, nullptr, {}); +} + +} // namespace io +NS_PROJ_END diff --git a/src/lib_proj.cmake b/src/lib_proj.cmake index 6a287a43..6fe84944 100644 --- a/src/lib_proj.cmake +++ b/src/lib_proj.cmake @@ -32,6 +32,24 @@ elseif(USE_THREAD AND NOT Threads_FOUND) message(FATAL_ERROR "No thread library found and thread/mutex support is required by USE_THREAD option") endif() +option(ENABLE_LTO "Build library with LTO optimization (if available)." ON) +if(ENABLE_LTO) + if("${CMAKE_C_COMPILER_ID}" MATCHES "Clang") + include (CheckCXXSourceCompiles) + SET(CMAKE_REQUIRED_FLAGS "-Wl,-flto") + check_cxx_source_compiles("int main(){ return 0; }" COMPILER_SUPPORTS_FLTO_FLAG) + IF(COMPILER_SUPPORTS_FLTO_FLAG) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") + ENDIF() + else() + include(CheckCXXCompilerFlag) + CHECK_CXX_COMPILER_FLAG("-flto" COMPILER_SUPPORTS_FLTO_FLAG) + if(COMPILER_SUPPORTS_FLTO_FLAG) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") + endif() + endif() +endif() + ############################################## ### library source list and include_list ### @@ -227,11 +245,27 @@ SET(SRC_LIBPROJ_CORE vector1.c pj_strtod.c ${CMAKE_CURRENT_BINARY_DIR}/proj_config.h - ) +) + +set(SRC_LIBPROJ_CPP + static.cpp + common.cpp + coordinateoperation.cpp + coordinatesystem.cpp + crs.cpp + datum.cpp + io.cpp + metadata.cpp + util.cpp + internal.cpp + factory.cpp + c_api.cpp +) set(HEADERS_LIBPROJ proj_api.h proj.h + proj_constants.h geodesic.h ) @@ -239,6 +273,10 @@ set(HEADERS_LIBPROJ source_group("Header Files" FILES ${HEADERS_LIBPROJ}) source_group("Source Files\\Core" FILES ${SRC_LIBPROJ_CORE}) source_group("Source Files\\PJ" FILES ${SRC_LIBPROJ_PJ}) +source_group("Source Files\\C++" FILES ${SRC_LIBPROJ_CPP}) + +include_directories(${CMAKE_SOURCE_DIR}/include) + include_directories( ${CMAKE_CURRENT_BINARY_DIR}) source_group("CMake Files" FILES CMakeLists.txt) @@ -269,11 +307,8 @@ endif(JNI_SUPPORT) ################################################# ## targets: libproj and proj_config.h ################################################# -set(ALL_LIBPROJ_SOURCES ${SRC_LIBPROJ_PJ} ${SRC_LIBPROJ_CORE}) +set(ALL_LIBPROJ_SOURCES ${SRC_LIBPROJ_PJ} ${SRC_LIBPROJ_CORE} ${SRC_LIBPROJ_CPP}) set(ALL_LIBPROJ_HEADERS ${HEADERS_LIBPROJ} ) -if(WIN32 AND BUILD_LIBPROJ_SHARED) - set(ALL_LIBPROJ_SOURCES ${ALL_LIBPROJ_SOURCES} proj.def ) -endif(WIN32 AND BUILD_LIBPROJ_SHARED) # Core targets configuration string(TOLOWER "${PROJECT_INTERN_NAME}" PROJECTNAMEL) @@ -313,7 +348,7 @@ endif() set_target_properties(${PROJ_CORE_TARGET} PROPERTIES - LINKER_LANGUAGE C) + LINKER_LANGUAGE CXX) ############################################## # Link properties @@ -330,6 +365,12 @@ if(USE_THREAD AND Threads_FOUND AND CMAKE_USE_PTHREADS_INIT) TARGET_LINK_LIBRARIES(${PROJ_CORE_TARGET} ${CMAKE_THREAD_LIBS_INIT}) endif(USE_THREAD AND Threads_FOUND AND CMAKE_USE_PTHREADS_INIT) +include_directories(${SQLITE3_INCLUDE_DIR}) +TARGET_LINK_LIBRARIES(${PROJ_CORE_TARGET} ${SQLITE3_LIBRARY}) + +if(MSVC) + target_compile_definitions(${PROJ_CORE_TARGET} PRIVATE PROJ_MSVC_DLL_EXPORT=1) +endif() ############################################## # install diff --git a/src/metadata.cpp b/src/metadata.cpp new file mode 100644 index 00000000..033782c9 --- /dev/null +++ b/src/metadata.cpp @@ -0,0 +1,1233 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef FROM_PROJ_CPP +#define FROM_PROJ_CPP +#endif + +#include "proj/metadata.hpp" +#include "proj/common.hpp" +#include "proj/io.hpp" +#include "proj/util.hpp" + +#include "proj/internal/internal.hpp" +#include "proj/internal/io_internal.hpp" + +#include <algorithm> +#include <memory> +#include <string> +#include <vector> + +using namespace NS_PROJ::internal; +using namespace NS_PROJ::io; +using namespace NS_PROJ::util; + +#if 0 +namespace dropbox{ namespace oxygen { +template<> nn<std::shared_ptr<NS_PROJ::metadata::Citation>>::~nn() = default; +template<> nn<NS_PROJ::metadata::ExtentPtr>::~nn() = default; +template<> nn<NS_PROJ::metadata::GeographicBoundingBoxPtr>::~nn() = default; +template<> nn<NS_PROJ::metadata::GeographicExtentPtr>::~nn() = default; +template<> nn<NS_PROJ::metadata::VerticalExtentPtr>::~nn() = default; +template<> nn<NS_PROJ::metadata::TemporalExtentPtr>::~nn() = default; +template<> nn<NS_PROJ::metadata::IdentifierPtr>::~nn() = default; +template<> nn<NS_PROJ::metadata::PositionalAccuracyPtr>::~nn() = default; +}} +#endif + +NS_PROJ_START +namespace metadata { + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct Citation::Private { + optional<std::string> title{}; +}; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +Citation::Citation() : d(internal::make_unique<Private>()) {} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Constructs a citation by its title. */ +Citation::Citation(const std::string &titleIn) + : d(internal::make_unique<Private>()) { + d->title = titleIn; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +Citation::Citation(const Citation &other) + : d(internal::make_unique<Private>(*(other.d))) {} + +// --------------------------------------------------------------------------- + +Citation::~Citation() = default; + +// --------------------------------------------------------------------------- + +Citation &Citation::operator=(const Citation &other) { + if (this != &other) { + *d = *other.d; + } + return *this; +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Returns the name by which the cited resource is known. */ +const optional<std::string> &Citation::title() PROJ_CONST_DEFN { + return d->title; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct GeographicExtent::Private {}; +//! @endcond + +// --------------------------------------------------------------------------- + +GeographicExtent::GeographicExtent() : d(internal::make_unique<Private>()) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +GeographicExtent::~GeographicExtent() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct GeographicBoundingBox::Private { + double west_{}; + double south_{}; + double east_{}; + double north_{}; + + Private(double west, double south, double east, double north) + : west_(west), south_(south), east_(east), north_(north) {} + + bool intersects(const Private &other) const; + + std::unique_ptr<Private> intersection(const Private &other) const; +}; +//! @endcond + +// --------------------------------------------------------------------------- + +GeographicBoundingBox::GeographicBoundingBox(double west, double south, + double east, double north) + : GeographicExtent(), + d(internal::make_unique<Private>(west, south, east, north)) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +GeographicBoundingBox::~GeographicBoundingBox() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Returns the western-most coordinate of the limit of the dataset + * extent. + * + * The unit is degrees. + * + * If eastBoundLongitude < westBoundLongitude(), then the bounding box crosses + * the anti-meridian. + */ +double GeographicBoundingBox::westBoundLongitude() PROJ_CONST_DEFN { + return d->west_; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns the southern-most coordinate of the limit of the dataset + * extent. + * + * The unit is degrees. + */ +double GeographicBoundingBox::southBoundLatitude() PROJ_CONST_DEFN { + return d->south_; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns the eastern-most coordinate of the limit of the dataset + * extent. + * + * The unit is degrees. + * + * If eastBoundLongitude < westBoundLongitude(), then the bounding box crosses + * the anti-meridian. + */ +double GeographicBoundingBox::eastBoundLongitude() PROJ_CONST_DEFN { + return d->east_; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns the northern-most coordinate of the limit of the dataset + * extent. + * + * The unit is degrees. + */ +double GeographicBoundingBox::northBoundLatitude() PROJ_CONST_DEFN { + return d->north_; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a GeographicBoundingBox. + * + * If east < west, then the bounding box crosses the anti-meridian. + * + * @param west Western-most coordinate of the limit of the dataset extent (in + * degrees). + * @param south Southern-most coordinate of the limit of the dataset extent (in + * degrees). + * @param east Eastern-most coordinate of the limit of the dataset extent (in + * degrees). + * @param north Northern-most coordinate of the limit of the dataset extent (in + * degrees). + * @return a new GeographicBoundingBox. + */ +GeographicBoundingBoxNNPtr GeographicBoundingBox::create(double west, + double south, + double east, + double north) { + return GeographicBoundingBox::nn_make_shared<GeographicBoundingBox>( + west, south, east, north); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool GeographicBoundingBox::_isEquivalentTo( + const util::IComparable *other, util::IComparable::Criterion) const { + auto otherExtent = dynamic_cast<const GeographicBoundingBox *>(other); + if (!otherExtent) + return false; + return d->west_ == otherExtent->d->west_ && + d->south_ == otherExtent->d->south_ && + d->east_ == otherExtent->d->east_ && + d->north_ == otherExtent->d->north_; +} +//! @endcond + +// --------------------------------------------------------------------------- + +bool GeographicBoundingBox::contains(const GeographicExtentNNPtr &other) const { + auto otherExtent = dynamic_cast<const GeographicBoundingBox *>(other.get()); + if (!otherExtent) { + return false; + } + const double W = d->west_; + const double E = d->east_; + const double N = d->north_; + const double S = d->south_; + const double oW = otherExtent->d->west_; + const double oE = otherExtent->d->east_; + const double oN = otherExtent->d->north_; + const double oS = otherExtent->d->south_; + + if (!(S <= oS && N >= oN)) { + return false; + } + + if (W == -180.0 && E == 180.0) { + return true; + } + + if (oW == -180.0 && oE == 180.0) { + return false; + } + + // Normal bounding box ? + if (W < E) { + if (oW < oE) { + return W <= oW && E >= oE; + } else { + return false; + } + // No: crossing antimerian + } else { + if (oW < oE) { + if (oW >= W) { + return true; + } else if (oE <= E) { + return true; + } else { + return false; + } + } else { + return W <= oW && E >= oE; + } + } +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool GeographicBoundingBox::Private::intersects(const Private &other) const { + const double W = west_; + const double E = east_; + const double N = north_; + const double S = south_; + const double oW = other.west_; + const double oE = other.east_; + const double oN = other.north_; + const double oS = other.south_; + + if (N < oS || S > oN) { + return false; + } + + if (W == -180.0 && E == 180.0 && oW > oE) { + return true; + } + + if (oW == -180.0 && oE == 180.0 && W > E) { + return true; + } + + // Normal bounding box ? + if (W <= E) { + if (oW < oE) { + if (std::max(W, oW) < std::min(E, oE)) { + return true; + } + return false; + } + + return intersects(Private(oW, oS, 180.0, oN)) || + intersects(Private(-180.0, oS, oE, oN)); + + // No: crossing antimerian + } else { + if (oW <= oE) { + return other.intersects(*this); + } + + return true; + } +} +//! @endcond + +bool GeographicBoundingBox::intersects( + const GeographicExtentNNPtr &other) const { + auto otherExtent = dynamic_cast<const GeographicBoundingBox *>(other.get()); + if (!otherExtent) { + return false; + } + return d->intersects(*(otherExtent->d)); +} + +// --------------------------------------------------------------------------- + +GeographicExtentPtr +GeographicBoundingBox::intersection(const GeographicExtentNNPtr &other) const { + auto otherExtent = dynamic_cast<const GeographicBoundingBox *>(other.get()); + if (!otherExtent) { + return nullptr; + } + auto ret = d->intersection(*(otherExtent->d)); + if (ret) { + auto bbox = GeographicBoundingBox::create(ret->west_, ret->south_, + ret->east_, ret->north_); + return bbox.as_nullable(); + } + return nullptr; +} + +//! @cond Doxygen_Suppress +std::unique_ptr<GeographicBoundingBox::Private> +GeographicBoundingBox::Private::intersection(const Private &otherExtent) const { + const double W = west_; + const double E = east_; + const double N = north_; + const double S = south_; + const double oW = otherExtent.west_; + const double oE = otherExtent.east_; + const double oN = otherExtent.north_; + const double oS = otherExtent.south_; + + if (N < oS || S > oN) { + return nullptr; + } + + if (W == -180.0 && E == 180.0 && oW > oE) { + return internal::make_unique<Private>(oW, std::max(S, oS), oE, + std::min(N, oN)); + } + + if (oW == -180.0 && oE == 180.0 && W > E) { + return internal::make_unique<Private>(W, std::max(S, oS), E, + std::min(N, oN)); + } + + // Normal bounding box ? + if (W <= E) { + if (oW < oE) { + auto res = internal::make_unique<Private>( + std::max(W, oW), std::max(S, oS), std::min(E, oE), + std::min(N, oN)); + if (res->west_ < res->east_) { + return res; + } + return nullptr; + } + + // Return larger of two parts of the multipolygon + auto inter1 = intersection(Private(oW, oS, 180.0, oN)); + auto inter2 = intersection(Private(-180.0, oS, oE, oN)); + if (!inter1) { + return inter2; + } + if (!inter2) { + return inter1; + } + if (inter1->east_ - inter1->west_ > inter2->east_ - inter2->west_) { + return inter1; + } + return inter2; + // No: crossing antimerian + } else { + if (oW <= oE) { + return otherExtent.intersection(*this); + } + + return internal::make_unique<Private>(std::max(W, oW), std::max(S, oS), + std::min(E, oE), std::min(N, oN)); + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct VerticalExtent::Private { + double minimum_{}; + double maximum_{}; + common::UnitOfMeasureNNPtr unit_; + + Private(double minimum, double maximum, + const common::UnitOfMeasureNNPtr &unit) + : minimum_(minimum), maximum_(maximum), unit_(unit) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +VerticalExtent::VerticalExtent(double minimumIn, double maximumIn, + const common::UnitOfMeasureNNPtr &unitIn) + : d(internal::make_unique<Private>(minimumIn, maximumIn, unitIn)) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +VerticalExtent::~VerticalExtent() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Returns the minimum of the vertical extent. + */ +double VerticalExtent::minimumValue() PROJ_CONST_DEFN { return d->minimum_; } + +// --------------------------------------------------------------------------- + +/** \brief Returns the maximum of the vertical extent. + */ +double VerticalExtent::maximumValue() PROJ_CONST_DEFN { return d->maximum_; } + +// --------------------------------------------------------------------------- + +/** \brief Returns the unit of the vertical extent. + */ +common::UnitOfMeasureNNPtr &VerticalExtent::unit() PROJ_CONST_DEFN { + return d->unit_; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a VerticalExtent. + * + * @param minimumIn minimum. + * @param maximumIn maximum. + * @param unitIn unit. + * @return a new VerticalExtent. + */ +VerticalExtentNNPtr +VerticalExtent::create(double minimumIn, double maximumIn, + const common::UnitOfMeasureNNPtr &unitIn) { + return VerticalExtent::nn_make_shared<VerticalExtent>(minimumIn, maximumIn, + unitIn); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool VerticalExtent::_isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion) const { + auto otherExtent = dynamic_cast<const VerticalExtent *>(other); + if (!otherExtent) + return false; + return d->minimum_ == otherExtent->d->minimum_ && + d->maximum_ == otherExtent->d->maximum_ && + d->unit_ == otherExtent->d->unit_; +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Returns whether this extent contains the other one. + */ +bool VerticalExtent::contains(const VerticalExtentNNPtr &other) const { + const double thisUnitToSI = d->unit_->conversionToSI(); + const double otherUnitToSI = other->d->unit_->conversionToSI(); + return d->minimum_ * thisUnitToSI <= other->d->minimum_ * otherUnitToSI && + d->maximum_ * thisUnitToSI >= other->d->maximum_ * otherUnitToSI; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns whether this extent intersects the other one. + */ +bool VerticalExtent::intersects(const VerticalExtentNNPtr &other) const { + const double thisUnitToSI = d->unit_->conversionToSI(); + const double otherUnitToSI = other->d->unit_->conversionToSI(); + return d->minimum_ * thisUnitToSI <= other->d->maximum_ * otherUnitToSI && + d->maximum_ * thisUnitToSI >= other->d->minimum_ * otherUnitToSI; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct TemporalExtent::Private { + std::string start_{}; + std::string stop_{}; + + Private(const std::string &start, const std::string &stop) + : start_(start), stop_(stop) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +TemporalExtent::TemporalExtent(const std::string &startIn, + const std::string &stopIn) + : d(internal::make_unique<Private>(startIn, stopIn)) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +TemporalExtent::~TemporalExtent() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Returns the start of the temporal extent. + */ +const std::string &TemporalExtent::start() PROJ_CONST_DEFN { return d->start_; } + +// --------------------------------------------------------------------------- + +/** \brief Returns the end of the temporal extent. + */ +const std::string &TemporalExtent::stop() PROJ_CONST_DEFN { return d->stop_; } + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a TemporalExtent. + * + * @param start start. + * @param stop stop. + * @return a new TemporalExtent. + */ +TemporalExtentNNPtr TemporalExtent::create(const std::string &start, + const std::string &stop) { + return TemporalExtent::nn_make_shared<TemporalExtent>(start, stop); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool TemporalExtent::_isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion) const { + auto otherExtent = dynamic_cast<const TemporalExtent *>(other); + if (!otherExtent) + return false; + return start() == otherExtent->start() && stop() == otherExtent->stop(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Returns whether this extent contains the other one. + */ +bool TemporalExtent::contains(const TemporalExtentNNPtr &other) const { + return start() <= other->start() && stop() >= other->stop(); +} + +// --------------------------------------------------------------------------- + +/** \brief Returns whether this extent intersects the other one. + */ +bool TemporalExtent::intersects(const TemporalExtentNNPtr &other) const { + return start() <= other->stop() && stop() >= other->start(); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct Extent::Private { + optional<std::string> description_{}; + std::vector<GeographicExtentNNPtr> geographicElements_{}; + std::vector<VerticalExtentNNPtr> verticalElements_{}; + std::vector<TemporalExtentNNPtr> temporalElements_{}; +}; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +Extent::Extent() : d(internal::make_unique<Private>()) {} + +// --------------------------------------------------------------------------- + +Extent::Extent(const Extent &other) + : d(internal::make_unique<Private>(*other.d)) {} + +// --------------------------------------------------------------------------- + +Extent::~Extent() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** Return a textual description of the extent. + * + * @return the description, or empty. + */ +const optional<std::string> &Extent::description() PROJ_CONST_DEFN { + return d->description_; +} + +// --------------------------------------------------------------------------- + +/** Return the geographic element(s) of the extent + * + * @return the geographic element(s), or empty. + */ +const std::vector<GeographicExtentNNPtr> & +Extent::geographicElements() PROJ_CONST_DEFN { + return d->geographicElements_; +} + +// --------------------------------------------------------------------------- + +/** Return the vertical element(s) of the extent + * + * @return the vertical element(s), or empty. + */ +const std::vector<VerticalExtentNNPtr> & +Extent::verticalElements() PROJ_CONST_DEFN { + return d->verticalElements_; +} + +// --------------------------------------------------------------------------- + +/** Return the temporal element(s) of the extent + * + * @return the temporal element(s), or empty. + */ +const std::vector<TemporalExtentNNPtr> & +Extent::temporalElements() PROJ_CONST_DEFN { + return d->temporalElements_; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a Extent. + * + * @param descriptionIn Textual description, or empty. + * @param geographicElementsIn Geographic element(s), or empty. + * @param verticalElementsIn Vertical element(s), or empty. + * @param temporalElementsIn Temporal element(s), or empty. + * @return a new Extent. + */ +ExtentNNPtr +Extent::create(const optional<std::string> &descriptionIn, + const std::vector<GeographicExtentNNPtr> &geographicElementsIn, + const std::vector<VerticalExtentNNPtr> &verticalElementsIn, + const std::vector<TemporalExtentNNPtr> &temporalElementsIn) { + auto extent = Extent::nn_make_shared<Extent>(); + extent->assignSelf(extent); + extent->d->description_ = descriptionIn; + extent->d->geographicElements_ = geographicElementsIn; + extent->d->verticalElements_ = verticalElementsIn; + extent->d->temporalElements_ = temporalElementsIn; + return extent; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a Extent from a bounding box + * + * @param west Western-most coordinate of the limit of the dataset extent (in + * degrees). + * @param south Southern-most coordinate of the limit of the dataset extent (in + * degrees). + * @param east Eastern-most coordinate of the limit of the dataset extent (in + * degrees). + * @param north Northern-most coordinate of the limit of the dataset extent (in + * degrees). + * @param descriptionIn Textual description, or empty. + * @return a new Extent. + */ +ExtentNNPtr +Extent::createFromBBOX(double west, double south, double east, double north, + const util::optional<std::string> &descriptionIn) { + return create( + descriptionIn, + std::vector<GeographicExtentNNPtr>{ + nn_static_pointer_cast<GeographicExtent>( + GeographicBoundingBox::create(west, south, east, north))}, + std::vector<VerticalExtentNNPtr>(), std::vector<TemporalExtentNNPtr>()); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool Extent::_isEquivalentTo(const util::IComparable *other, + util::IComparable::Criterion criterion) const { + auto otherExtent = dynamic_cast<const Extent *>(other); + bool ret = + (otherExtent && + description().has_value() == otherExtent->description().has_value() && + *description() == *otherExtent->description() && + d->geographicElements_.size() == + otherExtent->d->geographicElements_.size() && + d->verticalElements_.size() == + otherExtent->d->verticalElements_.size() && + d->temporalElements_.size() == + otherExtent->d->temporalElements_.size()); + if (ret) { + for (size_t i = 0; ret && i < d->geographicElements_.size(); ++i) { + ret = d->geographicElements_[i]->_isEquivalentTo( + otherExtent->d->geographicElements_[i].get(), criterion); + } + for (size_t i = 0; ret && i < d->verticalElements_.size(); ++i) { + ret = d->verticalElements_[i]->_isEquivalentTo( + otherExtent->d->verticalElements_[i].get(), criterion); + } + for (size_t i = 0; ret && i < d->temporalElements_.size(); ++i) { + ret = d->temporalElements_[i]->_isEquivalentTo( + otherExtent->d->temporalElements_[i].get(), criterion); + } + } + return ret; +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Returns whether this extent contains the other one. + * + * Behaviour only well specified if each sub-extent category as at most + * one element. + */ +bool Extent::contains(const ExtentNNPtr &other) const { + bool res = true; + if (d->geographicElements_.size() == 1 && + other->d->geographicElements_.size() == 1) { + res = d->geographicElements_[0]->contains( + other->d->geographicElements_[0]); + } + if (res && d->verticalElements_.size() == 1 && + other->d->verticalElements_.size() == 1) { + res = d->verticalElements_[0]->contains(other->d->verticalElements_[0]); + } + if (res && d->temporalElements_.size() == 1 && + other->d->temporalElements_.size() == 1) { + res = d->temporalElements_[0]->contains(other->d->temporalElements_[0]); + } + return res; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns whether this extent intersects the other one. + * + * Behaviour only well specified if each sub-extent category as at most + * one element. + */ +bool Extent::intersects(const ExtentNNPtr &other) const { + bool res = true; + if (d->geographicElements_.size() == 1 && + other->d->geographicElements_.size() == 1) { + res = d->geographicElements_[0]->intersects( + other->d->geographicElements_[0]); + } + if (res && d->verticalElements_.size() == 1 && + other->d->verticalElements_.size() == 1) { + res = + d->verticalElements_[0]->intersects(other->d->verticalElements_[0]); + } + if (res && d->temporalElements_.size() == 1 && + other->d->temporalElements_.size() == 1) { + res = + d->temporalElements_[0]->intersects(other->d->temporalElements_[0]); + } + return res; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns the intersection of this extent with another one. + * + * Behaviour only well specified if there is one single GeographicExtent + * in each object. + * Returns nullptr otherwise. + */ +ExtentPtr Extent::intersection(const ExtentNNPtr &other) const { + if (d->geographicElements_.size() == 1 && + other->d->geographicElements_.size() == 1) { + if (contains(other)) { + return other.as_nullable(); + } + auto self = util::nn_static_pointer_cast<Extent>(shared_from_this()); + if (other->contains(self)) { + return self.as_nullable(); + } + auto geogIntersection = d->geographicElements_[0]->intersection( + other->d->geographicElements_[0]); + if (geogIntersection) { + return create(util::optional<std::string>(), + std::vector<GeographicExtentNNPtr>{ + NN_NO_CHECK(geogIntersection)}, + std::vector<VerticalExtentNNPtr>{}, + std::vector<TemporalExtentNNPtr>{}); + } + } + return nullptr; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct Identifier::Private { + optional<Citation> authority_{}; + std::string code_{}; + optional<std::string> codeSpace_{}; + optional<std::string> version_{}; + optional<std::string> description_{}; + optional<std::string> uri_{}; + + Private(const std::string &codeIn, const PropertyMap &properties) + : code_(codeIn) { + setProperties(properties); + } + + private: + // cppcheck-suppress functionStatic + void setProperties(const PropertyMap &properties); +}; + +// --------------------------------------------------------------------------- + +void Identifier::Private::setProperties( + const PropertyMap &properties) // throw(InvalidValueTypeException) +{ + { + auto oIter = properties.find(AUTHORITY_KEY); + if (oIter != properties.end()) { + if (auto genVal = + dynamic_cast<const BoxedValue *>(oIter->second.get())) { + if (genVal->type() == BoxedValue::Type::STRING) { + authority_ = Citation(genVal->stringValue()); + } else { + throw InvalidValueTypeException("Invalid value type for " + + AUTHORITY_KEY); + } + } else { + if (auto citation = + dynamic_cast<const Citation *>(oIter->second.get())) { + authority_ = *citation; + } else { + throw InvalidValueTypeException("Invalid value type for " + + AUTHORITY_KEY); + } + } + } + } + + { + auto oIter = properties.find(CODE_KEY); + if (oIter != properties.end()) { + if (auto genVal = + dynamic_cast<const BoxedValue *>(oIter->second.get())) { + if (genVal->type() == BoxedValue::Type::INTEGER) { + code_ = toString(genVal->integerValue()); + } else if (genVal->type() == BoxedValue::Type::STRING) { + code_ = genVal->stringValue(); + } else { + throw InvalidValueTypeException("Invalid value type for " + + CODE_KEY); + } + } else { + throw InvalidValueTypeException("Invalid value type for " + + CODE_KEY); + } + } + } + + { + std::string temp; + if (properties.getStringValue(CODESPACE_KEY, temp)) { + codeSpace_ = temp; + } + } + + { + std::string temp; + if (properties.getStringValue(VERSION_KEY, temp)) { + version_ = temp; + } + } + + { + std::string temp; + if (properties.getStringValue(DESCRIPTION_KEY, temp)) { + description_ = temp; + } + } + + { + std::string temp; + if (properties.getStringValue(URI_KEY, temp)) { + uri_ = temp; + } + } +} + +//! @endcond + +// --------------------------------------------------------------------------- + +Identifier::Identifier(const std::string &codeIn, const PropertyMap &properties) + : d(internal::make_unique<Private>(codeIn, properties)) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +Identifier::Identifier(const Identifier &other) + : d(internal::make_unique<Private>(*(other.d))) {} + +// --------------------------------------------------------------------------- + +Identifier::~Identifier() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a Identifier. + * + * @param codeIn Alphanumeric value identifying an instance in the codespace + * @param properties See \ref general_properties. + * Generally, the Identifier::CODESPACE_KEY should be set. + * @return a new Identifier. + */ +IdentifierNNPtr Identifier::create(const std::string &codeIn, + const PropertyMap &properties) { + return Identifier::nn_make_shared<Identifier>(codeIn, properties); +} + +// --------------------------------------------------------------------------- + +/** \brief Return a citation for the organization responsible for definition and + * maintenance of the code. + * + * @return the citation for the authority, or empty. + */ +const optional<Citation> &Identifier::authority() PROJ_CONST_DEFN { + return d->authority_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the alphanumeric value identifying an instance in the + * codespace. + * + * e.g. "4326" (for EPSG:4326 WGS 84 GeographicCRS) + * + * @return the code. + */ +const std::string &Identifier::code() PROJ_CONST_DEFN { return d->code_; } + +// --------------------------------------------------------------------------- + +/** \brief Return the organization responsible for definition and maintenance of + * the code. + * + * e.g "EPSG" + * + * @return the authority codespace, or empty. + */ +const optional<std::string> &Identifier::codeSpace() PROJ_CONST_DEFN { + return d->codeSpace_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the version identifier for the namespace. + * + * When appropriate, the edition is identified by the effective date, coded + * using ISO 8601 date format. + * + * @return the version or empty. + */ +const optional<std::string> &Identifier::version() PROJ_CONST_DEFN { + return d->version_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the natural language description of the meaning of the code + * value. + * + * @return the description or empty. + */ +const optional<std::string> &Identifier::description() PROJ_CONST_DEFN { + return d->description_; +} + +// --------------------------------------------------------------------------- + +/** \brief Return the URI of the identifier. + * + * @return the URI or empty. + */ +const optional<std::string> &Identifier::uri() PROJ_CONST_DEFN { + return d->uri_; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +void Identifier::_exportToWKT(WKTFormatter *formatter) const { + const bool isWKT2 = formatter->version() == WKTFormatter::Version::WKT2; + const std::string &l_code = code(); + const std::string &l_codeSpace = *codeSpace(); + if (!l_codeSpace.empty() && !l_code.empty()) { + if (isWKT2) { + formatter->startNode(WKTConstants::ID, false); + formatter->addQuotedString(l_codeSpace); + try { + (void)std::stoi(l_code); + formatter->add(l_code); + } catch (const std::exception &) { + formatter->addQuotedString(l_code); + } + if (version().has_value()) { + auto l_version = *(version()); + try { + (void)c_locale_stod(l_version); + formatter->add(l_version); + } catch (const std::exception &) { + formatter->addQuotedString(l_version); + } + } + if (authority().has_value() && + *(authority()->title()) != l_codeSpace) { + formatter->startNode(WKTConstants::CITATION, false); + formatter->addQuotedString(*(authority()->title())); + formatter->endNode(); + } + if (uri().has_value()) { + formatter->startNode(WKTConstants::URI, false); + formatter->addQuotedString(*(uri())); + formatter->endNode(); + } + formatter->endNode(); + } else { + formatter->startNode(WKTConstants::AUTHORITY, false); + formatter->addQuotedString(l_codeSpace); + formatter->addQuotedString(l_code); + formatter->endNode(); + } + } +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static bool isIgnoredChar(char ch) { + return ch == ' ' || ch == '_' || ch == '-' || ch == '/' || ch == '(' || + ch == ')'; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +std::string Identifier::canonicalizeName(const std::string &str) { + std::string res; + const char *c_str = str.c_str(); + for (size_t i = 0; c_str[i] != 0; ++i) { + const auto ch = c_str[i]; + if (ch == ' ' && c_str[i + 1] == '+' && c_str[i + 2] == ' ') { + i += 2; + continue; + } + if (ch == '1' && !res.empty() && + !(res.back() >= '0' && res.back() <= '9') && c_str[i + 1] == '9' && + c_str[i + 2] >= '0' && c_str[i + 2] <= '9') { + ++i; + continue; + } + if (!isIgnoredChar(ch)) { + res.push_back(static_cast<char>(::tolower(ch))); + } + } + return res; +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Returns whether two names are considered equivalent. + * + * Two names are equivalent by removing any space, underscore, dash, slash, + * { or } character from them, and comparing in a case insensitive way. + */ +bool Identifier::isEquivalentName(const char *a, const char *b) noexcept { + size_t i = 0; + size_t j = 0; + char lastValidA = 0; + char lastValidB = 0; + while (a[i] != 0 && b[j] != 0) { + const char aCh = a[i]; + const char bCh = b[j]; + if (aCh == ' ' && a[i + 1] == '+' && a[i + 2] == ' ') { + i += 3; + continue; + } + if (bCh == ' ' && b[j + 1] == '+' && b[j + 2] == ' ') { + j += 3; + continue; + } + if (isIgnoredChar(aCh)) { + ++i; + continue; + } + if (isIgnoredChar(bCh)) { + ++j; + continue; + } + if (aCh == '1' && !(lastValidA >= '0' && lastValidA <= '9') && + a[i + 1] == '9' && a[i + 2] >= '0' && a[i + 2] <= '9') { + i += 2; + lastValidA = '9'; + continue; + } + if (bCh == '1' && !(lastValidB >= '0' && lastValidB <= '9') && + b[j + 1] == '9' && b[j + 2] >= '0' && b[j + 2] <= '9') { + j += 2; + lastValidB = '9'; + continue; + } + if (::tolower(aCh) != ::tolower(bCh)) { + return false; + } + lastValidA = aCh; + lastValidB = bCh; + ++i; + ++j; + } + while (a[i] != 0 && isIgnoredChar(a[i])) { + ++i; + } + while (b[j] != 0 && isIgnoredChar(b[j])) { + ++j; + } + return a[i] == b[j]; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct PositionalAccuracy::Private { + std::string value_{}; +}; +//! @endcond + +// --------------------------------------------------------------------------- + +PositionalAccuracy::PositionalAccuracy(const std::string &valueIn) + : d(internal::make_unique<Private>()) { + d->value_ = valueIn; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +PositionalAccuracy::~PositionalAccuracy() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Return the value of the positional accuracy. + */ +const std::string &PositionalAccuracy::value() PROJ_CONST_DEFN { + return d->value_; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a PositionalAccuracy. + * + * @param valueIn positional accuracy value. + * @return a new PositionalAccuracy. + */ +PositionalAccuracyNNPtr PositionalAccuracy::create(const std::string &valueIn) { + return PositionalAccuracy::nn_make_shared<PositionalAccuracy>(valueIn); +} + +} // namespace metadata +NS_PROJ_END diff --git a/src/pj_ctx.c b/src/pj_ctx.c index d77bc88a..6626d5ee 100644 --- a/src/pj_ctx.c +++ b/src/pj_ctx.c @@ -29,6 +29,7 @@ #include <stdlib.h> #include <string.h> +#include "proj_internal.h" #include "projects.h" static projCtx_t default_context; @@ -83,6 +84,7 @@ projCtx pj_get_default_ctx() default_context.logger = pj_stderr_logger; default_context.app_data = NULL; default_context.fileapi = pj_get_default_fileapi(); + default_context.cpp_context = NULL; if( getenv("PROJ_DEBUG") != NULL ) { @@ -111,6 +113,7 @@ projCtx pj_ctx_alloc() return 0; memcpy( ctx, pj_get_default_ctx(), sizeof(projCtx_t) ); ctx->last_errno = 0; + ctx->cpp_context = NULL; return ctx; } @@ -122,6 +125,7 @@ projCtx pj_ctx_alloc() void pj_ctx_free( projCtx ctx ) { + proj_context_delete_cpp_context( ctx->cpp_context ); pj_dealloc( ctx ); } diff --git a/src/pj_ellps.c b/src/pj_ellps.c index 5128d47e..08b81c3f 100644 --- a/src/pj_ellps.c +++ b/src/pj_ellps.c @@ -12,8 +12,8 @@ pj_ellps[] = { {"GRS80", "a=6378137.0", "rf=298.257222101", "GRS 1980(IUGG, 1980)"}, {"IAU76", "a=6378140.0", "rf=298.257", "IAU 1976"}, {"airy", "a=6377563.396", "b=6356256.910", "Airy 1830"}, -{"APL4.9", "a=6378137.0.", "rf=298.25", "Appl. Physics. 1965"}, -{"NWL9D", "a=6378145.0.", "rf=298.25", "Naval Weapons Lab., 1965"}, +{"APL4.9", "a=6378137.0", "rf=298.25", "Appl. Physics. 1965"}, +{"NWL9D", "a=6378145.0", "rf=298.25", "Naval Weapons Lab., 1965"}, {"mod_airy", "a=6377340.189", "b=6356034.446", "Modified Airy"}, {"andrae", "a=6377104.43", "rf=300.0", "Andrae 1876 (Den., Iclnd.)"}, {"danish", "a=6377019.2563", "rf=300.0", "Andrae 1876 (Denmark, Iceland)"}, diff --git a/src/pj_units.c b/src/pj_units.c index de43f986..877758a3 100644 --- a/src/pj_units.c +++ b/src/pj_units.c @@ -40,3 +40,19 @@ const PJ_UNITS *proj_list_units() { return pj_units; } + +/* M_PI / 200 */ +#define GRAD_TO_RAD 0.015707963267948967 + +const struct PJ_UNITS +pj_angular_units[] = { + {"rad", "1.0", "Radian", 1.0}, + {"deg", "0.017453292519943296", "Degree", DEG_TO_RAD}, + {"grad", "0.015707963267948967", "Grad", GRAD_TO_RAD}, + {NULL, NULL, NULL, 0.0} +}; + +const PJ_UNITS *proj_list_angular_units() +{ + return pj_angular_units; +} diff --git a/src/proj.def b/src/proj.def deleted file mode 100644 index 80db7d25..00000000 --- a/src/proj.def +++ /dev/null @@ -1,156 +0,0 @@ -VERSION 1.2 -EXPORTS - pj_init @1 - pj_fwd @2 - pj_inv @3 - pj_free @4 - pj_transform @5 - pj_geocentric_to_geodetic @6 - pj_geodetic_to_geocentric @7 - pj_deallocate_grids @8 - pj_init_plus @9 - pj_latlong_from_proj @10 - pj_is_latlong @11 - pj_get_errno_ref @12 - pj_set_finder @13 - pj_strerrno @14 - pj_errno @15 - pj_get_def @16 - pj_dalloc @17 - pj_is_geocent @18 - pj_get_release @19 - pj_malloc @20 - pj_pr_list @21 - pj_compare_datums @22 - pj_apply_gridshift @23 - pj_datum_transform @24 - pj_set_searchpath @25 - dmstor @26 - pj_get_datums_ref @28 - rtodms @32 - set_rtodms @33 - pj_factors @34 - mk_cheby @35 - adjlon @36 - pj_param @37 - pj_ell_set @38 - pj_mkparam @39 - pj_init_ctx @40 - pj_init_plus_ctx @41 - pj_get_default_ctx @42 - pj_get_ctx @43 - pj_set_ctx @44 - pj_ctx_alloc @45 - pj_ctx_free @46 - pj_ctx_get_errno @47 - pj_ctx_set_errno @48 - pj_ctx_set_debug @49 - pj_ctx_set_logger @50 - pj_ctx_set_app_data @51 - pj_ctx_get_app_data @52 - pj_log @53 - pj_clear_initcache @54 - geod_init @55 - geod_lineinit @56 - geod_genposition @57 - geod_position @58 - geod_gendirect @59 - geod_direct @60 - geod_geninverse @61 - geod_inverse @62 - geod_polygonarea @63 - pj_get_spheroid_defn @64 - pj_get_default_fileapi @65 - pj_ctx_set_fileapi @66 - pj_ctx_get_fileapi @67 - pj_ctx_fopen @68 - pj_ctx_fread @69 - pj_ctx_ftell @70 - pj_ctx_fclose @71 - pj_open_lib @72 - pj_atof @73 - pj_strtod @74 - pj_fwd3d @75 - pj_inv3d @76 - geod_gensetdistance @77 - geod_setdistance @78 - geod_gendirectline @79 - geod_directline @80 - geod_inverseline @81 - geod_polygon_init @82 - geod_polygon_addedge @83 - geod_polygon_addpoint @84 - geod_polygon_compute @85 - geod_polygon_testedge @86 - geod_polygon_testpoint @87 - geod_polygon_clear @88 - - pj_find_file @89 - pj_chomp @90 - pj_shrink @91 - pj_approx_2D_trans @92 - pj_approx_3D_trans @93 - pj_has_inverse @94 - pj_param_exists @95 - - proj_create @96 - proj_create_argv @97 - proj_create_crs_to_crs @98 - proj_destroy @99 - - proj_trans @100 - proj_trans_array @101 - proj_trans_generic @102 - proj_roundtrip @103 - - proj_coord @104 - proj_coord_error @105 - - proj_errno @106 - proj_errno_set @107 - proj_errno_reset @108 - proj_errno_restore @109 - proj_context_errno_set @110 - - proj_context_create @111 - proj_context_set @112 - proj_context_inherit @113 - proj_context_destroy @114 - - proj_lp_dist @115 - proj_lpz_dist @116 - proj_xy_dist @117 - proj_xyz_dist @118 - - proj_log_level @119 - proj_log_func @120 - proj_log_error @121 - proj_log_debug @122 - proj_log_trace @123 - - proj_info @124 - proj_pj_info @125 - proj_grid_info @126 - proj_init_info @127 - - proj_torad @128 - proj_todeg @129 - proj_rtodms @131 - proj_dmstor @132 - - proj_factors @133 - - proj_list_operations @134 - proj_list_ellps @135 - proj_list_units @136 - proj_list_prime_meridians @137 - - proj_angular_input @138 - proj_angular_output @139 - - proj_geod @140 - proj_context_errno @141 - - pj_isnan @142 - - proj_errno_string @143 @@ -123,18 +123,42 @@ #error proj.h must be included before proj_api.h #endif +#ifdef PROJ_RENAME_SYMBOLS +#include "proj_symbol_rename.h" +#endif + #ifndef PROJ_H #define PROJ_H #ifdef __cplusplus extern "C" { #endif +/** + * \file proj.h + * + * C API new generation + */ + +/*! @cond Doxygen_Suppress */ + +#ifndef PROJ_DLL +#ifdef PROJ_MSVC_DLL_EXPORT +#define PROJ_DLL __declspec(dllexport) +#elif defined(PROJ_MSVC_DLL_IMPORT) +#define PROJ_DLL __declspec(dllimport) +#elif defined(__GNUC__) +#define PROJ_DLL __attribute__ ((visibility("default"))) +#else +#define PROJ_DLL +#endif +#endif + /* The version numbers should be updated with every release! **/ #define PROJ_VERSION_MAJOR 6 #define PROJ_VERSION_MINOR 0 #define PROJ_VERSION_PATCH 0 -extern char const pj_release[]; /* global release id string */ +extern char const PROJ_DLL pj_release[]; /* global release id string */ /* first forward declare everything needed */ @@ -308,15 +332,15 @@ typedef struct projCtx_t PJ_CONTEXT; /* Functionality for handling thread contexts */ #define PJ_DEFAULT_CTX 0 -PJ_CONTEXT *proj_context_create (void); -PJ_CONTEXT *proj_context_destroy (PJ_CONTEXT *ctx); +PJ_CONTEXT PROJ_DLL *proj_context_create (void); +PJ_CONTEXT PROJ_DLL *proj_context_destroy (PJ_CONTEXT *ctx); /* Manage the transformation definition object PJ */ -PJ *proj_create (PJ_CONTEXT *ctx, const char *definition); -PJ *proj_create_argv (PJ_CONTEXT *ctx, int argc, char **argv); -PJ *proj_create_crs_to_crs(PJ_CONTEXT *ctx, const char *srid_from, const char *srid_to, PJ_AREA *area); -PJ *proj_destroy (PJ *P); +PJ PROJ_DLL *proj_create (PJ_CONTEXT *ctx, const char *definition); +PJ PROJ_DLL *proj_create_argv (PJ_CONTEXT *ctx, int argc, char **argv); +PJ PROJ_DLL *proj_create_crs_to_crs(PJ_CONTEXT *ctx, const char *srid_from, const char *srid_to, PJ_AREA *area); +PJ PROJ_DLL *proj_destroy (PJ *P); /* Setter-functions for the opaque PJ_AREA struct */ /* Uncomment these when implementing support for area-based transformations. @@ -333,13 +357,13 @@ enum PJ_DIRECTION { typedef enum PJ_DIRECTION PJ_DIRECTION; -int proj_angular_input (PJ *P, enum PJ_DIRECTION dir); -int proj_angular_output (PJ *P, enum PJ_DIRECTION dir); +int PROJ_DLL proj_angular_input (PJ *P, enum PJ_DIRECTION dir); +int PROJ_DLL proj_angular_output (PJ *P, enum PJ_DIRECTION dir); -PJ_COORD proj_trans (PJ *P, PJ_DIRECTION direction, PJ_COORD coord); -int proj_trans_array (PJ *P, PJ_DIRECTION direction, size_t n, PJ_COORD *coord); -size_t proj_trans_generic ( +PJ_COORD PROJ_DLL proj_trans (PJ *P, PJ_DIRECTION direction, PJ_COORD coord); +int PROJ_DLL proj_trans_array (PJ *P, PJ_DIRECTION direction, size_t n, PJ_COORD *coord); +size_t PROJ_DLL proj_trans_generic ( PJ *P, PJ_DIRECTION direction, double *x, size_t sx, size_t nx, @@ -350,62 +374,1058 @@ size_t proj_trans_generic ( /* Initializers */ -PJ_COORD proj_coord (double x, double y, double z, double t); +PJ_COORD PROJ_DLL proj_coord (double x, double y, double z, double t); /* Measure internal consistency - in forward or inverse direction */ -double proj_roundtrip (PJ *P, PJ_DIRECTION direction, int n, PJ_COORD *coord); +double PROJ_DLL proj_roundtrip (PJ *P, PJ_DIRECTION direction, int n, PJ_COORD *coord); /* Geodesic distance between two points with angular 2D coordinates */ -double proj_lp_dist (const PJ *P, PJ_COORD a, PJ_COORD b); +double PROJ_DLL proj_lp_dist (const PJ *P, PJ_COORD a, PJ_COORD b); /* The geodesic distance AND the vertical offset */ -double proj_lpz_dist (const PJ *P, PJ_COORD a, PJ_COORD b); +double PROJ_DLL proj_lpz_dist (const PJ *P, PJ_COORD a, PJ_COORD b); /* Euclidean distance between two points with linear 2D coordinates */ -double proj_xy_dist (PJ_COORD a, PJ_COORD b); +double PROJ_DLL proj_xy_dist (PJ_COORD a, PJ_COORD b); /* Euclidean distance between two points with linear 3D coordinates */ -double proj_xyz_dist (PJ_COORD a, PJ_COORD b); +double PROJ_DLL proj_xyz_dist (PJ_COORD a, PJ_COORD b); /* Geodesic distance (in meter) + fwd and rev azimuth between two points on the ellipsoid */ -PJ_COORD proj_geod (const PJ *P, PJ_COORD a, PJ_COORD b); +PJ_COORD PROJ_DLL proj_geod (const PJ *P, PJ_COORD a, PJ_COORD b); /* Set or read error level */ -int proj_context_errno (PJ_CONTEXT *ctx); -int proj_errno (const PJ *P); -int proj_errno_set (const PJ *P, int err); -int proj_errno_reset (const PJ *P); -int proj_errno_restore (const PJ *P, int err); -const char* proj_errno_string (int err); +int PROJ_DLL proj_context_errno (PJ_CONTEXT *ctx); +int PROJ_DLL proj_errno (const PJ *P); +int PROJ_DLL proj_errno_set (const PJ *P, int err); +int PROJ_DLL proj_errno_reset (const PJ *P); +int PROJ_DLL proj_errno_restore (const PJ *P, int err); +const char PROJ_DLL * proj_errno_string (int err); -PJ_LOG_LEVEL proj_log_level (PJ_CONTEXT *ctx, PJ_LOG_LEVEL log_level); -void proj_log_func (PJ_CONTEXT *ctx, void *app_data, PJ_LOG_FUNCTION logf); +PJ_LOG_LEVEL PROJ_DLL proj_log_level (PJ_CONTEXT *ctx, PJ_LOG_LEVEL log_level); +void PROJ_DLL proj_log_func (PJ_CONTEXT *ctx, void *app_data, PJ_LOG_FUNCTION logf); /* Scaling and angular distortion factors */ -PJ_FACTORS proj_factors(PJ *P, PJ_COORD lp); +PJ_FACTORS PROJ_DLL proj_factors(PJ *P, PJ_COORD lp); /* Info functions - get information about various PROJ.4 entities */ -PJ_INFO proj_info(void); -PJ_PROJ_INFO proj_pj_info(PJ *P); -PJ_GRID_INFO proj_grid_info(const char *gridname); -PJ_INIT_INFO proj_init_info(const char *initname); +PJ_INFO PROJ_DLL proj_info(void); +PJ_PROJ_INFO PROJ_DLL proj_pj_info(PJ *P); +PJ_GRID_INFO PROJ_DLL proj_grid_info(const char *gridname); +PJ_INIT_INFO PROJ_DLL proj_init_info(const char *initname); /* List functions: */ /* Get lists of operations, ellipsoids, units and prime meridians. */ -const PJ_OPERATIONS *proj_list_operations(void); -const PJ_ELLPS *proj_list_ellps(void); -const PJ_UNITS *proj_list_units(void); -const PJ_PRIME_MERIDIANS *proj_list_prime_meridians(void); +const PJ_OPERATIONS PROJ_DLL *proj_list_operations(void); +const PJ_ELLPS PROJ_DLL *proj_list_ellps(void); +const PJ_UNITS PROJ_DLL *proj_list_units(void); +const PJ_UNITS PROJ_DLL *proj_list_angular_units(void); +const PJ_PRIME_MERIDIANS PROJ_DLL *proj_list_prime_meridians(void); /* These are trivial, and while occasionally useful in real code, primarily here to */ /* simplify demo code, and in acknowledgement of the proj-internal discrepancy between */ /* angular units expected by classical proj, and by Charles Karney's geodesics subsystem */ -double proj_torad (double angle_in_degrees); -double proj_todeg (double angle_in_radians); +double PROJ_DLL proj_torad (double angle_in_degrees); +double PROJ_DLL proj_todeg (double angle_in_radians); + +double PROJ_DLL proj_dmstor(const char *is, char **rs); +char PROJ_DLL * proj_rtodms(char *s, double r, int pos, int neg); + +/*! @endcond */ + +/* ------------------------------------------------------------------------- */ +/* Binding in C of C++ API */ +/* ------------------------------------------------------------------------- */ + +/*! @cond Doxygen_Suppress */ +typedef struct PJ_OBJ PJ_OBJ; +/*! @endcond */ + +/*! @cond Doxygen_Suppress */ +typedef struct PJ_OBJ_LIST PJ_OBJ_LIST; +/*! @endcond */ + +int PROJ_DLL proj_context_set_database_path(PJ_CONTEXT *ctx, + const char *dbPath, + const char *const *auxDbPaths, + const char* const *options); + +const char PROJ_DLL *proj_context_get_database_path(PJ_CONTEXT *ctx); + +/** \brief Guessed WKT "dialect". */ +typedef enum +{ + /** \ref WKT2_2018 */ + PJ_GUESSED_WKT2_2018, + + /** \ref WKT2_2015 */ + PJ_GUESSED_WKT2_2015, + + /** \ref WKT1 */ + PJ_GUESSED_WKT1_GDAL, + + /** ESRI variant of WKT1 */ + PJ_GUESSED_WKT1_ESRI, + + /** Not WKT / unrecognized */ + PJ_GUESSED_NOT_WKT +} PJ_GUESSED_WKT_DIALECT; + +PJ_GUESSED_WKT_DIALECT PROJ_DLL proj_context_guess_wkt_dialect(PJ_CONTEXT *ctx, + const char *wkt); + +PJ_OBJ PROJ_DLL *proj_obj_create_from_user_input(PJ_CONTEXT *ctx, + const char *text, + const char* const *options); + +PJ_OBJ PROJ_DLL *proj_obj_create_from_wkt(PJ_CONTEXT *ctx, const char *wkt, + const char* const *options); + +PJ_OBJ PROJ_DLL *proj_obj_create_from_proj_string(PJ_CONTEXT *ctx, + const char *proj_string, + const char* const *options); + +/** \brief Object category. */ +typedef enum +{ + PJ_OBJ_CATEGORY_ELLIPSOID, + PJ_OBJ_CATEGORY_DATUM, + PJ_OBJ_CATEGORY_CRS, + PJ_OBJ_CATEGORY_COORDINATE_OPERATION +} PJ_OBJ_CATEGORY; + +PJ_OBJ PROJ_DLL *proj_obj_create_from_database(PJ_CONTEXT *ctx, + const char *auth_name, + const char *code, + PJ_OBJ_CATEGORY category, + int usePROJAlternativeGridNames, + const char* const *options); + +void PROJ_DLL proj_obj_unref(PJ_OBJ *obj); + +/** \brief Object type. */ +typedef enum +{ + PJ_OBJ_TYPE_ELLIPSOID, + + PJ_OBJ_TYPE_GEODETIC_REFERENCE_FRAME, + PJ_OBJ_TYPE_DYNAMIC_GEODETIC_REFERENCE_FRAME, + PJ_OBJ_TYPE_VERTICAL_REFERENCE_FRAME, + PJ_OBJ_TYPE_DYNAMIC_VERTICAL_REFERENCE_FRAME, + PJ_OBJ_TYPE_DATUM_ENSEMBLE, + + /** Abstract type, not returned by proj_obj_get_type() */ + PJ_OBJ_TYPE_CRS, + + PJ_OBJ_TYPE_GEODETIC_CRS, + PJ_OBJ_TYPE_GEOCENTRIC_CRS, + + /** proj_obj_get_type() will never return that type, but + * PJ_OBJ_TYPE_GEOGRAPHIC_2D_CRS or PJ_OBJ_TYPE_GEOGRAPHIC_3D_CRS. */ + PJ_OBJ_TYPE_GEOGRAPHIC_CRS, + + PJ_OBJ_TYPE_GEOGRAPHIC_2D_CRS, + PJ_OBJ_TYPE_GEOGRAPHIC_3D_CRS, + PJ_OBJ_TYPE_VERTICAL_CRS, + PJ_OBJ_TYPE_PROJECTED_CRS, + PJ_OBJ_TYPE_COMPOUND_CRS, + PJ_OBJ_TYPE_TEMPORAL_CRS, + PJ_OBJ_TYPE_BOUND_CRS, + PJ_OBJ_TYPE_OTHER_CRS, + + PJ_OBJ_TYPE_CONVERSION, + PJ_OBJ_TYPE_TRANSFORMATION, + PJ_OBJ_TYPE_CONCATENATED_OPERATION, + PJ_OBJ_TYPE_OTHER_COORDINATE_OPERATION, + + PJ_OBJ_TYPE_UNKNOWN +} PJ_OBJ_TYPE; + +PJ_OBJ_LIST PROJ_DLL *proj_obj_create_from_name(PJ_CONTEXT *ctx, + const char *auth_name, + const char *searchedName, + const PJ_OBJ_TYPE* types, + size_t typesCount, + int approximateMatch, + size_t limitResultCount, + const char* const *options); + +PJ_OBJ PROJ_DLL *proj_obj_create_geographic_crs( + PJ_CONTEXT *ctx, + const char *geogName, + const char *datumName, + const char *ellipsoidName, + double semiMajorMetre, double invFlattening, + const char *primeMeridianName, + double primeMeridianOffset, + const char *angularUnits, + double angularUnitsConv, + int latLongOrder); + +/* BEGIN: Generated by scripts/create_c_api_projections.py*/ +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_UTM( + PJ_OBJ* geodetic_crs, const char* crs_name, + int zone, + int north +); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TransverseMercator( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLat, + double centerLong, + double scale, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GaussSchreiberTransverseMercator( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLat, + double centerLong, + double scale, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TransverseMercatorSouthOriented( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLat, + double centerLong, + double scale, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TwoPointEquidistant( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeFirstPoint, + double longitudeFirstPoint, + double latitudeSecondPoint, + double longitudeSeconPoint, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_TunisiaMappingGrid( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLat, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_AlbersEqualArea( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeFalseOrigin, + double longitudeFalseOrigin, + double latitudeFirstParallel, + double latitudeSecondParallel, + double eastingFalseOrigin, + double northingFalseOrigin, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_1SP( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLat, + double centerLong, + double scale, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_2SP( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeFalseOrigin, + double longitudeFalseOrigin, + double latitudeFirstParallel, + double latitudeSecondParallel, + double eastingFalseOrigin, + double northingFalseOrigin, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_2SP_Michigan( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeFalseOrigin, + double longitudeFalseOrigin, + double latitudeFirstParallel, + double latitudeSecondParallel, + double eastingFalseOrigin, + double northingFalseOrigin, + double ellipsoidScalingFactor, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertConicConformal_2SP_Belgium( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeFalseOrigin, + double longitudeFalseOrigin, + double latitudeFirstParallel, + double latitudeSecondParallel, + double eastingFalseOrigin, + double northingFalseOrigin, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_AzimuthalEquidistant( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeNatOrigin, + double longitudeNatOrigin, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GuamProjection( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeNatOrigin, + double longitudeNatOrigin, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Bonne( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeNatOrigin, + double longitudeNatOrigin, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertCylindricalEqualAreaSpherical( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeFirstParallel, + double longitudeNatOrigin, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertCylindricalEqualArea( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeFirstParallel, + double longitudeNatOrigin, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_CassiniSoldner( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLat, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EquidistantConic( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLat, + double centerLong, + double latitudeFirstParallel, + double latitudeSecondParallel, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EckertI( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EckertII( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EckertIII( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EckertIV( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EckertV( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EckertVI( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EquidistantCylindrical( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeFirstParallel, + double longitudeNatOrigin, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EquidistantCylindricalSpherical( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeFirstParallel, + double longitudeNatOrigin, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Gall( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GoodeHomolosine( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_InterruptedGoodeHomolosine( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GeostationarySatelliteSweepX( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double height, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_GeostationarySatelliteSweepY( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double height, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Gnomonic( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLat, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_HotineObliqueMercatorVariantA( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeProjectionCentre, + double longitudeProjectionCentre, + double azimuthInitialLine, + double angleFromRectifiedToSkrewGrid, + double scale, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_HotineObliqueMercatorVariantB( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeProjectionCentre, + double longitudeProjectionCentre, + double azimuthInitialLine, + double angleFromRectifiedToSkrewGrid, + double scale, + double eastingProjectionCentre, + double northingProjectionCentre, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_HotineObliqueMercatorTwoPointNaturalOrigin( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeProjectionCentre, + double latitudePoint1, + double longitudePoint1, + double latitudePoint2, + double longitudePoint2, + double scale, + double eastingProjectionCentre, + double northingProjectionCentre, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_InternationalMapWorldPolyconic( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double latitudeFirstParallel, + double latitudeSecondParallel, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_KrovakNorthOriented( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeProjectionCentre, + double longitudeOfOrigin, + double colatitudeConeAxis, + double latitudePseudoStandardParallel, + double scaleFactorPseudoStandardParallel, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Krovak( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeProjectionCentre, + double longitudeOfOrigin, + double colatitudeConeAxis, + double latitudePseudoStandardParallel, + double scaleFactorPseudoStandardParallel, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_LambertAzimuthalEqualArea( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeNatOrigin, + double longitudeNatOrigin, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_MillerCylindrical( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_MercatorVariantA( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLat, + double centerLong, + double scale, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_MercatorVariantB( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeFirstParallel, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_PopularVisualisationPseudoMercator( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLat, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Mollweide( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_NewZealandMappingGrid( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLat, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_ObliqueStereographic( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLat, + double centerLong, + double scale, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Orthographic( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLat, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_AmericanPolyconic( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLat, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_PolarStereographicVariantA( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLat, + double centerLong, + double scale, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_PolarStereographicVariantB( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeStandardParallel, + double longitudeOfOrigin, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Robinson( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Sinusoidal( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_Stereographic( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLat, + double centerLong, + double scale, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_VanDerGrinten( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerI( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerII( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerIII( + PJ_OBJ* geodetic_crs, const char* crs_name, + double latitudeTrueScale, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerIV( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerV( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerVI( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_WagnerVII( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_QuadrilateralizedSphericalCube( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLat, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_SphericalCrossTrackHeight( + PJ_OBJ* geodetic_crs, const char* crs_name, + double pegPointLat, + double pegPointLong, + double pegPointHeading, + double pegPointHeight, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +PJ_OBJ PROJ_DLL *proj_obj_create_projected_crs_EqualEarth( + PJ_OBJ* geodetic_crs, const char* crs_name, + double centerLong, + double falseEasting, + double falseNorthing, + const char* angUnitName, double angUnitConvFactor, + const char* linearUnitName, double linearUnitConvFactor); + +/* END: Generated by scripts/create_c_api_projections.py*/ + +PJ_OBJ_TYPE PROJ_DLL proj_obj_get_type(PJ_OBJ *obj); + +int PROJ_DLL proj_obj_is_deprecated(PJ_OBJ *obj); + +/** Comparison criterion. */ +typedef enum +{ + /** All properties are identical. */ + PJ_COMP_STRICT, + + /** The objects are equivalent for the purpose of coordinate + * operations. They can differ by the name of their objects, + * identifiers, other metadata. + * Parameters may be expressed in different units, provided that the + * value is (with some tolerance) the same once expressed in a + * common unit. + */ + PJ_COMP_EQUIVALENT, + + /** Same as EQUIVALENT, relaxed with an exception that the axis order + * of the base CRS of a DerivedCRS/ProjectedCRS or the axis order of + * a GeographicCRS is ignored. Only to be used + * with DerivedCRS/ProjectedCRS/GeographicCRS */ + PJ_COMP_EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS, +} PJ_COMPARISON_CRITERION; + +int PROJ_DLL proj_obj_is_equivalent_to(PJ_OBJ *obj, PJ_OBJ* other, + PJ_COMPARISON_CRITERION criterion); + +int PROJ_DLL proj_obj_is_crs(PJ_OBJ *obj); + +const char PROJ_DLL* proj_obj_get_name(PJ_OBJ *obj); + +const char PROJ_DLL* proj_obj_get_id_auth_name(PJ_OBJ *obj, int index); + +const char PROJ_DLL* proj_obj_get_id_code(PJ_OBJ *obj, int index); + +int PROJ_DLL proj_obj_get_area_of_use(PJ_OBJ *obj, + double* p_west_lon, + double* p_south_lat, + double* p_east_lon, + double* p_north_lat, + const char **p_area_name); + +/** \brief WKT version. */ +typedef enum +{ + /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2 */ + PJ_WKT2_2015, + /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2_SIMPLIFIED */ + PJ_WKT2_2015_SIMPLIFIED, + /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2_2018 */ + PJ_WKT2_2018, + /** cf osgeo::proj::io::WKTFormatter::Convention::WKT2_2018_SIMPLIFIED */ + PJ_WKT2_2018_SIMPLIFIED, + /** cf osgeo::proj::io::WKTFormatter::Convention::WKT1_GDAL */ + PJ_WKT1_GDAL, + /** cf osgeo::proj::io::WKTFormatter::Convention::WKT1_ESRI */ + PJ_WKT1_ESRI +} PJ_WKT_TYPE; + +const char PROJ_DLL* proj_obj_as_wkt(PJ_OBJ *obj, PJ_WKT_TYPE type, + const char* const *options); + +/** \brief PROJ string version. */ +typedef enum +{ + /** cf osgeo::proj::io::PROJStringFormatter::Convention::PROJ_5 */ + PJ_PROJ_5, + /** cf osgeo::proj::io::PROJStringFormatter::Convention::PROJ_4 */ + PJ_PROJ_4 +} PJ_PROJ_STRING_TYPE; + +const char PROJ_DLL* proj_obj_as_proj_string(PJ_OBJ *obj, + PJ_PROJ_STRING_TYPE type, + const char* const *options); + +PJ_OBJ PROJ_DLL *proj_obj_get_source_crs(PJ_OBJ *obj); + +PJ_OBJ PROJ_DLL *proj_obj_get_target_crs(PJ_OBJ *obj); + +PJ_OBJ_LIST PROJ_DLL *proj_obj_identify(PJ_OBJ* obj, + const char *auth_name, + const char* const *options, + int **confidence); + +void PROJ_DLL proj_free_int_list(int* list); + +/* ------------------------------------------------------------------------- */ + +/** \brief Type representing a NULL terminated list of NUL-terminate strings. */ +typedef char **PROJ_STRING_LIST; + +PROJ_STRING_LIST PROJ_DLL proj_get_authorities_from_database(PJ_CONTEXT *ctx); + +PROJ_STRING_LIST PROJ_DLL proj_get_codes_from_database(PJ_CONTEXT *ctx, + const char *auth_name, + PJ_OBJ_TYPE type, + int allow_deprecated); + +void PROJ_DLL proj_free_string_list(PROJ_STRING_LIST list); + +/* ------------------------------------------------------------------------- */ + + +/*! @cond Doxygen_Suppress */ +typedef struct PJ_OPERATION_FACTORY_CONTEXT PJ_OPERATION_FACTORY_CONTEXT; +/*! @endcond */ + +PJ_OPERATION_FACTORY_CONTEXT PROJ_DLL *proj_create_operation_factory_context( + PJ_CONTEXT *ctx, + const char *authority); + +void PROJ_DLL proj_operation_factory_context_unref( + PJ_OPERATION_FACTORY_CONTEXT *ctxt); + +void PROJ_DLL proj_operation_factory_context_set_desired_accuracy( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + double accuracy); + +void PROJ_DLL proj_operation_factory_context_set_area_of_interest( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + double west_lon, + double south_lat, + double east_lon, + double north_lat); + +/** Specify how source and target CRS extent should be used to restrict + * candidate operations (only taken into account if no explicit area of + * interest is specified. */ +typedef enum +{ + /** Ignore CRS extent */ + PJ_CRS_EXTENT_NONE, + + /** Test coordinate operation extent against both CRS extent. */ + PJ_CRS_EXTENT_BOTH, + + /** Test coordinate operation extent against the intersection of both + CRS extent. */ + PJ_CRS_EXTENT_INTERSECTION, + + /** Test coordinate operation against the smallest of both CRS extent. */ + PJ_CRS_EXTENT_SMALLEST +} PROJ_CRS_EXTENT_USE; + +void PROJ_DLL proj_operation_factory_context_set_crs_extent_use( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + PROJ_CRS_EXTENT_USE use); + +/** Spatial criterion to restrict candiate operations. */ +typedef enum { + /** The area of validity of transforms should strictly contain the + * are of interest. */ + PROJ_SPATIAL_CRITERION_STRICT_CONTAINMENT, + + /** The area of validity of transforms should at least intersect the + * area of interest. */ + PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION +} PROJ_SPATIAL_CRITERION; + +void PROJ_DLL proj_operation_factory_context_set_spatial_criterion( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + PROJ_SPATIAL_CRITERION criterion); + + +/** Describe how grid availability is used. */ +typedef enum { + /** Grid availability is only used for sorting results. Operations + * where some grids are missing will be sorted last. */ + PROJ_GRID_AVAILABILITY_USED_FOR_SORTING, + + /** Completely discard an operation if a required grid is missing. */ + PROJ_GRID_AVAILABILITY_DISCARD_OPERATION_IF_MISSING_GRID, + + /** Ignore grid availability at all. Results will be presented as if + * all grids were available. */ + PROJ_GRID_AVAILABILITY_IGNORED, +} PROJ_GRID_AVAILABILITY_USE; + +void PROJ_DLL proj_operation_factory_context_set_grid_availability_use( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + PROJ_GRID_AVAILABILITY_USE use); + +void PROJ_DLL proj_operation_factory_context_set_use_proj_alternative_grid_names( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + int usePROJNames); + +void PROJ_DLL proj_operation_factory_context_set_allow_use_intermediate_crs( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, int allow); + +void PROJ_DLL proj_operation_factory_context_set_allowed_intermediate_crs( + PJ_OPERATION_FACTORY_CONTEXT *ctxt, + const char* const *list_of_auth_name_codes); + +/* ------------------------------------------------------------------------- */ + + +PJ_OBJ_LIST PROJ_DLL *proj_obj_create_operations( + PJ_OBJ *source_crs, + PJ_OBJ *target_crs, + PJ_OPERATION_FACTORY_CONTEXT *operationContext); + +int PROJ_DLL proj_obj_list_get_count(PJ_OBJ_LIST *result); + +PJ_OBJ PROJ_DLL *proj_obj_list_get(PJ_OBJ_LIST *result, + int index); + +void PROJ_DLL proj_obj_list_unref(PJ_OBJ_LIST *result); + +/* ------------------------------------------------------------------------- */ + +PJ_OBJ PROJ_DLL *proj_obj_crs_get_geodetic_crs(PJ_OBJ *crs); + +PJ_OBJ PROJ_DLL *proj_obj_crs_get_horizontal_datum(PJ_OBJ *crs); + +PJ_OBJ PROJ_DLL *proj_obj_crs_get_sub_crs(PJ_OBJ *crs, int index); + +PJ_OBJ PROJ_DLL *proj_obj_crs_create_bound_crs_to_WGS84(PJ_OBJ *crs); + +PJ_OBJ PROJ_DLL *proj_obj_get_ellipsoid(PJ_OBJ *obj); + +int PROJ_DLL proj_obj_ellipsoid_get_parameters(PJ_OBJ *ellipsoid, + double *pSemiMajorMetre, + double *pSemiMinorMetre, + int *pIsSemiMinorComputed, + double *pInverseFlattening); + +PJ_OBJ PROJ_DLL *proj_obj_get_prime_meridian(PJ_OBJ *obj); + +int PROJ_DLL proj_obj_prime_meridian_get_parameters(PJ_OBJ *prime_meridian, + double *pLongitude, + double *pLongitudeUnitConvFactor, + const char **pLongitudeUnitName); + +PJ_OBJ PROJ_DLL *proj_obj_crs_get_coordoperation(PJ_OBJ *crs, + const char **pMethodName, + const char **pMethodAuthorityName, + const char **pMethodCode); + +int PROJ_DLL proj_coordoperation_is_instanciable(PJ_OBJ *coordoperation); + +int PROJ_DLL proj_coordoperation_get_param_count(PJ_OBJ *coordoperation); + +int PROJ_DLL proj_coordoperation_get_param_index(PJ_OBJ *coordoperation, + const char *name); + +int PROJ_DLL proj_coordoperation_get_param(PJ_OBJ *coordoperation, + int index, + const char **pName, + const char **pNameAuthorityName, + const char **pNameCode, + double *pValue, + const char **pValueString, + double *pValueUnitConvFactor, + const char **pValueUnitName); + +int PROJ_DLL proj_coordoperation_get_grid_used_count(PJ_OBJ *coordoperation); + +int PROJ_DLL proj_coordoperation_get_grid_used(PJ_OBJ *coordoperation, + int index, + const char **pShortName, + const char **pFullName, + const char **pPackageName, + const char **pURL, + int *pDirectDownload, + int *pOpenLicense, + int *pAvailable); -double proj_dmstor(const char *is, char **rs); -char* proj_rtodms(char *s, double r, int pos, int neg); +double PROJ_DLL proj_coordoperation_get_accuracy(PJ_OBJ* obj); #ifdef __cplusplus } diff --git a/src/proj_api.h b/src/proj_api.h index 000a0baf..a8a7f106 100644 --- a/src/proj_api.h +++ b/src/proj_api.h @@ -41,6 +41,10 @@ #define PJ_VERSION 600 #endif +#ifdef PROJ_RENAME_SYMBOLS +#include "proj_symbol_rename.h" +#endif + /* If we're not asked for PJ_VERSION only, give them everything */ #ifndef PROJ_API_INCLUDED_FOR_PJ_VERSION_ONLY @@ -53,6 +57,17 @@ #include <stddef.h> #include <stdlib.h> +#ifndef PROJ_DLL +#ifdef PROJ_MSVC_DLL_EXPORT +#define PROJ_DLL __declspec(dllexport) +#elif defined(PROJ_MSVC_DLL_IMPORT) +#define PROJ_DLL __declspec(dllimport) +#elif defined(__GNUC__) +#define PROJ_DLL __attribute__ ((visibility("default"))) +#else +#define PROJ_DLL +#endif +#endif #ifdef __cplusplus extern "C" { @@ -73,8 +88,8 @@ extern "C" { -extern char const pj_release[]; /* global release id string */ -extern int pj_errno; /* global error return code */ +extern char const PROJ_DLL pj_release[]; /* global release id string */ +PROJ_DLL extern int pj_errno; /* global error return code */ #ifndef PROJ_INTERNAL_H /* replaced by enum proj_log_level in proj_internal.h */ @@ -128,87 +143,87 @@ typedef struct projFileAPI_t { /* procedure prototypes */ -projCtx pj_get_default_ctx(void); -projCtx pj_get_ctx( projPJ ); +projCtx PROJ_DLL pj_get_default_ctx(void); +projCtx PROJ_DLL pj_get_ctx( projPJ ); -projXY pj_fwd(projLP, projPJ); -projLP pj_inv(projXY, projPJ); +projXY PROJ_DLL pj_fwd(projLP, projPJ); +projLP PROJ_DLL pj_inv(projXY, projPJ); -projXYZ pj_fwd3d(projLPZ, projPJ); -projLPZ pj_inv3d(projXYZ, projPJ); +projXYZ PROJ_DLL pj_fwd3d(projLPZ, projPJ); +projLPZ PROJ_DLL pj_inv3d(projXYZ, projPJ); -int pj_transform( projPJ src, projPJ dst, long point_count, int point_offset, +int PROJ_DLL pj_transform( projPJ src, projPJ dst, long point_count, int point_offset, double *x, double *y, double *z ); -int pj_datum_transform( projPJ src, projPJ dst, long point_count, int point_offset, +int PROJ_DLL pj_datum_transform( projPJ src, projPJ dst, long point_count, int point_offset, double *x, double *y, double *z ); -int pj_geocentric_to_geodetic( double a, double es, +int PROJ_DLL pj_geocentric_to_geodetic( double a, double es, long point_count, int point_offset, double *x, double *y, double *z ); -int pj_geodetic_to_geocentric( double a, double es, +int PROJ_DLL pj_geodetic_to_geocentric( double a, double es, long point_count, int point_offset, double *x, double *y, double *z ); -int pj_compare_datums( projPJ srcdefn, projPJ dstdefn ); -int pj_apply_gridshift( projCtx, const char *, int, +int PROJ_DLL pj_compare_datums( projPJ srcdefn, projPJ dstdefn ); +int PROJ_DLL pj_apply_gridshift( projCtx, const char *, int, long point_count, int point_offset, double *x, double *y, double *z ); -void pj_deallocate_grids(void); -void pj_clear_initcache(void); -int pj_is_latlong(projPJ); -int pj_is_geocent(projPJ); -void pj_get_spheroid_defn(projPJ defn, double *major_axis, double *eccentricity_squared); -void pj_pr_list(projPJ); -void pj_free(projPJ); -void pj_set_finder( const char *(*)(const char *) ); -void pj_set_searchpath ( int count, const char **path ); -projPJ pj_init(int, char **); -projPJ pj_init_plus(const char *); -projPJ pj_init_ctx( projCtx, int, char ** ); -projPJ pj_init_plus_ctx( projCtx, const char * ); -char *pj_get_def(projPJ, int); -projPJ pj_latlong_from_proj( projPJ ); -int pj_has_inverse(projPJ); - - -void *pj_malloc(size_t); -void pj_dalloc(void *); -void *pj_calloc (size_t n, size_t size); -void *pj_dealloc (void *ptr); -char *pj_strdup(const char *str); -char *pj_strerrno(int); -int *pj_get_errno_ref(void); -const char *pj_get_release(void); -void pj_acquire_lock(void); -void pj_release_lock(void); -void pj_cleanup_lock(void); - -void pj_set_ctx( projPJ, projCtx ); -projCtx pj_ctx_alloc(void); -void pj_ctx_free( projCtx ); -int pj_ctx_get_errno( projCtx ); -void pj_ctx_set_errno( projCtx, int ); -void pj_ctx_set_debug( projCtx, int ); -void pj_ctx_set_logger( projCtx, void (*)(void *, int, const char *) ); -void pj_ctx_set_app_data( projCtx, void * ); -void *pj_ctx_get_app_data( projCtx ); -void pj_ctx_set_fileapi( projCtx, projFileAPI *); -projFileAPI *pj_ctx_get_fileapi( projCtx ); - -void pj_log( projCtx ctx, int level, const char *fmt, ... ); -void pj_stderr_logger( void *, int, const char * ); +void PROJ_DLL pj_deallocate_grids(void); +void PROJ_DLL pj_clear_initcache(void); +int PROJ_DLL pj_is_latlong(projPJ); +int PROJ_DLL pj_is_geocent(projPJ); +void PROJ_DLL pj_get_spheroid_defn(projPJ defn, double *major_axis, double *eccentricity_squared); +void PROJ_DLL pj_pr_list(projPJ); +void PROJ_DLL pj_free(projPJ); +void PROJ_DLL pj_set_finder( const char *(*)(const char *) ); +void PROJ_DLL pj_set_searchpath ( int count, const char **path ); +projPJ PROJ_DLL pj_init(int, char **); +projPJ PROJ_DLL pj_init_plus(const char *); +projPJ PROJ_DLL pj_init_ctx( projCtx, int, char ** ); +projPJ PROJ_DLL pj_init_plus_ctx( projCtx, const char * ); +char PROJ_DLL *pj_get_def(projPJ, int); +projPJ PROJ_DLL pj_latlong_from_proj( projPJ ); +int PROJ_DLL pj_has_inverse(projPJ); + + +void PROJ_DLL *pj_malloc(size_t); +void PROJ_DLL pj_dalloc(void *); +void PROJ_DLL *pj_calloc (size_t n, size_t size); +void PROJ_DLL *pj_dealloc (void *ptr); +char PROJ_DLL *pj_strdup(const char *str); +char PROJ_DLL *pj_strerrno(int); +int PROJ_DLL *pj_get_errno_ref(void); +const char PROJ_DLL *pj_get_release(void); +void PROJ_DLL pj_acquire_lock(void); +void PROJ_DLL pj_release_lock(void); +void PROJ_DLL pj_cleanup_lock(void); + +void PROJ_DLL pj_set_ctx( projPJ, projCtx ); +projCtx PROJ_DLL pj_ctx_alloc(void); +void PROJ_DLL pj_ctx_free( projCtx ); +int PROJ_DLL pj_ctx_get_errno( projCtx ); +void PROJ_DLL pj_ctx_set_errno( projCtx, int ); +void PROJ_DLL pj_ctx_set_debug( projCtx, int ); +void PROJ_DLL pj_ctx_set_logger( projCtx, void (*)(void *, int, const char *) ); +void PROJ_DLL pj_ctx_set_app_data( projCtx, void * ); +void PROJ_DLL *pj_ctx_get_app_data( projCtx ); +void PROJ_DLL pj_ctx_set_fileapi( projCtx, projFileAPI *); +projFileAPI PROJ_DLL *pj_ctx_get_fileapi( projCtx ); + +void PROJ_DLL pj_log( projCtx ctx, int level, const char *fmt, ... ); +void PROJ_DLL pj_stderr_logger( void *, int, const char * ); /* file api */ -projFileAPI *pj_get_default_fileapi(void); +projFileAPI PROJ_DLL *pj_get_default_fileapi(void); -PAFile pj_ctx_fopen(projCtx ctx, const char *filename, const char *access); -size_t pj_ctx_fread(projCtx ctx, void *buffer, size_t size, size_t nmemb, PAFile file); -int pj_ctx_fseek(projCtx ctx, PAFile file, long offset, int whence); -long pj_ctx_ftell(projCtx ctx, PAFile file); -void pj_ctx_fclose(projCtx ctx, PAFile file); -char *pj_ctx_fgets(projCtx ctx, char *line, int size, PAFile file); +PAFile PROJ_DLL pj_ctx_fopen(projCtx ctx, const char *filename, const char *access); +size_t PROJ_DLL pj_ctx_fread(projCtx ctx, void *buffer, size_t size, size_t nmemb, PAFile file); +int PROJ_DLL pj_ctx_fseek(projCtx ctx, PAFile file, long offset, int whence); +long PROJ_DLL pj_ctx_ftell(projCtx ctx, PAFile file); +void PROJ_DLL pj_ctx_fclose(projCtx ctx, PAFile file); +char PROJ_DLL *pj_ctx_fgets(projCtx ctx, char *line, int size, PAFile file); -PAFile pj_open_lib(projCtx, const char *, const char *); -int pj_find_file(projCtx ctx, const char *short_filename, +PAFile PROJ_DLL pj_open_lib(projCtx, const char *, const char *); +int PROJ_DLL pj_find_file(projCtx ctx, const char *short_filename, char* out_full_filename, size_t out_full_filename_size); #ifdef __cplusplus diff --git a/src/proj_constants.h b/src/proj_constants.h new file mode 100644 index 00000000..d3f33c73 --- /dev/null +++ b/src/proj_constants.h @@ -0,0 +1,580 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: Constants + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef PROJ_CONSTANTS_INCLUDED +#define PROJ_CONSTANTS_INCLUDED + +/* Projection methods */ + +#define EPSG_NAME_METHOD_TRANSVERSE_MERCATOR "Transverse Mercator" +#define EPSG_CODE_METHOD_TRANSVERSE_MERCATOR 9807 + +#define EPSG_NAME_METHOD_TRANSVERSE_MERCATOR_SOUTH_ORIENTATED \ + "Transverse Mercator (South Orientated)" +#define EPSG_CODE_METHOD_TRANSVERSE_MERCATOR_SOUTH_ORIENTATED 9808 + +#define PROJ_WKT2_NAME_METHOD_TWO_POINT_EQUIDISTANT "Two Point Equidistant" + +#define EPSG_NAME_METHOD_LAMBERT_CONIC_CONFORMAL_1SP \ + "Lambert Conic Conformal (1SP)" +#define EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP 9801 + +#define EPSG_NAME_METHOD_NZMG "New Zealand Map Grid" +#define EPSG_CODE_METHOD_NZMG 9811 + +#define EPSG_NAME_METHOD_TUNISIA_MAPPING_GRID "Tunisia Mapping Grid" +#define EPSG_CODE_METHOD_TUNISIA_MAPPING_GRID 9816 + +#define EPSG_NAME_METHOD_ALBERS_EQUAL_AREA "Albers Equal Area" +#define EPSG_CODE_METHOD_ALBERS_EQUAL_AREA 9822 + +#define EPSG_NAME_METHOD_LAMBERT_CONIC_CONFORMAL_2SP \ + "Lambert Conic Conformal (2SP)" +#define EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP 9802 + +#define EPSG_NAME_METHOD_LAMBERT_CONIC_CONFORMAL_2SP_BELGIUM \ + "Lambert Conic Conformal (2SP Belgium)" +#define EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP_BELGIUM 9803 + +#define EPSG_NAME_METHOD_LAMBERT_CONIC_CONFORMAL_2SP_MICHIGAN \ + "Lambert Conic Conformal (2SP Michigan)" +#define EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP_MICHIGAN 1051 + +#define EPSG_NAME_METHOD_MODIFIED_AZIMUTHAL_EQUIDISTANT \ + "Modified Azimuthal Equidistant" +#define EPSG_CODE_METHOD_MODIFIED_AZIMUTHAL_EQUIDISTANT 9832 + +#define EPSG_NAME_METHOD_GUAM_PROJECTION "Guam Projection" +#define EPSG_CODE_METHOD_GUAM_PROJECTION 9831 + +#define EPSG_NAME_METHOD_BONNE "Bonne" +#define EPSG_CODE_METHOD_BONNE 9827 + +#define EPSG_NAME_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA_SPHERICAL \ + "Lambert Cylindrical Equal Area (Spherical)" +#define EPSG_CODE_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA_SPHERICAL 9834 + +#define EPSG_NAME_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA \ + "Lambert Cylindrical Equal Area" +#define EPSG_CODE_METHOD_LAMBERT_CYLINDRICAL_EQUAL_AREA 9835 + +#define EPSG_NAME_METHOD_CASSINI_SOLDNER "Cassini-Soldner" +#define EPSG_CODE_METHOD_CASSINI_SOLDNER 9806 + +#define PROJ_WKT2_NAME_METHOD_EQUIDISTANT_CONIC "Equidistant Conic" + +#define PROJ_WKT2_NAME_METHOD_ECKERT_I "Eckert I" + +#define PROJ_WKT2_NAME_METHOD_ECKERT_II "Eckert II" + +#define PROJ_WKT2_NAME_METHOD_ECKERT_III "Eckert III" + +#define PROJ_WKT2_NAME_METHOD_ECKERT_IV "Eckert IV" + +#define PROJ_WKT2_NAME_METHOD_ECKERT_V "Eckert V" + +#define PROJ_WKT2_NAME_METHOD_ECKERT_VI "Eckert VI" + +#define EPSG_NAME_METHOD_EQUIDISTANT_CYLINDRICAL "Equidistant Cylindrical" +#define EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL 1028 + +#define EPSG_NAME_METHOD_EQUIDISTANT_CYLINDRICAL_SPHERICAL \ + "Equidistant Cylindrical (Spherical)" +#define EPSG_CODE_METHOD_EQUIDISTANT_CYLINDRICAL_SPHERICAL 1029 + +#define PROJ_WKT2_NAME_METHOD_GALL_STEREOGRAPHIC "Gall Stereographic" + +#define PROJ_WKT2_NAME_METHOD_GOODE_HOMOLOSINE "Goode Homolosine" + +#define PROJ_WKT2_NAME_METHOD_INTERRUPTED_GOODE_HOMOLOSINE \ + "Interrupted Goode Homolosine" + +#define PROJ_WKT2_NAME_METHOD_GEOSTATIONARY_SATELLITE_SWEEP_X \ + "Geostationary Satellite (Sweep X)" + +#define PROJ_WKT2_NAME_METHOD_GEOSTATIONARY_SATELLITE_SWEEP_Y \ + "Geostationary Satellite (Sweep Y)" + +#define PROJ_WKT2_NAME_METHOD_GAUSS_SCHREIBER_TRANSVERSE_MERCATOR \ + "Gauss Schreiber Transverse Mercator" + +#define PROJ_WKT2_NAME_METHOD_GNOMONIC "Gnomonic" + +#define EPSG_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_A \ + "Hotine Oblique Mercator (variant A)" +#define EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_A 9812 + +#define EPSG_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B \ + "Hotine Oblique Mercator (variant B)" +#define EPSG_CODE_METHOD_HOTINE_OBLIQUE_MERCATOR_VARIANT_B 9815 + +#define PROJ_WKT2_NAME_METHOD_HOTINE_OBLIQUE_MERCATOR_TWO_POINT_NATURAL_ORIGIN \ + "Hotine Oblique Mercator Two Point Natural Origin" + +#define PROJ_WKT2_NAME_INTERNATIONAL_MAP_WORLD_POLYCONIC \ + "International Map of the World Polyconic" + +#define EPSG_NAME_METHOD_KROVAK_NORTH_ORIENTED "Krovak (North Orientated)" +#define EPSG_CODE_METHOD_KROVAK_NORTH_ORIENTED 1041 + +#define EPSG_NAME_METHOD_KROVAK "Krovak" +#define EPSG_CODE_METHOD_KROVAK 9819 + +#define EPSG_NAME_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA \ + "Lambert Azimuthal Equal Area" +#define EPSG_CODE_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA 9820 + +#define EPSG_NAME_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA_SPHERICAL \ + "Lambert Azimuthal Equal Area (Spherical)" +#define EPSG_CODE_METHOD_LAMBERT_AZIMUTHAL_EQUAL_AREA_SPHERICAL 1027 + +#define PROJ_WKT2_NAME_METHOD_MILLER_CYLINDRICAL "Miller Cylindrical" + +#define EPSG_CODE_METHOD_MERCATOR_VARIANT_A 9804 +#define EPSG_NAME_METHOD_MERCATOR_VARIANT_A "Mercator (variant A)" + +#define EPSG_CODE_METHOD_MERCATOR_VARIANT_B 9805 +#define EPSG_NAME_METHOD_MERCATOR_VARIANT_B "Mercator (variant B)" + +#define EPSG_NAME_METHOD_POPULAR_VISUALISATION_PSEUDO_MERCATOR \ + "Popular Visualisation Pseudo Mercator" +#define EPSG_CODE_METHOD_POPULAR_VISUALISATION_PSEUDO_MERCATOR 1024 + +#define PROJ_WKT2_NAME_METHOD_MOLLWEIDE "Mollweide" + +#define EPSG_NAME_METHOD_OBLIQUE_STEREOGRAPHIC "Oblique Stereographic" +#define EPSG_CODE_METHOD_OBLIQUE_STEREOGRAPHIC 9809 + +#define EPSG_NAME_METHOD_ORTHOGRAPHIC "Orthographic" +#define EPSG_CODE_METHOD_ORTHOGRAPHIC 9840 + +#define EPSG_NAME_METHOD_AMERICAN_POLYCONIC "American Polyconic" +#define EPSG_CODE_METHOD_AMERICAN_POLYCONIC 9818 + +#define EPSG_NAME_METHOD_POLAR_STEREOGRAPHIC_VARIANT_A \ + "Polar Stereographic (variant A)" +#define EPSG_CODE_METHOD_POLAR_STEREOGRAPHIC_VARIANT_A 9810 + +#define EPSG_NAME_METHOD_POLAR_STEREOGRAPHIC_VARIANT_B \ + "Polar Stereographic (variant B)" +#define EPSG_CODE_METHOD_POLAR_STEREOGRAPHIC_VARIANT_B 9829 + +#define PROJ_WKT2_NAME_METHOD_ROBINSON "Robinson" + +#define PROJ_WKT2_NAME_METHOD_SINUSOIDAL "Sinusoidal" + +#define PROJ_WKT2_NAME_METHOD_STEREOGRAPHIC "Stereographic" + +#define PROJ_WKT2_NAME_METHOD_VAN_DER_GRINTEN "Van Der Grinten" + +#define PROJ_WKT2_NAME_METHOD_WAGNER_I "Wagner I" +#define PROJ_WKT2_NAME_METHOD_WAGNER_II "Wagner II" +#define PROJ_WKT2_NAME_METHOD_WAGNER_III "Wagner III" +#define PROJ_WKT2_NAME_METHOD_WAGNER_IV "Wagner IV" +#define PROJ_WKT2_NAME_METHOD_WAGNER_V "Wagner V" +#define PROJ_WKT2_NAME_METHOD_WAGNER_VI "Wagner VI" +#define PROJ_WKT2_NAME_METHOD_WAGNER_VII "Wagner VII" + +#define PROJ_WKT2_NAME_METHOD_QUADRILATERALIZED_SPHERICAL_CUBE \ + "Quadrilateralized Spherical Cube" + +#define PROJ_WKT2_NAME_METHOD_SPHERICAL_CROSS_TRACK_HEIGHT \ + "Spherical Cross-Track Height" + +#define EPSG_NAME_METHOD_EQUAL_EARTH "Equal Earth" +#define EPSG_CODE_METHOD_EQUAL_EARTH 1078 + +#define EPSG_NAME_METHOD_LABORDE_OBLIQUE_MERCATOR "Laborde Oblique Mercator" +#define EPSG_CODE_METHOD_LABORDE_OBLIQUE_MERCATOR 9813 + +/* ------------------------------------------------------------------------ */ + +/* Projection parameters */ + +#define EPSG_NAME_PARAMETER_COLATITUDE_CONE_AXIS "Co-latitude of cone axis" +#define EPSG_CODE_PARAMETER_COLATITUDE_CONE_AXIS 1036 + +#define EPSG_NAME_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN \ + "Latitude of natural origin" +#define EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN 8801 + +#define EPSG_NAME_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN \ + "Longitude of natural origin" +#define EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN 8802 + +#define EPSG_NAME_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN \ + "Scale factor at natural origin" +#define EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN 8805 + +#define EPSG_NAME_PARAMETER_FALSE_EASTING "False easting" +#define EPSG_CODE_PARAMETER_FALSE_EASTING 8806 + +#define EPSG_NAME_PARAMETER_FALSE_NORTHING "False northing" +#define EPSG_CODE_PARAMETER_FALSE_NORTHING 8807 + +#define EPSG_NAME_PARAMETER_LATITUDE_PROJECTION_CENTRE \ + "Latitude of projection centre" +#define EPSG_CODE_PARAMETER_LATITUDE_PROJECTION_CENTRE 8811 + +#define EPSG_NAME_PARAMETER_LONGITUDE_PROJECTION_CENTRE \ + "Longitude of projection centre" +#define EPSG_CODE_PARAMETER_LONGITUDE_PROJECTION_CENTRE 8812 + +#define EPSG_NAME_PARAMETER_AZIMUTH_INITIAL_LINE "Azimuth of initial line" +#define EPSG_CODE_PARAMETER_AZIMUTH_INITIAL_LINE 8813 + +#define EPSG_NAME_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID \ + "Angle from Rectified to Skew Grid" +#define EPSG_CODE_PARAMETER_ANGLE_RECTIFIED_TO_SKEW_GRID 8814 + +#define EPSG_NAME_PARAMETER_SCALE_FACTOR_INITIAL_LINE \ + "Scale factor on initial line" +#define EPSG_CODE_PARAMETER_SCALE_FACTOR_INITIAL_LINE 8815 + +#define EPSG_NAME_PARAMETER_EASTING_PROJECTION_CENTRE \ + "Easting at projection centre" +#define EPSG_CODE_PARAMETER_EASTING_PROJECTION_CENTRE 8816 + +#define EPSG_NAME_PARAMETER_NORTHING_PROJECTION_CENTRE \ + "Northing at projection centre" +#define EPSG_CODE_PARAMETER_NORTHING_PROJECTION_CENTRE 8817 + +#define EPSG_NAME_PARAMETER_LATITUDE_PSEUDO_STANDARD_PARALLEL \ + "Latitude of pseudo standard parallel" +#define EPSG_CODE_PARAMETER_LATITUDE_PSEUDO_STANDARD_PARALLEL 8818 + +#define EPSG_NAME_PARAMETER_SCALE_FACTOR_PSEUDO_STANDARD_PARALLEL \ + "Scale factor on pseudo standard parallel" +#define EPSG_CODE_PARAMETER_SCALE_FACTOR_PSEUDO_STANDARD_PARALLEL 8819 + +#define EPSG_NAME_PARAMETER_LATITUDE_FALSE_ORIGIN "Latitude of false origin" +#define EPSG_CODE_PARAMETER_LATITUDE_FALSE_ORIGIN 8821 + +#define EPSG_NAME_PARAMETER_LONGITUDE_FALSE_ORIGIN "Longitude of false origin" +#define EPSG_CODE_PARAMETER_LONGITUDE_FALSE_ORIGIN 8822 + +#define EPSG_NAME_PARAMETER_LATITUDE_1ST_STD_PARALLEL \ + "Latitude of 1st standard parallel" +#define EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL 8823 + +#define EPSG_NAME_PARAMETER_LATITUDE_2ND_STD_PARALLEL \ + "Latitude of 2nd standard parallel" +#define EPSG_CODE_PARAMETER_LATITUDE_2ND_STD_PARALLEL 8824 + +#define EPSG_NAME_PARAMETER_EASTING_FALSE_ORIGIN "Easting at false origin" +#define EPSG_CODE_PARAMETER_EASTING_FALSE_ORIGIN 8826 + +#define EPSG_NAME_PARAMETER_NORTHING_FALSE_ORIGIN "Northing at false origin" +#define EPSG_CODE_PARAMETER_NORTHING_FALSE_ORIGIN 8827 + +#define EPSG_NAME_PARAMETER_LATITUDE_STD_PARALLEL "Latitude of standard parallel" +#define EPSG_CODE_PARAMETER_LATITUDE_STD_PARALLEL 8832 + +#define EPSG_NAME_PARAMETER_LONGITUDE_OF_ORIGIN "Longitude of origin" +#define EPSG_CODE_PARAMETER_LONGITUDE_OF_ORIGIN 8833 + +#define EPSG_NAME_PARAMETER_ELLIPSOID_SCALE_FACTOR "Ellipsoid scaling factor" +#define EPSG_CODE_PARAMETER_ELLIPSOID_SCALE_FACTOR 1038 + +/* ------------------------------------------------------------------------ */ + +/* Other conversions and transformations */ + +#define EPSG_NAME_METHOD_COORDINATE_FRAME_GEOCENTRIC \ + "Coordinate Frame rotation (geocentric domain)" +#define EPSG_CODE_METHOD_COORDINATE_FRAME_GEOCENTRIC 1032 + +#define EPSG_NAME_METHOD_COORDINATE_FRAME_GEOGRAPHIC_2D \ + "Coordinate Frame rotation (geog2D domain)" +#define EPSG_CODE_METHOD_COORDINATE_FRAME_GEOGRAPHIC_2D 9607 + +#define EPSG_NAME_METHOD_COORDINATE_FRAME_GEOGRAPHIC_3D \ + "Coordinate Frame rotation (geog3D domain)" +#define EPSG_CODE_METHOD_COORDINATE_FRAME_GEOGRAPHIC_3D 1038 + +#define EPSG_NAME_METHOD_POSITION_VECTOR_GEOCENTRIC \ + "Position Vector transformation (geocentric domain)" +#define EPSG_CODE_METHOD_POSITION_VECTOR_GEOCENTRIC 1033 + +#define EPSG_NAME_METHOD_POSITION_VECTOR_GEOGRAPHIC_2D \ + "Position Vector transformation (geog2D domain)" +#define EPSG_CODE_METHOD_POSITION_VECTOR_GEOGRAPHIC_2D 9606 + +#define EPSG_NAME_METHOD_POSITION_VECTOR_GEOGRAPHIC_3D \ + "Position Vector transformation (geog3D domain)" +#define EPSG_CODE_METHOD_POSITION_VECTOR_GEOGRAPHIC_3D 1037 + +#define EPSG_NAME_METHOD_GEOCENTRIC_TRANSLATION_GEOCENTRIC \ + "Geocentric translations (geocentric domain)" +#define EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOCENTRIC 1031 + +#define EPSG_NAME_METHOD_GEOCENTRIC_TRANSLATION_GEOGRAPHIC_2D \ + "Geocentric translations (geog2D domain)" +#define EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOGRAPHIC_2D 9603 + +#define EPSG_NAME_METHOD_GEOCENTRIC_TRANSLATION_GEOGRAPHIC_3D \ + "Geocentric translations (geog3D domain)" +#define EPSG_CODE_METHOD_GEOCENTRIC_TRANSLATION_GEOGRAPHIC_3D 1035 + +#define EPSG_NAME_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOCENTRIC \ + "Time-dependent Position Vector tfm (geocentric)" +#define EPSG_CODE_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOCENTRIC 1053 + +#define EPSG_NAME_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOGRAPHIC_2D \ + "Time-dependent Position Vector tfm (geog2D)" +#define EPSG_CODE_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOGRAPHIC_2D 1054 + +#define EPSG_NAME_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOGRAPHIC_3D \ + "Time-dependent Position Vector tfm (geog3D)" +#define EPSG_CODE_METHOD_TIME_DEPENDENT_POSITION_VECTOR_GEOGRAPHIC_3D 1055 + +#define EPSG_NAME_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOCENTRIC \ + "Time-dependent Coordinate Frame rotation geocen)" +#define EPSG_CODE_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOCENTRIC \ + 1056 + +#define EPSG_NAME_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOGRAPHIC_2D \ + "Time-dependent Coordinate Frame rotation (geog2D)" +#define EPSG_CODE_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOGRAPHIC_2D 1057 + +#define EPSG_NAME_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOGRAPHIC_3D \ + "Time-dependent Coordinate Frame rotation (geog3D)" +#define EPSG_CODE_METHOD_TIME_DEPENDENT_COORDINATE_FRAME_GEOGRAPHIC_3D 1058 + +#define EPSG_NAME_METHOD_MOLODENSKY_BADEKAS_CF_GEOCENTRIC \ + "Molodensky-Badekas (CF geocentric domain)" +#define EPSG_CODE_METHOD_MOLODENSKY_BADEKAS_CF_GEOCENTRIC 1034 + +#define EPSG_NAME_METHOD_MOLODENSKY_BADEKAS_PV_GEOCENTRIC \ + "Molodensky-Badekas (PV geocentric domain)" +#define EPSG_CODE_METHOD_MOLODENSKY_BADEKAS_PV_GEOCENTRIC 1061 + +#define EPSG_NAME_METHOD_MOLODENSKY_BADEKAS_CF_GEOGRAPHIC_3D \ + "Molodensky-Badekas (CF geog3D domain)" +#define EPSG_CODE_METHOD_MOLODENSKY_BADEKAS_CF_GEOGRAPHIC_3D 1039 + +#define EPSG_NAME_METHOD_MOLODENSKY_BADEKAS_PV_GEOGRAPHIC_3D \ + "Molodensky-Badekas (PV geog3D domain)" +#define EPSG_CODE_METHOD_MOLODENSKY_BADEKAS_PV_GEOGRAPHIC_3D 1062 + +#define EPSG_NAME_METHOD_MOLODENSKY_BADEKAS_CF_GEOGRAPHIC_2D \ + "Molodensky-Badekas (CF geog2D domain)" +#define EPSG_CODE_METHOD_MOLODENSKY_BADEKAS_CF_GEOGRAPHIC_2D 9636 + +#define EPSG_NAME_METHOD_MOLODENSKY_BADEKAS_PV_GEOGRAPHIC_2D \ + "Molodensky-Badekas (PV geog2D domain)" +#define EPSG_CODE_METHOD_MOLODENSKY_BADEKAS_PV_GEOGRAPHIC_2D 1063 + +#define EPSG_CODE_PARAMETER_X_AXIS_TRANSLATION 8605 +#define EPSG_CODE_PARAMETER_Y_AXIS_TRANSLATION 8606 +#define EPSG_CODE_PARAMETER_Z_AXIS_TRANSLATION 8607 +#define EPSG_CODE_PARAMETER_X_AXIS_ROTATION 8608 +#define EPSG_CODE_PARAMETER_Y_AXIS_ROTATION 8609 +#define EPSG_CODE_PARAMETER_Z_AXIS_ROTATION 8610 +#define EPSG_CODE_PARAMETER_SCALE_DIFFERENCE 8611 +#define EPSG_CODE_PARAMETER_RATE_X_AXIS_TRANSLATION 1040 +#define EPSG_CODE_PARAMETER_RATE_Y_AXIS_TRANSLATION 1041 +#define EPSG_CODE_PARAMETER_RATE_Z_AXIS_TRANSLATION 1042 +#define EPSG_CODE_PARAMETER_RATE_X_AXIS_ROTATION 1043 +#define EPSG_CODE_PARAMETER_RATE_Y_AXIS_ROTATION 1044 +#define EPSG_CODE_PARAMETER_RATE_Z_AXIS_ROTATION 1045 +#define EPSG_CODE_PARAMETER_RATE_SCALE_DIFFERENCE 1046 +#define EPSG_CODE_PARAMETER_REFERENCE_EPOCH 1047 +#define EPSG_CODE_PARAMETER_TRANSFORMATION_REFERENCE_EPOCH 1049 + +#define EPSG_NAME_PARAMETER_X_AXIS_TRANSLATION "X-axis translation" +#define EPSG_NAME_PARAMETER_Y_AXIS_TRANSLATION "Y-axis translation" +#define EPSG_NAME_PARAMETER_Z_AXIS_TRANSLATION "Z-axis translation" +#define EPSG_NAME_PARAMETER_X_AXIS_ROTATION "X-axis rotation" +#define EPSG_NAME_PARAMETER_Y_AXIS_ROTATION "Y-axis rotation" +#define EPSG_NAME_PARAMETER_Z_AXIS_ROTATION "Z-axis rotation" +#define EPSG_NAME_PARAMETER_SCALE_DIFFERENCE "Scale difference" + +#define EPSG_NAME_PARAMETER_RATE_X_AXIS_TRANSLATION \ + "Rate of change of X-axis translation" +#define EPSG_NAME_PARAMETER_RATE_Y_AXIS_TRANSLATION \ + "Rate of change of Y-axis translation" +#define EPSG_NAME_PARAMETER_RATE_Z_AXIS_TRANSLATION \ + "Rate of change of Z-axis translation" +#define EPSG_NAME_PARAMETER_RATE_X_AXIS_ROTATION \ + "Rate of change of X-axis rotation" +#define EPSG_NAME_PARAMETER_RATE_Y_AXIS_ROTATION \ + "Rate of change of Y-axis rotation" +#define EPSG_NAME_PARAMETER_RATE_Z_AXIS_ROTATION \ + "Rate of change of Z-axis rotation" +#define EPSG_NAME_PARAMETER_RATE_SCALE_DIFFERENCE \ + "Rate of change of Scale difference" +#define EPSG_NAME_PARAMETER_REFERENCE_EPOCH "Parameter reference epoch" + +#define EPSG_CODE_PARAMETER_ORDINATE_1_EVAL_POINT 8617 +#define EPSG_CODE_PARAMETER_ORDINATE_2_EVAL_POINT 8618 +#define EPSG_CODE_PARAMETER_ORDINATE_3_EVAL_POINT 8667 + +#define \ + EPSG_NAME_PARAMETER_ORDINATE_1_EVAL_POINT "Ordinate 1 of evaluation point" +#define \ + EPSG_NAME_PARAMETER_ORDINATE_2_EVAL_POINT "Ordinate 2 of evaluation point" +#define \ + EPSG_NAME_PARAMETER_ORDINATE_3_EVAL_POINT "Ordinate 3 of evaluation point" + +#define EPSG_NAME_PARAMETER_TRANSFORMATION_REFERENCE_EPOCH \ + "Transformation reference epoch" + +#define EPSG_NAME_METHOD_MOLODENSKY "Molodensky" +#define EPSG_CODE_METHOD_MOLODENSKY 9604 + +#define EPSG_NAME_METHOD_ABRIDGED_MOLODENSKY "Abridged Molodensky" +#define EPSG_CODE_METHOD_ABRIDGED_MOLODENSKY 9605 + +#define EPSG_CODE_PARAMETER_SEMI_MAJOR_AXIS_DIFFERENCE 8654 +#define EPSG_CODE_PARAMETER_FLATTENING_DIFFERENCE 8655 + +#define EPSG_NAME_PARAMETER_SEMI_MAJOR_AXIS_DIFFERENCE \ + "Semi-major axis length difference" +#define \ + EPSG_NAME_PARAMETER_FLATTENING_DIFFERENCE "Flattening difference" + +/* ------------------------------------------------------------------------ */ + +#define EPSG_CODE_METHOD_NTV1 9614 +#define EPSG_NAME_METHOD_NTV1 "NTv1" + +#define EPSG_CODE_METHOD_NTV2 9615 +#define EPSG_NAME_METHOD_NTV2 "NTv2" + +#define EPSG_CODE_PARAMETER_LATITUDE_LONGITUDE_DIFFERENCE_FILE 8656 +#define EPSG_NAME_PARAMETER_LATITUDE_LONGITUDE_DIFFERENCE_FILE \ + "Latitude and longitude difference file" + +#define EPSG_NAME_PARAMETER_GEOID_CORRECTION_FILENAME \ + "Geoid (height correction) model file" +#define EPSG_CODE_PARAMETER_GEOID_CORRECTION_FILENAME 8666 + +/* ------------------------------------------------------------------------ */ + +#define PROJ_WKT2_NAME_METHOD_HEIGHT_TO_GEOG3D \ + "GravityRelatedHeight to Geographic3D" + +#define PROJ_WKT2_NAME_METHOD_CTABLE2 "CTABLE2" + +/* ------------------------------------------------------------------------ */ + +#define EPSG_CODE_METHOD_VERTCON 9658 +#define EPSG_NAME_METHOD_VERTCON "VERTCON" + +#define EPSG_NAME_PARAMETER_VERTICAL_OFFSET_FILE "Vertical offset file" +#define EPSG_CODE_PARAMETER_VERTICAL_OFFSET_FILE 8732 + +/* ------------------------------------------------------------------------ */ + +#define EPSG_CODE_METHOD_NADCON 9613 +#define EPSG_NAME_METHOD_NADCON "NADCON" + +#define EPSG_NAME_PARAMETER_LATITUDE_DIFFERENCE_FILE "Latitude difference file" +#define EPSG_CODE_PARAMETER_LATITUDE_DIFFERENCE_FILE 8657 + +#define \ + EPSG_NAME_PARAMETER_LONGITUDE_DIFFERENCE_FILE "Longitude difference file" +#define EPSG_CODE_PARAMETER_LONGITUDE_DIFFERENCE_FILE 8658 + +/* ------------------------------------------------------------------------ */ + +#define EPSG_CODE_METHOD_CHANGE_VERTICAL_UNIT 1069 +#define EPSG_NAME_METHOD_CHANGE_VERTICAL_UNIT "Change of Vertical Unit" + +#define EPSG_NAME_PARAMETER_UNIT_CONVERSION_SCALAR "Unit conversion scalar" +#define EPSG_CODE_PARAMETER_UNIT_CONVERSION_SCALAR 1051 + +/* ------------------------------------------------------------------------ */ + +#define EPSG_CODE_METHOD_LONGITUDE_ROTATION 9601 +#define EPSG_NAME_METHOD_LONGITUDE_ROTATION "Longitude rotation" + +#define EPSG_CODE_METHOD_VERTICAL_OFFSET 9616 +#define EPSG_NAME_METHOD_VERTICAL_OFFSET "Vertical Offset" + +#define EPSG_CODE_METHOD_GEOGRAPHIC2D_OFFSETS 9619 +#define EPSG_NAME_METHOD_GEOGRAPHIC2D_OFFSETS "Geographic2D offsets" + +#define EPSG_CODE_METHOD_GEOGRAPHIC2D_WITH_HEIGHT_OFFSETS 9618 +#define EPSG_NAME_METHOD_GEOGRAPHIC2D_WITH_HEIGHT_OFFSETS \ + "Geographic2D with Height Offsets" + +#define EPSG_CODE_METHOD_GEOGRAPHIC3D_OFFSETS 9660 +#define EPSG_NAME_METHOD_GEOGRAPHIC3D_OFFSETS "Geographic3D offsets" + +#define EPSG_CODE_METHOD_GEOGRAPHIC_GEOCENTRIC 9602 +#define \ + EPSG_NAME_METHOD_GEOGRAPHIC_GEOCENTRIC "Geographic/geocentric conversions" + +#define EPSG_NAME_PARAMETER_LATITUDE_OFFSET "Latitude offset" +#define EPSG_CODE_PARAMETER_LATITUDE_OFFSET 8601 + +#define EPSG_NAME_PARAMETER_LONGITUDE_OFFSET "Longitude offset" +#define EPSG_CODE_PARAMETER_LONGITUDE_OFFSET 8602 + +#define EPSG_NAME_PARAMETER_VERTICAL_OFFSET "Vertical Offset" +#define EPSG_CODE_PARAMETER_VERTICAL_OFFSET 8603 + +#define EPSG_NAME_PARAMETER_GEOID_UNDULATION "Geoid undulation" +#define EPSG_CODE_PARAMETER_GEOID_UNDULATION 8604 + +/* ------------------------------------------------------------------------ */ + +#define EPSG_CODE_METHOD_AFFINE_PARAMETRIC_TRANSFORMATION 9624 +#define EPSG_NAME_METHOD_AFFINE_PARAMETRIC_TRANSFORMATION \ + "Affine parametric transformation" + +#define EPSG_NAME_PARAMETER_A0 "A0" +#define EPSG_CODE_PARAMETER_A0 8623 + +#define EPSG_NAME_PARAMETER_A1 "A1" +#define EPSG_CODE_PARAMETER_A1 8624 + +#define EPSG_NAME_PARAMETER_A2 "A2" +#define EPSG_CODE_PARAMETER_A2 8625 + +#define EPSG_NAME_PARAMETER_B0 "B0" +#define EPSG_CODE_PARAMETER_B0 8639 + +#define EPSG_NAME_PARAMETER_B1 "B1" +#define EPSG_CODE_PARAMETER_B1 8640 + +#define EPSG_NAME_PARAMETER_B2 "B2" +#define EPSG_CODE_PARAMETER_B2 8641 + +/* ------------------------------------------------------------------------ */ + +#define EPSG_CODE_METHOD_AXIS_ORDER_REVERSAL_2D 9843 +#define EPSG_NAME_METHOD_AXIS_ORDER_REVERSAL_2D "Axis Order Reversal (2D)" + +#define EPSG_CODE_METHOD_AXIS_ORDER_REVERSAL_3D 9844 +#define EPSG_NAME_METHOD_AXIS_ORDER_REVERSAL_3D \ + "Axis Order Reversal (Geographic3D horizontal)" + +#endif /* PROJ_CONSTANTS_INCLUDED */ diff --git a/src/proj_internal.h b/src/proj_internal.h index 76f5d952..d5154f78 100644 --- a/src/proj_internal.h +++ b/src/proj_internal.h @@ -44,6 +44,10 @@ #error proj_internal.h must be included before proj_api.h #endif +#ifdef PROJ_RENAME_SYMBOLS +#include "proj_symbol_rename.h" +#endif + #ifndef PROJ_INTERNAL_H #define PROJ_INTERNAL_H #ifdef __cplusplus @@ -79,17 +83,21 @@ enum pj_io_units { enum pj_io_units pj_left (PJ *P); enum pj_io_units pj_right (PJ *P); -PJ_COORD proj_coord_error (void); +PJ_COORD PROJ_DLL proj_coord_error (void); void proj_context_errno_set (PJ_CONTEXT *ctx, int err); -void proj_context_set (PJ *P, PJ_CONTEXT *ctx); +void PROJ_DLL proj_context_set (PJ *P, PJ_CONTEXT *ctx); void proj_context_inherit (PJ *parent, PJ *child); +struct projCppContext; +/* not sure why we need to export it, but mingw needs it */ +void PROJ_DLL proj_context_delete_cpp_context(struct projCppContext* cppContext); + PJ_COORD pj_fwd4d (PJ_COORD coo, PJ *P); PJ_COORD pj_inv4d (PJ_COORD coo, PJ *P); -PJ_COORD pj_approx_2D_trans (PJ *P, PJ_DIRECTION direction, PJ_COORD coo); -PJ_COORD pj_approx_3D_trans (PJ *P, PJ_DIRECTION direction, PJ_COORD coo); +PJ_COORD PROJ_DLL pj_approx_2D_trans (PJ *P, PJ_DIRECTION direction, PJ_COORD coo); +PJ_COORD PROJ_DLL pj_approx_3D_trans (PJ *P, PJ_DIRECTION direction, PJ_COORD coo); /* Grid functionality */ @@ -99,7 +107,7 @@ double proj_vgrid_value(PJ *P, PJ_LP lp); PJ_LP proj_hgrid_value(PJ *P, PJ_LP lp); PJ_LP proj_hgrid_apply(PJ *P, PJ_LP lp, PJ_DIRECTION direction); -void proj_log_error (PJ *P, const char *fmt, ...); +void PROJ_DLL proj_log_error (PJ *P, const char *fmt, ...); void proj_log_debug (PJ *P, const char *fmt, ...); void proj_log_trace (PJ *P, const char *fmt, ...); @@ -111,8 +119,8 @@ int pj_calc_ellipsoid_params (PJ *P, double a, double es); /* Geographical to geocentric latitude - another of the "simple, but useful" */ PJ_COORD pj_geocentric_latitude (const PJ *P, PJ_DIRECTION direction, PJ_COORD coord); -char *pj_chomp (char *c); -char *pj_shrink (char *c); +char PROJ_DLL *pj_chomp (char *c); +char PROJ_DLL *pj_shrink (char *c); size_t pj_trim_argc (char *args); char **pj_trim_argv (size_t argc, char *args); char *pj_make_args (size_t argc, char **argv); diff --git a/src/proj_math.h b/src/proj_math.h index f6dd7e09..5aea494d 100644 --- a/src/proj_math.h +++ b/src/proj_math.h @@ -37,6 +37,22 @@ extern "C" { #if !(defined(HAVE_C99_MATH) && HAVE_C99_MATH) +#ifndef PROJ_DLL +#ifdef PROJ_MSVC_DLL_EXPORT +#define PROJ_DLL __declspec(dllexport) +#elif defined(PROJ_MSVC_DLL_IMPORT) +#define PROJ_DLL __declspec(dllimport) +#elif defined(__GNUC__) +#define PROJ_DLL __attribute__ ((visibility("default"))) +#else +#define PROJ_DLL +#endif +#endif + +#ifdef PROJ_RENAME_SYMBOLS +#include "proj_symbol_rename.h" +#endif + #ifndef NAN #ifdef _WIN32 #define NAN sqrt(-1.0) @@ -50,7 +66,7 @@ double pj_log1p(double x); double pj_asinh(double x); double pj_round(double x); long pj_lround(double x); -int pj_isnan(double x); +int PROJ_DLL pj_isnan(double x); #define hypot pj_hypot #define log1p pj_log1p diff --git a/src/proj_symbol_rename.h b/src/proj_symbol_rename.h new file mode 100644 index 00000000..d0dd09eb --- /dev/null +++ b/src/proj_symbol_rename.h @@ -0,0 +1,273 @@ +/* This is a generated file by create_proj_symbol_rename.sh. *DO NOT EDIT MANUALLY !* */ +#ifndef PROJ_SYMBOL_RENAME_H +#define PROJ_SYMBOL_RENAME_H +#define adjlon internal_adjlon +#define dmstor internal_dmstor +#define emess internal_emess +#define geod_direct internal_geod_direct +#define geod_directline internal_geod_directline +#define geod_gendirect internal_geod_gendirect +#define geod_gendirectline internal_geod_gendirectline +#define geod_geninverse internal_geod_geninverse +#define geod_genposition internal_geod_genposition +#define geod_gensetdistance internal_geod_gensetdistance +#define geod_init internal_geod_init +#define geod_inverse internal_geod_inverse +#define geod_inverseline internal_geod_inverseline +#define geod_lineinit internal_geod_lineinit +#define geod_polygon_addedge internal_geod_polygon_addedge +#define geod_polygon_addpoint internal_geod_polygon_addpoint +#define geod_polygonarea internal_geod_polygonarea +#define geod_polygon_clear internal_geod_polygon_clear +#define geod_polygon_compute internal_geod_polygon_compute +#define geod_polygon_init internal_geod_polygon_init +#define geod_polygon_testedge internal_geod_polygon_testedge +#define geod_polygon_testpoint internal_geod_polygon_testpoint +#define geod_position internal_geod_position +#define geod_setdistance internal_geod_setdistance +#define mk_cheby internal_mk_cheby +#define pj_acquire_lock internal_pj_acquire_lock +#define pj_apply_gridshift internal_pj_apply_gridshift +#define pj_approx_2D_trans internal_pj_approx_2D_trans +#define pj_approx_3D_trans internal_pj_approx_3D_trans +#define pj_atof internal_pj_atof +#define pj_calloc internal_pj_calloc +#define pj_chomp internal_pj_chomp +#define pj_cleanup_lock internal_pj_cleanup_lock +#define pj_clear_initcache internal_pj_clear_initcache +#define pj_compare_datums internal_pj_compare_datums +#define pj_ctx_alloc internal_pj_ctx_alloc +#define pj_ctx_fclose internal_pj_ctx_fclose +#define pj_ctx_fgets internal_pj_ctx_fgets +#define pj_ctx_fopen internal_pj_ctx_fopen +#define pj_ctx_fread internal_pj_ctx_fread +#define pj_ctx_free internal_pj_ctx_free +#define pj_ctx_fseek internal_pj_ctx_fseek +#define pj_ctx_ftell internal_pj_ctx_ftell +#define pj_ctx_get_app_data internal_pj_ctx_get_app_data +#define pj_ctx_get_errno internal_pj_ctx_get_errno +#define pj_ctx_get_fileapi internal_pj_ctx_get_fileapi +#define pj_ctx_set_app_data internal_pj_ctx_set_app_data +#define pj_ctx_set_debug internal_pj_ctx_set_debug +#define pj_ctx_set_errno internal_pj_ctx_set_errno +#define pj_ctx_set_fileapi internal_pj_ctx_set_fileapi +#define pj_ctx_set_logger internal_pj_ctx_set_logger +#define pj_dalloc internal_pj_dalloc +#define pj_datum_transform internal_pj_datum_transform +#define pj_dealloc internal_pj_dealloc +#define pj_deallocate_grids internal_pj_deallocate_grids +#define pj_ell_set internal_pj_ell_set +#define pj_find_file internal_pj_find_file +#define pj_free internal_pj_free +#define pj_fwd internal_pj_fwd +#define pj_fwd3d internal_pj_fwd3d +#define pj_geocentric_to_geodetic internal_pj_geocentric_to_geodetic +#define pj_geodetic_to_geocentric internal_pj_geodetic_to_geocentric +#define pj_get_ctx internal_pj_get_ctx +#define pj_get_datums_ref internal_pj_get_datums_ref +#define pj_get_def internal_pj_get_def +#define pj_get_default_ctx internal_pj_get_default_ctx +#define pj_get_default_fileapi internal_pj_get_default_fileapi +#define pj_get_errno_ref internal_pj_get_errno_ref +#define pj_get_release internal_pj_get_release +#define pj_get_spheroid_defn internal_pj_get_spheroid_defn +#define pj_has_inverse internal_pj_has_inverse +#define pj_init internal_pj_init +#define pj_init_ctx internal_pj_init_ctx +#define pj_init_plus internal_pj_init_plus +#define pj_init_plus_ctx internal_pj_init_plus_ctx +#define pj_inv internal_pj_inv +#define pj_inv3d internal_pj_inv3d +#define pj_is_geocent internal_pj_is_geocent +#define pj_is_latlong internal_pj_is_latlong +#define pj_isnan internal_pj_isnan +#define pj_latlong_from_proj internal_pj_latlong_from_proj +#define pj_log internal_pj_log +#define pj_malloc internal_pj_malloc +#define pj_mkparam internal_pj_mkparam +#define pj_open_lib internal_pj_open_lib +#define pj_param internal_pj_param +#define pj_param_exists internal_pj_param_exists +#define pj_phi2 internal_pj_phi2 +#define pj_pr_list internal_pj_pr_list +#define pj_release_lock internal_pj_release_lock +#define pj_set_ctx internal_pj_set_ctx +#define pj_set_finder internal_pj_set_finder +#define pj_set_searchpath internal_pj_set_searchpath +#define pj_shrink internal_pj_shrink +#define pj_stderr_logger internal_pj_stderr_logger +#define pj_strdup internal_pj_strdup +#define pj_strerrno internal_pj_strerrno +#define pj_transform internal_pj_transform +#define proj_angular_input internal_proj_angular_input +#define proj_angular_output internal_proj_angular_output +#define proj_context_create internal_proj_context_create +#define proj_context_delete_cpp_context internal_proj_context_delete_cpp_context +#define proj_context_destroy internal_proj_context_destroy +#define proj_context_errno internal_proj_context_errno +#define proj_context_get_database_path internal_proj_context_get_database_path +#define proj_context_guess_wkt_dialect internal_proj_context_guess_wkt_dialect +#define proj_context_set internal_proj_context_set +#define proj_context_set_database_path internal_proj_context_set_database_path +#define proj_coord internal_proj_coord +#define proj_coord_error internal_proj_coord_error +#define proj_coordoperation_get_accuracy internal_proj_coordoperation_get_accuracy +#define proj_coordoperation_get_grid_used internal_proj_coordoperation_get_grid_used +#define proj_coordoperation_get_grid_used_count internal_proj_coordoperation_get_grid_used_count +#define proj_coordoperation_get_param internal_proj_coordoperation_get_param +#define proj_coordoperation_get_param_count internal_proj_coordoperation_get_param_count +#define proj_coordoperation_get_param_index internal_proj_coordoperation_get_param_index +#define proj_coordoperation_is_instanciable internal_proj_coordoperation_is_instanciable +#define proj_create internal_proj_create +#define proj_create_argv internal_proj_create_argv +#define proj_create_crs_to_crs internal_proj_create_crs_to_crs +#define proj_create_operation_factory_context internal_proj_create_operation_factory_context +#define proj_destroy internal_proj_destroy +#define proj_dmstor internal_proj_dmstor +#define proj_errno internal_proj_errno +#define proj_errno_reset internal_proj_errno_reset +#define proj_errno_restore internal_proj_errno_restore +#define proj_errno_set internal_proj_errno_set +#define proj_errno_string internal_proj_errno_string +#define proj_factors internal_proj_factors +#define proj_free_int_list internal_proj_free_int_list +#define proj_free_string_list internal_proj_free_string_list +#define proj_geocentric_latitude internal_proj_geocentric_latitude +#define proj_geod internal_proj_geod +#define proj_get_authorities_from_database internal_proj_get_authorities_from_database +#define proj_get_codes_from_database internal_proj_get_codes_from_database +#define proj_grid_info internal_proj_grid_info +#define proj_info internal_proj_info +#define proj_init_info internal_proj_init_info +#define proj_list_angular_units internal_proj_list_angular_units +#define proj_list_ellps internal_proj_list_ellps +#define proj_list_operations internal_proj_list_operations +#define proj_list_prime_meridians internal_proj_list_prime_meridians +#define proj_list_units internal_proj_list_units +#define proj_log_error internal_proj_log_error +#define proj_log_func internal_proj_log_func +#define proj_log_level internal_proj_log_level +#define proj_lp_dist internal_proj_lp_dist +#define proj_lpz_dist internal_proj_lpz_dist +#define proj_obj_as_proj_string internal_proj_obj_as_proj_string +#define proj_obj_as_wkt internal_proj_obj_as_wkt +#define proj_obj_create_from_database internal_proj_obj_create_from_database +#define proj_obj_create_from_name internal_proj_obj_create_from_name +#define proj_obj_create_from_proj_string internal_proj_obj_create_from_proj_string +#define proj_obj_create_from_user_input internal_proj_obj_create_from_user_input +#define proj_obj_create_from_wkt internal_proj_obj_create_from_wkt +#define proj_obj_create_geographic_crs internal_proj_obj_create_geographic_crs +#define proj_obj_create_operations internal_proj_obj_create_operations +#define proj_obj_create_projected_crs_AlbersEqualArea internal_proj_obj_create_projected_crs_AlbersEqualArea +#define proj_obj_create_projected_crs_AmericanPolyconic internal_proj_obj_create_projected_crs_AmericanPolyconic +#define proj_obj_create_projected_crs_AzimuthalEquidistant internal_proj_obj_create_projected_crs_AzimuthalEquidistant +#define proj_obj_create_projected_crs_Bonne internal_proj_obj_create_projected_crs_Bonne +#define proj_obj_create_projected_crs_CassiniSoldner internal_proj_obj_create_projected_crs_CassiniSoldner +#define proj_obj_create_projected_crs_EckertI internal_proj_obj_create_projected_crs_EckertI +#define proj_obj_create_projected_crs_EckertII internal_proj_obj_create_projected_crs_EckertII +#define proj_obj_create_projected_crs_EckertIII internal_proj_obj_create_projected_crs_EckertIII +#define proj_obj_create_projected_crs_EckertIV internal_proj_obj_create_projected_crs_EckertIV +#define proj_obj_create_projected_crs_EckertV internal_proj_obj_create_projected_crs_EckertV +#define proj_obj_create_projected_crs_EckertVI internal_proj_obj_create_projected_crs_EckertVI +#define proj_obj_create_projected_crs_EqualEarth internal_proj_obj_create_projected_crs_EqualEarth +#define proj_obj_create_projected_crs_EquidistantConic internal_proj_obj_create_projected_crs_EquidistantConic +#define proj_obj_create_projected_crs_EquidistantCylindrical internal_proj_obj_create_projected_crs_EquidistantCylindrical +#define proj_obj_create_projected_crs_EquidistantCylindricalSpherical internal_proj_obj_create_projected_crs_EquidistantCylindricalSpherical +#define proj_obj_create_projected_crs_Gall internal_proj_obj_create_projected_crs_Gall +#define proj_obj_create_projected_crs_GaussSchreiberTransverseMercator internal_proj_obj_create_projected_crs_GaussSchreiberTransverseMercator +#define proj_obj_create_projected_crs_GeostationarySatelliteSweepX internal_proj_obj_create_projected_crs_GeostationarySatelliteSweepX +#define proj_obj_create_projected_crs_GeostationarySatelliteSweepY internal_proj_obj_create_projected_crs_GeostationarySatelliteSweepY +#define proj_obj_create_projected_crs_Gnomonic internal_proj_obj_create_projected_crs_Gnomonic +#define proj_obj_create_projected_crs_GoodeHomolosine internal_proj_obj_create_projected_crs_GoodeHomolosine +#define proj_obj_create_projected_crs_GuamProjection internal_proj_obj_create_projected_crs_GuamProjection +#define proj_obj_create_projected_crs_HotineObliqueMercatorTwoPointNaturalOrigin internal_proj_obj_create_projected_crs_HotineObliqueMercatorTwoPointNaturalOrigin +#define proj_obj_create_projected_crs_HotineObliqueMercatorVariantA internal_proj_obj_create_projected_crs_HotineObliqueMercatorVariantA +#define proj_obj_create_projected_crs_HotineObliqueMercatorVariantB internal_proj_obj_create_projected_crs_HotineObliqueMercatorVariantB +#define proj_obj_create_projected_crs_InternationalMapWorldPolyconic internal_proj_obj_create_projected_crs_InternationalMapWorldPolyconic +#define proj_obj_create_projected_crs_InterruptedGoodeHomolosine internal_proj_obj_create_projected_crs_InterruptedGoodeHomolosine +#define proj_obj_create_projected_crs_Krovak internal_proj_obj_create_projected_crs_Krovak +#define proj_obj_create_projected_crs_KrovakNorthOriented internal_proj_obj_create_projected_crs_KrovakNorthOriented +#define proj_obj_create_projected_crs_LambertAzimuthalEqualArea internal_proj_obj_create_projected_crs_LambertAzimuthalEqualArea +#define proj_obj_create_projected_crs_LambertConicConformal_1SP internal_proj_obj_create_projected_crs_LambertConicConformal_1SP +#define proj_obj_create_projected_crs_LambertConicConformal_2SP internal_proj_obj_create_projected_crs_LambertConicConformal_2SP +#define proj_obj_create_projected_crs_LambertConicConformal_2SP_Belgium internal_proj_obj_create_projected_crs_LambertConicConformal_2SP_Belgium +#define proj_obj_create_projected_crs_LambertConicConformal_2SP_Michigan internal_proj_obj_create_projected_crs_LambertConicConformal_2SP_Michigan +#define proj_obj_create_projected_crs_LambertCylindricalEqualArea internal_proj_obj_create_projected_crs_LambertCylindricalEqualArea +#define proj_obj_create_projected_crs_LambertCylindricalEqualAreaSpherical internal_proj_obj_create_projected_crs_LambertCylindricalEqualAreaSpherical +#define proj_obj_create_projected_crs_MercatorVariantA internal_proj_obj_create_projected_crs_MercatorVariantA +#define proj_obj_create_projected_crs_MercatorVariantB internal_proj_obj_create_projected_crs_MercatorVariantB +#define proj_obj_create_projected_crs_MillerCylindrical internal_proj_obj_create_projected_crs_MillerCylindrical +#define proj_obj_create_projected_crs_Mollweide internal_proj_obj_create_projected_crs_Mollweide +#define proj_obj_create_projected_crs_NewZealandMappingGrid internal_proj_obj_create_projected_crs_NewZealandMappingGrid +#define proj_obj_create_projected_crs_ObliqueStereographic internal_proj_obj_create_projected_crs_ObliqueStereographic +#define proj_obj_create_projected_crs_Orthographic internal_proj_obj_create_projected_crs_Orthographic +#define proj_obj_create_projected_crs_PolarStereographicVariantA internal_proj_obj_create_projected_crs_PolarStereographicVariantA +#define proj_obj_create_projected_crs_PolarStereographicVariantB internal_proj_obj_create_projected_crs_PolarStereographicVariantB +#define proj_obj_create_projected_crs_PopularVisualisationPseudoMercator internal_proj_obj_create_projected_crs_PopularVisualisationPseudoMercator +#define proj_obj_create_projected_crs_QuadrilateralizedSphericalCube internal_proj_obj_create_projected_crs_QuadrilateralizedSphericalCube +#define proj_obj_create_projected_crs_Robinson internal_proj_obj_create_projected_crs_Robinson +#define proj_obj_create_projected_crs_Sinusoidal internal_proj_obj_create_projected_crs_Sinusoidal +#define proj_obj_create_projected_crs_SphericalCrossTrackHeight internal_proj_obj_create_projected_crs_SphericalCrossTrackHeight +#define proj_obj_create_projected_crs_Stereographic internal_proj_obj_create_projected_crs_Stereographic +#define proj_obj_create_projected_crs_TransverseMercator internal_proj_obj_create_projected_crs_TransverseMercator +#define proj_obj_create_projected_crs_TransverseMercatorSouthOriented internal_proj_obj_create_projected_crs_TransverseMercatorSouthOriented +#define proj_obj_create_projected_crs_TunisiaMappingGrid internal_proj_obj_create_projected_crs_TunisiaMappingGrid +#define proj_obj_create_projected_crs_TwoPointEquidistant internal_proj_obj_create_projected_crs_TwoPointEquidistant +#define proj_obj_create_projected_crs_UTM internal_proj_obj_create_projected_crs_UTM +#define proj_obj_create_projected_crs_VanDerGrinten internal_proj_obj_create_projected_crs_VanDerGrinten +#define proj_obj_create_projected_crs_WagnerI internal_proj_obj_create_projected_crs_WagnerI +#define proj_obj_create_projected_crs_WagnerII internal_proj_obj_create_projected_crs_WagnerII +#define proj_obj_create_projected_crs_WagnerIII internal_proj_obj_create_projected_crs_WagnerIII +#define proj_obj_create_projected_crs_WagnerIV internal_proj_obj_create_projected_crs_WagnerIV +#define proj_obj_create_projected_crs_WagnerV internal_proj_obj_create_projected_crs_WagnerV +#define proj_obj_create_projected_crs_WagnerVI internal_proj_obj_create_projected_crs_WagnerVI +#define proj_obj_create_projected_crs_WagnerVII internal_proj_obj_create_projected_crs_WagnerVII +#define proj_obj_crs_create_bound_crs_to_WGS84 internal_proj_obj_crs_create_bound_crs_to_WGS84 +#define proj_obj_crs_get_coordoperation internal_proj_obj_crs_get_coordoperation +#define proj_obj_crs_get_geodetic_crs internal_proj_obj_crs_get_geodetic_crs +#define proj_obj_crs_get_horizontal_datum internal_proj_obj_crs_get_horizontal_datum +#define proj_obj_crs_get_sub_crs internal_proj_obj_crs_get_sub_crs +#define proj_obj_ellipsoid_get_parameters internal_proj_obj_ellipsoid_get_parameters +#define proj_obj_get_area_of_use internal_proj_obj_get_area_of_use +#define proj_obj_get_ellipsoid internal_proj_obj_get_ellipsoid +#define proj_obj_get_id_auth_name internal_proj_obj_get_id_auth_name +#define proj_obj_get_id_code internal_proj_obj_get_id_code +#define proj_obj_get_name internal_proj_obj_get_name +#define proj_obj_get_prime_meridian internal_proj_obj_get_prime_meridian +#define proj_obj_get_source_crs internal_proj_obj_get_source_crs +#define proj_obj_get_target_crs internal_proj_obj_get_target_crs +#define proj_obj_get_type internal_proj_obj_get_type +#define proj_obj_identify internal_proj_obj_identify +#define proj_obj_is_crs internal_proj_obj_is_crs +#define proj_obj_is_deprecated internal_proj_obj_is_deprecated +#define proj_obj_is_equivalent_to internal_proj_obj_is_equivalent_to +#define proj_obj_list_get internal_proj_obj_list_get +#define proj_obj_list_get_count internal_proj_obj_list_get_count +#define proj_obj_list_unref internal_proj_obj_list_unref +#define proj_obj_prime_meridian_get_parameters internal_proj_obj_prime_meridian_get_parameters +#define proj_obj_unref internal_proj_obj_unref +#define proj_operation_factory_context_set_allowed_intermediate_crs internal_proj_operation_factory_context_set_allowed_intermediate_crs +#define proj_operation_factory_context_set_allow_use_intermediate_crs internal_proj_operation_factory_context_set_allow_use_intermediate_crs +#define proj_operation_factory_context_set_area_of_interest internal_proj_operation_factory_context_set_area_of_interest +#define proj_operation_factory_context_set_crs_extent_use internal_proj_operation_factory_context_set_crs_extent_use +#define proj_operation_factory_context_set_desired_accuracy internal_proj_operation_factory_context_set_desired_accuracy +#define proj_operation_factory_context_set_grid_availability_use internal_proj_operation_factory_context_set_grid_availability_use +#define proj_operation_factory_context_set_spatial_criterion internal_proj_operation_factory_context_set_spatial_criterion +#define proj_operation_factory_context_set_use_proj_alternative_grid_names internal_proj_operation_factory_context_set_use_proj_alternative_grid_names +#define proj_operation_factory_context_unref internal_proj_operation_factory_context_unref +#define proj_pj_info internal_proj_pj_info +#define proj_roundtrip internal_proj_roundtrip +#define proj_rtodms internal_proj_rtodms +#define proj_todeg internal_proj_todeg +#define proj_torad internal_proj_torad +#define proj_trans internal_proj_trans +#define proj_trans_array internal_proj_trans_array +#define proj_trans_generic internal_proj_trans_generic +#define proj_xy_dist internal_proj_xy_dist +#define proj_xyz_dist internal_proj_xyz_dist +#define rtodms internal_rtodms +#define set_rtodms internal_set_rtodms +#define pj_release internal_pj_release +#define pj_errno internal_pj_errno +#define emess_dat internal_emess_dat +#endif /* PROJ_SYMBOL_RENAME_H */ diff --git a/src/projects.h b/src/projects.h index 409702c4..e34fc9e0 100644 --- a/src/projects.h +++ b/src/projects.h @@ -46,6 +46,10 @@ # endif #endif +#ifdef PROJ_RENAME_SYMBOLS +#include "proj_symbol_rename.h" +#endif + /* standard inclusions */ #include <limits.h> #include <math.h> @@ -53,6 +57,18 @@ #include <stdlib.h> #include <string.h> +#ifndef PROJ_DLL +#ifdef PROJ_MSVC_DLL_EXPORT +#define PROJ_DLL __declspec(dllexport) +#elif defined(PROJ_MSVC_DLL_IMPORT) +#define PROJ_DLL __declspec(dllimport) +#elif defined(__GNUC__) +#define PROJ_DLL __attribute__ ((visibility("default"))) +#else +#define PROJ_DLL +#endif +#endif + #ifdef __cplusplus #define C_NAMESPACE extern "C" #define C_NAMESPACE_VAR extern "C" @@ -570,6 +586,8 @@ struct FACTORS { struct projFileAPI_t; +struct projCppContext; + /* proj thread context */ struct projCtx_t { int last_errno; @@ -577,6 +595,7 @@ struct projCtx_t { void (*logger)(void *, int, const char *); void *app_data; struct projFileAPI_t *fileapi; + struct projCppContext* cpp_context; /* internal context for C++ code */ }; /* classic public API */ @@ -678,20 +697,20 @@ typedef struct _PJ_GridCatalog { } PJ_GridCatalog; /* procedure prototypes */ -double dmstor(const char *, char **); +double PROJ_DLL dmstor(const char *, char **); double dmstor_ctx(projCtx ctx, const char *, char **); -void set_rtodms(int, int); -char *rtodms(char *, double, int, int); -double adjlon(double); +void PROJ_DLL set_rtodms(int, int); +char PROJ_DLL *rtodms(char *, double, int, int); +double PROJ_DLL adjlon(double); double aacos(projCtx,double), aasin(projCtx,double), asqrt(double), aatan2(double, double); -PROJVALUE pj_param(projCtx ctx, paralist *, const char *); -paralist *pj_param_exists (paralist *list, const char *parameter); -paralist *pj_mkparam(const char *); +PROJVALUE PROJ_DLL pj_param(projCtx ctx, paralist *, const char *); +paralist PROJ_DLL *pj_param_exists (paralist *list, const char *parameter); +paralist PROJ_DLL *pj_mkparam(const char *); paralist *pj_mkparam_ws (const char *str); -int pj_ell_set(projCtx ctx, paralist *, double *, double *); +int PROJ_DLL pj_ell_set(projCtx ctx, paralist *, double *, double *); int pj_datum_set(projCtx,paralist *, PJ *); int pj_angular_units_set(paralist *, PJ *); @@ -709,7 +728,7 @@ double pj_inv_mlfn(projCtx, double, double, double *); double pj_qsfn(double, double, double); double pj_tsfn(double, double, double); double pj_msfn(double, double, double); -double pj_phi2(projCtx, double, double); +double PROJ_DLL pj_phi2(projCtx, double, double); double pj_qsfn_(double, PJ *); double *pj_authset(double); double pj_authlat(double, double *); @@ -734,7 +753,7 @@ typedef struct { /* Chebyshev or Power series structure */ int power; /* != 0 if power series, else Chebyshev */ } Tseries; -Tseries *mk_cheby(projUV, projUV, double, projUV *, projUV (*)(projUV), int, int, int); +Tseries PROJ_DLL *mk_cheby(projUV, projUV, double, projUV *, projUV (*)(projUV), int, int, int); projUV bpseval(projUV, Tseries *); projUV bcheval(projUV, Tseries *); projUV biveval(projUV, Tseries *); @@ -771,7 +790,7 @@ int pj_apply_gridshift_3( projCtx ctx, double *x, double *y, double *z ); PJ_GRIDINFO **pj_gridlist_from_nadgrids( projCtx, const char *, int * ); -void pj_deallocate_grids(); +void PROJ_DLL pj_deallocate_grids(); PJ_GRIDINFO *pj_gridinfo_init( projCtx, const char * ); int pj_gridinfo_load( projCtx, PJ_GRIDINFO * ); @@ -802,13 +821,13 @@ void *pj_gauss_ini(double, double, double *,double *); LP pj_gauss(projCtx, LP, const void *); LP pj_inv_gauss(projCtx, LP, const void *); -extern char const pj_release[]; +extern char const PROJ_DLL pj_release[]; -struct PJ_DATUMS *pj_get_datums_ref( void ); +struct PJ_DATUMS PROJ_DLL *pj_get_datums_ref( void ); void *pj_default_destructor (PJ *P, int errlev); -double pj_atof( const char* nptr ); +double PROJ_DLL pj_atof( const char* nptr ); double pj_strtod( const char *nptr, char **endptr ); void pj_freeup_plain (PJ *P); diff --git a/src/projinfo.cpp b/src/projinfo.cpp new file mode 100644 index 00000000..dbbcdae2 --- /dev/null +++ b/src/projinfo.cpp @@ -0,0 +1,914 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: projinfo utility + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +//! @cond Doxygen_Suppress + +#define FROM_PROJ_CPP + +#include <cstdlib> +#include <fstream> // std::ifstream +#include <iostream> +#include <utility> + +#include "projects.h" + +#include <proj/coordinateoperation.hpp> +#include <proj/crs.hpp> +#include <proj/io.hpp> +#include <proj/metadata.hpp> +#include <proj/util.hpp> + +#include "proj/internal/internal.hpp" // for split + +using namespace NS_PROJ::crs; +using namespace NS_PROJ::io; +using namespace NS_PROJ::metadata; +using namespace NS_PROJ::operation; +using namespace NS_PROJ::util; +using namespace NS_PROJ::internal; + +// --------------------------------------------------------------------------- + +struct OutputOptions { + bool quiet = false; + bool PROJ5 = false; + bool PROJ4 = false; + bool WKT2_2018 = false; + bool WKT2_2018_SIMPLIFIED = false; + bool WKT2_2015 = false; + bool WKT2_2015_SIMPLIFIED = false; + bool WKT1_GDAL = false; + bool WKT1_ESRI = false; + bool c_ify = false; +}; + +// --------------------------------------------------------------------------- + +static void usage() { + std::cerr + << "usage: projinfo [-o formats] [-k crs|operation] [--summary] [-q]" + << std::endl + << " [--bbox min_long,min_lat,max_long,max_lat] " + << std::endl + << " [--spatial-test contains|intersects]" << std::endl + << " [--crs-extent-use none|both|intersection|smallest]" + << std::endl + << " [--grid-check none|discard_missing|sort]" + << std::endl + << " [--pivot-crs none|{auth:code[,auth:code]*}]" + << std::endl + << " [--boundcrs-to-wgs84]" << std::endl + << " [--main-db-path path] [--aux-db-path path]*" + << std::endl + << " [--identify]" << std::endl + << " {object_definition} | (-s {srs_def} -t {srs_def})" + << std::endl; + std::cerr << std::endl; + std::cerr << "-o: formats is a comma separated combination of: " + "all,default,PROJ4,PROJ,WKT_ALL,WKT2_2015,WKT2_2018,WKT1_GDAL," + "WKT1_ESRI" + << std::endl; + std::cerr << " Except 'all' and 'default', other format can be preceded " + "by '-' to disable them" + << std::endl; + std::cerr << std::endl; + std::cerr << "{object_definition} might be a PROJ string, a WKT string, " + " a AUTHORITY:CODE, or urn:ogc:def:OBJECT_TYPE:AUTHORITY::CODE" + << std::endl; + std::exit(1); +} + +// --------------------------------------------------------------------------- + +static std::string un_c_ify_string(const std::string &str) { + std::string out(str); + out = out.substr(1, out.size() - 2); + out = replaceAll(out, "\\\"", "{ESCAPED_DOUBLE_QUOTE}"); + out = replaceAll(out, "\\n\"", ""); + out = replaceAll(out, "\"", ""); + out = replaceAll(out, "{ESCAPED_DOUBLE_QUOTE}", "\""); + return out; +} + +// --------------------------------------------------------------------------- + +static std::string c_ify_string(const std::string &str) { + std::string out(str); + out = replaceAll(out, "\"", "{DOUBLE_QUOTE}"); + out = replaceAll(out, "\n", "\\n\"\n\""); + out = replaceAll(out, "{DOUBLE_QUOTE}", "\\\""); + return "\"" + out + "\""; +} + +// --------------------------------------------------------------------------- + +static BaseObjectNNPtr buildObject(DatabaseContextPtr dbContext, + const std::string &user_string, + bool kindIsCRS, const std::string &context, + bool buildBoundCRSToWGS84) { + BaseObjectPtr obj; + + std::string l_user_string(user_string); + if (!user_string.empty() && user_string[0] == '@') { + std::ifstream fs; + auto filename = user_string.substr(1); + fs.open(filename, std::fstream::in | std::fstream::binary); + if (!fs.is_open()) { + std::cerr << context << ": cannot open " << filename << std::endl; + std::exit(1); + } + l_user_string.clear(); + while (!fs.eof()) { + char buffer[256]; + fs.read(buffer, sizeof(buffer)); + l_user_string.append(buffer, static_cast<size_t>(fs.gcount())); + if (l_user_string.size() > 100 * 1000) { + fs.close(); + std::cerr << context << ": too big file" << std::endl; + std::exit(1); + } + } + fs.close(); + } + if (!l_user_string.empty() && l_user_string.back() == '\n') { + l_user_string.resize(l_user_string.size() - 1); + } + if (!l_user_string.empty() && l_user_string.back() == '\r') { + l_user_string.resize(l_user_string.size() - 1); + } + + try { + auto tokens = split(l_user_string, ':'); + if (!kindIsCRS && tokens.size() == 2) { + auto urn = "urn:ogc:def:coordinateOperation:" + tokens[0] + "::" + + tokens[1]; + obj = createFromUserInput(urn, dbContext).as_nullable(); + } else { + // Convenience to be able to use C escaped strings... + if (l_user_string.size() > 2 && l_user_string[0] == '"' && + l_user_string.back() == '"' && + l_user_string.find("\\\"") != std::string::npos) { + l_user_string = un_c_ify_string(l_user_string); + } + obj = createFromUserInput(l_user_string, dbContext).as_nullable(); + } + } catch (const std::exception &e) { + std::cerr << context << ": parsing of user string failed: " << e.what() + << std::endl; + std::exit(1); + } + + if (buildBoundCRSToWGS84) { + auto crs = std::dynamic_pointer_cast<CRS>(obj); + if (crs) { + obj = crs->createBoundCRSToWGS84IfPossible(dbContext).as_nullable(); + } + } + + return NN_NO_CHECK(obj); +} + +// --------------------------------------------------------------------------- + +static void outputObject(DatabaseContextPtr dbContext, BaseObjectNNPtr obj, + const OutputOptions &outputOpt) { + auto projStringExportable = + nn_dynamic_pointer_cast<IPROJStringExportable>(obj); + bool alreadyOutputed = false; + if (projStringExportable) { + if (outputOpt.PROJ5) { + try { + if (!outputOpt.quiet) { + std::cout << "PROJ string: " << std::endl; + } + std::cout << projStringExportable->exportToPROJString( + PROJStringFormatter::create( + PROJStringFormatter::Convention::PROJ_5, + dbContext) + .get()) + << std::endl; + } catch (const std::exception &e) { + std::cerr << "Error when exporting to PROJ string: " << e.what() + << std::endl; + } + alreadyOutputed = true; + } + + if (outputOpt.PROJ4) { + try { + if (alreadyOutputed) { + std::cout << std::endl; + } + if (!outputOpt.quiet) { + std::cout << "PROJ.4 string: " << std::endl; + } + + auto crs = nn_dynamic_pointer_cast<CRS>(obj); + std::shared_ptr<IPROJStringExportable> objToExport; + if (crs) { + objToExport = + nn_dynamic_pointer_cast<IPROJStringExportable>( + crs->createBoundCRSToWGS84IfPossible(dbContext)); + } + if (!objToExport) { + objToExport = projStringExportable; + } + + std::cout << objToExport->exportToPROJString( + PROJStringFormatter::create( + PROJStringFormatter::Convention::PROJ_4, + dbContext) + .get()) + << std::endl; + } catch (const std::exception &e) { + std::cerr << "Error when exporting to PROJ string: " << e.what() + << std::endl; + } + alreadyOutputed = true; + } + } + + auto wktExportable = nn_dynamic_pointer_cast<IWKTExportable>(obj); + if (wktExportable) { + if (outputOpt.WKT2_2015) { + try { + if (alreadyOutputed) { + std::cout << std::endl; + } + if (!outputOpt.quiet) { + std::cout << "WKT2_2015 string: " << std::endl; + } + auto wkt = wktExportable->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2015) + .get()); + if (outputOpt.c_ify) { + wkt = c_ify_string(wkt); + } + std::cout << wkt << std::endl; + } catch (const std::exception &e) { + std::cerr << "Error when exporting to WKT2_2015: " << e.what() + << std::endl; + } + alreadyOutputed = true; + } + + if (outputOpt.WKT2_2015_SIMPLIFIED) { + try { + if (alreadyOutputed) { + std::cout << std::endl; + } + if (!outputOpt.quiet) { + std::cout << "WKT2_2015_SIMPLIFIED string: " << std::endl; + } + auto wkt = wktExportable->exportToWKT( + WKTFormatter::create( + WKTFormatter::Convention::WKT2_2015_SIMPLIFIED) + .get()); + if (outputOpt.c_ify) { + wkt = c_ify_string(wkt); + } + std::cout << wkt << std::endl; + } catch (const std::exception &e) { + std::cerr << "Error when exporting to WKT2_2015_SIMPLIFIED: " + << e.what() << std::endl; + } + alreadyOutputed = true; + } + + if (outputOpt.WKT2_2018) { + try { + if (alreadyOutputed) { + std::cout << std::endl; + } + if (!outputOpt.quiet) { + std::cout << "WKT2_2018 string: " << std::endl; + } + auto wkt = wktExportable->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018) + .get()); + if (outputOpt.c_ify) { + wkt = c_ify_string(wkt); + } + std::cout << wkt << std::endl; + } catch (const std::exception &e) { + std::cerr << "Error when exporting to WKT2_2018: " << e.what() + << std::endl; + } + alreadyOutputed = true; + } + + if (outputOpt.WKT2_2018_SIMPLIFIED) { + try { + if (alreadyOutputed) { + std::cout << std::endl; + } + if (!outputOpt.quiet) { + std::cout << "WKT2_2018_SIMPLIFIED string: " << std::endl; + } + auto wkt = wktExportable->exportToWKT( + WKTFormatter::create( + WKTFormatter::Convention::WKT2_2018_SIMPLIFIED) + .get()); + if (outputOpt.c_ify) { + wkt = c_ify_string(wkt); + } + std::cout << wkt << std::endl; + } catch (const std::exception &e) { + std::cerr << "Error when exporting to WKT2_2018_SIMPLIFIED: " + << e.what() << std::endl; + } + alreadyOutputed = true; + } + + if (outputOpt.WKT1_GDAL && !nn_dynamic_pointer_cast<Conversion>(obj)) { + try { + if (alreadyOutputed) { + std::cout << std::endl; + } + if (!outputOpt.quiet) { + std::cout << "WKT1_GDAL: " << std::endl; + } + + auto crs = nn_dynamic_pointer_cast<CRS>(obj); + std::shared_ptr<IWKTExportable> objToExport; + if (crs) { + objToExport = nn_dynamic_pointer_cast<IWKTExportable>( + crs->createBoundCRSToWGS84IfPossible(dbContext)); + } + if (!objToExport) { + objToExport = wktExportable; + } + + auto wkt = objToExport->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL) + .get()); + if (outputOpt.c_ify) { + wkt = c_ify_string(wkt); + } + std::cout << wkt << std::endl; + std::cout << std::endl; + } catch (const std::exception &e) { + std::cerr << "Error when exporting to WKT1_GDAL: " << e.what() + << std::endl; + } + alreadyOutputed = true; + } + + if (outputOpt.WKT1_ESRI && !nn_dynamic_pointer_cast<Conversion>(obj)) { + try { + if (alreadyOutputed) { + std::cout << std::endl; + } + if (!outputOpt.quiet) { + std::cout << "WKT1_ESRI: " << std::endl; + } + + auto wkt = wktExportable->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, + dbContext) + .get()); + if (outputOpt.c_ify) { + wkt = c_ify_string(wkt); + } + std::cout << wkt << std::endl; + std::cout << std::endl; + } catch (const std::exception &e) { + std::cerr << "Error when exporting to WKT1_ESRI: " << e.what() + << std::endl; + } + } + } +} + +// --------------------------------------------------------------------------- + +static void outputOperations( + DatabaseContextPtr dbContext, const std::string &sourceCRSStr, + const std::string &targetCRSStr, const ExtentPtr &bboxFilter, + CoordinateOperationContext::SpatialCriterion spatialCriterion, + CoordinateOperationContext::SourceTargetCRSExtentUse crsExtentUse, + CoordinateOperationContext::GridAvailabilityUse gridAvailabilityUse, + bool allowPivots, + const std::vector<std::pair<std::string, std::string>> &pivots, + const std::string &authority, bool usePROJGridAlternatives, + const OutputOptions &outputOpt, bool summary) { + auto sourceObj = + buildObject(dbContext, sourceCRSStr, true, "source CRS", false); + auto sourceCRS = nn_dynamic_pointer_cast<CRS>(sourceObj); + if (!sourceCRS) { + std::cerr << "source CRS string is not a CRS" << std::endl; + std::exit(1); + } + + auto targetObj = + buildObject(dbContext, targetCRSStr, true, "target CRS", false); + auto targetCRS = nn_dynamic_pointer_cast<CRS>(targetObj); + if (!targetCRS) { + std::cerr << "target CRS string is not a CRS" << std::endl; + std::exit(1); + } + + std::vector<CoordinateOperationNNPtr> list; + try { + auto authFactory = + dbContext + ? AuthorityFactory::create(NN_NO_CHECK(dbContext), authority) + .as_nullable() + : nullptr; + auto ctxt = + CoordinateOperationContext::create(authFactory, bboxFilter, 0); + ctxt->setSpatialCriterion(spatialCriterion); + ctxt->setSourceAndTargetCRSExtentUse(crsExtentUse); + ctxt->setGridAvailabilityUse(gridAvailabilityUse); + ctxt->setAllowUseIntermediateCRS(allowPivots); + ctxt->setIntermediateCRS(pivots); + ctxt->setUsePROJAlternativeGridNames(usePROJGridAlternatives); + list = CoordinateOperationFactory::create()->createOperations( + NN_NO_CHECK(sourceCRS), NN_NO_CHECK(targetCRS), ctxt); + } catch (const std::exception &e) { + std::cerr << "createOperations() failed with: " << e.what() + << std::endl; + std::exit(1); + } + if (outputOpt.quiet && !list.empty()) { + outputObject(dbContext, list[0], outputOpt); + return; + } + if (summary) { + std::cout << "Candidate operations found: " << list.size() << std::endl; + for (const auto &op : list) { + auto ids = op->identifiers(); + if (!ids.empty()) { + std::cout << *(ids[0]->codeSpace()) << ":" << ids[0]->code(); + } else { + std::cout << "unknown id"; + } + + std::cout << ", "; + + auto name = op->nameStr(); + if (!name.empty()) { + std::cout << name; + } else { + std::cout << "unknown name"; + } + + std::cout << ", "; + + auto accuracies = op->coordinateOperationAccuracies(); + if (!accuracies.empty()) { + std::cout << accuracies[0]->value() << " m"; + } else { + if (std::dynamic_pointer_cast<Conversion>(op.as_nullable())) { + std::cout << "0 m"; + } else { + std::cout << "unknown accuracy"; + } + } + + std::cout << ", "; + + auto domains = op->domains(); + if (!domains.empty() && domains[0]->domainOfValidity() && + domains[0]->domainOfValidity()->description().has_value()) { + std::cout << *(domains[0]->domainOfValidity()->description()); + } else { + std::cout << "unknown domain of validity"; + } + + std::cout << std::endl; + } + } else { + bool first = true; + for (size_t i = 0; i < list.size(); ++i) { + const auto &op = list[i]; + if (list.size() > 1) { + if (!first) { + std::cout << std::endl; + } + first = false; + std::cout << "-------------------------------------" + << std::endl; + std::cout << "Operation n" + "\xC2\xB0" + << (i + 1) << ":" << std::endl + << std::endl; + } + outputObject(dbContext, op, outputOpt); + } + } +} + +// --------------------------------------------------------------------------- + +int main(int argc, char **argv) { + + if (argc == 1) { + std::cerr << pj_get_release() << std::endl; + usage(); + } + + std::string user_string; + bool user_string_specified = false; + std::string sourceCRSStr; + std::string targetCRSStr; + bool outputSwithSpecified = false; + OutputOptions outputOpt; + bool kindIsCRS = true; + bool summary = false; + ExtentPtr bboxFilter = nullptr; + CoordinateOperationContext::SpatialCriterion spatialCriterion = + CoordinateOperationContext::SpatialCriterion::STRICT_CONTAINMENT; + CoordinateOperationContext::SourceTargetCRSExtentUse crsExtentUse = + CoordinateOperationContext::SourceTargetCRSExtentUse::SMALLEST; + bool buildBoundCRSToWGS84 = false; + CoordinateOperationContext::GridAvailabilityUse gridAvailabilityUse = + CoordinateOperationContext::GridAvailabilityUse::USE_FOR_SORTING; + bool allowPivots = true; + std::vector<std::pair<std::string, std::string>> pivots; + bool usePROJGridAlternatives = true; + std::string mainDBPath; + std::vector<std::string> auxDBPath; + bool guessDialect = false; + std::string authority; + bool identify = false; + + for (int i = 1; i < argc; i++) { + std::string arg(argv[i]); + if (arg == "-o" && i + 1 < argc) { + outputSwithSpecified = true; + i++; + auto formats(split(argv[i], ',')); + for (auto format : formats) { + if (ci_equal(format, "all")) { + outputOpt.PROJ5 = true; + outputOpt.PROJ4 = true; + outputOpt.WKT2_2018 = true; + outputOpt.WKT2_2015 = true; + outputOpt.WKT1_GDAL = true; + } else if (ci_equal(format, "default")) { + outputOpt.PROJ5 = true; + outputOpt.PROJ4 = false; + outputOpt.WKT2_2018 = false; + outputOpt.WKT2_2015 = true; + outputOpt.WKT1_GDAL = false; + } else if (ci_equal(format, "PROJ4") || + ci_equal(format, "PROJ.4")) { + outputOpt.PROJ4 = true; + } else if (ci_equal(format, "-PROJ4") || + ci_equal(format, "-PROJ.4")) { + outputOpt.PROJ4 = false; + } else if (ci_equal(format, "PROJ")) { + outputOpt.PROJ5 = true; + } else if (ci_equal(format, "-PROJ")) { + outputOpt.PROJ5 = false; + } else if (ci_equal(format, "WKT_ALL") || + ci_equal(format, "WKT_ALL")) { + outputOpt.WKT2_2018 = true; + outputOpt.WKT2_2015 = true; + outputOpt.WKT1_GDAL = true; + } else if (ci_equal(format, "-WKT_ALL") || + ci_equal(format, "-WKT_ALL")) { + outputOpt.WKT2_2018 = false; + outputOpt.WKT2_2015 = false; + outputOpt.WKT1_GDAL = false; + } else if (ci_equal(format, "WKT2_2018") || + ci_equal(format, "WKT2-2018") || + ci_equal(format, "WKT2:2018")) { + outputOpt.WKT2_2018 = true; + } else if (ci_equal(format, "WKT2_2018_SIMPLIFIED") || + ci_equal(format, "WKT2-2018_SIMPLIFIED") || + ci_equal(format, "WKT2:2018_SIMPLIFIED")) { + outputOpt.WKT2_2018_SIMPLIFIED = true; + } else if (ci_equal(format, "-WKT2_2018") || + ci_equal(format, "-WKT2-2018") || + ci_equal(format, "-WKT2:2018")) { + outputOpt.WKT2_2018 = false; + } else if (ci_equal(format, "WKT2_2015") || + ci_equal(format, "WKT2-2015") || + ci_equal(format, "WKT2:2015")) { + outputOpt.WKT2_2015 = true; + } else if (ci_equal(format, "WKT2_2015_SIMPLIFIED") || + ci_equal(format, "WKT2-2015_SIMPLIFIED") || + ci_equal(format, "WKT2:2015_SIMPLIFIED")) { + outputOpt.WKT2_2015_SIMPLIFIED = true; + } else if (ci_equal(format, "-WKT2_2015") || + ci_equal(format, "-WKT2-2015") || + ci_equal(format, "-WKT2:2015")) { + outputOpt.WKT2_2015 = false; + } else if (ci_equal(format, "WKT1_GDAL") || + ci_equal(format, "WKT1-GDAL") || + ci_equal(format, "WKT1:GDAL")) { + outputOpt.WKT1_GDAL = true; + } else if (ci_equal(format, "-WKT1_GDAL") || + ci_equal(format, "-WKT1-GDAL") || + ci_equal(format, "-WKT1:GDAL")) { + outputOpt.WKT1_GDAL = false; + } else if (ci_equal(format, "WKT1_ESRI") || + ci_equal(format, "WKT1-ESRI") || + ci_equal(format, "WKT1:ESRI")) { + outputOpt.WKT1_ESRI = true; + } else if (ci_equal(format, "-WKT1_ESRI") || + ci_equal(format, "-WKT1-ESRI") || + ci_equal(format, "-WKT1:ESRI")) { + outputOpt.WKT1_ESRI = false; + } else { + std::cerr << "Unrecognized value for option -o: " << format + << std::endl; + usage(); + } + } + } else if (arg == "--bbox" && i + 1 < argc) { + i++; + auto bboxStr(argv[i]); + auto bbox(split(bboxStr, ',')); + if (bbox.size() != 4) { + std::cerr << "Incorrect number of values for option --bbox: " + << bboxStr << std::endl; + usage(); + } + try { + bboxFilter = Extent::createFromBBOX( + c_locale_stod(bbox[0]), c_locale_stod(bbox[1]), + c_locale_stod(bbox[2]), c_locale_stod(bbox[3])) + .as_nullable(); + } catch (const std::exception &e) { + std::cerr << "Invalid value for option --bbox: " << bboxStr + << ", " << e.what() << std::endl; + usage(); + } + } else if (arg == "-k" && i + 1 < argc) { + i++; + std::string kind(argv[i]); + if (ci_equal(kind, "crs") || ci_equal(kind, "srs")) { + kindIsCRS = true; + } else if (ci_equal(kind, "operation")) { + kindIsCRS = false; + } else { + std::cerr << "Unrecognized value for option -k: " << kind + << std::endl; + usage(); + } + } else if ((arg == "-s" || arg == "--ssource-crs") && i + 1 < argc) { + i++; + sourceCRSStr = argv[i]; + } else if ((arg == "-t" || arg == "--target-crs") && i + 1 < argc) { + i++; + targetCRSStr = argv[i]; + } else if (arg == "-q" || arg == "--quiet") { + outputOpt.quiet = true; + } else if (arg == "--c-ify") { + outputOpt.c_ify = true; + } else if (arg == "--summary") { + summary = true; + } else if (ci_equal(arg, "--boundcrs-to-wgs84")) { + buildBoundCRSToWGS84 = true; + + // undocumented: only for debugging purposes + } else if (ci_equal(arg, "--no-proj-grid-alternatives")) { + usePROJGridAlternatives = false; + + } else if (arg == "--spatial-test" && i + 1 < argc) { + i++; + std::string value(argv[i]); + if (ci_equal(value, "contains")) { + spatialCriterion = CoordinateOperationContext:: + SpatialCriterion::STRICT_CONTAINMENT; + } else if (ci_equal(value, "intersects")) { + spatialCriterion = CoordinateOperationContext:: + SpatialCriterion::PARTIAL_INTERSECTION; + } else { + std::cerr << "Unrecognized value for option --patial-test: " + << value << std::endl; + usage(); + } + } else if (arg == "--crs-extent-use" && i + 1 < argc) { + i++; + std::string value(argv[i]); + if (ci_equal(value, "NONE")) { + crsExtentUse = + CoordinateOperationContext::SourceTargetCRSExtentUse::NONE; + } else if (ci_equal(value, "BOTH")) { + crsExtentUse = + CoordinateOperationContext::SourceTargetCRSExtentUse::BOTH; + } else if (ci_equal(value, "INTERSECTION")) { + crsExtentUse = CoordinateOperationContext:: + SourceTargetCRSExtentUse::INTERSECTION; + } else if (ci_equal(value, "SMALLEST")) { + crsExtentUse = CoordinateOperationContext:: + SourceTargetCRSExtentUse::SMALLEST; + } else { + std::cerr << "Unrecognized value for option --crs-extent-use: " + << value << std::endl; + usage(); + } + } else if (arg == "--grid-check" && i + 1 < argc) { + i++; + std::string value(argv[i]); + if (ci_equal(value, "none")) { + gridAvailabilityUse = CoordinateOperationContext:: + GridAvailabilityUse::IGNORE_GRID_AVAILABILITY; + } else if (ci_equal(value, "discard_missing")) { + gridAvailabilityUse = CoordinateOperationContext:: + GridAvailabilityUse::DISCARD_OPERATION_IF_MISSING_GRID; + } else if (ci_equal(value, "sort")) { + gridAvailabilityUse = CoordinateOperationContext:: + GridAvailabilityUse::USE_FOR_SORTING; + } else { + std::cerr << "Unrecognized value for option --grid-check: " + << value << std::endl; + usage(); + } + } else if (arg == "--pivot-crs" && i + 1 < argc) { + i++; + auto value(argv[i]); + if (ci_equal(std::string(value), "none")) { + allowPivots = false; + } else { + auto splitValue(split(value, ',')); + for (const auto &v : splitValue) { + auto auth_code = split(v, ':'); + if (auth_code.size() != 2) { + std::cerr + << "Unrecognized value for option --grid-check: " + << value << std::endl; + usage(); + } + pivots.emplace_back( + std::make_pair(auth_code[0], auth_code[1])); + } + } + } else if (arg == "--main-db-path" && i + 1 < argc) { + i++; + mainDBPath = argv[i]; + } else if (arg == "--aux-db-path" && i + 1 < argc) { + i++; + auxDBPath.push_back(argv[i]); + } else if (arg == "--guess-dialect") { + guessDialect = true; + } else if (arg == "--authority" && i + 1 < argc) { + i++; + authority = argv[i]; + } else if (arg == "--identify") { + identify = true; + } else if (arg == "-?" || arg == "--help") { + usage(); + } else if (arg[0] == '-') { + std::cerr << "Unrecognized option: " << arg << std::endl; + usage(); + } else { + if (!user_string_specified) { + user_string_specified = true; + user_string = arg; + } else { + std::cerr << "Too many parameters: " << arg << std::endl; + usage(); + } + } + } + + DatabaseContextPtr dbContext; + try { + dbContext = + DatabaseContext::create(mainDBPath, auxDBPath).as_nullable(); + } catch (const std::exception &e) { + if (!mainDBPath.empty() || !auxDBPath.empty()) { + std::cerr << "ERROR: Cannot create database connection: " + << e.what() << std::endl; + std::exit(1); + } + std::cerr << "WARNING: Cannot create database connection: " << e.what() + << std::endl; + } + + if (!sourceCRSStr.empty() && targetCRSStr.empty()) { + std::cerr << "Source CRS specified, but missing target CRS" + << std::endl; + usage(); + } else if (sourceCRSStr.empty() && !targetCRSStr.empty()) { + std::cerr << "Target CRS specified, but missing source CRS" + << std::endl; + usage(); + } else if (!sourceCRSStr.empty() && !targetCRSStr.empty()) { + if (user_string_specified) { + std::cerr << "Unused extra value" << std::endl; + usage(); + } + } else if (!user_string_specified) { + std::cerr << "Missing user string" << std::endl; + usage(); + } + + if (!outputSwithSpecified) { + outputOpt.PROJ5 = true; + outputOpt.WKT2_2015 = true; + } + + if (outputOpt.quiet && + (outputOpt.PROJ5 + outputOpt.PROJ4 + outputOpt.WKT2_2018 + + outputOpt.WKT2_2015 + outputOpt.WKT1_GDAL) != 1) { + std::cerr << "-q can only be used with a single output format" + << std::endl; + usage(); + } + + if (!user_string.empty()) { + auto obj(buildObject(dbContext, user_string, kindIsCRS, "input string", + buildBoundCRSToWGS84)); + if (guessDialect) { + auto dialect = WKTParser().guessDialect(user_string); + std::cout << "Guessed WKT dialect: "; + if (dialect == WKTParser::WKTGuessedDialect::WKT2_2018) { + std::cout << "WKT2_2018"; + } else if (dialect == WKTParser::WKTGuessedDialect::WKT2_2015) { + std::cout << "WKT2_2015"; + } else if (dialect == WKTParser::WKTGuessedDialect::WKT1_GDAL) { + std::cout << "WKT1_GDAL"; + } else if (dialect == WKTParser::WKTGuessedDialect::WKT1_ESRI) { + std::cout << "WKT1_ESRI"; + } else { + std::cout << "Not WKT / unknown"; + } + std::cout << std::endl; + } + outputObject(dbContext, obj, outputOpt); + if (identify) { + auto crs = dynamic_cast<CRS *>(obj.get()); + if (crs) { + try { + auto res = crs->identify( + dbContext + ? AuthorityFactory::create(NN_NO_CHECK(dbContext), + authority) + .as_nullable() + : nullptr); + std::cout << std::endl; + std::cout << "Identification match count: " << res.size() + << std::endl; + for (const auto &pair : res) { + const auto &identifiedCRS = pair.first; + const auto &ids = identifiedCRS->identifiers(); + if (!ids.empty()) { + std::cout << *ids[0]->codeSpace() << ":" + << ids[0]->code() << ": " << pair.second + << " %" << std::endl; + } else { + auto boundCRS = + dynamic_cast<BoundCRS *>(identifiedCRS.get()); + if (boundCRS && + !boundCRS->baseCRS()->identifiers().empty()) { + const auto &idsBase = + boundCRS->baseCRS()->identifiers(); + std::cout << "BoundCRS of " + << *idsBase[0]->codeSpace() << ":" + << idsBase[0]->code() << ": " + << pair.second << " %" << std::endl; + } else { + std::cout + << "un-identifier CRS: " << pair.second + << " %" << std::endl; + } + } + } + } catch (const std::exception &e) { + std::cerr << "Identification failed: " << e.what() + << std::endl; + } + } + } + } else { + outputOperations(dbContext, sourceCRSStr, targetCRSStr, bboxFilter, + spatialCriterion, crsExtentUse, gridAvailabilityUse, + allowPivots, pivots, authority, + usePROJGridAlternatives, outputOpt, summary); + } + + return 0; +} + +//! @endcond diff --git a/src/static.cpp b/src/static.cpp new file mode 100644 index 00000000..e30e68b7 --- /dev/null +++ b/src/static.cpp @@ -0,0 +1,638 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef FROM_PROJ_CPP +#define FROM_PROJ_CPP +#endif + +#include "proj/common.hpp" +#include "proj/coordinatesystem.hpp" +#include "proj/crs.hpp" +#include "proj/datum.hpp" +#include "proj/io.hpp" +#include "proj/metadata.hpp" +#include "proj/util.hpp" + +#include "proj/internal/coordinatesystem_internal.hpp" +#include "proj/internal/io_internal.hpp" + +#include <map> +#include <set> +#include <string> + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +// We put all static definitions in the same compilation unit, and in +// increasing order of dependency, to avoid the "static initialization fiasco" +// See https://isocpp.org/wiki/faq/ctors#static-init-order + +using namespace NS_PROJ::crs; +using namespace NS_PROJ::datum; +using namespace NS_PROJ::io; +using namespace NS_PROJ::metadata; +using namespace NS_PROJ::util; + +NS_PROJ_START + +// --------------------------------------------------------------------------- + +/** \brief Key to set the authority citation of a metadata::Identifier. + * + * The value is to be provided as a string or a metadata::Citation. + */ +const std::string Identifier::AUTHORITY_KEY("authority"); + +/** \brief Key to set the code of a metadata::Identifier. + * + * The value is to be provided as a integer or a string. + */ +const std::string Identifier::CODE_KEY("code"); + +/** \brief Key to set the organization responsible for definition and + * maintenance of the code of a metadata::Identifier. + * + * The value is to be provided as a string. + */ +const std::string Identifier::CODESPACE_KEY("codespace"); + +/** \brief Key to set the version identifier for the namespace of a + * metadata::Identifier. + * + * The value is to be provided as a string. + */ +const std::string Identifier::VERSION_KEY("version"); + +/** \brief Key to set the natural language description of the meaning of the + * code value of a metadata::Identifier. + * + * The value is to be provided as a string. + */ +const std::string Identifier::DESCRIPTION_KEY("description"); + +/** \brief Key to set the URI of a metadata::Identifier. + * + * The value is to be provided as a string. + */ +const std::string Identifier::URI_KEY("uri"); + +/** \brief EPSG codespace. + */ +const std::string Identifier::EPSG("EPSG"); + +/** \brief OGC codespace. + */ +const std::string Identifier::OGC("OGC"); + +// --------------------------------------------------------------------------- + +/** \brief Key to set the name of a common::IdentifiedObject + * + * The value is to be provided as a string or metadata::IdentifierNNPtr. + */ +const std::string common::IdentifiedObject::NAME_KEY("name"); + +/** \brief Key to set the identifier(s) of a common::IdentifiedObject + * + * The value is to be provided as a common::IdentifierNNPtr or a + * util::ArrayOfBaseObjectNNPtr + * of common::IdentifierNNPtr. + */ +const std::string common::IdentifiedObject::IDENTIFIERS_KEY("identifiers"); + +/** \brief Key to set the alias(es) of a common::IdentifiedObject + * + * The value is to be provided as string, a util::GenericNameNNPtr or a + * util::ArrayOfBaseObjectNNPtr + * of util::GenericNameNNPtr. + */ +const std::string common::IdentifiedObject::ALIAS_KEY("alias"); + +/** \brief Key to set the remarks of a common::IdentifiedObject + * + * The value is to be provided as a string. + */ +const std::string common::IdentifiedObject::REMARKS_KEY("remarks"); + +/** \brief Key to set the deprecation flag of a common::IdentifiedObject + * + * The value is to be provided as a boolean. + */ +const std::string common::IdentifiedObject::DEPRECATED_KEY("deprecated"); + +// --------------------------------------------------------------------------- + +/** \brief Key to set the scope of a common::ObjectUsage + * + * The value is to be provided as a string. + */ +const std::string common::ObjectUsage::SCOPE_KEY("scope"); + +/** \brief Key to set the domain of validity of a common::ObjectUsage + * + * The value is to be provided as a common::ExtentNNPtr. + */ +const std::string + common::ObjectUsage::DOMAIN_OF_VALIDITY_KEY("domainOfValidity"); + +/** \brief Key to set the object domain(s) of a common::ObjectUsage + * + * The value is to be provided as a common::ObjectDomainNNPtr or a + * util::ArrayOfBaseObjectNNPtr + * of common::ObjectDomainNNPtr. + */ +const std::string common::ObjectUsage::OBJECT_DOMAIN_KEY("objectDomain"); + +// --------------------------------------------------------------------------- + +/** \brief World extent. */ +const ExtentNNPtr + Extent::WORLD(Extent::createFromBBOX(-180, -90, 180, 90, + util::optional<std::string>("World"))); + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +std::vector<std::string> WKTConstants::constants_; + +const char *WKTConstants::createAndAddToConstantList(const char *text) { + WKTConstants::constants_.push_back(text); + return text; +} + +#define DEFINE_WKT_CONSTANT(x) \ + const std::string WKTConstants::x(createAndAddToConstantList(#x)) + +DEFINE_WKT_CONSTANT(GEOCCS); +DEFINE_WKT_CONSTANT(GEOGCS); +DEFINE_WKT_CONSTANT(DATUM); +DEFINE_WKT_CONSTANT(UNIT); +DEFINE_WKT_CONSTANT(SPHEROID); +DEFINE_WKT_CONSTANT(AXIS); +DEFINE_WKT_CONSTANT(PRIMEM); +DEFINE_WKT_CONSTANT(AUTHORITY); +DEFINE_WKT_CONSTANT(PROJCS); +DEFINE_WKT_CONSTANT(PROJECTION); +DEFINE_WKT_CONSTANT(PARAMETER); +DEFINE_WKT_CONSTANT(VERT_CS); +DEFINE_WKT_CONSTANT(VERT_DATUM); +DEFINE_WKT_CONSTANT(COMPD_CS); +DEFINE_WKT_CONSTANT(TOWGS84); +DEFINE_WKT_CONSTANT(EXTENSION); +DEFINE_WKT_CONSTANT(LOCAL_CS); +DEFINE_WKT_CONSTANT(LOCAL_DATUM); + +DEFINE_WKT_CONSTANT(GEODCRS); +DEFINE_WKT_CONSTANT(LENGTHUNIT); +DEFINE_WKT_CONSTANT(ANGLEUNIT); +DEFINE_WKT_CONSTANT(SCALEUNIT); +DEFINE_WKT_CONSTANT(TIMEUNIT); +DEFINE_WKT_CONSTANT(ELLIPSOID); +DEFINE_WKT_CONSTANT(CS); +DEFINE_WKT_CONSTANT(ID); +DEFINE_WKT_CONSTANT(PROJCRS); +DEFINE_WKT_CONSTANT(BASEGEODCRS); +DEFINE_WKT_CONSTANT(MERIDIAN); +DEFINE_WKT_CONSTANT(ORDER); +DEFINE_WKT_CONSTANT(ANCHOR); +DEFINE_WKT_CONSTANT(CONVERSION); +DEFINE_WKT_CONSTANT(METHOD); +DEFINE_WKT_CONSTANT(REMARK); +DEFINE_WKT_CONSTANT(GEOGCRS); +DEFINE_WKT_CONSTANT(BASEGEOGCRS); +DEFINE_WKT_CONSTANT(SCOPE); +DEFINE_WKT_CONSTANT(AREA); +DEFINE_WKT_CONSTANT(BBOX); +DEFINE_WKT_CONSTANT(CITATION); +DEFINE_WKT_CONSTANT(URI); +DEFINE_WKT_CONSTANT(VERTCRS); +DEFINE_WKT_CONSTANT(VDATUM); +DEFINE_WKT_CONSTANT(COMPOUNDCRS); +DEFINE_WKT_CONSTANT(PARAMETERFILE); +DEFINE_WKT_CONSTANT(COORDINATEOPERATION); +DEFINE_WKT_CONSTANT(SOURCECRS); +DEFINE_WKT_CONSTANT(TARGETCRS); +DEFINE_WKT_CONSTANT(INTERPOLATIONCRS); +DEFINE_WKT_CONSTANT(OPERATIONACCURACY); +DEFINE_WKT_CONSTANT(CONCATENATEDOPERATION); +DEFINE_WKT_CONSTANT(STEP); +DEFINE_WKT_CONSTANT(BOUNDCRS); +DEFINE_WKT_CONSTANT(ABRIDGEDTRANSFORMATION); +DEFINE_WKT_CONSTANT(DERIVINGCONVERSION); +DEFINE_WKT_CONSTANT(TDATUM); +DEFINE_WKT_CONSTANT(CALENDAR); +DEFINE_WKT_CONSTANT(TIMEORIGIN); +DEFINE_WKT_CONSTANT(TIMECRS); +DEFINE_WKT_CONSTANT(VERTICALEXTENT); +DEFINE_WKT_CONSTANT(TIMEEXTENT); +DEFINE_WKT_CONSTANT(USAGE); +DEFINE_WKT_CONSTANT(DYNAMIC); +DEFINE_WKT_CONSTANT(FRAMEEPOCH); +DEFINE_WKT_CONSTANT(MODEL); +DEFINE_WKT_CONSTANT(VELOCITYGRID); +DEFINE_WKT_CONSTANT(ENSEMBLE); +DEFINE_WKT_CONSTANT(MEMBER); +DEFINE_WKT_CONSTANT(ENSEMBLEACCURACY); +DEFINE_WKT_CONSTANT(DERIVEDPROJCRS); +DEFINE_WKT_CONSTANT(BASEPROJCRS); +DEFINE_WKT_CONSTANT(EDATUM); +DEFINE_WKT_CONSTANT(ENGCRS); +DEFINE_WKT_CONSTANT(PDATUM); +DEFINE_WKT_CONSTANT(PARAMETRICCRS); +DEFINE_WKT_CONSTANT(PARAMETRICUNIT); +DEFINE_WKT_CONSTANT(BASEVERTCRS); +DEFINE_WKT_CONSTANT(BASEENGCRS); +DEFINE_WKT_CONSTANT(BASEPARAMCRS); +DEFINE_WKT_CONSTANT(BASETIMECRS); + +DEFINE_WKT_CONSTANT(GEODETICCRS); +DEFINE_WKT_CONSTANT(GEODETICDATUM); +DEFINE_WKT_CONSTANT(PROJECTEDCRS); +DEFINE_WKT_CONSTANT(PRIMEMERIDIAN); +DEFINE_WKT_CONSTANT(GEOGRAPHICCRS); +DEFINE_WKT_CONSTANT(TRF); +DEFINE_WKT_CONSTANT(VERTICALCRS); +DEFINE_WKT_CONSTANT(VERTICALDATUM); +DEFINE_WKT_CONSTANT(VRF); +DEFINE_WKT_CONSTANT(TIMEDATUM); +DEFINE_WKT_CONSTANT(ENGINEERINGDATUM); +DEFINE_WKT_CONSTANT(ENGINEERINGCRS); +DEFINE_WKT_CONSTANT(PARAMETRICDATUM); + +//! @endcond + +// --------------------------------------------------------------------------- + +namespace common { + +/** \brief "Empty"/"None", unit of measure of type NONE. */ +const UnitOfMeasure UnitOfMeasure::NONE("", 1.0, UnitOfMeasure::Type::NONE); + +/** \brief Scale unity, unit of measure of type SCALE. */ +const UnitOfMeasure UnitOfMeasure::SCALE_UNITY("unity", 1.0, + UnitOfMeasure::Type::SCALE, + Identifier::EPSG, "9201"); + +/** \brief Parts-per-million, unit of measure of type SCALE. */ +const UnitOfMeasure UnitOfMeasure::PARTS_PER_MILLION("parts per million", 1e-6, + UnitOfMeasure::Type::SCALE, + Identifier::EPSG, "9202"); + +/** \brief Metre, unit of measure of type LINEAR (SI unit). */ +const UnitOfMeasure UnitOfMeasure::METRE("metre", 1.0, + UnitOfMeasure::Type::LINEAR, + Identifier::EPSG, "9001"); + +/** \brief Degree, unit of measure of type ANGULAR. */ +const UnitOfMeasure UnitOfMeasure::DEGREE("degree", M_PI / 180., + UnitOfMeasure::Type::ANGULAR, + Identifier::EPSG, "9122"); + +/** \brief Arc-second, unit of measure of type ANGULAR. */ +const UnitOfMeasure UnitOfMeasure::ARC_SECOND("arc-second", M_PI / 180. / 3600., + UnitOfMeasure::Type::ANGULAR, + Identifier::EPSG, "9104"); + +/** \brief Grad, unit of measure of type ANGULAR. */ +const UnitOfMeasure UnitOfMeasure::GRAD("grad", M_PI / 200., + UnitOfMeasure::Type::ANGULAR, + Identifier::EPSG, "9105"); + +/** \brief Radian, unit of measure of type ANGULAR (SI unit). */ +const UnitOfMeasure UnitOfMeasure::RADIAN("radian", 1.0, + UnitOfMeasure::Type::ANGULAR, + Identifier::EPSG, "9101"); + +/** \brief Microradian, unit of measure of type ANGULAR. */ +const UnitOfMeasure UnitOfMeasure::MICRORADIAN("microradian", 1e-6, + UnitOfMeasure::Type::ANGULAR, + Identifier::EPSG, "9109"); + +/** \brief Second, unit of measure of type TIME (SI unit). */ +const UnitOfMeasure UnitOfMeasure::SECOND("second", 1.0, + UnitOfMeasure::Type::TIME, + Identifier::EPSG, "1029"); + +/** \brief Year, unit of measure of type TIME */ +const UnitOfMeasure UnitOfMeasure::YEAR("year", 31556925.445, + UnitOfMeasure::Type::TIME, + Identifier::EPSG, "1040"); + +/** \brief Metre per year, unit of measure of type LINEAR. */ +const UnitOfMeasure UnitOfMeasure::METRE_PER_YEAR("metres per year", + 1.0 / 31556925.445, + UnitOfMeasure::Type::LINEAR, + Identifier::EPSG, "1042"); + +/** \brief Arc-second per year, unit of measure of type ANGULAR. */ +const UnitOfMeasure UnitOfMeasure::ARC_SECOND_PER_YEAR( + "arc-seconds per year", M_PI / 180. / 3600. / 31556925.445, + UnitOfMeasure::Type::ANGULAR, Identifier::EPSG, "1043"); + +/** \brief Part-sper-million per year, unit of measure of type SCALE. */ +const UnitOfMeasure UnitOfMeasure::PPM_PER_YEAR("parts per million per year", + 1e-6 / 31556925.445, + UnitOfMeasure::Type::SCALE, + Identifier::EPSG, "1036"); + +} // namespace common + +// --------------------------------------------------------------------------- + +namespace cs { +std::map<std::string, const AxisDirection *> AxisDirection::registry; + +/** Axis positive direction is north. In a geodetic or projected CRS, north is + * defined through the geodetic reference frame. In an engineering CRS, north + * may be defined with respect to an engineering object rather than a + * geographical direction. */ +const AxisDirection AxisDirection::NORTH("north"); + +/** Axis positive direction is approximately north-north-east. */ +const AxisDirection AxisDirection::NORTH_NORTH_EAST("northNorthEast"); + +/** Axis positive direction is approximately north-east. */ +const AxisDirection AxisDirection::NORTH_EAST("northEast"); + +/** Axis positive direction is approximately east-north-east. */ +const AxisDirection AxisDirection::EAST_NORTH_EAST("eastNorthEast"); + +/** Axis positive direction is 90deg clockwise from north. */ +const AxisDirection AxisDirection::EAST("east"); + +/** Axis positive direction is approximately east-south-east. */ +const AxisDirection AxisDirection::EAST_SOUTH_EAST("eastSouthEast"); + +/** Axis positive direction is approximately south-east. */ +const AxisDirection AxisDirection::SOUTH_EAST("southEast"); + +/** Axis positive direction is approximately south-south-east. */ +const AxisDirection AxisDirection::SOUTH_SOUTH_EAST("southSouthEast"); + +/** Axis positive direction is 180deg clockwise from north. */ +const AxisDirection AxisDirection::SOUTH("south"); + +/** Axis positive direction is approximately south-south-west. */ +const AxisDirection AxisDirection::SOUTH_SOUTH_WEST("southSouthWest"); + +/** Axis positive direction is approximately south-west. */ +const AxisDirection AxisDirection::SOUTH_WEST("southWest"); + +/** Axis positive direction is approximately west-south-west. */ +const AxisDirection AxisDirection::WEST_SOUTH_WEST("westSouthWest"); + +/** Axis positive direction is 270deg clockwise from north. */ +const AxisDirection AxisDirection::WEST("west"); + +/** Axis positive direction is approximately west-north-west. */ +const AxisDirection AxisDirection::WEST_NORTH_WEST("westNorthWest"); + +/** Axis positive direction is approximately north-west. */ +const AxisDirection AxisDirection::NORTH_WEST("northWest"); + +/** Axis positive direction is approximately north-north-west. */ +const AxisDirection AxisDirection::NORTH_NORTH_WEST("northNorthWest"); + +/** Axis positive direction is up relative to gravity. */ +const AxisDirection AxisDirection::UP("up"); + +/** Axis positive direction is down relative to gravity. */ +const AxisDirection AxisDirection::DOWN("down"); + +/** Axis positive direction is in the equatorial plane from the centre of the + * modelled Earth towards the intersection of the equator with the prime + * meridian. */ +const AxisDirection AxisDirection::GEOCENTRIC_X("geocentricX"); + +/** Axis positive direction is in the equatorial plane from the centre of the + * modelled Earth towards the intersection of the equator and the meridian 90deg + * eastwards from the prime meridian. */ +const AxisDirection AxisDirection::GEOCENTRIC_Y("geocentricY"); + +/** Axis positive direction is from the centre of the modelled Earth parallel to + * its rotation axis and towards its north pole. */ +const AxisDirection AxisDirection::GEOCENTRIC_Z("geocentricZ"); + +/** Axis positive direction is towards higher pixel column. */ +const AxisDirection AxisDirection::COLUMN_POSITIVE("columnPositive"); + +/** Axis positive direction is towards lower pixel column. */ +const AxisDirection AxisDirection::COLUMN_NEGATIVE("columnNegative"); + +/** Axis positive direction is towards higher pixel row. */ +const AxisDirection AxisDirection::ROW_POSITIVE("rowPositive"); + +/** Axis positive direction is towards lower pixel row. */ +const AxisDirection AxisDirection::ROW_NEGATIVE("rowNegative"); + +/** Axis positive direction is right in display. */ +const AxisDirection AxisDirection::DISPLAY_RIGHT("displayRight"); + +/** Axis positive direction is left in display. */ +const AxisDirection AxisDirection::DISPLAY_LEFT("displayLeft"); + +/** Axis positive direction is towards top of approximately vertical display + * surface. */ +const AxisDirection AxisDirection::DISPLAY_UP("displayUp"); + +/** Axis positive direction is towards bottom of approximately vertical display + * surface. */ +const AxisDirection AxisDirection::DISPLAY_DOWN("displayDown"); + +/** Axis positive direction is forward; for an observer at the centre of the + * object this is will be towards its front, bow or nose. */ +const AxisDirection AxisDirection::FORWARD("forward"); + +/** Axis positive direction is aft; for an observer at the centre of the object + * this will be towards its back, stern or tail. */ +const AxisDirection AxisDirection::AFT("aft"); + +/** Axis positive direction is port; for an observer at the centre of the object + * this will be towards its left. */ +const AxisDirection AxisDirection::PORT("port"); + +/** Axis positive direction is starboard; for an observer at the centre of the + * object this will be towards its right. */ +const AxisDirection AxisDirection::STARBOARD("starboard"); + +/** Axis positive direction is clockwise from a specified direction. */ +const AxisDirection AxisDirection::CLOCKWISE("clockwise"); + +/** Axis positive direction is counter clockwise from a specified direction. */ +const AxisDirection AxisDirection::COUNTER_CLOCKWISE("counterClockwise"); + +/** Axis positive direction is towards the object. */ +const AxisDirection AxisDirection::TOWARDS("towards"); + +/** Axis positive direction is away from the object. */ +const AxisDirection AxisDirection::AWAY_FROM("awayFrom"); + +/** Temporal axis positive direction is towards the future. */ +const AxisDirection AxisDirection::FUTURE("future"); + +/** Temporal axis positive direction is towards the past. */ +const AxisDirection AxisDirection::PAST("past"); + +/** Axis positive direction is unspecified. */ +const AxisDirection AxisDirection::UNSPECIFIED("unspecified"); + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress + +std::map<std::string, const AxisDirectionWKT1 *> AxisDirectionWKT1::registry; + +const AxisDirectionWKT1 AxisDirectionWKT1::NORTH("NORTH"); +const AxisDirectionWKT1 AxisDirectionWKT1::EAST("EAST"); +const AxisDirectionWKT1 AxisDirectionWKT1::SOUTH("SOUTH"); +const AxisDirectionWKT1 AxisDirectionWKT1::WEST("WEST"); +const AxisDirectionWKT1 AxisDirectionWKT1::UP("UP"); +const AxisDirectionWKT1 AxisDirectionWKT1::DOWN("DOWN"); +const AxisDirectionWKT1 AxisDirectionWKT1::OTHER("OTHER"); + +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +const std::string AxisName::Longitude("Longitude"); +const std::string AxisName::Latitude("Latitude"); +const std::string AxisName::Easting("Easting"); +const std::string AxisName::Northing("Northing"); +const std::string AxisName::Westing("Westing"); +const std::string AxisName::Southing("Southing"); +const std::string AxisName::Ellipsoidal_height("Ellipsoidal height"); +const std::string AxisName::Geocentric_X("Geocentric X"); +const std::string AxisName::Geocentric_Y("Geocentric Y"); +const std::string AxisName::Geocentric_Z("Geocentric Z"); +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +const std::string AxisAbbreviation::lon("lon"); +const std::string AxisAbbreviation::lat("lat"); +const std::string AxisAbbreviation::E("E"); +const std::string AxisAbbreviation::N("N"); +const std::string AxisAbbreviation::h("h"); +const std::string AxisAbbreviation::X("X"); +const std::string AxisAbbreviation::Y("Y"); +const std::string AxisAbbreviation::Z("Z"); +//! @endcond + +} // namespace cs + +// --------------------------------------------------------------------------- + +/** \brief The realization is by adjustment of a levelling network fixed to one + * or more tide gauges. */ +const RealizationMethod RealizationMethod::LEVELLING("levelling"); +/** \brief The realization is through a geoid height model or a height + * correction model. This is applied to a specified geodetic CRS. */ +const RealizationMethod RealizationMethod::GEOID("geoid"); +/** \brief The realization is through a tidal model or by tidal predictions. */ +const RealizationMethod RealizationMethod::TIDAL("tidal"); + +// --------------------------------------------------------------------------- + +/** \brief The Greenwich PrimeMeridian */ +const PrimeMeridianNNPtr + PrimeMeridian::GREENWICH(PrimeMeridian::createGREENWICH()); +/** \brief The Paris PrimeMeridian */ +const PrimeMeridianNNPtr PrimeMeridian::PARIS(PrimeMeridian::createPARIS()); + +// --------------------------------------------------------------------------- + +/** \brief Earth celestial body */ +const std::string Ellipsoid::EARTH("Earth"); + +/** \brief The EPSG:7008 / "Clarke 1866" Ellipsoid */ +const EllipsoidNNPtr Ellipsoid::CLARKE_1866(Ellipsoid::createCLARKE_1866()); + +/** \brief The EPSG:7030 / "WGS 84" Ellipsoid */ +const EllipsoidNNPtr Ellipsoid::WGS84(Ellipsoid::createWGS84()); + +/** \brief The EPSG:7019 / "GRS 1980" Ellipsoid */ +const EllipsoidNNPtr Ellipsoid::GRS1980(Ellipsoid::createGRS1980()); + +// --------------------------------------------------------------------------- + +/** \brief The EPSG:6267 / "North_American_Datum_1927" GeodeticReferenceFrame */ +const GeodeticReferenceFrameNNPtr GeodeticReferenceFrame::EPSG_6267( + GeodeticReferenceFrame::createEPSG_6267()); + +/** \brief The EPSG:6269 / "North_American_Datum_1983" GeodeticReferenceFrame */ +const GeodeticReferenceFrameNNPtr GeodeticReferenceFrame::EPSG_6269( + GeodeticReferenceFrame::createEPSG_6269()); + +/** \brief The EPSG:6326 / "WGS_1984" GeodeticReferenceFrame */ +const GeodeticReferenceFrameNNPtr GeodeticReferenceFrame::EPSG_6326( + GeodeticReferenceFrame::createEPSG_6326()); + +// --------------------------------------------------------------------------- + +/** \brief The proleptic Gregorian calendar. */ +const std::string + TemporalDatum::CALENDAR_PROLEPTIC_GREGORIAN("proleptic Gregorian"); + +// --------------------------------------------------------------------------- + +/** \brief EPSG:4978 / "WGS 84" Geocentric */ +const GeodeticCRSNNPtr GeodeticCRS::EPSG_4978(GeodeticCRS::createEPSG_4978()); + +// --------------------------------------------------------------------------- + +/** \brief EPSG:4267 / "NAD27" 2D GeographicCRS */ +const GeographicCRSNNPtr + GeographicCRS::EPSG_4267(GeographicCRS::createEPSG_4267()); + +/** \brief EPSG:4269 / "NAD83" 2D GeographicCRS */ +const GeographicCRSNNPtr + GeographicCRS::EPSG_4269(GeographicCRS::createEPSG_4269()); + +/** \brief EPSG:4326 / "WGS 84" 2D GeographicCRS */ +const GeographicCRSNNPtr + GeographicCRS::EPSG_4326(GeographicCRS::createEPSG_4326()); + +/** \brief OGC:CRS84 / "CRS 84" 2D GeographicCRS (long, lat)*/ +const GeographicCRSNNPtr + GeographicCRS::OGC_CRS84(GeographicCRS::createOGC_CRS84()); + +/** \brief EPSG:4807 / "NTF (Paris)" 2D GeographicCRS */ +const GeographicCRSNNPtr + GeographicCRS::EPSG_4807(GeographicCRS::createEPSG_4807()); + +/** \brief EPSG:4979 / "WGS 84" 3D GeographicCRS */ +const GeographicCRSNNPtr + GeographicCRS::EPSG_4979(GeographicCRS::createEPSG_4979()); + +// --------------------------------------------------------------------------- + +NS_PROJ_END diff --git a/src/util.cpp b/src/util.cpp new file mode 100644 index 00000000..b3a5149d --- /dev/null +++ b/src/util.cpp @@ -0,0 +1,667 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#ifndef FROM_PROJ_CPP +#define FROM_PROJ_CPP +#endif + +#include "proj/util.hpp" +#include "proj/io.hpp" + +#include "proj/internal/internal.hpp" + +#include <map> +#include <memory> +#include <string> + +using namespace NS_PROJ::internal; + +#if 0 +namespace dropbox{ namespace oxygen { +template<> nn<NS_PROJ::util::BaseObjectPtr>::~nn() = default; +template<> nn<NS_PROJ::util::BoxedValuePtr>::~nn() = default; +template<> nn<NS_PROJ::util::ArrayOfBaseObjectPtr>::~nn() = default; +template<> nn<NS_PROJ::util::LocalNamePtr>::~nn() = default; +template<> nn<NS_PROJ::util::GenericNamePtr>::~nn() = default; +template<> nn<NS_PROJ::util::NameSpacePtr>::~nn() = default; +}} +#endif + +NS_PROJ_START +namespace util { + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct BaseObject::Private { + // This is a manual implementation of std::enable_shared_from_this<> that + // avoids publicly deriving from it. + std::weak_ptr<BaseObject> self_{}; +}; +//! @endcond + +// --------------------------------------------------------------------------- + +BaseObject::BaseObject() : d(internal::make_unique<Private>()) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +BaseObject::~BaseObject() = default; + +// --------------------------------------------------------------------------- + +BaseObjectNNPtr::~BaseObjectNNPtr() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** Keep a reference to ourselves as an internal weak pointer. So that + * extractGeographicBaseObject() can later return a shared pointer on itself. + */ +void BaseObject::assignSelf(const BaseObjectNNPtr &self) { + assert(self.get() == this); + d->self_ = self.as_nullable(); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +BaseObjectNNPtr BaseObject::shared_from_this() const { + // This assertion checks that in all code paths where we create a + // shared pointer, we took care of assigning it to self_, by calling + // assignSelf(); + return NN_CHECK_ASSERT(d->self_.lock()); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct BoxedValue::Private { + BoxedValue::Type type_{BoxedValue::Type::INTEGER}; + std::string stringValue_{}; + int integerValue_{}; + bool booleanValue_{}; + + explicit Private(const std::string &stringValueIn) + : type_(BoxedValue::Type::STRING), stringValue_(stringValueIn) {} + + explicit Private(int integerValueIn) + : type_(BoxedValue::Type::INTEGER), integerValue_(integerValueIn) {} + + explicit Private(bool booleanValueIn) + : type_(BoxedValue::Type::BOOLEAN), booleanValue_(booleanValueIn) {} +}; +//! @endcond + +// --------------------------------------------------------------------------- + +BoxedValue::BoxedValue() : d(internal::make_unique<Private>(std::string())) {} + +// --------------------------------------------------------------------------- + +/** \brief Constructs a BoxedValue from a string. + */ +BoxedValue::BoxedValue(const char *stringValueIn) + : d(internal::make_unique<Private>( + std::string(stringValueIn ? stringValueIn : ""))) {} + +// --------------------------------------------------------------------------- + +/** \brief Constructs a BoxedValue from a string. + */ +BoxedValue::BoxedValue(const std::string &stringValueIn) + : d(internal::make_unique<Private>(stringValueIn)) {} + +// --------------------------------------------------------------------------- + +/** \brief Constructs a BoxedValue from an integer. + */ +BoxedValue::BoxedValue(int integerValueIn) + : d(internal::make_unique<Private>(integerValueIn)) {} + +// --------------------------------------------------------------------------- + +/** \brief Constructs a BoxedValue from a boolean. + */ +BoxedValue::BoxedValue(bool booleanValueIn) + : d(internal::make_unique<Private>(booleanValueIn)) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +BoxedValue::BoxedValue(const BoxedValue &other) + : d(internal::make_unique<Private>(*other.d)) {} + +// --------------------------------------------------------------------------- + +BoxedValue::~BoxedValue() = default; + +// --------------------------------------------------------------------------- + +const BoxedValue::Type &BoxedValue::type() const { return d->type_; } + +// --------------------------------------------------------------------------- + +const std::string &BoxedValue::stringValue() const { return d->stringValue_; } + +// --------------------------------------------------------------------------- + +int BoxedValue::integerValue() const { return d->integerValue_; } + +// --------------------------------------------------------------------------- + +bool BoxedValue::booleanValue() const { return d->booleanValue_; } +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct ArrayOfBaseObject::Private { + std::vector<BaseObjectNNPtr> values_{}; +}; +//! @endcond +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +ArrayOfBaseObject::ArrayOfBaseObject() : d(internal::make_unique<Private>()) {} + +// --------------------------------------------------------------------------- + +ArrayOfBaseObject::~ArrayOfBaseObject() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Adds an object to the array. + * + * @param obj the object to add. + */ +void ArrayOfBaseObject::add(const BaseObjectNNPtr &obj) { + d->values_.emplace_back(obj); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +std::vector<BaseObjectNNPtr>::const_iterator ArrayOfBaseObject::begin() const { + return d->values_.begin(); +} + +// --------------------------------------------------------------------------- + +std::vector<BaseObjectNNPtr>::const_iterator ArrayOfBaseObject::end() const { + return d->values_.end(); +} + +// --------------------------------------------------------------------------- + +bool ArrayOfBaseObject::empty() const { return d->values_.empty(); } +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a ArrayOfBaseObject. + * + * @return a new ArrayOfBaseObject. + */ +ArrayOfBaseObjectNNPtr ArrayOfBaseObject::create() { + return ArrayOfBaseObject::nn_make_shared<ArrayOfBaseObject>(); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct PropertyMap::Private { + std::map<std::string, BaseObjectNNPtr> map_{}; +}; +//! @endcond + +// --------------------------------------------------------------------------- + +PropertyMap::PropertyMap() : d(internal::make_unique<Private>()) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +PropertyMap::PropertyMap(const PropertyMap &other) + : d(internal::make_unique<Private>(*(other.d))) {} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +PropertyMap::~PropertyMap() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +std::map<std::string, BaseObjectNNPtr>::iterator +PropertyMap::find(const std::string &key) const { + return d->map_.find(key); +} + +// --------------------------------------------------------------------------- + +std::map<std::string, BaseObjectNNPtr>::iterator PropertyMap::end() const { + return d->map_.end(); +} +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Set a BaseObjectNNPtr as the value of a key. */ +PropertyMap &PropertyMap::set(const std::string &key, + const BaseObjectNNPtr &val) { + auto iter = d->map_.find(key); + if (iter != d->map_.end()) { + iter->second = val; + } else { + d->map_.insert(std::pair<std::string, BaseObjectNNPtr>(key, val)); + } + return *this; +} + +// --------------------------------------------------------------------------- + +/** \brief Set a BoxedValue as the value of a key. */ +PropertyMap &PropertyMap::set(const std::string &key, const BoxedValue &val) { + auto iter = d->map_.find(key); + if (iter != d->map_.end()) { + iter->second = util::nn_make_shared<BoxedValue>(val); + } else { + d->map_.insert(std::pair<std::string, BaseObjectNNPtr>( + key, util::nn_make_shared<BoxedValue>(val))); + } + return *this; +} + +// --------------------------------------------------------------------------- + +/** \brief Set a string as the value of a key. */ +PropertyMap &PropertyMap::set(const std::string &key, const std::string &val) { + return set(key, BoxedValue(val)); +} + +// --------------------------------------------------------------------------- + +/** \brief Set a string as the value of a key. */ +PropertyMap &PropertyMap::set(const std::string &key, const char *val) { + return set(key, BoxedValue(val)); +} + +// --------------------------------------------------------------------------- + +/** \brief Set a integer as the value of a key. */ +PropertyMap &PropertyMap::set(const std::string &key, int val) { + return set(key, BoxedValue(val)); +} + +// --------------------------------------------------------------------------- + +/** \brief Set a boolean as the value of a key. */ +PropertyMap &PropertyMap::set(const std::string &key, bool val) { + return set(key, BoxedValue(val)); +} + +// --------------------------------------------------------------------------- + +/** \brief Set a vector of strings as the value of a key. */ +PropertyMap &PropertyMap::set(const std::string &key, + const std::vector<std::string> &arrayIn) { + ArrayOfBaseObjectNNPtr array = ArrayOfBaseObject::create(); + for (const auto &str : arrayIn) { + array->add(util::nn_make_shared<BoxedValue>(str)); + } + return set(key, array); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +bool PropertyMap::getStringValue( + const std::string &key, + std::string &outVal) const // throw(InvalidValueTypeException) +{ + auto oIter = d->map_.find(key); + if (oIter == d->map_.end()) { + return false; + } + auto genVal = dynamic_cast<const BoxedValue *>(oIter->second.get()); + if (genVal && genVal->type() == BoxedValue::Type::STRING) { + outVal = genVal->stringValue(); + return true; + } + throw InvalidValueTypeException("Invalid value type for " + key); +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct GenericName::Private {}; +//! @endcond + +// --------------------------------------------------------------------------- + +GenericName::GenericName() : d(internal::make_unique<Private>()) {} + +// --------------------------------------------------------------------------- + +GenericName::GenericName(const GenericName &other) + : d(internal::make_unique<Private>(*other.d)) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +GenericName::~GenericName() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct NameSpace::Private { + GenericNamePtr name{}; + bool isGlobal{}; + std::string separator = std::string(":"); + std::string separatorHead = std::string(":"); +}; +//! @endcond + +// --------------------------------------------------------------------------- + +NameSpace::NameSpace(const GenericNamePtr &nameIn) + : d(internal::make_unique<Private>()) { + d->name = nameIn; +} + +// --------------------------------------------------------------------------- + +NameSpace::NameSpace(const NameSpace &other) + : d(internal::make_unique<Private>(*other.d)) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +NameSpace::~NameSpace() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Returns whether this is a global namespace. */ +bool NameSpace::isGlobal() const { return d->isGlobal; } + +// --------------------------------------------------------------------------- + +NameSpaceNNPtr NameSpace::getGlobalFromThis() const { + NameSpaceNNPtr ns(NameSpace::nn_make_shared<NameSpace>(*this)); + ns->d->isGlobal = true; + ns->d->name = LocalName::make_shared<LocalName>("global"); + return ns; +} + +// --------------------------------------------------------------------------- + +/** \brief Returns the name of this namespace. */ +const GenericNamePtr &NameSpace::name() const { return d->name; } + +// --------------------------------------------------------------------------- + +const std::string &NameSpace::separator() const { return d->separator; } + +// --------------------------------------------------------------------------- + +NameSpaceNNPtr NameSpace::createGLOBAL() { + NameSpaceNNPtr ns(NameSpace::nn_make_shared<NameSpace>( + LocalName::make_shared<LocalName>("global"))); + ns->d->isGlobal = true; + return ns; +} + +// --------------------------------------------------------------------------- + +const NameSpaceNNPtr NameSpace::GLOBAL(NameSpace::createGLOBAL()); + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +struct LocalName::Private { + NameSpacePtr scope{}; + std::string name{}; +}; +//! @endcond + +// --------------------------------------------------------------------------- + +LocalName::LocalName(const std::string &name) + : d(internal::make_unique<Private>()) { + d->name = name; +} + +// --------------------------------------------------------------------------- + +LocalName::LocalName(const NameSpacePtr &ns, const std::string &name) + : d(internal::make_unique<Private>()) { + d->scope = ns ? ns : static_cast<NameSpacePtr>(NameSpace::GLOBAL); + d->name = name; +} + +// --------------------------------------------------------------------------- + +LocalName::LocalName(const LocalName &other) + : GenericName(other), d(internal::make_unique<Private>(*other.d)) {} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +LocalName::~LocalName() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +const NameSpacePtr LocalName::scope() const { + if (d->scope) + return d->scope; + return NameSpace::GLOBAL; +} + +// --------------------------------------------------------------------------- + +GenericNameNNPtr LocalName::toFullyQualifiedName() const { + if (scope()->isGlobal()) + return LocalName::nn_make_shared<LocalName>(*this); + + return LocalName::nn_make_shared<LocalName>( + d->scope->getGlobalFromThis(), + d->scope->name()->toFullyQualifiedName()->toString() + + d->scope->separator() + d->name); +} + +// --------------------------------------------------------------------------- + +std::string LocalName::toString() const { return d->name; } + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a NameSpace. + * + * @param name name of the namespace. + * @param properties Properties. Allowed keys are "separator" and + * "separator.head". + * @return a new NameFactory. + */ +NameSpaceNNPtr NameFactory::createNameSpace(const GenericNameNNPtr &name, + const PropertyMap &properties) { + NameSpaceNNPtr ns(NameSpace::nn_make_shared<NameSpace>(name)); + properties.getStringValue("separator", ns->d->separator); + properties.getStringValue("separator.head", ns->d->separatorHead); + + return ns; +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a LocalName. + * + * @param scope scope. + * @param name string of the local name. + * @return a new LocalName. + */ +LocalNameNNPtr NameFactory::createLocalName(const NameSpacePtr &scope, + const std::string &name) { + return LocalName::nn_make_shared<LocalName>(scope, name); +} + +// --------------------------------------------------------------------------- + +/** \brief Instanciate a GenericName. + * + * @param scope scope. + * @param parsedNames the components of the name. + * @return a new GenericName. + */ +GenericNameNNPtr +NameFactory::createGenericName(const NameSpacePtr &scope, + const std::vector<std::string> &parsedNames) { + std::string name; + const std::string separator(scope ? scope->separator() + : NameSpace::GLOBAL->separator()); + bool first = true; + for (const auto &str : parsedNames) { + if (!first) + name += separator; + first = false; + name += str; + } + return LocalName::nn_make_shared<LocalName>(scope, name); +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +CodeList::~CodeList() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +CodeList &CodeList::operator=(const CodeList &other) { + name_ = other.name_; + return *this; +} + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +Exception::Exception(const char *message) : msg_(message) {} + +// --------------------------------------------------------------------------- + +Exception::Exception(const std::string &message) : msg_(message) {} + +// --------------------------------------------------------------------------- + +Exception::Exception(const Exception &) = default; + +// --------------------------------------------------------------------------- + +Exception::~Exception() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** Return the exception text. */ +const char *Exception::what() const noexcept { return msg_.c_str(); } + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +InvalidValueTypeException::InvalidValueTypeException(const char *message) + : Exception(message) {} + +// --------------------------------------------------------------------------- + +InvalidValueTypeException::InvalidValueTypeException(const std::string &message) + : Exception(message) {} + +// --------------------------------------------------------------------------- + +InvalidValueTypeException::~InvalidValueTypeException() = default; + +// --------------------------------------------------------------------------- + +InvalidValueTypeException::InvalidValueTypeException( + const InvalidValueTypeException &) = default; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +UnsupportedOperationException::UnsupportedOperationException( + const char *message) + : Exception(message) {} + +// --------------------------------------------------------------------------- + +UnsupportedOperationException::UnsupportedOperationException( + const std::string &message) + : Exception(message) {} + +// --------------------------------------------------------------------------- + +UnsupportedOperationException::~UnsupportedOperationException() = default; + +// --------------------------------------------------------------------------- + +UnsupportedOperationException::UnsupportedOperationException( + const UnsupportedOperationException &) = default; +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +IComparable::~IComparable() = default; +//! @endcond + +// --------------------------------------------------------------------------- + +/** \brief Returns whether an object is equivalent to another one. + * @param other other object to compare to + * @param criterion comparaison criterion. + * @return true if objects are equivalent. + */ +bool IComparable::isEquivalentTo(const IComparable *other, + Criterion criterion) const { + return _isEquivalentTo(other, criterion); +} + +// --------------------------------------------------------------------------- + +} // namespace util +NS_PROJ_END diff --git a/test/gie/builtins.gie b/test/gie/builtins.gie index f4e15a77..1154febc 100644 --- a/test/gie/builtins.gie +++ b/test/gie/builtins.gie @@ -124,6 +124,21 @@ expect 3_860_398.3783 5_430_089.0490 roundtrip 100 ------------------------------------------------------------------------------- +# Test the Modified Azimuthal Equidistant / EPSG 9832. Test data from the EPSG +Guidance Note 7 part 2, April 2018, p. 85 +------------------------------------------------------------------------------- +operation +proj=aeqd +ellps=clrk66 +lat_0=9.546708325068591 +lon_0=138.1687444500492 +x_0=40000.00 +y_0=60000.00 +------------------------------------------------------------------------------- +tolerance 1 cm +accept 138.19303001104092 9.596525859439623 +expect 42665.90 65509.82 +roundtrip 100 + +direction inverse +accept 42665.90 65509.82 +expect 138.19303001104092 9.596525859439623 + +------------------------------------------------------------------------------- # Test the azimuthal equidistant modified for Guam. Test data from the EPSG Guidance Note 7 part 2, September 2016, p. 85 ------------------------------------------------------------------------------- diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index d6f6b068..5138dafc 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -50,6 +50,14 @@ unset(_save_cxx_flags) # # Build PROJ unit tests # + +if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC" AND BUILD_LIBPROJ_SHARED) +add_definitions(-DPROJ_MSVC_DLL_IMPORT=1) +endif() + +include_directories(${CMAKE_SOURCE_DIR}/include) +include_directories(${SQLITE3_INCLUDE_DIR}) + add_executable(proj_test_unit main.cpp basic_test.cpp) @@ -78,3 +86,20 @@ target_link_libraries(pj_phi2_test ${PROJ_LIBRARIES}) add_test(NAME pj_phi2_test COMMAND pj_phi2_test) endif() + +add_executable(proj_test_cpp_api + main.cpp + test_util.cpp + test_common.cpp + test_crs.cpp + test_metadata.cpp + test_io.cpp + test_operation.cpp + test_datum.cpp + test_factory.cpp + test_c_api.cpp) +target_link_libraries(proj_test_cpp_api + gtest + ${PROJ_LIBRARIES} + ${SQLITE3_LIBRARY}) +add_test(NAME proj_test_cpp_api COMMAND proj_test_cpp_api) diff --git a/test/unit/Makefile.am b/test/unit/Makefile.am index 65132be7..77525f9a 100644 --- a/test/unit/Makefile.am +++ b/test/unit/Makefile.am @@ -4,16 +4,22 @@ EXTRA_DIST = CMakeLists.txt noinst_HEADERS = gtest_include.h -AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/test -I$(top_srcdir)/test/googletest/include +AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include -I$(top_srcdir)/test -I$(top_srcdir)/test/googletest/include @SQLITE3_FLAGS@ AM_CXXFLAGS = @CXX_WFLAGS@ @NO_ZERO_AS_NULL_POINTER_CONSTANT_FLAG@ +PROJ_LIB ?= ../../data + noinst_PROGRAMS = basic_test noinst_PROGRAMS += pj_phi2_test noinst_PROGRAMS += proj_errno_string_test +noinst_PROGRAMS += test_cpp_api basic_test_SOURCES = basic_test.cpp main.cpp basic_test_LDADD = ../../src/libproj.la ../../test/googletest/libgtest.la +test_cpp_api_SOURCES = test_util.cpp test_common.cpp test_crs.cpp test_metadata.cpp test_io.cpp test_operation.cpp test_datum.cpp test_factory.cpp test_c_api.cpp main.cpp +test_cpp_api_LDADD = ../../src/libproj.la ../../test/googletest/libgtest.la @SQLITE3_LDFLAGS@ + basic_test-check: basic_test ./basic_test @@ -31,3 +37,8 @@ proj_errno_string_test-check: proj_errno_string_test check-local: basic_test-check check-local: pj_phi2_test-check proj_errno_string_test-check + +test_cpp_api-check: test_cpp_api + PROJ_LIB=$(PROJ_LIB) ./test_cpp_api + +check-local: basic_test-check test_cpp_api-check diff --git a/test/unit/main.cpp b/test/unit/main.cpp index ffa95e03..f24a7aa6 100644 --- a/test/unit/main.cpp +++ b/test/unit/main.cpp @@ -26,9 +26,14 @@ * DEALINGS IN THE SOFTWARE. ****************************************************************************/ +#include <locale> + #include "gtest_include.h" GTEST_API_ int main(int argc, char **argv) { + // Use a potentially non-C locale to make sure we are robust + setlocale(LC_ALL, ""); + testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp new file mode 100644 index 00000000..207a8cd1 --- /dev/null +++ b/test/unit/test_c_api.cpp @@ -0,0 +1,1925 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: Test ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#include "gtest_include.h" + +#include "proj.h" + +#include "proj/common.hpp" +#include "proj/coordinateoperation.hpp" +#include "proj/coordinatesystem.hpp" +#include "proj/crs.hpp" +#include "proj/datum.hpp" +#include "proj/io.hpp" +#include "proj/metadata.hpp" +#include "proj/util.hpp" + +using namespace osgeo::proj::common; +using namespace osgeo::proj::crs; +using namespace osgeo::proj::cs; +using namespace osgeo::proj::datum; +using namespace osgeo::proj::io; +using namespace osgeo::proj::metadata; +using namespace osgeo::proj::operation; +using namespace osgeo::proj::util; + +namespace { + +class CApi : public ::testing::Test { + + static void DummyLogFunction(void *, int, const char *) {} + + protected: + void SetUp() override { + m_ctxt = proj_context_create(); + proj_log_func(m_ctxt, nullptr, DummyLogFunction); + } + + void TearDown() override { proj_context_destroy(m_ctxt); } + + static BoundCRSNNPtr createBoundCRS() { + return BoundCRS::create( + GeographicCRS::EPSG_4807, GeographicCRS::EPSG_4326, + Transformation::create(PropertyMap(), GeographicCRS::EPSG_4807, + GeographicCRS::EPSG_4326, nullptr, + PropertyMap(), {}, {}, {})); + } + + static ProjectedCRSNNPtr createProjectedCRS() { + PropertyMap propertiesCRS; + propertiesCRS.set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 32631) + .set(IdentifiedObject::NAME_KEY, "WGS 84 / UTM zone 31N"); + return ProjectedCRS::create( + propertiesCRS, GeographicCRS::EPSG_4326, + Conversion::createUTM(PropertyMap(), 31, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + } + + static VerticalCRSNNPtr createVerticalCRS() { + PropertyMap propertiesVDatum; + propertiesVDatum.set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 5101) + .set(IdentifiedObject::NAME_KEY, "Ordnance Datum Newlyn"); + auto vdatum = VerticalReferenceFrame::create(propertiesVDatum); + PropertyMap propertiesCRS; + propertiesCRS.set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 5701) + .set(IdentifiedObject::NAME_KEY, "ODN height"); + return VerticalCRS::create( + propertiesCRS, vdatum, + VerticalCS::createGravityRelatedHeight(UnitOfMeasure::METRE)); + } + + static CompoundCRSNNPtr createCompoundCRS() { + PropertyMap properties; + properties.set(Identifier::CODESPACE_KEY, "codespace") + .set(Identifier::CODE_KEY, "code") + .set(IdentifiedObject::NAME_KEY, "horizontal + vertical"); + return CompoundCRS::create( + properties, + std::vector<CRSNNPtr>{createProjectedCRS(), createVerticalCRS()}); + } + + PJ_CONTEXT *m_ctxt = nullptr; + + struct ObjectKeeper { + PJ_OBJ *m_obj = nullptr; + explicit ObjectKeeper(PJ_OBJ *obj) : m_obj(obj) {} + ~ObjectKeeper() { proj_obj_unref(m_obj); } + + ObjectKeeper(const ObjectKeeper &) = delete; + ObjectKeeper &operator=(const ObjectKeeper &) = delete; + }; + + struct ContextKeeper { + PJ_OPERATION_FACTORY_CONTEXT *m_op_ctxt = nullptr; + explicit ContextKeeper(PJ_OPERATION_FACTORY_CONTEXT *op_ctxt) + : m_op_ctxt(op_ctxt) {} + ~ContextKeeper() { proj_operation_factory_context_unref(m_op_ctxt); } + + ContextKeeper(const ContextKeeper &) = delete; + ContextKeeper &operator=(const ContextKeeper &) = delete; + }; + + struct ObjListKeeper { + PJ_OBJ_LIST *m_res = nullptr; + explicit ObjListKeeper(PJ_OBJ_LIST *res) : m_res(res) {} + ~ObjListKeeper() { proj_obj_list_unref(m_res); } + + ObjListKeeper(const ObjListKeeper &) = delete; + ObjListKeeper &operator=(const ObjListKeeper &) = delete; + }; +}; + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_create_from_user_input) { + proj_obj_unref(nullptr); + EXPECT_EQ(proj_obj_create_from_user_input(m_ctxt, "invalid", nullptr), + nullptr); + { + auto obj = proj_obj_create_from_user_input( + m_ctxt, + GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + EXPECT_NE(obj, nullptr); + } + { + auto obj = + proj_obj_create_from_user_input(m_ctxt, "EPSG:4326", nullptr); + ObjectKeeper keeper(obj); + EXPECT_NE(obj, nullptr); + } +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_create_from_wkt) { + proj_obj_unref(nullptr); + EXPECT_EQ(proj_obj_create_from_wkt(m_ctxt, "invalid", nullptr), nullptr); + auto obj = proj_obj_create_from_wkt( + m_ctxt, + GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + EXPECT_NE(obj, nullptr); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_create_from_proj_string) { + proj_obj_unref(nullptr); + EXPECT_EQ(proj_obj_create_from_proj_string(m_ctxt, "invalid", nullptr), + nullptr); + auto obj = + proj_obj_create_from_proj_string(m_ctxt, "+proj=longlat", nullptr); + ObjectKeeper keeper(obj); + EXPECT_NE(obj, nullptr); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_as_wkt) { + auto obj = proj_obj_create_from_wkt( + m_ctxt, + GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + + { + auto wkt = proj_obj_as_wkt(obj, PJ_WKT2_2018, nullptr); + ASSERT_NE(wkt, nullptr); + EXPECT_TRUE(std::string(wkt).find("GEOGCRS[") == 0) << wkt; + } + + { + auto wkt = proj_obj_as_wkt(obj, PJ_WKT2_2018_SIMPLIFIED, nullptr); + ASSERT_NE(wkt, nullptr); + EXPECT_TRUE(std::string(wkt).find("GEOGCRS[") == 0) << wkt; + EXPECT_TRUE(std::string(wkt).find("ANGULARUNIT[") == std::string::npos) + << wkt; + } + + { + auto wkt = proj_obj_as_wkt(obj, PJ_WKT2_2015, nullptr); + ASSERT_NE(wkt, nullptr); + EXPECT_TRUE(std::string(wkt).find("GEODCRS[") == 0) << wkt; + } + + { + auto wkt = proj_obj_as_wkt(obj, PJ_WKT2_2015_SIMPLIFIED, nullptr); + ASSERT_NE(wkt, nullptr); + EXPECT_TRUE(std::string(wkt).find("GEODCRS[") == 0) << wkt; + EXPECT_TRUE(std::string(wkt).find("ANGULARUNIT[") == std::string::npos) + << wkt; + } + + { + auto wkt = proj_obj_as_wkt(obj, PJ_WKT1_GDAL, nullptr); + ASSERT_NE(wkt, nullptr); + EXPECT_TRUE(std::string(wkt).find("GEOGCS[\"WGS 84\"") == 0) << wkt; + } + + { + auto wkt = proj_obj_as_wkt(obj, PJ_WKT1_ESRI, nullptr); + ASSERT_NE(wkt, nullptr); + EXPECT_TRUE(std::string(wkt).find("GEOGCS[\"GCS_WGS_1984\"") == 0) + << wkt; + } + + // MULTILINE=NO + { + const char *const options[] = {"MULTILINE=NO", nullptr}; + auto wkt = proj_obj_as_wkt(obj, PJ_WKT1_GDAL, options); + ASSERT_NE(wkt, nullptr); + EXPECT_TRUE(std::string(wkt).find("\n") == std::string::npos) << wkt; + } + + // INDENTATION_WIDTH=2 + { + const char *const options[] = {"INDENTATION_WIDTH=2", nullptr}; + auto wkt = proj_obj_as_wkt(obj, PJ_WKT1_GDAL, options); + ASSERT_NE(wkt, nullptr); + EXPECT_TRUE(std::string(wkt).find("\n DATUM") != std::string::npos) + << wkt; + } + + // OUTPUT_AXIS=NO + { + const char *const options[] = {"OUTPUT_AXIS=NO", nullptr}; + auto wkt = proj_obj_as_wkt(obj, PJ_WKT1_GDAL, options); + ASSERT_NE(wkt, nullptr); + EXPECT_TRUE(std::string(wkt).find("AXIS") == std::string::npos) << wkt; + } + + // unsupported option + { + const char *const options[] = {"unsupported=yes", nullptr}; + auto wkt = proj_obj_as_wkt(obj, PJ_WKT2_2018, options); + EXPECT_EQ(wkt, nullptr); + } +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_as_wkt_incompatible_WKT1) { + auto obj = proj_obj_create_from_wkt( + m_ctxt, + createBoundCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + + auto wkt1_GDAL = proj_obj_as_wkt(obj, PJ_WKT1_GDAL, nullptr); + ASSERT_EQ(wkt1_GDAL, nullptr); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_as_proj_string) { + auto obj = proj_obj_create_from_wkt( + m_ctxt, + GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + + { + auto proj_5 = proj_obj_as_proj_string(obj, PJ_PROJ_5, nullptr); + ASSERT_NE(proj_5, nullptr); + EXPECT_EQ(std::string(proj_5), "+proj=pipeline +step +proj=longlat " + "+ellps=WGS84 +step +proj=unitconvert " + "+xy_in=rad +xy_out=deg +step " + "+proj=axisswap +order=2,1"); + } + { + auto proj_4 = proj_obj_as_proj_string(obj, PJ_PROJ_4, nullptr); + ASSERT_NE(proj_4, nullptr); + EXPECT_EQ(std::string(proj_4), "+proj=longlat +datum=WGS84"); + } +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_as_proj_string_incompatible_WKT1) { + auto obj = proj_obj_create_from_wkt( + m_ctxt, + createBoundCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + + auto str = proj_obj_as_proj_string(obj, PJ_PROJ_5, nullptr); + ASSERT_EQ(str, nullptr); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_as_proj_string_etmerc_option) { + auto obj = proj_obj_create_from_proj_string(m_ctxt, "+proj=tmerc", nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + + const char *options[] = {"USE_ETMERC=YES", nullptr}; + auto str = proj_obj_as_proj_string(obj, PJ_PROJ_4, options); + ASSERT_NE(str, nullptr); + EXPECT_EQ(str, std::string("+proj=etmerc +lat_0=0 +lon_0=0 +k_0=1 +x_0=0 " + "+y_0=0 +datum=WGS84")); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_crs_create_bound_crs_to_WGS84) { + auto crs = proj_obj_create_from_database( + m_ctxt, "EPSG", "3844", PJ_OBJ_CATEGORY_CRS, false, nullptr); + ObjectKeeper keeper(crs); + ASSERT_NE(crs, nullptr); + + auto res = proj_obj_crs_create_bound_crs_to_WGS84(crs); + ObjectKeeper keeper_res(res); + ASSERT_NE(res, nullptr); + + auto proj_4 = proj_obj_as_proj_string(res, PJ_PROJ_4, nullptr); + ASSERT_NE(proj_4, nullptr); + EXPECT_EQ(std::string(proj_4), + "+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 " + "+y_0=500000 +ellps=krass " + "+towgs84=2.329,-147.042,-92.08,-0.309,0.325,0.497,5.69"); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_crs_create_bound_crs_to_WGS84_on_invalid_type) { + auto obj = proj_obj_create_from_wkt( + m_ctxt, createProjectedCRS() + ->derivingConversion() + ->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + + auto res = proj_obj_crs_create_bound_crs_to_WGS84(obj); + ASSERT_EQ(res, nullptr); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_get_name) { + auto obj = proj_obj_create_from_wkt( + m_ctxt, + GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + auto name = proj_obj_get_name(obj); + ASSERT_TRUE(name != nullptr); + EXPECT_EQ(name, std::string("WGS 84")); + EXPECT_EQ(name, proj_obj_get_name(obj)); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_get_id_auth_name) { + auto obj = proj_obj_create_from_wkt( + m_ctxt, + GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + auto auth = proj_obj_get_id_auth_name(obj, 0); + ASSERT_TRUE(auth != nullptr); + EXPECT_EQ(auth, std::string("EPSG")); + EXPECT_EQ(auth, proj_obj_get_id_auth_name(obj, 0)); + EXPECT_EQ(proj_obj_get_id_auth_name(obj, -1), nullptr); + EXPECT_EQ(proj_obj_get_id_auth_name(obj, 1), nullptr); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_get_id_code) { + auto obj = proj_obj_create_from_wkt( + m_ctxt, + GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + auto code = proj_obj_get_id_code(obj, 0); + ASSERT_TRUE(code != nullptr); + EXPECT_EQ(code, std::string("4326")); + EXPECT_EQ(code, proj_obj_get_id_code(obj, 0)); + EXPECT_EQ(proj_obj_get_id_code(obj, -1), nullptr); + EXPECT_EQ(proj_obj_get_id_code(obj, 1), nullptr); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_get_type) { + { + auto obj = proj_obj_create_from_wkt( + m_ctxt, + GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_GEOGRAPHIC_2D_CRS); + } + { + auto obj = proj_obj_create_from_wkt( + m_ctxt, + GeographicCRS::EPSG_4979->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_GEOGRAPHIC_3D_CRS); + } + { + auto obj = proj_obj_create_from_wkt( + m_ctxt, + GeographicCRS::EPSG_4978->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_GEOCENTRIC_CRS); + } + { + auto obj = proj_obj_create_from_wkt( + m_ctxt, GeographicCRS::EPSG_4326->datum() + ->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_GEODETIC_REFERENCE_FRAME); + } + { + auto obj = proj_obj_create_from_wkt( + m_ctxt, GeographicCRS::EPSG_4326->ellipsoid() + ->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_ELLIPSOID); + } + { + auto obj = proj_obj_create_from_wkt( + m_ctxt, createProjectedCRS() + ->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_PROJECTED_CRS); + } + { + auto obj = proj_obj_create_from_wkt( + m_ctxt, createVerticalCRS() + ->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_VERTICAL_CRS); + } + { + auto obj = proj_obj_create_from_wkt( + m_ctxt, createVerticalCRS() + ->datum() + ->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_VERTICAL_REFERENCE_FRAME); + } + { + auto obj = proj_obj_create_from_wkt( + m_ctxt, createProjectedCRS() + ->derivingConversion() + ->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_CONVERSION); + } + { + auto obj = proj_obj_create_from_wkt( + m_ctxt, + createBoundCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_BOUND_CRS); + } + { + auto obj = proj_obj_create_from_wkt( + m_ctxt, createBoundCRS() + ->transformation() + ->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_TRANSFORMATION); + } + { + auto obj = proj_obj_create_from_wkt(m_ctxt, "AUTHORITY[\"EPSG\", 4326]", + nullptr); + ObjectKeeper keeper(obj); + ASSERT_EQ(obj, nullptr); + } +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_create_from_database) { + { + auto crs = proj_obj_create_from_database( + m_ctxt, "EPSG", "-1", PJ_OBJ_CATEGORY_CRS, false, nullptr); + ASSERT_EQ(crs, nullptr); + } + { + auto crs = proj_obj_create_from_database( + m_ctxt, "EPSG", "4326", PJ_OBJ_CATEGORY_CRS, false, nullptr); + ASSERT_NE(crs, nullptr); + ObjectKeeper keeper(crs); + EXPECT_TRUE(proj_obj_is_crs(crs)); + EXPECT_FALSE(proj_obj_is_deprecated(crs)); + EXPECT_EQ(proj_obj_get_type(crs), PJ_OBJ_TYPE_GEOGRAPHIC_2D_CRS); + } + { + auto crs = proj_obj_create_from_database( + m_ctxt, "EPSG", "6871", PJ_OBJ_CATEGORY_CRS, false, nullptr); + ASSERT_NE(crs, nullptr); + ObjectKeeper keeper(crs); + EXPECT_TRUE(proj_obj_is_crs(crs)); + EXPECT_EQ(proj_obj_get_type(crs), PJ_OBJ_TYPE_COMPOUND_CRS); + } + { + auto ellipsoid = proj_obj_create_from_database( + m_ctxt, "EPSG", "7030", PJ_OBJ_CATEGORY_ELLIPSOID, false, nullptr); + ASSERT_NE(ellipsoid, nullptr); + ObjectKeeper keeper(ellipsoid); + EXPECT_EQ(proj_obj_get_type(ellipsoid), PJ_OBJ_TYPE_ELLIPSOID); + } + { + auto datum = proj_obj_create_from_database( + m_ctxt, "EPSG", "6326", PJ_OBJ_CATEGORY_DATUM, false, nullptr); + ASSERT_NE(datum, nullptr); + ObjectKeeper keeper(datum); + EXPECT_EQ(proj_obj_get_type(datum), + PJ_OBJ_TYPE_GEODETIC_REFERENCE_FRAME); + } + { + auto op = proj_obj_create_from_database( + m_ctxt, "EPSG", "16031", PJ_OBJ_CATEGORY_COORDINATE_OPERATION, + false, nullptr); + ASSERT_NE(op, nullptr); + ObjectKeeper keeper(op); + EXPECT_EQ(proj_obj_get_type(op), PJ_OBJ_TYPE_CONVERSION); + } +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_crs) { + auto crs = proj_obj_create_from_wkt( + m_ctxt, + createProjectedCRS() + ->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()) + .c_str(), + nullptr); + ASSERT_NE(crs, nullptr); + ObjectKeeper keeper(crs); + EXPECT_TRUE(proj_obj_is_crs(crs)); + + auto geodCRS = proj_obj_crs_get_geodetic_crs(crs); + ASSERT_NE(geodCRS, nullptr); + ObjectKeeper keeper_geogCRS(geodCRS); + EXPECT_TRUE(proj_obj_is_crs(geodCRS)); + auto geogCRS_name = proj_obj_get_name(geodCRS); + ASSERT_TRUE(geogCRS_name != nullptr); + EXPECT_EQ(geogCRS_name, std::string("WGS 84")); + + auto datum = proj_obj_crs_get_horizontal_datum(crs); + ASSERT_NE(datum, nullptr); + ObjectKeeper keeper_datum(datum); + auto datum_name = proj_obj_get_name(datum); + ASSERT_TRUE(datum_name != nullptr); + EXPECT_EQ(datum_name, std::string("World Geodetic System 1984")); + + auto ellipsoid = proj_obj_get_ellipsoid(crs); + ASSERT_NE(ellipsoid, nullptr); + ObjectKeeper keeper_ellipsoid(ellipsoid); + auto ellipsoid_name = proj_obj_get_name(ellipsoid); + ASSERT_TRUE(ellipsoid_name != nullptr); + EXPECT_EQ(ellipsoid_name, std::string("WGS 84")); + + auto ellipsoid_from_datum = proj_obj_get_ellipsoid(datum); + ASSERT_NE(ellipsoid_from_datum, nullptr); + ObjectKeeper keeper_ellipsoid_from_datum(ellipsoid_from_datum); + + EXPECT_EQ(proj_obj_get_ellipsoid(ellipsoid), nullptr); + EXPECT_FALSE(proj_obj_is_crs(ellipsoid)); + + double a; + double b; + int b_is_computed; + double rf; + EXPECT_TRUE(proj_obj_ellipsoid_get_parameters(ellipsoid, nullptr, nullptr, + nullptr, nullptr)); + EXPECT_TRUE(proj_obj_ellipsoid_get_parameters(ellipsoid, &a, &b, + &b_is_computed, &rf)); + EXPECT_FALSE( + proj_obj_ellipsoid_get_parameters(crs, &a, &b, &b_is_computed, &rf)); + EXPECT_EQ(a, 6378137); + EXPECT_NEAR(b, 6356752.31424518, 1e-9); + EXPECT_EQ(b_is_computed, 1); + EXPECT_EQ(rf, 298.257223563); + auto id = proj_obj_get_id_code(ellipsoid, 0); + ASSERT_TRUE(id != nullptr); + EXPECT_EQ(id, std::string("7030")); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_get_prime_meridian) { + auto crs = proj_obj_create_from_wkt( + m_ctxt, + createProjectedCRS() + ->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()) + .c_str(), + nullptr); + ASSERT_NE(crs, nullptr); + ObjectKeeper keeper(crs); + + auto pm = proj_obj_get_prime_meridian(crs); + ASSERT_NE(pm, nullptr); + ObjectKeeper keeper_pm(pm); + auto pm_name = proj_obj_get_name(pm); + ASSERT_TRUE(pm_name != nullptr); + EXPECT_EQ(pm_name, std::string("Greenwich")); + + EXPECT_EQ(proj_obj_get_prime_meridian(pm), nullptr); + + EXPECT_TRUE( + proj_obj_prime_meridian_get_parameters(pm, nullptr, nullptr, nullptr)); + double longitude = -1; + double longitude_unit = 0; + const char *longitude_unit_name = nullptr; + EXPECT_TRUE(proj_obj_prime_meridian_get_parameters( + pm, &longitude, &longitude_unit, &longitude_unit_name)); + EXPECT_EQ(longitude, 0); + EXPECT_NEAR(longitude_unit, UnitOfMeasure::DEGREE.conversionToSI(), 1e-10); + ASSERT_TRUE(longitude_unit_name != nullptr); + EXPECT_EQ(longitude_unit_name, std::string("degree")); + + auto datum = proj_obj_crs_get_horizontal_datum(crs); + ASSERT_NE(datum, nullptr); + ObjectKeeper keeper_datum(datum); + auto pm_from_datum = proj_obj_get_prime_meridian(datum); + ASSERT_NE(pm_from_datum, nullptr); + ObjectKeeper keeper_pm_from_datum(pm_from_datum); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_crs_compound) { + auto crs = proj_obj_create_from_wkt( + m_ctxt, + createCompoundCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), + nullptr); + ASSERT_NE(crs, nullptr); + ObjectKeeper keeper(crs); + EXPECT_EQ(proj_obj_get_type(crs), PJ_OBJ_TYPE_COMPOUND_CRS); + + EXPECT_EQ(proj_obj_crs_get_sub_crs(crs, -1), nullptr); + EXPECT_EQ(proj_obj_crs_get_sub_crs(crs, 2), nullptr); + + auto subcrs_horiz = proj_obj_crs_get_sub_crs(crs, 0); + ASSERT_NE(subcrs_horiz, nullptr); + ObjectKeeper keeper_subcrs_horiz(subcrs_horiz); + EXPECT_EQ(proj_obj_get_type(subcrs_horiz), PJ_OBJ_TYPE_PROJECTED_CRS); + EXPECT_EQ(proj_obj_crs_get_sub_crs(subcrs_horiz, 0), nullptr); + + auto subcrs_vertical = proj_obj_crs_get_sub_crs(crs, 1); + ASSERT_NE(subcrs_vertical, nullptr); + ObjectKeeper keeper_subcrs_vertical(subcrs_vertical); + EXPECT_EQ(proj_obj_get_type(subcrs_vertical), PJ_OBJ_TYPE_VERTICAL_CRS); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_get_source_target_crs_bound_crs) { + auto crs = proj_obj_create_from_wkt( + m_ctxt, + createBoundCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), + nullptr); + ASSERT_NE(crs, nullptr); + ObjectKeeper keeper(crs); + + auto sourceCRS = proj_obj_get_source_crs(crs); + ASSERT_NE(sourceCRS, nullptr); + ObjectKeeper keeper_sourceCRS(sourceCRS); + EXPECT_EQ(std::string(proj_obj_get_name(sourceCRS)), "NTF (Paris)"); + + auto targetCRS = proj_obj_get_target_crs(crs); + ASSERT_NE(targetCRS, nullptr); + ObjectKeeper keeper_targetCRS(targetCRS); + EXPECT_EQ(std::string(proj_obj_get_name(targetCRS)), "WGS 84"); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_get_source_target_crs_transformation) { + auto obj = proj_obj_create_from_wkt( + m_ctxt, createBoundCRS() + ->transformation() + ->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ASSERT_NE(obj, nullptr); + ObjectKeeper keeper(obj); + + auto sourceCRS = proj_obj_get_source_crs(obj); + ASSERT_NE(sourceCRS, nullptr); + ObjectKeeper keeper_sourceCRS(sourceCRS); + EXPECT_EQ(std::string(proj_obj_get_name(sourceCRS)), "NTF (Paris)"); + + auto targetCRS = proj_obj_get_target_crs(obj); + ASSERT_NE(targetCRS, nullptr); + ObjectKeeper keeper_targetCRS(targetCRS); + EXPECT_EQ(std::string(proj_obj_get_name(targetCRS)), "WGS 84"); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_get_source_target_crs_conversion_without_crs) { + auto obj = proj_obj_create_from_database( + m_ctxt, "EPSG", "16031", PJ_OBJ_CATEGORY_COORDINATE_OPERATION, false, + nullptr); + ASSERT_NE(obj, nullptr); + ObjectKeeper keeper(obj); + + auto sourceCRS = proj_obj_get_source_crs(obj); + ASSERT_EQ(sourceCRS, nullptr); + + auto targetCRS = proj_obj_get_target_crs(obj); + ASSERT_EQ(targetCRS, nullptr); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_get_source_target_crs_invalid_object) { + auto obj = proj_obj_create_from_wkt( + m_ctxt, "ELLIPSOID[\"WGS 84\",6378137,298.257223563]", nullptr); + ASSERT_NE(obj, nullptr); + ObjectKeeper keeper(obj); + + auto sourceCRS = proj_obj_get_source_crs(obj); + ASSERT_EQ(sourceCRS, nullptr); + + auto targetCRS = proj_obj_get_target_crs(obj); + ASSERT_EQ(targetCRS, nullptr); +} + +// --------------------------------------------------------------------------- + +struct ListFreer { + PROJ_STRING_LIST list; + ListFreer(PROJ_STRING_LIST ptrIn) : list(ptrIn) {} + ~ListFreer() { proj_free_string_list(list); } + ListFreer(const ListFreer &) = delete; + ListFreer &operator=(const ListFreer &) = delete; +}; + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_get_authorities_from_database) { + auto list = proj_get_authorities_from_database(m_ctxt); + ListFreer feer(list); + ASSERT_NE(list, nullptr); + ASSERT_TRUE(list[0] != nullptr); + EXPECT_EQ(list[0], std::string("EPSG")); + ASSERT_TRUE(list[1] != nullptr); + EXPECT_EQ(list[1], std::string("ESRI")); + ASSERT_TRUE(list[2] != nullptr); + EXPECT_EQ(list[2], std::string("IGNF")); + ASSERT_TRUE(list[3] != nullptr); + EXPECT_EQ(list[3], std::string("OGC")); + ASSERT_TRUE(list[4] != nullptr); + EXPECT_EQ(list[4], std::string("PROJ")); + EXPECT_EQ(list[5], nullptr); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_get_codes_from_database) { + + auto listTypes = + std::vector<PJ_OBJ_TYPE>{PJ_OBJ_TYPE_ELLIPSOID, + + PJ_OBJ_TYPE_GEODETIC_REFERENCE_FRAME, + PJ_OBJ_TYPE_DYNAMIC_GEODETIC_REFERENCE_FRAME, + PJ_OBJ_TYPE_VERTICAL_REFERENCE_FRAME, + PJ_OBJ_TYPE_DYNAMIC_VERTICAL_REFERENCE_FRAME, + PJ_OBJ_TYPE_DATUM_ENSEMBLE, + + PJ_OBJ_TYPE_CRS, + PJ_OBJ_TYPE_GEODETIC_CRS, + PJ_OBJ_TYPE_GEOCENTRIC_CRS, + PJ_OBJ_TYPE_GEOGRAPHIC_CRS, + PJ_OBJ_TYPE_GEOGRAPHIC_2D_CRS, + PJ_OBJ_TYPE_GEOGRAPHIC_3D_CRS, + PJ_OBJ_TYPE_VERTICAL_CRS, + PJ_OBJ_TYPE_PROJECTED_CRS, + PJ_OBJ_TYPE_COMPOUND_CRS, + PJ_OBJ_TYPE_TEMPORAL_CRS, + PJ_OBJ_TYPE_BOUND_CRS, + PJ_OBJ_TYPE_OTHER_CRS, + + PJ_OBJ_TYPE_CONVERSION, + PJ_OBJ_TYPE_TRANSFORMATION, + PJ_OBJ_TYPE_CONCATENATED_OPERATION, + PJ_OBJ_TYPE_OTHER_COORDINATE_OPERATION, + + PJ_OBJ_TYPE_UNKNOWN}; + for (const auto &type : listTypes) { + auto list = proj_get_codes_from_database(m_ctxt, "EPSG", type, true); + ListFreer feer(list); + if (type == PJ_OBJ_TYPE_TEMPORAL_CRS || type == PJ_OBJ_TYPE_BOUND_CRS || + type == PJ_OBJ_TYPE_UNKNOWN) { + EXPECT_EQ(list, nullptr) << type; + } else { + ASSERT_NE(list, nullptr) << type; + ASSERT_NE(list[0], nullptr) << type; + } + } +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, conversion) { + auto crs = proj_obj_create_from_wkt( + m_ctxt, + createProjectedCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), + nullptr); + ASSERT_NE(crs, nullptr); + ObjectKeeper keeper(crs); + + { + auto conv = + proj_obj_crs_get_coordoperation(crs, nullptr, nullptr, nullptr); + ASSERT_NE(conv, nullptr); + ObjectKeeper keeper_conv(conv); + + ASSERT_EQ( + proj_obj_crs_get_coordoperation(conv, nullptr, nullptr, nullptr), + nullptr); + } + + const char *methodName = nullptr; + const char *methodAuthorityName = nullptr; + const char *methodCode = nullptr; + auto conv = proj_obj_crs_get_coordoperation( + crs, &methodName, &methodAuthorityName, &methodCode); + ASSERT_NE(conv, nullptr); + ObjectKeeper keeper_conv(conv); + + ASSERT_NE(methodName, nullptr); + ASSERT_NE(methodAuthorityName, nullptr); + ASSERT_NE(methodCode, nullptr); + EXPECT_EQ(methodName, std::string("Transverse Mercator")); + EXPECT_EQ(methodAuthorityName, std::string("EPSG")); + EXPECT_EQ(methodCode, std::string("9807")); + + EXPECT_EQ(proj_coordoperation_get_param_count(conv), 5); + EXPECT_EQ(proj_coordoperation_get_param_index(conv, "foo"), -1); + EXPECT_EQ(proj_coordoperation_get_param_index(conv, "False easting"), 3); + + EXPECT_FALSE(proj_coordoperation_get_param(conv, -1, nullptr, nullptr, + nullptr, nullptr, nullptr, + nullptr, nullptr)); + EXPECT_FALSE(proj_coordoperation_get_param(conv, 5, nullptr, nullptr, + nullptr, nullptr, nullptr, + nullptr, nullptr)); + + const char *name = nullptr; + const char *nameAuthorityName = nullptr; + const char *nameCode = nullptr; + double value = 0; + const char *valueString = nullptr; + double valueUnitConvFactor = 0; + const char *valueUnitName = nullptr; + EXPECT_TRUE(proj_coordoperation_get_param( + conv, 3, &name, &nameAuthorityName, &nameCode, &value, &valueString, + &valueUnitConvFactor, &valueUnitName)); + ASSERT_NE(name, nullptr); + ASSERT_NE(nameAuthorityName, nullptr); + ASSERT_NE(nameCode, nullptr); + EXPECT_EQ(valueString, nullptr); + ASSERT_NE(valueUnitName, nullptr); + EXPECT_EQ(name, std::string("False easting")); + EXPECT_EQ(nameAuthorityName, std::string("EPSG")); + EXPECT_EQ(nameCode, std::string("8806")); + EXPECT_EQ(value, 500000.0); + EXPECT_EQ(valueUnitConvFactor, 1.0); + EXPECT_EQ(valueUnitName, std::string("metre")); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, transformation_from_boundCRS) { + auto crs = proj_obj_create_from_wkt( + m_ctxt, + createBoundCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), + nullptr); + ASSERT_NE(crs, nullptr); + ObjectKeeper keeper(crs); + + auto transf = + proj_obj_crs_get_coordoperation(crs, nullptr, nullptr, nullptr); + ASSERT_NE(transf, nullptr); + ObjectKeeper keeper_transf(transf); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_coordoperation_get_grid_used) { + auto op = proj_obj_create_from_database( + m_ctxt, "EPSG", "1312", PJ_OBJ_CATEGORY_COORDINATE_OPERATION, true, + nullptr); + ASSERT_NE(op, nullptr); + ObjectKeeper keeper(op); + + EXPECT_EQ(proj_coordoperation_get_grid_used_count(op), 1); + const char *shortName = nullptr; + const char *fullName = nullptr; + const char *packageName = nullptr; + const char *url = nullptr; + int directDownload = 0; + int openLicense = 0; + int available = 0; + EXPECT_EQ(proj_coordoperation_get_grid_used(op, -1, nullptr, nullptr, + nullptr, nullptr, nullptr, + nullptr, nullptr), + 0); + EXPECT_EQ(proj_coordoperation_get_grid_used(op, 1, nullptr, nullptr, + nullptr, nullptr, nullptr, + nullptr, nullptr), + 0); + EXPECT_EQ(proj_coordoperation_get_grid_used( + op, 0, &shortName, &fullName, &packageName, &url, + &directDownload, &openLicense, &available), + 1); + ASSERT_NE(shortName, nullptr); + ASSERT_NE(fullName, nullptr); + ASSERT_NE(packageName, nullptr); + ASSERT_NE(url, nullptr); + EXPECT_EQ(shortName, std::string("ntv1_can.dat")); + // EXPECT_EQ(fullName, std::string("")); + EXPECT_EQ(packageName, std::string("proj-datumgrid")); + EXPECT_TRUE(std::string(url).find( + "https://download.osgeo.org/proj/proj-datumgrid-") == 0) + << std::string(url); + EXPECT_EQ(directDownload, 1); + EXPECT_EQ(openLicense, 1); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_coordoperation_is_instanciable) { + auto op = proj_obj_create_from_database( + m_ctxt, "EPSG", "1671", PJ_OBJ_CATEGORY_COORDINATE_OPERATION, true, + nullptr); + ASSERT_NE(op, nullptr); + ObjectKeeper keeper(op); + EXPECT_EQ(proj_coordoperation_is_instanciable(op), 1); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_create_operations) { + auto ctxt = proj_create_operation_factory_context(m_ctxt, nullptr); + ASSERT_NE(ctxt, nullptr); + ContextKeeper keeper_ctxt(ctxt); + + auto source_crs = proj_obj_create_from_database( + m_ctxt, "EPSG", "4267", PJ_OBJ_CATEGORY_CRS, false, nullptr); // NAD27 + ASSERT_NE(source_crs, nullptr); + ObjectKeeper keeper_source_crs(source_crs); + + auto target_crs = proj_obj_create_from_database( + m_ctxt, "EPSG", "4269", PJ_OBJ_CATEGORY_CRS, false, nullptr); // NAD83 + ASSERT_NE(target_crs, nullptr); + ObjectKeeper keeper_target_crs(target_crs); + + proj_operation_factory_context_set_spatial_criterion( + ctxt, PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION); + + proj_operation_factory_context_set_grid_availability_use( + ctxt, PROJ_GRID_AVAILABILITY_IGNORED); + + auto res = proj_obj_create_operations(source_crs, target_crs, ctxt); + ASSERT_NE(res, nullptr); + ObjListKeeper keeper_res(res); + + EXPECT_EQ(proj_obj_list_get_count(res), 7); + + EXPECT_EQ(proj_obj_list_get(res, -1), nullptr); + EXPECT_EQ(proj_obj_list_get(res, proj_obj_list_get_count(res)), nullptr); + auto op = proj_obj_list_get(res, 0); + ASSERT_NE(op, nullptr); + ObjectKeeper keeper_op(op); + + EXPECT_EQ(proj_obj_get_name(op), std::string("NAD27 to NAD83 (3)")); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_create_operations_with_pivot) { + + auto source_crs = proj_obj_create_from_database( + m_ctxt, "EPSG", "4326", PJ_OBJ_CATEGORY_CRS, false, nullptr); // WGS84 + ASSERT_NE(source_crs, nullptr); + ObjectKeeper keeper_source_crs(source_crs); + + auto target_crs = proj_obj_create_from_database( + m_ctxt, "EPSG", "6668", PJ_OBJ_CATEGORY_CRS, false, nullptr); // JGD2011 + ASSERT_NE(target_crs, nullptr); + ObjectKeeper keeper_target_crs(target_crs); + + // There is no direct transformations between both + + // Default behaviour: allow any pivot + { + auto ctxt = proj_create_operation_factory_context(m_ctxt, nullptr); + ASSERT_NE(ctxt, nullptr); + ContextKeeper keeper_ctxt(ctxt); + + auto res = proj_obj_create_operations(source_crs, target_crs, ctxt); + ASSERT_NE(res, nullptr); + ObjListKeeper keeper_res(res); + EXPECT_EQ(proj_obj_list_get_count(res), 1); + auto op = proj_obj_list_get(res, 0); + ASSERT_NE(op, nullptr); + ObjectKeeper keeper_op(op); + + EXPECT_EQ( + proj_obj_get_name(op), + std::string( + "Inverse of JGD2000 to WGS 84 (1) + JGD2000 to JGD2011 (2)")); + } + + // Disallow pivots + { + auto ctxt = proj_create_operation_factory_context(m_ctxt, nullptr); + ASSERT_NE(ctxt, nullptr); + ContextKeeper keeper_ctxt(ctxt); + proj_operation_factory_context_set_allow_use_intermediate_crs(ctxt, + false); + + auto res = proj_obj_create_operations(source_crs, target_crs, ctxt); + ASSERT_NE(res, nullptr); + ObjListKeeper keeper_res(res); + EXPECT_EQ(proj_obj_list_get_count(res), 1); + auto op = proj_obj_list_get(res, 0); + ASSERT_NE(op, nullptr); + ObjectKeeper keeper_op(op); + + EXPECT_EQ(proj_obj_get_name(op), + std::string("Null geographic offset from WGS 84 to JGD2011")); + } + + // Restrict pivot to Tokyo CRS + { + auto ctxt = proj_create_operation_factory_context(m_ctxt, "EPSG"); + ASSERT_NE(ctxt, nullptr); + ContextKeeper keeper_ctxt(ctxt); + + const char *pivots[] = {"EPSG", "4301", nullptr}; + proj_operation_factory_context_set_allowed_intermediate_crs(ctxt, + pivots); + proj_operation_factory_context_set_spatial_criterion( + ctxt, PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION); + proj_operation_factory_context_set_grid_availability_use( + ctxt, PROJ_GRID_AVAILABILITY_IGNORED); + + auto res = proj_obj_create_operations(source_crs, target_crs, ctxt); + ASSERT_NE(res, nullptr); + ObjListKeeper keeper_res(res); + EXPECT_EQ(proj_obj_list_get_count(res), 6); + auto op = proj_obj_list_get(res, 0); + ASSERT_NE(op, nullptr); + ObjectKeeper keeper_op(op); + + EXPECT_EQ( + proj_obj_get_name(op), + std::string( + "Inverse of Tokyo to WGS 84 (108) + Tokyo to JGD2011 (2)")); + } + + // Restrict pivot to JGD2000 + { + auto ctxt = proj_create_operation_factory_context(m_ctxt, nullptr); + ASSERT_NE(ctxt, nullptr); + ContextKeeper keeper_ctxt(ctxt); + + const char *pivots[] = {"EPSG", "4612", nullptr}; + proj_operation_factory_context_set_allowed_intermediate_crs(ctxt, + pivots); + proj_operation_factory_context_set_spatial_criterion( + ctxt, PROJ_SPATIAL_CRITERION_PARTIAL_INTERSECTION); + proj_operation_factory_context_set_grid_availability_use( + ctxt, PROJ_GRID_AVAILABILITY_IGNORED); + + auto res = proj_obj_create_operations(source_crs, target_crs, ctxt); + ASSERT_NE(res, nullptr); + ObjListKeeper keeper_res(res); + // includes 2 results from ESRI + EXPECT_EQ(proj_obj_list_get_count(res), 4); + auto op = proj_obj_list_get(res, 0); + ASSERT_NE(op, nullptr); + ObjectKeeper keeper_op(op); + + EXPECT_EQ( + proj_obj_get_name(op), + std::string( + "Inverse of JGD2000 to WGS 84 (1) + JGD2000 to JGD2011 (2)")); + } +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_context_set_database_path_null) { + + EXPECT_TRUE( + proj_context_set_database_path(m_ctxt, nullptr, nullptr, nullptr)); + auto source_crs = proj_obj_create_from_database(m_ctxt, "EPSG", "4326", + PJ_OBJ_CATEGORY_CRS, false, + nullptr); // WGS84 + ASSERT_NE(source_crs, nullptr); + ObjectKeeper keeper_source_crs(source_crs); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_context_set_database_path_main_memory_one_aux) { + + auto c_path = proj_context_get_database_path(m_ctxt); + ASSERT_TRUE(c_path != nullptr); + std::string path(c_path); + const char *aux_db_list[] = {path.c_str(), nullptr}; + + // This is super exotic and a miracle that it works. :memory: as the + // main DB is empty. The real stuff is in the aux_db_list. No view + // is created in the ':memory:' internal DB, but as there's only one + // aux DB its tables and views can be directly queried... + // If that breaks at some point, that wouldn't be a big issue. + // Keeping that one as I had a hard time figuring out why it worked ! + // The real thing is tested by the C++ + // factory::attachExtraDatabases_auxiliary + EXPECT_TRUE(proj_context_set_database_path(m_ctxt, ":memory:", aux_db_list, + nullptr)); + + auto source_crs = proj_obj_create_from_database(m_ctxt, "EPSG", "4326", + PJ_OBJ_CATEGORY_CRS, false, + nullptr); // WGS84 + ASSERT_NE(source_crs, nullptr); + ObjectKeeper keeper_source_crs(source_crs); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_context_set_database_path_error_1) { + + EXPECT_FALSE(proj_context_set_database_path(m_ctxt, "i_do_not_exist.db", + nullptr, nullptr)); + + // We will eventually re-open on the default DB + auto source_crs = proj_obj_create_from_database(m_ctxt, "EPSG", "4326", + PJ_OBJ_CATEGORY_CRS, false, + nullptr); // WGS84 + ASSERT_NE(source_crs, nullptr); + ObjectKeeper keeper_source_crs(source_crs); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_context_set_database_path_error_2) { + + const char *aux_db_list[] = {"i_do_not_exist.db", nullptr}; + EXPECT_FALSE( + proj_context_set_database_path(m_ctxt, nullptr, aux_db_list, nullptr)); + + // We will eventually re-open on the default DB + auto source_crs = proj_obj_create_from_database(m_ctxt, "EPSG", "4326", + PJ_OBJ_CATEGORY_CRS, false, + nullptr); // WGS84 + ASSERT_NE(source_crs, nullptr); + ObjectKeeper keeper_source_crs(source_crs); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_context_guess_wkt_dialect) { + + EXPECT_EQ(proj_context_guess_wkt_dialect(nullptr, "LOCAL_CS[\"foo\"]"), + PJ_GUESSED_WKT1_GDAL); + + EXPECT_EQ(proj_context_guess_wkt_dialect( + nullptr, + "GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_" + "1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]"), + PJ_GUESSED_WKT1_ESRI); + + EXPECT_EQ(proj_context_guess_wkt_dialect( + nullptr, + "GEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"geodetic latitude (Lat)\",north],\n" + " AXIS[\"geodetic longitude (Lon)\",east],\n" + " UNIT[\"degree\",0.0174532925199433]]"), + PJ_GUESSED_WKT2_2018); + + EXPECT_EQ(proj_context_guess_wkt_dialect( + nullptr, + "GEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"geodetic latitude (Lat)\",north],\n" + " AXIS[\"geodetic longitude (Lon)\",east],\n" + " UNIT[\"degree\",0.0174532925199433]]"), + PJ_GUESSED_WKT2_2015); + + EXPECT_EQ(proj_context_guess_wkt_dialect(nullptr, "foo"), + PJ_GUESSED_NOT_WKT); +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_create_from_name) { + /* + PJ_OBJ_LIST PROJ_DLL *proj_obj_create_from_name( + PJ_CONTEXT *ctx, + const char *auth_name, + const char *searchedName, + const PJ_OBJ_TYPE* types, + size_t typesCount, + int approximateMatch, + size_t limitResultCount, + const char* const *options); */ + { + auto res = proj_obj_create_from_name(m_ctxt, nullptr, "WGS 84", nullptr, + 0, false, 0, nullptr); + ASSERT_NE(res, nullptr); + ObjListKeeper keeper_res(res); + EXPECT_EQ(proj_obj_list_get_count(res), 4); + } + { + auto res = proj_obj_create_from_name(m_ctxt, "xx", "WGS 84", nullptr, 0, + false, 0, nullptr); + ASSERT_NE(res, nullptr); + ObjListKeeper keeper_res(res); + EXPECT_EQ(proj_obj_list_get_count(res), 0); + } + { + const PJ_OBJ_TYPE types[] = {PJ_OBJ_TYPE_GEODETIC_CRS, + PJ_OBJ_TYPE_PROJECTED_CRS}; + auto res = proj_obj_create_from_name(m_ctxt, nullptr, "WGS 84", types, + 2, true, 10, nullptr); + ASSERT_NE(res, nullptr); + ObjListKeeper keeper_res(res); + EXPECT_EQ(proj_obj_list_get_count(res), 10); + } +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_identify) { + auto obj = proj_obj_create_from_wkt( + m_ctxt, + GeographicCRS::EPSG_4807->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + { + auto res = proj_obj_identify(obj, nullptr, nullptr, nullptr); + ObjListKeeper keeper_res(res); + EXPECT_EQ(proj_obj_list_get_count(res), 1); + } + { + int *confidence = nullptr; + auto res = proj_obj_identify(obj, "EPSG", nullptr, &confidence); + ObjListKeeper keeper_res(res); + EXPECT_EQ(proj_obj_list_get_count(res), 1); + EXPECT_EQ(confidence[0], 100); + proj_free_int_list(confidence); + } + { + auto objEllps = proj_obj_create_from_wkt( + m_ctxt, + Ellipsoid::GRS1980->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeperEllps(objEllps); + auto res = proj_obj_identify(objEllps, nullptr, nullptr, nullptr); + ObjListKeeper keeper_res(res); + EXPECT_EQ(res, nullptr); + } +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_get_area_of_use) { + { + auto crs = proj_obj_create_from_database( + m_ctxt, "EPSG", "4326", PJ_OBJ_CATEGORY_CRS, false, nullptr); + ASSERT_NE(crs, nullptr); + ObjectKeeper keeper(crs); + EXPECT_TRUE(proj_obj_get_area_of_use(crs, nullptr, nullptr, nullptr, + nullptr, nullptr)); + const char *name = nullptr; + double w; + double s; + double e; + double n; + EXPECT_TRUE(proj_obj_get_area_of_use(crs, &w, &s, &e, &n, &name)); + EXPECT_EQ(w, -180); + EXPECT_EQ(s, -90); + EXPECT_EQ(e, 180); + EXPECT_EQ(n, 90); + ASSERT_TRUE(name != nullptr); + EXPECT_EQ(std::string(name), "World"); + } + { + auto obj = + proj_obj_create_from_user_input(m_ctxt, "+proj=longlat", nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + EXPECT_FALSE(proj_obj_get_area_of_use(obj, nullptr, nullptr, nullptr, + nullptr, nullptr)); + } +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_coordoperation_get_accuracy) { + { + auto crs = proj_obj_create_from_database( + m_ctxt, "EPSG", "4326", PJ_OBJ_CATEGORY_CRS, false, nullptr); + ASSERT_NE(crs, nullptr); + ObjectKeeper keeper(crs); + EXPECT_EQ(proj_coordoperation_get_accuracy(crs), -1.0); + } + { + auto obj = proj_obj_create_from_database( + m_ctxt, "EPSG", "1170", PJ_OBJ_CATEGORY_COORDINATE_OPERATION, false, + nullptr); + ASSERT_NE(obj, nullptr); + ObjectKeeper keeper(obj); + EXPECT_EQ(proj_coordoperation_get_accuracy(obj), 16.0); + } + { + auto obj = + proj_obj_create_from_user_input(m_ctxt, "+proj=helmert", nullptr); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + EXPECT_EQ(proj_coordoperation_get_accuracy(obj), -1.0); + } +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_create_geographic_crs) { + { + auto obj = proj_obj_create_geographic_crs( + m_ctxt, "WGS 84", "World Geodetic System 1984", "WGS 84", 6378137, + 298.257223563, "Greenwich", 0.0, "Degree", 0.0174532925199433, + true); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + + auto objRef = proj_obj_create_from_user_input( + m_ctxt, + GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr); + ObjectKeeper keeperobjRef(objRef); + EXPECT_NE(objRef, nullptr); + + EXPECT_TRUE(proj_obj_is_equivalent_to(obj, objRef, PJ_COMP_EQUIVALENT)); + } + { + auto obj = proj_obj_create_geographic_crs(m_ctxt, nullptr, nullptr, + nullptr, 1.0, 0.0, nullptr, + 0.0, nullptr, 0.0, false); + ObjectKeeper keeper(obj); + ASSERT_NE(obj, nullptr); + } +} + +// --------------------------------------------------------------------------- + +TEST_F(CApi, proj_obj_create_projections) { + + auto geogCRS = proj_obj_create_geographic_crs( + m_ctxt, "WGS 84", "World Geodetic System 1984", "WGS 84", 6378137, + 298.257223563, "Greenwich", 0.0, "Degree", 0.0174532925199433, true); + ObjectKeeper keepergeogCRS(geogCRS); + ASSERT_NE(geogCRS, nullptr); + + /* BEGIN: Generated by scripts/create_c_api_projections.py*/ + { + auto projCRS = + proj_obj_create_projected_crs_UTM(geogCRS, nullptr, 0, 0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_TransverseMercator( + geogCRS, nullptr, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = + proj_obj_create_projected_crs_GaussSchreiberTransverseMercator( + geogCRS, nullptr, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = + proj_obj_create_projected_crs_TransverseMercatorSouthOriented( + geogCRS, nullptr, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_TwoPointEquidistant( + geogCRS, nullptr, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_TunisiaMappingGrid( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_AlbersEqualArea( + geogCRS, nullptr, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_LambertConicConformal_1SP( + geogCRS, nullptr, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_LambertConicConformal_2SP( + geogCRS, nullptr, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = + proj_obj_create_projected_crs_LambertConicConformal_2SP_Michigan( + geogCRS, nullptr, 0, 0, 0, 0, 0, 0, 0, "Degree", + 0.0174532925199433, "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = + proj_obj_create_projected_crs_LambertConicConformal_2SP_Belgium( + geogCRS, nullptr, 0, 0, 0, 0, 0, 0, "Degree", + 0.0174532925199433, "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_AzimuthalEquidistant( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_GuamProjection( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_Bonne( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = + proj_obj_create_projected_crs_LambertCylindricalEqualAreaSpherical( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = + proj_obj_create_projected_crs_LambertCylindricalEqualArea( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_CassiniSoldner( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_EquidistantConic( + geogCRS, nullptr, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_EckertI( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_EckertII( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_EckertIII( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_EckertIV( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_EckertV( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_EckertVI( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_EquidistantCylindrical( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = + proj_obj_create_projected_crs_EquidistantCylindricalSpherical( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_Gall( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_GoodeHomolosine( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_InterruptedGoodeHomolosine( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = + proj_obj_create_projected_crs_GeostationarySatelliteSweepX( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = + proj_obj_create_projected_crs_GeostationarySatelliteSweepY( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_Gnomonic( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = + proj_obj_create_projected_crs_HotineObliqueMercatorVariantA( + geogCRS, nullptr, 0, 0, 0, 0, 0, 0, 0, "Degree", + 0.0174532925199433, "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = + proj_obj_create_projected_crs_HotineObliqueMercatorVariantB( + geogCRS, nullptr, 0, 0, 0, 0, 0, 0, 0, "Degree", + 0.0174532925199433, "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = + proj_obj_create_projected_crs_HotineObliqueMercatorTwoPointNaturalOrigin( + geogCRS, nullptr, 0, 0, 0, 0, 0, 0, 0, 0, "Degree", + 0.0174532925199433, "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = + proj_obj_create_projected_crs_InternationalMapWorldPolyconic( + geogCRS, nullptr, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_KrovakNorthOriented( + geogCRS, nullptr, 0, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_Krovak( + geogCRS, nullptr, 0, 0, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_LambertAzimuthalEqualArea( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_MillerCylindrical( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_MercatorVariantA( + geogCRS, nullptr, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_MercatorVariantB( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = + proj_obj_create_projected_crs_PopularVisualisationPseudoMercator( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_Mollweide( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_NewZealandMappingGrid( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_ObliqueStereographic( + geogCRS, nullptr, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_Orthographic( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_AmericanPolyconic( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_PolarStereographicVariantA( + geogCRS, nullptr, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_PolarStereographicVariantB( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_Robinson( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_Sinusoidal( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_Stereographic( + geogCRS, nullptr, 0, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_VanDerGrinten( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_WagnerI( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_WagnerII( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_WagnerIII( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_WagnerIV( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_WagnerV( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_WagnerVI( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_WagnerVII( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = + proj_obj_create_projected_crs_QuadrilateralizedSphericalCube( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, + "Metre", 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_SphericalCrossTrackHeight( + geogCRS, nullptr, 0, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + { + auto projCRS = proj_obj_create_projected_crs_EqualEarth( + geogCRS, nullptr, 0, 0, 0, "Degree", 0.0174532925199433, "Metre", + 1.0); + ObjectKeeper keeper_projCRS(projCRS); + ASSERT_NE(projCRS, nullptr); + } + /* END: Generated by scripts/create_c_api_projections.py*/ +} + +} // namespace diff --git a/test/unit/test_common.cpp b/test/unit/test_common.cpp new file mode 100644 index 00000000..4de4654d --- /dev/null +++ b/test/unit/test_common.cpp @@ -0,0 +1,191 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: Test ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#include "gtest_include.h" + +#include "proj/common.hpp" +#include "proj/coordinateoperation.hpp" +#include "proj/metadata.hpp" +#include "proj/util.hpp" + +using namespace osgeo::proj::common; +using namespace osgeo::proj::metadata; +using namespace osgeo::proj::operation; +using namespace osgeo::proj::util; + +// --------------------------------------------------------------------------- + +TEST(common, unit_of_measure) { + EXPECT_EQ(UnitOfMeasure::METRE.name(), "metre"); + + EXPECT_EQ(UnitOfMeasure::METRE.conversionToSI(), 1.0); + EXPECT_EQ(UnitOfMeasure::METRE.type(), UnitOfMeasure::Type::LINEAR); + + EXPECT_EQ(UnitOfMeasure::DEGREE.name(), "degree"); + EXPECT_EQ(UnitOfMeasure::DEGREE.conversionToSI(), 0.017453292519943295); + EXPECT_EQ(UnitOfMeasure::DEGREE.type(), UnitOfMeasure::Type::ANGULAR); + + EXPECT_EQ(UnitOfMeasure::RADIAN.name(), "radian"); + EXPECT_EQ(UnitOfMeasure::RADIAN.conversionToSI(), 1.0); + EXPECT_EQ(UnitOfMeasure::RADIAN.type(), UnitOfMeasure::Type::ANGULAR); + + EXPECT_EQ(Length(2.0, UnitOfMeasure("km", 1000.0)) + .convertToUnit(UnitOfMeasure::METRE), + 2000.0); + + EXPECT_EQ( + Angle(2.0, UnitOfMeasure::DEGREE).convertToUnit(UnitOfMeasure::RADIAN), + 2 * 0.017453292519943295); + + EXPECT_EQ(Angle(2.5969213, UnitOfMeasure::GRAD) + .convertToUnit(UnitOfMeasure::DEGREE), + 2.5969213 / 100.0 * 90.0); +} + +// --------------------------------------------------------------------------- + +TEST(common, measure) { EXPECT_TRUE(Measure(1.0) == Measure(1.0)); } + +// --------------------------------------------------------------------------- + +TEST(common, identifiedobject_empty) { + PropertyMap properties; + auto obj = OperationParameter::create(properties); + EXPECT_TRUE(obj->name()->code().empty()); + EXPECT_TRUE(obj->identifiers().empty()); + EXPECT_TRUE(obj->aliases().empty()); + EXPECT_TRUE(obj->remarks().empty()); + EXPECT_TRUE(!obj->isDeprecated()); + EXPECT_TRUE(obj->alias().empty()); +} + +// --------------------------------------------------------------------------- + +TEST(common, identifiedobject) { + PropertyMap properties; + properties.set(IdentifiedObject::NAME_KEY, "name"); + properties.set(IdentifiedObject::IDENTIFIERS_KEY, + Identifier::create("identifier_code")); + properties.set(IdentifiedObject::ALIAS_KEY, "alias"); + properties.set(IdentifiedObject::REMARKS_KEY, "remarks"); + properties.set(IdentifiedObject::DEPRECATED_KEY, true); + auto obj = OperationParameter::create(properties); + EXPECT_EQ(*(obj->name()->description()), "name"); + ASSERT_EQ(obj->identifiers().size(), 1); + EXPECT_EQ(obj->identifiers()[0]->code(), "identifier_code"); + ASSERT_EQ(obj->aliases().size(), 1); + EXPECT_EQ(obj->aliases()[0]->toString(), "alias"); + EXPECT_EQ(obj->remarks(), "remarks"); + EXPECT_TRUE(obj->isDeprecated()); +} + +// --------------------------------------------------------------------------- + +TEST(common, identifiedobject_name_invalid_type_integer) { + PropertyMap properties; + properties.set(IdentifiedObject::NAME_KEY, 123); + ASSERT_THROW(OperationParameter::create(properties), + InvalidValueTypeException); +} + +// --------------------------------------------------------------------------- + +TEST(common, identifiedobject_name_invalid_type_citation) { + PropertyMap properties; + properties.set(IdentifiedObject::NAME_KEY, + nn_make_shared<Citation>("invalid")); + ASSERT_THROW(OperationParameter::create(properties), + InvalidValueTypeException); +} + +// --------------------------------------------------------------------------- + +TEST(common, identifiedobject_identifier_invalid_type) { + PropertyMap properties; + properties.set(IdentifiedObject::IDENTIFIERS_KEY, "string not allowed"); + ASSERT_THROW(OperationParameter::create(properties), + InvalidValueTypeException); +} + +// --------------------------------------------------------------------------- + +TEST(common, identifiedobject_identifier_array_of_identifier) { + PropertyMap properties; + auto array = ArrayOfBaseObject::create(); + array->add(Identifier::create("identifier_code1")); + array->add(Identifier::create("identifier_code2")); + properties.set(IdentifiedObject::IDENTIFIERS_KEY, array); + auto obj = OperationParameter::create(properties); + ASSERT_EQ(obj->identifiers().size(), 2); + EXPECT_EQ(obj->identifiers()[0]->code(), "identifier_code1"); + EXPECT_EQ(obj->identifiers()[1]->code(), "identifier_code2"); +} + +// --------------------------------------------------------------------------- + +TEST(common, identifiedobject_identifier_array_of_invalid_type) { + PropertyMap properties; + auto array = ArrayOfBaseObject::create(); + array->add(nn_make_shared<Citation>("unexpected type")); + properties.set(IdentifiedObject::IDENTIFIERS_KEY, array); + ASSERT_THROW(OperationParameter::create(properties), + InvalidValueTypeException); +} + +// --------------------------------------------------------------------------- + +TEST(common, identifiedobject_alias_array_of_string) { + PropertyMap properties; + properties.set(IdentifiedObject::ALIAS_KEY, + std::vector<std::string>{"alias1", "alias2"}); + auto obj = OperationParameter::create(properties); + ASSERT_EQ(obj->aliases().size(), 2); + EXPECT_EQ(obj->aliases()[0]->toString(), "alias1"); + EXPECT_EQ(obj->aliases()[1]->toString(), "alias2"); +} + +// --------------------------------------------------------------------------- + +TEST(common, identifiedobject_alias_invalid_type) { + PropertyMap properties; + properties.set(IdentifiedObject::ALIAS_KEY, + nn_make_shared<Citation>("unexpected type")); + ASSERT_THROW(OperationParameter::create(properties), + InvalidValueTypeException); +} + +// --------------------------------------------------------------------------- + +TEST(common, identifiedobject_alias_array_of_invalid_type) { + PropertyMap properties; + auto array = ArrayOfBaseObject::create(); + array->add(nn_make_shared<Citation>("unexpected type")); + properties.set(IdentifiedObject::ALIAS_KEY, array); + ASSERT_THROW(OperationParameter::create(properties), + InvalidValueTypeException); +} diff --git a/test/unit/test_crs.cpp b/test/unit/test_crs.cpp new file mode 100644 index 00000000..43698252 --- /dev/null +++ b/test/unit/test_crs.cpp @@ -0,0 +1,4647 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: Test ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#include "gtest_include.h" + +// to be able to use internal::replaceAll +#define FROM_PROJ_CPP + +#include "proj/common.hpp" +#include "proj/coordinateoperation.hpp" +#include "proj/coordinatesystem.hpp" +#include "proj/crs.hpp" +#include "proj/datum.hpp" +#include "proj/io.hpp" +#include "proj/metadata.hpp" +#include "proj/util.hpp" + +#include "proj/internal/internal.hpp" +#include "proj/internal/io_internal.hpp" + +using namespace osgeo::proj::common; +using namespace osgeo::proj::crs; +using namespace osgeo::proj::cs; +using namespace osgeo::proj::datum; +using namespace osgeo::proj::io; +using namespace osgeo::proj::internal; +using namespace osgeo::proj::metadata; +using namespace osgeo::proj::operation; +using namespace osgeo::proj::util; + +namespace { +struct UnrelatedObject : public IComparable { + UnrelatedObject() = default; + + bool _isEquivalentTo(const IComparable *, Criterion) const override { + assert(false); + return false; + } +}; + +static nn<std::shared_ptr<UnrelatedObject>> createUnrelatedObject() { + return nn_make_shared<UnrelatedObject>(); +} +} // namespace + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4326_get_components) { + auto crs = GeographicCRS::EPSG_4326; + ASSERT_EQ(crs->identifiers().size(), 1); + EXPECT_EQ(crs->identifiers()[0]->code(), "4326"); + EXPECT_EQ(*(crs->identifiers()[0]->codeSpace()), "EPSG"); + EXPECT_EQ(crs->nameStr(), "WGS 84"); + + auto datum = crs->datum(); + ASSERT_EQ(datum->identifiers().size(), 1); + EXPECT_EQ(datum->identifiers()[0]->code(), "6326"); + EXPECT_EQ(*(datum->identifiers()[0]->codeSpace()), "EPSG"); + EXPECT_EQ(datum->nameStr(), "World Geodetic System 1984"); + + auto ellipsoid = datum->ellipsoid(); + EXPECT_EQ(ellipsoid->semiMajorAxis().value(), 6378137.0); + EXPECT_EQ(ellipsoid->semiMajorAxis().unit(), UnitOfMeasure::METRE); + EXPECT_EQ(ellipsoid->inverseFlattening()->value(), 298.257223563); + ASSERT_EQ(ellipsoid->identifiers().size(), 1); + EXPECT_EQ(ellipsoid->identifiers()[0]->code(), "7030"); + EXPECT_EQ(*(ellipsoid->identifiers()[0]->codeSpace()), "EPSG"); + EXPECT_EQ(ellipsoid->nameStr(), "WGS 84"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, GeographicCRS_isEquivalentTo) { + auto crs = GeographicCRS::EPSG_4326; + EXPECT_TRUE(crs->isEquivalentTo(crs.get())); + EXPECT_TRUE( + crs->isEquivalentTo(crs.get(), IComparable::Criterion::EQUIVALENT)); + EXPECT_TRUE(crs->isEquivalentTo( + crs.get(), + IComparable::Criterion::EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS)); + EXPECT_TRUE(crs->shallowClone()->isEquivalentTo(crs.get())); + + EXPECT_FALSE(crs->isEquivalentTo(createUnrelatedObject().get())); + EXPECT_FALSE(crs->isEquivalentTo(GeographicCRS::EPSG_4979.get())); + EXPECT_FALSE(crs->isEquivalentTo(GeographicCRS::EPSG_4979.get(), + IComparable::Criterion::EQUIVALENT)); + + EXPECT_FALSE(crs->isEquivalentTo(GeographicCRS::OGC_CRS84.get(), + IComparable::Criterion::EQUIVALENT)); + EXPECT_TRUE(crs->isEquivalentTo( + GeographicCRS::OGC_CRS84.get(), + IComparable::Criterion::EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS)); + EXPECT_TRUE(GeographicCRS::OGC_CRS84->isEquivalentTo( + crs.get(), + IComparable::Criterion::EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS)); + + EXPECT_FALSE( + GeographicCRS::create( + PropertyMap(), GeodeticReferenceFrame::EPSG_6326, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)) + ->isEquivalentTo(crs.get())); + + EXPECT_FALSE( + GeographicCRS::create( + PropertyMap(), GeodeticReferenceFrame::EPSG_6326, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)) + ->isEquivalentTo( + GeographicCRS::create(PropertyMap(), + GeodeticReferenceFrame::create( + PropertyMap(), Ellipsoid::WGS84, + optional<std::string>(), + PrimeMeridian::GREENWICH), + EllipsoidalCS::createLatitudeLongitude( + UnitOfMeasure::DEGREE)) + .get())); +} + +// --------------------------------------------------------------------------- + +TEST(crs, GeographicCRS_datum_ensemble) { + auto ensemble_vdatum = DatumEnsemble::create( + PropertyMap(), + std::vector<DatumNNPtr>{GeodeticReferenceFrame::EPSG_6326, + GeodeticReferenceFrame::EPSG_6326}, + PositionalAccuracy::create("100")); + auto crs = GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), nullptr, + ensemble_vdatum, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)); + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018)); + f->simulCurNodeHasId(); + crs->exportToWKT(f.get()); + auto expected = "GEOGCRS[\"unnamed\",\n" + " ENSEMBLE[\"unnamed\",\n" + " MEMBER[\"World Geodetic System 1984\"],\n" + " MEMBER[\"World Geodetic System 1984\"],\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]],\n" + " ENSEMBLEACCURACY[100]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]]"; + + EXPECT_EQ(f->toString(), expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, GeographicCRS_ensemble_exception_in_create) { + EXPECT_THROW(GeographicCRS::create(PropertyMap(), nullptr, nullptr, + EllipsoidalCS::createLatitudeLongitude( + UnitOfMeasure::DEGREE)), + Exception); + + auto ensemble_vdatum = DatumEnsemble::create( + PropertyMap(), + std::vector<DatumNNPtr>{ + VerticalReferenceFrame::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "vdatum1")), + VerticalReferenceFrame::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "vdatum2"))}, + PositionalAccuracy::create("100")); + EXPECT_THROW(GeographicCRS::create(PropertyMap(), nullptr, ensemble_vdatum, + EllipsoidalCS::createLatitudeLongitude( + UnitOfMeasure::DEGREE)), + Exception); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4326_as_WKT2) { + auto crs = GeographicCRS::EPSG_4326; + WKTFormatterNNPtr f(WKTFormatter::create()); + crs->exportToWKT(f.get()); + EXPECT_EQ(f->toString(), + "GEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " ID[\"EPSG\",4326]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4326_as_WKT2_2018) { + auto crs = GeographicCRS::EPSG_4326; + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018)); + crs->exportToWKT(f.get()); + EXPECT_EQ(f->toString(), + "GEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " ID[\"EPSG\",4326]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4326_as_WKT2_SIMPLIFIED) { + auto crs = GeographicCRS::EPSG_4326; + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT2_SIMPLIFIED)); + crs->exportToWKT(f.get()); + EXPECT_EQ(f->toString(), + "GEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north],\n" + " AXIS[\"longitude\",east],\n" + " UNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",4326]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4326_as_WKT2_SIMPLIFIED_single_line) { + auto crs = GeographicCRS::EPSG_4326; + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT2_SIMPLIFIED)); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + EXPECT_EQ( + f->toString(), + "GEODCRS[\"WGS 84\",DATUM[\"World Geodetic System " + "1984\",ELLIPSOID[\"WGS " + "84\",6378137,298.257223563]]," + "CS[ellipsoidal,2],AXIS[\"latitude\",north],AXIS[\"longitude\",east]," + "UNIT[\"degree\",0.0174532925199433],ID[\"EPSG\",4326]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4326_as_WKT2_2018_SIMPLIFIED) { + auto crs = GeographicCRS::EPSG_4326; + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018_SIMPLIFIED)); + crs->exportToWKT(f.get()); + EXPECT_EQ(f->toString(), + "GEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north],\n" + " AXIS[\"longitude\",east],\n" + " UNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",4326]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4326_as_WKT1_GDAL) { + auto crs = GeographicCRS::EPSG_4326; + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL)); + crs->exportToWKT(f.get()); + EXPECT_EQ(f->toString(), + "GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\n" + " AUTHORITY[\"EPSG\",\"7030\"]],\n" + " AUTHORITY[\"EPSG\",\"6326\"]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " AUTHORITY[\"EPSG\",\"8901\"]],\n" + " UNIT[\"degree\",0.0174532925199433,\n" + " AUTHORITY[\"EPSG\",\"9122\"]],\n" + " AXIS[\"Latitude\",NORTH],\n" + " AXIS[\"Longitude\",EAST],\n" + " AUTHORITY[\"EPSG\",\"4326\"]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4326_as_WKT1_ESRI_with_database) { + auto crs = GeographicCRS::EPSG_4326; + WKTFormatterNNPtr f(WKTFormatter::create( + WKTFormatter::Convention::WKT1_ESRI, DatabaseContext::create())); + EXPECT_EQ(crs->exportToWKT(f.get()), + "GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_" + "1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4326_as_WKT1_ESRI_without_database) { + auto crs = GeographicCRS::EPSG_4326; + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI)); + EXPECT_EQ(crs->exportToWKT(f.get()), + "GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_" + "1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4326_as_PROJ_string) { + auto crs = GeographicCRS::EPSG_4326; + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=longlat +ellps=WGS84 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap " + "+order=2,1"); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=longlat +datum=WGS84"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4979_as_WKT2_SIMPLIFIED) { + auto crs = GeographicCRS::EPSG_4979; + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT2_SIMPLIFIED)); + crs->exportToWKT(f.get()); + EXPECT_EQ(f->toString(), + "GEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " CS[ellipsoidal,3],\n" + " AXIS[\"latitude\",north,\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"longitude\",east,\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"ellipsoidal height\",up,\n" + " UNIT[\"metre\",1]],\n" + " ID[\"EPSG\",4979]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4979_as_WKT2_2018_SIMPLIFIED) { + auto crs = GeographicCRS::EPSG_4979; + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018_SIMPLIFIED)); + crs->exportToWKT(f.get()); + EXPECT_EQ(f->toString(), + "GEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " CS[ellipsoidal,3],\n" + " AXIS[\"latitude\",north,\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"longitude\",east,\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"ellipsoidal height\",up,\n" + " UNIT[\"metre\",1]],\n" + " ID[\"EPSG\",4979]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4979_as_WKT1_GDAL) { + auto crs = GeographicCRS::EPSG_4979; + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL)); + crs->exportToWKT(f.get()); + // FIXME? WKT1 only supports 2 axis for GEOGCS. So this is an extension of + // WKT1 as it + // and GDAL doesn't really export such as beast, although it can import it + EXPECT_EQ(f->toString(), + "GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\n" + " AUTHORITY[\"EPSG\",\"7030\"]],\n" + " AUTHORITY[\"EPSG\",\"6326\"]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " AUTHORITY[\"EPSG\",\"8901\"]],\n" + " UNIT[\"degree\",0.0174532925199433,\n" + " AUTHORITY[\"EPSG\",\"9122\"]],\n" + " AXIS[\"Latitude\",NORTH],\n" + " AXIS[\"Longitude\",EAST],\n" + " AXIS[\"Ellipsoidal height\",UP],\n" + " AUTHORITY[\"EPSG\",\"4979\"]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4979_as_WKT1_ESRI) { + auto crs = GeographicCRS::EPSG_4979; + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI)); + EXPECT_THROW(crs->exportToWKT(f.get()), FormattingException); +} + +// --------------------------------------------------------------------------- + +TEST(crs, GeographicCRS_is2DPartOf3D) { + EXPECT_TRUE(GeographicCRS::EPSG_4326->is2DPartOf3D( + NN_NO_CHECK(GeographicCRS::EPSG_4979.get()))); + EXPECT_FALSE(GeographicCRS::EPSG_4326->is2DPartOf3D( + NN_NO_CHECK(GeographicCRS::EPSG_4326.get()))); + EXPECT_FALSE(GeographicCRS::EPSG_4979->is2DPartOf3D( + NN_NO_CHECK(GeographicCRS::EPSG_4326.get()))); + EXPECT_FALSE(GeographicCRS::EPSG_4979->is2DPartOf3D( + NN_NO_CHECK(GeographicCRS::EPSG_4979.get()))); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4807_as_WKT2) { + auto crs = GeographicCRS::EPSG_4807; + WKTFormatterNNPtr f(WKTFormatter::create(WKTFormatter::Convention::WKT2)); + crs->exportToWKT(f.get()); + EXPECT_EQ( + f->toString(), + "GEODCRS[\"NTF (Paris)\",\n" + " DATUM[\"Nouvelle Triangulation Francaise (Paris)\",\n" + " ELLIPSOID[\"Clarke 1880 (IGN)\",6378249.2,293.466021293627,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Paris\",2.5969213,\n" + " ANGLEUNIT[\"grad\",0.015707963267949]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"grad\",0.015707963267949]],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"grad\",0.015707963267949]],\n" + " ID[\"EPSG\",4807]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4807_as_WKT2_SIMPLIFIED) { + auto crs = GeographicCRS::EPSG_4807; + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT2_SIMPLIFIED)); + crs->exportToWKT(f.get()); + EXPECT_EQ(f->toString(), + "GEODCRS[\"NTF (Paris)\",\n" + " DATUM[\"Nouvelle Triangulation Francaise (Paris)\",\n" + " ELLIPSOID[\"Clarke 1880 " + "(IGN)\",6378249.2,293.466021293627]],\n" + " PRIMEM[\"Paris\",2.5969213],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north],\n" + " AXIS[\"longitude\",east],\n" + " UNIT[\"grad\",0.015707963267949],\n" + " ID[\"EPSG\",4807]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4807_as_WKT1_GDAL) { + auto crs = GeographicCRS::EPSG_4807; + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL)); + crs->exportToWKT(f.get()); + EXPECT_EQ( + f->toString(), + "GEOGCS[\"NTF (Paris)\",\n" + " DATUM[\"Nouvelle_Triangulation_Francaise_Paris\",\n" + " SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.466021293627,\n" + " AUTHORITY[\"EPSG\",\"7011\"]],\n" + " AUTHORITY[\"EPSG\",\"6807\"]],\n" + " PRIMEM[\"Paris\",2.33722917,\n" /* WKT1_GDAL weirdness: PRIMEM is + converted to degree */ + " AUTHORITY[\"EPSG\",\"8903\"]],\n" + " UNIT[\"grad\",0.015707963267949,\n" + " AUTHORITY[\"EPSG\",\"9105\"]],\n" + " AXIS[\"Latitude\",NORTH],\n" + " AXIS[\"Longitude\",EAST],\n" + " AUTHORITY[\"EPSG\",\"4807\"]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4807_as_WKT1_ESRI_with_database) { + auto crs = GeographicCRS::EPSG_4807; + WKTFormatterNNPtr f(WKTFormatter::create( + WKTFormatter::Convention::WKT1_ESRI, DatabaseContext::create())); + EXPECT_EQ(crs->exportToWKT(f.get()), + "GEOGCS[\"GCS_NTF_Paris\",DATUM[\"D_NTF\",SPHEROID[\"Clarke_1880_" + "IGN\",6378249.2,293.466021293627]],PRIMEM[\"Paris\",2.33722917]," + "UNIT[\"Grad\",0.015707963267949]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4807_as_WKT1_ESRI_without_database) { + auto crs = GeographicCRS::EPSG_4807; + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI)); + EXPECT_EQ(crs->exportToWKT(f.get()), + "GEOGCS[\"GCS_NTF_Paris\",DATUM[\"D_Nouvelle_Triangulation_" + "Francaise_Paris\",SPHEROID[\"Clarke_1880_IGN\",6378249.2,293." + "466021293627]],PRIMEM[\"Paris\",2.33722917],UNIT[\"Grad\",0." + "015707963267949]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4807_as_PROJ_string) { + auto crs = GeographicCRS::EPSG_4807; + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=longlat +ellps=clrk80ign " + "+pm=paris +step +proj=unitconvert +xy_in=rad +xy_out=grad +step " + "+proj=axisswap +order=2,1"); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=longlat +ellps=clrk80ign +pm=paris"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4267) { + auto crs = GeographicCRS::EPSG_4267; + EXPECT_EQ(crs->exportToWKT(WKTFormatter::create().get()), + "GEODCRS[\"NAD27\",\n" + " DATUM[\"North American Datum 1927\",\n" + " ELLIPSOID[\"Clarke 1866\",6378206.4,294.978698213898,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " ID[\"EPSG\",4267]]"); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=longlat +datum=NAD27"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4267_as_WKT1_ESRI_with_database) { + auto crs = GeographicCRS::EPSG_4267; + WKTFormatterNNPtr f(WKTFormatter::create( + WKTFormatter::Convention::WKT1_ESRI, DatabaseContext::create())); + EXPECT_EQ(crs->exportToWKT(f.get()), + "GEOGCS[\"GCS_North_American_1927\"," + "DATUM[\"D_North_American_1927\",SPHEROID[\"Clarke_1866\"," + "6378206.4,294.978698213898]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4269) { + auto crs = GeographicCRS::EPSG_4269; + EXPECT_EQ(crs->exportToWKT(WKTFormatter::create().get()), + "GEODCRS[\"NAD83\",\n" + " DATUM[\"North American Datum 1983\",\n" + " ELLIPSOID[\"GRS 1980\",6378137,298.257222101,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " ID[\"EPSG\",4269]]"); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=longlat +datum=NAD83"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_4268_geogcrs_deprecated_as_WKT1_GDAL) { + auto dbContext = DatabaseContext::create(); + auto factory = AuthorityFactory::create(dbContext, "EPSG"); + auto crs = factory->createCoordinateReferenceSystem("4268"); + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL)); + auto wkt = crs->exportToWKT(f.get()); + EXPECT_TRUE(wkt.find("GEOGCS[\"NAD27 Michigan (deprecated)\"") == 0) << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_2008_projcrs_deprecated_as_WKT1_GDAL) { + auto dbContext = DatabaseContext::create(); + auto factory = AuthorityFactory::create(dbContext, "EPSG"); + auto crs = factory->createCoordinateReferenceSystem("2008"); + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL)); + auto wkt = crs->exportToWKT(f.get()); + EXPECT_TRUE( + wkt.find("PROJCS[\"NAD27(CGQ77) / SCoPQ zone 2 (deprecated)\"") == 0) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_27561_projected_with_geodetic_in_grad_as_PROJ_string_and_WKT1) { + auto obj = WKTParser().createFromWKT( + "PROJCRS[\"NTF (Paris) / Lambert Nord France\",\n" + " BASEGEODCRS[\"NTF (Paris)\",\n" + " DATUM[\"Nouvelle Triangulation Francaise (Paris)\",\n" + " ELLIPSOID[\"Clarke 1880 " + "(IGN)\",6378249.2,293.4660213,LENGTHUNIT[\"metre\",1.0]]],\n" + " PRIMEM[\"Paris\",2.5969213,ANGLEUNIT[\"grad\",0.015707963268]]],\n" + " CONVERSION[\"Lambert Nord France\",\n" + " METHOD[\"Lambert Conic Conformal (1SP)\",ID[\"EPSG\",9801]],\n" + " PARAMETER[\"Latitude of natural " + "origin\",55,ANGLEUNIT[\"grad\",0.015707963268]],\n" + " PARAMETER[\"Longitude of natural " + "origin\",0,ANGLEUNIT[\"grad\",0.015707963268]],\n" + " PARAMETER[\"Scale factor at natural " + "origin\",0.999877341,SCALEUNIT[\"unity\",1.0]],\n" + " PARAMETER[\"False easting\",600000,LENGTHUNIT[\"metre\",1.0]],\n" + " PARAMETER[\"False northing\",200000,LENGTHUNIT[\"metre\",1.0]]],\n" + " CS[cartesian,2],\n" + " AXIS[\"easting (X)\",east,ORDER[1]],\n" + " AXIS[\"northing (Y)\",north,ORDER[2]],\n" + " LENGTHUNIT[\"metre\",1.0],\n" + " ID[\"EPSG\",27561]]"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ( + crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=grad +xy_out=rad +step +inv +proj=longlat " + "+ellps=clrk80ign +pm=paris +step +proj=lcc +lat_1=49.5 " + "+lat_0=49.5 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 " + "+ellps=clrk80ign +pm=paris"); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=lcc +lat_1=49.5 +lat_0=49.5 +lon_0=0 +k_0=0.999877341 " + "+x_0=600000 +y_0=200000 +ellps=clrk80ign +pm=paris"); + + auto nn_crs = NN_CHECK_ASSERT(crs); + EXPECT_TRUE(nn_crs->isEquivalentTo(nn_crs.get())); + EXPECT_FALSE(nn_crs->isEquivalentTo(createUnrelatedObject().get())); + EXPECT_FALSE( + nn_crs->DerivedCRS::isEquivalentTo(createUnrelatedObject().get())); + + auto wkt1 = crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()); + EXPECT_EQ( + wkt1, + "PROJCS[\"NTF (Paris) / Lambert Nord France\",\n" + " GEOGCS[\"NTF (Paris)\",\n" + " DATUM[\"Nouvelle_Triangulation_Francaise_Paris\",\n" + " SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660213]],\n" + " PRIMEM[\"Paris\",2.33722917000759],\n" + " UNIT[\"grad\",0.015707963268],\n" + " AXIS[\"Latitude\",NORTH],\n" + " AXIS[\"Longitude\",EAST]],\n" + " PROJECTION[\"Lambert_Conformal_Conic_1SP\"],\n" + " PARAMETER[\"latitude_of_origin\",55],\n" + " PARAMETER[\"central_meridian\",0],\n" + " PARAMETER[\"scale_factor\",0.999877341],\n" + " PARAMETER[\"false_easting\",600000],\n" + " PARAMETER[\"false_northing\",200000],\n" + " UNIT[\"metre\",1],\n" + " AXIS[\"Easting\",EAST],\n" + " AXIS[\"Northing\",NORTH],\n" + " AUTHORITY[\"EPSG\",\"27561\"]]"); + + auto wkt1_esri = crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, + DatabaseContext::create()) + .get()); + EXPECT_EQ( + wkt1_esri, + "PROJCS[\"NTF_Paris_Lambert_Nord_France\",GEOGCS[\"GCS_NTF_Paris\"," + "DATUM[\"D_NTF\",SPHEROID[\"Clarke_1880_IGN\",6378249.2," + "293.4660213]],PRIMEM[\"Paris\",2.33722917000759]," + "UNIT[\"Grad\",0.015707963268]]," + "PROJECTION[\"Lambert_Conformal_Conic\"]," + "PARAMETER[\"False_Easting\",600000.0]," + "PARAMETER[\"False_Northing\",200000.0]," + "PARAMETER[\"Central_Meridian\",0.0]," + "PARAMETER[\"Standard_Parallel_1\",55.0]," + "PARAMETER[\"Scale_Factor\",0.999877341]," + "PARAMETER[\"Latitude_Of_Origin\",55.0]," + "UNIT[\"Meter\",1.0]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_3040_projected_northing_easting_as_PROJ_string) { + auto obj = WKTParser().createFromWKT( + "PROJCRS[\"ETRS89 / UTM zone 28N (N-E)\",\n" + " BASEGEODCRS[\"ETRS89\",\n" + " DATUM[\"European Terrestrial Reference System 1989\",\n" + " ELLIPSOID[\"GRS " + "1980\",6378137,298.257222101,LENGTHUNIT[\"metre\",1.0]]]],\n" + " CONVERSION[\"UTM zone 28N\",\n" + " METHOD[\"Transverse Mercator\",ID[\"EPSG\",9807]],\n" + " PARAMETER[\"Latitude of natural " + "origin\",0,ANGLEUNIT[\"degree\",0.01745329252]],\n" + " PARAMETER[\"Longitude of natural " + "origin\",-15,ANGLEUNIT[\"degree\",0.01745329252]],\n" + " PARAMETER[\"Scale factor at natural " + "origin\",0.9996,SCALEUNIT[\"unity\",1.0]],\n" + " PARAMETER[\"False easting\",500000,LENGTHUNIT[\"metre\",1.0]],\n" + " PARAMETER[\"False northing\",0,LENGTHUNIT[\"metre\",1.0]]],\n" + " CS[cartesian,2],\n" + " AXIS[\"northing (N)\",north,ORDER[1]],\n" + " AXIS[\"easting (E)\",east,ORDER[2]],\n" + " LENGTHUNIT[\"metre\",1.0],\n" + " ID[\"EPSG\",3040]]"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=utm " + "+zone=28 +ellps=GRS80 +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_2222_projected_unit_foot_as_PROJ_string_and_WKT1) { + auto obj = WKTParser().createFromWKT( + "PROJCRS[\"NAD83 / Arizona East (ft)\",\n" + " BASEGEODCRS[\"NAD83\",\n" + " DATUM[\"North American Datum 1983\",\n" + " ELLIPSOID[\"GRS " + "1980\",6378137,298.257222101,LENGTHUNIT[\"metre\",1.0]]]],\n" + " CONVERSION[\"SPCS83 Arizona East zone (International feet)\",\n" + " METHOD[\"Transverse Mercator\",ID[\"EPSG\",9807]],\n" + " PARAMETER[\"Latitude of natural " + "origin\",31,ANGLEUNIT[\"degree\",0.01745329252]],\n" + " PARAMETER[\"Longitude of natural " + "origin\",-110.166666666667,ANGLEUNIT[\"degree\",0.01745329252]],\n" + " PARAMETER[\"Scale factor at natural " + "origin\",0.9999,SCALEUNIT[\"unity\",1.0]],\n" + " PARAMETER[\"False easting\",700000,LENGTHUNIT[\"foot\",0.3048]],\n" + " PARAMETER[\"False northing\",0,LENGTHUNIT[\"foot\",0.3048]]],\n" + " CS[cartesian,2],\n" + " AXIS[\"easting (X)\",east,ORDER[1]],\n" + " AXIS[\"northing (Y)\",north,ORDER[2]],\n" + " LENGTHUNIT[\"foot\",0.3048],\n" + " ID[\"EPSG\",2222]]"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=tmerc " + "+lat_0=31 +lon_0=-110.166666666667 +k_0=0.9999 +x_0=213360 " + "+y_0=0 +ellps=GRS80 +step +proj=unitconvert +xy_in=m +z_in=m " + "+xy_out=ft +z_out=ft"); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=tmerc +lat_0=31 +lon_0=-110.166666666667 +k_0=0.9999 " + "+x_0=213360 +y_0=0 +datum=NAD83 +units=ft"); + + auto wkt1 = crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()); + EXPECT_EQ(wkt1, + "PROJCS[\"NAD83 / Arizona East (ft)\",\n" + " GEOGCS[\"NAD83\",\n" + " DATUM[\"North_American_Datum_1983\",\n" + " SPHEROID[\"GRS 1980\",6378137,298.257222101]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " AUTHORITY[\"EPSG\",\"8901\"]],\n" + " UNIT[\"degree\",0.0174532925199433,\n" + " AUTHORITY[\"EPSG\",\"9122\"]],\n" + " AXIS[\"Latitude\",NORTH],\n" + " AXIS[\"Longitude\",EAST]],\n" + " PROJECTION[\"Transverse_Mercator\"],\n" + " PARAMETER[\"latitude_of_origin\",31],\n" + " PARAMETER[\"central_meridian\",-110.166666666667],\n" + " PARAMETER[\"scale_factor\",0.9999],\n" + " PARAMETER[\"false_easting\",700000],\n" + " PARAMETER[\"false_northing\",0],\n" + " UNIT[\"foot\",0.3048],\n" + " AXIS[\"Easting\",EAST],\n" + " AXIS[\"Northing\",NORTH],\n" + " AUTHORITY[\"EPSG\",\"2222\"]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, projected_with_parameter_unit_different_than_cs_unit_as_WKT1) { + auto obj = WKTParser().createFromWKT( + "PROJCRS[\"unknown\"," + " BASEGEODCRS[\"unknown\"," + " DATUM[\"Unknown based on GRS80 ellipsoid\"," + " ELLIPSOID[\"GRS 1980\",6378137,298.257222101," + " LENGTHUNIT[\"metre\",1]]]," + " PRIMEM[\"Greenwich\",0]]," + " CONVERSION[\"UTM zone 32N\"," + " METHOD[\"Transverse Mercator\"]," + " PARAMETER[\"Latitude of natural origin\",0]," + " PARAMETER[\"Longitude of natural origin\",9]," + " PARAMETER[\"Scale factor at natural origin\",0.9996]," + " PARAMETER[\"False easting\",500000,LENGTHUNIT[\"metre\",1]]," + " PARAMETER[\"False northing\",0,LENGTHUNIT[\"metre\",1]]]," + " CS[Cartesian,2]," + " AXIS[\"(E)\",east]," + " AXIS[\"(N)\",north]," + " LENGTHUNIT[\"US survey foot\",0.304800609601219]]"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto wkt1 = crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()); + EXPECT_EQ(wkt1, + "PROJCS[\"unknown\",\n" + " GEOGCS[\"unknown\",\n" + " DATUM[\"Unknown_based_on_GRS80_ellipsoid\",\n" + " SPHEROID[\"GRS 1980\",6378137,298.257222101]],\n" + " PRIMEM[\"Greenwich\",0],\n" + " UNIT[\"degree\",0.0174532925199433,\n" + " AUTHORITY[\"EPSG\",\"9122\"]],\n" + " AXIS[\"Latitude\",NORTH],\n" + " AXIS[\"Longitude\",EAST]],\n" + " PROJECTION[\"Transverse_Mercator\"],\n" + " PARAMETER[\"latitude_of_origin\",0],\n" + " PARAMETER[\"central_meridian\",9],\n" + " PARAMETER[\"scale_factor\",0.9996],\n" + " PARAMETER[\"false_easting\",1640416.66666667],\n" + " PARAMETER[\"false_northing\",0],\n" + " UNIT[\"US survey foot\",0.304800609601219],\n" + " AXIS[\"Easting\",EAST],\n" + " AXIS[\"Northing\",NORTH]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_32661_projected_north_pole_north_east) { + auto dbContext = DatabaseContext::create(); + auto factory = AuthorityFactory::create(dbContext, "EPSG"); + auto crs = factory->createCoordinateReferenceSystem("32661"); + auto proj_crs = nn_dynamic_pointer_cast<ProjectedCRS>(crs); + ASSERT_TRUE(proj_crs != nullptr); + auto proj_string = + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=stere " + "+lat_0=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 " + "+ellps=WGS84 +step +proj=axisswap +order=2,1"; + EXPECT_EQ(proj_crs->exportToPROJString(PROJStringFormatter::create().get()), + proj_string); + + auto obj_from_proj = PROJStringParser().createFromPROJString(proj_string); + auto crs_from_proj = nn_dynamic_pointer_cast<ProjectedCRS>(obj_from_proj); + ASSERT_TRUE(crs_from_proj != nullptr); + EXPECT_EQ( + crs_from_proj->exportToPROJString(PROJStringFormatter::create().get()), + proj_string); + EXPECT_TRUE(crs_from_proj->coordinateSystem()->isEquivalentTo( + proj_crs->coordinateSystem().get())); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_5041_projected_north_pole_east_north) { + auto dbContext = DatabaseContext::create(); + auto factory = AuthorityFactory::create(dbContext, "EPSG"); + auto crs = factory->createCoordinateReferenceSystem("5041"); + auto proj_crs = nn_dynamic_pointer_cast<ProjectedCRS>(crs); + ASSERT_TRUE(proj_crs != nullptr); + auto proj_string = + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=stere " + "+lat_0=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 " + "+ellps=WGS84"; + EXPECT_EQ(proj_crs->exportToPROJString(PROJStringFormatter::create().get()), + proj_string); + + auto obj_from_proj = PROJStringParser().createFromPROJString(proj_string); + auto crs_from_proj = nn_dynamic_pointer_cast<ProjectedCRS>(obj_from_proj); + ASSERT_TRUE(crs_from_proj != nullptr); + EXPECT_EQ( + crs_from_proj->exportToPROJString(PROJStringFormatter::create().get()), + proj_string); + EXPECT_TRUE(crs_from_proj->coordinateSystem()->isEquivalentTo( + proj_crs->coordinateSystem().get())); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_32761_projected_south_pole_north_east) { + auto dbContext = DatabaseContext::create(); + auto factory = AuthorityFactory::create(dbContext, "EPSG"); + auto crs = factory->createCoordinateReferenceSystem("32761"); + auto proj_crs = nn_dynamic_pointer_cast<ProjectedCRS>(crs); + ASSERT_TRUE(proj_crs != nullptr); + auto proj_string = + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=stere " + "+lat_0=-90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 " + "+ellps=WGS84 +step +proj=axisswap +order=2,1"; + EXPECT_EQ(proj_crs->exportToPROJString(PROJStringFormatter::create().get()), + proj_string); + + auto obj_from_proj = PROJStringParser().createFromPROJString(proj_string); + auto crs_from_proj = nn_dynamic_pointer_cast<ProjectedCRS>(obj_from_proj); + ASSERT_TRUE(crs_from_proj != nullptr); + EXPECT_EQ( + crs_from_proj->exportToPROJString(PROJStringFormatter::create().get()), + proj_string); + EXPECT_TRUE(crs_from_proj->coordinateSystem()->isEquivalentTo( + proj_crs->coordinateSystem().get())); +} + +// --------------------------------------------------------------------------- + +TEST(crs, EPSG_5042_projected_south_pole_east_north) { + auto dbContext = DatabaseContext::create(); + auto factory = AuthorityFactory::create(dbContext, "EPSG"); + auto crs = factory->createCoordinateReferenceSystem("5042"); + auto proj_crs = nn_dynamic_pointer_cast<ProjectedCRS>(crs); + ASSERT_TRUE(proj_crs != nullptr); + EXPECT_EQ(proj_crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=stere " + "+lat_0=-90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 " + "+ellps=WGS84"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, geodetic_crs_both_datum_datum_ensemble_null) { + EXPECT_THROW(GeodeticCRS::create( + PropertyMap(), nullptr, nullptr, + CartesianCS::createGeocentric(UnitOfMeasure::METRE)), + Exception); +} + +// --------------------------------------------------------------------------- + +TEST(crs, geodetic_crs_both_datum_datum_ensemble_non_null) { + auto ensemble = DatumEnsemble::create( + PropertyMap(), + std::vector<DatumNNPtr>{GeodeticReferenceFrame::EPSG_6326, + GeodeticReferenceFrame::EPSG_6326}, + PositionalAccuracy::create("100")); + EXPECT_THROW(GeodeticCRS::create( + PropertyMap(), GeodeticReferenceFrame::EPSG_6326, ensemble, + CartesianCS::createGeocentric(UnitOfMeasure::METRE)), + Exception); +} + +// --------------------------------------------------------------------------- + +static GeodeticCRSNNPtr createGeocentric() { + PropertyMap propertiesCRS; + propertiesCRS.set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 4328) + .set(IdentifiedObject::NAME_KEY, "WGS 84"); + return GeodeticCRS::create( + propertiesCRS, GeodeticReferenceFrame::EPSG_6326, + CartesianCS::createGeocentric(UnitOfMeasure::METRE)); +} + +// --------------------------------------------------------------------------- + +TEST(crs, geocentricCRS_as_WKT2) { + auto crs = createGeocentric(); + + auto expected = "GEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[Cartesian,3],\n" + " AXIS[\"(X)\",geocentricX,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"(Y)\",geocentricY,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"(Z)\",geocentricZ,\n" + " ORDER[3],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " ID[\"EPSG\",4328]]"; + + EXPECT_EQ(crs->exportToWKT(WKTFormatter::create().get()), expected); + EXPECT_EQ( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + expected); + + EXPECT_TRUE(crs->isEquivalentTo(crs.get())); + EXPECT_TRUE(crs->shallowClone()->isEquivalentTo(crs.get())); + EXPECT_FALSE(crs->isEquivalentTo(createUnrelatedObject().get())); +} + +// --------------------------------------------------------------------------- + +TEST(crs, geocentricCRS_as_WKT2_simplified) { + auto crs = createGeocentric(); + + auto expected = "GEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " CS[Cartesian,3],\n" + " AXIS[\"(X)\",geocentricX],\n" + " AXIS[\"(Y)\",geocentricY],\n" + " AXIS[\"(Z)\",geocentricZ],\n" + " UNIT[\"metre\",1],\n" + " ID[\"EPSG\",4328]]"; + + EXPECT_EQ(crs->exportToWKT(WKTFormatter::create( + WKTFormatter::Convention::WKT2_SIMPLIFIED) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, geocentricCRS_as_WKT1_GDAL) { + auto crs = createGeocentric(); + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL)); + crs->exportToWKT(f.get()); + EXPECT_EQ(f->toString(), + "GEOCCS[\"WGS 84\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\n" + " AUTHORITY[\"EPSG\",\"7030\"]],\n" + " AUTHORITY[\"EPSG\",\"6326\"]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " AUTHORITY[\"EPSG\",\"8901\"]],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" + " AXIS[\"Geocentric X\",OTHER],\n" + " AXIS[\"Geocentric Y\",OTHER],\n" + " AXIS[\"Geocentric Z\",NORTH],\n" + " AUTHORITY[\"EPSG\",\"4328\"]]"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, geocentricCRS_as_PROJ_string) { + auto crs = createGeocentric(); + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=cart +ellps=WGS84"); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=geocent +ellps=WGS84"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, geocentricCRS_non_meter_unit_as_PROJ_string) { + auto crs = GeodeticCRS::create( + PropertyMap(), GeodeticReferenceFrame::EPSG_6326, + CartesianCS::createGeocentric( + UnitOfMeasure("kilometre", 1000.0, UnitOfMeasure::Type::LINEAR))); + + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=cart +ellps=WGS84 +step " + "+proj=unitconvert +xy_in=m +z_in=m +xy_out=km +z_out=km"); + EXPECT_THROW( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + FormattingException); +} + +// --------------------------------------------------------------------------- + +TEST(crs, geocentricCRS_unsupported_unit_as_PROJ_string) { + auto crs = GeodeticCRS::create( + PropertyMap(), GeodeticReferenceFrame::EPSG_6326, + CartesianCS::createGeocentric( + UnitOfMeasure("my unit", 500.0, UnitOfMeasure::Type::LINEAR))); + + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=cart +ellps=WGS84 +step " + "+proj=unitconvert +xy_in=m +z_in=m +xy_out=500 +z_out=500"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, geodeticcrs_identify_no_db) { + { + auto res = + GeodeticCRS::create( + PropertyMap(), GeodeticReferenceFrame::EPSG_6326, nullptr, + CartesianCS::createGeocentric(UnitOfMeasure::METRE)) + ->identify(nullptr); + ASSERT_EQ(res.size(), 0); + } + { + auto res = GeographicCRS::EPSG_4326->identify(nullptr); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first.get(), GeographicCRS::EPSG_4326.get()); + EXPECT_EQ(res.front().second, 100); + } + { + // Using virtual method + auto res = static_cast<const CRS *>(GeographicCRS::EPSG_4326.get()) + ->identify(nullptr); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first.get(), GeographicCRS::EPSG_4326.get()); + EXPECT_EQ(res.front().second, 100); + } + { + auto res = + GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "WGS 84"), + GeodeticReferenceFrame::EPSG_6326, nullptr, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)) + ->identify(nullptr); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first.get(), GeographicCRS::EPSG_4326.get()); + EXPECT_EQ(res.front().second, 100); + } + { + auto res = + GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "WGS84"), + GeodeticReferenceFrame::EPSG_6326, nullptr, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)) + ->identify(nullptr); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first.get(), GeographicCRS::EPSG_4326.get()); + EXPECT_EQ(res.front().second, 90); + } + { + // Long Lat order + auto res = + GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "WGS 84"), + GeodeticReferenceFrame::EPSG_6326, nullptr, + EllipsoidalCS::createLongitudeLatitude(UnitOfMeasure::DEGREE)) + ->identify(nullptr); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first.get(), GeographicCRS::EPSG_4326.get()); + EXPECT_EQ(res.front().second, 25); + } +} + +// --------------------------------------------------------------------------- + +TEST(crs, geodeticcrs_identify_db) { + auto dbContext = DatabaseContext::create(); + auto factory = AuthorityFactory::create(dbContext, "EPSG"); + { + // No match + auto res = + GeographicCRS::create( + PropertyMap(), + GeodeticReferenceFrame::create( + PropertyMap(), + Ellipsoid::createFlattenedSphere( + PropertyMap(), Length(6378137), Scale(10)), + optional<std::string>(), PrimeMeridian::GREENWICH), + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)) + ->identify(nullptr); + ASSERT_EQ(res.size(), 0); + } + { + // Identify by datum code + auto res = + GeodeticCRS::create( + PropertyMap(), GeodeticReferenceFrame::EPSG_6326, nullptr, + CartesianCS::createGeocentric(UnitOfMeasure::METRE)) + ->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 4978); + EXPECT_EQ(res.front().second, 70); + } + { + // Identify by datum code + auto res = + GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), + GeodeticReferenceFrame::EPSG_6326, nullptr, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)) + ->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 4326); + EXPECT_EQ(res.front().second, 70); + } + { + // Identify by datum code (as a fallback) + auto res = + GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "foobar"), + GeodeticReferenceFrame::EPSG_6326, nullptr, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)) + ->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 4326); + EXPECT_EQ(res.front().second, 70); + } + { + // Perfect match, and ID available. Hardcoded case + auto res = GeographicCRS::EPSG_4326->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first.get(), GeographicCRS::EPSG_4326.get()); + EXPECT_EQ(res.front().second, 100); + } + { + // Perfect match, but no ID available. Hardcoded case + auto res = + GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "WGS 84"), + GeodeticReferenceFrame::EPSG_6326, nullptr, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)) + ->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first.get(), GeographicCRS::EPSG_4326.get()); + EXPECT_EQ(res.front().second, 100); + } + { + // Perfect match, but no ID available + auto res = + GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "NTF (Paris)"), + GeographicCRS::EPSG_4807->datum(), nullptr, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::GRAD)) + ->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 4807); + EXPECT_EQ(res.front().second, 100); + } + { + // Perfect match, and ID available + auto res = GeographicCRS::EPSG_4807->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 4807); + EXPECT_EQ(res.front().second, 100); + } + { + // The object has an unexisting ID + auto res = + GeographicCRS::create( + PropertyMap() + .set(IdentifiedObject::NAME_KEY, "NTF (Paris)") + .set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 1), + GeographicCRS::EPSG_4807->datum(), nullptr, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::GRAD)) + ->identify(factory); + ASSERT_EQ(res.size(), 0); + } + { + // The object has a unreliable ID + auto res = + GeographicCRS::create( + PropertyMap() + .set(IdentifiedObject::NAME_KEY, "NTF (Paris)") + .set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 4326), + GeographicCRS::EPSG_4807->datum(), nullptr, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::GRAD)) + ->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 4326); + EXPECT_EQ(res.front().second, 25); + } + { + // Approximate match by name + auto res = + GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "WGS84"), + GeodeticReferenceFrame::EPSG_6326, nullptr, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)) + ->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 4326); + EXPECT_EQ(res.front().second, 90); + } + { + // Long Lat order + auto res = + GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "WGS 84"), + GeodeticReferenceFrame::EPSG_6326, nullptr, + EllipsoidalCS::createLongitudeLatitude(UnitOfMeasure::DEGREE)) + ->identify(factory); + ASSERT_EQ(res.size(), 3); + EXPECT_EQ(res.front().first->getEPSGCode(), 4326); + EXPECT_EQ(res.front().second, 25); + } + { + // Identify by ellipsoid code + auto res = + GeographicCRS::create( + PropertyMap(), + GeodeticReferenceFrame::create(PropertyMap(), Ellipsoid::WGS84, + optional<std::string>(), + PrimeMeridian::GREENWICH), + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)) + ->identify(factory); + ASSERT_GT(res.size(), 1U); + EXPECT_EQ(res.front().first->getEPSGCode(), 4326); + EXPECT_EQ(res.front().second, 60.0); + } + { + // Identify by ellipsoid code (as a fallback) + auto res = + GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), + GeodeticReferenceFrame::create(PropertyMap(), Ellipsoid::WGS84, + optional<std::string>(), + PrimeMeridian::GREENWICH), + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)) + ->identify(factory); + ASSERT_GT(res.size(), 1U); + EXPECT_EQ(res.front().first->getEPSGCode(), 4326); + EXPECT_EQ(res.front().second, 60.0); + } + { + // Identify by ellipsoid description + auto obj = PROJStringParser().createFromPROJString( + "+proj=longlat +a=6378521.049 +rf=298.257222100883 +axis=neu"); + auto crs = nn_dynamic_pointer_cast<GeodeticCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto factoryAll = AuthorityFactory::create(dbContext, std::string()); + auto res = crs->identify(factoryAll); + EXPECT_EQ(res.size(), 5); + } + { + // Identify by name, without any code + auto wkt = + "GEODCRS[\"GCS_Datum_Lisboa_Bessel\",\n" + " DATUM[\"D_Datum_Lisboa_Bessel\",\n" + " ELLIPSOID[\"Bessel 1841\",6377397.155,299.1528128,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"geodetic latitude (Lat)\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"geodetic longitude (Lon)\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]]"; + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<GeodeticCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto allFactory = AuthorityFactory::create(dbContext, std::string()); + auto res = crs->identify(allFactory); + ASSERT_EQ(res.size(), 1U); + ASSERT_TRUE(!res.front().first->identifiers().empty()); + EXPECT_EQ(*res.front().first->identifiers()[0]->codeSpace(), "ESRI"); + EXPECT_EQ(res.front().first->identifiers()[0]->code(), "104105"); + EXPECT_EQ(res.front().second, 100); + } + { + // Identification by non-existing code + auto res = + GeographicCRS::create( + PropertyMap() + .set(IdentifiedObject::NAME_KEY, "foobar") + .set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, "i_dont_exist"), + GeodeticReferenceFrame::create( + PropertyMap(), + Ellipsoid::createFlattenedSphere( + PropertyMap(), Length(6378137), Scale(10)), + optional<std::string>(), PrimeMeridian::GREENWICH), + nullptr, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)) + ->identify(factory); + ASSERT_EQ(res.size(), 0); + } +} + +// --------------------------------------------------------------------------- + +static ProjectedCRSNNPtr createProjected() { + PropertyMap propertiesCRS; + propertiesCRS.set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 32631) + .set(IdentifiedObject::NAME_KEY, "WGS 84 / UTM zone 31N"); + return ProjectedCRS::create( + propertiesCRS, GeographicCRS::EPSG_4326, + Conversion::createUTM(PropertyMap(), 31, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); +} + +// --------------------------------------------------------------------------- + +TEST(crs, projectedCRS_derivingConversion) { + auto crs = createProjected(); + auto conv = crs->derivingConversion(); + EXPECT_TRUE(conv->sourceCRS() != nullptr); + ASSERT_TRUE(conv->targetCRS() != nullptr); + EXPECT_EQ(conv->targetCRS().get(), crs.get()); + + // derivingConversion() returns a copy of the internal conversion + auto targetCRSAsProjCRS = + std::dynamic_pointer_cast<ProjectedCRS>(conv->targetCRS()); + ASSERT_TRUE(targetCRSAsProjCRS != nullptr); + EXPECT_NE(targetCRSAsProjCRS->derivingConversion(), conv); +} + +// --------------------------------------------------------------------------- + +TEST(crs, projectedCRS_shallowClone) { + { + auto crs = createProjected(); + EXPECT_TRUE(crs->isEquivalentTo(crs.get())); + EXPECT_TRUE(!crs->isEquivalentTo(createUnrelatedObject().get())); + auto clone = nn_dynamic_pointer_cast<ProjectedCRS>(crs->shallowClone()); + EXPECT_TRUE(clone->isEquivalentTo(crs.get())); + EXPECT_EQ(clone->derivingConversion()->targetCRS().get(), clone.get()); + } + + { + ProjectedCRSPtr clone; + { + auto crs = ProjectedCRS::create( + PropertyMap(), createGeocentric(), + Conversion::createUTM(PropertyMap(), 31, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + clone = nn_dynamic_pointer_cast<ProjectedCRS>(crs->shallowClone()); + } + EXPECT_EQ(clone->baseCRS()->exportToPROJString( + PROJStringFormatter::create().get()), + "+proj=cart +ellps=WGS84"); + } +} + +// --------------------------------------------------------------------------- + +TEST(crs, projectedCRS_as_WKT2) { + auto crs = createProjected(); + + auto expected = + "PROJCRS[\"WGS 84 / UTM zone 31N\",\n" + " BASEGEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " CONVERSION[\"UTM zone 31N\",\n" + " METHOD[\"Transverse Mercator\",\n" + " ID[\"EPSG\",9807]],\n" + " PARAMETER[\"Latitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",3,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",0.9996,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",500000,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"(N)\",north,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " ID[\"EPSG\",32631]]"; + + EXPECT_EQ(crs->exportToWKT(WKTFormatter::create().get()), expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, projectedCRS_as_WKT2_simplified) { + auto crs = createProjected(); + + auto expected = + "PROJCRS[\"WGS 84 / UTM zone 31N\",\n" + " BASEGEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " CONVERSION[\"UTM zone 31N\",\n" + " METHOD[\"Transverse Mercator\"],\n" + " PARAMETER[\"Latitude of natural origin\",0],\n" + " PARAMETER[\"Longitude of natural origin\",3],\n" + " PARAMETER[\"Scale factor at natural origin\",0.9996],\n" + " PARAMETER[\"False easting\",500000],\n" + " PARAMETER[\"False northing\",0]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east],\n" + " AXIS[\"(N)\",north],\n" + " UNIT[\"metre\",1],\n" + " ID[\"EPSG\",32631]]"; + + EXPECT_EQ(crs->exportToWKT(WKTFormatter::create( + WKTFormatter::Convention::WKT2_SIMPLIFIED) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, projectedCRS_as_WKT2_2018_simplified) { + auto crs = createProjected(); + + auto expected = + "PROJCRS[\"WGS 84 / UTM zone 31N\",\n" + " BASEGEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " CONVERSION[\"UTM zone 31N\",\n" + " METHOD[\"Transverse Mercator\"],\n" + " PARAMETER[\"Latitude of natural origin\",0],\n" + " PARAMETER[\"Longitude of natural origin\",3],\n" + " PARAMETER[\"Scale factor at natural origin\",0.9996],\n" + " PARAMETER[\"False easting\",500000],\n" + " PARAMETER[\"False northing\",0]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east],\n" + " AXIS[\"(N)\",north],\n" + " UNIT[\"metre\",1],\n" + " ID[\"EPSG\",32631]]"; + + EXPECT_EQ( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018_SIMPLIFIED) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, projectedCRS_as_WKT1_GDAL) { + auto crs = createProjected(); + + auto expected = "PROJCS[\"WGS 84 / UTM zone 31N\",\n" + " GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\n" + " AUTHORITY[\"EPSG\",\"7030\"]],\n" + " AUTHORITY[\"EPSG\",\"6326\"]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " AUTHORITY[\"EPSG\",\"8901\"]],\n" + " UNIT[\"degree\",0.0174532925199433,\n" + " AUTHORITY[\"EPSG\",\"9122\"]],\n" + " AXIS[\"Latitude\",NORTH],\n" + " AXIS[\"Longitude\",EAST],\n" + " AUTHORITY[\"EPSG\",\"4326\"]],\n" + " PROJECTION[\"Transverse_Mercator\"],\n" + " PARAMETER[\"latitude_of_origin\",0],\n" + " PARAMETER[\"central_meridian\",3],\n" + " PARAMETER[\"scale_factor\",0.9996],\n" + " PARAMETER[\"false_easting\",500000],\n" + " PARAMETER[\"false_northing\",0],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" + " AXIS[\"Easting\",EAST],\n" + " AXIS[\"Northing\",NORTH],\n" + " AUTHORITY[\"EPSG\",\"32631\"]]"; + + EXPECT_EQ( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, projectedCRS_as_WKT1_ESRI) { + auto crs = createProjected(); + + auto expected = "PROJCS[\"WGS_1984_UTM_Zone_31N\",GEOGCS[\"GCS_WGS_1984\"," + "DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0," + "298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Transverse_Mercator\"]," + "PARAMETER[\"False_Easting\",500000.0]," + "PARAMETER[\"False_Northing\",0.0]," + "PARAMETER[\"Central_Meridian\",3.0]," + "PARAMETER[\"Scale_Factor\",0.9996]," + "PARAMETER[\"Latitude_Of_Origin\",0.0]," + "UNIT[\"Meter\",1.0]]"; + + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, + DatabaseContext::create()) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, projectedCRS_as_PROJ_string) { + auto crs = createProjected(); + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=utm " + "+zone=31 +ellps=WGS84"); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=utm +zone=31 +datum=WGS84"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, projectedCRS_identify_no_db) { + { + // Hard-coded case: WGS 84 / UTM. No name + auto res = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createUTM(PropertyMap(), 1, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)) + ->identify(nullptr); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 32601); + EXPECT_EQ(res.front().second, 70); + EXPECT_TRUE(res.front().first->isEquivalentTo( + AuthorityFactory::create(DatabaseContext::create(), "EPSG") + ->createProjectedCRS("32601") + .get(), + IComparable::Criterion::EQUIVALENT)); + } + { + // Hard-coded case: WGS 84 / UTM (south). Exact name. + // Using virtual method + auto crs = ProjectedCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, + "WGS 84 / UTM zone 60S"), + GeographicCRS::EPSG_4326, + Conversion::createUTM(PropertyMap(), 60, false), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto res = static_cast<const CRS *>(crs.get())->identify(nullptr); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 32760); + EXPECT_EQ(res.front().second, 100); + EXPECT_TRUE(res.front().first->isEquivalentTo( + AuthorityFactory::create(DatabaseContext::create(), "EPSG") + ->createProjectedCRS("32760") + .get(), + IComparable::Criterion::EQUIVALENT)); + } + { + // Hard-coded case: NAD27 / UTM. Approximate name. + auto res = ProjectedCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, + "NAD27_UTM_zone_11N"), + GeographicCRS::EPSG_4267, + Conversion::createUTM(PropertyMap(), 11, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)) + ->identify(nullptr); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 26711); + EXPECT_EQ(res.front().second, 90); + EXPECT_TRUE(res.front().first->isEquivalentTo( + AuthorityFactory::create(DatabaseContext::create(), "EPSG") + ->createProjectedCRS("26711") + .get(), + IComparable::Criterion::EQUIVALENT)); + } + { + // Hard-coded case: NAD83 / UTM + auto res = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4269, + Conversion::createUTM(PropertyMap(), 11, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)) + ->identify(nullptr); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 26911); + EXPECT_EQ(res.front().second, 70); + EXPECT_TRUE(res.front().first->isEquivalentTo( + AuthorityFactory::create(DatabaseContext::create(), "EPSG") + ->createProjectedCRS("26911") + .get(), + IComparable::Criterion::EQUIVALENT)); + } + { + // Tolerance on axis order + auto obj = PROJStringParser().createFromPROJString( + "+proj=utm +zone=31 +datum=WGS84"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto res = crs->identify(nullptr); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 32631); + EXPECT_EQ(res.front().second, 70); + EXPECT_TRUE(res.front().first->isEquivalentTo( + crs.get(), + IComparable::Criterion::EQUIVALENT_EXCEPT_AXIS_ORDER_GEOGCRS)); + } +} + +// --------------------------------------------------------------------------- + +TEST(crs, projectedCRS_identify_db) { + auto dbContext = DatabaseContext::create(); + auto factoryEPSG = AuthorityFactory::create(dbContext, "EPSG"); + { + // Identify by existing code + auto res = + factoryEPSG->createProjectedCRS("2172")->identify(factoryEPSG); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 2172); + EXPECT_EQ(res.front().second, 100); + } + { + // Non-existing code + auto sourceCRS = factoryEPSG->createProjectedCRS("2172"); + auto crs = ProjectedCRS::create( + PropertyMap() + .set(IdentifiedObject::NAME_KEY, + "Pulkovo 1942(58) / Poland zone II") + .set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 1), + sourceCRS->baseCRS(), sourceCRS->derivingConversion(), + sourceCRS->coordinateSystem()); + auto res = crs->identify(factoryEPSG); + EXPECT_EQ(res.size(), 0); + } + { + // Existing code, but not matching content + auto sourceCRS = factoryEPSG->createProjectedCRS("2172"); + auto crs = ProjectedCRS::create( + PropertyMap() + .set(IdentifiedObject::NAME_KEY, + "Pulkovo 1942(58) / Poland zone II") + .set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 32631), + sourceCRS->baseCRS(), sourceCRS->derivingConversion(), + sourceCRS->coordinateSystem()); + auto res = crs->identify(factoryEPSG); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 32631); + EXPECT_EQ(res.front().second, 25); + } + { + // Identify by exact name + auto sourceCRS = factoryEPSG->createProjectedCRS("2172"); + auto crs = ProjectedCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, + "Pulkovo 1942(58) / Poland zone II"), + sourceCRS->baseCRS(), sourceCRS->derivingConversion(), + sourceCRS->coordinateSystem()); + auto res = crs->identify(factoryEPSG); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 2172); + EXPECT_EQ(res.front().second, 100); + } + { + // Identify by equivalent name + auto sourceCRS = factoryEPSG->createProjectedCRS("2172"); + auto crs = ProjectedCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, + "Pulkovo_1942_58_Poland_zone_II"), + sourceCRS->baseCRS(), sourceCRS->derivingConversion(), + sourceCRS->coordinateSystem()); + auto res = crs->identify(factoryEPSG); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 2172); + EXPECT_EQ(res.front().second, 90); + } + { + // Identify by properties + auto sourceCRS = factoryEPSG->createProjectedCRS("2172"); + auto crs = ProjectedCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "i am a faked name"), + sourceCRS->baseCRS(), sourceCRS->derivingConversion(), + sourceCRS->coordinateSystem()); + auto res = crs->identify(factoryEPSG); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 2172); + EXPECT_EQ(res.front().second, 70); + } + { + // Identify by name, but objects aren't equivalent + auto sourceCRS = factoryEPSG->createProjectedCRS("3375"); + auto crs = ProjectedCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, + "Pulkovo 1942(58) / Poland zone II"), + sourceCRS->baseCRS(), sourceCRS->derivingConversion(), + sourceCRS->coordinateSystem()); + auto res = crs->identify(factoryEPSG); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 2172); + EXPECT_EQ(res.front().second, 25); + } + { + // Identify from a PROJ string + auto obj = PROJStringParser().createFromPROJString( + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=omerc " + "+no_uoff +lat_0=4 +lonc=102.25 +alpha=323.025796466667 " + "+gamma=323.130102361111 +k=0.99984 +x_0=804671 +y_0=0 " + "+ellps=GRS80"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto res = crs->identify(factoryEPSG); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 3375); + EXPECT_EQ(res.front().second, 70); + } + { + // Identify from a PROJ string (with "wrong" axis order for the geodetic + // part) + auto obj = PROJStringParser().createFromPROJString( + "+proj=omerc +no_uoff +lat_0=4 +lonc=102.25 " + "+alpha=323.025796466667 +gamma=323.130102361111 +k=0.99984 " + "+x_0=804671 +y_0=0 +ellps=GRS80"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto res = crs->identify(factoryEPSG); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 3375); + EXPECT_EQ(res.front().second, 70); + } + { + // No equivalent CRS to input one in result set + auto obj = + PROJStringParser().createFromPROJString("+proj=tmerc +datum=WGS84"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto res = crs->identify(factoryEPSG); + ASSERT_EQ(res.size(), 0); + } + { + // ESRI:103729 definition as a PROJ string + auto obj = + PROJStringParser() + .attachDatabaseContext(dbContext) + .createFromPROJString( + "+proj=lcc +lat_0=43.5 +lon_0=-93.95 " + "+lat_1=43.5666666666667 " + "+lat_2=43.8 +x_0=152400.30480061 +y_0=30480.0609601219 " + "+a=6378521.049 +rf=298.257222100883 +units=us-ft"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto factoryAll = AuthorityFactory::create(dbContext, std::string()); + auto res = crs->identify(factoryAll); + EXPECT_GE(res.size(), 1U); + bool found = false; + for (const auto &pair : res) { + if (pair.first->identifiers()[0]->code() == "103729") { + found = true; + EXPECT_EQ(pair.second, 70); + break; + } + } + EXPECT_TRUE(found); + } + { + // EPSG:2327 as PROJ.4 string (so with easting, northing order whereas + // official CRS is northing, easting) + auto obj = + PROJStringParser() + .attachDatabaseContext(dbContext) + .createFromPROJString( + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0 " + "+a=6378140 +b=6356755.288157528 +units=m"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto res = crs->identify(factoryEPSG); + EXPECT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 2327); + EXPECT_EQ(res.front().second, 50); + } + { + // EPSG:6646 as PROJ.4 string, using clrk80 which is pretty generic + auto obj = + PROJStringParser() + .attachDatabaseContext(dbContext) + .createFromPROJString( + "+proj=tmerc +lat_0=29.02626833333333 +lon_0=46.5 " + "+k=0.9994 +x_0=800000 +y_0=0 +ellps=clrk80 +units=m"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto res = crs->identify(factoryEPSG); + EXPECT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 6646); + EXPECT_EQ(res.front().second, 70); + } +} + +// --------------------------------------------------------------------------- + +TEST(crs, mercator_1SP_as_WKT1_ESRI) { + + auto obj = PROJStringParser().createFromPROJString( + "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 " + "+ellps=bessel"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto expected = "PROJCS[\"unknown\",GEOGCS[\"GCS_unknown\"," + "DATUM[\"D_Unknown_based_on_Bessel_1841_ellipsoid\"," + "SPHEROID[\"Bessel_1841\",6377397.155,299.1528128]]," + "PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Mercator\"]," + "PARAMETER[\"False_Easting\",3900000.0]," + "PARAMETER[\"False_Northing\",900000.0]," + "PARAMETER[\"Central_Meridian\",110.0]," + "PARAMETER[\"Standard_Parallel_1\",4.45405154589748]," + "UNIT[\"Meter\",1.0]]"; + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, + DatabaseContext::create()) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, Plate_Carree_as_WKT1_ESRI) { + + auto obj = PROJStringParser().createFromPROJString( + "+title=my Plate carree +proj=eqc"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto expected = "PROJCS[\"my_Plate_carree\",GEOGCS[\"GCS_unknown\"," + "DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\"," + "6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Plate_Carree\"]," + "PARAMETER[\"False_Easting\",0.0]," + "PARAMETER[\"False_Northing\",0.0]," + "PARAMETER[\"Central_Meridian\",0.0]," + "UNIT[\"Meter\",1.0]]"; + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, + DatabaseContext::create()) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, Equidistant_Cylindrical_as_WKT1_ESRI) { + + auto obj = PROJStringParser().createFromPROJString("+proj=eqc"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto expected = "PROJCS[\"unknown\",GEOGCS[\"GCS_unknown\"," + "DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\"," + "6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Equidistant_Cylindrical\"]," + "PARAMETER[\"False_Easting\",0.0]," + "PARAMETER[\"False_Northing\",0.0]," + "PARAMETER[\"Central_Meridian\",0.0]," + "PARAMETER[\"Standard_Parallel_1\",0.0]," + "UNIT[\"Meter\",1.0]]"; + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, + DatabaseContext::create()) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, Hotine_Oblique_Mercator_Azimuth_Natural_Origin_as_WKT1_ESRI) { + + auto obj = PROJStringParser().createFromPROJString( + "+proj=omerc +no_uoff +gamma=295 +alpha=295"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto expected = "PROJCS[\"unknown\",GEOGCS[\"GCS_unknown\"," + "DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\"," + "6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[" + "\"Hotine_Oblique_Mercator_Azimuth_Natural_Origin\"]," + "PARAMETER[\"False_Easting\",0.0]," + "PARAMETER[\"False_Northing\",0.0]," + "PARAMETER[\"Scale_Factor\",1.0]," + // we renormalize angles to [-180,180] + "PARAMETER[\"Azimuth\",-65.0]," + "PARAMETER[\"Longitude_Of_Center\",0.0]," + "PARAMETER[\"Latitude_Of_Center\",0.0]," + "UNIT[\"Meter\",1.0]]"; + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, + DatabaseContext::create()) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, Rectified_Skew_Orthomorphic_Natural_Origin_as_WKT1_ESRI) { + + auto obj = PROJStringParser().createFromPROJString( + "+proj=omerc +no_uoff +gamma=3 +alpha=2"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto expected = "PROJCS[\"unknown\",GEOGCS[\"GCS_unknown\"," + "DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\"," + "6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[" + "\"Rectified_Skew_Orthomorphic_Natural_Origin\"]," + "PARAMETER[\"False_Easting\",0.0]," + "PARAMETER[\"False_Northing\",0.0]," + "PARAMETER[\"Scale_Factor\",1.0]," + "PARAMETER[\"Azimuth\",2.0]," + "PARAMETER[\"Longitude_Of_Center\",0.0]," + "PARAMETER[\"Latitude_Of_Center\",0.0]," + "PARAMETER[\"XY_Plane_Rotation\",3.0]," + "UNIT[\"Meter\",1.0]]"; + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, + DatabaseContext::create()) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, Hotine_Oblique_Mercator_Azimuth_Center_as_WKT1_ESRI) { + + auto obj = PROJStringParser().createFromPROJString( + "+proj=omerc +gamma=2 +alpha=2"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto expected = "PROJCS[\"unknown\",GEOGCS[\"GCS_unknown\"," + "DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\"," + "6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[" + "\"Hotine_Oblique_Mercator_Azimuth_Center\"]," + "PARAMETER[\"False_Easting\",0.0]," + "PARAMETER[\"False_Northing\",0.0]," + "PARAMETER[\"Scale_Factor\",1.0]," + "PARAMETER[\"Azimuth\",2.0]," + "PARAMETER[\"Longitude_Of_Center\",0.0]," + "PARAMETER[\"Latitude_Of_Center\",0.0]," + "UNIT[\"Meter\",1.0]]"; + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, + DatabaseContext::create()) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, Rectified_Skew_Orthomorphic_Center_as_WKT1_ESRI) { + + auto obj = PROJStringParser().createFromPROJString( + "+proj=omerc +gamma=3 +alpha=2"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto expected = "PROJCS[\"unknown\",GEOGCS[\"GCS_unknown\"," + "DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\"," + "6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[" + "\"Rectified_Skew_Orthomorphic_Center\"]," + "PARAMETER[\"False_Easting\",0.0]," + "PARAMETER[\"False_Northing\",0.0]," + "PARAMETER[\"Scale_Factor\",1.0]," + "PARAMETER[\"Azimuth\",2.0]," + "PARAMETER[\"Longitude_Of_Center\",0.0]," + "PARAMETER[\"Latitude_Of_Center\",0.0]," + "PARAMETER[\"XY_Plane_Rotation\",3.0]," + "UNIT[\"Meter\",1.0]]"; + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, + DatabaseContext::create()) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, Gauss_Kruger_as_WKT1_ESRI) { + + auto obj = PROJStringParser().createFromPROJString( + "+title=my Gauss Kruger +proj=tmerc"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto expected = "PROJCS[\"my_Gauss_Kruger\",GEOGCS[\"GCS_unknown\"," + "DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0," + "298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Gauss_Kruger\"]," + "PARAMETER[\"False_Easting\",0.0]," + "PARAMETER[\"False_Northing\",0.0]," + "PARAMETER[\"Central_Meridian\",0.0]," + "PARAMETER[\"Scale_Factor\",1.0]," + "PARAMETER[\"Latitude_Of_Origin\",0.0]," + "UNIT[\"Meter\",1.0]]"; + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, + DatabaseContext::create()) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, Stereographic_North_Pole_as_WKT1_ESRI) { + + auto obj = PROJStringParser().createFromPROJString( + "+proj=stere +lat_0=90 +lat_ts=70"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto expected = "PROJCS[\"unknown\",GEOGCS[\"GCS_unknown\"," + "DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\"," + "6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Stereographic_North_Pole\"]," + "PARAMETER[\"False_Easting\",0.0]," + "PARAMETER[\"False_Northing\",0.0]," + "PARAMETER[\"Central_Meridian\",0.0]," + "PARAMETER[\"Standard_Parallel_1\",70.0]," + "UNIT[\"Meter\",1.0]]"; + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, + DatabaseContext::create()) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, Stereographic_South_Pole_as_WKT1_ESRI) { + + auto obj = PROJStringParser().createFromPROJString( + "+proj=stere +lat_0=-90 +lat_ts=-70"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto expected = "PROJCS[\"unknown\",GEOGCS[\"GCS_unknown\"," + "DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\"," + "6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Stereographic_South_Pole\"]," + "PARAMETER[\"False_Easting\",0.0]," + "PARAMETER[\"False_Northing\",0.0]," + "PARAMETER[\"Central_Meridian\",0.0]," + "PARAMETER[\"Standard_Parallel_1\",-70.0]," + "UNIT[\"Meter\",1.0]]"; + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, + DatabaseContext::create()) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, Krovak_North_Orientated_as_WKT1_ESRI) { + + auto obj = PROJStringParser().createFromPROJString("+proj=krovak"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto expected = "PROJCS[\"unknown\",GEOGCS[\"GCS_unknown\"," + "DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\"," + "6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Krovak\"]," + "PARAMETER[\"False_Easting\",0.0]," + "PARAMETER[\"False_Northing\",0.0]," + "PARAMETER[\"Pseudo_Standard_Parallel_1\",78.5]," + "PARAMETER[\"Scale_Factor\",1.0]," + "PARAMETER[\"Azimuth\",30.2881397222222]," + "PARAMETER[\"Longitude_Of_Center\",0.0]," + "PARAMETER[\"Latitude_Of_Center\",0.0]," + "PARAMETER[\"X_Scale\",-1.0]," + "PARAMETER[\"Y_Scale\",1.0]," + "PARAMETER[\"XY_Plane_Rotation\",90.0]," + "UNIT[\"Meter\",1.0]]"; + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, + DatabaseContext::create()) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, Krovak_as_WKT1_ESRI) { + + auto obj = + PROJStringParser().createFromPROJString("+proj=krovak +axis=swu"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto expected = "PROJCS[\"unknown\",GEOGCS[\"GCS_unknown\"," + "DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\"," + "6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Krovak\"]," + "PARAMETER[\"False_Easting\",0.0]," + "PARAMETER[\"False_Northing\",0.0]," + "PARAMETER[\"Pseudo_Standard_Parallel_1\",78.5]," + "PARAMETER[\"Scale_Factor\",1.0]," + "PARAMETER[\"Azimuth\",30.2881397222222]," + "PARAMETER[\"Longitude_Of_Center\",0.0]," + "PARAMETER[\"Latitude_Of_Center\",0.0]," + "PARAMETER[\"X_Scale\",1.0]," + "PARAMETER[\"Y_Scale\",1.0]," + "PARAMETER[\"XY_Plane_Rotation\",0.0]," + "UNIT[\"Meter\",1.0]]"; + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, + DatabaseContext::create()) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, LCC_1SP_as_WKT1_ESRI) { + + auto obj = PROJStringParser().createFromPROJString( + "+proj=lcc +lat_1=1 +lat_0=1 +k=0.9"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto expected = "PROJCS[\"unknown\",GEOGCS[\"GCS_unknown\"," + "DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\"," + "6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Lambert_Conformal_Conic\"]," + "PARAMETER[\"False_Easting\",0.0]," + "PARAMETER[\"False_Northing\",0.0]," + "PARAMETER[\"Central_Meridian\",0.0]," + "PARAMETER[\"Standard_Parallel_1\",1.0]," + "PARAMETER[\"Scale_Factor\",0.9]," + "PARAMETER[\"Latitude_Of_Origin\",1.0]," + "UNIT[\"Meter\",1.0]]"; + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, + DatabaseContext::create()) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, LCC_2SP_as_WKT1_ESRI) { + + auto obj = PROJStringParser().createFromPROJString( + "+proj=lcc +lat_0=1.5 +lat_1=1 +lat_2=2"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto expected = "PROJCS[\"unknown\",GEOGCS[\"GCS_unknown\"," + "DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\"," + "6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Lambert_Conformal_Conic\"]," + "PARAMETER[\"False_Easting\",0.0]," + "PARAMETER[\"False_Northing\",0.0]," + "PARAMETER[\"Central_Meridian\",0.0]," + "PARAMETER[\"Standard_Parallel_1\",1.0]," + "PARAMETER[\"Standard_Parallel_2\",2.0]," + "PARAMETER[\"Latitude_Of_Origin\",1.5]," + "UNIT[\"Meter\",1.0]]"; + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, + DatabaseContext::create()) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, ESRI_WKT1_to_ESRI_WKT1) { + + auto in_wkt = + "PROJCS[\"NAD_1983_CORS96_StatePlane_North_Carolina_FIPS_3200_Ft_US\"," + "GEOGCS[\"GCS_NAD_1983_CORS96\",DATUM[\"D_NAD_1983_CORS96\"," + "SPHEROID[\"GRS_1980\",6378137.0,298.257222101]]," + "PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Lambert_Conformal_Conic\"]," + "PARAMETER[\"False_Easting\",2000000.0]," + "PARAMETER[\"False_Northing\",0.0]," + "PARAMETER[\"Central_Meridian\",-79.0]," + "PARAMETER[\"Standard_Parallel_1\",34.33333333333334]," + "PARAMETER[\"Standard_Parallel_2\",36.16666666666666]," + "PARAMETER[\"Latitude_Of_Origin\",33.75]," + "UNIT[\"Foot_US\",0.3048006096012192]]"; + + auto obj = WKTParser().createFromWKT(in_wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto expected = + "PROJCS[\"NAD_1983_CORS96_StatePlane_North_Carolina_FIPS_3200_Ft_US\"," + "GEOGCS[\"GCS_NAD_1983_CORS96\",DATUM[\"D_NAD_1983_CORS96\"," + "SPHEROID[\"GRS_1980\",6378137.0,298.257222101]]," + "PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Lambert_Conformal_Conic\"]," + "PARAMETER[\"False_Easting\",2000000.0]," + "PARAMETER[\"False_Northing\",0.0]," + "PARAMETER[\"Central_Meridian\",-79.0]," + "PARAMETER[\"Standard_Parallel_1\",34.3333333333333]," + "PARAMETER[\"Standard_Parallel_2\",36.1666666666667]," + "PARAMETER[\"Latitude_Of_Origin\",33.75]," + "UNIT[\"Foot_US\",0.304800609601219]]"; + + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, + DatabaseContext::create()) + .get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(datum, cs_with_MERIDIAN) { + std::vector<CoordinateSystemAxisNNPtr> axis{ + CoordinateSystemAxis::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Easting"), "X", + AxisDirection::SOUTH, UnitOfMeasure::METRE, + Meridian::create(Angle(90))), + CoordinateSystemAxis::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Northing"), "Y", + AxisDirection::SOUTH, UnitOfMeasure::METRE, + Meridian::create(Angle(180.0)))}; + auto cs(CartesianCS::create(PropertyMap(), axis[0], axis[1])); + + auto expected = "CS[Cartesian,2],\n" + " AXIS[\"easting (X)\",south,\n" + " MERIDIAN[90,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"northing (Y)\",south,\n" + " MERIDIAN[180,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1]]"; + + auto formatter = WKTFormatter::create(); + formatter->setOutputId(false); + EXPECT_EQ(cs->exportToWKT(formatter.get()), expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, scope_area_bbox_remark) { + auto in_wkt = "GEODETICCRS[\"JGD2000\"," + "DATUM[\"Japanese Geodetic Datum 2000\"," + " ELLIPSOID[\"GRS 1980\",6378137,298.257222101]]," + "CS[Cartesian,3]," + " AXIS[\"(X)\",geocentricX]," + " AXIS[\"(Y)\",geocentricY]," + " AXIS[\"(Z)\",geocentricZ]," + " LENGTHUNIT[\"metre\",1.0]," + "SCOPE[\"Geodesy, topographic mapping and cadastre\"]," + "AREA[\"Japan\"]," + "BBOX[17.09,122.38,46.05,157.64]," + "VERTICALEXTENT[-10000,10000]," + "TIMEEXTENT[2002-04-01,2011-10-21]," + "ID[\"EPSG\",4946],\n" + "REMARK[\"some_remark\"]]"; + auto crs = + nn_dynamic_pointer_cast<GeodeticCRS>(WKTParser().createFromWKT(in_wkt)); + ASSERT_TRUE(crs != nullptr); + + ASSERT_EQ(crs->domains().size(), 1); + auto domain = crs->domains()[0]; + EXPECT_TRUE(domain->scope().has_value()); + EXPECT_EQ(*(domain->scope()), "Geodesy, topographic mapping and cadastre"); + ASSERT_TRUE(domain->domainOfValidity() != nullptr); + EXPECT_TRUE(domain->domainOfValidity()->description().has_value()); + EXPECT_EQ(*(domain->domainOfValidity()->description()), "Japan"); + ASSERT_EQ(domain->domainOfValidity()->geographicElements().size(), 1); + auto geogElement = domain->domainOfValidity()->geographicElements()[0]; + auto bbox = nn_dynamic_pointer_cast<GeographicBoundingBox>(geogElement); + ASSERT_TRUE(bbox != nullptr); + EXPECT_EQ(bbox->southBoundLatitude(), 17.09); + EXPECT_EQ(bbox->westBoundLongitude(), 122.38); + EXPECT_EQ(bbox->northBoundLatitude(), 46.05); + EXPECT_EQ(bbox->eastBoundLongitude(), 157.64); + + ASSERT_EQ(domain->domainOfValidity()->verticalElements().size(), 1); + auto verticalElement = domain->domainOfValidity()->verticalElements()[0]; + EXPECT_EQ(verticalElement->minimumValue(), -10000); + EXPECT_EQ(verticalElement->maximumValue(), 10000); + EXPECT_EQ(*(verticalElement->unit()), UnitOfMeasure::METRE); + + ASSERT_EQ(domain->domainOfValidity()->temporalElements().size(), 1); + auto temporalElement = domain->domainOfValidity()->temporalElements()[0]; + EXPECT_EQ(temporalElement->start(), "2002-04-01"); + EXPECT_EQ(temporalElement->stop(), "2011-10-21"); + + auto got_wkt = crs->exportToWKT(WKTFormatter::create().get()); + auto expected = + "GEODCRS[\"JGD2000\",\n" + " DATUM[\"Japanese Geodetic Datum 2000\",\n" + " ELLIPSOID[\"GRS 1980\",6378137,298.257222101,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[Cartesian,3],\n" + " AXIS[\"(X)\",geocentricX,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"(Y)\",geocentricY,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"(Z)\",geocentricZ,\n" + " ORDER[3],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " SCOPE[\"Geodesy, topographic mapping and cadastre\"],\n" + " AREA[\"Japan\"],\n" + " BBOX[17.09,122.38,46.05,157.64],\n" + " VERTICALEXTENT[-10000,10000,\n" + " LENGTHUNIT[\"metre\",1]],\n" + " TIMEEXTENT[2002-04-01,2011-10-21],\n" + " ID[\"EPSG\",4946],\n" + " REMARK[\"some_remark\"]]"; + + EXPECT_EQ(got_wkt, expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, usage) { + auto in_wkt = "GEODETICCRS[\"JGD2000\"," + "DATUM[\"Japanese Geodetic Datum 2000\"," + " ELLIPSOID[\"GRS 1980\",6378137,298.257222101]]," + "CS[Cartesian,3]," + " AXIS[\"(X)\",geocentricX]," + " AXIS[\"(Y)\",geocentricY]," + " AXIS[\"(Z)\",geocentricZ]," + " LENGTHUNIT[\"metre\",1.0]," + "USAGE[SCOPE[\"scope\"],AREA[\"area.\"]]]"; + auto crs = + nn_dynamic_pointer_cast<GeodeticCRS>(WKTParser().createFromWKT(in_wkt)); + ASSERT_TRUE(crs != nullptr); + + auto got_wkt = crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()); + auto expected = "GEODCRS[\"JGD2000\",\n" + " DATUM[\"Japanese Geodetic Datum 2000\",\n" + " ELLIPSOID[\"GRS 1980\",6378137,298.257222101,\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8901]],\n" + " CS[Cartesian,3],\n" + " AXIS[\"(X)\",geocentricX,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"(Y)\",geocentricY,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"(Z)\",geocentricZ,\n" + " ORDER[3],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " USAGE[\n" + " SCOPE[\"scope\"],\n" + " AREA[\"area.\"]]]"; + EXPECT_EQ(got_wkt, expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, multiple_ID) { + + PropertyMap propertiesCRS; + propertiesCRS.set(IdentifiedObject::NAME_KEY, "WGS 84"); + auto identifiers = ArrayOfBaseObject::create(); + identifiers->add(Identifier::create( + "codeA", PropertyMap().set(Identifier::CODESPACE_KEY, "authorityA"))); + identifiers->add(Identifier::create( + "codeB", PropertyMap().set(Identifier::CODESPACE_KEY, "authorityB"))); + propertiesCRS.set(IdentifiedObject::IDENTIFIERS_KEY, identifiers); + auto crs = GeodeticCRS::create( + propertiesCRS, GeodeticReferenceFrame::EPSG_6326, + CartesianCS::createGeocentric(UnitOfMeasure::METRE)); + + auto got_wkt = crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_SIMPLIFIED).get()); + auto expected = "GEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " CS[Cartesian,3],\n" + " AXIS[\"(X)\",geocentricX],\n" + " AXIS[\"(Y)\",geocentricY],\n" + " AXIS[\"(Z)\",geocentricZ],\n" + " UNIT[\"metre\",1],\n" + " ID[\"authorityA\",\"codeA\"],\n" + " ID[\"authorityB\",\"codeB\"]]"; + + EXPECT_EQ(got_wkt, expected); +} + +// --------------------------------------------------------------------------- + +static VerticalCRSNNPtr createVerticalCRS() { + PropertyMap propertiesVDatum; + propertiesVDatum.set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 5101) + .set(IdentifiedObject::NAME_KEY, "Ordnance Datum Newlyn"); + auto vdatum = VerticalReferenceFrame::create(propertiesVDatum); + PropertyMap propertiesCRS; + propertiesCRS.set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 5701) + .set(IdentifiedObject::NAME_KEY, "ODN height"); + return VerticalCRS::create( + propertiesCRS, vdatum, + VerticalCS::createGravityRelatedHeight(UnitOfMeasure::METRE)); +} + +// --------------------------------------------------------------------------- + +TEST(crs, verticalCRS_as_WKT2) { + auto crs = createVerticalCRS(); + auto expected = "VERTCRS[\"ODN height\",\n" + " VDATUM[\"Ordnance Datum Newlyn\"],\n" + " CS[vertical,1],\n" + " AXIS[\"gravity-related height (H)\",up,\n" + " LENGTHUNIT[\"metre\",1]],\n" + " ID[\"EPSG\",5701]]"; + + EXPECT_TRUE(crs->isEquivalentTo(crs.get())); + EXPECT_TRUE(crs->shallowClone()->isEquivalentTo(crs.get())); + EXPECT_FALSE(crs->isEquivalentTo(createUnrelatedObject().get())); + + EXPECT_EQ(crs->exportToWKT(WKTFormatter::create().get()), expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, verticalCRS_as_WKT1_GDAL) { + auto crs = createVerticalCRS(); + auto expected = "VERT_CS[\"ODN height\",\n" + " VERT_DATUM[\"Ordnance Datum Newlyn\",2005,\n" + " AUTHORITY[\"EPSG\",\"5101\"]],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" + " AXIS[\"Gravity-related height\",UP],\n" + " AUTHORITY[\"EPSG\",\"5701\"]]"; + + EXPECT_EQ( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, verticalCRS_identify_db) { + auto dbContext = DatabaseContext::create(); + auto factory = AuthorityFactory::create(dbContext, "EPSG"); + { + // Identify by existing code + auto res = factory->createVerticalCRS("7651")->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 7651); + EXPECT_EQ(res.front().second, 100); + + // Test with null + EXPECT_TRUE( + factory->createVerticalCRS("7651")->identify(nullptr).empty()); + } + { + // Non-existing code + auto sourceCRS = factory->createVerticalCRS("7651"); + auto crs = VerticalCRS::create( + PropertyMap() + .set(IdentifiedObject::NAME_KEY, sourceCRS->nameStr()) + .set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 1), + sourceCRS->datum(), sourceCRS->datumEnsemble(), + sourceCRS->coordinateSystem()); + auto res = crs->identify(factory); + EXPECT_EQ(res.size(), 0); + } + { + // Existing code, but not matching content + auto sourceCRS = factory->createVerticalCRS("7651"); + auto crs = VerticalCRS::create( + PropertyMap() + .set(IdentifiedObject::NAME_KEY, sourceCRS->nameStr()) + .set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 7652), + sourceCRS->datum(), sourceCRS->datumEnsemble(), + sourceCRS->coordinateSystem()); + auto res = crs->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 7652); + EXPECT_EQ(res.front().second, 25); + } + { + // Identify by exact name + auto sourceCRS = factory->createVerticalCRS("7651"); + auto crs = VerticalCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, sourceCRS->nameStr()), + sourceCRS->datum(), sourceCRS->datumEnsemble(), + sourceCRS->coordinateSystem()); + auto res = static_cast<const CRS *>(crs.get())->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 7651); + EXPECT_EQ(res.front().second, 100); + } + { + // Identify by equivalent name + auto sourceCRS = factory->createVerticalCRS("7651"); + auto crs = VerticalCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Kumul_34_height"), + sourceCRS->datum(), sourceCRS->datumEnsemble(), + sourceCRS->coordinateSystem()); + auto res = crs->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 7651); + EXPECT_EQ(res.front().second, 90); + } + { + // Identify by name, but objects aren't equivalent + auto sourceCRS = factory->createVerticalCRS("7652"); + auto crs = VerticalCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Kumul_34_height"), + sourceCRS->datum(), sourceCRS->datumEnsemble(), + sourceCRS->coordinateSystem()); + auto res = crs->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 7651); + EXPECT_EQ(res.front().second, 25); + } + { + auto sourceCRS = factory->createVerticalCRS("7651"); + auto crs = VerticalCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "no match"), + sourceCRS->datum(), sourceCRS->datumEnsemble(), + sourceCRS->coordinateSystem()); + auto res = crs->identify(factory); + ASSERT_EQ(res.size(), 0); + } +} + +// --------------------------------------------------------------------------- + +TEST(crs, verticalCRS_datum_ensemble) { + auto ensemble = DatumEnsemble::create( + PropertyMap(), + std::vector<DatumNNPtr>{ + VerticalReferenceFrame::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "vdatum1")), + VerticalReferenceFrame::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "vdatum2"))}, + PositionalAccuracy::create("100")); + auto crs = VerticalCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), nullptr, + ensemble, VerticalCS::createGravityRelatedHeight(UnitOfMeasure::METRE)); + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018)); + f->simulCurNodeHasId(); + crs->exportToWKT(f.get()); + auto expected = "VERTCRS[\"unnamed\",\n" + " ENSEMBLE[\"unnamed\",\n" + " MEMBER[\"vdatum1\"],\n" + " MEMBER[\"vdatum2\"],\n" + " ENSEMBLEACCURACY[100]],\n" + " CS[vertical,1],\n" + " AXIS[\"gravity-related height (H)\",up,\n" + " LENGTHUNIT[\"metre\",1]]]"; + EXPECT_EQ(f->toString(), expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, VerticalCRS_ensemble_exception_in_create) { + EXPECT_THROW(VerticalCRS::create(PropertyMap(), nullptr, nullptr, + VerticalCS::createGravityRelatedHeight( + UnitOfMeasure::METRE)), + Exception); + + auto ensemble_hdatum = DatumEnsemble::create( + PropertyMap(), + std::vector<DatumNNPtr>{GeodeticReferenceFrame::EPSG_6326, + GeodeticReferenceFrame::EPSG_6326}, + PositionalAccuracy::create("100")); + EXPECT_THROW(VerticalCRS::create(PropertyMap(), nullptr, ensemble_hdatum, + VerticalCS::createGravityRelatedHeight( + UnitOfMeasure::METRE)), + Exception); +} + +// --------------------------------------------------------------------------- + +TEST(datum, vdatum_with_anchor) { + PropertyMap propertiesVDatum; + propertiesVDatum.set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 5101) + .set(IdentifiedObject::NAME_KEY, "Ordnance Datum Newlyn"); + auto vdatum = VerticalReferenceFrame::create( + propertiesVDatum, optional<std::string>("my anchor"), + optional<RealizationMethod>(RealizationMethod::LEVELLING)); + EXPECT_TRUE(vdatum->realizationMethod().has_value()); + EXPECT_EQ(*(vdatum->realizationMethod()), RealizationMethod::LEVELLING); + + auto expected = "VDATUM[\"Ordnance Datum Newlyn\",\n" + " ANCHOR[\"my anchor\"],\n" + " ID[\"EPSG\",5101]]"; + + EXPECT_EQ(vdatum->exportToWKT(WKTFormatter::create().get()), expected); + + EXPECT_TRUE(vdatum->isEquivalentTo(vdatum.get())); + EXPECT_FALSE(vdatum->isEquivalentTo(createUnrelatedObject().get())); +} + +// --------------------------------------------------------------------------- + +static CompoundCRSNNPtr createCompoundCRS() { + PropertyMap properties; + properties.set(Identifier::CODESPACE_KEY, "codespace") + .set(Identifier::CODE_KEY, "code") + .set(IdentifiedObject::NAME_KEY, "horizontal + vertical"); + return CompoundCRS::create( + properties, + std::vector<CRSNNPtr>{createProjected(), createVerticalCRS()}); +} + +// --------------------------------------------------------------------------- + +TEST(crs, compoundCRS_as_WKT2) { + auto crs = createCompoundCRS(); + auto expected = + "COMPOUNDCRS[\"horizontal + vertical\",\n" + " PROJCRS[\"WGS 84 / UTM zone 31N\",\n" + " BASEGEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " CONVERSION[\"UTM zone 31N\",\n" + " METHOD[\"Transverse Mercator\",\n" + " ID[\"EPSG\",9807]],\n" + " PARAMETER[\"Latitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",3,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",0.9996,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",500000,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"(N)\",north,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " VERTCRS[\"ODN height\",\n" + " VDATUM[\"Ordnance Datum Newlyn\"],\n" + " CS[vertical,1],\n" + " AXIS[\"gravity-related height (H)\",up,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " ID[\"codespace\",\"code\"]]"; + + EXPECT_EQ(crs->exportToWKT(WKTFormatter::create().get()), expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, compoundCRS_isEquivalentTo) { + + auto crs = createCompoundCRS(); + EXPECT_TRUE(crs->isEquivalentTo(crs.get())); + EXPECT_TRUE(crs->shallowClone()->isEquivalentTo(crs.get())); + EXPECT_FALSE(crs->isEquivalentTo(createUnrelatedObject().get())); + auto compoundCRSOfProjCRS = + CompoundCRS::create(PropertyMap().set(IdentifiedObject::NAME_KEY, ""), + std::vector<CRSNNPtr>{createProjected()}); + auto emptyCompoundCRS = + CompoundCRS::create(PropertyMap().set(IdentifiedObject::NAME_KEY, ""), + std::vector<CRSNNPtr>{}); + EXPECT_FALSE(compoundCRSOfProjCRS->isEquivalentTo(emptyCompoundCRS.get())); + auto compoundCRSOfGeogCRS = + CompoundCRS::create(PropertyMap().set(IdentifiedObject::NAME_KEY, ""), + std::vector<CRSNNPtr>{GeographicCRS::EPSG_4326}); + EXPECT_FALSE( + compoundCRSOfProjCRS->isEquivalentTo(compoundCRSOfGeogCRS.get())); +} + +// --------------------------------------------------------------------------- + +TEST(crs, compoundCRS_as_WKT1_GDAL) { + auto crs = createCompoundCRS(); + auto expected = + "COMPD_CS[\"horizontal + vertical\",\n" + " PROJCS[\"WGS 84 / UTM zone 31N\",\n" + " GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\n" + " AUTHORITY[\"EPSG\",\"7030\"]],\n" + " AUTHORITY[\"EPSG\",\"6326\"]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " AUTHORITY[\"EPSG\",\"8901\"]],\n" + " UNIT[\"degree\",0.0174532925199433,\n" + " AUTHORITY[\"EPSG\",\"9122\"]],\n" + " AXIS[\"Latitude\",NORTH],\n" + " AXIS[\"Longitude\",EAST],\n" + " AUTHORITY[\"EPSG\",\"4326\"]],\n" + " PROJECTION[\"Transverse_Mercator\"],\n" + " PARAMETER[\"latitude_of_origin\",0],\n" + " PARAMETER[\"central_meridian\",3],\n" + " PARAMETER[\"scale_factor\",0.9996],\n" + " PARAMETER[\"false_easting\",500000],\n" + " PARAMETER[\"false_northing\",0],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" + " AXIS[\"Easting\",EAST],\n" + " AXIS[\"Northing\",NORTH],\n" + " AUTHORITY[\"EPSG\",\"32631\"]],\n" + " VERT_CS[\"ODN height\",\n" + " VERT_DATUM[\"Ordnance Datum Newlyn\",2005,\n" + " AUTHORITY[\"EPSG\",\"5101\"]],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" + " AXIS[\"Gravity-related height\",UP],\n" + " AUTHORITY[\"EPSG\",\"5701\"]],\n" + " AUTHORITY[\"codespace\",\"code\"]]"; + + EXPECT_EQ( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, compoundCRS_as_PROJ_string) { + auto crs = createCompoundCRS(); + auto expected = "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=utm " + "+zone=31 +ellps=WGS84 +vunits=m"; + + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + expected); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=utm +zone=31 +datum=WGS84 +vunits=m"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, compoundCRS_no_name_provided) { + auto crs = CompoundCRS::create( + PropertyMap(), + std::vector<CRSNNPtr>{createProjected(), createVerticalCRS()}); + EXPECT_EQ(crs->nameStr(), "WGS 84 / UTM zone 31N + ODN height"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, compoundCRS_identify_db) { + auto dbContext = DatabaseContext::create(); + auto factory = AuthorityFactory::create(dbContext, "EPSG"); + { + // Identify by existing code + auto res = factory->createCompoundCRS("8769")->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 8769); + EXPECT_EQ(res.front().second, 100); + + // Test with null + EXPECT_TRUE( + factory->createCompoundCRS("8769")->identify(nullptr).empty()); + } + { + // Non-existing code + auto sourceCRS = factory->createCompoundCRS("8769"); + auto crs = CompoundCRS::create( + PropertyMap() + .set(IdentifiedObject::NAME_KEY, sourceCRS->nameStr()) + .set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 1), + sourceCRS->componentReferenceSystems()); + auto res = crs->identify(factory); + EXPECT_EQ(res.size(), 0); + } + { + // Existing code, but not matching content + auto sourceCRS = factory->createCompoundCRS("8769"); + auto crs = CompoundCRS::create( + PropertyMap() + .set(IdentifiedObject::NAME_KEY, sourceCRS->nameStr()) + .set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 8770), + sourceCRS->componentReferenceSystems()); + auto res = crs->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 8770); + EXPECT_EQ(res.front().second, 25); + } + { + // Identify by exact name + auto sourceCRS = factory->createCompoundCRS("8769"); + auto crs = CompoundCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, sourceCRS->nameStr()), + sourceCRS->componentReferenceSystems()); + auto res = static_cast<const CRS *>(crs.get())->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 8769); + EXPECT_EQ(res.front().second, 100); + } + { + EXPECT_TRUE(Identifier::isEquivalentName( + "NAD83_Ohio_North_ftUS_NAVD88_height_ftUS", + "NAD83 / Ohio North (ftUS) + NAVD88 height (ftUS)")); + + // Identify by equivalent name + auto sourceCRS = factory->createCompoundCRS("8769"); + auto crs = CompoundCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, + "NAD83_Ohio_North_ftUS_NAVD88_height_ftUS"), + sourceCRS->componentReferenceSystems()); + auto res = crs->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 8769); + EXPECT_EQ(res.front().second, 90); + } + { + // Identify by name, but objects aren't equivalent + auto sourceCRS = factory->createCompoundCRS("8770"); + auto crs = CompoundCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, + "NAD83_Ohio_North_ftUS_NAVD88_height_ftUS"), + sourceCRS->componentReferenceSystems()); + auto res = crs->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 8769); + EXPECT_EQ(res.front().second, 25); + } + { + auto sourceCRS = factory->createCompoundCRS("8769"); + auto crs = CompoundCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unrelated name"), + sourceCRS->componentReferenceSystems()); + auto res = crs->identify(factory); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res.front().first->getEPSGCode(), 8769); + EXPECT_EQ(res.front().second, 70); + } +} + +// --------------------------------------------------------------------------- + +TEST(crs, boundCRS_to_WKT2) { + + auto projcrs = ProjectedCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "my PROJCRS"), + GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "my GEOGCRS"), + GeodeticReferenceFrame::EPSG_6326, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)), + Conversion::createUTM(PropertyMap(), 31, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + + auto crs = BoundCRS::createFromTOWGS84( + projcrs, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + + EXPECT_EQ(crs->baseCRS()->nameStr(), projcrs->nameStr()); + + EXPECT_EQ(crs->hubCRS()->nameStr(), GeographicCRS::EPSG_4326->nameStr()); + + ASSERT_TRUE(crs->transformation()->sourceCRS() != nullptr); + EXPECT_EQ(crs->transformation()->sourceCRS()->nameStr(), + projcrs->baseCRS()->nameStr()); + + ASSERT_TRUE(crs->transformation()->targetCRS() != nullptr); + EXPECT_EQ(crs->transformation()->targetCRS()->nameStr(), + GeographicCRS::EPSG_4326->nameStr()); + + auto values = crs->transformation()->parameterValues(); + ASSERT_EQ(values.size(), 7); + { + const auto &opParamvalue = + nn_dynamic_pointer_cast<OperationParameterValue>(values[0]); + ASSERT_TRUE(opParamvalue); + const auto ¶mName = opParamvalue->parameter()->nameStr(); + const auto ¶meterValue = opParamvalue->parameterValue(); + EXPECT_TRUE(opParamvalue->parameter()->getEPSGCode() == 8605); + EXPECT_EQ(paramName, "X-axis translation"); + EXPECT_EQ(parameterValue->type(), ParameterValue::Type::MEASURE); + auto measure = parameterValue->value(); + EXPECT_EQ(measure.unit(), UnitOfMeasure::METRE); + EXPECT_EQ(measure.value(), 1.0); + } + { + const auto &opParamvalue = + nn_dynamic_pointer_cast<OperationParameterValue>(values[1]); + ASSERT_TRUE(opParamvalue); + const auto ¶mName = opParamvalue->parameter()->nameStr(); + const auto ¶meterValue = opParamvalue->parameterValue(); + EXPECT_TRUE(opParamvalue->parameter()->getEPSGCode() == 8606); + EXPECT_EQ(paramName, "Y-axis translation"); + EXPECT_EQ(parameterValue->type(), ParameterValue::Type::MEASURE); + auto measure = parameterValue->value(); + EXPECT_EQ(measure.unit(), UnitOfMeasure::METRE); + EXPECT_EQ(measure.value(), 2.0); + } + { + const auto &opParamvalue = + nn_dynamic_pointer_cast<OperationParameterValue>(values[2]); + ASSERT_TRUE(opParamvalue); + const auto ¶mName = opParamvalue->parameter()->nameStr(); + const auto ¶meterValue = opParamvalue->parameterValue(); + EXPECT_TRUE(opParamvalue->parameter()->getEPSGCode() == 8607); + EXPECT_EQ(paramName, "Z-axis translation"); + EXPECT_EQ(parameterValue->type(), ParameterValue::Type::MEASURE); + auto measure = parameterValue->value(); + EXPECT_EQ(measure.unit(), UnitOfMeasure::METRE); + EXPECT_EQ(measure.value(), 3.0); + } + { + const auto &opParamvalue = + nn_dynamic_pointer_cast<OperationParameterValue>(values[3]); + ASSERT_TRUE(opParamvalue); + const auto ¶mName = opParamvalue->parameter()->nameStr(); + const auto ¶meterValue = opParamvalue->parameterValue(); + EXPECT_TRUE(opParamvalue->parameter()->getEPSGCode() == 8608); + EXPECT_EQ(paramName, "X-axis rotation"); + EXPECT_EQ(parameterValue->type(), ParameterValue::Type::MEASURE); + auto measure = parameterValue->value(); + EXPECT_EQ(measure.unit(), UnitOfMeasure::ARC_SECOND); + EXPECT_EQ(measure.value(), 4.0); + } + { + const auto &opParamvalue = + nn_dynamic_pointer_cast<OperationParameterValue>(values[4]); + ASSERT_TRUE(opParamvalue); + const auto ¶mName = opParamvalue->parameter()->nameStr(); + const auto ¶meterValue = opParamvalue->parameterValue(); + EXPECT_TRUE(opParamvalue->parameter()->getEPSGCode() == 8609); + EXPECT_EQ(paramName, "Y-axis rotation"); + EXPECT_EQ(parameterValue->type(), ParameterValue::Type::MEASURE); + auto measure = parameterValue->value(); + EXPECT_EQ(measure.unit(), UnitOfMeasure::ARC_SECOND); + EXPECT_EQ(measure.value(), 5.0); + } + { + const auto &opParamvalue = + nn_dynamic_pointer_cast<OperationParameterValue>(values[5]); + ASSERT_TRUE(opParamvalue); + const auto ¶mName = opParamvalue->parameter()->nameStr(); + const auto ¶meterValue = opParamvalue->parameterValue(); + EXPECT_TRUE(opParamvalue->parameter()->getEPSGCode() == 8610); + EXPECT_EQ(paramName, "Z-axis rotation"); + EXPECT_EQ(parameterValue->type(), ParameterValue::Type::MEASURE); + auto measure = parameterValue->value(); + EXPECT_EQ(measure.unit(), UnitOfMeasure::ARC_SECOND); + EXPECT_EQ(measure.value(), 6.0); + } + { + const auto &opParamvalue = + nn_dynamic_pointer_cast<OperationParameterValue>(values[6]); + ASSERT_TRUE(opParamvalue); + const auto ¶mName = opParamvalue->parameter()->nameStr(); + const auto ¶meterValue = opParamvalue->parameterValue(); + EXPECT_TRUE(opParamvalue->parameter()->getEPSGCode() == 8611); + EXPECT_EQ(paramName, "Scale difference"); + EXPECT_EQ(parameterValue->type(), ParameterValue::Type::MEASURE); + auto measure = parameterValue->value(); + EXPECT_EQ(measure.unit(), UnitOfMeasure::PARTS_PER_MILLION); + EXPECT_EQ(measure.value(), 7.0); + } + + auto expected = + "BOUNDCRS[SOURCECRS[" + + projcrs->exportToWKT(WKTFormatter::create().get()) + "],\n" + + "TARGETCRS[" + + GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) + + "],\n" + " ABRIDGEDTRANSFORMATION[\"Transformation from myGEOGCRS to " + "WGS84\",\n" + " METHOD[\"Position Vector transformation (geog2D " + "domain)\",\n" + " ID[\"EPSG\",9606]],\n" + " PARAMETER[\"X-axis translation\",1,\n" + " ID[\"EPSG\",8605]],\n" + " PARAMETER[\"Y-axis translation\",2,\n" + " ID[\"EPSG\",8606]],\n" + " PARAMETER[\"Z-axis translation\",3,\n" + " ID[\"EPSG\",8607]],\n" + " PARAMETER[\"X-axis rotation\",4,\n" + " ID[\"EPSG\",8608]],\n" + " PARAMETER[\"Y-axis rotation\",5,\n" + " ID[\"EPSG\",8609]],\n" + " PARAMETER[\"Z-axis rotation\",6,\n" + " ID[\"EPSG\",8610]],\n" + " PARAMETER[\"Scale difference\",1.000007,\n" + " ID[\"EPSG\",8611]]]]"; + + EXPECT_EQ( + replaceAll( + replaceAll(crs->exportToWKT(WKTFormatter::create().get()), " ", ""), + "\n", ""), + replaceAll(replaceAll(expected, " ", ""), "\n", "")); + + EXPECT_TRUE(crs->isEquivalentTo(crs.get())); + EXPECT_TRUE(crs->shallowClone()->isEquivalentTo(crs.get())); + EXPECT_FALSE(crs->isEquivalentTo(createUnrelatedObject().get())); +} + +// --------------------------------------------------------------------------- + +TEST(crs, boundCRS_crs_link) { + + { + std::weak_ptr<CRS> oriBaseCRS; + { + auto baseCRSIn = GeographicCRS::EPSG_4267->shallowClone(); + oriBaseCRS = baseCRSIn.as_nullable(); + EXPECT_EQ(oriBaseCRS.use_count(), 1); + { + auto boundCRS = BoundCRS::createFromTOWGS84( + baseCRSIn, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + EXPECT_EQ(oriBaseCRS.use_count(), 3); + } + EXPECT_EQ(oriBaseCRS.use_count(), 1); + } + EXPECT_TRUE(oriBaseCRS.expired()); + } + + { + CRSPtr baseCRS; + { + auto baseCRSIn = GeographicCRS::EPSG_4267->shallowClone(); + CRS *baseCRSPtr = baseCRSIn.get(); + auto boundCRS = BoundCRS::createFromTOWGS84( + baseCRSIn, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + baseCRS = boundCRS->baseCRS().as_nullable(); + EXPECT_TRUE(baseCRS.get() == baseCRSPtr); + } + EXPECT_TRUE(baseCRS->isEquivalentTo(GeographicCRS::EPSG_4267.get())); + EXPECT_TRUE(baseCRS->canonicalBoundCRS() == nullptr); + } + + { + CRSPtr baseCRS; + { + auto boundCRS = BoundCRS::createFromTOWGS84( + GeographicCRS::EPSG_4267->shallowClone(), + std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + baseCRS = boundCRS->baseCRSWithCanonicalBoundCRS().as_nullable(); + } + EXPECT_TRUE(baseCRS->isEquivalentTo(GeographicCRS::EPSG_4267.get())); + EXPECT_TRUE(baseCRS->canonicalBoundCRS() != nullptr); + + EXPECT_TRUE( + baseCRS->createBoundCRSToWGS84IfPossible(nullptr)->isEquivalentTo( + baseCRS->canonicalBoundCRS().get())); + } + + { + std::weak_ptr<CRS> oriBaseCRS; + { + BoundCRSPtr boundCRSExterior; + { + auto baseCRS = GeographicCRS::EPSG_4267->shallowClone(); + oriBaseCRS = baseCRS.as_nullable(); + EXPECT_EQ(oriBaseCRS.use_count(), 1); + auto boundCRS = BoundCRS::createFromTOWGS84( + baseCRS, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + EXPECT_EQ(oriBaseCRS.use_count(), 3); + boundCRSExterior = boundCRS->baseCRSWithCanonicalBoundCRS() + ->canonicalBoundCRS(); + EXPECT_EQ(oriBaseCRS.use_count(), 4); + } + EXPECT_EQ(oriBaseCRS.use_count(), 2); + EXPECT_TRUE(!oriBaseCRS.expired()); + EXPECT_TRUE(boundCRSExterior->baseCRS()->isEquivalentTo( + GeographicCRS::EPSG_4267.get())); + } + EXPECT_EQ(oriBaseCRS.use_count(), 0); + EXPECT_TRUE(oriBaseCRS.expired()); + } + + { + std::weak_ptr<CRS> oriBaseCRS; + { + BoundCRSPtr boundCRSExterior; + { + auto baseCRS = createProjected(); + oriBaseCRS = baseCRS.as_nullable(); + EXPECT_EQ(oriBaseCRS.use_count(), 1); + auto boundCRS = BoundCRS::createFromTOWGS84( + baseCRS, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + EXPECT_EQ(oriBaseCRS.use_count(), 2); + boundCRSExterior = boundCRS->baseCRSWithCanonicalBoundCRS() + ->canonicalBoundCRS(); + EXPECT_EQ(oriBaseCRS.use_count(), 3); + } + EXPECT_EQ(oriBaseCRS.use_count(), 1); + EXPECT_TRUE(!oriBaseCRS.expired()); + EXPECT_TRUE(boundCRSExterior->baseCRS()->isEquivalentTo( + createProjected().get())); + } + EXPECT_EQ(oriBaseCRS.use_count(), 0); + EXPECT_TRUE(oriBaseCRS.expired()); + } +} + +// --------------------------------------------------------------------------- + +TEST(crs, boundCRS_to_WKT1) { + + auto projcrs = ProjectedCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "my PROJCRS"), + GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "my GEOGCRS"), + GeodeticReferenceFrame::EPSG_6326, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)), + Conversion::createUTM(PropertyMap(), 31, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + + auto crs = BoundCRS::createFromTOWGS84( + projcrs, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + auto expected = "PROJCS[\"my PROJCRS\",\n" + " GEOGCS[\"my GEOGCRS\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\n" + " AUTHORITY[\"EPSG\",\"7030\"]],\n" + " TOWGS84[1,2,3,4,5,6,7],\n" + " AUTHORITY[\"EPSG\",\"6326\"]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " AUTHORITY[\"EPSG\",\"8901\"]],\n" + " UNIT[\"degree\",0.0174532925199433,\n" + " AUTHORITY[\"EPSG\",\"9122\"]],\n" + " AXIS[\"Latitude\",NORTH],\n" + " AXIS[\"Longitude\",EAST]],\n" + " PROJECTION[\"Transverse_Mercator\"],\n" + " PARAMETER[\"latitude_of_origin\",0],\n" + " PARAMETER[\"central_meridian\",3],\n" + " PARAMETER[\"scale_factor\",0.9996],\n" + " PARAMETER[\"false_easting\",500000],\n" + " PARAMETER[\"false_northing\",0],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" + " AXIS[\"Easting\",EAST],\n" + " AXIS[\"Northing\",NORTH]]"; + + EXPECT_EQ( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, boundCRS_geographicCRS_to_PROJ_string) { + + auto basecrs = GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "my GEOGCRS"), + GeodeticReferenceFrame::EPSG_6326, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)); + + auto crs = BoundCRS::createFromTOWGS84( + basecrs, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + + EXPECT_THROW(crs->exportToPROJString(PROJStringFormatter::create().get()), + FormattingException); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=longlat +ellps=WGS84 +towgs84=1,2,3,4,5,6,7"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, boundCRS_projectedCRS_to_PROJ_string) { + + auto projcrs = ProjectedCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "my PROJCRS"), + GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "my GEOGCRS"), + GeodeticReferenceFrame::EPSG_6326, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)), + Conversion::createUTM(PropertyMap(), 31, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + + auto crs = BoundCRS::createFromTOWGS84( + projcrs, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=utm +zone=31 +ellps=WGS84 +towgs84=1,2,3,4,5,6,7"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, boundCRS_identify_db) { + auto dbContext = DatabaseContext::create(); + auto factoryEPSG = AuthorityFactory::create(dbContext, "EPSG"); + { + auto obj = + PROJStringParser() + .attachDatabaseContext(dbContext) + .createFromPROJString("+proj=tmerc +lat_0=-37.76111111111111 " + "+lon_0=176.4661111111111 +k=1 " + "+x_0=400000 +y_0=800000 +ellps=GRS80 " + "+towgs84=0,0,0,0,0,0,0 +units=m"); + auto crs = nn_dynamic_pointer_cast<BoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto res = crs->identify(factoryEPSG); + ASSERT_EQ(res.size(), 1); + auto boundCRS = dynamic_cast<const BoundCRS *>(res.front().first.get()); + ASSERT_TRUE(boundCRS != nullptr); + EXPECT_EQ(boundCRS->baseCRS()->getEPSGCode(), 2106); + EXPECT_EQ(boundCRS->transformation()->nameStr(), + "NZGD2000 to WGS 84 (1)"); + EXPECT_EQ(res.front().second, 50); + } +} + +// --------------------------------------------------------------------------- + +TEST(crs, incompatible_boundCRS_hubCRS_to_WKT1) { + + auto crs = BoundCRS::create( + GeographicCRS::EPSG_4326, GeographicCRS::EPSG_4807, + Transformation::createGeocentricTranslations( + PropertyMap(), GeographicCRS::EPSG_4326, GeographicCRS::EPSG_4807, + 1.0, 2.0, 3.0, std::vector<PositionalAccuracyNNPtr>())); + + EXPECT_THROW( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + FormattingException); +} + +// --------------------------------------------------------------------------- + +TEST(crs, incompatible_boundCRS_transformation_to_WKT1) { + + auto crs = BoundCRS::create( + GeographicCRS::EPSG_4807, GeographicCRS::EPSG_4326, + Transformation::create(PropertyMap(), GeographicCRS::EPSG_4807, + GeographicCRS::EPSG_4326, nullptr, PropertyMap(), + std::vector<OperationParameterNNPtr>(), + std::vector<ParameterValueNNPtr>(), + std::vector<PositionalAccuracyNNPtr>())); + + EXPECT_THROW( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + FormattingException); +} + +// --------------------------------------------------------------------------- + +TEST(crs, WKT1_DATUM_EXTENSION_to_WKT1_and_PROJ_string) { + auto wkt = + "PROJCS[\"unnamed\",\n" + " GEOGCS[\"International 1909 (Hayford)\",\n" + " DATUM[\"unknown\",\n" + " SPHEROID[\"intl\",6378388,297],\n" + " EXTENSION[\"PROJ4_GRIDS\",\"nzgd2kgrid0005.gsb\"]],\n" + " PRIMEM[\"Greenwich\",0],\n" + " UNIT[\"degree\",0.0174532925199433],\n" + " AXIS[\"Longitude\",EAST],\n" + " AXIS[\"Latitude\",NORTH]],\n" + " PROJECTION[\"New_Zealand_Map_Grid\"],\n" + " PARAMETER[\"latitude_of_origin\",-41],\n" + " PARAMETER[\"central_meridian\",173],\n" + " PARAMETER[\"false_easting\",2510000],\n" + " PARAMETER[\"false_northing\",6023150],\n" + " UNIT[\"Meter\",1],\n" + " AXIS[\"Easting\",EAST],\n" + " AXIS[\"Northing\",NORTH]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<BoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + wkt); + + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 " + "+ellps=intl +nadgrids=nzgd2kgrid0005.gsb +units=m"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, WKT1_VERT_DATUM_EXTENSION_to_WKT1) { + auto wkt = "VERT_CS[\"EGM2008 geoid height\",\n" + " VERT_DATUM[\"EGM2008 geoid\",2005,\n" + " EXTENSION[\"PROJ4_GRIDS\",\"egm08_25.gtx\"],\n" + " AUTHORITY[\"EPSG\",\"1027\"]],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" + " AXIS[\"Up\",UP],\n" + " AUTHORITY[\"EPSG\",\"3855\"]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<BoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + wkt); +} + +// --------------------------------------------------------------------------- + +TEST(crs, WKT1_VERT_DATUM_EXTENSION_to_WKT2) { + auto wkt = "VERT_CS[\"EGM2008 geoid height\",\n" + " VERT_DATUM[\"EGM2008 geoid\",2005,\n" + " EXTENSION[\"PROJ4_GRIDS\",\"egm08_25.gtx\"],\n" + " AUTHORITY[\"EPSG\",\"1027\"]],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" + " AXIS[\"Up\",UP],\n" + " AUTHORITY[\"EPSG\",\"3855\"]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<BoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto wkt2 = + "BOUNDCRS[\n" + " SOURCECRS[\n" + " VERTCRS[\"EGM2008 geoid height\",\n" + " VDATUM[\"EGM2008 geoid\"],\n" + " CS[vertical,1],\n" + " AXIS[\"up\",up,\n" + " LENGTHUNIT[\"metre\",1]],\n" + " ID[\"EPSG\",3855]]],\n" + " TARGETCRS[\n" + " GEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,3],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"ellipsoidal height\",up,\n" + " ORDER[3],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " ID[\"EPSG\",4979]]],\n" + " ABRIDGEDTRANSFORMATION[\"EGM2008 geoid height to WGS84 " + "ellipsoidal height\",\n" + " METHOD[\"GravityRelatedHeight to Geographic3D\"],\n" + " PARAMETERFILE[\"Geoid (height correction) model " + "file\",\"egm08_25.gtx\",\n" + " ID[\"EPSG\",8666]]]]"; + + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2).get()), + wkt2); +} + +// --------------------------------------------------------------------------- + +TEST(crs, WKT1_VERT_DATUM_EXTENSION_to_PROJ_string) { + auto wkt = "VERT_CS[\"EGM2008 geoid height\",\n" + " VERT_DATUM[\"EGM2008 geoid\",2005,\n" + " EXTENSION[\"PROJ4_GRIDS\",\"egm08_25.gtx\"],\n" + " AUTHORITY[\"EPSG\",\"1027\"]],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" + " AXIS[\"Up\",UP],\n" + " AUTHORITY[\"EPSG\",\"3855\"]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<BoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+geoidgrids=egm08_25.gtx +vunits=m"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, extractGeographicCRS) { + EXPECT_EQ(GeographicCRS::EPSG_4326->extractGeographicCRS(), + GeographicCRS::EPSG_4326); + EXPECT_EQ(createProjected()->extractGeographicCRS(), + GeographicCRS::EPSG_4326); + EXPECT_EQ( + CompoundCRS::create(PropertyMap(), + std::vector<CRSNNPtr>{GeographicCRS::EPSG_4326}) + ->extractGeographicCRS(), + GeographicCRS::EPSG_4326); +} + +// --------------------------------------------------------------------------- + +TEST(crs, extractVerticalCRS) { + EXPECT_EQ(GeographicCRS::EPSG_4326->extractVerticalCRS(), nullptr); + { + auto vertcrs = createCompoundCRS()->extractVerticalCRS(); + ASSERT_TRUE(vertcrs != nullptr); + EXPECT_TRUE(vertcrs->isEquivalentTo(createVerticalCRS().get())); + } +} + +// --------------------------------------------------------------------------- + +static DerivedGeographicCRSNNPtr createDerivedGeographicCRS() { + + auto derivingConversion = Conversion::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Atlantic pole"), + PropertyMap().set(IdentifiedObject::NAME_KEY, "Pole rotation"), + std::vector<OperationParameterNNPtr>{ + OperationParameter::create(PropertyMap().set( + IdentifiedObject::NAME_KEY, "Latitude of rotated pole")), + OperationParameter::create(PropertyMap().set( + IdentifiedObject::NAME_KEY, "Longitude of rotated pole")), + OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Axis rotation")), + }, + std::vector<ParameterValueNNPtr>{ + ParameterValue::create(Angle(52.0)), + ParameterValue::create(Angle(-30.0)), + ParameterValue::create(Angle(-25)), + }); + + return DerivedGeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "WMO Atlantic Pole"), + GeographicCRS::EPSG_4326, derivingConversion, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)); +} + +// --------------------------------------------------------------------------- + +TEST(crs, derivedGeographicCRS_WKT2) { + + auto expected = "GEODCRS[\"WMO Atlantic Pole\",\n" + " BASEGEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " DERIVINGCONVERSION[\"Atlantic pole\",\n" + " METHOD[\"Pole rotation\"],\n" + " PARAMETER[\"Latitude of rotated pole\",52,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " PARAMETER[\"Longitude of rotated pole\",-30,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " PARAMETER[\"Axis rotation\",-25,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]]]"; + + auto crs = createDerivedGeographicCRS(); + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2).get()), + expected); + + EXPECT_TRUE(crs->isEquivalentTo(crs.get())); + EXPECT_TRUE(crs->shallowClone()->isEquivalentTo(crs.get())); + EXPECT_FALSE(crs->isEquivalentTo(createUnrelatedObject().get())); +} + +// --------------------------------------------------------------------------- + +TEST(crs, derivedGeographicCRS_WKT2_2018) { + + auto expected = "GEOGCRS[\"WMO Atlantic Pole\",\n" + " BASEGEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " DERIVINGCONVERSION[\"Atlantic pole\",\n" + " METHOD[\"Pole rotation\"],\n" + " PARAMETER[\"Latitude of rotated pole\",52,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " PARAMETER[\"Longitude of rotated pole\",-30,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " PARAMETER[\"Axis rotation\",-25,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]]]"; + + EXPECT_EQ( + createDerivedGeographicCRS()->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, derivedGeographicCRS_WKT1) { + + EXPECT_THROW( + createDerivedGeographicCRS()->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + FormattingException); +} + +// --------------------------------------------------------------------------- + +TEST(crs, derivedGeographicCRS_to_PROJ) { + + auto wkt = "GEODCRS[\"WMO Atlantic Pole\",\n" + " BASEGEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ ob_tran o_proj=longlat\"],\n" + " PARAMETER[\"o_lat_p\",52],\n" + " PARAMETER[\"o_lon_p\",-30],\n" + " PARAMETER[\"lon_0\",-25]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<DerivedGeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ( + crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=ob_tran " + "+o_proj=longlat +o_lat_p=52 +o_lon_p=-30 +lon_0=-25 +ellps=WGS84 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg +step " + "+proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(crs, derivedGeographicCRS_with_affine_transform_to_PROJ) { + + auto wkt = "GEODCRS[\"WGS 84 Translated\",\n" + " BASEGEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0]],\n" + " DERIVINGCONVERSION[\"Translation\",\n" + " METHOD[\"Affine parametric transformation\",\n" + " ID[\"EPSG\",9624]],\n" + " PARAMETER[\"A0\",0.5,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8623]],\n" + " PARAMETER[\"A1\",1,\n" + " SCALEUNIT[\"coefficient\",1],\n" + " ID[\"EPSG\",8624]],\n" + " PARAMETER[\"A2\",0,\n" + " SCALEUNIT[\"coefficient\",1],\n" + " ID[\"EPSG\",8625]],\n" + " PARAMETER[\"B0\",2.5,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8639]],\n" + " PARAMETER[\"B1\",0,\n" + " SCALEUNIT[\"coefficient\",1],\n" + " ID[\"EPSG\",8640]],\n" + " PARAMETER[\"B2\",1,\n" + " SCALEUNIT[\"coefficient\",1],\n" + " ID[\"EPSG\",8641]]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north],\n" + " AXIS[\"longitude\",east],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<DerivedGeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=affine +xoff=0.5 +s11=1 +s12=0 +yoff=2.5 +s21=0 +s22=1"); +} + +// --------------------------------------------------------------------------- + +static DerivedGeodeticCRSNNPtr createDerivedGeodeticCRS() { + + auto derivingConversion = Conversion::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Some conversion"), + PropertyMap().set(IdentifiedObject::NAME_KEY, "Some method"), + std::vector<OperationParameterNNPtr>{}, + std::vector<ParameterValueNNPtr>{}); + + return DerivedGeodeticCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Derived geodetic CRS"), + GeographicCRS::EPSG_4326, derivingConversion, + CartesianCS::createGeocentric(UnitOfMeasure::METRE)); +} + +// --------------------------------------------------------------------------- + +TEST(crs, derivedGeodeticCRS_WKT2) { + + auto expected = "GEODCRS[\"Derived geodetic CRS\",\n" + " BASEGEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " DERIVINGCONVERSION[\"Some conversion\",\n" + " METHOD[\"Some method\"]],\n" + " CS[Cartesian,3],\n" + " AXIS[\"(X)\",geocentricX,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " AXIS[\"(Y)\",geocentricY,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " AXIS[\"(Z)\",geocentricZ,\n" + " ORDER[3],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]]]"; + + auto crs = createDerivedGeodeticCRS(); + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2).get()), + expected); + + EXPECT_TRUE(crs->isEquivalentTo(crs.get())); + EXPECT_TRUE(crs->shallowClone()->isEquivalentTo(crs.get())); + EXPECT_FALSE(crs->isEquivalentTo(createUnrelatedObject().get())); +} + +// --------------------------------------------------------------------------- + +TEST(crs, derivedGeodeticCRS_WKT2_2018) { + + auto expected = "GEODCRS[\"Derived geodetic CRS\",\n" + " BASEGEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " DERIVINGCONVERSION[\"Some conversion\",\n" + " METHOD[\"Some method\"]],\n" + " CS[Cartesian,3],\n" + " AXIS[\"(X)\",geocentricX,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " AXIS[\"(Y)\",geocentricY,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " AXIS[\"(Z)\",geocentricZ,\n" + " ORDER[3],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]]]"; + + EXPECT_EQ( + createDerivedGeodeticCRS()->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, derivedGeodeticCRS_WKT1) { + + EXPECT_THROW( + createDerivedGeodeticCRS()->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + FormattingException); +} + +// --------------------------------------------------------------------------- + +static DerivedProjectedCRSNNPtr createDerivedProjectedCRS() { + + auto derivingConversion = Conversion::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), + PropertyMap().set(IdentifiedObject::NAME_KEY, "PROJ unimplemented"), + std::vector<OperationParameterNNPtr>{}, + std::vector<ParameterValueNNPtr>{}); + + return DerivedProjectedCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "derived projectedCRS"), + createProjected(), derivingConversion, + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); +} + +// --------------------------------------------------------------------------- + +TEST(crs, derivedProjectedCRS_WKT2_2018) { + + auto expected = + "DERIVEDPROJCRS[\"derived projectedCRS\",\n" + " BASEPROJCRS[\"WGS 84 / UTM zone 31N\",\n" + " BASEGEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " CONVERSION[\"UTM zone 31N\",\n" + " METHOD[\"Transverse Mercator\",\n" + " ID[\"EPSG\",9807]],\n" + " PARAMETER[\"Latitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",3,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",0.9996,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",500000,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " AXIS[\"(N)\",north,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]]]"; + + auto crs = createDerivedProjectedCRS(); + EXPECT_EQ( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + expected); + + EXPECT_TRUE(crs->isEquivalentTo(crs.get())); + EXPECT_TRUE(crs->shallowClone()->isEquivalentTo(crs.get())); + EXPECT_FALSE(crs->isEquivalentTo(createUnrelatedObject().get())); +} + +// --------------------------------------------------------------------------- + +TEST(crs, derivedProjectedCRS_WKT2_2015) { + + auto crs = createDerivedProjectedCRS(); + EXPECT_THROW( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2015).get()), + FormattingException); +} + +// --------------------------------------------------------------------------- + +TEST(crs, derivedProjectedCRS_to_PROJ) { + + auto crs = createDerivedProjectedCRS(); + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=unimplemented"); +} + +// --------------------------------------------------------------------------- + +static DateTimeTemporalCSNNPtr createDateTimeTemporalCS() { + return DateTimeTemporalCS::create( + PropertyMap(), + CoordinateSystemAxis::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Time"), "T", + AxisDirection::FUTURE, UnitOfMeasure::NONE)); + ; +} + +// --------------------------------------------------------------------------- + +static TemporalCRSNNPtr createDateTimeTemporalCRS() { + + auto datum = TemporalDatum::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Gregorian calendar"), + DateTime::create("0000-01-01"), + TemporalDatum::CALENDAR_PROLEPTIC_GREGORIAN); + + return TemporalCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Temporal CRS"), datum, + createDateTimeTemporalCS()); +} + +// --------------------------------------------------------------------------- + +TEST(crs, dateTimeTemporalCRS_WKT2) { + + auto expected = "TIMECRS[\"Temporal CRS\",\n" + " TDATUM[\"Gregorian calendar\",\n" + " TIMEORIGIN[0000-01-01]],\n" + " CS[temporal,1],\n" + " AXIS[\"time (T)\",future]]"; + + auto crs = createDateTimeTemporalCRS(); + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2).get()), + expected); + + EXPECT_THROW( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + FormattingException); + + EXPECT_TRUE(crs->isEquivalentTo(crs.get())); + EXPECT_TRUE(crs->shallowClone()->isEquivalentTo(crs.get())); + EXPECT_TRUE(!crs->isEquivalentTo(createUnrelatedObject().get())); +} + +// --------------------------------------------------------------------------- + +TEST(crs, dateTimeTemporalCRS_WKT2_2018) { + + auto expected = "TIMECRS[\"Temporal CRS\",\n" + " TDATUM[\"Gregorian calendar\",\n" + " CALENDAR[\"proleptic Gregorian\"],\n" + " TIMEORIGIN[0000-01-01]],\n" + " CS[TemporalDateTime,1],\n" + " AXIS[\"time (T)\",future]]"; + + EXPECT_EQ( + createDateTimeTemporalCRS()->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + expected); +} + +// --------------------------------------------------------------------------- + +static TemporalCRSNNPtr createTemporalCountCRSWithConvFactor() { + + auto datum = TemporalDatum::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "GPS time origin"), + DateTime::create("1980-01-01T00:00:00.0Z"), + TemporalDatum::CALENDAR_PROLEPTIC_GREGORIAN); + + auto cs = TemporalCountCS::create( + PropertyMap(), + CoordinateSystemAxis::create(PropertyMap(), "T", AxisDirection::FUTURE, + UnitOfMeasure("milliseconds (ms)", 0.001, + UnitOfMeasure::Type::TIME))); + + return TemporalCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "GPS milliseconds"), + datum, cs); +} + +// --------------------------------------------------------------------------- + +TEST(crs, temporalCountCRSWithConvFactor_WKT2_2018) { + + auto expected = "TIMECRS[\"GPS milliseconds\",\n" + " TDATUM[\"GPS time origin\",\n" + " CALENDAR[\"proleptic Gregorian\"],\n" + " TIMEORIGIN[1980-01-01T00:00:00.0Z]],\n" + " CS[TemporalCount,1],\n" + " AXIS[\"(T)\",future,\n" + " TIMEUNIT[\"milliseconds (ms)\",0.001]]]"; + + EXPECT_EQ( + createTemporalCountCRSWithConvFactor()->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + expected); +} + +// --------------------------------------------------------------------------- + +static TemporalCRSNNPtr createTemporalCountCRSWithoutConvFactor() { + + auto datum = TemporalDatum::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "29 December 1979"), + DateTime::create("1979-12-29T00"), + TemporalDatum::CALENDAR_PROLEPTIC_GREGORIAN); + + auto cs = TemporalCountCS::create( + PropertyMap(), + CoordinateSystemAxis::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Time"), "", + AxisDirection::FUTURE, + UnitOfMeasure("hour", 0, UnitOfMeasure::Type::TIME))); + + return TemporalCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, + "Calendar hours from 1979-12-29"), + datum, cs); +} + +// --------------------------------------------------------------------------- + +TEST(crs, temporalCountCRSWithoutConvFactor_WKT2_2018) { + + auto expected = "TIMECRS[\"Calendar hours from 1979-12-29\",\n" + " TDATUM[\"29 December 1979\",\n" + " CALENDAR[\"proleptic Gregorian\"],\n" + " TIMEORIGIN[1979-12-29T00]],\n" + " CS[TemporalCount,1],\n" + " AXIS[\"time\",future,\n" + " TIMEUNIT[\"hour\"]]]"; + + EXPECT_EQ( + createTemporalCountCRSWithoutConvFactor()->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + expected); +} + +// --------------------------------------------------------------------------- + +static TemporalCRSNNPtr createTemporalMeasureCRSWithoutConvFactor() { + + auto datum = TemporalDatum::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Common Era"), + DateTime::create("0000"), TemporalDatum::CALENDAR_PROLEPTIC_GREGORIAN); + + auto cs = TemporalMeasureCS::create( + PropertyMap(), + CoordinateSystemAxis::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Decimal years"), "a", + AxisDirection::FUTURE, + UnitOfMeasure("year", 0, UnitOfMeasure::Type::TIME))); + + return TemporalCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Decimal Years CE"), + datum, cs); +} + +// --------------------------------------------------------------------------- + +TEST(crs, temporalMeasureCRSWithoutConvFactor_WKT2_2018) { + + auto expected = "TIMECRS[\"Decimal Years CE\",\n" + " TDATUM[\"Common Era\",\n" + " CALENDAR[\"proleptic Gregorian\"],\n" + " TIMEORIGIN[0000]],\n" + " CS[TemporalMeasure,1],\n" + " AXIS[\"decimal years (a)\",future,\n" + " TIMEUNIT[\"year\"]]]"; + + EXPECT_EQ( + createTemporalMeasureCRSWithoutConvFactor()->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + expected); +} + +// --------------------------------------------------------------------------- + +static EngineeringCRSNNPtr createEngineeringCRS() { + + auto datum = EngineeringDatum::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Engineering datum")); + + return EngineeringCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Engineering CRS"), datum, + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); +} + +// --------------------------------------------------------------------------- + +TEST(crs, engineeringCRS_WKT2) { + + auto expected = "ENGCRS[\"Engineering CRS\",\n" + " EDATUM[\"Engineering datum\"],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " AXIS[\"(N)\",north,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]]]"; + + auto crs = createEngineeringCRS(); + EXPECT_TRUE(crs->isEquivalentTo(crs.get())); + EXPECT_TRUE(crs->shallowClone()->isEquivalentTo(crs.get())); + EXPECT_TRUE(!crs->isEquivalentTo(createUnrelatedObject().get())); + + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2).get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, engineeringCRS_WKT1) { + + auto expected = "LOCAL_CS[\"Engineering CRS\",\n" + " LOCAL_DATUM[\"Engineering datum\",32767],\n" + " AXIS[\"Easting\",EAST],\n" + " AXIS[\"Northing\",NORTH]]"; + EXPECT_EQ( + createEngineeringCRS()->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + expected); +} + +// --------------------------------------------------------------------------- + +static ParametricCSNNPtr createParametricCS() { + + return ParametricCS::create( + PropertyMap(), + CoordinateSystemAxis::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "pressure"), "hPa", + AxisDirection::UP, UnitOfMeasure("HectoPascal", 100, + UnitOfMeasure::Type::PARAMETRIC))); +} + +// --------------------------------------------------------------------------- + +static ParametricCRSNNPtr createParametricCRS() { + + auto datum = ParametricDatum::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Parametric datum")); + + return ParametricCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Parametric CRS"), datum, + createParametricCS()); +} + +// --------------------------------------------------------------------------- + +TEST(crs, default_identify_method) { + EXPECT_TRUE(createParametricCRS()->identify(nullptr).empty()); +} + +// --------------------------------------------------------------------------- + +TEST(crs, parametricCRS_WKT2) { + + auto expected = "PARAMETRICCRS[\"Parametric CRS\",\n" + " PDATUM[\"Parametric datum\"],\n" + " CS[parametric,1],\n" + " AXIS[\"pressure (hPa)\",up,\n" + " PARAMETRICUNIT[\"HectoPascal\",100]]]"; + auto crs = createParametricCRS(); + EXPECT_TRUE(crs->isEquivalentTo(crs.get())); + EXPECT_TRUE(crs->shallowClone()->isEquivalentTo(crs.get())); + EXPECT_TRUE(!crs->isEquivalentTo(createUnrelatedObject().get())); + + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2).get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, parametricCRS_WKT1) { + + EXPECT_THROW( + createParametricCRS()->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + FormattingException); +} + +// --------------------------------------------------------------------------- + +static DerivedVerticalCRSNNPtr createDerivedVerticalCRS() { + + auto derivingConversion = Conversion::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), + PropertyMap().set(IdentifiedObject::NAME_KEY, "PROJ unimplemented"), + std::vector<OperationParameterNNPtr>{}, + std::vector<ParameterValueNNPtr>{}); + + return DerivedVerticalCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Derived vertCRS"), + createVerticalCRS(), derivingConversion, + VerticalCS::createGravityRelatedHeight(UnitOfMeasure::METRE)); +} + +// --------------------------------------------------------------------------- + +TEST(crs, DerivedVerticalCRS_WKT2) { + + auto expected = "VERTCRS[\"Derived vertCRS\",\n" + " BASEVERTCRS[\"ODN height\",\n" + " VDATUM[\"Ordnance Datum Newlyn\"]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[vertical,1],\n" + " AXIS[\"gravity-related height (H)\",up,\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]]]"; + + auto crs = createDerivedVerticalCRS(); + EXPECT_TRUE(crs->isEquivalentTo(crs.get())); + EXPECT_TRUE(crs->shallowClone()->isEquivalentTo(crs.get())); + EXPECT_TRUE(!crs->isEquivalentTo(createUnrelatedObject().get())); + + EXPECT_EQ(crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2).get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, DerivedVerticalCRS_WKT1) { + + EXPECT_THROW( + createDerivedVerticalCRS()->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + FormattingException); +} + +// --------------------------------------------------------------------------- + +static DerivedEngineeringCRSNNPtr createDerivedEngineeringCRS() { + + auto derivingConversion = Conversion::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), + PropertyMap().set(IdentifiedObject::NAME_KEY, "PROJ unimplemented"), + std::vector<OperationParameterNNPtr>{}, + std::vector<ParameterValueNNPtr>{}); + + return DerivedEngineeringCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Derived EngineeringCRS"), + createEngineeringCRS(), derivingConversion, + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); +} + +// --------------------------------------------------------------------------- + +TEST(crs, DerivedEngineeringCRS_WKT2) { + + auto expected = "ENGCRS[\"Derived EngineeringCRS\",\n" + " BASEENGCRS[\"Engineering CRS\",\n" + " EDATUM[\"Engineering datum\"]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " AXIS[\"(N)\",north,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]]]"; + + auto crs = createDerivedEngineeringCRS(); + EXPECT_TRUE(crs->isEquivalentTo(crs.get())); + EXPECT_TRUE(crs->shallowClone()->isEquivalentTo(crs.get())); + EXPECT_TRUE(!crs->isEquivalentTo(createUnrelatedObject().get())); + EXPECT_TRUE(crs->coordinateSystem()->isEquivalentTo( + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE).get())); + EXPECT_TRUE( + crs->datum()->isEquivalentTo(createEngineeringCRS()->datum().get())); + + EXPECT_EQ( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + expected); + EXPECT_THROW( + createDerivedEngineeringCRS()->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2015).get()), + FormattingException); +} + +// --------------------------------------------------------------------------- + +TEST(crs, DerivedEngineeringCRS_WKT1) { + + EXPECT_THROW( + createDerivedEngineeringCRS()->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + FormattingException); +} + +// --------------------------------------------------------------------------- + +static DerivedParametricCRSNNPtr createDerivedParametricCRS() { + + auto derivingConversion = Conversion::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), + PropertyMap().set(IdentifiedObject::NAME_KEY, "PROJ unimplemented"), + std::vector<OperationParameterNNPtr>{}, + std::vector<ParameterValueNNPtr>{}); + + return DerivedParametricCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Derived ParametricCRS"), + createParametricCRS(), derivingConversion, createParametricCS()); +} + +// --------------------------------------------------------------------------- + +TEST(crs, DerivedParametricCRS_WKT2) { + + auto expected = "PARAMETRICCRS[\"Derived ParametricCRS\",\n" + " BASEPARAMCRS[\"Parametric CRS\",\n" + " PDATUM[\"Parametric datum\"]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[parametric,1],\n" + " AXIS[\"pressure (hPa)\",up,\n" + " PARAMETRICUNIT[\"HectoPascal\",100]]]"; + + auto crs = createDerivedParametricCRS(); + EXPECT_TRUE(crs->isEquivalentTo(crs.get())); + EXPECT_TRUE(crs->shallowClone()->isEquivalentTo(crs.get())); + EXPECT_TRUE(!crs->isEquivalentTo(createUnrelatedObject().get())); + EXPECT_TRUE( + crs->coordinateSystem()->isEquivalentTo(createParametricCS().get())); + EXPECT_TRUE( + crs->datum()->isEquivalentTo(createParametricCRS()->datum().get())); + + EXPECT_EQ( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, DerivedParametricCRS_WKT1) { + + EXPECT_THROW( + createDerivedParametricCRS()->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + FormattingException); +} + +// --------------------------------------------------------------------------- + +static DerivedTemporalCRSNNPtr createDerivedTemporalCRS() { + + auto derivingConversion = Conversion::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), + PropertyMap().set(IdentifiedObject::NAME_KEY, "PROJ unimplemented"), + std::vector<OperationParameterNNPtr>{}, + std::vector<ParameterValueNNPtr>{}); + + return DerivedTemporalCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Derived TemporalCRS"), + createDateTimeTemporalCRS(), derivingConversion, + createDateTimeTemporalCS()); +} + +// --------------------------------------------------------------------------- + +TEST(crs, DeriveTemporalCRS_WKT2) { + + auto expected = "TIMECRS[\"Derived TemporalCRS\",\n" + " BASETIMECRS[\"Temporal CRS\",\n" + " TDATUM[\"Gregorian calendar\",\n" + " CALENDAR[\"proleptic Gregorian\"],\n" + " TIMEORIGIN[0000-01-01]]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[TemporalDateTime,1],\n" + " AXIS[\"time (T)\",future]]"; + + auto crs = createDerivedTemporalCRS(); + EXPECT_TRUE(crs->isEquivalentTo(crs.get())); + EXPECT_TRUE(crs->shallowClone()->isEquivalentTo(crs.get())); + EXPECT_TRUE(!crs->isEquivalentTo(createUnrelatedObject().get())); + EXPECT_TRUE(crs->coordinateSystem()->isEquivalentTo( + createDateTimeTemporalCS().get())); + EXPECT_TRUE(crs->datum()->isEquivalentTo( + createDateTimeTemporalCRS()->datum().get())); + + EXPECT_EQ( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(crs, DeriveTemporalCRS_WKT1) { + + EXPECT_THROW( + createDerivedTemporalCRS()->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + FormattingException); +} + +// --------------------------------------------------------------------------- + +TEST(crs, crs_createBoundCRSToWGS84IfPossible) { + auto dbContext = DatabaseContext::create(); + auto factory = AuthorityFactory::create(dbContext, "EPSG"); + { + auto crs_4326 = factory->createCoordinateReferenceSystem("4326"); + EXPECT_EQ(crs_4326->createBoundCRSToWGS84IfPossible(dbContext), + crs_4326); + } + { + auto crs_32631 = factory->createCoordinateReferenceSystem("32631"); + EXPECT_EQ(crs_32631->createBoundCRSToWGS84IfPossible(dbContext), + crs_32631); + } + { + // Pulkovo 42 East Germany + auto crs_5670 = factory->createCoordinateReferenceSystem("5670"); + EXPECT_EQ(crs_5670->createBoundCRSToWGS84IfPossible(dbContext), + crs_5670); + } + { + // Pulkovo 42 Romania + auto crs_3844 = factory->createCoordinateReferenceSystem("3844"); + auto bound = crs_3844->createBoundCRSToWGS84IfPossible(dbContext); + EXPECT_NE(bound, crs_3844); + EXPECT_EQ(bound->createBoundCRSToWGS84IfPossible(dbContext), bound); + auto boundCRS = nn_dynamic_pointer_cast<BoundCRS>(bound); + ASSERT_TRUE(boundCRS != nullptr); + EXPECT_EQ(boundCRS->exportToPROJString( + PROJStringFormatter::create( + PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 " + "+y_0=500000 +ellps=krass " + "+towgs84=2.329,-147.042,-92.08,-0.309,0.325,0.497,5.69"); + } + { + // Pulkovo 42 Poland + auto crs_2171 = factory->createCoordinateReferenceSystem("2171"); + auto bound = crs_2171->createBoundCRSToWGS84IfPossible(dbContext); + EXPECT_NE(bound, crs_2171); + EXPECT_EQ(bound->createBoundCRSToWGS84IfPossible(dbContext), bound); + auto boundCRS = nn_dynamic_pointer_cast<BoundCRS>(bound); + ASSERT_TRUE(boundCRS != nullptr); + EXPECT_EQ(boundCRS->exportToPROJString( + PROJStringFormatter::create( + PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=sterea +lat_0=50.625 +lon_0=21.0833333333333 " + "+k=0.9998 +x_0=4637000 +y_0=5647000 +ellps=krass " + "+towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84"); + } + { + // NTF (Paris) + auto crs_4807 = factory->createCoordinateReferenceSystem("4807"); + auto bound = crs_4807->createBoundCRSToWGS84IfPossible(dbContext); + EXPECT_NE(bound, crs_4807); + EXPECT_EQ(bound->createBoundCRSToWGS84IfPossible(dbContext), bound); + auto boundCRS = nn_dynamic_pointer_cast<BoundCRS>(bound); + ASSERT_TRUE(boundCRS != nullptr); + EXPECT_EQ(boundCRS->exportToPROJString( + PROJStringFormatter::create( + PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=longlat +ellps=clrk80ign +pm=paris " + "+towgs84=-168,-60,320,0,0,0,0"); + } + { + // NTF (Paris) / Lambert zone II + NGF-IGN69 height + auto crs_7421 = factory->createCoordinateReferenceSystem("7421"); + auto bound = crs_7421->createBoundCRSToWGS84IfPossible(dbContext); + EXPECT_NE(bound, crs_7421); + EXPECT_EQ(bound->createBoundCRSToWGS84IfPossible(dbContext), bound); + auto boundCRS = nn_dynamic_pointer_cast<BoundCRS>(bound); + ASSERT_TRUE(boundCRS != nullptr); + EXPECT_EQ(boundCRS->exportToPROJString( + PROJStringFormatter::create( + PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 " + "+x_0=600000 +y_0=2200000 +ellps=clrk80ign +pm=paris " + "+towgs84=-168,-60,320,0,0,0,0 +vunits=m"); + } + { + auto crs = createVerticalCRS(); + EXPECT_EQ(crs->createBoundCRSToWGS84IfPossible(dbContext), crs); + } + { + auto factoryIGNF = + AuthorityFactory::create(DatabaseContext::create(), "IGNF"); + auto crs = factoryIGNF->createCoordinateReferenceSystem("TERA50STEREO"); + auto bound = crs->createBoundCRSToWGS84IfPossible(dbContext); + EXPECT_NE(bound, crs); + auto boundCRS = nn_dynamic_pointer_cast<BoundCRS>(bound); + ASSERT_TRUE(boundCRS != nullptr); + EXPECT_EQ(boundCRS->exportToPROJString( + PROJStringFormatter::create( + PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=stere +lat_0=-90 +lat_ts=-67 +lon_0=140 +x_0=300000 " + "+y_0=-2299363.482 +ellps=intl " + "+towgs84=324.912,153.282,172.026,0,0,0,0"); + } + { + auto factoryIGNF = + AuthorityFactory::create(DatabaseContext::create(), "IGNF"); + auto crs = factoryIGNF->createCoordinateReferenceSystem("AMST63"); + auto bound = crs->createBoundCRSToWGS84IfPossible(dbContext); + EXPECT_NE(bound, crs); + auto boundCRS = nn_dynamic_pointer_cast<BoundCRS>(bound); + ASSERT_TRUE(boundCRS != nullptr); + EXPECT_EQ(boundCRS->exportToPROJString( + PROJStringFormatter::create( + PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=geocent +ellps=intl " + "+towgs84=109.753,-528.133,-362.244,0,0,0,0"); + } +} + +// --------------------------------------------------------------------------- + +TEST(crs, crs_stripVerticalComponent) { + + { + auto crs = GeographicCRS::EPSG_4979->stripVerticalComponent(); + auto geogCRS = nn_dynamic_pointer_cast<GeographicCRS>(crs); + ASSERT_TRUE(geogCRS != nullptr); + EXPECT_EQ(geogCRS->coordinateSystem()->axisList().size(), 2); + } + + { + auto crs = GeographicCRS::EPSG_4326->stripVerticalComponent(); + EXPECT_TRUE(crs->isEquivalentTo(GeographicCRS::EPSG_4326.get())); + } + + { + std::vector<CoordinateSystemAxisNNPtr> axis{ + CoordinateSystemAxis::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Easting"), "E", + AxisDirection::EAST, UnitOfMeasure::METRE), + CoordinateSystemAxis::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Northing"), "N", + AxisDirection::NORTH, UnitOfMeasure::METRE), + CoordinateSystemAxis::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Height"), "z", + AxisDirection::UP, UnitOfMeasure::METRE)}; + auto cs(CartesianCS::create(PropertyMap(), axis[0], axis[1], axis[2])); + auto projected3DCrs = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createUTM(PropertyMap(), 31, true), cs); + auto projCRS = nn_dynamic_pointer_cast<ProjectedCRS>( + projected3DCrs->stripVerticalComponent()); + ASSERT_TRUE(projCRS != nullptr); + EXPECT_EQ(projCRS->coordinateSystem()->axisList().size(), 2); + } +} diff --git a/test/unit/test_datum.cpp b/test/unit/test_datum.cpp new file mode 100644 index 00000000..18cf244a --- /dev/null +++ b/test/unit/test_datum.cpp @@ -0,0 +1,482 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: Test ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#include "gtest_include.h" + +#include "proj/common.hpp" +#include "proj/datum.hpp" +#include "proj/io.hpp" +#include "proj/metadata.hpp" +#include "proj/util.hpp" + +using namespace osgeo::proj::common; +using namespace osgeo::proj::datum; +using namespace osgeo::proj::io; +using namespace osgeo::proj::metadata; +using namespace osgeo::proj::util; + +namespace { +struct UnrelatedObject : public IComparable { + UnrelatedObject() = default; + + bool _isEquivalentTo(const IComparable *, Criterion) const override { + assert(false); + return false; + } +}; + +static nn<std::shared_ptr<UnrelatedObject>> createUnrelatedObject() { + return nn_make_shared<UnrelatedObject>(); +} +} // namespace + +// --------------------------------------------------------------------------- + +TEST(datum, ellipsoid_from_sphere) { + + auto ellipsoid = Ellipsoid::createSphere(PropertyMap(), Length(6378137)); + EXPECT_FALSE(ellipsoid->inverseFlattening().has_value()); + EXPECT_FALSE(ellipsoid->semiMinorAxis().has_value()); + EXPECT_FALSE(ellipsoid->semiMedianAxis().has_value()); + EXPECT_TRUE(ellipsoid->isSphere()); + EXPECT_EQ(ellipsoid->semiMajorAxis(), Length(6378137)); + EXPECT_EQ(ellipsoid->celestialBody(), "Earth"); + + EXPECT_EQ(ellipsoid->computeSemiMinorAxis(), Length(6378137)); + EXPECT_EQ(ellipsoid->computedInverseFlattening(), 0); + + EXPECT_EQ( + ellipsoid->exportToPROJString(PROJStringFormatter::create().get()), + "+R=6378137"); + + EXPECT_TRUE(ellipsoid->isEquivalentTo(ellipsoid.get())); + EXPECT_FALSE(ellipsoid->isEquivalentTo(createUnrelatedObject().get())); +} + +// --------------------------------------------------------------------------- + +TEST(datum, ellipsoid_non_earth) { + + auto ellipsoid = + Ellipsoid::createSphere(PropertyMap(), Length(1), "Unity sphere"); + EXPECT_EQ(ellipsoid->celestialBody(), "Unity sphere"); +} + +// --------------------------------------------------------------------------- + +TEST(datum, ellipsoid_from_inverse_flattening) { + + auto ellipsoid = Ellipsoid::createFlattenedSphere( + PropertyMap(), Length(6378137), Scale(298.257223563)); + EXPECT_TRUE(ellipsoid->inverseFlattening().has_value()); + EXPECT_FALSE(ellipsoid->semiMinorAxis().has_value()); + EXPECT_FALSE(ellipsoid->semiMedianAxis().has_value()); + EXPECT_FALSE(ellipsoid->isSphere()); + EXPECT_EQ(ellipsoid->semiMajorAxis(), Length(6378137)); + EXPECT_EQ(*ellipsoid->inverseFlattening(), Scale(298.257223563)); + + EXPECT_EQ(ellipsoid->computeSemiMinorAxis().unit(), + ellipsoid->semiMajorAxis().unit()); + EXPECT_NEAR(ellipsoid->computeSemiMinorAxis().value(), + Length(6356752.31424518).value(), 1e-9); + EXPECT_EQ(ellipsoid->computedInverseFlattening(), 298.257223563); + + EXPECT_EQ( + ellipsoid->exportToPROJString(PROJStringFormatter::create().get()), + "+ellps=WGS84"); + + EXPECT_TRUE(ellipsoid->isEquivalentTo(ellipsoid.get())); + EXPECT_FALSE(ellipsoid->isEquivalentTo( + Ellipsoid::createTwoAxis(PropertyMap(), Length(6378137), + Length(6356752.31424518)) + .get())); + EXPECT_TRUE(ellipsoid->isEquivalentTo( + Ellipsoid::createTwoAxis(PropertyMap(), Length(6378137), + Length(6356752.31424518)) + .get(), + IComparable::Criterion::EQUIVALENT)); + + EXPECT_FALSE(Ellipsoid::WGS84->isEquivalentTo( + Ellipsoid::GRS1980.get(), IComparable::Criterion::EQUIVALENT)); +} + +// --------------------------------------------------------------------------- + +TEST(datum, ellipsoid_from_semi_minor_axis) { + + auto ellipsoid = Ellipsoid::createTwoAxis(PropertyMap(), Length(6378137), + Length(6356752.31424518)); + EXPECT_FALSE(ellipsoid->inverseFlattening().has_value()); + EXPECT_TRUE(ellipsoid->semiMinorAxis().has_value()); + EXPECT_FALSE(ellipsoid->semiMedianAxis().has_value()); + EXPECT_FALSE(ellipsoid->isSphere()); + EXPECT_EQ(ellipsoid->semiMajorAxis(), Length(6378137)); + EXPECT_EQ(*ellipsoid->semiMinorAxis(), Length(6356752.31424518)); + + EXPECT_EQ(ellipsoid->computeSemiMinorAxis(), Length(6356752.31424518)); + EXPECT_NEAR(ellipsoid->computedInverseFlattening(), 298.257223563, 1e-10); + + EXPECT_EQ( + ellipsoid->exportToPROJString(PROJStringFormatter::create().get()), + "+ellps=WGS84"); + + EXPECT_TRUE(ellipsoid->isEquivalentTo(ellipsoid.get())); + EXPECT_FALSE(ellipsoid->isEquivalentTo( + Ellipsoid::createFlattenedSphere(PropertyMap(), Length(6378137), + Scale(298.257223563)) + .get())); + EXPECT_TRUE(ellipsoid->isEquivalentTo( + Ellipsoid::createFlattenedSphere(PropertyMap(), Length(6378137), + Scale(298.257223563)) + .get(), + IComparable::Criterion::EQUIVALENT)); +} + +// --------------------------------------------------------------------------- + +TEST(datum, prime_meridian_to_PROJString) { + + EXPECT_EQ(PrimeMeridian::GREENWICH->exportToPROJString( + PROJStringFormatter::create().get()), + ""); + + EXPECT_EQ(PrimeMeridian::PARIS->exportToPROJString( + PROJStringFormatter::create().get()), + "+pm=paris"); + + EXPECT_EQ(PrimeMeridian::create(PropertyMap(), Angle(3.5)) + ->exportToPROJString(PROJStringFormatter::create().get()), + "+pm=3.5"); + + EXPECT_EQ( + PrimeMeridian::create(PropertyMap(), Angle(100, UnitOfMeasure::GRAD)) + ->exportToPROJString(PROJStringFormatter::create().get()), + "+pm=90"); + + EXPECT_EQ( + PrimeMeridian::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Origin meridian"), + Angle(0)) + ->exportToPROJString(PROJStringFormatter::create().get()), + ""); + + EXPECT_TRUE(PrimeMeridian::GREENWICH->isEquivalentTo( + PrimeMeridian::GREENWICH.get())); + EXPECT_FALSE(PrimeMeridian::GREENWICH->isEquivalentTo( + createUnrelatedObject().get())); +} + +// --------------------------------------------------------------------------- + +TEST(datum, datum_with_ANCHOR) { + auto datum = GeodeticReferenceFrame::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "WGS_1984 with anchor"), + Ellipsoid::WGS84, optional<std::string>("My anchor"), + PrimeMeridian::GREENWICH); + + auto expected = "DATUM[\"WGS_1984 with anchor\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",7030]],\n" + " ANCHOR[\"My anchor\"]]"; + + EXPECT_EQ(datum->exportToWKT(WKTFormatter::create().get()), expected); +} + +// --------------------------------------------------------------------------- + +TEST(datum, dynamic_geodetic_reference_frame) { + auto drf = DynamicGeodeticReferenceFrame::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "test"), Ellipsoid::WGS84, + optional<std::string>("My anchor"), PrimeMeridian::GREENWICH, + Measure(2018.5, UnitOfMeasure::YEAR), + optional<std::string>("My model")); + + auto expected = "DATUM[\"test\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",7030]],\n" + " ANCHOR[\"My anchor\"]]"; + + EXPECT_EQ(drf->exportToWKT(WKTFormatter::create().get()), expected); + + auto expected_wtk2_2018 = + "DYNAMIC[\n" + " FRAMEEPOCH[2018.5],\n" + " MODEL[\"My model\"]],\n" + "DATUM[\"test\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",7030]],\n" + " ANCHOR[\"My anchor\"]]"; + EXPECT_EQ( + drf->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + expected_wtk2_2018); +} + +// --------------------------------------------------------------------------- + +TEST(datum, ellipsoid_to_PROJString) { + + EXPECT_EQ(Ellipsoid::WGS84->exportToPROJString( + PROJStringFormatter::create().get()), + "+ellps=WGS84"); + + EXPECT_EQ(Ellipsoid::GRS1980->exportToPROJString( + PROJStringFormatter::create().get()), + "+ellps=GRS80"); + + EXPECT_EQ( + Ellipsoid::createFlattenedSphere( + PropertyMap(), Length(10, UnitOfMeasure("km", 1000)), Scale(0.5)) + ->exportToPROJString(PROJStringFormatter::create().get()), + "+a=10000 +rf=0.5"); + + EXPECT_EQ(Ellipsoid::createTwoAxis(PropertyMap(), + Length(10, UnitOfMeasure("km", 1000)), + Length(5, UnitOfMeasure("km", 1000))) + ->exportToPROJString(PROJStringFormatter::create().get()), + "+a=10000 +b=5000"); +} + +// --------------------------------------------------------------------------- + +TEST(datum, temporal_datum_WKT2) { + auto datum = TemporalDatum::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Gregorian calendar"), + DateTime::create("0000-01-01"), + TemporalDatum::CALENDAR_PROLEPTIC_GREGORIAN); + + auto expected = "TDATUM[\"Gregorian calendar\",\n" + " TIMEORIGIN[0000-01-01]]"; + + EXPECT_EQ(datum->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2).get()), + expected); + + EXPECT_THROW( + datum->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + FormattingException); + + EXPECT_TRUE(datum->isEquivalentTo(datum.get())); + EXPECT_FALSE(datum->isEquivalentTo(createUnrelatedObject().get())); +} + +// --------------------------------------------------------------------------- + +TEST(datum, temporal_datum_time_origin_non_ISO8601) { + auto datum = TemporalDatum::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Gregorian calendar"), + DateTime::create("0001 January 1st"), + TemporalDatum::CALENDAR_PROLEPTIC_GREGORIAN); + + auto expected = "TDATUM[\"Gregorian calendar\",\n" + " TIMEORIGIN[\"0001 January 1st\"]]"; + + EXPECT_EQ(datum->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2).get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(datum, temporal_datum_WKT2_2018) { + auto datum = TemporalDatum::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Gregorian calendar"), + DateTime::create("0000-01-01"), + TemporalDatum::CALENDAR_PROLEPTIC_GREGORIAN); + + auto expected = "TDATUM[\"Gregorian calendar\",\n" + " CALENDAR[\"proleptic Gregorian\"],\n" + " TIMEORIGIN[0000-01-01]]"; + + EXPECT_EQ( + datum->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(datum, dynamic_vertical_reference_frame) { + auto drf = DynamicVerticalReferenceFrame::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "test"), + optional<std::string>("My anchor"), optional<RealizationMethod>(), + Measure(2018.5, UnitOfMeasure::YEAR), + optional<std::string>("My model")); + + auto expected = "VDATUM[\"test\",\n" + " ANCHOR[\"My anchor\"]]"; + + EXPECT_EQ(drf->exportToWKT(WKTFormatter::create().get()), expected); + + auto expected_wtk2_2018 = "DYNAMIC[\n" + " FRAMEEPOCH[2018.5],\n" + " MODEL[\"My model\"]],\n" + "VDATUM[\"test\",\n" + " ANCHOR[\"My anchor\"]]"; + EXPECT_EQ( + drf->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + expected_wtk2_2018); +} + +// --------------------------------------------------------------------------- + +TEST(datum, datum_ensemble) { + auto otherDatum = GeodeticReferenceFrame::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "other datum"), + Ellipsoid::WGS84, optional<std::string>(), PrimeMeridian::GREENWICH); + auto ensemble = DatumEnsemble::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "test"), + std::vector<DatumNNPtr>{GeodeticReferenceFrame::EPSG_6326, otherDatum}, + PositionalAccuracy::create("100")); + EXPECT_EQ(ensemble->datums().size(), 2); + EXPECT_EQ(ensemble->positionalAccuracy()->value(), "100"); + EXPECT_THROW(ensemble->exportToWKT(WKTFormatter::create().get()), + FormattingException); + EXPECT_EQ( + ensemble->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + "ENSEMBLE[\"test\",\n" + " MEMBER[\"World Geodetic System 1984\",\n" + " ID[\"EPSG\",6326]],\n" + " MEMBER[\"other datum\"],\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",7030]],\n" + " ENSEMBLEACCURACY[100]]"); +} + +// --------------------------------------------------------------------------- + +TEST(datum, datum_ensemble_vertical) { + auto ensemble = DatumEnsemble::create( + PropertyMap(), + std::vector<DatumNNPtr>{ + VerticalReferenceFrame::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "vdatum1")), + VerticalReferenceFrame::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "vdatum2"))}, + PositionalAccuracy::create("100")); + EXPECT_EQ( + ensemble->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + "ENSEMBLE[\"unnamed\",\n" + " MEMBER[\"vdatum1\"],\n" + " MEMBER[\"vdatum2\"],\n" + " ENSEMBLEACCURACY[100]]"); +} + +// --------------------------------------------------------------------------- + +TEST(datum, datum_ensemble_exceptions) { + // No datum + EXPECT_THROW(DatumEnsemble::create(PropertyMap(), std::vector<DatumNNPtr>{}, + PositionalAccuracy::create("100")), + Exception); + + // Single datum + EXPECT_THROW(DatumEnsemble::create( + PropertyMap(), + std::vector<DatumNNPtr>{GeodeticReferenceFrame::EPSG_6326}, + PositionalAccuracy::create("100")), + Exception); + + auto vdatum = VerticalReferenceFrame::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "vdatum1")); + + // Different datum type + EXPECT_THROW( + DatumEnsemble::create( + PropertyMap(), + std::vector<DatumNNPtr>{GeodeticReferenceFrame::EPSG_6326, vdatum}, + PositionalAccuracy::create("100")), + Exception); + + // Different datum type + EXPECT_THROW( + DatumEnsemble::create( + PropertyMap(), + std::vector<DatumNNPtr>{vdatum, GeodeticReferenceFrame::EPSG_6326}, + PositionalAccuracy::create("100")), + Exception); + + // Different ellipsoid + EXPECT_THROW(DatumEnsemble::create( + PropertyMap(), + std::vector<DatumNNPtr>{GeodeticReferenceFrame::EPSG_6326, + GeodeticReferenceFrame::EPSG_6267}, + PositionalAccuracy::create("100")), + Exception); + + // Different prime meridian + EXPECT_THROW(DatumEnsemble::create( + PropertyMap(), + std::vector<DatumNNPtr>{ + GeodeticReferenceFrame::EPSG_6326, + GeodeticReferenceFrame::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, + "other datum"), + Ellipsoid::WGS84, optional<std::string>(), + PrimeMeridian::PARIS)}, + PositionalAccuracy::create("100")), + Exception); +} + +// --------------------------------------------------------------------------- + +TEST(datum, edatum) { + auto datum = EngineeringDatum::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Engineering datum"), + optional<std::string>("my anchor")); + + auto expected = "EDATUM[\"Engineering datum\",\n" + " ANCHOR[\"my anchor\"]]"; + + EXPECT_EQ(datum->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2).get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(datum, pdatum) { + auto datum = ParametricDatum::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Parametric datum"), + optional<std::string>("my anchor")); + + auto expected = "PDATUM[\"Parametric datum\",\n" + " ANCHOR[\"my anchor\"]]"; + + EXPECT_EQ(datum->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2).get()), + expected); +} diff --git a/test/unit/test_factory.cpp b/test/unit/test_factory.cpp new file mode 100644 index 00000000..739bb729 --- /dev/null +++ b/test/unit/test_factory.cpp @@ -0,0 +1,2732 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: Test ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#include "gtest_include.h" + +#include "proj/common.hpp" +#include "proj/coordinateoperation.hpp" +#include "proj/coordinatesystem.hpp" +#include "proj/crs.hpp" +#include "proj/datum.hpp" +#include "proj/io.hpp" +#include "proj/metadata.hpp" +#include "proj/util.hpp" + +#include <sqlite3.h> + +#ifdef _MSC_VER +#include <stdio.h> +#else +#include <unistd.h> +#endif + +//#undef SQLITE_OPEN_URI + +using namespace osgeo::proj::common; +using namespace osgeo::proj::crs; +using namespace osgeo::proj::cs; +using namespace osgeo::proj::datum; +using namespace osgeo::proj::io; +using namespace osgeo::proj::metadata; +using namespace osgeo::proj::operation; +using namespace osgeo::proj::util; + +namespace { + +// --------------------------------------------------------------------------- + +TEST(factory, databasecontext_create) { + DatabaseContext::create(); +#ifndef _WIN32 + // For some reason, no exception is thrown on AppVeyor Windows + EXPECT_THROW(DatabaseContext::create("/i/dont/exist"), FactoryException); +#endif +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createObject) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->createObject("-1"), NoSuchAuthorityCodeException); + EXPECT_THROW(factory->createObject("4326"), + FactoryException); // area and crs +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createUnitOfMeasure_linear) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->createUnitOfMeasure("-1"), + NoSuchAuthorityCodeException); + EXPECT_TRUE(nn_dynamic_pointer_cast<UnitOfMeasure>( + factory->createObject("9001")) != nullptr); + auto uom = factory->createUnitOfMeasure("9001"); + EXPECT_EQ(uom->name(), "metre"); + EXPECT_EQ(uom->type(), UnitOfMeasure::Type::LINEAR); + EXPECT_EQ(uom->conversionToSI(), 1.0); + EXPECT_EQ(uom->codeSpace(), "EPSG"); + EXPECT_EQ(uom->code(), "9001"); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createUnitOfMeasure_angular) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto uom = factory->createUnitOfMeasure("9102"); + EXPECT_EQ(uom->name(), "degree"); + EXPECT_EQ(uom->type(), UnitOfMeasure::Type::ANGULAR); + EXPECT_EQ(uom->conversionToSI(), UnitOfMeasure::DEGREE.conversionToSI()); + EXPECT_EQ(uom->codeSpace(), "EPSG"); + EXPECT_EQ(uom->code(), "9102"); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createUnitOfMeasure_angular_9107) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto uom = factory->createUnitOfMeasure("9107"); + EXPECT_EQ(uom->name(), "degree minute second"); + EXPECT_EQ(uom->type(), UnitOfMeasure::Type::ANGULAR); + EXPECT_EQ(uom->conversionToSI(), UnitOfMeasure::DEGREE.conversionToSI()); + EXPECT_EQ(uom->codeSpace(), "EPSG"); + EXPECT_EQ(uom->code(), "9107"); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createUnitOfMeasure_scale) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto uom = factory->createUnitOfMeasure("1028"); + EXPECT_EQ(uom->name(), "parts per billion"); + EXPECT_EQ(uom->type(), UnitOfMeasure::Type::SCALE); + EXPECT_EQ(uom->conversionToSI(), 1e-9); + EXPECT_EQ(uom->codeSpace(), "EPSG"); + EXPECT_EQ(uom->code(), "1028"); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createUnitOfMeasure_time) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto uom = factory->createUnitOfMeasure("1029"); + EXPECT_EQ(uom->name(), "year"); + EXPECT_EQ(uom->type(), UnitOfMeasure::Type::TIME); + EXPECT_EQ(uom->conversionToSI(), 31556925.445); + EXPECT_EQ(uom->codeSpace(), "EPSG"); + EXPECT_EQ(uom->code(), "1029"); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createPrimeMeridian) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->createPrimeMeridian("-1"), + NoSuchAuthorityCodeException); + EXPECT_TRUE(nn_dynamic_pointer_cast<PrimeMeridian>( + factory->createObject("8903")) != nullptr); + auto pm = factory->createPrimeMeridian("8903"); + ASSERT_EQ(pm->identifiers().size(), 1); + EXPECT_EQ(pm->identifiers()[0]->code(), "8903"); + EXPECT_EQ(*(pm->identifiers()[0]->codeSpace()), "EPSG"); + EXPECT_EQ(*(pm->name()->description()), "Paris"); + EXPECT_EQ(pm->longitude(), Angle(2.5969213, UnitOfMeasure::GRAD)); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_identifyBodyFromSemiMajorAxis) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_EQ(factory->identifyBodyFromSemiMajorAxis(6378137, 1e-5), "Earth"); + EXPECT_THROW(factory->identifyBodyFromSemiMajorAxis(1, 1e-5), + FactoryException); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createEllipsoid) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->createEllipsoid("-1"), NoSuchAuthorityCodeException); + EXPECT_TRUE(nn_dynamic_pointer_cast<Ellipsoid>( + factory->createObject("7030")) != nullptr); + auto ellipsoid = factory->createEllipsoid("7030"); + ASSERT_EQ(ellipsoid->identifiers().size(), 1); + EXPECT_EQ(ellipsoid->identifiers()[0]->code(), "7030"); + EXPECT_EQ(*(ellipsoid->identifiers()[0]->codeSpace()), "EPSG"); + EXPECT_EQ(*(ellipsoid->name()->description()), "WGS 84"); + EXPECT_TRUE(ellipsoid->inverseFlattening().has_value()); + EXPECT_EQ(ellipsoid->semiMajorAxis(), Length(6378137)); + EXPECT_EQ(*ellipsoid->inverseFlattening(), Scale(298.257223563)); + EXPECT_EQ(ellipsoid->celestialBody(), "Earth"); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createEllipsoid_sphere) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ellipsoid = factory->createEllipsoid("7035"); + EXPECT_TRUE(ellipsoid->isSphere()); + EXPECT_EQ(ellipsoid->semiMajorAxis(), Length(6371000)); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createEllipsoid_with_semi_minor_axis) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ellipsoid = factory->createEllipsoid("7011"); + EXPECT_TRUE(ellipsoid->semiMinorAxis().has_value()); + EXPECT_EQ(ellipsoid->semiMajorAxis(), Length(6378249.2)); + EXPECT_EQ(*ellipsoid->semiMinorAxis(), Length(6356515.0)); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createExtent) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->createExtent("-1"), NoSuchAuthorityCodeException); + auto extent = factory->createExtent("1262"); + EXPECT_EQ(*(extent->description()), "World"); + const auto &geogElts = extent->geographicElements(); + ASSERT_EQ(geogElts.size(), 1); + auto bbox = nn_dynamic_pointer_cast<GeographicBoundingBox>(geogElts[0]); + ASSERT_TRUE(bbox != nullptr); + EXPECT_EQ(bbox->westBoundLongitude(), -180); + EXPECT_EQ(bbox->eastBoundLongitude(), 180); + EXPECT_EQ(bbox->northBoundLatitude(), 90); + EXPECT_EQ(bbox->southBoundLatitude(), -90); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createGeodeticDatum) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->createGeodeticDatum("-1"), + NoSuchAuthorityCodeException); + auto grf = factory->createGeodeticDatum("6326"); + ASSERT_EQ(grf->identifiers().size(), 1); + EXPECT_EQ(grf->identifiers()[0]->code(), "6326"); + EXPECT_EQ(*(grf->identifiers()[0]->codeSpace()), "EPSG"); + EXPECT_EQ(*(grf->name()->description()), "World Geodetic System 1984"); + EXPECT_TRUE(grf->ellipsoid()->isEquivalentTo( + factory->createEllipsoid("7030").get())); + EXPECT_TRUE(grf->primeMeridian()->isEquivalentTo( + factory->createPrimeMeridian("8901").get())); + ASSERT_EQ(grf->domains().size(), 1); + auto domain = grf->domains()[0]; + auto extent = domain->domainOfValidity(); + ASSERT_TRUE(extent != nullptr); + EXPECT_TRUE(extent->isEquivalentTo(factory->createExtent("1262").get())); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createVerticalDatum) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->createVerticalDatum("-1"), + NoSuchAuthorityCodeException); + auto vrf = factory->createVerticalDatum("1027"); + ASSERT_EQ(vrf->identifiers().size(), 1); + EXPECT_EQ(vrf->identifiers()[0]->code(), "1027"); + EXPECT_EQ(*(vrf->identifiers()[0]->codeSpace()), "EPSG"); + EXPECT_EQ(*(vrf->name()->description()), "EGM2008 geoid"); + auto domain = vrf->domains()[0]; + auto extent = domain->domainOfValidity(); + ASSERT_TRUE(extent != nullptr); + EXPECT_TRUE(extent->isEquivalentTo(factory->createExtent("1262").get())); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createDatum) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->createDatum("-1"), NoSuchAuthorityCodeException); + EXPECT_TRUE(factory->createDatum("6326")->isEquivalentTo( + factory->createGeodeticDatum("6326").get())); + EXPECT_TRUE(factory->createDatum("1027")->isEquivalentTo( + factory->createVerticalDatum("1027").get())); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createCoordinateSystem_ellipsoidal_2_axis) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->createCoordinateSystem("-1"), + NoSuchAuthorityCodeException); + auto cs = factory->createCoordinateSystem("6422"); + auto ellipsoidal_cs = nn_dynamic_pointer_cast<EllipsoidalCS>(cs); + ASSERT_TRUE(ellipsoidal_cs != nullptr); + + ASSERT_EQ(ellipsoidal_cs->identifiers().size(), 1); + EXPECT_EQ(ellipsoidal_cs->identifiers()[0]->code(), "6422"); + EXPECT_EQ(*(ellipsoidal_cs->identifiers()[0]->codeSpace()), "EPSG"); + + const auto &axisList = ellipsoidal_cs->axisList(); + EXPECT_EQ(axisList.size(), 2); + + EXPECT_EQ(*(axisList[0]->name()->description()), "Geodetic latitude"); + EXPECT_EQ(axisList[0]->abbreviation(), "Lat"); + EXPECT_EQ(axisList[0]->direction(), AxisDirection::NORTH); + EXPECT_EQ(axisList[0]->unit(), UnitOfMeasure::DEGREE); + + EXPECT_EQ(*(axisList[1]->name()->description()), "Geodetic longitude"); + EXPECT_EQ(axisList[1]->abbreviation(), "Lon"); + EXPECT_EQ(axisList[1]->direction(), AxisDirection::EAST); + EXPECT_EQ(axisList[1]->unit(), UnitOfMeasure::DEGREE); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createCoordinateSystem_ellipsoidal_3_axis) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + + auto cs = factory->createCoordinateSystem("6423"); + auto ellipsoidal_cs = nn_dynamic_pointer_cast<EllipsoidalCS>(cs); + ASSERT_TRUE(ellipsoidal_cs != nullptr); + + ASSERT_EQ(ellipsoidal_cs->identifiers().size(), 1); + EXPECT_EQ(ellipsoidal_cs->identifiers()[0]->code(), "6423"); + EXPECT_EQ(*(ellipsoidal_cs->identifiers()[0]->codeSpace()), "EPSG"); + + const auto &axisList = ellipsoidal_cs->axisList(); + EXPECT_EQ(axisList.size(), 3); + + EXPECT_EQ(*(axisList[0]->name()->description()), "Geodetic latitude"); + EXPECT_EQ(axisList[0]->abbreviation(), "Lat"); + EXPECT_EQ(axisList[0]->direction(), AxisDirection::NORTH); + EXPECT_EQ(axisList[0]->unit(), UnitOfMeasure::DEGREE); + + EXPECT_EQ(*(axisList[1]->name()->description()), "Geodetic longitude"); + EXPECT_EQ(axisList[1]->abbreviation(), "Lon"); + EXPECT_EQ(axisList[1]->direction(), AxisDirection::EAST); + EXPECT_EQ(axisList[1]->unit(), UnitOfMeasure::DEGREE); + + EXPECT_EQ(*(axisList[2]->name()->description()), "Ellipsoidal height"); + EXPECT_EQ(axisList[2]->abbreviation(), "h"); + EXPECT_EQ(axisList[2]->direction(), AxisDirection::UP); + EXPECT_EQ(axisList[2]->unit(), UnitOfMeasure::METRE); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createCoordinateSystem_geocentric) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + + auto cs = factory->createCoordinateSystem("6500"); + auto cartesian_cs = nn_dynamic_pointer_cast<CartesianCS>(cs); + ASSERT_TRUE(cartesian_cs != nullptr); + + ASSERT_EQ(cartesian_cs->identifiers().size(), 1); + EXPECT_EQ(cartesian_cs->identifiers()[0]->code(), "6500"); + EXPECT_EQ(*(cartesian_cs->identifiers()[0]->codeSpace()), "EPSG"); + + const auto &axisList = cartesian_cs->axisList(); + EXPECT_EQ(axisList.size(), 3); + + EXPECT_EQ(*(axisList[0]->name()->description()), "Geocentric X"); + EXPECT_EQ(axisList[0]->abbreviation(), "X"); + EXPECT_EQ(axisList[0]->direction(), AxisDirection::GEOCENTRIC_X); + EXPECT_EQ(axisList[0]->unit(), UnitOfMeasure::METRE); + + EXPECT_EQ(*(axisList[1]->name()->description()), "Geocentric Y"); + EXPECT_EQ(axisList[1]->abbreviation(), "Y"); + EXPECT_EQ(axisList[1]->direction(), AxisDirection::GEOCENTRIC_Y); + EXPECT_EQ(axisList[1]->unit(), UnitOfMeasure::METRE); + + EXPECT_EQ(*(axisList[2]->name()->description()), "Geocentric Z"); + EXPECT_EQ(axisList[2]->abbreviation(), "Z"); + EXPECT_EQ(axisList[2]->direction(), AxisDirection::GEOCENTRIC_Z); + EXPECT_EQ(axisList[2]->unit(), UnitOfMeasure::METRE); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createCoordinateSystem_vertical) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->createCoordinateSystem("-1"), + NoSuchAuthorityCodeException); + + auto cs = factory->createCoordinateSystem("6499"); + auto vertical_cs = nn_dynamic_pointer_cast<VerticalCS>(cs); + ASSERT_TRUE(vertical_cs != nullptr); + + ASSERT_EQ(vertical_cs->identifiers().size(), 1); + EXPECT_EQ(vertical_cs->identifiers()[0]->code(), "6499"); + EXPECT_EQ(*(vertical_cs->identifiers()[0]->codeSpace()), "EPSG"); + + const auto &axisList = vertical_cs->axisList(); + EXPECT_EQ(axisList.size(), 1); + + EXPECT_EQ(*(axisList[0]->name()->description()), "Gravity-related height"); + EXPECT_EQ(axisList[0]->abbreviation(), "H"); + EXPECT_EQ(axisList[0]->direction(), AxisDirection::UP); + EXPECT_EQ(axisList[0]->unit(), UnitOfMeasure::METRE); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createGeodeticCRS_geographic2D) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->createGeodeticCRS("-1"), + NoSuchAuthorityCodeException); + auto crs = factory->createGeodeticCRS("4326"); + auto gcrs = nn_dynamic_pointer_cast<GeographicCRS>(crs); + ASSERT_TRUE(gcrs != nullptr); + ASSERT_EQ(gcrs->identifiers().size(), 1); + EXPECT_EQ(gcrs->identifiers()[0]->code(), "4326"); + EXPECT_EQ(*(gcrs->identifiers()[0]->codeSpace()), "EPSG"); + EXPECT_EQ(*(gcrs->name()->description()), "WGS 84"); + EXPECT_TRUE( + gcrs->datum()->isEquivalentTo(factory->createDatum("6326").get())); + EXPECT_TRUE(gcrs->coordinateSystem()->isEquivalentTo( + factory->createCoordinateSystem("6422").get())); + auto domain = crs->domains()[0]; + auto extent = domain->domainOfValidity(); + ASSERT_TRUE(extent != nullptr); + EXPECT_TRUE(extent->isEquivalentTo(factory->createExtent("1262").get())); + + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=longlat +ellps=WGS84 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap " + "+order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createGeodeticCRS_geographic3D) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto crs = factory->createGeodeticCRS("4979"); + auto gcrs = nn_dynamic_pointer_cast<GeographicCRS>(crs); + ASSERT_TRUE(gcrs != nullptr); + ASSERT_EQ(gcrs->identifiers().size(), 1); + EXPECT_EQ(gcrs->identifiers()[0]->code(), "4979"); + EXPECT_EQ(*(gcrs->identifiers()[0]->codeSpace()), "EPSG"); + EXPECT_EQ(*(gcrs->name()->description()), "WGS 84"); + EXPECT_TRUE( + gcrs->datum()->isEquivalentTo(factory->createDatum("6326").get())); + EXPECT_TRUE(gcrs->coordinateSystem()->isEquivalentTo( + factory->createCoordinateSystem("6423").get())); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createGeodeticCRS_geocentric) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto crs = factory->createGeodeticCRS("4978"); + ASSERT_TRUE(nn_dynamic_pointer_cast<GeographicCRS>(crs) == nullptr); + ASSERT_EQ(crs->identifiers().size(), 1); + EXPECT_EQ(crs->identifiers()[0]->code(), "4978"); + EXPECT_EQ(*(crs->identifiers()[0]->codeSpace()), "EPSG"); + EXPECT_EQ(*(crs->name()->description()), "WGS 84"); + EXPECT_TRUE( + crs->datum()->isEquivalentTo(factory->createDatum("6326").get())); + EXPECT_TRUE(crs->coordinateSystem()->isEquivalentTo( + factory->createCoordinateSystem("6500").get())); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createVerticalCRS) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->createVerticalCRS("-1"), + NoSuchAuthorityCodeException); + + auto crs = factory->createVerticalCRS("3855"); + ASSERT_EQ(crs->identifiers().size(), 1); + EXPECT_EQ(crs->identifiers()[0]->code(), "3855"); + EXPECT_EQ(*(crs->identifiers()[0]->codeSpace()), "EPSG"); + EXPECT_EQ(*(crs->name()->description()), "EGM2008 height"); + EXPECT_TRUE( + crs->datum()->isEquivalentTo(factory->createDatum("1027").get())); + EXPECT_TRUE(crs->coordinateSystem()->isEquivalentTo( + factory->createCoordinateSystem("6499").get())); + + auto domain = crs->domains()[0]; + auto extent = domain->domainOfValidity(); + ASSERT_TRUE(extent != nullptr); + EXPECT_TRUE(extent->isEquivalentTo(factory->createExtent("1262").get())); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createConversion) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->createConversion("-1"), NoSuchAuthorityCodeException); + + auto conv = factory->createConversion("16031"); + ASSERT_EQ(conv->identifiers().size(), 1); + EXPECT_EQ(conv->identifiers()[0]->code(), "16031"); + EXPECT_EQ(*(conv->identifiers()[0]->codeSpace()), "EPSG"); + EXPECT_EQ(*(conv->name()->description()), "UTM zone 31N"); + + auto method = conv->method(); + ASSERT_EQ(method->identifiers().size(), 1); + EXPECT_EQ(method->identifiers()[0]->code(), "9807"); + EXPECT_EQ(*(method->identifiers()[0]->codeSpace()), "EPSG"); + EXPECT_EQ(*(method->name()->description()), "Transverse Mercator"); + + const auto &values = conv->parameterValues(); + ASSERT_EQ(values.size(), 5); + { + const auto &opParamvalue = + nn_dynamic_pointer_cast<OperationParameterValue>(values[0]); + ASSERT_TRUE(opParamvalue); + const auto ¶mName = + *(opParamvalue->parameter()->name()->description()); + const auto ¶meterValue = opParamvalue->parameterValue(); + EXPECT_TRUE(opParamvalue->parameter()->getEPSGCode() == 8801); + EXPECT_EQ(paramName, "Latitude of natural origin"); + EXPECT_EQ(parameterValue->type(), ParameterValue::Type::MEASURE); + auto measure = parameterValue->value(); + EXPECT_EQ(measure.unit(), UnitOfMeasure::DEGREE); + EXPECT_EQ(measure.value(), 0.0); + } + { + const auto &opParamvalue = + nn_dynamic_pointer_cast<OperationParameterValue>(values[1]); + ASSERT_TRUE(opParamvalue); + const auto ¶mName = + *(opParamvalue->parameter()->name()->description()); + const auto ¶meterValue = opParamvalue->parameterValue(); + EXPECT_TRUE(opParamvalue->parameter()->getEPSGCode() == 8802); + EXPECT_EQ(paramName, "Longitude of natural origin"); + EXPECT_EQ(parameterValue->type(), ParameterValue::Type::MEASURE); + auto measure = parameterValue->value(); + EXPECT_EQ(measure.unit(), UnitOfMeasure::DEGREE); + EXPECT_EQ(measure.value(), 3.0); + } +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createProjectedCRS) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->createProjectedCRS("-1"), + NoSuchAuthorityCodeException); + + auto crs = factory->createProjectedCRS("32631"); + ASSERT_EQ(crs->identifiers().size(), 1); + EXPECT_EQ(crs->identifiers()[0]->code(), "32631"); + EXPECT_EQ(*(crs->identifiers()[0]->codeSpace()), "EPSG"); + EXPECT_EQ(*(crs->name()->description()), "WGS 84 / UTM zone 31N"); + EXPECT_TRUE(crs->baseCRS()->isEquivalentTo( + factory->createGeodeticCRS("4326").get())); + EXPECT_TRUE(crs->coordinateSystem()->isEquivalentTo( + factory->createCoordinateSystem("4400").get())); + EXPECT_TRUE(crs->derivingConversion()->isEquivalentTo( + factory->createConversion("16031").get())); + + auto domain = crs->domains()[0]; + auto extent = domain->domainOfValidity(); + ASSERT_TRUE(extent != nullptr); + EXPECT_TRUE(extent->isEquivalentTo(factory->createExtent("2060").get())); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createProjectedCRS_south_pole) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->createProjectedCRS("-1"), + NoSuchAuthorityCodeException); + + auto crs = factory->createProjectedCRS("32761"); + auto csList = crs->coordinateSystem()->axisList(); + ASSERT_EQ(csList.size(), 2); + EXPECT_TRUE(csList[0]->meridian() != nullptr); + EXPECT_EQ(csList[0]->direction(), AxisDirection::NORTH); + EXPECT_EQ( + csList[0]->meridian()->longitude().convertToUnit(UnitOfMeasure::DEGREE), + 0); + EXPECT_EQ(csList[1]->direction(), AxisDirection::NORTH); + EXPECT_EQ( + csList[1]->meridian()->longitude().convertToUnit(UnitOfMeasure::DEGREE), + 90); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createProjectedCRS_north_pole) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + + auto crs = factory->createProjectedCRS("32661"); + auto csList = crs->coordinateSystem()->axisList(); + ASSERT_EQ(csList.size(), 2); + EXPECT_TRUE(csList[0]->meridian() != nullptr); + EXPECT_EQ(csList[0]->direction(), AxisDirection::SOUTH); + EXPECT_EQ( + csList[0]->meridian()->longitude().convertToUnit(UnitOfMeasure::DEGREE), + 180); + EXPECT_EQ(csList[1]->direction(), AxisDirection::SOUTH); + EXPECT_EQ( + csList[1]->meridian()->longitude().convertToUnit(UnitOfMeasure::DEGREE), + 90); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createCompoundCRS) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->createCompoundCRS("-1"), + NoSuchAuthorityCodeException); + + auto crs = factory->createCompoundCRS("6871"); + ASSERT_EQ(crs->identifiers().size(), 1); + EXPECT_EQ(crs->identifiers()[0]->code(), "6871"); + EXPECT_EQ(*(crs->identifiers()[0]->codeSpace()), "EPSG"); + EXPECT_EQ(*(crs->name()->description()), + "WGS 84 / Pseudo-Mercator + EGM2008 geoid height"); + + auto components = crs->componentReferenceSystems(); + ASSERT_EQ(components.size(), 2); + EXPECT_TRUE(components[0]->isEquivalentTo( + factory->createProjectedCRS("3857").get())); + EXPECT_TRUE(components[1]->isEquivalentTo( + factory->createVerticalCRS("3855").get())); + + auto domain = crs->domains()[0]; + auto extent = domain->domainOfValidity(); + ASSERT_TRUE(extent != nullptr); + EXPECT_TRUE(extent->isEquivalentTo(factory->createExtent("1262").get())); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createCoordinateReferenceSystem) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->createCoordinateReferenceSystem("-1"), + NoSuchAuthorityCodeException); + EXPECT_TRUE(nn_dynamic_pointer_cast<GeographicCRS>( + factory->createCoordinateReferenceSystem("4326"))); + EXPECT_TRUE(nn_dynamic_pointer_cast<GeographicCRS>( + factory->createCoordinateReferenceSystem("4979"))); + EXPECT_TRUE(nn_dynamic_pointer_cast<GeodeticCRS>( + factory->createCoordinateReferenceSystem("4978"))); + EXPECT_TRUE(nn_dynamic_pointer_cast<ProjectedCRS>( + factory->createCoordinateReferenceSystem("32631"))); + EXPECT_TRUE(nn_dynamic_pointer_cast<VerticalCRS>( + factory->createCoordinateReferenceSystem("3855"))); + EXPECT_TRUE(nn_dynamic_pointer_cast<CompoundCRS>( + factory->createCoordinateReferenceSystem("6871"))); +} +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createCoordinateOperation_helmert_3) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->createCoordinateOperation("-1", false), + NoSuchAuthorityCodeException); + auto op = factory->createCoordinateOperation("1113", false); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +inv " + "+proj=longlat +a=6378249.145 +rf=293.4663077 +step +proj=cart " + "+a=6378249.145 +rf=293.4663077 +step +proj=helmert +x=-143 " + "+y=-90 +z=-294 +step +inv +proj=cart +ellps=WGS84 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap " + "+order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createCoordinateOperation_helmert_7_CF) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto op = factory->createCoordinateOperation("7676", false); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart " + "+ellps=bessel +step +proj=helmert +x=577.88891 +y=165.22205 " + "+z=391.18289 +rx=-4.9145 +ry=0.94729 +rz=13.05098 +s=7.78664 " + "+convention=coordinate_frame +step +inv +proj=cart +ellps=WGS84 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg +step " + "+proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createCoordinateOperation_helmert_7_PV) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto op = factory->createCoordinateOperation("1074", false); + auto wkt = op->exportToPROJString(PROJStringFormatter::create().get()); + EXPECT_TRUE(wkt.find("+proj=helmert +x=-275.7224 +y=94.7824 +z=340.8944 " + "+rx=-8.001 +ry=-4.42 +rz=-11.821 +s=1 " + "+convention=position_vector") != std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createCoordinateOperation_helmert_8_CF) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto op = factory->createCoordinateOperation("7702", false); + auto expected = " PARAMETER[\"Transformation reference epoch\",2002,\n" + " TIMEUNIT[\"year\",31556925.445],\n" + " ID[\"EPSG\",1049]],\n"; + + auto wkt = op->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()); + EXPECT_TRUE(wkt.find(expected) != std::string::npos) << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createCoordinateOperation_helmert_15_CF) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto op = factory->createCoordinateOperation("6276", false); + auto expected = + "COORDINATEOPERATION[\"ITRF2008 to GDA94 (1)\",\n" + " SOURCECRS[\n" + " GEODCRS[\"ITRF2008\",\n" + " DATUM[\"International Terrestrial Reference Frame " + "2008\",\n" + " ELLIPSOID[\"GRS 1980\",6378137,298.257222101,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[Cartesian,3],\n" + " AXIS[\"(X)\",geocentricX,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"(Y)\",geocentricY,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"(Z)\",geocentricZ,\n" + " ORDER[3],\n" + " LENGTHUNIT[\"metre\",1]]]],\n" + " TARGETCRS[\n" + " GEODCRS[\"GDA94\",\n" + " DATUM[\"Geocentric Datum of Australia 1994\",\n" + " ELLIPSOID[\"GRS 1980\",6378137,298.257222101,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[Cartesian,3],\n" + " AXIS[\"(X)\",geocentricX,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"(Y)\",geocentricY,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"(Z)\",geocentricZ,\n" + " ORDER[3],\n" + " LENGTHUNIT[\"metre\",1]]]],\n" + " METHOD[\"Time-dependent Coordinate Frame rotation (geocen)\",\n" + " ID[\"EPSG\",1056]],\n" + " PARAMETER[\"X-axis translation\",-84.68,\n" + " LENGTHUNIT[\"millimetre\",0.001],\n" + " ID[\"EPSG\",8605]],\n" + " PARAMETER[\"Y-axis translation\",-19.42,\n" + " LENGTHUNIT[\"millimetre\",0.001],\n" + " ID[\"EPSG\",8606]],\n" + " PARAMETER[\"Z-axis translation\",32.01,\n" + " LENGTHUNIT[\"millimetre\",0.001],\n" + " ID[\"EPSG\",8607]],\n" + " PARAMETER[\"X-axis rotation\",-0.4254,\n" + " ANGLEUNIT[\"milliarc-second\",4.84813681109536e-09],\n" + " ID[\"EPSG\",8608]],\n" + " PARAMETER[\"Y-axis rotation\",2.2578,\n" + " ANGLEUNIT[\"milliarc-second\",4.84813681109536e-09],\n" + " ID[\"EPSG\",8609]],\n" + " PARAMETER[\"Z-axis rotation\",2.4015,\n" + " ANGLEUNIT[\"milliarc-second\",4.84813681109536e-09],\n" + " ID[\"EPSG\",8610]],\n" + " PARAMETER[\"Scale difference\",9.71,\n" + " SCALEUNIT[\"parts per billion\",1e-09],\n" + " ID[\"EPSG\",8611]],\n" + " PARAMETER[\"Rate of change of X-axis translation\",1.42,\n" + " LENGTHUNIT[\"millimetres per year\",3.16887651727315e-11],\n" + " ID[\"EPSG\",1040]],\n" + " PARAMETER[\"Rate of change of Y-axis translation\",1.34,\n" + " LENGTHUNIT[\"millimetres per year\",3.16887651727315e-11],\n" + " ID[\"EPSG\",1041]],\n" + " PARAMETER[\"Rate of change of Z-axis translation\",0.9,\n" + " LENGTHUNIT[\"millimetres per year\",3.16887651727315e-11],\n" + " ID[\"EPSG\",1042]],\n" + " PARAMETER[\"Rate of change of X-axis rotation\",1.5461,\n" + " ANGLEUNIT[\"milliarc-seconds per " + "year\",1.53631468932076e-16],\n" + " ID[\"EPSG\",1043]],\n" + " PARAMETER[\"Rate of change of Y-axis rotation\",1.182,\n" + " ANGLEUNIT[\"milliarc-seconds per " + "year\",1.53631468932076e-16],\n" + " ID[\"EPSG\",1044]],\n" + " PARAMETER[\"Rate of change of Z-axis rotation\",1.1551,\n" + " ANGLEUNIT[\"milliarc-seconds per " + "year\",1.53631468932076e-16],\n" + " ID[\"EPSG\",1045]],\n" + " PARAMETER[\"Rate of change of Scale difference\",0.109,\n" + " SCALEUNIT[\"parts per billion per " + "year\",3.16887651727315e-17],\n" + " ID[\"EPSG\",1046]],\n" + " PARAMETER[\"Parameter reference epoch\",1994,\n" + " TIMEUNIT[\"year\",31556925.445],\n" + " ID[\"EPSG\",1047]],\n" + " OPERATIONACCURACY[0.03],\n" + " USAGE[\n" + " SCOPE[\"unknown\"],\n" + " AREA[\"Australia - onshore and EEZ\"],\n" + " BBOX[-47.2,109.23,-8.88,163.2]],\n" + " ID[\"EPSG\",6276]]"; + + EXPECT_EQ( + op->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createCoordinateOperation_helmert_15_PV) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto op = factory->createCoordinateOperation("8069", false); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=helmert +x=-0.0254 +y=0.0005 +z=0.1548 +rx=-0.0001 +ry=0 " + "+rz=-0.00026 +s=-0.01129 +dx=-0.0001 +dy=0.0005 +dz=0.0033 " + "+drx=0 +dry=0 +drz=-2e-05 +ds=-0.00012 +t_epoch=2010 " + "+convention=position_vector"); +} + +// --------------------------------------------------------------------------- + +TEST(factory, + AuthorityFactory_createCoordinateOperation_helmert_15_PV_rounding_of_drz) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto op = factory->createCoordinateOperation("7932", false); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=helmert +x=0 +y=0 +z=0 +rx=0 +ry=0 +rz=0 +s=0 +dx=0 +dy=0 " + "+dz=0 +drx=0.00011 +dry=0.00057 +drz=-0.00071 +ds=0 " + "+t_epoch=1989 +convention=position_vector"); +} + +// --------------------------------------------------------------------------- + +TEST(factory, + AuthorityFactory_createCoordinateOperation_molodensky_badekas_PV) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto op = factory->createCoordinateOperation("1066", false); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart " + "+ellps=bessel +step +proj=molobadekas +x=593.032 +y=26 " + "+z=478.741 +rx=0.409394387439237 +ry=-0.359705195614311 " + "+rz=1.86849100035057 +s=4.0772 +px=3903453.148 +py=368135.313 " + "+pz=5012970.306 +convention=coordinate_frame +step +inv " + "+proj=cart +ellps=GRS80 +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST( + factory, + AuthorityFactory_createCoordinateOperation_grid_transformation_one_parameter) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto op = factory->createCoordinateOperation("1295", false); + auto expected = + "COORDINATEOPERATION[\"RGNC91-93 to NEA74 Noumea (4)\",\n" + " SOURCECRS[\n" + " GEOGCRS[\"RGNC91-93\",\n" + " DATUM[\"Reseau Geodesique de Nouvelle Caledonie 91-93\",\n" + " ELLIPSOID[\"GRS 1980\",6378137,298.257222101,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"geodetic latitude (Lat)\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"geodetic longitude (Lon)\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]]],\n" + " TARGETCRS[\n" + " GEOGCRS[\"NEA74 Noumea\",\n" + " DATUM[\"NEA74 Noumea\",\n" + " ELLIPSOID[\"International 1924\",6378388,297,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"geodetic latitude (Lat)\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"geodetic longitude (Lon)\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]]],\n" + " METHOD[\"NTv2\",\n" + " ID[\"EPSG\",9615]],\n" + " PARAMETERFILE[\"Latitude and longitude difference " + "file\",\"RGNC1991_NEA74Noumea.gsb\"],\n" + " OPERATIONACCURACY[0.05],\n" + " USAGE[\n" + " SCOPE[\"unknown\"],\n" + " AREA[\"New Caledonia - Grande Terre - Noumea\"],\n" + " BBOX[-22.37,166.35,-22.19,166.54]],\n" + " ID[\"EPSG\",1295]]"; + EXPECT_EQ( + op->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST( + factory, + AuthorityFactory_createCoordinateOperation_grid_transformation_two_parameter) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto op = factory->createCoordinateOperation("15864", false); + auto expected = + " PARAMETERFILE[\"Latitude difference file\",\"alaska.las\"],\n" + " PARAMETERFILE[\"Longitude difference file\",\"alaska.los\"],\n"; + + auto wkt = op->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()); + EXPECT_TRUE(wkt.find(expected) != std::string::npos) << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createCoordinateOperation_other_transformation) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto op = factory->createCoordinateOperation("1884", false); + auto expected = + "COORDINATEOPERATION[\"S-JTSK (Ferro) to S-JTSK (1)\",\n" + " SOURCECRS[\n" + " GEOGCRS[\"S-JTSK (Ferro)\",\n" + " DATUM[\"System of the Unified Trigonometrical Cadastral " + "Network (Ferro)\",\n" + " ELLIPSOID[\"Bessel 1841\",6377397.155,299.1528128,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Ferro\",-17.6666666666667,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"geodetic latitude (Lat)\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"geodetic longitude (Lon)\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]]],\n" + " TARGETCRS[\n" + " GEOGCRS[\"S-JTSK\",\n" + " DATUM[\"System of the Unified Trigonometrical Cadastral " + "Network\",\n" + " ELLIPSOID[\"Bessel 1841\",6377397.155,299.1528128,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"geodetic latitude (Lat)\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"geodetic longitude (Lon)\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]]],\n" + " METHOD[\"Longitude rotation\",\n" + " ID[\"EPSG\",9601]],\n" + " PARAMETER[\"Longitude offset\",-17.6666666666667,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8602]],\n" + " OPERATIONACCURACY[0.0],\n" + " USAGE[\n" + " SCOPE[\"unknown\"],\n" + " AREA[\"Europe - Czechoslovakia\"],\n" + " BBOX[47.73,12.09,51.06,22.56]],\n" + " ID[\"EPSG\",1884]]"; + + EXPECT_EQ( + op->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + expected); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_test_uom_9110) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + // This tests conversion from unit of measure EPSG:9110 DDD.MMSSsss + auto crs = factory->createProjectedCRS("2172"); + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=sterea " + "+lat_0=53.0019444444444 +lon_0=21.5027777777778 +k=0.9998 " + "+x_0=4603000 +y_0=5806000 +ellps=krass +step +proj=axisswap " + "+order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_affine_parametric_transform) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto op = factory->createCoordinateOperation("10087", false); + // Do not do axis unit change + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=affine +xoff=82357.457 +s11=0.304794369 " + "+s12=1.5417425e-05 +yoff=28091.324 +s21=-1.5417425e-05 " + "+s22=0.304794369"); +} + +// --------------------------------------------------------------------------- + +TEST(factory, + AuthorityFactory_createCoordinateOperation_concatenated_operation) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto op = factory->createCoordinateOperation("3896", false); + auto concatenated = nn_dynamic_pointer_cast<ConcatenatedOperation>(op); + ASSERT_TRUE(concatenated != nullptr); + auto operations = concatenated->operations(); + ASSERT_EQ(operations.size(), 2); + EXPECT_TRUE(operations[0]->isEquivalentTo( + factory->createCoordinateOperation("3895", false).get())); + EXPECT_TRUE(operations[1]->isEquivalentTo( + factory->createCoordinateOperation("1618", false).get())); +} + +// --------------------------------------------------------------------------- + +TEST( + factory, + AuthorityFactory_createCoordinateOperation_concatenated_operation_three_steps) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto op = factory->createCoordinateOperation("8647", false); + auto concatenated = nn_dynamic_pointer_cast<ConcatenatedOperation>(op); + ASSERT_TRUE(concatenated != nullptr); + auto operations = concatenated->operations(); + ASSERT_EQ(operations.size(), 3); + EXPECT_TRUE(operations[0]->isEquivalentTo( + factory->createCoordinateOperation("1313", false).get())); + EXPECT_TRUE(operations[1]->isEquivalentTo( + factory->createCoordinateOperation("1950", false).get())); + EXPECT_TRUE(operations[2]->isEquivalentTo( + factory->createCoordinateOperation("1946", false).get())); +} + +// --------------------------------------------------------------------------- + +TEST( + factory, + AuthorityFactory_createCoordinateOperation_concatenated_operation_inverse_step1) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto op = factory->createCoordinateOperation("8443", false); + auto concatenated = nn_dynamic_pointer_cast<ConcatenatedOperation>(op); + ASSERT_TRUE(concatenated != nullptr); + auto operations = concatenated->operations(); + ASSERT_EQ(operations.size(), 2); + EXPECT_TRUE(operations[0]->isEquivalentTo( + factory->createCoordinateOperation("8364", false)->inverse().get())); + EXPECT_TRUE(operations[1]->isEquivalentTo( + factory->createCoordinateOperation("8367", false).get())); +} + +// --------------------------------------------------------------------------- + +TEST( + factory, + AuthorityFactory_createCoordinateOperation_concatenated_operation_inverse_step2) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto op = factory->createCoordinateOperation("7811", false); + auto concatenated = nn_dynamic_pointer_cast<ConcatenatedOperation>(op); + ASSERT_TRUE(concatenated != nullptr); + auto operations = concatenated->operations(); + ASSERT_EQ(operations.size(), 2); + EXPECT_TRUE(operations[0]->isEquivalentTo( + factory->createCoordinateOperation("1763", false).get())); + EXPECT_TRUE(operations[1]->isEquivalentTo( + factory->createCoordinateOperation("15958", false)->inverse().get())); +} + +// --------------------------------------------------------------------------- + +TEST( + factory, + AuthorityFactory_createCoordinateOperation_concatenated_operation_step1_is_conversion) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto op = factory->createCoordinateOperation("7973", false); + auto concatenated = nn_dynamic_pointer_cast<ConcatenatedOperation>(op); + ASSERT_TRUE(concatenated != nullptr); + auto operations = concatenated->operations(); + ASSERT_EQ(operations.size(), 2); + EXPECT_TRUE(operations[0]->isEquivalentTo( + factory->createCoordinateOperation("7972", false).get())); + EXPECT_TRUE(operations[1]->isEquivalentTo( + factory->createCoordinateOperation("7969", false).get())); +} + +// --------------------------------------------------------------------------- + +static bool in(const std::string &str, const std::vector<std::string> &list) { + for (const auto &listItem : list) { + if (str == listItem) { + return true; + } + } + return false; +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_build_all_concatenated) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto setConcatenated = factory->getAuthorityCodes( + AuthorityFactory::ObjectType::CONCATENATED_OPERATION); + auto setConcatenatedNoDeprecated = factory->getAuthorityCodes( + AuthorityFactory::ObjectType::CONCATENATED_OPERATION, false); + EXPECT_LT(setConcatenatedNoDeprecated.size(), setConcatenated.size()); + for (const auto &code : setConcatenated) { + if (in(code, {"8422", "8481", "8482", "8565", "8566", "8572", + // the issue with 7987 is the chaining of two conversions + "7987"})) { + EXPECT_THROW(factory->createCoordinateOperation(code, false), + FactoryException); + } else { + factory->createCoordinateOperation(code, false); + } + } +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createCoordinateOperation_conversion) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto op = factory->createCoordinateOperation("16031", false); + auto conversion = nn_dynamic_pointer_cast<Conversion>(op); + ASSERT_TRUE(conversion != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_getAuthorityCodes) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + { + auto set = factory->getAuthorityCodes( + AuthorityFactory::ObjectType::PRIME_MERIDIAN); + ASSERT_TRUE(!set.empty()); + factory->createPrimeMeridian(*(set.begin())); + } + { + auto set = + factory->getAuthorityCodes(AuthorityFactory::ObjectType::ELLIPSOID); + ASSERT_TRUE(!set.empty()); + factory->createEllipsoid(*(set.begin())); + } + { + auto setDatum = + factory->getAuthorityCodes(AuthorityFactory::ObjectType::DATUM); + ASSERT_TRUE(!setDatum.empty()); + factory->createDatum(*(setDatum.begin())); + + auto setGeodeticDatum = factory->getAuthorityCodes( + AuthorityFactory::ObjectType::GEODETIC_REFERENCE_FRAME); + ASSERT_TRUE(!setGeodeticDatum.empty()); + factory->createGeodeticDatum(*(setGeodeticDatum.begin())); + + auto setVerticalDatum = factory->getAuthorityCodes( + AuthorityFactory::ObjectType::VERTICAL_REFERENCE_FRAME); + ASSERT_TRUE(!setVerticalDatum.empty()); + factory->createVerticalDatum(*(setVerticalDatum.begin())); + + std::set<std::string> setMerged; + for (const auto &v : setGeodeticDatum) { + setMerged.insert(v); + } + for (const auto &v : setVerticalDatum) { + setMerged.insert(v); + } + EXPECT_EQ(setDatum, setMerged); + } + { + auto setCRS = + factory->getAuthorityCodes(AuthorityFactory::ObjectType::CRS); + ASSERT_TRUE(!setCRS.empty()); + factory->createCoordinateReferenceSystem(*(setCRS.begin())); + + auto setGeodeticCRS = factory->getAuthorityCodes( + AuthorityFactory::ObjectType::GEODETIC_CRS); + ASSERT_TRUE(!setGeodeticCRS.empty()); + factory->createGeodeticCRS(*(setGeodeticCRS.begin())); + + auto setGeocentricCRS = factory->getAuthorityCodes( + AuthorityFactory::ObjectType::GEOCENTRIC_CRS); + ASSERT_TRUE(!setGeocentricCRS.empty()); + factory->createGeodeticCRS(*(setGeocentricCRS.begin())); + EXPECT_LT(setGeocentricCRS.size(), setGeodeticCRS.size()); + + auto setGeographicCRS = factory->getAuthorityCodes( + AuthorityFactory::ObjectType::GEOGRAPHIC_CRS); + ASSERT_TRUE(!setGeographicCRS.empty()); + factory->createGeographicCRS(*(setGeographicCRS.begin())); + EXPECT_LT(setGeographicCRS.size(), setGeodeticCRS.size()); + for (const auto &v : setGeographicCRS) { + EXPECT_TRUE(setGeodeticCRS.find(v) != setGeodeticCRS.end()); + } + + auto setGeographic2DCRS = factory->getAuthorityCodes( + AuthorityFactory::ObjectType::GEOGRAPHIC_2D_CRS); + ASSERT_TRUE(!setGeographic2DCRS.empty()); + factory->createGeographicCRS(*(setGeographic2DCRS.begin())); + + auto setGeographic3DCRS = factory->getAuthorityCodes( + AuthorityFactory::ObjectType::GEOGRAPHIC_3D_CRS); + ASSERT_TRUE(!setGeographic3DCRS.empty()); + factory->createGeographicCRS(*(setGeographic3DCRS.begin())); + + EXPECT_EQ(setGeographic2DCRS.size() + setGeographic3DCRS.size(), + setGeographicCRS.size()); + + EXPECT_EQ(setGeocentricCRS.size() + setGeographicCRS.size(), + setGeodeticCRS.size()); + + auto setVerticalCRS = factory->getAuthorityCodes( + AuthorityFactory::ObjectType::VERTICAL_CRS); + ASSERT_TRUE(!setVerticalCRS.empty()); + factory->createVerticalCRS(*(setVerticalCRS.begin())); + + auto setProjectedCRS = factory->getAuthorityCodes( + AuthorityFactory::ObjectType::PROJECTED_CRS); + ASSERT_TRUE(!setProjectedCRS.empty()); + factory->createProjectedCRS(*(setProjectedCRS.begin())); + + auto setCompoundCRS = factory->getAuthorityCodes( + AuthorityFactory::ObjectType::COMPOUND_CRS); + ASSERT_TRUE(!setCompoundCRS.empty()); + factory->createCompoundCRS(*(setCompoundCRS.begin())); + + std::set<std::string> setMerged; + for (const auto &v : setGeodeticCRS) { + setMerged.insert(v); + } + for (const auto &v : setVerticalCRS) { + setMerged.insert(v); + } + for (const auto &v : setProjectedCRS) { + setMerged.insert(v); + } + for (const auto &v : setCompoundCRS) { + setMerged.insert(v); + } + EXPECT_EQ(setCRS, setMerged); + } + { + auto setCO = factory->getAuthorityCodes( + AuthorityFactory::ObjectType::COORDINATE_OPERATION); + ASSERT_TRUE(!setCO.empty()); + factory->createCoordinateOperation(*(setCO.begin()), false); + + auto setConversion = factory->getAuthorityCodes( + AuthorityFactory::ObjectType::CONVERSION); + ASSERT_TRUE(!setConversion.empty()); + factory->createConversion(*(setConversion.begin())); + + auto setTransformation = factory->getAuthorityCodes( + AuthorityFactory::ObjectType::TRANSFORMATION); + ASSERT_TRUE(!setTransformation.empty()); + ASSERT_TRUE(nn_dynamic_pointer_cast<Transformation>( + factory->createCoordinateOperation( + *(setTransformation.begin()), false)) != nullptr); + + auto setConcatenated = factory->getAuthorityCodes( + AuthorityFactory::ObjectType::CONCATENATED_OPERATION); + ASSERT_TRUE(!setConcatenated.empty()); + ASSERT_TRUE(nn_dynamic_pointer_cast<ConcatenatedOperation>( + factory->createCoordinateOperation( + *(setConcatenated.begin()), false)) != nullptr); + + std::set<std::string> setMerged; + for (const auto &v : setConversion) { + setMerged.insert(v); + } + for (const auto &v : setTransformation) { + setMerged.insert(v); + } + for (const auto &v : setConcatenated) { + setMerged.insert(v); + } + EXPECT_EQ(setCO.size(), setMerged.size()); + std::set<std::string> setMissing; + for (const auto &v : setCO) { + if (setMerged.find(v) == setMerged.end()) { + setMissing.insert(v); + } + } + EXPECT_EQ(setMissing, std::set<std::string>()); + EXPECT_EQ(setCO, setMerged); + } +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_getDescriptionText) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_THROW(factory->getDescriptionText("-1"), + NoSuchAuthorityCodeException); + EXPECT_EQ(factory->getDescriptionText("10000"), + "RGF93 to NGF IGN69 height (1)"); +} + +// --------------------------------------------------------------------------- + +class FactoryWithTmpDatabase : public ::testing::Test { + protected: + void SetUp() override { sqlite3_open(":memory:", &m_ctxt); } + + void TearDown() override { + sqlite3_free_table(m_papszResult); + sqlite3_close(m_ctxt); + } + + void createStructure() { + auto referenceDb = DatabaseContext::create(); + const auto dbStructure = referenceDb->getDatabaseStructure(); + for (const auto &sql : dbStructure) { + ASSERT_TRUE(execute(sql)) << last_error(); + } + ASSERT_TRUE(execute("PRAGMA foreign_keys = 1;")) << last_error(); + } + + void populateWithFakeEPSG() { + + ASSERT_TRUE(execute("INSERT INTO unit_of_measure " + "VALUES('EPSG','9001','metre','length',1.0,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO unit_of_measure " + "VALUES('EPSG','9102','degree','angle',1." + "74532925199432781271e-02,0);")) + << last_error(); + ASSERT_TRUE(execute( + "INSERT INTO unit_of_measure VALUES('EPSG','9122','degree " + "(supplier to " + "define representation)','angle',1.74532925199432781271e-02,0);")) + << last_error(); + ASSERT_TRUE( + execute("INSERT INTO area " + "VALUES('EPSG','1262','World','World.',-90.0,90.0,-180." + "0,180.0,0);")) + << last_error(); + ASSERT_TRUE( + execute("INSERT INTO prime_meridian " + "VALUES('EPSG','8901','Greenwich',0.0,'EPSG','9102',0);")) + << last_error(); + ASSERT_TRUE( + execute("INSERT INTO celestial_body VALUES('PROJ','EARTH','Earth'," + "6378137.0);")) + << last_error(); + ASSERT_TRUE( + execute("INSERT INTO ellipsoid VALUES('EPSG','7030','WGS 84',''," + "'PROJ','EARTH',6378137.0,'EPSG','9001',298.257223563," + "NULL,0);")) + << last_error(); + ASSERT_TRUE( + execute("INSERT INTO geodetic_datum " + "VALUES('EPSG','6326','World Geodetic System 1984','',NULL," + "'EPSG','7030','EPSG','8901','EPSG','1262',0);")) + << last_error(); + ASSERT_TRUE( + execute("INSERT INTO vertical_datum VALUES('EPSG','1027','EGM2008 " + "geoid',NULL,NULL,'EPSG','1262',0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO coordinate_system " + "VALUES('EPSG','6422','ellipsoidal',2);")) + << last_error(); + ASSERT_TRUE( + execute("INSERT INTO axis VALUES('EPSG','106','Geodetic " + "latitude','Lat','north','EPSG','6422',1,'EPSG','9122');")) + << last_error(); + ASSERT_TRUE( + execute("INSERT INTO axis VALUES('EPSG','107','Geodetic " + "longitude','Lon','east','EPSG','6422',2,'EPSG','9122');")) + << last_error(); + ASSERT_TRUE( + execute("INSERT INTO geodetic_crs VALUES('EPSG','4326','WGS " + "84',NULL,NULL,'geographic " + "2D','EPSG','6422','EPSG','6326','EPSG','1262',NULL,0);")) + << last_error(); + + ASSERT_TRUE(execute("INSERT INTO coordinate_system " + "VALUES('EPSG','6499','vertical',1);")) + << last_error(); + ASSERT_TRUE( + execute("INSERT INTO axis VALUES('EPSG','114','Gravity-related " + "height','H','up','EPSG','6499',1,'EPSG','9001');")) + << last_error(); + ASSERT_TRUE( + execute("INSERT INTO vertical_crs VALUES('EPSG','3855','EGM2008 " + "height',NULL,NULL,'EPSG','6499','EPSG','1027','EPSG'," + "'1262',0);")) + << last_error(); + + ASSERT_TRUE(execute("INSERT INTO unit_of_measure " + "VALUES('EPSG','9201','unity','scale',1.0,0);")) + << last_error(); + + ASSERT_TRUE(execute( + "INSERT INTO area VALUES('EPSG','1933','World - N hemisphere - " + "0°E to 6°E','',0.0,84.0,0.0,6.0,0);")) + << last_error(); + + ASSERT_TRUE(execute( + "INSERT INTO conversion VALUES('EPSG','16031','UTM zone " + "31N',NULL,NULL,'EPSG','1933','EPSG','9807','Transverse " + "Mercator','EPSG','8801','Latitude " + "of " + "natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of " + "natural " + "origin',3.0,'EPSG','9102','EPSG','8805','Scale factor at natural " + "origin',0.9996,'EPSG','9201','EPSG','8806','False " + "easting',500000.0,'EPSG','9001','EPSG','8807','False " + "northing',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL," + "NULL,NULL,NULL,NULL,0);")) + << last_error(); + + ASSERT_TRUE(execute( + "INSERT INTO area VALUES('EPSG','2060','World - N hemisphere - " + "0°E to 6°E - by country','',0.0,84.0,0.0,6.0,0);")) + << last_error(); + + ASSERT_TRUE(execute("INSERT INTO coordinate_system " + "VALUES('EPSG','4400','Cartesian',2);")) + << last_error(); + ASSERT_TRUE( + execute("INSERT INTO axis " + "VALUES('EPSG','1','Easting','E','east','EPSG','4400'," + "1,'EPSG','9001');")) + << last_error(); + ASSERT_TRUE( + execute("INSERT INTO axis " + "VALUES('EPSG','2','Northing','N','north','EPSG','4400'" + ",2,'EPSG','9001');")) + << last_error(); + + ASSERT_TRUE(execute("INSERT INTO projected_crs " + "VALUES('EPSG','32631','WGS 84 / UTM zone " + "31N',NULL,NULL,'EPSG','4400','EPSG','4326'," + "'EPSG','16031','" + "EPSG','2060',NULL,0);")) + << last_error(); + + ASSERT_TRUE(execute( + "INSERT INTO compound_crs VALUES('EPSG','MY_COMPOUND','WGS 84 + " + "EGM2008 geoid height',NULL,NULL,'EPSG','4326','EPSG','3855'," + "'EPSG','1262',0);")) + << last_error(); + + ASSERT_TRUE(execute( + "INSERT INTO helmert_transformation " + "VALUES('EPSG','DUMMY_HELMERT','name',NULL,NULL,'EPSG','9603','" + "Geocentric translations (geog2D domain)','EPSG','4326'," + "'EPSG','4326','EPSG','1262',44.0,-143." + "0,-90.0,-294.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);")) + << last_error(); + + ASSERT_TRUE(execute( + "INSERT INTO grid_transformation " + "VALUES('EPSG','DUMMY_GRID_TRANSFORMATION','name',NULL,NULL," + "'EPSG','9615'" + ",'NTv2','EPSG','4326','EPSG','4326','EPSG','1262',1.0,'EPSG','" + "8656','Latitude and longitude difference " + "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0);")) + << last_error(); + + ASSERT_TRUE(execute( + "INSERT INTO unit_of_measure VALUES('EPSG','9110','sexagesimal " + "DMS','angle',NULL,0);")) + << last_error(); + + ASSERT_TRUE(execute( + "INSERT INTO other_transformation " + "VALUES('EPSG','DUMMY_OTHER_TRANSFORMATION','name',NULL,NULL," + "'EPSG','9601','Longitude rotation'," + "'EPSG','4326','EPSG','4326','EPSG','1262',0.0,'EPSG'" + ",'8602','Longitude " + "offset',-17.4,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,0);")) + << last_error(); + + ASSERT_TRUE(execute( + "INSERT INTO concatenated_operation " + "VALUES('EPSG','DUMMY_CONCATENATED','name',NULL,NULL," + "'EPSG','4326','EPSG'" + ",'4326','EPSG','1262',NULL,'EPSG','DUMMY_OTHER_TRANSFORMATION'" + ",'EPSG','DUMMY_OTHER_TRANSFORMATION',NULL,NULL,0);")) + << last_error(); + } + + void createSourceTargetPivotCRS() { + const auto vals = std::vector<std::string>{"SOURCE", "TARGET", "PIVOT"}; + for (const auto &val : vals) { + + ASSERT_TRUE(execute("INSERT INTO geodetic_crs " + "VALUES('NS_" + + val + "','" + val + "','" + val + + "',NULL,NULL,'geographic 2D','EPSG','6422'," + "'EPSG','6326'," + "'EPSG','1262',NULL,0);")) + << last_error(); + } + } + + void createTransformationForPivotTesting(const std::string &src, + const std::string &dst) { + + ASSERT_TRUE(execute( + "INSERT INTO helmert_transformation " + "VALUES('OTHER','" + + src + "_" + dst + "','Transformation from " + src + " to " + dst + + "',NULL,NULL,'EPSG','9603','" + "Geocentric translations (geog2D domain)','NS_" + + src + "','" + src + "','NS_" + dst + "','" + dst + + "','EPSG'" + ",'1262',1.0,0,0,0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);")) + << last_error(); + } + + void checkSourceToOther() { + { + auto factoryOTHER = AuthorityFactory::create( + DatabaseContext::create(m_ctxt), "OTHER"); + auto res = factoryOTHER->createFromCRSCodesWithIntermediates( + "NS_SOURCE", "SOURCE", "NS_TARGET", "TARGET", false, false, {}); + EXPECT_EQ(res.size(), 1); + EXPECT_TRUE(res.empty() || + nn_dynamic_pointer_cast<ConcatenatedOperation>(res[0])); + + res = factoryOTHER->createFromCRSCodesWithIntermediates( + "NS_SOURCE", "SOURCE", "NS_TARGET", "TARGET", false, false, + {std::make_pair(std::string("NS_PIVOT"), + std::string("PIVOT"))}); + EXPECT_EQ(res.size(), 1); + EXPECT_TRUE(res.empty() || + nn_dynamic_pointer_cast<ConcatenatedOperation>(res[0])); + + res = factoryOTHER->createFromCRSCodesWithIntermediates( + "NS_SOURCE", "SOURCE", "NS_TARGET", "TARGET", false, false, + {std::make_pair(std::string("NS_PIVOT"), + std::string("NOT_EXISTING"))}); + EXPECT_EQ(res.size(), 0); + + res = factoryOTHER->createFromCRSCodesWithIntermediates( + "NS_SOURCE", "SOURCE", "NS_TARGET", "TARGET", false, false, + {std::make_pair(std::string("BAD_NS"), std::string("PIVOT"))}); + EXPECT_EQ(res.size(), 0); + + res = factoryOTHER->createFromCRSCodesWithIntermediates( + "NS_TARGET", "TARGET", "NS_SOURCE", "SOURCE", false, false, {}); + EXPECT_EQ(res.size(), 1); + EXPECT_TRUE(res.empty() || + nn_dynamic_pointer_cast<ConcatenatedOperation>(res[0])); + } + { + auto factory = AuthorityFactory::create( + DatabaseContext::create(m_ctxt), std::string()); + auto res = factory->createFromCRSCodesWithIntermediates( + "NS_SOURCE", "SOURCE", "NS_TARGET", "TARGET", false, false, {}); + EXPECT_EQ(res.size(), 1); + EXPECT_TRUE(res.empty() || + nn_dynamic_pointer_cast<ConcatenatedOperation>(res[0])); + + auto srcCRS = AuthorityFactory::create( + DatabaseContext::create(m_ctxt), "NS_SOURCE") + ->createCoordinateReferenceSystem("SOURCE"); + auto targetCRS = AuthorityFactory::create( + DatabaseContext::create(m_ctxt), "NS_TARGET") + ->createCoordinateReferenceSystem("TARGET"); + + { + auto ctxt = + CoordinateOperationContext::create(factory, nullptr, 0); + res = CoordinateOperationFactory::create()->createOperations( + srcCRS, targetCRS, ctxt); + EXPECT_EQ(res.size(), 1); + EXPECT_TRUE( + res.empty() || + nn_dynamic_pointer_cast<ConcatenatedOperation>(res[0])); + } + + { + auto ctxt = + CoordinateOperationContext::create(factory, nullptr, 0); + ctxt->setIntermediateCRS({std::make_pair( + std::string("NS_PIVOT"), std::string("PIVOT"))}); + res = CoordinateOperationFactory::create()->createOperations( + srcCRS, targetCRS, ctxt); + EXPECT_EQ(res.size(), 1); + EXPECT_TRUE( + res.empty() || + nn_dynamic_pointer_cast<ConcatenatedOperation>(res[0])); + } + + { + auto ctxt = + CoordinateOperationContext::create(factory, nullptr, 0); + ctxt->setAllowUseIntermediateCRS(false); + res = CoordinateOperationFactory::create()->createOperations( + srcCRS, targetCRS, ctxt); + EXPECT_EQ(res.size(), 1); + EXPECT_TRUE(res.empty() || + nn_dynamic_pointer_cast<Transformation>(res[0])); + } + + { + auto ctxt = + CoordinateOperationContext::create(factory, nullptr, 0); + ctxt->setIntermediateCRS({std::make_pair( + std::string("NS_PIVOT"), std::string("NOT_EXISTING"))}); + res = CoordinateOperationFactory::create()->createOperations( + srcCRS, targetCRS, ctxt); + EXPECT_EQ(res.size(), 1); + EXPECT_TRUE(res.empty() || + nn_dynamic_pointer_cast<Transformation>(res[0])); + } + } + } + + bool get_table(const char *sql, sqlite3 *db = nullptr) { + sqlite3_free_table(m_papszResult); + m_papszResult = nullptr; + m_nRows = 0; + m_nCols = 0; + return sqlite3_get_table(db ? db : m_ctxt, sql, &m_papszResult, + &m_nRows, &m_nCols, nullptr) == SQLITE_OK; + } + + bool execute(const std::string &sql) { + return sqlite3_exec(m_ctxt, sql.c_str(), nullptr, nullptr, nullptr) == + SQLITE_OK; + } + + std::string last_error() { + const char *msg = sqlite3_errmsg(m_ctxt); + return msg ? msg : std::string(); + } + + int m_nRows = 0; + int m_nCols = 0; + char **m_papszResult = nullptr; + sqlite3 *m_ctxt = nullptr; +}; + +// --------------------------------------------------------------------------- + +TEST_F(FactoryWithTmpDatabase, AuthorityFactory_test_with_fake_EPSG_database) { + createStructure(); + populateWithFakeEPSG(); + + auto factory = + AuthorityFactory::create(DatabaseContext::create(m_ctxt), "EPSG"); + + EXPECT_TRUE(nn_dynamic_pointer_cast<UnitOfMeasure>( + factory->createObject("9001")) != nullptr); + + EXPECT_TRUE(nn_dynamic_pointer_cast<Extent>( + factory->createObject("1262")) != nullptr); + + EXPECT_TRUE(nn_dynamic_pointer_cast<PrimeMeridian>( + factory->createObject("8901")) != nullptr); + + EXPECT_TRUE(nn_dynamic_pointer_cast<Ellipsoid>( + factory->createObject("7030")) != nullptr); + + EXPECT_TRUE(nn_dynamic_pointer_cast<GeodeticReferenceFrame>( + factory->createObject("6326")) != nullptr); + + EXPECT_TRUE(nn_dynamic_pointer_cast<VerticalReferenceFrame>( + factory->createObject("1027")) != nullptr); + + EXPECT_TRUE(nn_dynamic_pointer_cast<GeographicCRS>( + factory->createObject("4326")) != nullptr); + + EXPECT_TRUE(nn_dynamic_pointer_cast<VerticalCRS>( + factory->createObject("3855")) != nullptr); + + EXPECT_TRUE(nn_dynamic_pointer_cast<Conversion>( + factory->createObject("16031")) != nullptr); + + EXPECT_TRUE(nn_dynamic_pointer_cast<ProjectedCRS>( + factory->createObject("32631")) != nullptr); + + EXPECT_TRUE(nn_dynamic_pointer_cast<CompoundCRS>( + factory->createObject("MY_COMPOUND")) != nullptr); + + EXPECT_TRUE(nn_dynamic_pointer_cast<Transformation>( + factory->createObject("DUMMY_HELMERT")) != nullptr); + + EXPECT_TRUE(nn_dynamic_pointer_cast<Transformation>(factory->createObject( + "DUMMY_GRID_TRANSFORMATION")) != nullptr); + + EXPECT_TRUE(nn_dynamic_pointer_cast<Transformation>(factory->createObject( + "DUMMY_OTHER_TRANSFORMATION")) != nullptr); + + EXPECT_TRUE(nn_dynamic_pointer_cast<ConcatenatedOperation>( + factory->createObject("DUMMY_CONCATENATED")) != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_createFromCoordinateReferenceSystemCodes) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + EXPECT_TRUE( + factory->createFromCoordinateReferenceSystemCodes("-1", "-1").empty()); + { + auto res = + factory->createFromCoordinateReferenceSystemCodes("4326", "32631"); + ASSERT_EQ(res.size(), 1); + EXPECT_TRUE(res[0]->sourceCRS() != nullptr); + EXPECT_TRUE(res[0]->targetCRS() != nullptr); + EXPECT_TRUE( + res[0]->isEquivalentTo(factory->createConversion("16031").get())); + } + { + auto res = + factory->createFromCoordinateReferenceSystemCodes("4209", "4326"); + EXPECT_TRUE(!res.empty()); + for (const auto &conv : res) { + EXPECT_TRUE(conv->sourceCRS()->getEPSGCode() == 4209); + EXPECT_TRUE(conv->targetCRS()->getEPSGCode() == 4326); + EXPECT_FALSE(conv->isDeprecated()); + } + } + { + auto list = + factory->createFromCoordinateReferenceSystemCodes("4179", "4258"); + ASSERT_EQ(list.size(), 3); + // Romania has a larger area than Poland (given our approx formula) + EXPECT_EQ(list[0]->getEPSGCode(), 15994); // Romania - 3m + EXPECT_EQ(list[1]->getEPSGCode(), 15993); // Romania - 10m + EXPECT_EQ(list[2]->getEPSGCode(), 1644); // Poland - 1m + } +} + +// --------------------------------------------------------------------------- + +TEST( + factory, + AuthorityFactory_createFromCoordinateReferenceSystemCodes_anonymous_authority) { + auto factory = + AuthorityFactory::create(DatabaseContext::create(), std::string()); + + { + auto res = factory->createFromCoordinateReferenceSystemCodes( + "EPSG", "4326", "EPSG", "32631", false, false); + ASSERT_EQ(res.size(), 1); + } + { + auto res = factory->createFromCoordinateReferenceSystemCodes( + "EPSG", "4209", "EPSG", "4326", false, false); + EXPECT_TRUE(!res.empty()); + for (const auto &conv : res) { + EXPECT_TRUE(conv->sourceCRS()->getEPSGCode() == 4209); + EXPECT_TRUE(conv->targetCRS()->getEPSGCode() == 4326); + EXPECT_FALSE(conv->isDeprecated()); + } + } +} + +// --------------------------------------------------------------------------- + +TEST_F(FactoryWithTmpDatabase, + AuthorityFactory_test_with_fake_EPSG_and_OTHER_database) { + createStructure(); + populateWithFakeEPSG(); + + ASSERT_TRUE( + execute("INSERT INTO geodetic_crs VALUES('OTHER','OTHER_4326','WGS " + "84',NULL,NULL,'geographic " + "2D','EPSG','6422','EPSG','6326','EPSG','1262',NULL,0);")) + << last_error(); + + ASSERT_TRUE(execute("INSERT INTO projected_crs " + "VALUES('OTHER','OTHER_32631','WGS 84 / UTM zone " + "31N',NULL,NULL,'EPSG','4400','OTHER','OTHER_4326'," + "'EPSG','16031','EPSG','2060',NULL,0);")) + << last_error(); + + auto factoryGeneral = AuthorityFactory::create( + DatabaseContext::create(m_ctxt), std::string()); + { + auto res = factoryGeneral->createFromCoordinateReferenceSystemCodes( + "OTHER", "OTHER_4326", "OTHER", "OTHER_32631", false, false); + ASSERT_EQ(res.size(), 1); + } + + auto factoryEPSG = + AuthorityFactory::create(DatabaseContext::create(m_ctxt), "EPSG"); + { + auto res = factoryEPSG->createFromCoordinateReferenceSystemCodes( + "OTHER", "OTHER_4326", "OTHER", "OTHER_32631", false, false); + ASSERT_EQ(res.size(), 1); + } + + auto factoryOTHER = + AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); + { + auto res = factoryOTHER->createFromCoordinateReferenceSystemCodes( + "OTHER_4326", "OTHER_32631"); + ASSERT_EQ(res.size(), 0); // the conversion is in the EPSG space + } + + ASSERT_TRUE(execute( + "INSERT INTO grid_transformation " + "VALUES('OTHER','OTHER_GRID_TRANSFORMATION','name',NULL,NULL," + "'EPSG','9615'" + ",'NTv2','EPSG','4326','OTHER','OTHER_4326','EPSG','1262',1.0,'EPSG','" + "8656','Latitude and longitude difference " + "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0);")) + << last_error(); + { + auto res = factoryGeneral->createFromCoordinateReferenceSystemCodes( + "EPSG", "4326", "OTHER", "OTHER_4326", false, false); + ASSERT_EQ(res.size(), 1); + } + { + auto res = factoryEPSG->createFromCoordinateReferenceSystemCodes( + "EPSG", "4326", "OTHER", "OTHER_4326", false, false); + ASSERT_EQ(res.size(), 0); + } + { + auto res = factoryOTHER->createFromCoordinateReferenceSystemCodes( + "EPSG", "4326", "OTHER", "OTHER_4326", false, false); + ASSERT_EQ(res.size(), 1); + } +} + +// --------------------------------------------------------------------------- + +TEST_F(FactoryWithTmpDatabase, + AuthorityFactory_test_sorting_of_coordinate_operations) { + createStructure(); + populateWithFakeEPSG(); + + ASSERT_TRUE(execute( + "INSERT INTO grid_transformation " + "VALUES('OTHER','TRANSFORMATION_10M','TRANSFORMATION_10M',NULL,NULL," + "'EPSG','9615'" + ",'NTv2','EPSG','4326','EPSG','4326','EPSG','1262',10.0,'EPSG','" + "8656','Latitude and longitude difference " + "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0);")) + << last_error(); + + ASSERT_TRUE( + execute("INSERT INTO grid_transformation " + "VALUES('OTHER','TRANSFORMATION_1M_SMALL_EXTENT','" + "TRANSFORMATION_1M_SMALL_EXTENT',NULL,NULL,'EPSG','9615'" + ",'NTv2','EPSG','4326','EPSG','4326','EPSG','2060',1.0,'EPSG','" + "8656','Latitude and longitude difference " + "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0);")) + << last_error(); + + ASSERT_TRUE(execute( + "INSERT INTO grid_transformation " + "VALUES('OTHER','TRANSFORMATION_1M','TRANSFORMATION_1M',NULL,NULL," + "'EPSG','9615'" + ",'NTv2','EPSG','4326','EPSG','4326','EPSG','1262',1.0,'EPSG','" + "8656','Latitude and longitude difference " + "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,0);")) + << last_error(); + + ASSERT_TRUE( + execute("INSERT INTO grid_transformation " + "VALUES('OTHER','TRANSFORMATION_0.5M_DEPRECATED','" + "TRANSFORMATION_0.5M_DEPRECATED',NULL,NULL,'EPSG','9615'" + ",'NTv2','EPSG','4326','EPSG','4326','EPSG','1262',1.0,'EPSG','" + "8656','Latitude and longitude difference " + "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,1);")) + << last_error(); + + auto factoryOTHER = + AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); + auto res = factoryOTHER->createFromCoordinateReferenceSystemCodes( + "EPSG", "4326", "EPSG", "4326", false, false); + ASSERT_EQ(res.size(), 3); + EXPECT_EQ(*(res[0]->name()->description()), "TRANSFORMATION_1M"); + EXPECT_EQ(*(res[1]->name()->description()), "TRANSFORMATION_10M"); + EXPECT_EQ(*(res[2]->name()->description()), + "TRANSFORMATION_1M_SMALL_EXTENT"); +} + +// --------------------------------------------------------------------------- + +TEST_F( + FactoryWithTmpDatabase, + AuthorityFactory_createFromCRSCodesWithIntermediates_source_equals_target) { + createStructure(); + populateWithFakeEPSG(); + + auto factory = AuthorityFactory::create(DatabaseContext::create(m_ctxt), + std::string()); + auto res = factory->createFromCRSCodesWithIntermediates( + "EPSG", "4326", "EPSG", "4326", false, false, {}); + EXPECT_EQ(res.size(), 0); +} + +// --------------------------------------------------------------------------- + +TEST_F( + FactoryWithTmpDatabase, + AuthorityFactory_createFromCRSCodesWithIntermediates_case_source_pivot_target_pivot) { + createStructure(); + populateWithFakeEPSG(); + createSourceTargetPivotCRS(); + + createTransformationForPivotTesting("SOURCE", "PIVOT"); + createTransformationForPivotTesting("TARGET", "PIVOT"); + + checkSourceToOther(); +} + +// --------------------------------------------------------------------------- + +TEST_F( + FactoryWithTmpDatabase, + AuthorityFactory_createFromCRSCodesWithIntermediates_case_source_pivot_pivot_target) { + createStructure(); + populateWithFakeEPSG(); + createSourceTargetPivotCRS(); + + createTransformationForPivotTesting("SOURCE", "PIVOT"); + createTransformationForPivotTesting("PIVOT", "TARGET"); + + checkSourceToOther(); +} + +// --------------------------------------------------------------------------- + +TEST_F( + FactoryWithTmpDatabase, + AuthorityFactory_createFromCRSCodesWithIntermediates_case_pivot_source_pivot_target) { + createStructure(); + populateWithFakeEPSG(); + createSourceTargetPivotCRS(); + + createTransformationForPivotTesting("PIVOT", "SOURCE"); + createTransformationForPivotTesting("PIVOT", "TARGET"); + + checkSourceToOther(); +} + +// --------------------------------------------------------------------------- + +TEST_F( + FactoryWithTmpDatabase, + AuthorityFactory_createFromCRSCodesWithIntermediates_case_pivot_source_target_pivot) { + createStructure(); + populateWithFakeEPSG(); + createSourceTargetPivotCRS(); + + createTransformationForPivotTesting("PIVOT", "SOURCE"); + createTransformationForPivotTesting("TARGET", "PIVOT"); + + checkSourceToOther(); +} + +// --------------------------------------------------------------------------- + +TEST_F(FactoryWithTmpDatabase, AuthorityFactory_proj_based_transformation) { + createStructure(); + populateWithFakeEPSG(); + + ASSERT_TRUE(execute( + "INSERT INTO other_transformation " + "VALUES('OTHER','FOO','My PROJ string based op',NULL,NULL,'PROJ'," + "'PROJString','+proj=pipeline +ellps=WGS84 +step +proj=longlat'," + "'EPSG','4326','EPSG','4326','EPSG','1262',0.0,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,0);")) + << last_error(); + + auto factoryOTHER = + AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); + auto res = factoryOTHER->createFromCoordinateReferenceSystemCodes( + "EPSG", "4326", "EPSG", "4326", false, false); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res[0]->nameStr(), "My PROJ string based op"); + EXPECT_EQ(res[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +ellps=WGS84 +step +proj=longlat"); +} + +// --------------------------------------------------------------------------- + +TEST_F(FactoryWithTmpDatabase, AuthorityFactory_wkt_based_transformation) { + createStructure(); + populateWithFakeEPSG(); + + auto wkt = "COORDINATEOPERATION[\"My WKT string based op\",\n" + " SOURCECRS[\n" + " GEODCRS[\"unknown\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]],\n" + " ID[\"EPSG\",6326]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8901]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"geodetic latitude (Lat)\",north],\n" + " AXIS[\"geodetic longitude (Lon)\",east],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " TARGETCRS[\n" + " GEODCRS[\"unknown\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]],\n" + " ID[\"EPSG\",6326]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8901]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"geodetic latitude (Lat)\",north],\n" + " AXIS[\"geodetic longitude (Lon)\",east],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " METHOD[\"Geocentric translations (geog2D domain)\"],\n" + " PARAMETER[\"X-axis translation\",1],\n" + " PARAMETER[\"Y-axis translation\",2],\n" + " PARAMETER[\"Z-axis translation\",3]]"; + + ASSERT_TRUE( + execute("INSERT INTO other_transformation " + "VALUES('OTHER','FOO','My WKT string based op',NULL,NULL," + "'PROJ','WKT','" + + std::string(wkt) + + "'," + "'EPSG','4326','EPSG','4326','EPSG','1262',0.0,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,0);")) + << last_error(); + + auto factoryOTHER = + AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); + auto res = factoryOTHER->createFromCoordinateReferenceSystemCodes( + "EPSG", "4326", "EPSG", "4326", false, false); + ASSERT_EQ(res.size(), 1); + EXPECT_EQ(res[0]->nameStr(), "My WKT string based op"); + EXPECT_EQ(res[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart " + "+ellps=WGS84 +step +proj=helmert +x=1 +y=2 +z=3 +step +inv " + "+proj=cart +ellps=WGS84 +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST_F(FactoryWithTmpDatabase, + AuthorityFactory_wkt_based_transformation_not_wkt) { + createStructure(); + populateWithFakeEPSG(); + + ASSERT_TRUE( + execute("INSERT INTO other_transformation " + "VALUES('OTHER','FOO','My WKT string based op',NULL,NULL," + "'PROJ','WKT','" + + std::string("invalid_wkt") + + "'," + "'EPSG','4326','EPSG','4326','EPSG','1262',0.0,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,0);")) + << last_error(); + + auto factoryOTHER = + AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); + EXPECT_THROW(factoryOTHER->createFromCoordinateReferenceSystemCodes( + "EPSG", "4326", "EPSG", "4326", false, false), + FactoryException); +} + +// --------------------------------------------------------------------------- + +TEST_F(FactoryWithTmpDatabase, + AuthorityFactory_wkt_based_transformation_not_co_wkt) { + createStructure(); + populateWithFakeEPSG(); + + ASSERT_TRUE( + execute("INSERT INTO other_transformation " + "VALUES('OTHER','FOO','My WKT string based op',NULL,NULL," + "'PROJ','WKT','" + + std::string("LOCAL_CS[\"foo\"]") + + "'," + "'EPSG','4326','EPSG','4326','EPSG','1262',0.0,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,0);")) + << last_error(); + + auto factoryOTHER = + AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); + EXPECT_THROW(factoryOTHER->createFromCoordinateReferenceSystemCodes( + "EPSG", "4326", "EPSG", "4326", false, false), + FactoryException); +} + +// --------------------------------------------------------------------------- + +TEST(factory, AuthorityFactory_EPSG_4326_approximate_equivalent_to_builtin) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>( + factory->createCoordinateReferenceSystem("4326")); + EXPECT_TRUE(crs->isEquivalentTo(GeographicCRS::EPSG_4326.get(), + IComparable::Criterion::EQUIVALENT)); +} + +// --------------------------------------------------------------------------- + +TEST_F(FactoryWithTmpDatabase, getAuthorities) { + createStructure(); + populateWithFakeEPSG(); + + auto res = DatabaseContext::create(m_ctxt)->getAuthorities(); + EXPECT_EQ(res.size(), 2); + EXPECT_TRUE(res.find("EPSG") != res.end()); + EXPECT_TRUE(res.find("PROJ") != res.end()); +} + +// --------------------------------------------------------------------------- + +TEST_F(FactoryWithTmpDatabase, lookForGridInfo) { + createStructure(); + + ASSERT_TRUE(execute("INSERT INTO grid_alternatives(original_grid_name," + "proj_grid_name, " + "proj_grid_format, " + "proj_method, " + "inverse_direction, " + "package_name, " + "url, direct_download, open_license, directory) " + "VALUES ('null', " + "'PROJ_fake_grid', " + "'CTable2', " + "'hgridshift', " + "0, " + "NULL, " + "'url', 1, 1, NULL);")) + << last_error(); + + std::string fullFilename; + std::string packageName; + std::string url; + bool directDownload = false; + bool openLicense = false; + bool gridAvailable = false; + EXPECT_TRUE(DatabaseContext::create(m_ctxt)->lookForGridInfo( + "PROJ_fake_grid", fullFilename, packageName, url, directDownload, + openLicense, gridAvailable)); + EXPECT_TRUE(fullFilename.empty()); + EXPECT_TRUE(packageName.empty()); + EXPECT_EQ(url, "url"); + EXPECT_EQ(directDownload, true); + EXPECT_EQ(openLicense, true); + EXPECT_EQ(gridAvailable, false); +} + +// --------------------------------------------------------------------------- + +TEST_F(FactoryWithTmpDatabase, custom_geodetic_crs) { + createStructure(); + populateWithFakeEPSG(); + + ASSERT_TRUE(execute("INSERT INTO geodetic_crs VALUES('TEST_NS','TEST','my " + "name TEST',NULL,NULL,'geographic 2D'," + "NULL,NULL,NULL,NULL,NULL,NULL,'+proj=longlat +a=2 " + "+rf=300',0);")) + << last_error(); + + ASSERT_TRUE(execute("INSERT INTO geodetic_crs VALUES" + "('TEST_NS','TEST_BOUND'," + "'my name TEST',NULL,NULL,'geographic 2D'," + "NULL,NULL,NULL,NULL,NULL,NULL,'+proj=longlat +a=2 " + "+rf=300 +towgs84=1,2,3',0);")) + << last_error(); + + ASSERT_TRUE(execute("INSERT INTO geodetic_crs VALUES('TEST_NS','TEST_GC'," + "'my name',NULL,NULL,'geocentric',NULL,NULL,NULL,NULL," + "NULL,NULL,'+proj=geocent +a=2 +rf=300',0);")) + << last_error(); + + ASSERT_TRUE(execute( + "INSERT INTO geodetic_crs " + "VALUES('TEST_NS','TEST_REF_ANOTHER','my name TEST_REF_ANOTHER'," + "NULL,NULL," + "'geographic 2D',NULL,NULL,NULL,NULL,NULL,NULL,'TEST_NS:TEST',0);")) + << last_error(); + + ASSERT_TRUE(execute("INSERT INTO geodetic_crs " + "VALUES('TEST_NS','TEST_WRONG','my name',NULL,NULL," + "'geographic 2D',NULL,NULL,NULL,NULL,NULL,NULL," + "'+proj=merc',0);")) + << last_error(); + + ASSERT_TRUE(execute( + "INSERT INTO geodetic_crs " + "VALUES('TEST_NS','TEST_RECURSIVE','my name',NULL,NULL,'geographic 2D'," + "NULL,NULL,NULL,NULL,NULL,NULL,'TEST_NS:TEST_RECURSIVE',0);")) + << last_error(); + + auto factory = + AuthorityFactory::create(DatabaseContext::create(m_ctxt), "TEST_NS"); + { + auto crs = factory->createGeodeticCRS("TEST"); + EXPECT_TRUE(nn_dynamic_pointer_cast<GeographicCRS>(crs) != nullptr); + EXPECT_EQ(*(crs->name()->description()), "my name TEST"); + EXPECT_EQ(crs->identifiers().size(), 1); + EXPECT_EQ(crs->ellipsoid()->semiMajorAxis(), Length(2)); + EXPECT_EQ(*(crs->ellipsoid()->inverseFlattening()), Scale(300)); + EXPECT_TRUE(crs->canonicalBoundCRS() == nullptr); + } + { + auto crs = factory->createGeodeticCRS("TEST_BOUND"); + EXPECT_TRUE(nn_dynamic_pointer_cast<GeographicCRS>(crs) != nullptr); + EXPECT_EQ(*(crs->name()->description()), "my name TEST"); + EXPECT_EQ(crs->identifiers().size(), 1); + EXPECT_EQ(crs->ellipsoid()->semiMajorAxis(), Length(2)); + EXPECT_EQ(*(crs->ellipsoid()->inverseFlattening()), Scale(300)); + EXPECT_TRUE(crs->canonicalBoundCRS() != nullptr); + } + { + auto crs = factory->createGeodeticCRS("TEST_GC"); + EXPECT_TRUE(nn_dynamic_pointer_cast<GeographicCRS>(crs) == nullptr); + EXPECT_EQ(*(crs->name()->description()), "my name"); + EXPECT_EQ(crs->identifiers().size(), 1); + EXPECT_EQ(crs->ellipsoid()->semiMajorAxis(), Length(2)); + EXPECT_EQ(*(crs->ellipsoid()->inverseFlattening()), Scale(300)); + } + { + auto crs = factory->createGeodeticCRS("TEST_REF_ANOTHER"); + EXPECT_TRUE(nn_dynamic_pointer_cast<GeographicCRS>(crs) != nullptr); + EXPECT_EQ(*(crs->name()->description()), "my name TEST_REF_ANOTHER"); + EXPECT_EQ(crs->identifiers().size(), 1); + EXPECT_EQ(crs->ellipsoid()->semiMajorAxis(), Length(2)); + EXPECT_EQ(*(crs->ellipsoid()->inverseFlattening()), Scale(300)); + } + + EXPECT_THROW(factory->createGeodeticCRS("TEST_WRONG"), FactoryException); + + EXPECT_THROW(factory->createGeodeticCRS("TEST_RECURSIVE"), + FactoryException); +} + +// --------------------------------------------------------------------------- + +TEST_F(FactoryWithTmpDatabase, custom_projected_crs) { + createStructure(); + populateWithFakeEPSG(); + + ASSERT_TRUE(execute("INSERT INTO projected_crs " + "VALUES('TEST_NS','TEST','my name',NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "'+proj=mbt_s +unused_flag',0);")) + << last_error(); + + ASSERT_TRUE(execute("INSERT INTO projected_crs " + "VALUES('TEST_NS','TEST_BOUND','my name',NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "'+proj=mbt_s +unused_flag +towgs84=1,2,3',0);")) + << last_error(); + + ASSERT_TRUE(execute("INSERT INTO projected_crs " + "VALUES('TEST_NS','TEST_WRONG','my name',NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "'+proj=longlat',0);")) + << last_error(); + + // Unknown ellipsoid + ASSERT_TRUE(execute("INSERT INTO projected_crs " + "VALUES('TEST_NS','TEST_MERC','merc',NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "'+proj=merc +x_0=0 +R=1',0);")) + << last_error(); + + // Well-known ellipsoid + ASSERT_TRUE(execute("INSERT INTO projected_crs " + "VALUES('TEST_NS','TEST_MERC2','merc2',NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "'+proj=merc +x_0=0 +ellps=GRS80',0);")) + << last_error(); + + // WKT1_GDAL + ASSERT_TRUE( + execute("INSERT INTO projected_crs " + "VALUES('TEST_NS','TEST_WKT1_GDAL','WKT1_GDAL',NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "'" + "PROJCS[\"unknown\",\n" + " GEOGCS[\"unknown\",\n" + " DATUM[\"Unknown_based_on_WGS84_ellipsoid\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\n" + " AUTHORITY[\"EPSG\",\"7030\"]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " AUTHORITY[\"EPSG\",\"8901\"]],\n" + " UNIT[\"degree\",0.0174532925199433,\n" + " AUTHORITY[\"EPSG\",\"9122\"]]],\n" + " PROJECTION[\"Mercator_1SP\"],\n" + " PARAMETER[\"central_meridian\",0],\n" + " PARAMETER[\"scale_factor\",1],\n" + " PARAMETER[\"false_easting\",0],\n" + " PARAMETER[\"false_northing\",0],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" + " AXIS[\"Easting\",EAST],\n" + " AXIS[\"Northing\",NORTH]]" + "',0);")) + << last_error(); + + auto factory = + AuthorityFactory::create(DatabaseContext::create(m_ctxt), "TEST_NS"); + { + auto crs = factory->createProjectedCRS("TEST"); + EXPECT_EQ(*(crs->name()->description()), "my name"); + EXPECT_EQ(crs->identifiers().size(), 1); + EXPECT_EQ(crs->derivingConversion()->targetCRS().get(), crs.get()); + EXPECT_EQ( + crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=mbt_s +unused_flag +ellps=WGS84"); + EXPECT_TRUE(crs->canonicalBoundCRS() == nullptr); + } + { + auto crs = factory->createProjectedCRS("TEST_BOUND"); + EXPECT_EQ(*(crs->name()->description()), "my name"); + EXPECT_EQ(crs->identifiers().size(), 1); + EXPECT_EQ(crs->derivingConversion()->targetCRS().get(), crs.get()); + EXPECT_EQ( + crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=mbt_s +unused_flag +ellps=WGS84"); + EXPECT_TRUE(crs->canonicalBoundCRS() != nullptr); + } + + EXPECT_THROW(factory->createProjectedCRS("TEST_WRONG"), FactoryException); + + { + auto obj = + PROJStringParser().createFromPROJString("+proj=merc +a=1 +b=1"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto res = crs->identify(factory); + EXPECT_EQ(res.size(), 1); + if (!res.empty()) { + EXPECT_EQ(res.front().first->nameStr(), "merc"); + } + } + + { + auto obj = + PROJStringParser().createFromPROJString("+proj=merc +ellps=GRS80"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto res = crs->identify(factory); + EXPECT_EQ(res.size(), 1); + if (!res.empty()) { + EXPECT_EQ(res.front().first->nameStr(), "merc2"); + } + } + + { + auto obj = PROJStringParser().createFromPROJString( + "+proj=merc +a=6378137 +rf=298.257222101"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto res = crs->identify(factory); + EXPECT_EQ(res.size(), 1); + if (!res.empty()) { + EXPECT_EQ(res.front().first->nameStr(), "merc2"); + } + } + + { + auto obj = + PROJStringParser().createFromPROJString("+proj=merc +ellps=WGS84"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto res = crs->identify(factory); + EXPECT_EQ(res.size(), 1); + if (!res.empty()) { + EXPECT_EQ(res.front().first->nameStr(), "WKT1_GDAL"); + } + } +} + +// --------------------------------------------------------------------------- + +TEST(factory, attachExtraDatabases_none) { + auto ctxt = DatabaseContext::create(std::string(), {}); + auto factory = AuthorityFactory::create(ctxt, "EPSG"); + auto crs = factory->createGeodeticCRS("4979"); + auto gcrs = nn_dynamic_pointer_cast<GeographicCRS>(crs); +} + +// --------------------------------------------------------------------------- + +#ifndef SQLITE_OPEN_URI +static int MyUnlink(const std::string &filename) { +#ifdef _MSC_VER + return _unlink(filename.c_str()); +#else + return unlink(filename.c_str()); +#endif +} +#endif + +// --------------------------------------------------------------------------- + +TEST(factory, attachExtraDatabases_auxiliary) { + +#ifdef SQLITE_OPEN_URI + std::string auxDbName("file:proj_test_aux.db?mode=memory&cache=shared"); +#else + const char *temp = getenv("TEMP"); + if (!temp) { + temp = getenv("TMP"); + } + if (!temp) { + temp = "/tmp"; + } + std::string auxDbName(std::string(temp) + "/proj_test_aux.db"); + MyUnlink(auxDbName); +#endif + { + sqlite3 *dbAux = nullptr; + sqlite3_open_v2(auxDbName.c_str(), &dbAux, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE +#ifdef SQLITE_OPEN_URI + | SQLITE_OPEN_URI +#endif + , + nullptr); + ASSERT_TRUE(dbAux != nullptr); + ASSERT_TRUE(sqlite3_exec(dbAux, "BEGIN", nullptr, nullptr, nullptr) == + SQLITE_OK); + { + auto ctxt = DatabaseContext::create(); + const auto dbStructure = ctxt->getDatabaseStructure(); + for (const auto &sql : dbStructure) { + if (sql.find("CREATE TRIGGER") == std::string::npos) { + ASSERT_TRUE(sqlite3_exec(dbAux, sql.c_str(), nullptr, + nullptr, nullptr) == SQLITE_OK); + } + } + } + + ASSERT_TRUE( + sqlite3_exec( + dbAux, + "INSERT INTO geodetic_crs VALUES('OTHER','OTHER_4326','WGS " + "84',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6326'," + "'EPSG','1262',NULL,0);", + nullptr, nullptr, nullptr) == SQLITE_OK); + ASSERT_TRUE(sqlite3_exec(dbAux, "COMMIT", nullptr, nullptr, nullptr) == + SQLITE_OK); + + { + auto ctxt = DatabaseContext::create(std::string(), {auxDbName}); + // Look for object located in main DB + { + auto factory = AuthorityFactory::create(ctxt, "EPSG"); + auto crs = factory->createGeodeticCRS("4326"); + auto gcrs = nn_dynamic_pointer_cast<GeographicCRS>(crs); + } + // Look for object located in auxiliary DB + { + auto factory = AuthorityFactory::create(ctxt, "OTHER"); + auto crs = factory->createGeodeticCRS("OTHER_4326"); + auto gcrs = nn_dynamic_pointer_cast<GeographicCRS>(crs); + } + } + + { + auto ctxt = + DatabaseContext::create(std::string(), {auxDbName, ":memory:"}); + // Look for object located in main DB + { + auto factory = AuthorityFactory::create(ctxt, "EPSG"); + auto crs = factory->createGeodeticCRS("4326"); + auto gcrs = nn_dynamic_pointer_cast<GeographicCRS>(crs); + } + // Look for object located in auxiliary DB + { + auto factory = AuthorityFactory::create(ctxt, "OTHER"); + auto crs = factory->createGeodeticCRS("OTHER_4326"); + auto gcrs = nn_dynamic_pointer_cast<GeographicCRS>(crs); + } + } + + { + auto ctxt = DatabaseContext::create(std::string(), {":memory:"}); + // Look for object located in main DB + { + auto factory = AuthorityFactory::create(ctxt, "EPSG"); + auto crs = factory->createGeodeticCRS("4326"); + auto gcrs = nn_dynamic_pointer_cast<GeographicCRS>(crs); + } + // Look for object located in auxiliary DB + { + auto factory = AuthorityFactory::create(ctxt, "OTHER"); + EXPECT_THROW(factory->createGeodeticCRS("OTHER_4326"), + FactoryException); + } + } + + sqlite3_close(dbAux); + } +#ifndef SQLITE_OPEN_URI + MyUnlink(auxDbName); +#endif +} + +// --------------------------------------------------------------------------- + +TEST(factory, attachExtraDatabases_auxiliary_error) { + EXPECT_THROW(DatabaseContext::create(std::string(), {"i_dont_exist_db"}), + FactoryException); +} + +// --------------------------------------------------------------------------- + +TEST(factory, getOfficialNameFromAlias) { + auto ctxt = DatabaseContext::create(std::string(), {}); + auto factory = AuthorityFactory::create(ctxt, std::string()); + std::string outTableName; + std::string outAuthName; + std::string outCode; + + { + auto officialName = factory->getOfficialNameFromAlias( + "GCS_WGS_1984", std::string(), std::string(), outTableName, + outAuthName, outCode); + EXPECT_EQ(officialName, "WGS 84"); + EXPECT_EQ(outTableName, "geodetic_crs"); + EXPECT_EQ(outAuthName, "EPSG"); + EXPECT_EQ(outCode, "4326"); + } + + { + auto officialName = factory->getOfficialNameFromAlias( + "GCS_WGS_1984", "geodetic_crs", "ESRI", outTableName, outAuthName, + outCode); + EXPECT_EQ(officialName, "WGS 84"); + EXPECT_EQ(outTableName, "geodetic_crs"); + EXPECT_EQ(outAuthName, "EPSG"); + EXPECT_EQ(outCode, "4326"); + } + + { + auto officialName = factory->getOfficialNameFromAlias( + "no match", std::string(), std::string(), outTableName, outAuthName, + outCode); + EXPECT_EQ(officialName, ""); + } +} + +// --------------------------------------------------------------------------- + +TEST_F(FactoryWithTmpDatabase, + createOperations_exact_transform_not_whole_area) { + createStructure(); + populateWithFakeEPSG(); + + ASSERT_TRUE( + execute("INSERT INTO other_transformation " + "VALUES('OTHER','PARTIAL_AREA_PERFECT_ACCURACY'," + "'PARTIAL_AREA_PERFECT_ACCURACY',NULL,NULL,'PROJ'," + "'PROJString','+proj=helmert +x=1'," + "'EPSG','4326','EPSG','4326','EPSG','1933',0.0,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,0);")) + << last_error(); + + ASSERT_TRUE( + execute("INSERT INTO other_transformation " + "VALUES('OTHER','WHOLE_AREA_APPROX_ACCURACY'," + "'WHOLE_AREA_APPROX_ACCURACY',NULL,NULL,'PROJ'," + "'PROJString','+proj=helmert +x=2'," + "'EPSG','4326','EPSG','4326','EPSG','1262',1.0,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "NULL,NULL,NULL,NULL,NULL,NULL,0);")) + << last_error(); + + auto dbContext = DatabaseContext::create(m_ctxt); + auto authFactory = + AuthorityFactory::create(dbContext, std::string("OTHER")); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + ctxt->setSpatialCriterion( + CoordinateOperationContext::SpatialCriterion::PARTIAL_INTERSECTION); + auto list = CoordinateOperationFactory::create()->createOperations( + AuthorityFactory::create(dbContext, "EPSG") + ->createCoordinateReferenceSystem("4326"), + AuthorityFactory::create(dbContext, "EPSG") + ->createCoordinateReferenceSystem("4326"), + ctxt); + ASSERT_EQ(list.size(), 2); + EXPECT_EQ(list[0]->nameStr(), "WHOLE_AREA_APPROX_ACCURACY"); + EXPECT_EQ(list[1]->nameStr(), "PARTIAL_AREA_PERFECT_ACCURACY"); +} + +// --------------------------------------------------------------------------- + +TEST(factory, createObjectsFromName) { + auto ctxt = DatabaseContext::create(); + auto factory = AuthorityFactory::create(ctxt, std::string()); + auto factoryEPSG = AuthorityFactory::create(ctxt, "EPSG"); + + EXPECT_EQ(factory->createObjectsFromName("").size(), 0); + + // ellipsoid + 3 geodeticCRS + EXPECT_EQ(factory->createObjectsFromName("WGS 84", {}, false).size(), 4); + + EXPECT_EQ(factory->createObjectsFromName("WGS 84", {}, true, 10).size(), + 10); + + EXPECT_EQ(factory + ->createObjectsFromName( + "WGS 84", {AuthorityFactory::ObjectType::CRS}, false) + .size(), + 3); + + { + auto res = factoryEPSG->createObjectsFromName( + "WGS84", {AuthorityFactory::ObjectType::GEOGRAPHIC_2D_CRS}, true); + EXPECT_EQ(res.size(), 2); // EPSG:4326 and EPSG:4030 + if (!res.empty()) { + EXPECT_EQ(res.front()->getEPSGCode(), 4326); + } + } + + // Prime meridian + EXPECT_EQ(factoryEPSG->createObjectsFromName("Paris", {}, false, 2).size(), + 1); + // Ellipsoid + EXPECT_EQ( + factoryEPSG->createObjectsFromName("Clarke 1880 (IGN)", {}, false, 2) + .size(), + 1); + // Geodetic datum + EXPECT_EQ( + factoryEPSG->createObjectsFromName("Hungarian Datum 1909", {}, false, 2) + .size(), + 1); + // Vertical datum + EXPECT_EQ(factoryEPSG->createObjectsFromName("EGM2008 geoid", {}, false, 2) + .size(), + 1); + // Geodetic CRS + EXPECT_EQ(factoryEPSG + ->createObjectsFromName( + "Unknown datum based upon the Airy 1830 ellipsoid", {}, + false, 2) + .size(), + 1); + // Projected CRS + EXPECT_EQ(factoryEPSG + ->createObjectsFromName( + "Anguilla 1957 / British West Indies Grid", {}, false, 2) + .size(), + 1); + // Vertical CRS + EXPECT_EQ(factoryEPSG->createObjectsFromName("EGM2008 height", {}, false, 2) + .size(), + 1); + // Compound CRS + EXPECT_EQ(factoryEPSG + ->createObjectsFromName( + "KKJ / Finland Uniform Coordinate System + N60 height", + {}, false, 2) + .size(), + 1); + // Conversion + EXPECT_EQ( + factoryEPSG->createObjectsFromName("Belgian Lambert 2008", {}, false, 2) + .size(), + 1); + // Helmert transform + EXPECT_EQ( + factoryEPSG->createObjectsFromName("MGI to ETRS89 (4)", {}, false, 2) + .size(), + 1); + // Grid transform + EXPECT_EQ(factoryEPSG + ->createObjectsFromName("Guam 1963 to NAD83(HARN) (1)", {}, + false, 2) + .size(), + 1); + // Other transform + EXPECT_EQ(factoryEPSG + ->createObjectsFromName( + "Monte Mario (Rome) to Monte Mario (1)", {}, false, 2) + .size(), + 1); + // Concatenated operation + EXPECT_EQ( + factoryEPSG + ->createObjectsFromName("MGI (Ferro) to WGS 84 (2)", {}, false, 2) + .size(), + 1); + + // Deprecated object + EXPECT_EQ(factoryEPSG + ->createObjectsFromName( + "NAD27(CGQ77) / SCoPQ zone 2 (deprecated)", {}, false, 2) + .size(), + 1); + + const auto types = std::vector<AuthorityFactory::ObjectType>{ + AuthorityFactory::ObjectType::PRIME_MERIDIAN, + AuthorityFactory::ObjectType::ELLIPSOID, + AuthorityFactory::ObjectType::DATUM, + AuthorityFactory::ObjectType::GEODETIC_REFERENCE_FRAME, + AuthorityFactory::ObjectType::VERTICAL_REFERENCE_FRAME, + AuthorityFactory::ObjectType::CRS, + AuthorityFactory::ObjectType::GEODETIC_CRS, + AuthorityFactory::ObjectType::GEOCENTRIC_CRS, + AuthorityFactory::ObjectType::GEOGRAPHIC_CRS, + AuthorityFactory::ObjectType::GEOGRAPHIC_2D_CRS, + AuthorityFactory::ObjectType::GEOGRAPHIC_3D_CRS, + AuthorityFactory::ObjectType::PROJECTED_CRS, + AuthorityFactory::ObjectType::VERTICAL_CRS, + AuthorityFactory::ObjectType::COMPOUND_CRS, + AuthorityFactory::ObjectType::COORDINATE_OPERATION, + AuthorityFactory::ObjectType::CONVERSION, + AuthorityFactory::ObjectType::TRANSFORMATION, + AuthorityFactory::ObjectType::CONCATENATED_OPERATION, + }; + for (const auto type : types) { + factory->createObjectsFromName("i_dont_exist", {type}, false, 1); + } + factory->createObjectsFromName("i_dont_exist", types, false, 1); +} + +} // namespace diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp new file mode 100644 index 00000000..7d26d82a --- /dev/null +++ b/test/unit/test_io.cpp @@ -0,0 +1,7148 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: Test ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#include "gtest_include.h" + +// to be able to use internal::toString +#define FROM_PROJ_CPP + +#include "proj/common.hpp" +#include "proj/coordinateoperation.hpp" +#include "proj/coordinatesystem.hpp" +#include "proj/crs.hpp" +#include "proj/datum.hpp" +#include "proj/io.hpp" +#include "proj/metadata.hpp" +#include "proj/util.hpp" + +#include "proj/internal/internal.hpp" + +#include <string> + +using namespace osgeo::proj::common; +using namespace osgeo::proj::crs; +using namespace osgeo::proj::cs; +using namespace osgeo::proj::datum; +using namespace osgeo::proj::internal; +using namespace osgeo::proj::io; +using namespace osgeo::proj::metadata; +using namespace osgeo::proj::operation; +using namespace osgeo::proj::util; + +// --------------------------------------------------------------------------- + +TEST(io, wkt_parsing) { + { + auto n = WKTNode::createFrom("MYNODE[]"); + EXPECT_EQ(n->value(), "MYNODE"); + EXPECT_TRUE(n->children().empty()); + EXPECT_EQ(n->toString(), "MYNODE"); + } + { + auto n = WKTNode::createFrom(" MYNODE [ ] "); + EXPECT_EQ(n->value(), "MYNODE"); + EXPECT_TRUE(n->children().empty()); + } + EXPECT_THROW(WKTNode::createFrom(""), ParsingException); + EXPECT_THROW(WKTNode::createFrom("x"), ParsingException); + EXPECT_THROW(WKTNode::createFrom("x,"), ParsingException); + EXPECT_THROW(WKTNode::createFrom("x["), ParsingException); + EXPECT_THROW(WKTNode::createFrom("["), ParsingException); + + { + auto n = WKTNode::createFrom("MYNODE[\"x\"]"); + EXPECT_EQ(n->value(), "MYNODE"); + ASSERT_EQ(n->children().size(), 1); + EXPECT_EQ(n->children()[0]->value(), "\"x\""); + EXPECT_EQ(n->toString(), "MYNODE[\"x\"]"); + } + + EXPECT_THROW(WKTNode::createFrom("MYNODE[\"x\""), ParsingException); + + { + auto n = WKTNode::createFrom("MYNODE[ \"x\" ]"); + EXPECT_EQ(n->value(), "MYNODE"); + ASSERT_EQ(n->children().size(), 1); + EXPECT_EQ(n->children()[0]->value(), "\"x\""); + } + + { + auto n = WKTNode::createFrom("MYNODE[\"x[\",1]"); + EXPECT_EQ(n->value(), "MYNODE"); + ASSERT_EQ(n->children().size(), 2); + EXPECT_EQ(n->children()[0]->value(), "\"x[\""); + EXPECT_EQ(n->children()[1]->value(), "1"); + EXPECT_EQ(n->toString(), "MYNODE[\"x[\",1]"); + } + + EXPECT_THROW(WKTNode::createFrom("MYNODE[\"x\","), ParsingException); + + { + auto n = WKTNode::createFrom("A[B[y]]"); + EXPECT_EQ(n->value(), "A"); + ASSERT_EQ(n->children().size(), 1); + EXPECT_EQ(n->children()[0]->value(), "B"); + ASSERT_EQ(n->children()[0]->children().size(), 1); + EXPECT_EQ(n->children()[0]->children()[0]->value(), "y"); + EXPECT_EQ(n->toString(), "A[B[y]]"); + } + + EXPECT_THROW(WKTNode::createFrom("A[B["), ParsingException); + + std::string str; + for (int i = 0; i < 17; i++) { + str = "A[" + str + "]"; + } + EXPECT_THROW(WKTNode::createFrom(str), ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(io, wkt_parsing_with_parenthesis) { + + auto n = WKTNode::createFrom("A(\"x\",B(\"y\"))"); + EXPECT_EQ(n->toString(), "A[\"x\",B[\"y\"]]"); +} + +// --------------------------------------------------------------------------- + +TEST(io, wkt_parsing_with_double_quotes_inside) { + + auto n = WKTNode::createFrom("A[\"xy\"\"z\"]"); + EXPECT_EQ(n->children()[0]->value(), "\"xy\"z\""); + EXPECT_EQ(n->toString(), "A[\"xy\"\"z\"]"); + + EXPECT_THROW(WKTNode::createFrom("A[\"x\""), ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(io, wkt_parsing_with_printed_quotes) { + static const std::string startPrintedQuote("\xE2\x80\x9C"); + static const std::string endPrintedQuote("\xE2\x80\x9D"); + + auto n = WKTNode::createFrom("A[" + startPrintedQuote + "x" + + endPrintedQuote + "]"); + EXPECT_EQ(n->children()[0]->value(), "\"x\""); + EXPECT_EQ(n->toString(), "A[\"x\"]"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, sphere) { + auto obj = WKTParser().createFromWKT( + "ELLIPSOID[\"Sphere\",6378137,0,LENGTHUNIT[\"metre\",1]]"); + auto ellipsoid = nn_dynamic_pointer_cast<Ellipsoid>(obj); + ASSERT_TRUE(ellipsoid != nullptr); + EXPECT_TRUE(ellipsoid->isSphere()); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, datum_with_ANCHOR) { + auto obj = WKTParser().createFromWKT( + "DATUM[\"WGS_1984 with anchor\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]],\n" + " ID[\"EPSG\",7030]],\n" + " ANCHOR[\"My anchor\"]]"); + auto datum = nn_dynamic_pointer_cast<GeodeticReferenceFrame>(obj); + ASSERT_TRUE(datum != nullptr); + EXPECT_EQ(datum->ellipsoid()->celestialBody(), "Earth"); + EXPECT_EQ(datum->primeMeridian()->nameStr(), "Greenwich"); + auto anchor = datum->anchorDefinition(); + EXPECT_TRUE(anchor.has_value()); + EXPECT_EQ(*anchor, "My anchor"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, datum_no_pm_not_earth) { + auto obj = WKTParser().createFromWKT("DATUM[\"unnamed\",\n" + " ELLIPSOID[\"unnamed\",1,0,\n" + " LENGTHUNIT[\"metre\",1]]]"); + auto datum = nn_dynamic_pointer_cast<GeodeticReferenceFrame>(obj); + ASSERT_TRUE(datum != nullptr); + EXPECT_EQ(datum->ellipsoid()->celestialBody(), "Non-Earth body"); + EXPECT_EQ(datum->primeMeridian()->nameStr(), "Reference meridian"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, dynamic_geodetic_reference_frame) { + auto obj = WKTParser().createFromWKT( + "GEOGCRS[\"WGS 84 (G1762)\"," + "DYNAMIC[FRAMEEPOCH[2005.0]]," + "TRF[\"World Geodetic System 1984 (G1762)\"," + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]," + " ANCHOR[\"My anchor\"]]," + "CS[ellipsoidal,3]," + " AXIS[\"(lat)\",north,ANGLEUNIT[\"degree\",0.0174532925199433]]," + " AXIS[\"(lon)\",east,ANGLEUNIT[\"degree\",0.0174532925199433]]," + " AXIS[\"ellipsoidal height (h)\",up,LENGTHUNIT[\"metre\",1.0]]" + "]"); + auto crs = nn_dynamic_pointer_cast<GeodeticCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto dgrf = + std::dynamic_pointer_cast<DynamicGeodeticReferenceFrame>(crs->datum()); + ASSERT_TRUE(dgrf != nullptr); + auto anchor = dgrf->anchorDefinition(); + EXPECT_TRUE(anchor.has_value()); + EXPECT_EQ(*anchor, "My anchor"); + EXPECT_TRUE(dgrf->frameReferenceEpoch() == + Measure(2005.0, UnitOfMeasure::YEAR)); + auto model = dgrf->deformationModelName(); + EXPECT_TRUE(!model.has_value()); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, dynamic_geodetic_reference_frame_with_model) { + auto obj = WKTParser().createFromWKT( + "GEOGCRS[\"WGS 84 (G1762)\"," + "DYNAMIC[FRAMEEPOCH[2005.0],MODEL[\"my_model\"]]," + "TRF[\"World Geodetic System 1984 (G1762)\"," + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]," + " ANCHOR[\"My anchor\"]]," + "CS[ellipsoidal,3]," + " AXIS[\"(lat)\",north,ANGLEUNIT[\"degree\",0.0174532925199433]]," + " AXIS[\"(lon)\",east,ANGLEUNIT[\"degree\",0.0174532925199433]]," + " AXIS[\"ellipsoidal height (h)\",up,LENGTHUNIT[\"metre\",1.0]]" + "]"); + auto crs = nn_dynamic_pointer_cast<GeodeticCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto dgrf = + std::dynamic_pointer_cast<DynamicGeodeticReferenceFrame>(crs->datum()); + ASSERT_TRUE(dgrf != nullptr); + auto anchor = dgrf->anchorDefinition(); + EXPECT_TRUE(anchor.has_value()); + EXPECT_EQ(*anchor, "My anchor"); + EXPECT_TRUE(dgrf->frameReferenceEpoch() == + Measure(2005.0, UnitOfMeasure::YEAR)); + auto model = dgrf->deformationModelName(); + EXPECT_TRUE(model.has_value()); + EXPECT_EQ(*model, "my_model"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, dynamic_geodetic_reference_frame_with_velocitygrid) { + auto obj = WKTParser().createFromWKT( + "GEOGCRS[\"WGS 84 (G1762)\"," + "DYNAMIC[FRAMEEPOCH[2005.0],VELOCITYGRID[\"my_model\"]]," + "TRF[\"World Geodetic System 1984 (G1762)\"," + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]," + " ANCHOR[\"My anchor\"]]," + "CS[ellipsoidal,3]," + " AXIS[\"(lat)\",north,ANGLEUNIT[\"degree\",0.0174532925199433]]," + " AXIS[\"(lon)\",east,ANGLEUNIT[\"degree\",0.0174532925199433]]," + " AXIS[\"ellipsoidal height (h)\",up,LENGTHUNIT[\"metre\",1.0]]" + "]"); + auto crs = nn_dynamic_pointer_cast<GeodeticCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto dgrf = + std::dynamic_pointer_cast<DynamicGeodeticReferenceFrame>(crs->datum()); + ASSERT_TRUE(dgrf != nullptr); + auto anchor = dgrf->anchorDefinition(); + EXPECT_TRUE(anchor.has_value()); + EXPECT_EQ(*anchor, "My anchor"); + EXPECT_TRUE(dgrf->frameReferenceEpoch() == + Measure(2005.0, UnitOfMeasure::YEAR)); + auto model = dgrf->deformationModelName(); + EXPECT_TRUE(model.has_value()); + EXPECT_EQ(*model, "my_model"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, geogcrs_with_ensemble) { + auto obj = WKTParser().createFromWKT( + "GEOGCRS[\"WGS 84\"," + "ENSEMBLE[\"WGS 84 ensemble\"," + " MEMBER[\"WGS 84 (TRANSIT)\"]," + " MEMBER[\"WGS 84 (G730)\"]," + " MEMBER[\"WGS 84 (G834)\"]," + " MEMBER[\"WGS 84 (G1150)\"]," + " MEMBER[\"WGS 84 (G1674)\"]," + " MEMBER[\"WGS 84 (G1762)\"]," + " ELLIPSOID[\"WGS " + "84\",6378137,298.2572236,LENGTHUNIT[\"metre\",1.0]]," + " ENSEMBLEACCURACY[2]" + "]," + "CS[ellipsoidal,3]," + " AXIS[\"(lat)\",north,ANGLEUNIT[\"degree\",0.0174532925199433]]," + " AXIS[\"(lon)\",east,ANGLEUNIT[\"degree\",0.0174532925199433]]," + " AXIS[\"ellipsoidal height (h)\",up,LENGTHUNIT[\"metre\",1.0]]" + "]"); + auto crs = nn_dynamic_pointer_cast<GeodeticCRS>(obj); + ASSERT_TRUE(crs != nullptr); + ASSERT_TRUE(crs->datum() == nullptr); + ASSERT_TRUE(crs->datumEnsemble() != nullptr); + EXPECT_EQ(crs->datumEnsemble()->datums().size(), 6); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_geogcrs_with_ensemble) { + auto wkt = + "GEOGCRS[\"WGS 84\"," + "ENSEMBLE[\"WGS 84 ensemble\"," + " MEMBER[\"WGS 84 (TRANSIT)\"]," + " MEMBER[\"WGS 84 (G730)\"]," + " MEMBER[\"WGS 84 (G834)\"]," + " MEMBER[\"WGS 84 (G1150)\"]," + " MEMBER[\"WGS 84 (G1674)\"]," + " MEMBER[\"WGS 84 (G1762)\"]," + " ENSEMBLEACCURACY[2]" + "]," + "CS[ellipsoidal,3]," + " AXIS[\"(lat)\",north,ANGLEUNIT[\"degree\",0.0174532925199433]]," + " AXIS[\"(lon)\",east,ANGLEUNIT[\"degree\",0.0174532925199433]]," + " AXIS[\"ellipsoidal height (h)\",up,LENGTHUNIT[\"metre\",1.0]]" + "]"; + EXPECT_THROW(WKTParser().createFromWKT(wkt), ParsingException); +} + +// --------------------------------------------------------------------------- + +static void checkEPSG_4326(GeographicCRSPtr crs, bool latLong = true, + bool checkEPSGCodes = true) { + if (checkEPSGCodes) { + ASSERT_EQ(crs->identifiers().size(), 1); + EXPECT_EQ(crs->identifiers()[0]->code(), "4326"); + EXPECT_EQ(*(crs->identifiers()[0]->codeSpace()), "EPSG"); + } + EXPECT_EQ(crs->nameStr(), "WGS 84"); + + auto cs = crs->coordinateSystem(); + ASSERT_EQ(cs->axisList().size(), 2); + if (latLong) { + EXPECT_EQ(cs->axisList()[0]->nameStr(), "Latitude"); + EXPECT_EQ(cs->axisList()[0]->abbreviation(), "lat"); + EXPECT_EQ(cs->axisList()[0]->direction(), AxisDirection::NORTH); + + EXPECT_EQ(cs->axisList()[1]->nameStr(), "Longitude"); + EXPECT_EQ(cs->axisList()[1]->abbreviation(), "lon"); + EXPECT_EQ(cs->axisList()[1]->direction(), AxisDirection::EAST); + } else { + EXPECT_EQ(cs->axisList()[0]->nameStr(), "Longitude"); + EXPECT_EQ(cs->axisList()[0]->abbreviation(), "lon"); + EXPECT_EQ(cs->axisList()[0]->direction(), AxisDirection::EAST); + + EXPECT_EQ(cs->axisList()[1]->nameStr(), "Latitude"); + EXPECT_EQ(cs->axisList()[1]->abbreviation(), "lat"); + EXPECT_EQ(cs->axisList()[1]->direction(), AxisDirection::NORTH); + } + + auto datum = crs->datum(); + if (checkEPSGCodes) { + ASSERT_EQ(datum->identifiers().size(), 1); + EXPECT_EQ(datum->identifiers()[0]->code(), "6326"); + EXPECT_EQ(*(datum->identifiers()[0]->codeSpace()), "EPSG"); + } + EXPECT_EQ(datum->nameStr(), "World Geodetic System 1984"); + + auto ellipsoid = datum->ellipsoid(); + EXPECT_EQ(ellipsoid->semiMajorAxis().value(), 6378137.0); + EXPECT_EQ(ellipsoid->semiMajorAxis().unit(), UnitOfMeasure::METRE); + EXPECT_EQ(ellipsoid->inverseFlattening()->value(), 298.257223563); + if (checkEPSGCodes) { + ASSERT_EQ(ellipsoid->identifiers().size(), 1); + EXPECT_EQ(ellipsoid->identifiers()[0]->code(), "7030"); + EXPECT_EQ(*(ellipsoid->identifiers()[0]->codeSpace()), "EPSG"); + } + EXPECT_EQ(ellipsoid->nameStr(), "WGS 84"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt1_EPSG_4326) { + auto obj = WKTParser().createFromWKT( + "GEOGCS[\"WGS 84\"," + " DATUM[\"WGS_1984\"," + " SPHEROID[\"WGS 84\",6378137,298.257223563," + " AUTHORITY[\"EPSG\",\"7030\"]]," + " AUTHORITY[\"EPSG\",\"6326\"]]," + " PRIMEM[\"Greenwich\",0," + " AUTHORITY[\"EPSG\",\"8901\"]]," + " UNIT[\"degree\",0.0174532925199433," + " AUTHORITY[\"EPSG\",\"9122\"]]," + " AUTHORITY[\"EPSG\",\"4326\"]]"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + checkEPSG_4326(crs, false /* longlat order */); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt1_EPSG_4807_grad_mess) { + auto obj = WKTParser().createFromWKT( + "GEOGCS[\"NTF (Paris)\",\n" + " DATUM[\"Nouvelle_Triangulation_Francaise_Paris\",\n" + " SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.466021293627,\n" + " AUTHORITY[\"EPSG\",\"6807\"]],\n" + " AUTHORITY[\"EPSG\",\"6807\"]],\n" + /* WKT1_GDAL weirdness: PRIMEM is converted to degree */ + " PRIMEM[\"Paris\",2.33722917,\n" + " AUTHORITY[\"EPSG\",\"8903\"]],\n" + " UNIT[\"grad\",0.015707963267949,\n" + " AUTHORITY[\"EPSG\",9105]],\n" + " AXIS[\"latitude\",NORTH],\n" + " AXIS[\"longitude\",EAST],\n" + " AUTHORITY[\"EPSG\",\"4807\"]]"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto datum = crs->datum(); + auto primem = datum->primeMeridian(); + EXPECT_EQ(primem->longitude().unit(), UnitOfMeasure::GRAD); + // Check that we have corrected the value that was in degree into grad. + EXPECT_EQ(primem->longitude().value(), 2.5969213); +} + +// --------------------------------------------------------------------------- + +static std::string contentWKT2_EPSG_4326( + "[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]],\n" + " ID[\"EPSG\",7030]],\n" + " ID[\"EPSG\",6326]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]],\n" + " ID[\"EPSG\",8901]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " ID[\"EPSG\",4326]]"); + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt2_GEODCRS_EPSG_4326) { + auto obj = WKTParser().createFromWKT("GEODCRS" + contentWKT2_EPSG_4326); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + checkEPSG_4326(crs); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt2_long_GEODETICCRS_EPSG_4326) { + auto obj = WKTParser().createFromWKT("GEODETICCRS" + contentWKT2_EPSG_4326); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + checkEPSG_4326(crs); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt2_2018_GEOGCRS_EPSG_4326) { + auto obj = WKTParser().createFromWKT("GEOGCRS" + contentWKT2_EPSG_4326); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + checkEPSG_4326(crs); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt2_2018_long_GEOGRAPHICCRS_EPSG_4326) { + auto obj = + WKTParser().createFromWKT("GEOGRAPHICCRS" + contentWKT2_EPSG_4326); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + checkEPSG_4326(crs); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt2_simplified_EPSG_4326) { + auto obj = WKTParser().createFromWKT( + "GEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude (lat)\",north],\n" // test "name + // (abbreviation)" + " AXIS[\"longitude (lon)\",east],\n" + " UNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",4326]]"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + checkEPSG_4326(crs, true /* latlong */, false /* no EPSG codes */); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt2_GEODETICDATUM) { + auto obj = WKTParser().createFromWKT( + "GEODCRS[\"WGS 84\",\n" + " GEODETICDATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"(lat)\",north],\n" // test "(abbreviation)" + " AXIS[\"(lon)\",east],\n" + " UNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",4326]]"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + checkEPSG_4326(crs, true /* latlong */, false /* no EPSG codes */); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt2_TRF) { + auto obj = WKTParser().createFromWKT( + "GEODCRS[\"WGS 84\",\n" + " TRF[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north],\n" + " AXIS[\"longitude\",east],\n" + " UNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",4326]]"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + checkEPSG_4326(crs, true /* latlong */, false /* no EPSG codes */); +} + +// --------------------------------------------------------------------------- + +static void checkEPSG_4979(GeographicCRSPtr crs) { + ASSERT_EQ(crs->identifiers().size(), 1); + EXPECT_EQ(crs->identifiers()[0]->code(), "4979"); + EXPECT_EQ(*(crs->identifiers()[0]->codeSpace()), "EPSG"); + EXPECT_EQ(crs->nameStr(), "WGS 84"); + + auto cs = crs->coordinateSystem(); + ASSERT_EQ(cs->axisList().size(), 3); + EXPECT_EQ(cs->axisList()[0]->nameStr(), "Latitude"); + EXPECT_EQ(cs->axisList()[0]->abbreviation(), "lat"); + EXPECT_EQ(cs->axisList()[0]->direction(), AxisDirection::NORTH); + + EXPECT_EQ(cs->axisList()[1]->nameStr(), "Longitude"); + EXPECT_EQ(cs->axisList()[1]->abbreviation(), "lon"); + EXPECT_EQ(cs->axisList()[1]->direction(), AxisDirection::EAST); + + EXPECT_EQ(cs->axisList()[2]->nameStr(), "Ellipsoidal height"); + EXPECT_EQ(cs->axisList()[2]->abbreviation(), "h"); + EXPECT_EQ(cs->axisList()[2]->direction(), AxisDirection::UP); + + auto datum = crs->datum(); + EXPECT_EQ(datum->nameStr(), "World Geodetic System 1984"); + + auto ellipsoid = datum->ellipsoid(); + EXPECT_EQ(ellipsoid->semiMajorAxis().value(), 6378137.0); + EXPECT_EQ(ellipsoid->semiMajorAxis().unit(), UnitOfMeasure::METRE); + EXPECT_EQ(ellipsoid->inverseFlattening()->value(), 298.257223563); + EXPECT_EQ(ellipsoid->nameStr(), "WGS 84"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt2_EPSG_4979) { + auto obj = WKTParser().createFromWKT( + "GEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " CS[ellipsoidal,3],\n" + " AXIS[\"latitude\",north,\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"longitude\",east,\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"ellipsoidal height\",up,\n" + " UNIT[\"metre\",1]],\n" + " ID[\"EPSG\",4979]]"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + checkEPSG_4979(crs); +} + +// --------------------------------------------------------------------------- + +static void checkGeocentric(GeodeticCRSPtr crs) { + // Explicitly check this is NOT a GeographicCRS + EXPECT_TRUE(!dynamic_cast<GeographicCRS *>(crs.get())); + + EXPECT_EQ(crs->nameStr(), "WGS 84 (geocentric)"); + + EXPECT_TRUE(crs->isGeocentric()); + auto cs = crs->coordinateSystem(); + ASSERT_EQ(cs->axisList().size(), 3); + + EXPECT_EQ(cs->axisList()[0]->nameStr(), "Geocentric X"); + EXPECT_EQ(cs->axisList()[0]->abbreviation(), "X"); + EXPECT_EQ(cs->axisList()[0]->direction(), AxisDirection::GEOCENTRIC_X); + + EXPECT_EQ(cs->axisList()[1]->nameStr(), "Geocentric Y"); + EXPECT_EQ(cs->axisList()[1]->abbreviation(), "Y"); + EXPECT_EQ(cs->axisList()[1]->direction(), AxisDirection::GEOCENTRIC_Y); + + EXPECT_EQ(cs->axisList()[2]->nameStr(), "Geocentric Z"); + EXPECT_EQ(cs->axisList()[2]->abbreviation(), "Z"); + EXPECT_EQ(cs->axisList()[2]->direction(), AxisDirection::GEOCENTRIC_Z); + + auto datum = crs->datum(); + EXPECT_EQ(datum->nameStr(), "World Geodetic System 1984"); + + auto ellipsoid = datum->ellipsoid(); + EXPECT_EQ(ellipsoid->semiMajorAxis().value(), 6378137.0); + EXPECT_EQ(ellipsoid->semiMajorAxis().unit(), UnitOfMeasure::METRE); + EXPECT_EQ(ellipsoid->inverseFlattening()->value(), 298.257223563); + EXPECT_EQ(ellipsoid->nameStr(), "WGS 84"); + + auto primem = datum->primeMeridian(); + ASSERT_EQ(primem->longitude().unit(), UnitOfMeasure::DEGREE); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt2_geocentric) { + auto wkt = "GEODCRS[\"WGS 84 (geocentric)\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]],\n" + " ID[\"EPSG\",7030]],\n" + " ID[\"EPSG\",6326]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]],\n" + " ID[\"EPSG\",8901]],\n" + " CS[Cartesian,3],\n" + " AXIS[\"(X)\",geocentricX,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " AXIS[\"(Y)\",geocentricY,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " AXIS[\"(Z)\",geocentricZ,\n" + " ORDER[3],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " ID[\"EPSG\",4328]]"; + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<GeodeticCRS>(obj); + ASSERT_TRUE(crs != nullptr); + checkGeocentric(crs); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt2_simplified_geocentric) { + auto wkt = "GEODCRS[\"WGS 84 (geocentric)\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " CS[Cartesian,3],\n" + " AXIS[\"(X)\",geocentricX],\n" + " AXIS[\"(Y)\",geocentricY],\n" + " AXIS[\"(Z)\",geocentricZ],\n" + " UNIT[\"metre\",1],\n" + " ID[\"EPSG\",4328]]"; + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<GeodeticCRS>(obj); + ASSERT_TRUE(crs != nullptr); + checkGeocentric(crs); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt1_geocentric) { + auto wkt = "GEOCCS[\"WGS 84 (geocentric)\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\n" + " AUTHORITY[\"EPSG\",\"7030\"]],\n" + " AUTHORITY[\"EPSG\",\"6326\"]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " AUTHORITY[\"EPSG\",\"8901\"]],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",9001]],\n" + " AXIS[\"Geocentric X\",OTHER],\n" + " AXIS[\"Geocentric Y\",OTHER],\n" + " AXIS[\"Geocentric Z\",NORTH],\n" + " AUTHORITY[\"EPSG\",\"4328\"]]"; + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<GeodeticCRS>(obj); + ASSERT_TRUE(crs != nullptr); + checkGeocentric(crs); +} + +// --------------------------------------------------------------------------- + +static void checkProjected(ProjectedCRSPtr crs, bool checkEPSGCodes = true) { + EXPECT_EQ(crs->nameStr(), "WGS 84 / UTM zone 31N"); + ASSERT_EQ(crs->identifiers().size(), 1); + EXPECT_EQ(crs->identifiers()[0]->code(), "32631"); + EXPECT_EQ(*(crs->identifiers()[0]->codeSpace()), "EPSG"); + + auto geogCRS = nn_dynamic_pointer_cast<GeographicCRS>(crs->baseCRS()); + ASSERT_TRUE(geogCRS != nullptr); + checkEPSG_4326(NN_CHECK_ASSERT(geogCRS), true, checkEPSGCodes); + + auto conversion = crs->derivingConversion(); + EXPECT_EQ(conversion->nameStr(), "UTM zone 31N"); + auto method = conversion->method(); + EXPECT_EQ(method->nameStr(), "Transverse Mercator"); + auto values = conversion->parameterValues(); + ASSERT_EQ(values.size(), 5); + { + const auto &opParamvalue = + nn_dynamic_pointer_cast<OperationParameterValue>(values[0]); + ASSERT_TRUE(opParamvalue); + const auto ¶mName = opParamvalue->parameter()->nameStr(); + const auto ¶meterValue = opParamvalue->parameterValue(); + EXPECT_EQ(paramName, "Latitude of natural origin"); + EXPECT_EQ(parameterValue->type(), ParameterValue::Type::MEASURE); + auto measure = parameterValue->value(); + EXPECT_EQ(measure.unit(), UnitOfMeasure::DEGREE); + EXPECT_EQ(measure.value(), 0); + } + { + const auto &opParamvalue = + nn_dynamic_pointer_cast<OperationParameterValue>(values[1]); + ASSERT_TRUE(opParamvalue); + const auto ¶mName = opParamvalue->parameter()->nameStr(); + const auto ¶meterValue = opParamvalue->parameterValue(); + EXPECT_EQ(paramName, "Longitude of natural origin"); + EXPECT_EQ(parameterValue->type(), ParameterValue::Type::MEASURE); + auto measure = parameterValue->value(); + EXPECT_EQ(measure.unit(), UnitOfMeasure::DEGREE); + EXPECT_EQ(measure.value(), 3); + } + { + const auto &opParamvalue = + nn_dynamic_pointer_cast<OperationParameterValue>(values[2]); + ASSERT_TRUE(opParamvalue); + const auto ¶mName = opParamvalue->parameter()->nameStr(); + const auto ¶meterValue = opParamvalue->parameterValue(); + EXPECT_EQ(paramName, "Scale factor at natural origin"); + EXPECT_EQ(parameterValue->type(), ParameterValue::Type::MEASURE); + auto measure = parameterValue->value(); + EXPECT_EQ(measure.unit(), UnitOfMeasure::SCALE_UNITY); + EXPECT_EQ(measure.value(), 0.9996); + } + { + const auto &opParamvalue = + nn_dynamic_pointer_cast<OperationParameterValue>(values[3]); + ASSERT_TRUE(opParamvalue); + const auto ¶mName = opParamvalue->parameter()->nameStr(); + const auto ¶meterValue = opParamvalue->parameterValue(); + EXPECT_EQ(paramName, "False easting"); + EXPECT_EQ(parameterValue->type(), ParameterValue::Type::MEASURE); + auto measure = parameterValue->value(); + EXPECT_EQ(measure.unit(), UnitOfMeasure::METRE); + EXPECT_EQ(measure.value(), 500000); + } + { + const auto &opParamvalue = + nn_dynamic_pointer_cast<OperationParameterValue>(values[4]); + ASSERT_TRUE(opParamvalue); + const auto ¶mName = opParamvalue->parameter()->nameStr(); + const auto ¶meterValue = opParamvalue->parameterValue(); + EXPECT_EQ(paramName, "False northing"); + EXPECT_EQ(parameterValue->type(), ParameterValue::Type::MEASURE); + auto measure = parameterValue->value(); + EXPECT_EQ(measure.unit(), UnitOfMeasure::METRE); + EXPECT_EQ(measure.value(), 0); + } + + auto cs = crs->coordinateSystem(); + ASSERT_EQ(cs->axisList().size(), 2); + + EXPECT_EQ(cs->axisList()[0]->nameStr(), "Easting"); + EXPECT_EQ(cs->axisList()[0]->abbreviation(), "E"); + EXPECT_EQ(cs->axisList()[0]->direction(), AxisDirection::EAST); + + EXPECT_EQ(cs->axisList()[1]->nameStr(), "Northing"); + EXPECT_EQ(cs->axisList()[1]->abbreviation(), "N"); + EXPECT_EQ(cs->axisList()[1]->direction(), AxisDirection::NORTH); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt1_projected) { + auto wkt = "PROJCS[\"WGS 84 / UTM zone 31N\",\n" + " GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\n" + " AUTHORITY[\"EPSG\",\"7030\"]],\n" + " AUTHORITY[\"EPSG\",\"6326\"]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " AUTHORITY[\"EPSG\",\"8901\"]],\n" + " UNIT[\"degree\",0.0174532925199433,\n" + " AUTHORITY[\"EPSG\",9122]],\n" + " AXIS[\"latitude\",NORTH],\n" + " AXIS[\"longitude\",EAST],\n" + " AUTHORITY[\"EPSG\",\"4326\"]],\n" + " PROJECTION[\"Transverse_Mercator\"],\n" + " PARAMETER[\"latitude_of_origin\",0],\n" + " PARAMETER[\"central_meridian\",3],\n" + " PARAMETER[\"scale_factor\",0.9996],\n" + " PARAMETER[\"false_easting\",500000],\n" + " PARAMETER[\"false_northing\",0],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",9001]],\n" + " AXIS[\"(E)\",EAST],\n" + " AXIS[\"(N)\",NORTH],\n" + " AUTHORITY[\"EPSG\",\"32631\"]]"; + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + checkProjected(crs); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt1_projected_no_axis) { + auto wkt = "PROJCS[\"WGS 84 / UTM zone 31N\",\n" + " GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\n" + " AUTHORITY[\"EPSG\",\"7030\"]],\n" + " AUTHORITY[\"EPSG\",\"6326\"]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " AUTHORITY[\"EPSG\",\"8901\"]],\n" + " UNIT[\"degree\",0.0174532925199433,\n" + " AUTHORITY[\"EPSG\",9122]],\n" + " AXIS[\"latitude\",NORTH],\n" + " AXIS[\"longitude\",EAST],\n" + " AUTHORITY[\"EPSG\",\"4326\"]],\n" + " PROJECTION[\"Transverse_Mercator\"],\n" + " PARAMETER[\"latitude_of_origin\",0],\n" + " PARAMETER[\"central_meridian\",3],\n" + " PARAMETER[\"scale_factor\",0.9996],\n" + " PARAMETER[\"false_easting\",500000],\n" + " PARAMETER[\"false_northing\",0],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",9001]],\n" + " AUTHORITY[\"EPSG\",\"32631\"]]"; + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + checkProjected(crs); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt1_krovak_south_west) { + auto wkt = + "PROJCS[\"S-JTSK / Krovak\"," + " GEOGCS[\"S-JTSK\"," + " DATUM[\"System_Jednotne_Trigonometricke_Site_Katastralni\"," + " SPHEROID[\"Bessel 1841\",6377397.155,299.1528128," + " AUTHORITY[\"EPSG\",\"7004\"]]," + " AUTHORITY[\"EPSG\",\"6156\"]]," + " PRIMEM[\"Greenwich\",0," + " AUTHORITY[\"EPSG\",\"8901\"]]," + " UNIT[\"degree\",0.0174532925199433," + " AUTHORITY[\"EPSG\",\"9122\"]]," + " AUTHORITY[\"EPSG\",\"4156\"]]," + " PROJECTION[\"Krovak\"]," + " PARAMETER[\"latitude_of_center\",49.5]," + " PARAMETER[\"longitude_of_center\",24.83333333333333]," + " PARAMETER[\"azimuth\",30.28813972222222]," + " PARAMETER[\"pseudo_standard_parallel_1\",78.5]," + " PARAMETER[\"scale_factor\",0.9999]," + " PARAMETER[\"false_easting\",0]," + " PARAMETER[\"false_northing\",0]," + " UNIT[\"metre\",1," + " AUTHORITY[\"EPSG\",\"9001\"]]," + " AXIS[\"X\",SOUTH]," + " AXIS[\"Y\",WEST]," + " AUTHORITY[\"EPSG\",\"5513\"]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->derivingConversion()->method()->nameStr(), "Krovak"); + + auto expected_wkt2 = + "PROJCRS[\"S-JTSK / Krovak\",\n" + " BASEGEODCRS[\"S-JTSK\",\n" + " DATUM[\"System_Jednotne_Trigonometricke_Site_Katastralni\",\n" + " ELLIPSOID[\"Bessel 1841\",6377397.155,299.1528128,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " CONVERSION[\"unnamed\",\n" + " METHOD[\"Krovak\",\n" + " ID[\"EPSG\",9819]],\n" + " PARAMETER[\"Latitude of projection centre\",49.5,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8811]],\n" + " PARAMETER[\"Longitude of origin\",24.8333333333333,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8833]],\n" + " PARAMETER[\"Co-latitude of cone axis\",30.2881397222222,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",1036]],\n" + " PARAMETER[\"Latitude of pseudo standard parallel\",78.5,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8818]],\n" + " PARAMETER[\"Scale factor on pseudo standard " + "parallel\",0.9999,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8819]],\n" + " PARAMETER[\"False easting\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"x\",south,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"y\",west,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " ID[\"EPSG\",5513]]"; + + EXPECT_EQ(crs->exportToWKT(WKTFormatter::create().get()), expected_wkt2); + + auto projString = + crs->exportToPROJString(PROJStringFormatter::create().get()); + auto expectedPROJString = + "+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=krovak +axis=swu +lat_0=49.5 " + "+lon_0=24.8333333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel"; + EXPECT_EQ(projString, expectedPROJString); + + obj = PROJStringParser().createFromPROJString(projString); + crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto wkt2 = crs->exportToWKT(WKTFormatter::create().get()); + EXPECT_TRUE( + wkt2.find("PARAMETER[\"Latitude of pseudo standard parallel\",78.5,") != + std::string::npos) + << wkt2; + EXPECT_TRUE( + wkt2.find("PARAMETER[\"Co-latitude of cone axis\",30.2881397222222,") != + std::string::npos) + << wkt2; + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + expectedPROJString); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt1_krovak_north_oriented) { + auto wkt = + "PROJCS[\"S-JTSK / Krovak East North\"," + " GEOGCS[\"S-JTSK\"," + " DATUM[\"System_Jednotne_Trigonometricke_Site_Katastralni\"," + " SPHEROID[\"Bessel 1841\",6377397.155,299.1528128," + " AUTHORITY[\"EPSG\",\"7004\"]]," + " AUTHORITY[\"EPSG\",\"6156\"]]," + " PRIMEM[\"Greenwich\",0," + " AUTHORITY[\"EPSG\",\"8901\"]]," + " UNIT[\"degree\",0.0174532925199433," + " AUTHORITY[\"EPSG\",\"9122\"]]," + " AUTHORITY[\"EPSG\",\"4156\"]]," + " PROJECTION[\"Krovak\"]," + " PARAMETER[\"latitude_of_center\",49.5]," + " PARAMETER[\"longitude_of_center\",24.83333333333333]," + " PARAMETER[\"azimuth\",30.28813972222222]," + " PARAMETER[\"pseudo_standard_parallel_1\",78.5]," + " PARAMETER[\"scale_factor\",0.9999]," + " PARAMETER[\"false_easting\",0]," + " PARAMETER[\"false_northing\",0]," + " UNIT[\"metre\",1," + " AUTHORITY[\"EPSG\",\"9001\"]]," + " AXIS[\"X\",EAST]," + " AXIS[\"Y\",NORTH]," + " AUTHORITY[\"EPSG\",\"5514\"]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->derivingConversion()->method()->nameStr(), + "Krovak (North Orientated)"); + + EXPECT_EQ( + crs->exportToWKT(WKTFormatter::create().get()), + "PROJCRS[\"S-JTSK / Krovak East North\",\n" + " BASEGEODCRS[\"S-JTSK\",\n" + " DATUM[\"System_Jednotne_Trigonometricke_Site_Katastralni\",\n" + " ELLIPSOID[\"Bessel 1841\",6377397.155,299.1528128,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " CONVERSION[\"unnamed\",\n" + " METHOD[\"Krovak (North Orientated)\",\n" + " ID[\"EPSG\",1041]],\n" + " PARAMETER[\"Latitude of projection centre\",49.5,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8811]],\n" + " PARAMETER[\"Longitude of origin\",24.8333333333333,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8833]],\n" + " PARAMETER[\"Co-latitude of cone axis\",30.2881397222222,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",1036]],\n" + " PARAMETER[\"Latitude of pseudo standard parallel\",78.5,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8818]],\n" + " PARAMETER[\"Scale factor on pseudo standard " + "parallel\",0.9999,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8819]],\n" + " PARAMETER[\"False easting\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"x\",east,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"y\",north,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " ID[\"EPSG\",5514]]"); + + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=krovak +lat_0=49.5 +lon_0=24.8333333333333 " + "+k=0.9999 +x_0=0 +y_0=0 +ellps=bessel"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt2_projected) { + auto wkt = "PROJCRS[\"WGS 84 / UTM zone 31N\",\n" + " BASEGEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]],\n" + " ID[\"EPSG\",7030]],\n" + " ID[\"EPSG\",6326]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]],\n" + " ID[\"EPSG\",8901]]],\n" + " CONVERSION[\"UTM zone 31N\",\n" + " METHOD[\"Transverse Mercator\",\n" + " ID[\"EPSG\",9807]],\n" + " PARAMETER[\"Latitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",3,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",0.9996,\n" + " SCALEUNIT[\"unity\",1,\n" + " ID[\"EPSG\",9201]],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",500000,\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",0,\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]],\n" + " ID[\"EPSG\",8807]],\n" + " ID[\"EPSG\",16031]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " AXIS[\"(N)\",north,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " ID[\"EPSG\",32631]]"; + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + checkProjected(crs, /*checkEPSGCodes = */ false); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt2_2018_simplified_projected) { + auto wkt = "PROJCRS[\"WGS 84 / UTM zone 31N\",\n" + " BASEGEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " CONVERSION[\"UTM zone 31N\",\n" + " METHOD[\"Transverse Mercator\"],\n" + " PARAMETER[\"Latitude of natural origin\",0],\n" + " PARAMETER[\"Longitude of natural origin\",3],\n" + " PARAMETER[\"Scale factor at natural origin\",0.9996],\n" + " PARAMETER[\"False easting\",500000],\n" + " PARAMETER[\"False northing\",0]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east],\n" + " AXIS[\"(N)\",north],\n" + " UNIT[\"metre\",1],\n" + " ID[\"EPSG\",32631]]"; + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + checkProjected(crs, /*checkEPSGCodes = */ false); +} + +// --------------------------------------------------------------------------- + +TEST(crs, projected_angular_unit_from_primem) { + auto obj = WKTParser().createFromWKT( + "PROJCRS[\"NTF (Paris) / Lambert Nord France\",\n" + " BASEGEODCRS[\"NTF (Paris)\",\n" + " DATUM[\"Nouvelle Triangulation Francaise (Paris)\",\n" + " ELLIPSOID[\"Clarke 1880 " + "(IGN)\",6378249.2,293.4660213,LENGTHUNIT[\"metre\",1.0]]],\n" + " PRIMEM[\"Paris\",2.5969213,ANGLEUNIT[\"grad\",0.015707963268]]],\n" + " CONVERSION[\"Lambert Nord France\",\n" + " METHOD[\"Lambert Conic Conformal (1SP)\",ID[\"EPSG\",9801]],\n" + " PARAMETER[\"Latitude of natural " + "origin\",55,ANGLEUNIT[\"grad\",0.015707963268]],\n" + " PARAMETER[\"Longitude of natural " + "origin\",0,ANGLEUNIT[\"grad\",0.015707963268]],\n" + " PARAMETER[\"Scale factor at natural " + "origin\",0.999877341,SCALEUNIT[\"unity\",1.0]],\n" + " PARAMETER[\"False easting\",600000,LENGTHUNIT[\"metre\",1.0]],\n" + " PARAMETER[\"False northing\",200000,LENGTHUNIT[\"metre\",1.0]]],\n" + " CS[cartesian,2],\n" + " AXIS[\"easting (X)\",east,ORDER[1]],\n" + " AXIS[\"northing (Y)\",north,ORDER[2]],\n" + " LENGTHUNIT[\"metre\",1.0],\n" + " ID[\"EPSG\",27561]]"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->baseCRS()->coordinateSystem()->axisList()[0]->unit(), + UnitOfMeasure::GRAD); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, cs_with_MERIDIAN) { + auto wkt = + "PROJCRS[\"dummy\",\n" + " BASEGEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " CONVERSION[\"dummy\",\n" + " METHOD[\"dummy\"]]\n" + " CS[Cartesian,2],\n" + " AXIS[\"easting " + "(X)\",south,MERIDIAN[90,ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " AXIS[\"northing (Y)\",north],\n" + " UNIT[\"metre\",1],\n" + " ID[\"EPSG\",32631]]"; + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + ASSERT_EQ(crs->coordinateSystem()->axisList().size(), 2); + auto axis = crs->coordinateSystem()->axisList()[0]; + auto meridian = axis->meridian(); + ASSERT_TRUE(meridian != nullptr); + EXPECT_EQ(meridian->longitude().value(), 90.0); + EXPECT_EQ(meridian->longitude().unit(), UnitOfMeasure::DEGREE); + ASSERT_TRUE(crs->coordinateSystem()->axisList()[1]->meridian() == nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, cs_with_multiple_ID) { + auto wkt = "GEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " CS[Cartesian,3],\n" + " AXIS[\"(X)\",geocentricX],\n" + " AXIS[\"(Y)\",geocentricY],\n" + " AXIS[\"(Z)\",geocentricZ],\n" + " UNIT[\"metre\",1],\n" + " ID[\"authorityA\",\"codeA\"],\n" + " ID[\"authorityB\",\"codeB\"]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<GeodeticCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->nameStr(), "WGS 84"); + ASSERT_EQ(crs->identifiers().size(), 2); + EXPECT_EQ(crs->identifiers()[0]->code(), "codeA"); + EXPECT_EQ(*(crs->identifiers()[0]->codeSpace()), "authorityA"); + EXPECT_EQ(crs->identifiers()[1]->code(), "codeB"); + EXPECT_EQ(*(crs->identifiers()[1]->codeSpace()), "authorityB"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, vertcrs_WKT2) { + auto wkt = "VERTCRS[\"ODN height\",\n" + " VDATUM[\"Ordnance Datum Newlyn\"],\n" + " CS[vertical,1],\n" + " AXIS[\"gravity-related height (H)\",up,\n" + " LENGTHUNIT[\"metre\",1]],\n" + " ID[\"EPSG\",5701]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<VerticalCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->nameStr(), "ODN height"); + ASSERT_EQ(crs->identifiers().size(), 1); + EXPECT_EQ(crs->identifiers()[0]->code(), "5701"); + EXPECT_EQ(*(crs->identifiers()[0]->codeSpace()), "EPSG"); + + auto datum = crs->datum(); + EXPECT_EQ(datum->nameStr(), "Ordnance Datum Newlyn"); + // ASSERT_EQ(datum->identifiers().size(), 1); + // EXPECT_EQ(datum->identifiers()[0]->code(), "5101"); + // EXPECT_EQ(*(datum->identifiers()[0]->codeSpace()), "EPSG"); + + auto cs = crs->coordinateSystem(); + ASSERT_EQ(cs->axisList().size(), 1); + EXPECT_EQ(cs->axisList()[0]->nameStr(), "Gravity-related height"); + EXPECT_EQ(cs->axisList()[0]->abbreviation(), "H"); + EXPECT_EQ(cs->axisList()[0]->direction(), AxisDirection::UP); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, vertcrs_VRF_WKT2) { + auto wkt = "VERTCRS[\"ODN height\",\n" + " VRF[\"Ordnance Datum Newlyn\"],\n" + " CS[vertical,1],\n" + " AXIS[\"gravity-related height (H)\",up,\n" + " LENGTHUNIT[\"metre\",1]],\n" + " ID[\"EPSG\",5701]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<VerticalCRS>(obj); + ASSERT_TRUE(crs != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, vertcrs_WKT1_GDAL) { + auto wkt = "VERT_CS[\"ODN height\",\n" + " VERT_DATUM[\"Ordnance Datum Newlyn\",2005,\n" + " AUTHORITY[\"EPSG\",\"5101\"]],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",9001]],\n" + " AXIS[\"gravity-related height\",UP],\n" + " AUTHORITY[\"EPSG\",\"5701\"]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<VerticalCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->nameStr(), "ODN height"); + ASSERT_EQ(crs->identifiers().size(), 1); + EXPECT_EQ(crs->identifiers()[0]->code(), "5701"); + EXPECT_EQ(*(crs->identifiers()[0]->codeSpace()), "EPSG"); + + auto datum = crs->datum(); + EXPECT_EQ(datum->nameStr(), "Ordnance Datum Newlyn"); + ASSERT_EQ(datum->identifiers().size(), 1); + EXPECT_EQ(datum->identifiers()[0]->code(), "5101"); + EXPECT_EQ(*(datum->identifiers()[0]->codeSpace()), "EPSG"); + + auto cs = crs->coordinateSystem(); + ASSERT_EQ(cs->axisList().size(), 1); + EXPECT_EQ(cs->axisList()[0]->nameStr(), "Gravity-related height"); + EXPECT_EQ(cs->axisList()[0]->abbreviation(), ""); // "H" in WKT2 + EXPECT_EQ(cs->axisList()[0]->direction(), AxisDirection::UP); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, vertcrs_WKT1_GDAL_minimum) { + auto wkt = "VERT_CS[\"ODN height\",\n" + " VERT_DATUM[\"Ordnance Datum Newlyn\",2005],\n" + " UNIT[\"metre\",1]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<VerticalCRS>(obj); + EXPECT_EQ(crs->nameStr(), "ODN height"); + + auto datum = crs->datum(); + EXPECT_EQ(datum->nameStr(), "Ordnance Datum Newlyn"); + + auto cs = crs->coordinateSystem(); + ASSERT_EQ(cs->axisList().size(), 1); + EXPECT_EQ(cs->axisList()[0]->nameStr(), "Gravity-related height"); + EXPECT_EQ(cs->axisList()[0]->direction(), AxisDirection::UP); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, dynamic_vertical_reference_frame) { + auto obj = WKTParser().createFromWKT( + "VERTCRS[\"RH2000\"," + " DYNAMIC[FRAMEEPOCH[2000.0],MODEL[\"NKG2016LU\"]]," + " VDATUM[\"Rikets Hojdsystem 2000\",ANCHOR[\"my anchor\"]]," + " CS[vertical,1]," + " AXIS[\"gravity-related height (H)\",up]," + " LENGTHUNIT[\"metre\",1.0]" + "]"); + auto crs = nn_dynamic_pointer_cast<VerticalCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto dgrf = + std::dynamic_pointer_cast<DynamicVerticalReferenceFrame>(crs->datum()); + ASSERT_TRUE(dgrf != nullptr); + auto anchor = dgrf->anchorDefinition(); + EXPECT_TRUE(anchor.has_value()); + EXPECT_EQ(*anchor, "my anchor"); + EXPECT_TRUE(dgrf->frameReferenceEpoch() == + Measure(2000.0, UnitOfMeasure::YEAR)); + auto model = dgrf->deformationModelName(); + EXPECT_TRUE(model.has_value()); + EXPECT_EQ(*model, "NKG2016LU"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, vertcrs_with_ensemble) { + auto obj = WKTParser().createFromWKT( + "VERTCRS[\"unnamed\",\n" + " ENSEMBLE[\"unnamed\",\n" + " MEMBER[\"vdatum1\"],\n" + " MEMBER[\"vdatum2\"],\n" + " ENSEMBLEACCURACY[100]],\n" + " CS[vertical,1],\n" + " AXIS[\"gravity-related height (H)\",up,\n" + " LENGTHUNIT[\"metre\",1]]]"); + auto crs = nn_dynamic_pointer_cast<VerticalCRS>(obj); + ASSERT_TRUE(crs != nullptr); + ASSERT_TRUE(crs->datum() == nullptr); + ASSERT_TRUE(crs->datumEnsemble() != nullptr); + EXPECT_EQ(crs->datumEnsemble()->datums().size(), 2); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, vdatum_with_ANCHOR) { + auto obj = WKTParser().createFromWKT("VDATUM[\"Ordnance Datum Newlyn\",\n" + " ANCHOR[\"my anchor\"],\n" + " ID[\"EPSG\",5101]]"); + auto datum = nn_dynamic_pointer_cast<VerticalReferenceFrame>(obj); + ASSERT_TRUE(datum != nullptr); + auto anchor = datum->anchorDefinition(); + EXPECT_TRUE(anchor.has_value()); + EXPECT_EQ(*anchor, "my anchor"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, COMPOUNDCRS) { + auto obj = WKTParser().createFromWKT( + "COMPOUNDCRS[\"horizontal + vertical\",\n" + " PROJCRS[\"WGS 84 / UTM zone 31N\",\n" + " BASEGEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " CONVERSION[\"UTM zone 31N\",\n" + " METHOD[\"Transverse Mercator\",\n" + " ID[\"EPSG\",9807]],\n" + " PARAMETER[\"Latitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",3,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",0.9996,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",500000,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"(N)\",north,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " VERTCRS[\"ODN height\",\n" + " VDATUM[\"Ordnance Datum Newlyn\"],\n" + " CS[vertical,1],\n" + " AXIS[\"gravity-related height (H)\",up,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " ID[\"codespace\",\"code\"]]"); + auto crs = nn_dynamic_pointer_cast<CompoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->nameStr(), "horizontal + vertical"); + EXPECT_EQ(crs->componentReferenceSystems().size(), 2); + ASSERT_EQ(crs->identifiers().size(), 1); + EXPECT_EQ(crs->identifiers()[0]->code(), "code"); + EXPECT_EQ(*(crs->identifiers()[0]->codeSpace()), "codespace"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, COMPD_CS) { + auto obj = WKTParser().createFromWKT( + "COMPD_CS[\"horizontal + vertical\",\n" + " PROJCS[\"WGS 84 / UTM zone 31N\",\n" + " GEOGCS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\n" + " AUTHORITY[\"EPSG\",\"7030\"]],\n" + " AUTHORITY[\"EPSG\",\"6326\"]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " AUTHORITY[\"EPSG\",\"8901\"]],\n" + " UNIT[\"degree\",0.0174532925199433,\n" + " AUTHORITY[\"EPSG\",9122]],\n" + " AXIS[\"Latitude\",NORTH],\n" + " AXIS[\"Longitude\",EAST],\n" + " AUTHORITY[\"EPSG\",\"4326\"]],\n" + " PROJECTION[\"Transverse_Mercator\"],\n" + " PARAMETER[\"latitude_of_origin\",0],\n" + " PARAMETER[\"central_meridian\",3],\n" + " PARAMETER[\"scale_factor\",0.9996],\n" + " PARAMETER[\"false_easting\",500000],\n" + " PARAMETER[\"false_northing\",0],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",9001]],\n" + " AXIS[\"Easting\",EAST],\n" + " AXIS[\"Northing\",NORTH],\n" + " AUTHORITY[\"EPSG\",\"32631\"]],\n" + " VERT_CS[\"ODN height\",\n" + " VERT_DATUM[\"Ordnance Datum Newlyn\",2005,\n" + " AUTHORITY[\"EPSG\",\"5101\"]],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",9001]],\n" + " AXIS[\"Gravity-related height\",UP],\n" + " AUTHORITY[\"EPSG\",\"5701\"]],\n" + " AUTHORITY[\"codespace\",\"code\"]]"); + auto crs = nn_dynamic_pointer_cast<CompoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->nameStr(), "horizontal + vertical"); + EXPECT_EQ(crs->componentReferenceSystems().size(), 2); + ASSERT_EQ(crs->identifiers().size(), 1); + EXPECT_EQ(crs->identifiers()[0]->code(), "code"); + EXPECT_EQ(*(crs->identifiers()[0]->codeSpace()), "codespace"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, COORDINATEOPERATION) { + + std::string src_wkt; + { + auto formatter = WKTFormatter::create(); + formatter->setOutputId(false); + src_wkt = GeographicCRS::EPSG_4326->exportToWKT(formatter.get()); + } + + std::string dst_wkt; + { + auto formatter = WKTFormatter::create(); + formatter->setOutputId(false); + dst_wkt = GeographicCRS::EPSG_4807->exportToWKT(formatter.get()); + } + + std::string interpolation_wkt; + { + auto formatter = WKTFormatter::create(); + formatter->setOutputId(false); + interpolation_wkt = + GeographicCRS::EPSG_4979->exportToWKT(formatter.get()); + } + + auto wkt = + "COORDINATEOPERATION[\"transformationName\",\n" + " SOURCECRS[" + + src_wkt + "],\n" + " TARGETCRS[" + + dst_wkt + + "],\n" + " METHOD[\"operationMethodName\",\n" + " ID[\"codeSpaceOperationMethod\",\"codeOperationMethod\"]],\n" + " PARAMETERFILE[\"paramName\",\"foo.bin\"],\n" + " INTERPOLATIONCRS[" + + interpolation_wkt + + "],\n" + " OPERATIONACCURACY[0.1],\n" + " ID[\"codeSpaceTransformation\",\"codeTransformation\"],\n" + " REMARK[\"my remarks\"]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto transf = nn_dynamic_pointer_cast<Transformation>(obj); + ASSERT_TRUE(transf != nullptr); + EXPECT_EQ(transf->nameStr(), "transformationName"); + ASSERT_EQ(transf->identifiers().size(), 1); + EXPECT_EQ(transf->identifiers()[0]->code(), "codeTransformation"); + EXPECT_EQ(*(transf->identifiers()[0]->codeSpace()), + "codeSpaceTransformation"); + ASSERT_EQ(transf->coordinateOperationAccuracies().size(), 1); + EXPECT_EQ(transf->coordinateOperationAccuracies()[0]->value(), "0.1"); + EXPECT_EQ(transf->sourceCRS()->nameStr(), + GeographicCRS::EPSG_4326->nameStr()); + EXPECT_EQ(transf->targetCRS()->nameStr(), + GeographicCRS::EPSG_4807->nameStr()); + ASSERT_TRUE(transf->interpolationCRS() != nullptr); + EXPECT_EQ(transf->interpolationCRS()->nameStr(), + GeographicCRS::EPSG_4979->nameStr()); + EXPECT_EQ(transf->method()->nameStr(), "operationMethodName"); + EXPECT_EQ(transf->parameterValues().size(), 1); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, CONCATENATEDOPERATION) { + + auto transf_1 = Transformation::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "transf_1"), + nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4326), + nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4807), nullptr, + PropertyMap().set(IdentifiedObject::NAME_KEY, "operationMethodName"), + std::vector<OperationParameterNNPtr>{OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName"))}, + std::vector<ParameterValueNNPtr>{ + ParameterValue::createFilename("foo.bin")}, + std::vector<PositionalAccuracyNNPtr>()); + + auto transf_2 = Transformation::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "transf_2"), + nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4807), + nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4979), nullptr, + PropertyMap().set(IdentifiedObject::NAME_KEY, "operationMethodName"), + std::vector<OperationParameterNNPtr>{OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName"))}, + std::vector<ParameterValueNNPtr>{ + ParameterValue::createFilename("foo.bin")}, + std::vector<PositionalAccuracyNNPtr>()); + + auto concat_in = ConcatenatedOperation::create( + PropertyMap() + .set(Identifier::CODESPACE_KEY, "codeSpace") + .set(Identifier::CODE_KEY, "code") + .set(IdentifiedObject::NAME_KEY, "name") + .set(IdentifiedObject::REMARKS_KEY, "my remarks"), + std::vector<CoordinateOperationNNPtr>{transf_1, transf_2}, + std::vector<PositionalAccuracyNNPtr>{ + PositionalAccuracy::create("0.1")}); + + auto wkt = concat_in->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()); + + auto obj = WKTParser().createFromWKT(wkt); + auto concat = nn_dynamic_pointer_cast<ConcatenatedOperation>(obj); + ASSERT_TRUE(concat != nullptr); + EXPECT_EQ(concat->nameStr(), "name"); + ASSERT_EQ(concat->identifiers().size(), 1); + EXPECT_EQ(concat->identifiers()[0]->code(), "code"); + EXPECT_EQ(*(concat->identifiers()[0]->codeSpace()), "codeSpace"); + ASSERT_EQ(concat->operations().size(), 2); + ASSERT_EQ(concat->operations()[0]->nameStr(), transf_1->nameStr()); + ASSERT_EQ(concat->operations()[1]->nameStr(), transf_2->nameStr()); + ASSERT_TRUE(concat->sourceCRS() != nullptr); + ASSERT_TRUE(concat->targetCRS() != nullptr); + ASSERT_EQ(concat->sourceCRS()->nameStr(), transf_1->sourceCRS()->nameStr()); + ASSERT_EQ(concat->targetCRS()->nameStr(), transf_2->targetCRS()->nameStr()); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, BOUNDCRS_transformation_from_names) { + + auto projcrs = ProjectedCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "my PROJCRS"), + GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "my GEOGCRS"), + GeodeticReferenceFrame::EPSG_6326, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)), + Conversion::createUTM(PropertyMap(), 31, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + + auto wkt = + "BOUNDCRS[SOURCECRS[" + + projcrs->exportToWKT(WKTFormatter::create().get()) + "],\n" + + "TARGETCRS[" + + GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) + + "],\n" + " ABRIDGEDTRANSFORMATION[\"Transformation to WGS84\",\n" + " METHOD[\"Coordinate Frame\"],\n" + " PARAMETER[\"X-axis translation\",1],\n" + " PARAMETER[\"Y-axis translation\",2],\n" + " PARAMETER[\"Z-axis translation\",3],\n" + " PARAMETER[\"X-axis rotation\",-4],\n" + " PARAMETER[\"Y-axis rotation\",-5],\n" + " PARAMETER[\"Z-axis rotation\",-6],\n" + " PARAMETER[\"Scale difference\",1.000007]]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<BoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->baseCRS()->nameStr(), projcrs->nameStr()); + + EXPECT_EQ(crs->hubCRS()->nameStr(), GeographicCRS::EPSG_4326->nameStr()); + + ASSERT_TRUE(crs->transformation()->sourceCRS() != nullptr); + EXPECT_EQ(crs->transformation()->sourceCRS()->nameStr(), + projcrs->baseCRS()->nameStr()); + + auto params = crs->transformation()->getTOWGS84Parameters(); + auto expected = std::vector<double>{1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}; + ASSERT_EQ(params.size(), expected.size()); + for (int i = 0; i < 7; i++) { + EXPECT_NEAR(params[i], expected[i], 1e-10); + } +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, BOUNDCRS_transformation_from_codes) { + + auto projcrs = ProjectedCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "my PROJCRS"), + GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "my GEOGCRS"), + GeodeticReferenceFrame::EPSG_6326, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)), + Conversion::createUTM(PropertyMap(), 31, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + + auto wkt = + "BOUNDCRS[SOURCECRS[" + + projcrs->exportToWKT(WKTFormatter::create().get()) + "],\n" + + "TARGETCRS[" + + GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) + + "],\n" + " ABRIDGEDTRANSFORMATION[\"Transformation to WGS84\",\n" + " METHOD[\"bla\",ID[\"EPSG\",1032]],\n" + " PARAMETER[\"tx\",1,ID[\"EPSG\",8605]],\n" + " PARAMETER[\"ty\",2,ID[\"EPSG\",8606]],\n" + " PARAMETER[\"tz\",3,ID[\"EPSG\",8607]],\n" + " PARAMETER[\"rotx\",-4,ID[\"EPSG\",8608]],\n" + " PARAMETER[\"roty\",-5,ID[\"EPSG\",8609]],\n" + " PARAMETER[\"rotz\",-6,ID[\"EPSG\",8610]],\n" + " PARAMETER[\"scale\",1.000007,ID[\"EPSG\",8611]]]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<BoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->baseCRS()->nameStr(), projcrs->nameStr()); + + EXPECT_EQ(crs->hubCRS()->nameStr(), GeographicCRS::EPSG_4326->nameStr()); + + ASSERT_TRUE(crs->transformation()->sourceCRS() != nullptr); + EXPECT_EQ(crs->transformation()->sourceCRS()->nameStr(), + projcrs->baseCRS()->nameStr()); + + auto params = crs->transformation()->getTOWGS84Parameters(); + auto expected = std::vector<double>{1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}; + ASSERT_EQ(params.size(), expected.size()); + for (int i = 0; i < 7; i++) { + EXPECT_NEAR(params[i], expected[i], 1e-10); + } +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, geogcs_TOWGS84_3terms) { + auto wkt = "GEOGCS[\"my GEOGCRS\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563],\n" + " TOWGS84[1,2,3]],\n" + " PRIMEM[\"Greenwich\",0],\n" + " UNIT[\"degree\",0.0174532925199433]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<BoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->baseCRS()->nameStr(), "my GEOGCRS"); + + EXPECT_EQ(crs->hubCRS()->nameStr(), GeographicCRS::EPSG_4326->nameStr()); + + ASSERT_TRUE(crs->transformation()->sourceCRS() != nullptr); + EXPECT_EQ(crs->transformation()->sourceCRS()->nameStr(), "my GEOGCRS"); + + auto params = crs->transformation()->getTOWGS84Parameters(); + auto expected = std::vector<double>{1.0, 2.0, 3.0, 0.0, 0.0, 0.0, 0.0}; + ASSERT_EQ(params.size(), expected.size()); + for (int i = 0; i < 7; i++) { + EXPECT_NEAR(params[i], expected[i], 1e-10); + } +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, projcs_TOWGS84_7terms) { + auto wkt = "PROJCS[\"my PROJCRS\",\n" + " GEOGCS[\"my GEOGCRS\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\n" + " AUTHORITY[\"EPSG\",\"7030\"]],\n" + " TOWGS84[1,2,3,4,5,6,7],\n" + " AUTHORITY[\"EPSG\",\"6326\"]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " AUTHORITY[\"EPSG\",\"8901\"]],\n" + " UNIT[\"degree\",0.0174532925199433,\n" + " AUTHORITY[\"EPSG\",9122]],\n" + " AXIS[\"Latitude\",NORTH],\n" + " AXIS[\"Longitude\",EAST]],\n" + " PROJECTION[\"Transverse_Mercator\"],\n" + " PARAMETER[\"latitude_of_origin\",0],\n" + " PARAMETER[\"central_meridian\",3],\n" + " PARAMETER[\"scale_factor\",0.9996],\n" + " PARAMETER[\"false_easting\",500000],\n" + " PARAMETER[\"false_northing\",0],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",9001]],\n" + " AXIS[\"Easting\",EAST],\n" + " AXIS[\"Northing\",NORTH]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<BoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->baseCRS()->nameStr(), "my PROJCRS"); + + EXPECT_EQ(crs->hubCRS()->nameStr(), GeographicCRS::EPSG_4326->nameStr()); + + ASSERT_TRUE(crs->transformation()->sourceCRS() != nullptr); + EXPECT_EQ(crs->transformation()->sourceCRS()->nameStr(), "my GEOGCRS"); + + auto params = crs->transformation()->getTOWGS84Parameters(); + auto expected = std::vector<double>{1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}; + ASSERT_EQ(params.size(), expected.size()); + for (int i = 0; i < 7; i++) { + EXPECT_NEAR(params[i], expected[i], 1e-10); + } +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, WKT1_VERT_DATUM_EXTENSION) { + auto wkt = "VERT_CS[\"EGM2008 geoid height\",\n" + " VERT_DATUM[\"EGM2008 geoid\",2005,\n" + " EXTENSION[\"PROJ4_GRIDS\",\"egm08_25.gtx\"],\n" + " AUTHORITY[\"EPSG\",\"1027\"]],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" + " AXIS[\"Up\",UP],\n" + " AUTHORITY[\"EPSG\",\"3855\"]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<BoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->baseCRS()->nameStr(), "EGM2008 geoid height"); + + EXPECT_EQ(crs->hubCRS()->nameStr(), GeographicCRS::EPSG_4979->nameStr()); + + ASSERT_TRUE(crs->transformation()->sourceCRS() != nullptr); + EXPECT_EQ(crs->transformation()->sourceCRS()->nameStr(), + crs->baseCRS()->nameStr()); + + ASSERT_TRUE(crs->transformation()->targetCRS() != nullptr); + EXPECT_EQ(crs->transformation()->targetCRS()->nameStr(), + crs->hubCRS()->nameStr()); + + EXPECT_EQ(crs->transformation()->nameStr(), + "EGM2008 geoid height to WGS84 ellipsoidal height"); + EXPECT_EQ(crs->transformation()->method()->nameStr(), + "GravityRelatedHeight to Geographic3D"); + ASSERT_EQ(crs->transformation()->parameterValues().size(), 1); + { + const auto &opParamvalue = + nn_dynamic_pointer_cast<OperationParameterValue>( + crs->transformation()->parameterValues()[0]); + ASSERT_TRUE(opParamvalue); + const auto ¶mName = opParamvalue->parameter()->nameStr(); + const auto ¶meterValue = opParamvalue->parameterValue(); + EXPECT_TRUE(opParamvalue->parameter()->getEPSGCode() == 8666); + EXPECT_EQ(paramName, "Geoid (height correction) model file"); + EXPECT_EQ(parameterValue->type(), ParameterValue::Type::FILENAME); + EXPECT_EQ(parameterValue->valueFile(), "egm08_25.gtx"); + } +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, WKT1_DATUM_EXTENSION) { + auto wkt = + "PROJCS[\"unnamed\",\n" + " GEOGCS[\"International 1909 (Hayford)\",\n" + " DATUM[\"unknown\",\n" + " SPHEROID[\"intl\",6378388,297],\n" + " EXTENSION[\"PROJ4_GRIDS\",\"nzgd2kgrid0005.gsb\"]],\n" + " PRIMEM[\"Greenwich\",0],\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " PROJECTION[\"New_Zealand_Map_Grid\"],\n" + " PARAMETER[\"latitude_of_origin\",-41],\n" + " PARAMETER[\"central_meridian\",173],\n" + " PARAMETER[\"false_easting\",2510000],\n" + " PARAMETER[\"false_northing\",6023150],\n" + " UNIT[\"Meter\",1]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<BoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->baseCRS()->nameStr(), "unnamed"); + + EXPECT_EQ(crs->hubCRS()->nameStr(), GeographicCRS::EPSG_4326->nameStr()); + + ASSERT_TRUE(crs->transformation()->sourceCRS() != nullptr); + EXPECT_EQ(crs->transformation()->sourceCRS()->nameStr(), + crs->baseCRS()->nameStr()); + + ASSERT_TRUE(crs->transformation()->targetCRS() != nullptr); + EXPECT_EQ(crs->transformation()->targetCRS()->nameStr(), + crs->hubCRS()->nameStr()); + + EXPECT_EQ(crs->transformation()->nameStr(), + "International 1909 (Hayford) to WGS84"); + EXPECT_EQ(crs->transformation()->method()->nameStr(), "NTv2"); + ASSERT_EQ(crs->transformation()->parameterValues().size(), 1); + { + const auto &opParamvalue = + nn_dynamic_pointer_cast<OperationParameterValue>( + crs->transformation()->parameterValues()[0]); + ASSERT_TRUE(opParamvalue); + const auto ¶mName = opParamvalue->parameter()->nameStr(); + const auto ¶meterValue = opParamvalue->parameterValue(); + EXPECT_TRUE(opParamvalue->parameter()->getEPSGCode() == 8656); + EXPECT_EQ(paramName, "Latitude and longitude difference file"); + EXPECT_EQ(parameterValue->type(), ParameterValue::Type::FILENAME); + EXPECT_EQ(parameterValue->valueFile(), "nzgd2kgrid0005.gsb"); + } +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, DerivedGeographicCRS_WKT2) { + auto wkt = "GEODCRS[\"WMO Atlantic Pole\",\n" + " BASEGEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " DERIVINGCONVERSION[\"Atlantic pole\",\n" + " METHOD[\"Pole rotation\"],\n" + " PARAMETER[\"Latitude of rotated pole\",52,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " PARAMETER[\"Longitude of rotated pole\",-30,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " PARAMETER[\"Axis rotation\",-25,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<DerivedGeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "WMO Atlantic Pole"); + + EXPECT_EQ(crs->baseCRS()->nameStr(), "WGS 84"); + EXPECT_TRUE(nn_dynamic_pointer_cast<GeographicCRS>(crs->baseCRS()) != + nullptr); + + EXPECT_EQ(crs->derivingConversion()->nameStr(), "Atlantic pole"); + + EXPECT_TRUE(nn_dynamic_pointer_cast<EllipsoidalCS>( + crs->coordinateSystem()) != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, DerivedGeographicCRS_WKT2_2018) { + auto wkt = "GEOGCRS[\"WMO Atlantic Pole\",\n" + " BASEGEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " DERIVINGCONVERSION[\"Atlantic pole\",\n" + " METHOD[\"Pole rotation\"],\n" + " PARAMETER[\"Latitude of rotated pole\",52,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " PARAMETER[\"Longitude of rotated pole\",-30,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " PARAMETER[\"Axis rotation\",-25,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<DerivedGeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "WMO Atlantic Pole"); + + EXPECT_EQ(crs->baseCRS()->nameStr(), "WGS 84"); + EXPECT_TRUE(nn_dynamic_pointer_cast<GeographicCRS>(crs->baseCRS()) != + nullptr); + + EXPECT_EQ(crs->derivingConversion()->nameStr(), "Atlantic pole"); + + EXPECT_TRUE(nn_dynamic_pointer_cast<EllipsoidalCS>( + crs->coordinateSystem()) != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, DerivedGeodeticCRS) { + auto wkt = "GEODCRS[\"Derived geodetic CRS\",\n" + " BASEGEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " DERIVINGCONVERSION[\"Some conversion\",\n" + " METHOD[\"Some method\"]],\n" + " CS[Cartesian,3],\n" + " AXIS[\"(X)\",geocentricX,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " AXIS[\"(Y)\",geocentricY,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " AXIS[\"(Z)\",geocentricZ,\n" + " ORDER[3],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]]]"; + ; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<DerivedGeodeticCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "Derived geodetic CRS"); + + EXPECT_EQ(crs->baseCRS()->nameStr(), "WGS 84"); + EXPECT_TRUE(nn_dynamic_pointer_cast<GeographicCRS>(crs->baseCRS()) != + nullptr); + + EXPECT_EQ(crs->derivingConversion()->nameStr(), "Some conversion"); + + EXPECT_TRUE(nn_dynamic_pointer_cast<CartesianCS>(crs->coordinateSystem()) != + nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, DerivedProjectedCRS) { + auto wkt = + "DERIVEDPROJCRS[\"derived projectedCRS\",\n" + " BASEPROJCRS[\"WGS 84 / UTM zone 31N\",\n" + " BASEGEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " CONVERSION[\"UTM zone 31N\",\n" + " METHOD[\"Transverse Mercator\",\n" + " ID[\"EPSG\",9807]],\n" + " PARAMETER[\"Latitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",3,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",0.9996,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",500000,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " AXIS[\"(N)\",north,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<DerivedProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "derived projectedCRS"); + + EXPECT_EQ(crs->baseCRS()->nameStr(), "WGS 84 / UTM zone 31N"); + EXPECT_TRUE(nn_dynamic_pointer_cast<ProjectedCRS>(crs->baseCRS()) != + nullptr); + + EXPECT_EQ(crs->derivingConversion()->nameStr(), "unnamed"); + + EXPECT_TRUE(nn_dynamic_pointer_cast<CartesianCS>(crs->coordinateSystem()) != + nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, DerivedProjectedCRS_ordinal) { + auto wkt = "DERIVEDPROJCRS[\"derived projectedCRS\",\n" + " BASEPROJCRS[\"BASEPROJCRS\",\n" + " BASEGEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8901]]],\n" + " CONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[ordinal,2],\n" + " AXIS[\"inline (I)\",northNorthWest,\n" + " ORDER[1]],\n" + " AXIS[\"crossline (J)\",westSouthWest,\n" + " ORDER[2]]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<DerivedProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_TRUE(nn_dynamic_pointer_cast<OrdinalCS>(crs->coordinateSystem()) != + nullptr); + + EXPECT_EQ( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018).get()), + wkt); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, TemporalDatum) { + auto wkt = "TDATUM[\"Gregorian calendar\",\n" + " CALENDAR[\"my calendar\"],\n" + " TIMEORIGIN[0000-01-01]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto tdatum = nn_dynamic_pointer_cast<TemporalDatum>(obj); + ASSERT_TRUE(tdatum != nullptr); + + EXPECT_EQ(tdatum->nameStr(), "Gregorian calendar"); + EXPECT_EQ(tdatum->temporalOrigin().toString(), "0000-01-01"); + EXPECT_EQ(tdatum->calendar(), "my calendar"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, TemporalDatum_no_calendar) { + auto wkt = "TDATUM[\"Gregorian calendar\",\n" + " TIMEORIGIN[0000-01-01]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto tdatum = nn_dynamic_pointer_cast<TemporalDatum>(obj); + ASSERT_TRUE(tdatum != nullptr); + + EXPECT_EQ(tdatum->nameStr(), "Gregorian calendar"); + EXPECT_EQ(tdatum->temporalOrigin().toString(), "0000-01-01"); + EXPECT_EQ(tdatum->calendar(), "proleptic Gregorian"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, dateTimeTemporalCRS_WKT2) { + auto wkt = "TIMECRS[\"Temporal CRS\",\n" + " TDATUM[\"Gregorian calendar\",\n" + " TIMEORIGIN[0000-01-01]],\n" + " CS[temporal,1],\n" + " AXIS[\"time (T)\",future]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<TemporalCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "Temporal CRS"); + auto tdatum = crs->datum(); + EXPECT_EQ(tdatum->nameStr(), "Gregorian calendar"); + EXPECT_EQ(tdatum->temporalOrigin().toString(), "0000-01-01"); + EXPECT_EQ(tdatum->calendar(), "proleptic Gregorian"); + EXPECT_TRUE(nn_dynamic_pointer_cast<DateTimeTemporalCS>( + crs->coordinateSystem()) != nullptr); + ASSERT_EQ(crs->coordinateSystem()->axisList().size(), 1); + EXPECT_EQ(crs->coordinateSystem()->axisList()[0]->unit().type(), + UnitOfMeasure::Type::NONE); + EXPECT_EQ(crs->coordinateSystem()->axisList()[0]->unit().name(), ""); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, dateTimeTemporalCRS_WKT2_2018) { + auto wkt = "TIMECRS[\"Temporal CRS\",\n" + " TDATUM[\"Gregorian calendar\",\n" + " CALENDAR[\"proleptic Gregorian\"],\n" + " TIMEORIGIN[0000-01-01]],\n" + " CS[TemporalDateTime,1],\n" + " AXIS[\"time (T)\",future]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<TemporalCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "Temporal CRS"); + auto tdatum = crs->datum(); + EXPECT_EQ(tdatum->nameStr(), "Gregorian calendar"); + EXPECT_EQ(tdatum->temporalOrigin().toString(), "0000-01-01"); + EXPECT_EQ(tdatum->calendar(), "proleptic Gregorian"); + EXPECT_TRUE(nn_dynamic_pointer_cast<DateTimeTemporalCS>( + crs->coordinateSystem()) != nullptr); + ASSERT_EQ(crs->coordinateSystem()->axisList().size(), 1); + EXPECT_EQ(crs->coordinateSystem()->axisList()[0]->unit().type(), + UnitOfMeasure::Type::NONE); + EXPECT_EQ(crs->coordinateSystem()->axisList()[0]->unit().name(), ""); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, temporalCountCRSWithConvFactor_WKT2_2018) { + auto wkt = "TIMECRS[\"GPS milliseconds\",\n" + " TDATUM[\"GPS time origin\",\n" + " TIMEORIGIN[1980-01-01T00:00:00.0Z]],\n" + " CS[TemporalCount,1],\n" + " AXIS[\"(T)\",future,\n" + " TIMEUNIT[\"milliseconds (ms)\",0.001]]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<TemporalCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "GPS milliseconds"); + auto tdatum = crs->datum(); + EXPECT_EQ(tdatum->nameStr(), "GPS time origin"); + EXPECT_EQ(tdatum->temporalOrigin().toString(), "1980-01-01T00:00:00.0Z"); + EXPECT_EQ(tdatum->calendar(), "proleptic Gregorian"); + EXPECT_TRUE(nn_dynamic_pointer_cast<TemporalCountCS>( + crs->coordinateSystem()) != nullptr); + ASSERT_EQ(crs->coordinateSystem()->axisList().size(), 1); + EXPECT_EQ(crs->coordinateSystem()->axisList()[0]->unit().name(), + "milliseconds (ms)"); + EXPECT_EQ(crs->coordinateSystem()->axisList()[0]->unit().conversionToSI(), + 0.001); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, temporalCountCRSWithoutConvFactor_WKT2_2018) { + auto wkt = "TIMECRS[\"Calendar hours from 1979-12-29\",\n" + " TDATUM[\"29 December 1979\",\n" + " CALENDAR[\"proleptic Gregorian\"],\n" + " TIMEORIGIN[1979-12-29T00]],\n" + " CS[TemporalCount,1],\n" + " AXIS[\"time\",future,\n" + " TIMEUNIT[\"hour\"]]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<TemporalCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "Calendar hours from 1979-12-29"); + auto tdatum = crs->datum(); + EXPECT_EQ(tdatum->nameStr(), "29 December 1979"); + EXPECT_EQ(tdatum->temporalOrigin().toString(), "1979-12-29T00"); + EXPECT_TRUE(nn_dynamic_pointer_cast<TemporalCountCS>( + crs->coordinateSystem()) != nullptr); + ASSERT_EQ(crs->coordinateSystem()->axisList().size(), 1); + EXPECT_EQ(crs->coordinateSystem()->axisList()[0]->unit().name(), "hour"); + EXPECT_EQ(crs->coordinateSystem()->axisList()[0]->unit().conversionToSI(), + 0.0); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, temporalMeasureCRSWithoutConvFactor_WKT2_2018) { + auto wkt = "TIMECRS[\"Decimal Years CE\",\n" + " TIMEDATUM[\"Common Era\",\n" + " TIMEORIGIN[0000]],\n" + " CS[TemporalMeasure,1],\n" + " AXIS[\"decimal years (a)\",future,\n" + " TIMEUNIT[\"year\"]]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<TemporalCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "Decimal Years CE"); + auto tdatum = crs->datum(); + EXPECT_EQ(tdatum->nameStr(), "Common Era"); + EXPECT_EQ(tdatum->temporalOrigin().toString(), "0000"); + EXPECT_TRUE(nn_dynamic_pointer_cast<TemporalMeasureCS>( + crs->coordinateSystem()) != nullptr); + auto cs = crs->coordinateSystem(); + ASSERT_EQ(cs->axisList().size(), 1); + auto axis = cs->axisList()[0]; + EXPECT_EQ(axis->nameStr(), "Decimal years"); + EXPECT_EQ(axis->unit().name(), "year"); + EXPECT_EQ(axis->unit().conversionToSI(), 0.0); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, EDATUM) { + auto wkt = "EDATUM[\"Engineering datum\",\n" + " ANCHOR[\"my anchor\"]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto edatum = nn_dynamic_pointer_cast<EngineeringDatum>(obj); + ASSERT_TRUE(edatum != nullptr); + + EXPECT_EQ(edatum->nameStr(), "Engineering datum"); + auto anchor = edatum->anchorDefinition(); + EXPECT_TRUE(anchor.has_value()); + EXPECT_EQ(*anchor, "my anchor"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, ENGINEERINGDATUM) { + auto wkt = "ENGINEERINGDATUM[\"Engineering datum\"]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto edatum = nn_dynamic_pointer_cast<EngineeringDatum>(obj); + ASSERT_TRUE(edatum != nullptr); + + EXPECT_EQ(edatum->nameStr(), "Engineering datum"); + auto anchor = edatum->anchorDefinition(); + EXPECT_TRUE(!anchor.has_value()); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, ENGCRS) { + auto wkt = "ENGCRS[\"Engineering CRS\",\n" + " EDATUM[\"Engineering datum\"],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " AXIS[\"(N)\",north,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<EngineeringCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "Engineering CRS"); + EXPECT_EQ(crs->datum()->nameStr(), "Engineering datum"); + auto cs = crs->coordinateSystem(); + ASSERT_EQ(cs->axisList().size(), 2); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, ENGINEERINGCRS) { + auto wkt = "ENGINEERINGCRS[\"Engineering CRS\",\n" + " ENGINEERINGDATUM[\"Engineering datum\"],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " AXIS[\"(N)\",north,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<EngineeringCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "Engineering CRS"); + EXPECT_EQ(crs->datum()->nameStr(), "Engineering datum"); + auto cs = crs->coordinateSystem(); + ASSERT_EQ(cs->axisList().size(), 2); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, LOCAL_CS_short) { + auto wkt = "LOCAL_CS[\"Engineering CRS\"]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<EngineeringCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "Engineering CRS"); + EXPECT_FALSE(!crs->datum()->nameStr().empty()); + auto cs = crs->coordinateSystem(); + ASSERT_EQ(cs->axisList().size(), 2); + + EXPECT_EQ( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + wkt); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, LOCAL_CS_long_one_aix) { + auto wkt = "LOCAL_CS[\"Engineering CRS\",\n" + " LOCAL_DATUM[\"Engineering datum\",12345],\n" + " AXIS[\"height\",up]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<EngineeringCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "Engineering CRS"); + EXPECT_EQ(crs->datum()->nameStr(), "Engineering datum"); + auto cs = crs->coordinateSystem(); + ASSERT_EQ(cs->axisList().size(), 1); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, LOCAL_CS_long_two_axis) { + auto wkt = "LOCAL_CS[\"Engineering CRS\",\n" + " LOCAL_DATUM[\"Engineering datum\",12345],\n" + " AXIS[\"Easting\",EAST],\n" + " AXIS[\"Northing\",NORTH]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<EngineeringCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "Engineering CRS"); + EXPECT_EQ(crs->datum()->nameStr(), "Engineering datum"); + auto cs = crs->coordinateSystem(); + ASSERT_EQ(cs->axisList().size(), 2); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, PDATUM) { + auto wkt = "PDATUM[\"Parametric datum\",\n" + " ANCHOR[\"my anchor\"]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto datum = nn_dynamic_pointer_cast<ParametricDatum>(obj); + ASSERT_TRUE(datum != nullptr); + + EXPECT_EQ(datum->nameStr(), "Parametric datum"); + auto anchor = datum->anchorDefinition(); + EXPECT_TRUE(anchor.has_value()); + EXPECT_EQ(*anchor, "my anchor"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, PARAMETRICDATUM) { + auto wkt = "PARAMETRICDATUM[\"Parametric datum\",\n" + " ANCHOR[\"my anchor\"]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto datum = nn_dynamic_pointer_cast<ParametricDatum>(obj); + ASSERT_TRUE(datum != nullptr); + + EXPECT_EQ(datum->nameStr(), "Parametric datum"); + auto anchor = datum->anchorDefinition(); + EXPECT_TRUE(anchor.has_value()); + EXPECT_EQ(*anchor, "my anchor"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, PARAMETRICCRS) { + auto wkt = + "PARAMETRICCRS[\"WMO standard atmosphere layer 0\"," + " PDATUM[\"Mean Sea Level\",ANCHOR[\"1013.25 hPa at 15°C\"]]," + " CS[parametric,1]," + " AXIS[\"pressure (hPa)\",up]," + " PARAMETRICUNIT[\"HectoPascal\",100.0]" + " ]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ParametricCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "WMO standard atmosphere layer 0"); + EXPECT_EQ(crs->datum()->nameStr(), "Mean Sea Level"); + auto cs = crs->coordinateSystem(); + EXPECT_TRUE(nn_dynamic_pointer_cast<ParametricCS>(cs) != nullptr); + ASSERT_EQ(cs->axisList().size(), 1); + auto axis = cs->axisList()[0]; + EXPECT_EQ(axis->nameStr(), "Pressure"); + EXPECT_EQ(axis->unit().name(), "HectoPascal"); + EXPECT_EQ(axis->unit().type(), UnitOfMeasure::Type::PARAMETRIC); + EXPECT_EQ(axis->unit().conversionToSI(), 100.0); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, PARAMETRICCRS_PARAMETRICDATUM) { + auto wkt = "PARAMETRICCRS[\"WMO standard atmosphere layer 0\"," + " PARAMETRICDATUM[\"Mean Sea Level\"]," + " CS[parametric,1]," + " AXIS[\"pressure (hPa)\",up]," + " PARAMETRICUNIT[\"HectoPascal\",100.0]" + " ]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ParametricCRS>(obj); + ASSERT_TRUE(crs != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, DerivedVerticalCRS) { + auto wkt = "VERTCRS[\"Derived vertCRS\",\n" + " BASEVERTCRS[\"ODN height\",\n" + " VDATUM[\"Ordnance Datum Newlyn\"]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[vertical,1],\n" + " AXIS[\"gravity-related height (H)\",up,\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<DerivedVerticalCRS>(obj); + ASSERT_TRUE(crs != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, DerivedEngineeringCRS) { + + auto wkt = "ENGCRS[\"Derived EngineeringCRS\",\n" + " BASEENGCRS[\"Engineering CRS\",\n" + " EDATUM[\"Engineering datum\"]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " AXIS[\"(N)\",north,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<DerivedEngineeringCRS>(obj); + ASSERT_TRUE(crs != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, DerivedParametricCRS) { + + auto wkt = "PARAMETRICCRS[\"Derived ParametricCRS\",\n" + " BASEPARAMCRS[\"Parametric CRS\",\n" + " PDATUM[\"Parametric datum\"]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[parametric,1],\n" + " AXIS[\"pressure (hPa)\",up,\n" + " PARAMETRICUNIT[\"HectoPascal\",100]]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<DerivedParametricCRS>(obj); + ASSERT_TRUE(crs != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, DerivedTemporalCRS) { + + auto wkt = "TIMECRS[\"Derived TemporalCRS\",\n" + " BASETIMECRS[\"Temporal CRS\",\n" + " TDATUM[\"Gregorian calendar\",\n" + " CALENDAR[\"proleptic Gregorian\"],\n" + " TIMEORIGIN[0000-01-01]]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[TemporalDateTime,1],\n" + " AXIS[\"time (T)\",future]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<DerivedTemporalCRS>(obj); + ASSERT_TRUE(crs != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, ensemble) { + auto wkt = "ENSEMBLE[\"test\",\n" + " MEMBER[\"World Geodetic System 1984\",\n" + " ID[\"EPSG\",6326]],\n" + " MEMBER[\"other datum\"],\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",7030]],\n" + " ENSEMBLEACCURACY[100]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto ensemble = nn_dynamic_pointer_cast<DatumEnsemble>(obj); + ASSERT_TRUE(ensemble != nullptr); + + ASSERT_EQ(ensemble->datums().size(), 2); + auto firstDatum = + nn_dynamic_pointer_cast<GeodeticReferenceFrame>(ensemble->datums()[0]); + ASSERT_TRUE(firstDatum != nullptr); + EXPECT_EQ(firstDatum->nameStr(), "World Geodetic System 1984"); + ASSERT_EQ(firstDatum->identifiers().size(), 1); + EXPECT_EQ(firstDatum->identifiers()[0]->code(), "6326"); + EXPECT_EQ(*(firstDatum->identifiers()[0]->codeSpace()), "EPSG"); + + EXPECT_EQ(firstDatum->ellipsoid()->nameStr(), "WGS 84"); + + EXPECT_EQ(ensemble->positionalAccuracy()->value(), "100"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, ensemble_vdatum) { + auto wkt = "ENSEMBLE[\"unnamed\",\n" + " MEMBER[\"vdatum1\"],\n" + " MEMBER[\"vdatum2\"],\n" + " ENSEMBLEACCURACY[100]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto ensemble = nn_dynamic_pointer_cast<DatumEnsemble>(obj); + ASSERT_TRUE(ensemble != nullptr); + + ASSERT_EQ(ensemble->datums().size(), 2); + auto firstDatum = + nn_dynamic_pointer_cast<VerticalReferenceFrame>(ensemble->datums()[0]); + ASSERT_TRUE(firstDatum != nullptr); + EXPECT_EQ(firstDatum->nameStr(), "vdatum1"); + + EXPECT_EQ(ensemble->positionalAccuracy()->value(), "100"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, esri_geogcs_datum_spheroid_name_hardcoded_substitution) { + auto wkt = "GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\"," + "SPHEROID[\"WGS_1984\",6378137.0,298.257223563]]," + "PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]"; + + // Test substitutions of CRS, datum and ellipsoid names from ESRI names + // to EPSG names. + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<GeodeticCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "WGS 84"); + EXPECT_EQ(crs->datum()->nameStr(), "World Geodetic System 1984"); + EXPECT_EQ(crs->ellipsoid()->nameStr(), "WGS 84"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, esri_geogcs_datum_spheroid_name_from_db_substitution) { + auto wkt = "GEOGCS[\"GCS_WGS_1966\",DATUM[\"D_WGS_1966\"," + "SPHEROID[\"WGS_1966\",6378145.0,298.25]]," + "PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]"; + + // Test substitutions of CRS, datum and ellipsoid names from ESRI names + // to EPSG names. + auto obj = WKTParser() + .attachDatabaseContext(DatabaseContext::create()) + .createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<GeodeticCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "WGS 66"); + EXPECT_EQ(crs->datum()->nameStr(), "World Geodetic System 1966"); + EXPECT_EQ(crs->ellipsoid()->nameStr(), "WGS_1966"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, esri_datum_name_with_prime_meridian) { + auto wkt = "GEOGCS[\"GCS_NTF_Paris\",DATUM[\"D_NTF\"," + "SPHEROID[\"Clarke_1880_IGN\",6378249.2,293.4660212936265]]," + "PRIMEM[\"Paris\",2.337229166666667]," + "UNIT[\"Grad\",0.01570796326794897]]"; + + // D_NTF normally translates to "Nouvelle Triangulation Francaise", + // but as we have a non-Greenwich prime meridian, we also test if + // "Nouvelle Triangulation Francaise (Paris)" is not a registered datum name + auto obj = WKTParser() + .attachDatabaseContext(DatabaseContext::create()) + .createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<GeodeticCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "NTF (Paris)"); + EXPECT_EQ(crs->datum()->nameStr(), + "Nouvelle Triangulation Francaise (Paris)"); + EXPECT_EQ(crs->ellipsoid()->nameStr(), "Clarke 1880 (IGN)"); +} + +// --------------------------------------------------------------------------- + +static const struct { + const char *esriProjectionName; + std::vector<std::pair<const char *, double>> esriParams; + const char *wkt2ProjectionName; + std::vector<std::pair<const char *, double>> wkt2Params; +} esriProjDefs[] = { + + {"Plate_Carree", + {{"False_Easting", 1}, {"False_Northing", 2}, {"Central_Meridian", 3}}, + "Equidistant Cylindrical", + { + {"Latitude of 1st standard parallel", 0}, + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Equidistant_Cylindrical", + { + {"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Standard_Parallel_1", 4}, + }, + "Equidistant Cylindrical", + { + {"Latitude of 1st standard parallel", 4}, + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Miller_Cylindrical", + {{"False_Easting", 1}, {"False_Northing", 2}, {"Central_Meridian", 3}}, + "Miller Cylindrical", + { + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Mercator", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Standard_Parallel_1", 4}}, + "Mercator (variant B)", + { + {"Latitude of 1st standard parallel", 4}, + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Gauss_Kruger", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Scale_Factor", 4}, + {"Latitude_Of_Origin", 5}}, + "Transverse Mercator", + { + {"Latitude of natural origin", 5}, + {"Longitude of natural origin", 3}, + {"Scale factor at natural origin", 4}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Transverse_Mercator", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Scale_Factor", 4}, + {"Latitude_Of_Origin", 5}}, + "Transverse Mercator", + { + {"Latitude of natural origin", 5}, + {"Longitude of natural origin", 3}, + {"Scale factor at natural origin", 4}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Albers", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Standard_Parallel_1", 4}, + {"Standard_Parallel_2", 5}, + {"Latitude_Of_Origin", 6}}, + "Albers Equal Area", + { + {"Latitude of false origin", 6}, + {"Longitude of false origin", 3}, + {"Latitude of 1st standard parallel", 4}, + {"Latitude of 2nd standard parallel", 5}, + {"Easting at false origin", 1}, + {"Northing at false origin", 2}, + }}, + + {"Sinusoidal", + {{"False_Easting", 1}, {"False_Northing", 2}, {"Central_Meridian", 3}}, + "Sinusoidal", + { + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Mollweide", + {{"False_Easting", 1}, {"False_Northing", 2}, {"Central_Meridian", 3}}, + "Mollweide", + { + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Eckert_I", + {{"False_Easting", 1}, {"False_Northing", 2}, {"Central_Meridian", 3}}, + "Eckert I", + { + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + // skipping Eckert_II to Eckert_VI + + {"Gall_Stereographic", + {{"False_Easting", 1}, {"False_Northing", 2}, {"Central_Meridian", 3}}, + "Gall Stereographic", + { + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Winkel_I", + { + {"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Standard_Parallel_1", 4}, + }, + "Winkel I", + { + {"Longitude of natural origin", 3}, + {"Latitude of 1st standard parallel", 4}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Winkel_II", + { + {"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Standard_Parallel_1", 4}, + }, + "Winkel II", + { + {"Longitude of natural origin", 3}, + {"Latitude of 1st standard parallel", 4}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Lambert_Conformal_Conic", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Standard_Parallel_1", 4}, + {"Scale_Factor", 5}, + {"Latitude_Of_Origin", 4}}, + "Lambert Conic Conformal (1SP)", + { + {"Latitude of natural origin", 4}, + {"Longitude of natural origin", 3}, + {"Scale factor at natural origin", 5}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Lambert_Conformal_Conic", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Standard_Parallel_1", 4}, + {"Standard_Parallel_2", 5}, + {"Latitude_Of_Origin", 6}}, + "Lambert Conic Conformal (2SP)", + { + {"Latitude of false origin", 6}, + {"Longitude of false origin", 3}, + {"Latitude of 1st standard parallel", 4}, + {"Latitude of 2nd standard parallel", 5}, + {"Easting at false origin", 1}, + {"Northing at false origin", 2}, + }}, + + // Unusual variant of above with Scale_Factor=1 + {"Lambert_Conformal_Conic", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Standard_Parallel_1", 4}, + {"Standard_Parallel_2", 5}, + {"Scale_Factor", 1.0}, + {"Latitude_Of_Origin", 6}}, + "Lambert Conic Conformal (2SP)", + { + {"Latitude of false origin", 6}, + {"Longitude of false origin", 3}, + {"Latitude of 1st standard parallel", 4}, + {"Latitude of 2nd standard parallel", 5}, + {"Easting at false origin", 1}, + {"Northing at false origin", 2}, + }}, + + {"Polyconic", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Latitude_Of_Origin", 4}}, + "American Polyconic", + { + {"Latitude of natural origin", 4}, + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Quartic_Authalic", + {{"False_Easting", 1}, {"False_Northing", 2}, {"Central_Meridian", 3}}, + "Quartic Authalic", + { + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Loximuthal", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Central_Parallel", 4}}, + "Loximuthal", + { + {"Latitude of natural origin", 4}, + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Bonne", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Standard_Parallel_1", 4}}, + "Bonne", + { + {"Latitude of natural origin", 4}, + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Hotine_Oblique_Mercator_Two_Point_Natural_Origin", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Latitude_Of_1st_Point", 3}, + {"Latitude_Of_2nd_Point", 4}, + {"Scale_Factor", 5}, + {"Longitude_Of_1st_Point", 6}, + {"Longitude_Of_2nd_Point", 7}, + {"Latitude_Of_Center", 8}}, + "Hotine Oblique Mercator Two Point Natural Origin", + { + {"Latitude of projection centre", 8}, + {"Latitude of 1st point", 3}, + {"Longitude of 1st point", 6}, + {"Latitude of 2nd point", 4}, + {"Longitude of 2nd point", 7}, + {"Scale factor on initial line", 5}, + {"Easting at projection centre", 1}, + {"Northing at projection centre", 2}, + }}, + + {"Stereographic", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Scale_Factor", 4}, + {"Latitude_Of_Origin", 5}}, + "Stereographic", + { + {"Latitude of natural origin", 5}, + {"Longitude of natural origin", 3}, + {"Scale factor at natural origin", 4}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Stereographic", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Scale_Factor", 4}, + {"Latitude_Of_Origin", 90}}, + "Polar Stereographic (variant A)", + { + {"Latitude of natural origin", 90}, + {"Longitude of natural origin", 3}, + {"Scale factor at natural origin", 4}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Stereographic", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Scale_Factor", 4}, + {"Latitude_Of_Origin", -90}}, + "Polar Stereographic (variant A)", + { + {"Latitude of natural origin", -90}, + {"Longitude of natural origin", 3}, + {"Scale factor at natural origin", 4}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Equidistant_Conic", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Standard_Parallel_1", 4}, + {"Standard_Parallel_2", 5}, + {"Latitude_Of_Origin", 6}}, + "Equidistant Conic", + { + {"Latitude of natural origin", 6}, + {"Longitude of natural origin", 3}, + {"Latitude of 1st standard parallel", 4}, + {"Latitude of 2nd standard parallel", 5}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Cassini", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Scale_Factor", 1}, + {"Latitude_Of_Origin", 4}}, + "Cassini-Soldner", + { + {"Latitude of natural origin", 4}, + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Van_der_Grinten_I", + {{"False_Easting", 1}, {"False_Northing", 2}, {"Central_Meridian", 3}}, + "Van Der Grinten", + { + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Robinson", + {{"False_Easting", 1}, {"False_Northing", 2}, {"Central_Meridian", 3}}, + "Robinson", + { + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Two_Point_Equidistant", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Latitude_Of_1st_Point", 3}, + {"Latitude_Of_2nd_Point", 4}, + {"Longitude_Of_1st_Point", 5}, + {"Longitude_Of_2nd_Point", 6}}, + "Two Point Equidistant", + { + {"Latitude of 1st point", 3}, + {"Longitude of 1st point", 5}, + {"Latitude of 2nd point", 4}, + {"Longitude of 2nd point", 6}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Azimuthal_Equidistant", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Latitude_Of_Origin", 4}}, + "Modified Azimuthal Equidistant", + { + {"Latitude of natural origin", 4}, + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Lambert_Azimuthal_Equal_Area", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Latitude_Of_Origin", 4}}, + "Lambert Azimuthal Equal Area", + { + {"Latitude of natural origin", 4}, + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Cylindrical_Equal_Area", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Standard_Parallel_1", 4}}, + "Lambert Cylindrical Equal Area (Spherical)", + { + {"Latitude of 1st standard parallel", 4}, + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + // Untested: Hotine_Oblique_Mercator_Two_Point_Center + + {"Hotine_Oblique_Mercator_Azimuth_Natural_Origin", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Scale_Factor", 3}, + {"Azimuth", 4}, + {"Longitude_Of_Center", 5}, + {"Latitude_Of_Center", 6}}, + "Hotine Oblique Mercator (variant A)", + { + {"Latitude of projection centre", 6}, + {"Longitude of projection centre", 5}, + {"Azimuth of initial line", 4}, + {"Angle from Rectified to Skew Grid", 4}, + {"Scale factor on initial line", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Hotine_Oblique_Mercator_Azimuth_Center", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Scale_Factor", 3}, + {"Azimuth", 4}, + {"Longitude_Of_Center", 5}, + {"Latitude_Of_Center", 6}}, + "Hotine Oblique Mercator (variant B)", + { + {"Latitude of projection centre", 6}, + {"Longitude of projection centre", 5}, + {"Azimuth of initial line", 4}, + {"Angle from Rectified to Skew Grid", 4}, + {"Scale factor on initial line", 3}, + {"Easting at projection centre", 1}, + {"Northing at projection centre", 2}, + }}, + + {"Double_Stereographic", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Scale_Factor", 4}, + {"Latitude_Of_Origin", 5}}, + "Oblique Stereographic", + { + {"Latitude of natural origin", 5}, + {"Longitude of natural origin", 3}, + {"Scale factor at natural origin", 4}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Krovak", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Pseudo_Standard_Parallel_1", 3}, + {"Scale_Factor", 4}, + {"Azimuth", 5}, + {"Longitude_Of_Center", 6}, + {"Latitude_Of_Center", 7}, + {"X_Scale", 1}, + {"Y_Scale", 1}, + {"XY_Plane_Rotation", 0}}, + "Krovak", + { + {"Latitude of projection centre", 7}, + {"Longitude of origin", 6}, + {"Co-latitude of cone axis", 5}, + {"Latitude of pseudo standard parallel", 3}, + {"Scale factor on pseudo standard parallel", 4}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Krovak", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Pseudo_Standard_Parallel_1", 3}, + {"Scale_Factor", 4}, + {"Azimuth", 5}, + {"Longitude_Of_Center", 6}, + {"Latitude_Of_Center", 7}, + {"X_Scale", -1}, + {"Y_Scale", 1}, + {"XY_Plane_Rotation", 90}}, + "Krovak (North Orientated)", + { + {"Latitude of projection centre", 7}, + {"Longitude of origin", 6}, + {"Co-latitude of cone axis", 5}, + {"Latitude of pseudo standard parallel", 3}, + {"Scale factor on pseudo standard parallel", 4}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"New_Zealand_Map_Grid", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Longitude_Of_Origin", 3}, + {"Latitude_Of_Origin", 4}}, + "New Zealand Map Grid", + { + {"Latitude of natural origin", 4}, + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Orthographic", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Longitude_Of_Center", 3}, + {"Latitude_Of_Center", 4}}, + "Orthographic", + { + {"Latitude of natural origin", 4}, + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Winkel_Tripel", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Standard_Parallel_1", 4}}, + "Winkel Tripel", + { + {"Longitude of natural origin", 3}, + {"Latitude of 1st standard parallel", 4}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Aitoff", + {{"False_Easting", 1}, {"False_Northing", 2}, {"Central_Meridian", 3}}, + "Aitoff", + { + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Craster_Parabolic", + {{"False_Easting", 1}, {"False_Northing", 2}, {"Central_Meridian", 3}}, + "Craster Parabolic", + { + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Gnomonic", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Longitude_Of_Center", 3}, + {"Latitude_Of_Center", 4}}, + "Gnomonic", + { + {"Latitude of natural origin", 4}, + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Stereographic_North_Pole", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Standard_Parallel_1", 4}}, + "Polar Stereographic (variant B)", + { + {"Latitude of standard parallel", 4}, + {"Longitude of origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Stereographic_South_Pole", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Standard_Parallel_1", -4}}, + "Polar Stereographic (variant B)", + { + {"Latitude of standard parallel", -4}, + {"Longitude of origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Rectified_Skew_Orthomorphic_Natural_Origin", + { + {"False_Easting", 1}, + {"False_Northing", 2}, + {"Scale_Factor", 3}, + {"Azimuth", 4}, + {"Longitude_Of_Center", 5}, + {"Latitude_Of_Center", 6}, + {"XY_Plane_Rotation", 7}, + }, + "Hotine Oblique Mercator (variant A)", + { + {"Latitude of projection centre", 6}, + {"Longitude of projection centre", 5}, + {"Azimuth of initial line", 4}, + {"Angle from Rectified to Skew Grid", 7}, + {"Scale factor on initial line", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + // Temptative mapping + {"Rectified_Skew_Orthomorphic_Center", + { + {"False_Easting", 1}, + {"False_Northing", 2}, + {"Scale_Factor", 3}, + {"Azimuth", 4}, + {"Longitude_Of_Center", 5}, + {"Latitude_Of_Center", 6}, + {"XY_Plane_Rotation", 7}, + }, + "Hotine Oblique Mercator (variant B)", + { + {"Latitude of projection centre", 6}, + {"Longitude of projection centre", 5}, + {"Azimuth of initial line", 4}, + {"Angle from Rectified to Skew Grid", 7}, + {"Scale factor on initial line", 3}, + {"Easting at projection centre", 1}, + {"Northing at projection centre", 2}, + }}, + + {"Goode_Homolosine", + {{"False_Easting", 1}, {"False_Northing", 2}, {"Central_Meridian", 3}}, + "Goode Homolosine", + { + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Equidistant_Cylindrical_Ellipsoidal", + { + {"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Standard_Parallel_1", 4}, + }, + "Equidistant Cylindrical", + { + {"Latitude of 1st standard parallel", 4}, + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Laborde_Oblique_Mercator", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Scale_Factor", 3}, + {"Azimuth", 4}, + {"Longitude_Of_Center", 5}, + {"Latitude_Of_Center", 6}}, + "Laborde Oblique Mercator", + { + {"Latitude of projection centre", 6}, + {"Longitude of projection centre", 5}, + {"Azimuth of initial line", 4}, + {"Scale factor on initial line", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Gnomonic_Ellipsoidal", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Longitude_Of_Center", 3}, + {"Latitude_Of_Center", 4}}, + "Gnomonic", + { + {"Latitude of natural origin", 4}, + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Wagner_IV", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Latitude_Of_Center", 0}}, + "Wagner IV", + { + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Wagner_V", + {{"False_Easting", 1}, {"False_Northing", 2}, {"Central_Meridian", 3}}, + "Wagner V", + { + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Wagner_VII", + {{"False_Easting", 1}, {"False_Northing", 2}, {"Central_Meridian", 3}}, + "Wagner VII", + { + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Geostationary_Satellite", + { + {"False_Easting", 1}, + {"False_Northing", 2}, + {"Longitude_Of_Center", 3}, + {"Height", 4}, + {"Option", 0.0}, + }, + "Geostationary Satellite (Sweep Y)", + { + {"Longitude of natural origin", 3}, + {"Satellite Height", 4}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + {"Mercator_Auxiliary_Sphere", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Central_Meridian", 3}, + {"Standard_Parallel_1", 4}, + {"Auxiliary_Sphere_Type", 0}}, + "Popular Visualisation Pseudo Mercator", + { + {"Latitude of natural origin", 4}, + {"Longitude of natural origin", 3}, + {"False easting", 1}, + {"False northing", 2}, + }}, + + { + "Unknown_Method", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Longitude_Of_Origin", 3}, + {"Latitude_Of_Origin", 4}}, + "Unknown_Method", + {{"False_Easting", 1}, + {"False_Northing", 2}, + {"Longitude_Of_Origin", 3}, + {"Latitude_Of_Origin", 4}}, + }, + +}; + +TEST(wkt_parse, esri_projcs) { + + for (const auto &projDef : esriProjDefs) { + std::string wkt("PROJCS[\"unnamed\",GEOGCS[\"GCS_WGS_1984\"," + "DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\"," + "6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\""); + wkt += projDef.esriProjectionName; + wkt += "\"],"; + for (const auto ¶m : projDef.esriParams) { + wkt += "PARAMETER[\""; + wkt += param.first; + wkt += "\","; + wkt += toString(param.second); + wkt += "],"; + } + wkt += "UNIT[\"Meter\",1.0]]"; + + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto conv = crs->derivingConversion(); + auto method = conv->method(); + EXPECT_EQ(method->nameStr(), projDef.wkt2ProjectionName) << wkt; + auto values = conv->parameterValues(); + EXPECT_EQ(values.size(), projDef.wkt2Params.size()) << wkt; + if (values.size() == projDef.wkt2Params.size()) { + for (size_t i = 0; i < values.size(); i++) { + const auto &opParamvalue = + nn_dynamic_pointer_cast<OperationParameterValue>(values[i]); + ASSERT_TRUE(opParamvalue); + const auto ¶mName = opParamvalue->parameter()->nameStr(); + const auto ¶meterValue = opParamvalue->parameterValue(); + EXPECT_EQ(paramName, projDef.wkt2Params[i].first) << wkt; + EXPECT_EQ(parameterValue->type(), + ParameterValue::Type::MEASURE); + auto measure = parameterValue->value(); + EXPECT_EQ(measure.value(), projDef.wkt2Params[i].second) << wkt; + } + } + } +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt1_esri_krovak_south_west) { + auto wkt = "PROJCS[\"S-JTSK_Krovak\",GEOGCS[\"GCS_S_JTSK\"," + "DATUM[\"D_S_JTSK\"," + "SPHEROID[\"Bessel_1841\",6377397.155,299.1528128]]," + "PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Krovak\"],PARAMETER[\"False_Easting\",0.0]," + "PARAMETER[\"False_Northing\",0.0]," + "PARAMETER[\"Pseudo_Standard_Parallel_1\",78.5]," + "PARAMETER[\"Scale_Factor\",0.9999]," + "PARAMETER[\"Azimuth\",30.28813975277778]," + "PARAMETER[\"Longitude_Of_Center\",24.83333333333333]," + "PARAMETER[\"Latitude_Of_Center\",49.5]," + "PARAMETER[\"X_Scale\",1.0]," + "PARAMETER[\"Y_Scale\",1.0]," + "PARAMETER[\"XY_Plane_Rotation\",0.0],UNIT[\"Meter\",1.0]]"; + + auto obj = WKTParser() + .attachDatabaseContext(DatabaseContext::create()) + .createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->derivingConversion()->method()->nameStr(), "Krovak"); + + auto expected_wkt2 = + "PROJCRS[\"S-JTSK / Krovak\",\n" + " BASEGEODCRS[\"S-JTSK\",\n" + " DATUM[\"System of the Unified Trigonometrical Cadastral " + "Network\",\n" + " ELLIPSOID[\"Bessel 1841\",6377397.155,299.1528128,\n" + " LENGTHUNIT[\"metre\",1]],\n" + " ID[\"EPSG\",6156]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"Degree\",0.0174532925199433]]],\n" + " CONVERSION[\"unnamed\",\n" + " METHOD[\"Krovak\",\n" + " ID[\"EPSG\",9819]],\n" + " PARAMETER[\"Latitude of projection centre\",49.5,\n" + " ANGLEUNIT[\"Degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8811]],\n" + " PARAMETER[\"Longitude of origin\",24.8333333333333,\n" + " ANGLEUNIT[\"Degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8833]],\n" + " PARAMETER[\"Co-latitude of cone axis\",30.2881397527778,\n" + " ANGLEUNIT[\"Degree\",0.0174532925199433],\n" + " ID[\"EPSG\",1036]],\n" + " PARAMETER[\"Latitude of pseudo standard parallel\",78.5,\n" + " ANGLEUNIT[\"Degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8818]],\n" + " PARAMETER[\"Scale factor on pseudo standard " + "parallel\",0.9999,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8819]],\n" + " PARAMETER[\"False easting\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"southing\",south,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " AXIS[\"westing\",west,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]]]"; + + EXPECT_EQ(crs->exportToWKT(WKTFormatter::create().get()), expected_wkt2); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt1_esri_normalize_unit) { + auto wkt = "PROJCS[\"Accra_Ghana_Grid\",GEOGCS[\"GCS_Accra\"," + "DATUM[\"D_Accra\",SPHEROID[\"War_Office\",6378300.0,296.0]]," + "PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Transverse_Mercator\"]," + "PARAMETER[\"False_Easting\",900000.0]," + "PARAMETER[\"False_Northing\",0.0]," + "PARAMETER[\"Central_Meridian\",-1.0]," + "PARAMETER[\"Scale_Factor\",0.99975]," + "PARAMETER[\"Latitude_Of_Origin\",4.666666666666667]," + "UNIT[\"Foot_Gold_Coast\",0.3047997101815088]]"; + + auto obj = WKTParser() + .attachDatabaseContext(DatabaseContext::create()) + .createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->coordinateSystem()->axisList()[0]->unit().name(), + "Gold Coast foot"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt1_esri_ups_north) { + auto wkt = "PROJCS[\"UPS_North\",GEOGCS[\"GCS_WGS_1984\"," + "DATUM[\"D_WGS_1984\"," + "SPHEROID[\"WGS_1984\",6378137.0,298.257223563]]," + "PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Stereographic\"]," + "PARAMETER[\"False_Easting\",2000000.0]," + "PARAMETER[\"False_Northing\",2000000.0]," + "PARAMETER[\"Central_Meridian\",0.0]," + "PARAMETER[\"Scale_Factor\",0.994]," + "PARAMETER[\"Latitude_Of_Origin\",90.0]," + "UNIT[\"Meter\",1.0]]"; + + auto obj = WKTParser() + .attachDatabaseContext(DatabaseContext::create()) + .createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "WGS 84 / UPS North (E,N)"); + EXPECT_EQ(crs->coordinateSystem()->axisList()[0]->direction(), + AxisDirection::SOUTH); + EXPECT_EQ(crs->coordinateSystem()->axisList()[0]->abbreviation(), "E"); + EXPECT_EQ(crs->coordinateSystem()->axisList()[1]->direction(), + AxisDirection::SOUTH); + EXPECT_EQ(crs->coordinateSystem()->axisList()[1]->abbreviation(), "N"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, wkt1_esri_ups_south) { + auto wkt = "PROJCS[\"UPS_South\",GEOGCS[\"GCS_WGS_1984\"," + "DATUM[\"D_WGS_1984\"," + "SPHEROID[\"WGS_1984\",6378137.0,298.257223563]]," + "PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]]," + "PROJECTION[\"Stereographic\"]," + "PARAMETER[\"False_Easting\",2000000.0]," + "PARAMETER[\"False_Northing\",2000000.0]," + "PARAMETER[\"Central_Meridian\",0.0]," + "PARAMETER[\"Scale_Factor\",0.994]," + "PARAMETER[\"Latitude_Of_Origin\",-90.0]," + "UNIT[\"Meter\",1.0]]"; + + auto obj = WKTParser() + .attachDatabaseContext(DatabaseContext::create()) + .createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->nameStr(), "WGS 84 / UPS South (E,N)"); + EXPECT_EQ(crs->coordinateSystem()->axisList()[0]->direction(), + AxisDirection::NORTH); + EXPECT_EQ(crs->coordinateSystem()->axisList()[0]->abbreviation(), "E"); + EXPECT_EQ(crs->coordinateSystem()->axisList()[1]->direction(), + AxisDirection::NORTH); + EXPECT_EQ(crs->coordinateSystem()->axisList()[1]->abbreviation(), "N"); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid) { + EXPECT_THROW(WKTParser().createFromWKT(""), ParsingException); + EXPECT_THROW(WKTParser().createFromWKT("A"), ParsingException); + EXPECT_THROW(WKTParser().createFromWKT("UNKNOWN[\"foo\"]"), + ParsingException); + EXPECT_THROW(WKTParser().createFromWKT("INVALID["), ParsingException); + EXPECT_THROW(WKTParser().createFromWKT("INVALID[]"), ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_SPHEROID) { + EXPECT_NO_THROW(WKTParser().createFromWKT("SPHEROID[\"x\",1,0.5]")); + EXPECT_THROW(WKTParser().createFromWKT("SPHEROID[\"x\"]"), + ParsingException); // major axis not number + EXPECT_THROW(WKTParser().createFromWKT("SPHEROID[\"x\",\"1\",0.5]"), + ParsingException); // major axis not number + EXPECT_THROW(WKTParser().createFromWKT("SPHEROID[\"x\",1,\"0.5\"]"), + ParsingException); // reverse flatting not number +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_DATUM) { + EXPECT_NO_THROW( + WKTParser().createFromWKT("DATUM[\"x\",SPHEROID[\"x\",1,0.5]]")); + EXPECT_THROW(WKTParser().createFromWKT("DATUM[\"x\"]"), ParsingException); + EXPECT_THROW(WKTParser().createFromWKT("DATUM[\"x\",FOO[]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_ENSEMBLE) { + EXPECT_THROW(WKTParser().createFromWKT("ENSEMBLE[]"), ParsingException); + EXPECT_THROW(WKTParser().createFromWKT("ENSEMBLE[\"x\"]"), + ParsingException); + EXPECT_THROW(WKTParser().createFromWKT( + "ENSEMBLE[\"x\",MEMBER[\"vdatum1\"],MEMBER[\"vdatum2\"]]"), + ParsingException); + EXPECT_THROW( + WKTParser().createFromWKT("ENSEMBLE[\"x\",MEMBER[],MEMBER[\"vdatum2\"]," + "ENSEMBLEACCURACY[\"100\"]]"), + ParsingException); + EXPECT_THROW( + WKTParser().createFromWKT("ENSEMBLE[\"x\",MEMBER[\"vdatum1\"],MEMBER[" + "\"vdatum2\"],ENSEMBLEACCURACY[]]"), + ParsingException); + EXPECT_THROW( + WKTParser().createFromWKT("ENSEMBLE[\"x\",ENSEMBLEACCURACY[\"100\"]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_GEOGCS) { + EXPECT_NO_THROW(WKTParser().createFromWKT( + "GEOGCS[\"x\",DATUM[\"x\",SPHEROID[\"x\",1,0.5]],PRIMEM[\"x\",0],UNIT[" + "\"degree\",0.0174532925199433]]")); + + // missing PRIMEM + EXPECT_THROW( + WKTParser().createFromWKT("GEOGCS[\"x\",DATUM[\"x\",SPHEROID[\"x\",1,0." + "5]],UNIT[\"degree\",0.0174532925199433]]"), + ParsingException); + + // missing UNIT + EXPECT_THROW( + WKTParser().createFromWKT( + "GEOGCS[\"x\",DATUM[\"x\",SPHEROID[\"x\",1,0.5]],PRIMEM[\"x\",0]]"), + ParsingException); + + EXPECT_THROW(WKTParser().createFromWKT("GEOGCS[\"x\"]"), ParsingException); + EXPECT_THROW(WKTParser().createFromWKT("GEOGCS[\"x\",FOO[]]"), + ParsingException); + + // not enough children for DATUM + EXPECT_THROW( + WKTParser().createFromWKT("GEOGCS[\"x\",DATUM[\"x\"],PRIMEM[\"x\",0]," + "UNIT[\"degree\",0.0174532925199433]]"), + ParsingException); + + // not enough children for AUTHORITY + EXPECT_THROW(WKTParser().createFromWKT("GEOGCS[\"x\",DATUM[\"x\",SPHEROID[" + "\"x\",1,0.5]],PRIMEM[\"x\",0],UNIT[" + "\"degree\",0.0174532925199433]," + "AUTHORITY[\"x\"]]"), + ParsingException); + + // not enough children for AUTHORITY, but ignored + EXPECT_NO_THROW(WKTParser().setStrict(false).createFromWKT( + "GEOGCS[\"x\",DATUM[\"x\",SPHEROID[\"x\",1,0.5]],PRIMEM[\"x\",0],UNIT[" + "\"degree\",0.0174532925199433],AUTHORITY[\"x\"]]")); + + EXPECT_NO_THROW(WKTParser().createFromWKT( + "GEOGCS[\"x\",DATUM[\"x\",SPHEROID[\"x\",1,0.5]],PRIMEM[\"x\",0],UNIT[" + "\"degree\",0.0174532925199433]]")); + + // PRIMEM not numeric + EXPECT_THROW( + WKTParser().createFromWKT( + "GEOGCS[\"x\",DATUM[\"x\",SPHEROID[\"x\",1,0." + "5]],PRIMEM[\"x\",\"a\"],UNIT[\"degree\",0.0174532925199433]]"), + ParsingException); + + // not enough children for PRIMEM + EXPECT_THROW(WKTParser().createFromWKT("GEOGCS[\"x\",DATUM[\"x\",SPHEROID[" + "\"x\",1,0.5]],PRIMEM[\"x\"],UNIT[" + "\"degree\",0.0174532925199433]]"), + ParsingException); + + EXPECT_NO_THROW(WKTParser().createFromWKT( + "GEOGCS[\"x\",DATUM[\"x\",SPHEROID[\"x\",1,0.5]],PRIMEM[\"x\",0],UNIT[" + "\"degree\",0.0174532925199433],AXIS[\"latitude\"," + "NORTH],AXIS[\"longitude\",EAST]]")); + + // one axis only + EXPECT_THROW(WKTParser().createFromWKT( + "GEOGCS[\"x\",DATUM[\"x\",SPHEROID[\"x\",1,0." + "5]],PRIMEM[\"x\",0],UNIT[\"degree\",0.0174532925199433]," + "AXIS[\"latitude\",NORTH]]"), + ParsingException); + + // invalid axis + EXPECT_THROW(WKTParser().createFromWKT("GEOGCS[\"x\",DATUM[\"x\",SPHEROID[" + "\"x\",1,0.5]],PRIMEM[\"x\",0],UNIT[" + "\"degree\",0.0174532925199433]," + "AXIS[\"latitude\"," + "NORTH],AXIS[\"longitude\"]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_UNIT) { + std::string startWKT("GEODCRS[\"x\",DATUM[\"x\",SPHEROID[\"x\",1,0.5]],CS[" + "ellipsoidal,2],AXIS[\"latitude\",north],AXIS[" + "\"longitude\",east,"); + + EXPECT_NO_THROW(WKTParser().createFromWKT( + startWKT + "UNIT[\"degree\",0.0174532925199433]]]")); + + // not enough children + EXPECT_THROW(WKTParser().createFromWKT(startWKT + "UNIT[\"x\"]]]"), + ParsingException); + + // invalid conversion factor + EXPECT_THROW( + WKTParser().createFromWKT(startWKT + "UNIT[\"x\",\"invalid\"]]]"), + ParsingException); + + // invalid ID + EXPECT_THROW( + WKTParser().createFromWKT(startWKT + "UNIT[\"x\",1,ID[\"x\"]]]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_GEOCCS) { + EXPECT_NO_THROW( + WKTParser().createFromWKT("GEOCCS[\"x\",DATUM[\"x\",SPHEROID[\"x\",1,0." + "5]],PRIMEM[\"x\",0],UNIT[\"metre\",1]]")); + + // missing PRIMEM + EXPECT_THROW(WKTParser().createFromWKT("GEOCCS[\"x\",DATUM[\"x\",SPHEROID[" + "\"x\",1,0.5]],UNIT[\"metre\",1]]"), + ParsingException); + + // missing UNIT + EXPECT_THROW( + WKTParser().createFromWKT( + "GEOCCS[\"x\",DATUM[\"x\",SPHEROID[\"x\",1,0.5]],PRIMEM[\"x\",0]]"), + ParsingException); + + // ellipsoidal CS is invalid in a GEOCCS + EXPECT_THROW(WKTParser().createFromWKT("GEOCCS[\"x\",DATUM[\"x\",SPHEROID[" + "\"x\",1,0.5]],PRIMEM[\"x\",0],UNIT[" + "\"degree\",0.0174532925199433]," + "AXIS[\"latitude\"," + "NORTH],AXIS[\"longitude\",EAST]]"), + ParsingException); + + // 3 axis required + EXPECT_THROW(WKTParser().createFromWKT( + "GEOCCS[\"x\",DATUM[\"x\",SPHEROID[\"x\",1,0.5]],PRIMEM[" + "\"x\",0],UNIT[\"metre\",1],AXIS[" + "\"Geocentric X\",OTHER],AXIS[\"Geocentric Y\",OTHER]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_CS_of_GEODCRS) { + + std::string startWKT("GEODCRS[\"x\",DATUM[\"x\",SPHEROID[\"x\",1,0.5]]"); + + // missing CS + EXPECT_THROW(WKTParser().createFromWKT(startWKT + "]"), ParsingException); + + // CS: not enough children + EXPECT_THROW(WKTParser().createFromWKT(startWKT + ",CS[x]]"), + ParsingException); + + // CS: invalid type + EXPECT_THROW(WKTParser().createFromWKT(startWKT + ",CS[x,2]]"), + ParsingException); + + // CS: invalid number of axis + EXPECT_THROW(WKTParser().createFromWKT(startWKT + ",CS[ellipsoidal,0]]"), + ParsingException); + + // CS: number of axis is not a number + EXPECT_THROW( + WKTParser().createFromWKT(startWKT + ",CS[ellipsoidal,\"x\"]]"), + ParsingException); + + // CS: invalid CS type + EXPECT_THROW(WKTParser().createFromWKT(startWKT + + ",CS[invalid,2],AXIS[\"latitude\"," + "north],AXIS[\"longitude\",east]]"), + ParsingException); + + // CS: OK + EXPECT_NO_THROW(WKTParser().createFromWKT( + startWKT + ",CS[ellipsoidal,2],AXIS[\"latitude\",north],AXIS[" + "\"longitude\",east]]")); + + // CS: Cartesian with 2 axis unexpected + EXPECT_THROW(WKTParser().createFromWKT(startWKT + + ",CS[Cartesian,2],AXIS[\"latitude\"," + "north],AXIS[\"longitude\",east]]"), + ParsingException); + + // CS: missing axis + EXPECT_THROW(WKTParser().createFromWKT( + startWKT + ",CS[ellipsoidal,2],AXIS[\"latitude\",north]]"), + ParsingException); + + // not enough children in AXIS + EXPECT_THROW( + WKTParser().createFromWKT( + startWKT + + ",CS[ellipsoidal,2],AXIS[\"latitude\",north],AXIS[\"longitude\"]]"), + ParsingException); + + // not enough children in ORDER + EXPECT_THROW(WKTParser().createFromWKT( + startWKT + + ",CS[ellipsoidal,2],AXIS[\"latitude\",north,ORDER[]],AXIS[" + "\"longitude\",east]]"), + ParsingException); + + // invalid value in ORDER + EXPECT_THROW( + WKTParser().createFromWKT( + startWKT + + ",CS[ellipsoidal,2],AXIS[\"latitude\",north,ORDER[\"x\"]],AXIS[" + "\"longitude\",east]]"), + ParsingException); + + // unexpected ORDER value + EXPECT_THROW( + WKTParser().createFromWKT( + startWKT + + ",CS[ellipsoidal,2],AXIS[\"latitude\",north,ORDER[2]],AXIS[" + "\"longitude\",east]]"), + ParsingException); + + // Invalid CS type + EXPECT_THROW(WKTParser().createFromWKT( + startWKT + + ",CS[vertical,1],\n" + " AXIS[\"gravity-related height (H)\",up],\n" + " UNIT[\"metre\",1]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_CS_of_GEOGRAPHICCRS) { + // A GeographicCRS must have an ellipsoidal CS + EXPECT_THROW(WKTParser().createFromWKT( + "GEOGRAPHICCRS[\"x\",DATUM[\"x\",SPHEROID[\"x\",1,0.5]]," + "CS[Cartesian,3],AXIS[\"(X)\",geocentricX],AXIS[\"(Y)\"," + "geocentricY],AXIS[\"(Z)\",geocentricZ]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_DYNAMIC) { + std::string prefix("GEOGCRS[\"WGS 84 (G1762)\","); + std::string suffix( + "TRF[\"World Geodetic System 1984 (G1762)\"," + "ELLIPSOID[\"WGS 84\",6378137,298.257223563]]," + "CS[ellipsoidal,3]," + " AXIS[\"(lat)\",north,ANGLEUNIT[\"degree\",0.0174532925199433]]," + " AXIS[\"(lon)\",east,ANGLEUNIT[\"degree\",0.0174532925199433]]," + " AXIS[\"ellipsoidal height (h)\",up,LENGTHUNIT[\"metre\",1.0]]" + "]"); + + EXPECT_NO_THROW(WKTParser().createFromWKT( + prefix + "DYNAMIC[FRAMEEPOCH[2015]]," + suffix)); + + EXPECT_THROW(WKTParser().createFromWKT(prefix + "DYNAMIC[]," + suffix), + ParsingException); + EXPECT_THROW( + WKTParser().createFromWKT(prefix + "DYNAMIC[FRAMEEPOCH[]]," + suffix), + ParsingException); + EXPECT_THROW(WKTParser().createFromWKT( + prefix + "DYNAMIC[FRAMEEPOCH[\"invalid\"]]," + suffix), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_PROJCRS) { + // missing BASEGEODCRS + EXPECT_THROW( + WKTParser().createFromWKT("PROJCRS[\"WGS 84 / UTM zone 31N\"]"), + ParsingException); + + std::string startWKT("PROJCRS[\"WGS 84 / UTM zone 31N\",BASEGEOGCRS[\"WGS " + "84\",DATUM[\"WGS_1984\",ELLIPSOID[\"WGS " + "84\",6378137,298.257223563]],UNIT[\"degree\",0." + "0174532925199433]]"); + + // missing CONVERSION + EXPECT_THROW(WKTParser().createFromWKT(startWKT + "]"), ParsingException); + + // not enough children in CONVERSION + EXPECT_THROW(WKTParser().createFromWKT(startWKT + ",CONVERSION[\"x\"]]"), + ParsingException); + + // not enough children in METHOD + EXPECT_THROW( + WKTParser().createFromWKT(startWKT + ",CONVERSION[\"x\",METHOD[]]]"), + ParsingException); + + // not enough children in PARAMETER + EXPECT_THROW( + WKTParser().createFromWKT( + startWKT + ",CONVERSION[\"x\",METHOD[\"y\"],PARAMETER[\"z\"]]]"), + ParsingException); + + // non numeric value for PARAMETER + EXPECT_THROW( + WKTParser().createFromWKT( + startWKT + + ",CONVERSION[\"x\",METHOD[\"y\"],PARAMETER[\"z\",\"foo\"]]]"), + ParsingException); + + // missing CS + EXPECT_THROW(WKTParser().createFromWKT(startWKT + + ",CONVERSION[\"x\",METHOD[\"y\"]]]"), + ParsingException); + + // CS is not Cartesian + EXPECT_THROW(WKTParser().createFromWKT( + startWKT + ",CONVERSION[\"x\",METHOD[\"y\"]],CS[" + "ellipsoidal,2],AXIS[\"latitude\",north],AXIS[" + "\"longitude\",east]]"), + ParsingException); + + // not enough children in MERIDIAN + EXPECT_THROW(WKTParser().createFromWKT( + startWKT + ",CONVERSION[\"x\",METHOD[\"y\"]],CS[" + "Cartesian,2],AXIS[\"easting (X)\",south," + "MERIDIAN[90]],AXIS[" + "\"northing (Y)\",south]]"), + ParsingException); + + // non numeric angle value for MERIDIAN + EXPECT_THROW( + WKTParser().createFromWKT( + startWKT + + ",CONVERSION[\"x\",METHOD[\"y\"]],CS[" + "Cartesian,2],AXIS[\"easting (X)\",south," + "MERIDIAN[\"x\",UNIT[\"degree\",0.0174532925199433]]],AXIS[" + "\"northing (Y)\",south]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_PROJCS) { + + std::string startWKT( + "PROJCS[\"WGS 84 / UTM zone 31N\",\n" + " GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\n" + " AUTHORITY[\"EPSG\",\"7030\"]],\n" + " AUTHORITY[\"EPSG\",\"6326\"]],\n" + " PRIMEM[\"x\",0],\n" + " UNIT[\"degree\",0.0174532925199433,\n" + " AUTHORITY[\"EPSG\",9122]],\n" + " AXIS[\"latitude\",NORTH],\n" + " AXIS[\"longitude\",EAST],\n" + " AUTHORITY[\"EPSG\",\"4326\"]]\n"); + + // missing PROJECTION + EXPECT_THROW(WKTParser().createFromWKT(startWKT + "]"), ParsingException); + + // not enough children in PROJECTION + EXPECT_THROW(WKTParser().createFromWKT(startWKT + + ",PROJECTION[],UNIT[\"metre\",1]]"), + ParsingException); + + // not enough children in PARAMETER + EXPECT_THROW(WKTParser().createFromWKT( + startWKT + + ",PROJECTION[\"x\"],PARAMETER[\"z\"],UNIT[\"metre\",1]]"), + ParsingException); + + // not enough children in PARAMETER + EXPECT_THROW( + WKTParser().createFromWKT( + startWKT + + ",PROJECTION[\"x\"],PARAMETER[\"z\",\"foo\"],UNIT[\"metre\",1]]"), + ParsingException); + + EXPECT_NO_THROW(WKTParser().createFromWKT( + startWKT + ",PROJECTION[\"x\"],UNIT[\"metre\",1]]")); + + // missing UNIT + EXPECT_THROW(WKTParser().createFromWKT(startWKT + ",PROJECTION[\"x\"]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_VERTCRS) { + + // missing VDATUM + EXPECT_THROW(WKTParser().createFromWKT( + "VERTCRS[\"foo\",CS[vertical,1],AXIS[\"x\",up]]"), + ParsingException); + + // missing CS + EXPECT_THROW(WKTParser().createFromWKT("VERTCRS[\"foo\",VDATUM[\"bar\"]]"), + ParsingException); + + // CS is not of type vertical + EXPECT_THROW(WKTParser().createFromWKT("VERTCRS[\"foo\",VDATUM[\"bar\"],CS[" + "ellipsoidal,2],AXIS[\"latitude\"," + "north],AXIS[" + "\"longitude\",east]]"), + ParsingException); + + // verticalCS should have only 1 axis + EXPECT_THROW( + WKTParser().createFromWKT("VERTCRS[\"foo\",VDATUM[\"bar\"],CS[vertical," + "2],AXIS[\"latitude\",north],AXIS[" + "\"longitude\",east]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_VERT_CS) { + + EXPECT_NO_THROW(WKTParser().createFromWKT( + "VERT_CS[\"x\",VERT_DATUM[\"y\",2005],UNIT[\"metre\",1]]")); + + // Missing VERT_DATUM + EXPECT_THROW(WKTParser().createFromWKT("VERT_CS[\"x\",UNIT[\"metre\",1]]"), + ParsingException); + + // Missing UNIT + EXPECT_THROW( + WKTParser().createFromWKT("VERT_CS[\"x\",VERT_DATUM[\"y\",2005]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_COORDINATEOPERATION) { + + std::string src_wkt; + { + auto formatter = WKTFormatter::create(); + formatter->setOutputId(false); + src_wkt = GeographicCRS::EPSG_4326->exportToWKT(formatter.get()); + } + + std::string dst_wkt; + { + auto formatter = WKTFormatter::create(); + formatter->setOutputId(false); + dst_wkt = GeographicCRS::EPSG_4807->exportToWKT(formatter.get()); + } + + std::string interpolation_wkt; + { + auto formatter = WKTFormatter::create(); + formatter->setOutputId(false); + interpolation_wkt = + GeographicCRS::EPSG_4979->exportToWKT(formatter.get()); + } + + // Valid + { + auto wkt = "COORDINATEOPERATION[\"transformationName\",\n" + " SOURCECRS[" + + src_wkt + "],\n" + " TARGETCRS[" + + dst_wkt + "],\n" + " METHOD[\"operationMethodName\"],\n" + " PARAMETERFILE[\"paramName\",\"foo.bin\"]]"; + + EXPECT_NO_THROW(WKTParser().createFromWKT(wkt)); + } + + // Missing SOURCECRS + { + auto wkt = "COORDINATEOPERATION[\"transformationName\",\n" + " TARGETCRS[" + + dst_wkt + "],\n" + " METHOD[\"operationMethodName\"],\n" + " PARAMETERFILE[\"paramName\",\"foo.bin\"]]"; + + EXPECT_THROW(WKTParser().createFromWKT(wkt), ParsingException); + } + + // Invalid content in SOURCECRS + { + auto wkt = "COORDINATEOPERATION[\"transformationName\",\n" + " SOURCECRS[FOO],\n" + " TARGETCRS[" + + dst_wkt + "],\n" + " METHOD[\"operationMethodName\"],\n" + " PARAMETERFILE[\"paramName\",\"foo.bin\"]]"; + + EXPECT_THROW(WKTParser().createFromWKT(wkt), ParsingException); + } + + // Missing TARGETCRS + { + auto wkt = "COORDINATEOPERATION[\"transformationName\",\n" + " SOURCECRS[" + + src_wkt + "],\n" + " METHOD[\"operationMethodName\"],\n" + " PARAMETERFILE[\"paramName\",\"foo.bin\"]]"; + + EXPECT_THROW(WKTParser().createFromWKT(wkt), ParsingException); + } + + // Invalid content in TARGETCRS + { + auto wkt = "COORDINATEOPERATION[\"transformationName\",\n" + " SOURCECRS[" + + src_wkt + "],\n" + " TARGETCRS[FOO],\n" + " METHOD[\"operationMethodName\"],\n" + " PARAMETERFILE[\"paramName\",\"foo.bin\"]]"; + + EXPECT_THROW(WKTParser().createFromWKT(wkt), ParsingException); + } + + // Missing METHOD + { + auto wkt = "COORDINATEOPERATION[\"transformationName\",\n" + " SOURCECRS[" + + src_wkt + "],\n" + " TARGETCRS[" + + dst_wkt + "]]"; + + EXPECT_THROW(WKTParser().createFromWKT(wkt), ParsingException); + } + + // Invalid METHOD + { + auto wkt = "COORDINATEOPERATION[\"transformationName\",\n" + " SOURCECRS[" + + src_wkt + "],\n" + " TARGETCRS[" + + dst_wkt + "],\n" + " METHOD[],\n" + " PARAMETERFILE[\"paramName\",\"foo.bin\"]]"; + + EXPECT_THROW(WKTParser().createFromWKT(wkt), ParsingException); + } +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_CONCATENATEDOPERATION) { + + // No STEP + EXPECT_THROW(WKTParser().createFromWKT("CONCATENATEDOPERATION[\"name\"]"), + ParsingException); + + auto transf_1 = Transformation::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "transf_1"), + nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4326), + nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4807), nullptr, + PropertyMap().set(IdentifiedObject::NAME_KEY, "operationMethodName"), + std::vector<OperationParameterNNPtr>{OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName"))}, + std::vector<ParameterValueNNPtr>{ + ParameterValue::createFilename("foo.bin")}, + std::vector<PositionalAccuracyNNPtr>()); + + // One single STEP + { + auto wkt = + "CONCATENATEDOPERATION[\"name\",\n" + " SOURCECRS[" + + transf_1->sourceCRS()->exportToWKT(WKTFormatter::create().get()) + + "],\n" + " TARGETCRS[" + + transf_1->targetCRS()->exportToWKT(WKTFormatter::create().get()) + + "],\n" + " STEP[" + + transf_1->exportToWKT(WKTFormatter::create().get()) + + "],\n" + " ID[\"codeSpace\",\"code\"],\n" + " REMARK[\"my remarks\"]]"; + + EXPECT_THROW(WKTParser().createFromWKT(wkt), ParsingException); + } + + // empty STEP + { + auto wkt = + "CONCATENATEDOPERATION[\"name\",\n" + " SOURCECRS[" + + transf_1->sourceCRS()->exportToWKT(WKTFormatter::create().get()) + + "],\n" + " TARGETCRS[" + + transf_1->targetCRS()->exportToWKT(WKTFormatter::create().get()) + + "],\n" + " STEP[],\n" + " STEP[],\n" + " ID[\"codeSpace\",\"code\"],\n" + " REMARK[\"my remarks\"]]"; + EXPECT_THROW(WKTParser().createFromWKT(wkt), ParsingException); + } + + // Invalid content in STEP + { + auto wkt = + "CONCATENATEDOPERATION[\"name\",\n" + " SOURCECRS[" + + transf_1->sourceCRS()->exportToWKT(WKTFormatter::create().get()) + + "],\n" + " TARGETCRS[" + + transf_1->targetCRS()->exportToWKT(WKTFormatter::create().get()) + + "],\n" + " STEP[" + + transf_1->sourceCRS()->exportToWKT(WKTFormatter::create().get()) + + "],\n" + " STEP[" + + transf_1->sourceCRS()->exportToWKT(WKTFormatter::create().get()) + + "],\n" + " ID[\"codeSpace\",\"code\"],\n" + " REMARK[\"my remarks\"]]"; + + EXPECT_THROW(WKTParser().createFromWKT(wkt), ParsingException); + } +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_BOUNDCRS) { + + auto projcrs = ProjectedCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "my PROJCRS"), + GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "my GEOGCRS"), + GeodeticReferenceFrame::EPSG_6326, + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)), + Conversion::createUTM(PropertyMap(), 31, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + + EXPECT_NO_THROW(WKTParser().createFromWKT( + "BOUNDCRS[SOURCECRS[" + + projcrs->exportToWKT(WKTFormatter::create().get()) + "],\n" + + "TARGETCRS[" + + GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) + + "],\n" + " ABRIDGEDTRANSFORMATION[\"foo\",\n" + " METHOD[\"bar\"]]]")); + + // Missing SOURCECRS + EXPECT_THROW( + WKTParser().createFromWKT("BOUNDCRS[TARGETCRS[" + + GeographicCRS::EPSG_4326->exportToWKT( + WKTFormatter::create().get()) + + "],\n" + " ABRIDGEDTRANSFORMATION[\"foo\",\n" + " METHOD[\"bar\"]]]"), + ParsingException); + + // Invalid SOURCECRS + EXPECT_THROW( + WKTParser().createFromWKT("BOUNDCRS[SOURCECRS[foo], TARGETCRS[" + + GeographicCRS::EPSG_4326->exportToWKT( + WKTFormatter::create().get()) + + "],\n" + " ABRIDGEDTRANSFORMATION[\"foo\",\n" + " METHOD[\"bar\"]]]"), + ParsingException); + + // Missing TARGETCRS + EXPECT_THROW(WKTParser().createFromWKT( + "BOUNDCRS[SOURCECRS[" + + projcrs->exportToWKT(WKTFormatter::create().get()) + + "],\n" + " ABRIDGEDTRANSFORMATION[\"foo\",\n" + " METHOD[\"bar\"]]]"), + ParsingException); + + // Invalid TARGETCRS + EXPECT_THROW(WKTParser().createFromWKT( + "BOUNDCRS[SOURCECRS[" + + projcrs->exportToWKT(WKTFormatter::create().get()) + + "],TARGETCRS[\"foo\"],\n" + " ABRIDGEDTRANSFORMATION[\"foo\",\n" + " METHOD[\"bar\"]]]"), + ParsingException); + + // Missing ABRIDGEDTRANSFORMATION + EXPECT_THROW(WKTParser().createFromWKT( + "BOUNDCRS[SOURCECRS[" + + projcrs->exportToWKT(WKTFormatter::create().get()) + + "],\n" + "TARGETCRS[" + + GeographicCRS::EPSG_4326->exportToWKT( + WKTFormatter::create().get()) + + "]]"), + ParsingException); + + // Missing METHOD + EXPECT_THROW(WKTParser().createFromWKT( + "BOUNDCRS[SOURCECRS[" + + projcrs->exportToWKT(WKTFormatter::create().get()) + + "],\n" + "TARGETCRS[" + + GeographicCRS::EPSG_4326->exportToWKT( + WKTFormatter::create().get()) + + "]," + "ABRIDGEDTRANSFORMATION[\"foo\"]]"), + ParsingException); + + // Invalid METHOD + EXPECT_THROW(WKTParser().createFromWKT( + "BOUNDCRS[SOURCECRS[" + + projcrs->exportToWKT(WKTFormatter::create().get()) + + "],\n" + "TARGETCRS[" + + GeographicCRS::EPSG_4326->exportToWKT( + WKTFormatter::create().get()) + + "]," + "ABRIDGEDTRANSFORMATION[\"foo\",METHOD[]]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_TOWGS84) { + EXPECT_THROW(WKTParser().createFromWKT( + "GEOGCS[\"WGS 84\"," + " DATUM[\"WGS_1984\"," + " SPHEROID[\"WGS 84\",6378137,298.257223563]," + " TOWGS84[0]]," + " PRIMEM[\"Greenwich\",0]," + " UNIT[\"degree\",0.0174532925199433]]"), + ParsingException); + + EXPECT_THROW(WKTParser().createFromWKT( + "GEOGCS[\"WGS 84\"," + " DATUM[\"WGS_1984\"," + " SPHEROID[\"WGS 84\",6378137,298.257223563]," + " TOWGS84[0,0,0,0,0,0,\"foo\"]]," + " PRIMEM[\"Greenwich\",0]," + " UNIT[\"degree\",0.0174532925199433]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_DerivedGeographicCRS) { + + EXPECT_NO_THROW(WKTParser().createFromWKT( + "GEODCRS[\"WMO Atlantic Pole\",\n" + " BASEGEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]]],\n" + " DERIVINGCONVERSION[\"foo\",\n" + " METHOD[\"bar\"]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north],\n" + " AXIS[\"longitude\",east]]")); + + // Missing DERIVINGCONVERSION + EXPECT_THROW( + WKTParser().createFromWKT( + "GEODCRS[\"WMO Atlantic Pole\",\n" + " BASEGEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north],\n" + " AXIS[\"longitude\",east]]"), + ParsingException); + + // Missing CS + EXPECT_THROW( + WKTParser().createFromWKT( + "GEODCRS[\"WMO Atlantic Pole\",\n" + " BASEGEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]]],\n" + " DERIVINGCONVERSION[\"foo\",\n" + " METHOD[\"bar\"]]]"), + ParsingException); + + // CS should be ellipsoidal given root node is GEOGCRS + EXPECT_THROW( + WKTParser().createFromWKT( + "GEOGCRS[\"WMO Atlantic Pole\",\n" + " BASEGEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]]],\n" + " DERIVINGCONVERSION[\"foo\",\n" + " METHOD[\"bar\"]],\n" + " CS[Cartesian,3],\n" + " AXIS[\"(X)\",geocentricX],\n" + " AXIS[\"(Y)\",geocentricY],\n" + " AXIS[\"(Z)\",geocentricZ],\n" + " UNIT[\"metre\",1]]"), + ParsingException); + + // CS should have 3 axis + EXPECT_THROW( + WKTParser().createFromWKT( + "GEODCRS[\"WMO Atlantic Pole\",\n" + " BASEGEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]]],\n" + " DERIVINGCONVERSION[\"foo\",\n" + " METHOD[\"bar\"]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(X)\",geocentricX],\n" + " AXIS[\"(Y)\",geocentricY],\n" + " UNIT[\"metre\",1]]"), + ParsingException); + + // Invalid CS type + EXPECT_THROW( + WKTParser().createFromWKT( + "GEODCRS[\"WMO Atlantic Pole\",\n" + " BASEGEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]]],\n" + " DERIVINGCONVERSION[\"foo\",\n" + " METHOD[\"bar\"]],\n" + " CS[vertical,1],\n" + " AXIS[\"gravity-related height (H)\",up],\n" + " UNIT[\"metre\",1]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_TemporalCRS) { + + EXPECT_NO_THROW( + WKTParser().createFromWKT("TIMECRS[\"Temporal CRS\",\n" + " TDATUM[\"Gregorian calendar\",\n" + " TIMEORIGIN[0000-01-01]],\n" + " CS[temporal,1],\n" + " AXIS[\"time (T)\",future]]")); + + // Missing TDATUM + EXPECT_THROW( + WKTParser().createFromWKT("TIMECRS[\"Temporal CRS\",\n" + " CS[temporal,1],\n" + " AXIS[\"time (T)\",future]]"), + ParsingException); + + // Missing CS + EXPECT_THROW( + WKTParser().createFromWKT("TIMECRS[\"Temporal CRS\",\n" + " TDATUM[\"Gregorian calendar\",\n" + " TIMEORIGIN[0000-01-01]]]"), + ParsingException); + + // CS should be temporal + EXPECT_THROW( + WKTParser().createFromWKT("TIMECRS[\"Temporal CRS\",\n" + " TDATUM[\"Gregorian calendar\",\n" + " TIMEORIGIN[0000-01-01]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(X)\",geocentricX],\n" + " AXIS[\"(Y)\",geocentricY],\n" + " UNIT[\"metre\",1]]"), + ParsingException); + + // CS should have 1 axis + EXPECT_THROW( + WKTParser().createFromWKT("TIMECRS[\"Temporal CRS\",\n" + " TDATUM[\"Gregorian calendar\",\n" + " TIMEORIGIN[0000-01-01]],\n" + " CS[temporal,2],\n" + " AXIS[\"time (T)\",future],\n" + " AXIS[\"time2 (T)\",future]]"), + ParsingException); + + // CS should have 1 axis + EXPECT_THROW( + WKTParser().createFromWKT("TIMECRS[\"Temporal CRS\",\n" + " TDATUM[\"Gregorian calendar\",\n" + " TIMEORIGIN[0000-01-01]],\n" + " CS[TemporalDateTime,2],\n" + " AXIS[\"time (T)\",future],\n" + " AXIS[\"time2 (T)\",future]]"), + ParsingException); + + // CS should have 1 axis + EXPECT_THROW( + WKTParser().createFromWKT("TIMECRS[\"Temporal CRS\",\n" + " TDATUM[\"Gregorian calendar\",\n" + " TIMEORIGIN[0000-01-01]],\n" + " CS[TemporalCount,2],\n" + " AXIS[\"time (T)\",future],\n" + " AXIS[\"time2 (T)\",future]]"), + ParsingException); + + // CS should have 1 axis + EXPECT_THROW( + WKTParser().createFromWKT("TIMECRS[\"Temporal CRS\",\n" + " TDATUM[\"Gregorian calendar\",\n" + " TIMEORIGIN[0000-01-01]],\n" + " CS[TemporalMeasure,2],\n" + " AXIS[\"time (T)\",future],\n" + " AXIS[\"time2 (T)\",future]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_EngineeingCRS) { + + EXPECT_NO_THROW( + WKTParser().createFromWKT("ENGCRS[\"name\",\n" + " EDATUM[\"name\"],\n" + " CS[temporal,1],\n" + " AXIS[\"time (T)\",future]]")); + + // Missing EDATUM + EXPECT_THROW( + WKTParser().createFromWKT("ENGCRS[\"name\",\n" + " CS[temporal,1],\n" + " AXIS[\"time (T)\",future]]"), + ParsingException); + + // Missing CS + EXPECT_THROW(WKTParser().createFromWKT("ENGCRS[\"name\",\n" + " EDATUM[\"name\"]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_LOCAL_CS) { + + EXPECT_THROW( + WKTParser().createFromWKT("LOCAL_CS[\"name\",\n" + " LOCAL_DATUM[\"name\",1234],\n" + " AXIS[\"Geodetic latitude\",NORTH],\n" + " AXIS[\"Geodetic longitude\",EAST],\n" + " AXIS[\"Ellipsoidal height\",UP]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_ParametricCRS) { + + EXPECT_NO_THROW( + WKTParser().createFromWKT("PARAMETRICCRS[\"name\",\n" + " PDATUM[\"name\"],\n" + " CS[parametric,1],\n" + " AXIS[\"time (T)\",future]]")); + + // Missing PDATUM + EXPECT_THROW( + WKTParser().createFromWKT("PARAMETRICCRS[\"name\",\n" + " CS[parametric,1],\n" + " AXIS[\"time (T)\",future]]"), + ParsingException); + + // Missing CS + EXPECT_THROW(WKTParser().createFromWKT("PARAMETRICCRS[\"name\",\n" + " PDATUM[\"name\"]]"), + ParsingException); + + // Invalid number of axis for CS + EXPECT_THROW( + WKTParser().createFromWKT("PARAMETRICCRS[\"name\",\n" + " PDATUM[\"name\"],\n" + " CS[parametric,2],\n" + " AXIS[\"time (T)\",future],\n" + " AXIS[\"time (T)\",future]]"), + ParsingException); + + // Invalid CS type + EXPECT_THROW( + WKTParser().createFromWKT("PARAMETRICCRS[\"name\",\n" + " PDATUM[\"name\"],\n" + " CS[temporal,1],\n" + " AXIS[\"time (T)\",future]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_DERIVEDPROJCRS) { + EXPECT_NO_THROW(WKTParser().createFromWKT( + "DERIVEDPROJCRS[\"derived projectedCRS\",\n" + " BASEPROJCRS[\"BASEPROJCRS\",\n" + " BASEGEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]]],\n" + " CONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east],\n" + " AXIS[\"(N)\",north]]")); + + EXPECT_THROW( + WKTParser().createFromWKT("DERIVEDPROJCRS[\"derived projectedCRS\",\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east],\n" + " AXIS[\"(N)\",north]]"), + ParsingException); + + // Missing DERIVINGCONVERSION + EXPECT_THROW( + WKTParser().createFromWKT( + "DERIVEDPROJCRS[\"derived projectedCRS\",\n" + " BASEPROJCRS[\"BASEPROJCRS\",\n" + " BASEGEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]]],\n" + " CONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east],\n" + " AXIS[\"(N)\",north]]"), + ParsingException); + + // Missing CS + EXPECT_THROW( + WKTParser().createFromWKT( + "DERIVEDPROJCRS[\"derived projectedCRS\",\n" + " BASEPROJCRS[\"BASEPROJCRS\",\n" + " BASEGEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]]],\n" + " CONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_DerivedVerticalCRS) { + EXPECT_NO_THROW(WKTParser().createFromWKT( + "VERTCRS[\"Derived vertCRS\",\n" + " BASEVERTCRS[\"ODN height\",\n" + " VDATUM[\"Ordnance Datum Newlyn\"]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[vertical,1],\n" + " AXIS[\"gravity-related height (H)\",up]]")); + + // Missing DERIVINGCONVERSION + EXPECT_THROW(WKTParser().createFromWKT( + "VERTCRS[\"Derived vertCRS\",\n" + " BASEVERTCRS[\"ODN height\",\n" + " VDATUM[\"Ordnance Datum Newlyn\"]],\n" + " CS[vertical,1],\n" + " AXIS[\"gravity-related height (H)\",up]]"), + ParsingException); + + // Missing CS + EXPECT_THROW(WKTParser().createFromWKT( + "VERTCRS[\"Derived vertCRS\",\n" + " BASEVERTCRS[\"ODN height\",\n" + " VDATUM[\"Ordnance Datum Newlyn\"]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]]]"), + ParsingException); + + // Wrong CS type + EXPECT_THROW(WKTParser().createFromWKT( + "VERTCRS[\"Derived vertCRS\",\n" + " BASEVERTCRS[\"ODN height\",\n" + " VDATUM[\"Ordnance Datum Newlyn\"]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[parametric,1],\n" + " AXIS[\"gravity-related height (H)\",up]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_DerivedEngineeringCRS) { + EXPECT_NO_THROW( + WKTParser().createFromWKT("ENGCRS[\"Derived EngineeringCRS\",\n" + " BASEENGCRS[\"Engineering CRS\",\n" + " EDATUM[\"Engineering datum\"]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east],\n" + " AXIS[\"(N)\",north],\n" + " LENGTHUNIT[\"metre\",1]]")); + + // Missing DERIVINGCONVERSION + EXPECT_THROW( + WKTParser().createFromWKT("ENGCRS[\"Derived EngineeringCRS\",\n" + " BASEENGCRS[\"Engineering CRS\",\n" + " EDATUM[\"Engineering datum\"]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east],\n" + " AXIS[\"(N)\",north],\n" + " LENGTHUNIT[\"metre\",1]]"), + ParsingException); + + // Missing CS + EXPECT_THROW( + WKTParser().createFromWKT("ENGCRS[\"Derived EngineeringCRS\",\n" + " BASEENGCRS[\"Engineering CRS\",\n" + " EDATUM[\"Engineering datum\"]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_DerivedParametricCRS) { + EXPECT_NO_THROW(WKTParser().createFromWKT( + "PARAMETRICCRS[\"Derived ParametricCRS\",\n" + " BASEPARAMCRS[\"Parametric CRS\",\n" + " PDATUM[\"Parametric datum\"]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[parametric,1],\n" + " AXIS[\"pressure (hPa)\",up,\n" + " PARAMETRICUNIT[\"HectoPascal\",100]]]")); + + // Missing DERIVINGCONVERSION + EXPECT_THROW(WKTParser().createFromWKT( + "PARAMETRICCRS[\"Derived ParametricCRS\",\n" + " BASEPARAMCRS[\"Parametric CRS\",\n" + " PDATUM[\"Parametric datum\"]],\n" + " CS[parametric,1],\n" + " AXIS[\"pressure (hPa)\",up,\n" + " PARAMETRICUNIT[\"HectoPascal\",100]]]"), + ParsingException); + + // Missing CS + EXPECT_THROW( + WKTParser().createFromWKT("PARAMETRICCRS[\"Derived ParametricCRS\",\n" + " BASEPARAMCRS[\"Parametric CRS\",\n" + " PDATUM[\"Parametric datum\"]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]]]"), + ParsingException); + + // Wrong CS type + EXPECT_THROW( + WKTParser().createFromWKT("PARAMETRICCRS[\"Derived ParametricCRS\",\n" + " BASEPARAMCRS[\"Parametric CRS\",\n" + " PDATUM[\"Parametric datum\"]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[TemporalDateTime,1],\n" + " AXIS[\"time (T)\",future]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(wkt_parse, invalid_DerivedTemporalCRS) { + EXPECT_NO_THROW(WKTParser().createFromWKT( + "TIMECRS[\"Derived TemporalCRS\",\n" + " BASETIMECRS[\"Temporal CRS\",\n" + " TDATUM[\"Gregorian calendar\",\n" + " CALENDAR[\"proleptic Gregorian\"],\n" + " TIMEORIGIN[0000-01-01]]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[TemporalDateTime,1],\n" + " AXIS[\"time (T)\",future]]")); + + // Missing DERIVINGCONVERSION + EXPECT_THROW(WKTParser().createFromWKT( + "TIMECRS[\"Derived TemporalCRS\",\n" + " BASETIMECRS[\"Temporal CRS\",\n" + " TDATUM[\"Gregorian calendar\",\n" + " CALENDAR[\"proleptic Gregorian\"],\n" + " TIMEORIGIN[0000-01-01]]],\n" + " CS[TemporalDateTime,1],\n" + " AXIS[\"time (T)\",future]]"), + ParsingException); + + // Missing CS + EXPECT_THROW(WKTParser().createFromWKT( + "TIMECRS[\"Derived TemporalCRS\",\n" + " BASETIMECRS[\"Temporal CRS\",\n" + " TDATUM[\"Gregorian calendar\",\n" + " CALENDAR[\"proleptic Gregorian\"],\n" + " TIMEORIGIN[0000-01-01]]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]]]"), + ParsingException); + + // Wrong CS type + EXPECT_THROW(WKTParser().createFromWKT( + "TIMECRS[\"Derived TemporalCRS\",\n" + " BASETIMECRS[\"Temporal CRS\",\n" + " TDATUM[\"Gregorian calendar\",\n" + " CALENDAR[\"proleptic Gregorian\"],\n" + " TIMEORIGIN[0000-01-01]]],\n" + " DERIVINGCONVERSION[\"unnamed\",\n" + " METHOD[\"PROJ unimplemented\"]],\n" + " CS[parametric,1],\n" + " AXIS[\"pressure (hPa)\",up,\n" + " PARAMETRICUNIT[\"HectoPascal\",100]]]"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(io, projstringformatter) { + + { + auto fmt = PROJStringFormatter::create(); + fmt->addStep("my_proj"); + EXPECT_EQ(fmt->toString(), "+proj=my_proj"); + } + + { + auto fmt = PROJStringFormatter::create(); + fmt->addStep("my_proj"); + fmt->setCurrentStepInverted(true); + EXPECT_EQ(fmt->toString(), "+proj=pipeline +step +inv +proj=my_proj"); + } + + { + auto fmt = PROJStringFormatter::create(); + fmt->addStep("my_proj1"); + fmt->addStep("my_proj2"); + EXPECT_EQ(fmt->toString(), + "+proj=pipeline +step +proj=my_proj1 +step +proj=my_proj2"); + } + + { + auto fmt = PROJStringFormatter::create(); + fmt->addStep("my_proj1"); + fmt->setCurrentStepInverted(true); + fmt->addStep("my_proj2"); + EXPECT_EQ( + fmt->toString(), + "+proj=pipeline +step +inv +proj=my_proj1 +step +proj=my_proj2"); + } + + { + auto fmt = PROJStringFormatter::create(); + fmt->startInversion(); + fmt->addStep("my_proj1"); + fmt->setCurrentStepInverted(true); + fmt->addStep("my_proj2"); + fmt->stopInversion(); + EXPECT_EQ( + fmt->toString(), + "+proj=pipeline +step +inv +proj=my_proj2 +step +proj=my_proj1"); + } + + { + auto fmt = PROJStringFormatter::create(); + fmt->startInversion(); + fmt->addStep("my_proj1"); + fmt->setCurrentStepInverted(true); + fmt->startInversion(); + fmt->addStep("my_proj2"); + fmt->stopInversion(); + fmt->stopInversion(); + EXPECT_EQ(fmt->toString(), + "+proj=pipeline +step +proj=my_proj2 +step +proj=my_proj1"); + } +} + +// --------------------------------------------------------------------------- + +TEST(io, projstringformatter_helmert_3_param_noop) { + auto fmt = PROJStringFormatter::create(); + fmt->addStep("helmert"); + fmt->addParam("x", 0); + fmt->addParam("y", 0); + fmt->addParam("z", 0); + EXPECT_EQ(fmt->toString(), ""); +} + +// --------------------------------------------------------------------------- + +TEST(io, projstringformatter_helmert_7_param_noop) { + auto fmt = PROJStringFormatter::create(); + fmt->addStep("helmert"); + fmt->addParam("x", 0); + fmt->addParam("y", 0); + fmt->addParam("z", 0); + fmt->addParam("rx", 0); + fmt->addParam("ry", 0); + fmt->addParam("rz", 0); + fmt->addParam("s", 0); + fmt->addParam("convention", "position_vector"); + EXPECT_EQ(fmt->toString(), ""); +} + +// --------------------------------------------------------------------------- + +TEST(io, projstringformatter_merge_consecutive_helmert_3_param) { + auto fmt = PROJStringFormatter::create(); + fmt->addStep("helmert"); + fmt->addParam("x", 10); + fmt->addParam("y", 20); + fmt->addParam("z", 30); + fmt->addStep("helmert"); + fmt->addParam("x", -1); + fmt->addParam("y", -2); + fmt->addParam("z", -3); + EXPECT_EQ(fmt->toString(), "+proj=helmert +x=9 +y=18 +z=27"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projstringformatter_merge_consecutive_helmert_3_param_noop) { + auto fmt = PROJStringFormatter::create(); + fmt->addStep("helmert"); + fmt->addParam("x", 10); + fmt->addParam("y", 20); + fmt->addParam("z", 30); + fmt->addStep("helmert"); + fmt->addParam("x", -10); + fmt->addParam("y", -20); + fmt->addParam("z", -30); + EXPECT_EQ(fmt->toString(), ""); +} + +// --------------------------------------------------------------------------- + +TEST(io, projstringformatter_cart_grs80_wgs84) { + auto fmt = PROJStringFormatter::create(); + fmt->addStep("cart"); + fmt->addParam("ellps", "WGS84"); + fmt->addStep("cart"); + fmt->setCurrentStepInverted(true); + fmt->addParam("ellps", "GRS80"); + EXPECT_EQ(fmt->toString(), ""); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat) { + + auto expected = "GEODCRS[\"unknown\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]],\n" + " ID[\"EPSG\",6326]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8901]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]]]"; + { + auto obj = PROJStringParser().createFromPROJString("+proj=longlat"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + crs->exportToWKT(f.get()); + EXPECT_EQ(f->toString(), expected); + } + + { + auto obj = PROJStringParser().createFromPROJString( + "+proj=longlat +datum=WGS84"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + crs->exportToWKT(f.get()); + EXPECT_EQ(f->toString(), expected); + } +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_datum_NAD83) { + auto obj = + PROJStringParser().createFromPROJString("+proj=longlat +datum=NAD83"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + crs->exportToWKT(f.get()); + EXPECT_EQ(f->toString(), + "GEODCRS[\"unknown\",\n" + " DATUM[\"North American Datum 1983\",\n" + " ELLIPSOID[\"GRS 1980\",6378137,298.257222101,\n" + " LENGTHUNIT[\"metre\",1]],\n" + " ID[\"EPSG\",6269]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8901]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]]]"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_datum_NAD27) { + auto obj = + PROJStringParser().createFromPROJString("+proj=longlat +datum=NAD27"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + crs->exportToWKT(f.get()); + EXPECT_EQ(f->toString(), + "GEODCRS[\"unknown\",\n" + " DATUM[\"North American Datum 1927\",\n" + " ELLIPSOID[\"Clarke 1866\",6378206.4,294.978698213898,\n" + " LENGTHUNIT[\"metre\",1]],\n" + " ID[\"EPSG\",6267]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8901]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]]]"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_datum_other) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=longlat +datum=carthage"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + crs->exportToWKT(f.get()); + EXPECT_EQ(f->toString(), + "GEODCRS[\"unknown\",\n" + " DATUM[\"Carthage\",\n" + " ELLIPSOID[\"Clarke 1880 (IGN)\",6378249.2,293.4660213,\n" + " LENGTHUNIT[\"metre\",1]],\n" + " ID[\"EPSG\",6223]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8901]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433,\n" + " ID[\"EPSG\",9122]]]]"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_ellps_WGS84) { + auto obj = + PROJStringParser().createFromPROJString("+proj=longlat +ellps=WGS84"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + crs->exportToWKT(f.get()); + auto expected = "GEODCRS[\"unknown\",\n" + " DATUM[\"Unknown based on WGS84 ellipsoid\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]]"; + EXPECT_EQ(f->toString(), expected); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_ellps_GRS80) { + auto obj = + PROJStringParser().createFromPROJString("+proj=longlat +ellps=GRS80"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + crs->exportToWKT(f.get()); + auto expected = "GEODCRS[\"unknown\",\n" + " DATUM[\"Unknown based on GRS80 ellipsoid\",\n" + " ELLIPSOID[\"GRS 1980\",6378137,298.257222101,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]]"; + EXPECT_EQ(f->toString(), expected); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_a_b) { + auto obj = + PROJStringParser().createFromPROJString("+proj=longlat +a=2 +b=1.5"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + crs->exportToWKT(f.get()); + auto expected = "GEODCRS[\"unknown\",\n" + " DATUM[\"unknown\",\n" + " ELLIPSOID[\"unknown\",2,4,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Reference meridian\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]]"; + EXPECT_EQ(f->toString(), expected); + EXPECT_EQ(crs->ellipsoid()->celestialBody(), "Non-Earth body"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_a_rf_WGS84) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=longlat +a=6378137 +rf=298.257223563"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + crs->exportToWKT(f.get()); + auto expected = "GEODCRS[\"unknown\",\n" + " DATUM[\"unknown\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]]"; + EXPECT_EQ(f->toString(), expected); + EXPECT_EQ(crs->ellipsoid()->celestialBody(), Ellipsoid::EARTH); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_a_rf) { + auto obj = + PROJStringParser().createFromPROJString("+proj=longlat +a=2 +rf=4"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + crs->exportToWKT(f.get()); + auto expected = "GEODCRS[\"unknown\",\n" + " DATUM[\"unknown\",\n" + " ELLIPSOID[\"unknown\",2,4,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Reference meridian\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]]"; + EXPECT_EQ(f->toString(), expected); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_R) { + auto obj = PROJStringParser().createFromPROJString("+proj=longlat +R=2"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + crs->exportToWKT(f.get()); + auto expected = "GEODCRS[\"unknown\",\n" + " DATUM[\"unknown\",\n" + " ELLIPSOID[\"unknown\",2,0,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Reference meridian\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]]"; + EXPECT_EQ(f->toString(), expected); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_pm_paris) { + auto obj = + PROJStringParser().createFromPROJString("+proj=longlat +pm=paris"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + crs->exportToWKT(f.get()); + auto expected = "GEODCRS[\"unknown\",\n" + " DATUM[\"Unknown based on WGS84 ellipsoid\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Paris\",2.5969213,\n" + " ANGLEUNIT[\"grad\",0.015707963267949]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]]"; + + EXPECT_EQ(f->toString(), expected); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_pm_ferro) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=longlat +ellps=bessel +pm=ferro"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + crs->exportToWKT(f.get()); + auto expected = + "GEODCRS[\"unknown\",\n" + " DATUM[\"Unknown based on Bessel 1841 ellipsoid\",\n" + " ELLIPSOID[\"Bessel 1841\",6377397.155,299.1528128,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Ferro\",-17.6666666666667,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]]"; + + EXPECT_EQ(f->toString(), expected); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_pm_numeric) { + auto obj = PROJStringParser().createFromPROJString("+proj=longlat +pm=2.5"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + crs->exportToWKT(f.get()); + auto expected = "GEODCRS[\"unknown\",\n" + " DATUM[\"Unknown based on WGS84 ellipsoid\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"unknown\",2.5,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]]"; + + EXPECT_EQ(f->toString(), expected); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_complex) { + std::string input = + "+proj=pipeline +step +proj=longlat +ellps=clrk80ign " + "+pm=paris +step +proj=unitconvert +xy_in=rad +xy_out=grad +step " + "+proj=axisswap +order=2,1"; + auto obj = PROJStringParser().createFromPROJString(input); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + input); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_towgs84_3_terms) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=longlat +ellps=GRS80 +towgs84=1.2,2,3"); + auto crs = nn_dynamic_pointer_cast<BoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + crs->exportToWKT(f.get()); + + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("METHOD[\"Geocentric translations") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("PARAMETER[\"X-axis translation\",1.2") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("PARAMETER[\"Y-axis translation\",2") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("PARAMETER[\"Z-axis translation\",3") != + std::string::npos) + << wkt; + + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=longlat +ellps=GRS80 +towgs84=1.2,2,3,0,0,0,0"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_towgs84_7_terms) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=longlat +ellps=GRS80 +towgs84=1.2,2,3,4,5,6,7"); + auto crs = nn_dynamic_pointer_cast<BoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + crs->exportToWKT(f.get()); + + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("METHOD[\"Position Vector transformation") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("PARAMETER[\"X-axis translation\",1.2") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("PARAMETER[\"Y-axis translation\",2") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("PARAMETER[\"Z-axis translation\",3") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("PARAMETER[\"Scale difference\",1.000007") != + std::string::npos) + << wkt; + + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=longlat +ellps=GRS80 +towgs84=1.2,2,3,4,5,6,7"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_nadgrids) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=longlat +ellps=GRS80 +nadgrids=foo.gsb"); + auto crs = nn_dynamic_pointer_cast<BoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + crs->exportToWKT(f.get()); + + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("METHOD[\"NTv2\"") != std::string::npos) << wkt; + EXPECT_TRUE(wkt.find("PARAMETERFILE[\"Latitude and longitude difference " + "file\",\"foo.gsb\"]") != std::string::npos) + << wkt; + + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=longlat +ellps=GRS80 +nadgrids=foo.gsb"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_geoidgrids) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=longlat +ellps=GRS80 +geoidgrids=foo.gtx"); + auto crs = nn_dynamic_pointer_cast<CompoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + crs->exportToWKT(f.get()); + + auto wkt = f->toString(); + EXPECT_TRUE( + wkt.find( + "ABRIDGEDTRANSFORMATION[\"unknown to WGS84 ellipsoidal height\"") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("PARAMETERFILE[\"Geoid (height correction) model " + "file\",\"foo.gtx\"]") != std::string::npos) + << wkt; + + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=longlat +ellps=GRS80 +geoidgrids=foo.gtx +vunits=m"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_geoidgrids_vunits) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=longlat +ellps=GRS80 +geoidgrids=foo.gtx +vunits=ft"); + auto crs = nn_dynamic_pointer_cast<CompoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("AXIS[\"gravity-related height " + "(H)\",up,LENGTHUNIT[\"foot\",0.3048]") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_vunits) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=longlat +ellps=GRS80 +vunits=ft"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("AXIS[\"ellipsoidal height " + "(h)\",up,ORDER[3],LENGTHUNIT[\"foot\",0.3048]") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_vunits) { + auto obj = PROJStringParser().createFromPROJString("+vunits=ft"); + auto crs = nn_dynamic_pointer_cast<VerticalCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+vunits=ft"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_vto_meter) { + auto obj = PROJStringParser().createFromPROJString("+vto_meter=2"); + auto crs = nn_dynamic_pointer_cast<VerticalCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+vto_meter=2"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_axis_enu) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=longlat +ellps=GRS80 +axis=enu"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("AXIS[\"longitude\",east,ORDER[1]") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("AXIS[\"latitude\",north,ORDER[2]") != + std::string::npos) + << wkt; + + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=longlat +ellps=GRS80 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_axis_neu) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=longlat +ellps=GRS80 +axis=neu"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("AXIS[\"latitude\",north,ORDER[1]") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("AXIS[\"longitude\",east,ORDER[2]") != + std::string::npos) + << wkt; + + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=longlat +ellps=GRS80 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap " + "+order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_axis_swu) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=longlat +ellps=GRS80 +axis=swu"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("AXIS[\"latitude\",south,ORDER[1]") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("AXIS[\"longitude\",west,ORDER[2]") != + std::string::npos) + << wkt; + + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=longlat +ellps=GRS80 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap " + "+order=-2,-1"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_unitconvert_deg) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=pipeline +step +proj=longlat +ellps=GRS80 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=longlat +ellps=GRS80 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_unitconvert_grad) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=pipeline +step +proj=longlat +ellps=GRS80 +step " + "+proj=unitconvert +xy_in=rad +xy_out=grad"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=longlat +ellps=GRS80 +step " + "+proj=unitconvert +xy_in=rad +xy_out=grad"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_unitconvert_rad) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=pipeline +step +proj=longlat +ellps=GRS80 +step " + "+proj=unitconvert +xy_in=rad +xy_out=rad"); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=longlat +ellps=GRS80 +step " + "+proj=unitconvert +xy_in=rad +xy_out=rad"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_axisswap) { + for (auto order1 : {"1", "-1", "2", "-2"}) { + for (auto order2 : {"1", "-1", "2", "-2"}) { + if (std::abs(atoi(order1) * atoi(order2)) == 2 && + !(atoi(order1) == 1 && atoi(order2) == 2)) { + auto str = "+proj=pipeline +step +proj=longlat +ellps=GRS80 " + "+step +proj=axisswap +order=" + + std::string(order1) + "," + order2; + auto obj = PROJStringParser().createFromPROJString(str); + auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=longlat +ellps=GRS80 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step " + "+proj=axisswap +order=" + + std::string(order1) + "," + order2); + } + } + } +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_tmerc) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=tmerc +x_0=1 +lat_0=1 +k_0=2"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + crs->exportToWKT(f.get()); + auto expected = "PROJCRS[\"unknown\",\n" + " BASEGEODCRS[\"unknown\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " CONVERSION[\"unknown\",\n" + " METHOD[\"Transverse Mercator\",\n" + " ID[\"EPSG\",9807]],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",2,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",1,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"(N)\",north,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1]]]"; + + EXPECT_EQ(f->toString(), expected); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_tmerc_south_oriented) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=tmerc +axis=wsu +x_0=1 +lat_0=1 +k_0=2"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + crs->exportToWKT(f.get()); + auto expected = + "PROJCRS[\"unknown\",\n" + " BASEGEODCRS[\"unknown\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " CONVERSION[\"unknown\",\n" + " METHOD[\"Transverse Mercator (South Orientated)\",\n" + " ID[\"EPSG\",9808]],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",2,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",1,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"westing\",west,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"southing\",south,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1]]]"; + + EXPECT_EQ(f->toString(), expected); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_lcc_as_lcc1sp) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=lcc +lat_0=45 +lat_1=45"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("Lambert Conic Conformal (1SP)") != std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_lcc_as_lcc2sp) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=lcc +lat_0=45 +lat_1=46"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("Lambert Conic Conformal (2SP)") != std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_lcc_as_lcc2sp_michigan) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=lcc +lat_0=45 +lat_1=46 +k_0=1.02"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("Lambert Conic Conformal (2SP Michigan)") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_aeqd_guam) { + auto obj = PROJStringParser().createFromPROJString("+proj=aeqd +guam"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("Guam Projection") != std::string::npos) << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_cea_ellipsoidal) { + auto obj = + PROJStringParser().createFromPROJString("+proj=cea +ellps=GRS80"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE( + wkt.find( + "METHOD[\"Lambert Cylindrical Equal Area\",ID[\"EPSG\",9835]]") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_geos_sweep_x) { + auto obj = PROJStringParser().createFromPROJString("+proj=geos +sweep=x"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("Geostationary Satellite (Sweep X)") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_geos_sweep_y) { + auto obj = PROJStringParser().createFromPROJString("+proj=geos"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("Geostationary Satellite (Sweep Y)") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_omerc_nouoff) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=omerc +no_uoff +alpha=2 +gamma=3"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("METHOD[\"Hotine Oblique Mercator (variant " + "A)\",ID[\"EPSG\",9812]]") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("PARAMETER[\"Azimuth of initial line\",2") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("PARAMETER[\"Angle from Rectified to Skew Grid\",3") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_omerc_tpno) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=omerc +lat_1=1 +lat_2=2 +lon_1=3 +lon_2=4"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE( + wkt.find( + "METHOD[\"Hotine Oblique Mercator Two Point Natural Origin\"]") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_omerc_variant_b) { + auto obj = PROJStringParser().createFromPROJString("+proj=omerc +alpha=2"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("METHOD[\"Hotine Oblique Mercator (variant " + "B)\",ID[\"EPSG\",9815]]") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("PARAMETER[\"Angle from Rectified to Skew Grid\",2") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_somerc) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=somerc +lat_0=1 +lon_0=2 +k_0=3 +x_0=4 +y_0=5"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("METHOD[\"Hotine Oblique Mercator (variant " + "B)\",ID[\"EPSG\",9815]]") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Latitude of projection centre\",1") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Longitude of projection centre\",2") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Scale factor on initial line\",3") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Azimuth of initial line\",90") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Angle from Rectified to Skew Grid\",90") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Easting at projection centre\",4") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Northing at projection centre\",5") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_krovak) { + auto obj = PROJStringParser().createFromPROJString("+proj=krovak"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE( + wkt.find("METHOD[\"Krovak (North Orientated)\",ID[\"EPSG\",1041]]") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_krovak_axis_swu) { + auto obj = + PROJStringParser().createFromPROJString("+proj=krovak +axis=swu"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("METHOD[\"Krovak\",ID[\"EPSG\",9819]]") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_etmerc) { + auto obj = PROJStringParser().createFromPROJString("+proj=etmerc"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("METHOD[\"Transverse Mercator\",ID[\"EPSG\",9807]]") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_merc_variant_B) { + auto obj = PROJStringParser().createFromPROJString("+proj=merc +lat_ts=1"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE( + wkt.find("METHOD[\"Mercator (variant B)\",ID[\"EPSG\",9805]]") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("PARAMETER[\"Latitude of 1st standard parallel\",1") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_merc_google_mercator) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 " + "+k=1 +units=m +nadgrids=@null"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("METHOD[\"Popular Visualisation Pseudo " + "Mercator\",ID[\"EPSG\",1024]") != std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_merc_stere_polar_variant_B) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=stere +lat_0=90 +lat_ts=70"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE( + wkt.find( + "METHOD[\"Polar Stereographic (variant B)\",ID[\"EPSG\",9829]]") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_merc_stere_polar_variant_A) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=stere +lat_0=-90 +k=0.994"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE( + wkt.find( + "METHOD[\"Polar Stereographic (variant A)\",ID[\"EPSG\",9810]]") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_merc_stere) { + auto obj = PROJStringParser().createFromPROJString("+proj=stere +lat_0=30"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("METHOD[\"Stereographic\"]") != std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_utm) { + auto obj = PROJStringParser().createFromPROJString("+proj=utm +zone=1"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("CONVERSION[\"UTM zone 1N\",METHOD[\"Transverse " + "Mercator\",ID[\"EPSG\",9807]]") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Longitude of natural origin\",-177,") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"False northing\",0,") != std::string::npos) << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_utm_south) { + auto obj = + PROJStringParser().createFromPROJString("+proj=utm +zone=1 +south"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("CONVERSION[\"UTM zone 1S\",METHOD[\"Transverse " + "Mercator\",ID[\"EPSG\",9807]]") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Longitude of natural origin\",-177,") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"False northing\",10000000,") != std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_non_earth_ellipsoid) { + std::string input("+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +R=1"); + auto obj = PROJStringParser().createFromPROJString(input); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + input); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_axisswap_unitconvert_longlat_proj) { + std::string input = + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=grad +xy_out=rad +step +inv +proj=longlat " + "+ellps=clrk80ign +pm=paris +step +proj=lcc +lat_1=49.5 " + "+lat_0=49.5 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 " + "+ellps=clrk80ign +pm=paris"; + auto obj = PROJStringParser().createFromPROJString(input); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + input); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_axisswap_unitconvert_proj_axisswap) { + std::string input = + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=igh " + "+lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +step +proj=axisswap +order=2,1"; + auto obj = PROJStringParser().createFromPROJString(input); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + input); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_axisswap_unitconvert_proj_unitconvert) { + std::string input = + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=igh " + "+lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +step +proj=unitconvert +xy_in=m " + "+z_in=m +xy_out=ft +z_out=ft"; + auto obj = PROJStringParser().createFromPROJString(input); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + input); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_axisswap_unitconvert_proj_unitconvert_numeric_axisswap) { + std::string input = + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=igh " + "+lon_0=0 +x_0=0 +y_0=0 +ellps=GRS80 +step +proj=unitconvert +xy_in=m " + "+z_in=m +xy_out=2.5 +z_out=2.5 +step +proj=axisswap +order=-2,-1"; + auto obj = PROJStringParser().createFromPROJString(input); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + input); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_projected_units) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=tmerc +x_0=0.304800609601219 +units=us-ft"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("PARAMETER[\"False easting\",1,LENGTHUNIT[\"US survey " + "foot\",0.304800609601219]") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("AXIS[\"(E)\",east,ORDER[1],LENGTHUNIT[\"US survey " + "foot\",0.304800609601219]") != std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_projected_to_meter_known) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=tmerc +to_meter=0.304800609601219"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("PARAMETER[\"False easting\",0,LENGTHUNIT[\"US survey " + "foot\",0.304800609601219]") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("AXIS[\"(E)\",east,ORDER[1],LENGTHUNIT[\"US survey " + "foot\",0.304800609601219]") != std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_projected_to_meter_unknown) { + auto obj = + PROJStringParser().createFromPROJString("+proj=tmerc +to_meter=0.1234"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE( + wkt.find( + "PARAMETER[\"False easting\",0,LENGTHUNIT[\"unknown\",0.1234]") != + std::string::npos) + << wkt; + EXPECT_TRUE( + wkt.find("AXIS[\"(E)\",east,ORDER[1],LENGTHUNIT[\"unknown\",0.1234]") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_projected_vunits) { + auto obj = + PROJStringParser().createFromPROJString("+proj=tmerc +vunits=ft"); + auto crs = nn_dynamic_pointer_cast<CompoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("CS[Cartesian,2]") != std::string::npos) << wkt; + EXPECT_TRUE(wkt.find("CS[vertical,1],AXIS[\"gravity-related height " + "(H)\",up,LENGTHUNIT[\"foot\",0.3048]") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_projected_unknown) { + auto obj = PROJStringParser().createFromPROJString( + "+proj=mbt_s +unused_flag +lat_0=45 +lon_0=0 +k=1 +x_0=10 +y_0=0"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + { + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE( + wkt.find("CONVERSION[\"unknown\",METHOD[\"PROJ mbt_s " + "unused_flag\"],PARAMETER[\"lat_0\",45,ANGLEUNIT[" + "\"degree\",0.0174532925199433]],PARAMETER[\"lon_0\"," + "0,ANGLEUNIT[\"degree\",0.0174532925199433]]," + "PARAMETER[\"k\",1,SCALEUNIT[\"unity\",1]],PARAMETER[" + "\"x_0\",10,LENGTHUNIT[\"metre\",1]],PARAMETER[\"y_0\"," + "0,LENGTHUNIT[\"metre\",1]]]") != std::string::npos) + << wkt; + } + + std::string expected_wkt1 = + "PROJCS[\"unknown\",GEOGCS[\"unknown\",DATUM[\"WGS_1984\",SPHEROID[" + "\"WGS " + "84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[" + "\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\"," + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\"," + "\"9122\"]],AXIS[\"Longitude\",EAST],AXIS[\"Latitude\",NORTH]]," + "PROJECTION[\"custom_proj4\"],UNIT[\"metre\",1,AUTHORITY[\"EPSG\"," + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],EXTENSION[" + "\"PROJ4\",\"+proj=mbt_s +datum=WGS84 +unused_flag +lat_0=45 " + "+lon_0=0 +k=1 +x_0=10 +y_0=0 +wktext +no_defs\"]]"; + + { + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL)); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_EQ(wkt, expected_wkt1); + } + + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=mbt_s +unused_flag +lat_0=45 +lon_0=0 +k=1 +x_0=10 " + "+y_0=0 +datum=WGS84"); + + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + "+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=mbt_s +unused_flag +lat_0=45 +lon_0=0 +k=1 " + "+x_0=10 +y_0=0 +ellps=WGS84"); + + { + auto obj2 = WKTParser().createFromWKT(expected_wkt1); + auto crs2 = nn_dynamic_pointer_cast<ProjectedCRS>(obj2); + ASSERT_TRUE(crs2 != nullptr); + + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs2->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE( + wkt.find("CONVERSION[\"unknown\",METHOD[\"PROJ mbt_s " + "unused_flag\"],PARAMETER[\"lat_0\",45,ANGLEUNIT[" + "\"degree\",0.0174532925199433]],PARAMETER[\"lon_0\"," + "0,ANGLEUNIT[\"degree\",0.0174532925199433]]," + "PARAMETER[\"k\",1,SCALEUNIT[\"unity\",1]],PARAMETER[" + "\"x_0\",10,LENGTHUNIT[\"metre\",1]],PARAMETER[\"y_0\"," + "0,LENGTHUNIT[\"metre\",1]]]") != std::string::npos) + << wkt; + } +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_geocent) { + auto obj = + PROJStringParser().createFromPROJString("+proj=geocent +ellps=WGS84"); + auto crs = nn_dynamic_pointer_cast<GeodeticCRS>(obj); + ASSERT_TRUE(crs != nullptr); + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + crs->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_EQ(wkt, "GEODCRS[\"unknown\",DATUM[\"Unknown based on WGS84 " + "ellipsoid\",ELLIPSOID[\"WGS " + "84\",6378137,298.257223563,LENGTHUNIT[\"metre\",1]]]," + "PRIMEM[\"Greenwich\",0,ANGLEUNIT[\"degree\",0." + "0174532925199433]],CS[Cartesian,3],AXIS[\"(X)\"," + "geocentricX,ORDER[1],LENGTHUNIT[\"metre\",1]],AXIS[\"(Y)\"," + "geocentricY,ORDER[2],LENGTHUNIT[\"metre\",1]],AXIS[\"(Z)\"," + "geocentricZ,ORDER[3],LENGTHUNIT[\"metre\",1]]]"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_cart_unit) { + std::string input( + "+proj=pipeline +step +proj=cart +ellps=WGS84 +step " + "+proj=unitconvert +xy_in=m +z_in=m +xy_out=km +z_out=km"); + auto obj = PROJStringParser().createFromPROJString(input); + auto crs = nn_dynamic_pointer_cast<GeodeticCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + input); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_cart_unit_numeric) { + std::string input( + "+proj=pipeline +step +proj=cart +ellps=WGS84 +step " + "+proj=unitconvert +xy_in=m +z_in=m +xy_out=500 +z_out=500"); + auto obj = PROJStringParser().createFromPROJString(input); + auto crs = nn_dynamic_pointer_cast<GeodeticCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + input); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_ob_tran_longlat) { + std::string input( + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=ob_tran " + "+o_proj=longlat +o_lat_p=52 +o_lon_p=-30 +lon_0=-25 +ellps=WGS84 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg +step " + "+proj=axisswap +order=2,1"); + auto obj = PROJStringParser().createFromPROJString(input); + auto crs = nn_dynamic_pointer_cast<DerivedGeographicCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + input); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_helmert_translation) { + std::string projString("+proj=helmert +x=1 +y=2 +z=3"); + auto obj = PROJStringParser().createFromPROJString(projString); + auto transf = nn_dynamic_pointer_cast<Transformation>(obj); + ASSERT_TRUE(transf != nullptr); + EXPECT_EQ( + transf->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + projString); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_helmert_translation_inv) { + std::string projString( + "+proj=pipeline +step +inv +proj=helmert +x=1 +y=2 +z=3"); + auto obj = PROJStringParser().createFromPROJString(projString); + auto transf = nn_dynamic_pointer_cast<Transformation>(obj); + ASSERT_TRUE(transf != nullptr); + EXPECT_EQ( + transf->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + "+proj=helmert +x=-1 +y=-2 +z=-3"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_helmert_position_vector) { + std::string projString("+proj=helmert +x=1 +y=2 +z=3 +rx=4 +ry=5 +rz=6 " + "+s=7 +convention=position_vector"); + auto obj = PROJStringParser().createFromPROJString(projString); + auto transf = nn_dynamic_pointer_cast<Transformation>(obj); + ASSERT_TRUE(transf != nullptr); + EXPECT_EQ( + transf->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + projString); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_helmert_position_vector_inv) { + std::string projString("+proj=pipeline +step +inv +proj=helmert +x=1 +y=2 " + "+z=3 +rx=4 +ry=5 +rz=6 " + "+s=7 +convention=position_vector"); + auto obj = PROJStringParser().createFromPROJString(projString); + auto transf = nn_dynamic_pointer_cast<CoordinateOperation>(obj); + ASSERT_TRUE(transf != nullptr); + EXPECT_EQ( + transf->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + projString); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_helmert_time_dependent_position_vector) { + std::string projString("+proj=helmert +x=1 +y=2 +z=3 +rx=4 +ry=5 +rz=6 " + "+s=7 +dx=0.1 +dy=0.2 +dz=0.3 +drx=0.4 +dry=0.5 " + "+drz=0.6 +ds=0.7 +t_epoch=2018.5 " + "+convention=position_vector"); + auto obj = PROJStringParser().createFromPROJString(projString); + auto transf = nn_dynamic_pointer_cast<Transformation>(obj); + ASSERT_TRUE(transf != nullptr); + EXPECT_EQ( + transf->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + projString); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_helmert_coordinate_frame) { + std::string projString("+proj=helmert +x=1 +y=2 +z=3 +rx=4 +ry=5 +rz=6 " + "+s=7 +convention=coordinate_frame"); + auto obj = PROJStringParser().createFromPROJString(projString); + auto transf = nn_dynamic_pointer_cast<Transformation>(obj); + ASSERT_TRUE(transf != nullptr); + EXPECT_EQ( + transf->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + projString); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_helmert_time_dependent_coordinate_frame) { + std::string projString("+proj=helmert +x=1 +y=2 +z=3 +rx=4 +ry=5 +rz=6 " + "+s=7 +dx=0.1 +dy=0.2 +dz=0.3 +drx=0.4 +dry=0.5 " + "+drz=0.6 +ds=0.7 +t_epoch=2018.5 " + "+convention=coordinate_frame"); + auto obj = PROJStringParser().createFromPROJString(projString); + auto transf = nn_dynamic_pointer_cast<Transformation>(obj); + ASSERT_TRUE(transf != nullptr); + EXPECT_EQ( + transf->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + projString); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_helmert_complex_pipeline) { + std::string projString( + "+proj=pipeline +step +proj=cart " + "+ellps=WGS84 +step +proj=helmert +x=-1 +y=-2 +z=-3 +rx=-4 " + "+ry=-5 +rz=-6 +s=-7 +convention=position_vector +step +inv " + "+proj=cart +ellps=clrk80ign"); + auto obj = PROJStringParser().createFromPROJString(projString); + auto transf = nn_dynamic_pointer_cast<Transformation>(obj); + ASSERT_TRUE(transf != nullptr); + EXPECT_EQ( + transf->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + "+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=cart +ellps=WGS84 +step +proj=helmert +x=-1 +y=-2 " + "+z=-3 +rx=-4 +ry=-5 +rz=-6 +s=-7 +convention=position_vector " + "+step +inv +proj=cart +ellps=clrk80ign +step +proj=unitconvert " + "+xy_in=rad +xy_out=deg"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_helmert_complex_pipeline_2) { + std::string projString( + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart " + "+ellps=WGS84 +step +proj=helmert +x=-1 +y=-2 +z=-3 +rx=-4 " + "+ry=-5 +rz=-6 +s=-7 +convention=position_vector +step +inv " + "+proj=cart +ellps=clrk80ign +step " + "+proj=longlat +ellps=clrk80ign +pm=paris +step " + "+proj=unitconvert +xy_in=rad +xy_out=grad +step +proj=axisswap " + "+order=2,1"); + auto obj = PROJStringParser().createFromPROJString(projString); + auto transf = nn_dynamic_pointer_cast<Transformation>(obj); + ASSERT_TRUE(transf != nullptr); + EXPECT_EQ( + transf->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + projString); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_helmert_errors) { + // Missing convention + EXPECT_THROW(PROJStringParser().createFromPROJString("+proj=helmert +rx=4"), + ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString( + "+proj=helmert +convention=unhandled"), + ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString( + "+proj=helmert +unhandled_keyword"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_molodensky) { + std::string projString("+proj=molodensky +ellps=WGS84 +dx=84.87 +dy=96.49 " + "+dz=116.95 +da=251 +df=1.41927e-05"); + auto obj = PROJStringParser().createFromPROJString(projString); + auto transf = nn_dynamic_pointer_cast<Transformation>(obj); + ASSERT_TRUE(transf != nullptr); + + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + transf->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_EQ( + wkt, + "COORDINATEOPERATION[\"unknown\",SOURCECRS[GEODCRS[\"unknown\",DATUM[" + "\"Unknown based on WGS84 ellipsoid\",ELLIPSOID[\"WGS " + "84\",6378137,298.257223563,LENGTHUNIT[\"metre\",1]]],PRIMEM[" + "\"Greenwich\",0,ANGLEUNIT[\"degree\",0.0174532925199433]],CS[" + "ellipsoidal,2],AXIS[\"longitude\",east,ORDER[1],ANGLEUNIT[\"degree\"," + "0.0174532925199433]],AXIS[\"latitude\",north,ORDER[2],ANGLEUNIT[" + "\"degree\",0.0174532925199433]]]],TARGETCRS[GEODCRS[\"unknown\",DATUM[" + "\"unknown\",ELLIPSOID[\"unknown\",6378388,297.000000198989,LENGTHUNIT[" + "\"metre\",1]]],PRIMEM[\"Greenwich\",0,ANGLEUNIT[\"degree\",0." + "0174532925199433]],CS[ellipsoidal,2],AXIS[\"longitude\",east,ORDER[1]," + "ANGLEUNIT[\"degree\",0.0174532925199433]],AXIS[\"latitude\",north," + "ORDER[2],ANGLEUNIT[\"degree\",0.0174532925199433]]]],METHOD[" + "\"Molodensky\",ID[\"EPSG\",9604]],PARAMETER[\"X-axis " + "translation\",84.87,LENGTHUNIT[\"metre\",1],ID[\"EPSG\",8605]]," + "PARAMETER[\"Y-axis " + "translation\",96.49,LENGTHUNIT[\"metre\",1],ID[\"EPSG\",8606]]," + "PARAMETER[\"Z-axis " + "translation\",116.95,LENGTHUNIT[\"metre\",1],ID[\"EPSG\",8607]]," + "PARAMETER[\"Semi-major axis length " + "difference\",251,LENGTHUNIT[\"metre\",1],ID[\"EPSG\",8654]],PARAMETER[" + "\"Flattening difference\",1.41927e-05,ID[\"EPSG\",8655]]]"); + + EXPECT_EQ( + transf->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + "+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=molodensky +ellps=WGS84 +dx=84.87 +dy=96.49 " + "+dz=116.95 +da=251 +df=1.41927e-05 +step +proj=longlat " + "+a=6378388 +rf=297.000000198989 +step +proj=unitconvert " + "+xy_in=rad +xy_out=deg"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_molodensky_inv) { + std::string projString("+proj=pipeline +step +inv +proj=molodensky " + "+ellps=WGS84 +dx=84.87 +dy=96.49 " + "+dz=116.95 +da=251 +df=1.41927e-05"); + auto obj = PROJStringParser().createFromPROJString(projString); + auto transf = nn_dynamic_pointer_cast<CoordinateOperation>(obj); + ASSERT_TRUE(transf != nullptr); + EXPECT_EQ( + transf->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + "+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +inv +proj=longlat +a=6378388 +rf=297.000000198989 +step " + "+proj=molodensky +a=6378388 +rf=297.000000198989 +dx=-84.87 " + "+dy=-96.49 +dz=-116.95 +da=-251 +df=-1.41927e-05 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_molodensky_abridged) { + std::string projString("+proj=molodensky +ellps=WGS84 +dx=84.87 +dy=96.49 " + "+dz=116.95 +da=251 +df=1.41927e-05 +abridged"); + auto obj = PROJStringParser().createFromPROJString(projString); + auto transf = nn_dynamic_pointer_cast<Transformation>(obj); + ASSERT_TRUE(transf != nullptr); + EXPECT_EQ( + transf->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + "+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=molodensky +ellps=WGS84 +dx=84.87 +dy=96.49 " + "+dz=116.95 +da=251 +df=1.41927e-05 +abridged +step +proj=longlat " + "+a=6378388 +rf=297.000000198989 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_molodensky_complex_pipeline) { + std::string projString( + "+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+proj=longlat +ellps=WGS84 +step +proj=molodensky +ellps=WGS84 " + "+dx=84.87 +dy=96.49 " + "+dz=116.95 +da=251 +df=1.41927e-05 +step +proj=longlat " + "+ellps=GRS80 +step +proj=unitconvert " + "+xy_in=rad +xy_out=deg"); + auto obj = PROJStringParser().createFromPROJString(projString); + auto transf = nn_dynamic_pointer_cast<Transformation>(obj); + ASSERT_TRUE(transf != nullptr); + + WKTFormatterNNPtr f(WKTFormatter::create()); + f->simulCurNodeHasId(); + f->setMultiLine(false); + transf->exportToWKT(f.get()); + auto wkt = f->toString(); + EXPECT_TRUE(wkt.find("SOURCECRS[GEODCRS[\"unknown\",DATUM[\"Unknown based " + "on WGS84 ellipsoid\"") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("TARGETCRS[GEODCRS[\"unknown\",DATUM[\"Unknown based " + "on GRS80 ellipsoid\"") != std::string::npos) + << wkt; + + EXPECT_EQ( + transf->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + "+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=molodensky +ellps=WGS84 +dx=84.87 +dy=96.49 " + "+dz=116.95 +da=251 +df=1.41927e-05 +step +proj=unitconvert " + "+xy_in=rad +xy_out=deg"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_title) { + std::string projString("+title=Ile d'Amsterdam 1963 +proj=longlat " + "+towgs84=109.7530,-528.1330,-362.2440 " + "+a=6378388.0000 +rf=297.0000000000000 +units=m " + "+no_defs"); + auto obj = PROJStringParser().createFromPROJString(projString); + auto crs = nn_dynamic_pointer_cast<BoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto baseCRS = nn_dynamic_pointer_cast<GeographicCRS>(crs->baseCRS()); + ASSERT_TRUE(baseCRS != nullptr); + EXPECT_EQ(baseCRS->nameStr(), "Ile d'Amsterdam 1963"); + EXPECT_EQ(baseCRS->datum()->nameStr(), "Ile d'Amsterdam 1963"); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=longlat +ellps=intl +towgs84=109.753,-528.133,-362.244,0,0,0,0"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_projected_title) { + std::string projString( + "+title=Amsterdam 1963 +proj=tmerc " + "+towgs84=109.7530,-528.1330,-362.2440 +a=6378388.0000 " + "+rf=297.0000000000000 +lat_0=0.000000000 +lon_0=75.000000000 " + "+k_0=0.99960000 +x_0=500000.000 +y_0=10000000.000 +units=m +no_defs"); + auto obj = PROJStringParser().createFromPROJString(projString); + auto crs = nn_dynamic_pointer_cast<BoundCRS>(obj); + ASSERT_TRUE(crs != nullptr); + auto baseCRS = nn_dynamic_pointer_cast<ProjectedCRS>(crs->baseCRS()); + ASSERT_TRUE(baseCRS != nullptr); + EXPECT_EQ(baseCRS->nameStr(), "Amsterdam 1963"); + EXPECT_EQ(baseCRS->baseCRS()->nameStr(), "unknown"); + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=utm +zone=43 +south +ellps=intl " + "+towgs84=109.753,-528.133,-362.244,0,0,0,0"); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_init) { + + { + auto obj = PROJStringParser().createFromPROJString("init=epsg:4326"); + auto co = nn_dynamic_pointer_cast<CoordinateOperation>(obj); + ASSERT_TRUE(co != nullptr); + EXPECT_EQ(co->exportToPROJString(PROJStringFormatter::create().get()), + "+init=epsg:4326"); + } + + { + auto obj = PROJStringParser().createFromPROJString( + "title=mytitle init=epsg:4326 ellps=WGS84"); + auto co = nn_dynamic_pointer_cast<CoordinateOperation>(obj); + ASSERT_TRUE(co != nullptr); + EXPECT_EQ(co->nameStr(), "mytitle"); + EXPECT_EQ(co->exportToPROJString(PROJStringFormatter::create().get()), + "+init=epsg:4326 +ellps=WGS84"); + } + + { + auto obj = PROJStringParser().createFromPROJString( + "proj=pipeline step init=epsg:4326 step proj=longlat"); + auto co = nn_dynamic_pointer_cast<CoordinateOperation>(obj); + ASSERT_TRUE(co != nullptr); + EXPECT_EQ(co->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +init=epsg:4326 +step +proj=longlat"); + } +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_errors) { + EXPECT_THROW(PROJStringParser().createFromPROJString(""), ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString("foo"), + ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString("inv"), + ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString("step"), + ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString("proj=unknown"), + ParsingException); + + EXPECT_THROW( + PROJStringParser().createFromPROJString( + "proj=pipeline step proj=unitconvert step proj=longlat a=invalid"), + ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString( + "proj=pipeline step proj=pipeline"), + ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString( + "proj=pipeline step init=epsg:4326 init=epsg:4326"), + ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString( + "proj=pipeline step init=epsg:4326 proj=longlat"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_longlat_errors) { + EXPECT_THROW( + PROJStringParser().createFromPROJString("+proj=longlat +datum=unknown"), + ParsingException); + + EXPECT_THROW( + PROJStringParser().createFromPROJString("+proj=longlat +ellps=unknown"), + ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString( + "+proj=longlat +a=invalid +b=1"), + ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString( + "+proj=longlat +a=1 +b=invalid"), + ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString( + "+proj=longlat +a=invalid +rf=1"), + ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString( + "+proj=longlat +a=1 +rf=invalid"), + ParsingException); + + EXPECT_THROW( + PROJStringParser().createFromPROJString("+proj=longlat +R=invalid"), + ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString("+proj=longlat +a=1"), + ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString("+proj=longlat +b=1"), + ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString("+proj=longlat +rf=1"), + ParsingException); + + EXPECT_THROW( + PROJStringParser().createFromPROJString("+proj=longlat +pm=unknown"), + ParsingException); + + EXPECT_THROW( + PROJStringParser().createFromPROJString( + "+proj=longlat +ellps=GRS80 +towgs84=1.2,2,3,4,5,6,invalid"), + ParsingException); + + EXPECT_THROW( + PROJStringParser().createFromPROJString("+proj=longlat +axis=foo"), + ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString( + "+proj=pipeline +step +proj=longlat +ellps=GRS80 +step " + "+proj=unitconvert +xy_in=rad +xy_out=foo"), + ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString( + "+proj=pipeline +step +proj=longlat +ellps=GRS80 +step " + "+proj=axisswap"), + ParsingException); + + EXPECT_THROW(PROJStringParser().createFromPROJString( + "+proj=pipeline +step +proj=longlat +ellps=GRS80 +step " + "+proj=axisswap +order=0,0"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(io, projparse_projected_errors) { + EXPECT_THROW( + PROJStringParser().createFromPROJString("+proj=tmerc +units=foo"), + ParsingException); + EXPECT_THROW( + PROJStringParser().createFromPROJString("+proj=tmerc +x_0=foo"), + ParsingException); + EXPECT_THROW( + PROJStringParser().createFromPROJString("+proj=tmerc +lat_0=foo"), + ParsingException); + // Inconsitent pm values between geogCRS and projectedCRS + EXPECT_THROW(PROJStringParser().createFromPROJString( + "+proj=pipeline +step +proj=longlat +ellps=WGS84 " + "+proj=tmerc +ellps=WGS84 +lat_0=foo +pm=paris"), + ParsingException); +} + +// --------------------------------------------------------------------------- + +TEST(io, createFromUserInput) { + auto dbContext = DatabaseContext::create(); + EXPECT_THROW(createFromUserInput("foo", nullptr), ParsingException); + EXPECT_THROW(createFromUserInput("GEOGCRS", nullptr), ParsingException); + EXPECT_THROW(createFromUserInput("+proj=unhandled", nullptr), + ParsingException); + EXPECT_THROW(createFromUserInput("EPSG:4326", nullptr), ParsingException); + EXPECT_THROW( + createFromUserInput("urn:ogc:def:unhandled:EPSG::4326", dbContext), + ParsingException); + + EXPECT_NO_THROW(createFromUserInput("+proj=longlat", nullptr)); + EXPECT_NO_THROW(createFromUserInput("EPSG:4326", dbContext)); + EXPECT_NO_THROW( + createFromUserInput("urn:ogc:def:crs:EPSG::4326", dbContext)); + EXPECT_NO_THROW(createFromUserInput( + "urn:ogc:def:coordinateOperation:EPSG::1671", dbContext)); + EXPECT_NO_THROW( + createFromUserInput("urn:ogc:def:datum:EPSG::6326", dbContext)); + EXPECT_NO_THROW( + createFromUserInput("urn:ogc:def:meridian:EPSG::8901", dbContext)); + EXPECT_NO_THROW( + createFromUserInput("urn:ogc:def:ellipsoid:EPSG::7030", dbContext)); + EXPECT_NO_THROW(createFromUserInput( + "GEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " CS[ellipsoidal,3],\n" + " AXIS[\"latitude\",north,\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"longitude\",east,\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"ellipsoidal height\",up,\n" + " UNIT[\"metre\",1]],\n" + " ID[\"EPSG\",4979]]", + nullptr)); + + // Search names in the database + EXPECT_THROW(createFromUserInput("foobar", dbContext), ParsingException); + EXPECT_NO_THROW(createFromUserInput("WGS 84", dbContext)); + EXPECT_NO_THROW(createFromUserInput("WGS84", dbContext)); + EXPECT_NO_THROW(createFromUserInput("UTM zone 31N", dbContext)); + EXPECT_THROW(createFromUserInput("UTM zone 31", dbContext), + ParsingException); + EXPECT_NO_THROW(createFromUserInput("WGS84 UTM zone 31N", dbContext)); +} + +// --------------------------------------------------------------------------- + +TEST(io, guessDialect) { + EXPECT_EQ(WKTParser().guessDialect("LOCAL_CS[\"foo\"]"), + WKTParser::WKTGuessedDialect::WKT1_GDAL); + + EXPECT_EQ(WKTParser().guessDialect( + "GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_" + "1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0]," + "UNIT[\"Degree\",0.0174532925199433]]"), + WKTParser::WKTGuessedDialect::WKT1_ESRI); + + EXPECT_EQ(WKTParser().guessDialect( + "GEOGCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"geodetic latitude (Lat)\",north],\n" + " AXIS[\"geodetic longitude (Lon)\",east],\n" + " UNIT[\"degree\",0.0174532925199433]]"), + WKTParser::WKTGuessedDialect::WKT2_2018); + + EXPECT_EQ( + WKTParser().guessDialect("TIMECRS[\"Temporal CRS\",\n" + " TDATUM[\"Gregorian calendar\",\n" + " CALENDAR[\"proleptic Gregorian\"],\n" + " TIMEORIGIN[0000-01-01]],\n" + " CS[TemporalDateTime,1],\n" + " AXIS[\"time (T)\",future]]"), + WKTParser::WKTGuessedDialect::WKT2_2018); + + EXPECT_EQ(WKTParser().guessDialect( + "GEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"geodetic latitude (Lat)\",north],\n" + " AXIS[\"geodetic longitude (Lon)\",east],\n" + " UNIT[\"degree\",0.0174532925199433]]"), + WKTParser::WKTGuessedDialect::WKT2_2015); + + EXPECT_EQ(WKTParser().guessDialect("foo"), + WKTParser::WKTGuessedDialect::NOT_WKT); +} diff --git a/test/unit/test_metadata.cpp b/test/unit/test_metadata.cpp new file mode 100644 index 00000000..96b8cbff --- /dev/null +++ b/test/unit/test_metadata.cpp @@ -0,0 +1,388 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: Test ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#include "gtest_include.h" + +#include "proj/io.hpp" +#include "proj/metadata.hpp" +#include "proj/util.hpp" + +using namespace osgeo::proj::io; +using namespace osgeo::proj::metadata; +using namespace osgeo::proj::util; + +// --------------------------------------------------------------------------- + +TEST(metadata, citation) { + Citation c("my citation"); + Citation c2(c); + ASSERT_TRUE(c2.title().has_value()); + ASSERT_EQ(*(c2.title()), "my citation"); +} + +// --------------------------------------------------------------------------- + +static bool equals(ExtentNNPtr extent1, ExtentNNPtr extent2) { + return extent1->contains(extent2) && extent2->contains(extent1); +} + +static bool equals(GeographicExtentNNPtr extent1, + GeographicExtentNNPtr extent2) { + return extent1->contains(extent2) && extent2->contains(extent1); +} + +static GeographicExtentNNPtr getBBox(ExtentNNPtr extent) { + assert(extent->geographicElements().size() == 1); + return extent->geographicElements()[0]; +} + +TEST(metadata, extent) { + Extent::create( + optional<std::string>(), std::vector<GeographicExtentNNPtr>(), + std::vector<VerticalExtentNNPtr>(), std::vector<TemporalExtentNNPtr>()); + + auto world = Extent::createFromBBOX(-180, -90, 180, 90); + EXPECT_TRUE(world->isEquivalentTo(world.get())); + EXPECT_TRUE(world->contains(world)); + + auto west_hemisphere = Extent::createFromBBOX(-180, -90, 0, 90); + EXPECT_TRUE(!world->isEquivalentTo(west_hemisphere.get())); + EXPECT_TRUE(world->contains(west_hemisphere)); + EXPECT_TRUE(!west_hemisphere->contains(world)); + + auto world_inter_world = world->intersection(world); + ASSERT_TRUE(world_inter_world != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(world_inter_world), world)); + + auto france = Extent::createFromBBOX(-5, 40, 12, 51); + EXPECT_TRUE(france->contains(france)); + EXPECT_TRUE(world->contains(france)); + EXPECT_TRUE(!france->contains( + world)); // We are only speaking about geography here ;-) + EXPECT_TRUE(world->intersects(france)); + EXPECT_TRUE(france->intersects(world)); + + auto france_inter_france = france->intersection(france); + ASSERT_TRUE(france_inter_france != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(france_inter_france), france)); + + auto france_inter_world = france->intersection(world); + ASSERT_TRUE(france_inter_world != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(france_inter_world), france)); + + auto world_inter_france = world->intersection(france); + ASSERT_TRUE(world_inter_france != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(world_inter_france), france)); + + auto france_shifted = + Extent::createFromBBOX(-5 + 5, 40 + 5, 12 + 5, 51 + 5); + EXPECT_TRUE(france->intersects(france_shifted)); + EXPECT_TRUE(france_shifted->intersects(france)); + EXPECT_TRUE(!france->contains(france_shifted)); + EXPECT_TRUE(!france_shifted->contains(france)); + + auto europe = Extent::createFromBBOX(-30, 25, 30, 70); + EXPECT_TRUE(europe->contains(france)); + EXPECT_TRUE(!france->contains(europe)); + + auto france_inter_europe = france->intersection(europe); + ASSERT_TRUE(france_inter_europe != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(france_inter_europe), france)); + + auto europe_intersects_france = europe->intersection(france); + ASSERT_TRUE(europe_intersects_france != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(europe_intersects_france), france)); + + auto nz = Extent::createFromBBOX(155.0, -60.0, -170.0, -25.0); + EXPECT_TRUE(nz->contains(nz)); + EXPECT_TRUE(world->contains(nz)); + EXPECT_TRUE(nz->intersects(world)); + EXPECT_TRUE(world->intersects(nz)); + EXPECT_TRUE(!nz->contains(world)); + EXPECT_TRUE(!nz->contains(france)); + EXPECT_TRUE(!france->contains(nz)); + EXPECT_TRUE(!nz->intersects(france)); + EXPECT_TRUE(!france->intersects(nz)); + + { + auto nz_inter_world = nz->intersection(world); + ASSERT_TRUE(nz_inter_world != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(nz_inter_world), nz)); + } + + { + auto nz_inter_world = getBBox(nz)->intersection(getBBox(world)); + ASSERT_TRUE(nz_inter_world != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(nz_inter_world), getBBox(nz))); + } + + { + auto world_inter_nz = world->intersection(nz); + ASSERT_TRUE(world_inter_nz != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(world_inter_nz), nz)); + } + + { + auto world_inter_nz = getBBox(world)->intersection(getBBox(nz)); + ASSERT_TRUE(world_inter_nz != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(world_inter_nz), getBBox(nz))); + } + + EXPECT_TRUE(nz->intersection(france) == nullptr); + EXPECT_TRUE(france->intersection(nz) == nullptr); + + auto bbox_antimeridian_north = + Extent::createFromBBOX(155.0, 10.0, -170.0, 30.0); + EXPECT_TRUE(!nz->contains(bbox_antimeridian_north)); + EXPECT_TRUE(!bbox_antimeridian_north->contains(nz)); + EXPECT_TRUE(!nz->intersects(bbox_antimeridian_north)); + EXPECT_TRUE(!bbox_antimeridian_north->intersects(nz)); + EXPECT_TRUE(!nz->intersection(bbox_antimeridian_north)); + EXPECT_TRUE(!bbox_antimeridian_north->intersection(nz)); + + auto nz_pos_long = Extent::createFromBBOX(155.0, -60.0, 180.0, -25.0); + EXPECT_TRUE(nz->contains(nz_pos_long)); + EXPECT_TRUE(!nz_pos_long->contains(nz)); + EXPECT_TRUE(nz->intersects(nz_pos_long)); + EXPECT_TRUE(nz_pos_long->intersects(nz)); + auto nz_inter_nz_pos_long = nz->intersection(nz_pos_long); + ASSERT_TRUE(nz_inter_nz_pos_long != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(nz_inter_nz_pos_long), nz_pos_long)); + auto nz_pos_long_inter_nz = nz_pos_long->intersection(nz); + ASSERT_TRUE(nz_pos_long_inter_nz != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(nz_pos_long_inter_nz), nz_pos_long)); + + auto nz_neg_long = Extent::createFromBBOX(-180.0, -60.0, -170.0, -25.0); + EXPECT_TRUE(nz->contains(nz_neg_long)); + EXPECT_TRUE(!nz_neg_long->contains(nz)); + EXPECT_TRUE(nz->intersects(nz_neg_long)); + EXPECT_TRUE(nz_neg_long->intersects(nz)); + auto nz_inter_nz_neg_long = nz->intersection(nz_neg_long); + ASSERT_TRUE(nz_inter_nz_neg_long != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(nz_inter_nz_neg_long), nz_neg_long)); + auto nz_neg_long_inter_nz = nz_neg_long->intersection(nz); + ASSERT_TRUE(nz_neg_long_inter_nz != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(nz_neg_long_inter_nz), nz_neg_long)); + + auto nz_smaller = Extent::createFromBBOX(160, -55.0, -175.0, -30.0); + EXPECT_TRUE(nz->contains(nz_smaller)); + EXPECT_TRUE(!nz_smaller->contains(nz)); + + auto nz_pos_long_shifted_west = + Extent::createFromBBOX(150.0, -60.0, 175.0, -25.0); + EXPECT_TRUE(!nz->contains(nz_pos_long_shifted_west)); + EXPECT_TRUE(!nz_pos_long_shifted_west->contains(nz)); + EXPECT_TRUE(nz->intersects(nz_pos_long_shifted_west)); + EXPECT_TRUE(nz_pos_long_shifted_west->intersects(nz)); + + auto nz_smaller_shifted = Extent::createFromBBOX(165, -60.0, -170.0, -25.0); + EXPECT_TRUE(!nz_smaller->contains(nz_smaller_shifted)); + EXPECT_TRUE(!nz_smaller_shifted->contains(nz_smaller)); + EXPECT_TRUE(nz_smaller->intersects(nz_smaller_shifted)); + EXPECT_TRUE(nz_smaller_shifted->intersects(nz_smaller)); + + auto nz_shifted = Extent::createFromBBOX(165.0, -60.0, -160.0, -25.0); + auto nz_intersect_nz_shifted = nz->intersection(nz_shifted); + ASSERT_TRUE(nz_intersect_nz_shifted != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(nz_intersect_nz_shifted), + Extent::createFromBBOX(165, -60.0, -170.0, -25.0))); + + auto nz_inter_nz_smaller = nz->intersection(nz_smaller); + ASSERT_TRUE(nz_inter_nz_smaller != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(nz_inter_nz_smaller), nz_smaller)); + + auto nz_smaller_inter_nz = nz_smaller->intersection(nz); + ASSERT_TRUE(nz_smaller_inter_nz != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(nz_smaller_inter_nz), nz_smaller)); + + auto world_smaller = Extent::createFromBBOX(-179, -90, 179, 90); + EXPECT_TRUE(!world_smaller->contains(nz)); + EXPECT_TRUE(!nz->contains(world_smaller)); + + auto nz_inter_world_smaller = nz->intersection(world_smaller); + ASSERT_TRUE(nz_inter_world_smaller != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(nz_inter_world_smaller), + Extent::createFromBBOX(155, -60, 179, -25))); + + auto world_smaller_inter_nz = world_smaller->intersection(nz); + ASSERT_TRUE(world_smaller_inter_nz != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(world_smaller_inter_nz), + Extent::createFromBBOX(155, -60, 179, -25))); + + auto world_smaller_east = Extent::createFromBBOX(-179, -90, 150, 90); + EXPECT_TRUE(!world_smaller_east->contains(nz)); + EXPECT_TRUE(!nz->contains(world_smaller_east)); + + auto nz_inter_world_smaller_east = nz->intersection(world_smaller_east); + ASSERT_TRUE(nz_inter_world_smaller_east != nullptr); + EXPECT_EQ(nn_dynamic_pointer_cast<GeographicBoundingBox>( + nz_inter_world_smaller_east->geographicElements()[0]) + ->westBoundLongitude(), + -179); + EXPECT_EQ(nn_dynamic_pointer_cast<GeographicBoundingBox>( + nz_inter_world_smaller_east->geographicElements()[0]) + ->eastBoundLongitude(), + -170); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(nz_inter_world_smaller_east), + Extent::createFromBBOX(-179, -60, -170, -25))); + + auto world_smaller_east_inter_nz = world_smaller_east->intersection(nz); + ASSERT_TRUE(world_smaller_east_inter_nz != nullptr); + EXPECT_EQ(nn_dynamic_pointer_cast<GeographicBoundingBox>( + world_smaller_east_inter_nz->geographicElements()[0]) + ->westBoundLongitude(), + -179); + EXPECT_EQ(nn_dynamic_pointer_cast<GeographicBoundingBox>( + world_smaller_east_inter_nz->geographicElements()[0]) + ->eastBoundLongitude(), + -170); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(world_smaller_east_inter_nz), + Extent::createFromBBOX(-179, -60, -170, -25))); + + auto east_hemisphere = Extent::createFromBBOX(0, -90, 180, 90); + auto east_hemisphere_inter_nz = east_hemisphere->intersection(nz); + ASSERT_TRUE(east_hemisphere_inter_nz != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(east_hemisphere_inter_nz), + Extent::createFromBBOX(155.0, -60.0, 180.0, -25.0))); + + auto minus_180_to_156 = Extent::createFromBBOX(-180, -90, 156, 90); + auto minus_180_to_156_inter_nz = minus_180_to_156->intersection(nz); + ASSERT_TRUE(minus_180_to_156_inter_nz != nullptr); + EXPECT_TRUE(equals(NN_CHECK_ASSERT(minus_180_to_156_inter_nz), + Extent::createFromBBOX(-180.0, -60.0, -170.0, -25.0))); +} + +// --------------------------------------------------------------------------- + +TEST(metadata, identifier_empty) { + auto id(Identifier::create()); + Identifier id2(*id); + ASSERT_TRUE(!id2.authority().has_value()); + ASSERT_TRUE(id2.code().empty()); + ASSERT_TRUE(!id2.codeSpace().has_value()); + ASSERT_TRUE(!id2.version().has_value()); + ASSERT_TRUE(!id2.description().has_value()); +} + +// --------------------------------------------------------------------------- + +TEST(metadata, identifier_properties) { + PropertyMap properties; + properties.set(Identifier::AUTHORITY_KEY, "authority"); + properties.set(Identifier::CODESPACE_KEY, "codespace"); + properties.set(Identifier::VERSION_KEY, "version"); + properties.set(Identifier::DESCRIPTION_KEY, "description"); + auto id(Identifier::create("my code", properties)); + Identifier id2(*id); + ASSERT_TRUE(id2.authority().has_value()); + ASSERT_EQ(*(id2.authority()->title()), "authority"); + ASSERT_EQ(id2.code(), "my code"); + ASSERT_TRUE(id2.codeSpace().has_value()); + ASSERT_EQ(*(id2.codeSpace()), "codespace"); + ASSERT_TRUE(id2.version().has_value()); + ASSERT_EQ(*(id2.version()), "version"); + ASSERT_TRUE(id2.description().has_value()); + ASSERT_EQ(*(id2.description()), "description"); +} + +// --------------------------------------------------------------------------- + +TEST(metadata, identifier_code_integer) { + PropertyMap properties; + properties.set(Identifier::CODE_KEY, 1234); + auto id(Identifier::create(std::string(), properties)); + ASSERT_EQ(id->code(), "1234"); +} + +// --------------------------------------------------------------------------- + +TEST(metadata, identifier_code_string) { + PropertyMap properties; + properties.set(Identifier::CODE_KEY, "1234"); + auto id(Identifier::create(std::string(), properties)); + ASSERT_EQ(id->code(), "1234"); +} + +// --------------------------------------------------------------------------- + +TEST(metadata, identifier_code_invalid_type) { + PropertyMap properties; + properties.set(Identifier::CODE_KEY, true); + ASSERT_THROW(Identifier::create(std::string(), properties), + InvalidValueTypeException); +} + +// --------------------------------------------------------------------------- + +TEST(metadata, identifier_authority_citation) { + PropertyMap properties; + properties.set(Identifier::AUTHORITY_KEY, + nn_make_shared<Citation>("authority")); + auto id(Identifier::create(std::string(), properties)); + ASSERT_TRUE(id->authority().has_value()); + ASSERT_EQ(*(id->authority()->title()), "authority"); +} + +// --------------------------------------------------------------------------- + +TEST(metadata, identifier_authority_invalid_type) { + PropertyMap properties; + properties.set(Identifier::AUTHORITY_KEY, true); + ASSERT_THROW(Identifier::create(std::string(), properties), + InvalidValueTypeException); +} + +// --------------------------------------------------------------------------- + +TEST(metadata, id) { + auto in_wkt = "ID[\"EPSG\",4946,1.5,\n" + " CITATION[\"my citation\"],\n" + " URI[\"urn:ogc:def:crs:EPSG::4946\"]]"; + auto id = + nn_dynamic_pointer_cast<Identifier>(WKTParser().createFromWKT(in_wkt)); + ASSERT_TRUE(id != nullptr); + + EXPECT_TRUE(id->authority().has_value()); + EXPECT_EQ(*(id->authority()->title()), "my citation"); + EXPECT_EQ(*(id->codeSpace()), "EPSG"); + EXPECT_EQ(id->code(), "4946"); + EXPECT_TRUE(id->version().has_value()); + EXPECT_EQ(*(id->version()), "1.5"); + EXPECT_TRUE(id->uri().has_value()); + EXPECT_EQ(*(id->uri()), "urn:ogc:def:crs:EPSG::4946"); + + auto got_wkt = id->exportToWKT(WKTFormatter::create().get()); + EXPECT_EQ(got_wkt, in_wkt); +} + +// --------------------------------------------------------------------------- + +TEST(metadata, Identifier_isEquivalentName) { + EXPECT_TRUE(Identifier::isEquivalentName("Central_Meridian", + "Central_- ()/Meridian")); +} diff --git a/test/unit/test_operation.cpp b/test/unit/test_operation.cpp new file mode 100644 index 00000000..2d2688a8 --- /dev/null +++ b/test/unit/test_operation.cpp @@ -0,0 +1,6271 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: Test ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#include "gtest_include.h" + +// to be able to use internal::replaceAll +#define FROM_PROJ_CPP + +#include "proj/common.hpp" +#include "proj/coordinateoperation.hpp" +#include "proj/coordinatesystem.hpp" +#include "proj/crs.hpp" +#include "proj/datum.hpp" +#include "proj/io.hpp" +#include "proj/metadata.hpp" +#include "proj/util.hpp" + +#include "proj/internal/internal.hpp" + +#include "proj_constants.h" + +#include <string> +#include <vector> + +using namespace osgeo::proj::common; +using namespace osgeo::proj::crs; +using namespace osgeo::proj::cs; +using namespace osgeo::proj::datum; +using namespace osgeo::proj::io; +using namespace osgeo::proj::internal; +using namespace osgeo::proj::metadata; +using namespace osgeo::proj::operation; +using namespace osgeo::proj::util; + +namespace { +struct UnrelatedObject : public IComparable { + UnrelatedObject() = default; + + bool _isEquivalentTo(const IComparable *, Criterion) const override { + assert(false); + return false; + } +}; + +static nn<std::shared_ptr<UnrelatedObject>> createUnrelatedObject() { + return nn_make_shared<UnrelatedObject>(); +} +} // namespace + +// --------------------------------------------------------------------------- + +TEST(operation, method) { + + auto method = OperationMethod::create( + PropertyMap(), std::vector<OperationParameterNNPtr>{}); + EXPECT_TRUE(method->isEquivalentTo(method.get())); + EXPECT_FALSE(method->isEquivalentTo(createUnrelatedObject().get())); + auto otherMethod = OperationMethod::create( + PropertyMap(), + std::vector<OperationParameterNNPtr>{OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName"))}); + EXPECT_TRUE(otherMethod->isEquivalentTo(otherMethod.get())); + EXPECT_FALSE(method->isEquivalentTo(otherMethod.get())); + auto otherMethod2 = OperationMethod::create( + PropertyMap(), + std::vector<OperationParameterNNPtr>{OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName2"))}); + EXPECT_FALSE(otherMethod->isEquivalentTo(otherMethod2.get())); + EXPECT_FALSE(otherMethod->isEquivalentTo( + otherMethod2.get(), IComparable::Criterion::EQUIVALENT)); +} + +// --------------------------------------------------------------------------- + +TEST(operation, method_parameter_different_order) { + + auto method1 = OperationMethod::create( + PropertyMap(), std::vector<OperationParameterNNPtr>{ + OperationParameter::create(PropertyMap().set( + IdentifiedObject::NAME_KEY, "paramName")), + OperationParameter::create(PropertyMap().set( + IdentifiedObject::NAME_KEY, "paramName2"))}); + + auto method2 = OperationMethod::create( + PropertyMap(), std::vector<OperationParameterNNPtr>{ + OperationParameter::create(PropertyMap().set( + IdentifiedObject::NAME_KEY, "paramName2")), + OperationParameter::create(PropertyMap().set( + IdentifiedObject::NAME_KEY, "paramName"))}); + + auto method3 = OperationMethod::create( + PropertyMap(), std::vector<OperationParameterNNPtr>{ + OperationParameter::create(PropertyMap().set( + IdentifiedObject::NAME_KEY, "paramName3")), + OperationParameter::create(PropertyMap().set( + IdentifiedObject::NAME_KEY, "paramName"))}); + + EXPECT_FALSE(method1->isEquivalentTo(method2.get())); + EXPECT_TRUE(method1->isEquivalentTo(method2.get(), + IComparable::Criterion::EQUIVALENT)); + EXPECT_FALSE(method1->isEquivalentTo(method3.get(), + IComparable::Criterion::EQUIVALENT)); +} + +// --------------------------------------------------------------------------- + +TEST(operation, ParameterValue) { + + auto valStr1 = ParameterValue::create("str1"); + auto valStr2 = ParameterValue::create("str2"); + EXPECT_TRUE(valStr1->isEquivalentTo(valStr1.get())); + EXPECT_FALSE(valStr1->isEquivalentTo(createUnrelatedObject().get())); + EXPECT_FALSE(valStr1->isEquivalentTo(valStr2.get())); + + auto valMeasure1 = ParameterValue::create(Angle(-90.0)); + auto valMeasure1Eps = ParameterValue::create(Angle(-90.0 - 1e-11)); + auto valMeasure2 = ParameterValue::create(Angle(-89.0)); + EXPECT_TRUE(valMeasure1->isEquivalentTo(valMeasure1.get())); + EXPECT_TRUE(valMeasure1->isEquivalentTo( + valMeasure1.get(), IComparable::Criterion::EQUIVALENT)); + EXPECT_FALSE(valMeasure1->isEquivalentTo(valMeasure1Eps.get())); + EXPECT_TRUE(valMeasure1->isEquivalentTo( + valMeasure1Eps.get(), IComparable::Criterion::EQUIVALENT)); + + EXPECT_FALSE(valMeasure1->isEquivalentTo(valStr1.get())); + EXPECT_FALSE(valMeasure1->isEquivalentTo(valMeasure2.get())); + EXPECT_FALSE(valMeasure1->isEquivalentTo( + valMeasure2.get(), IComparable::Criterion::EQUIVALENT)); + + auto valInt1 = ParameterValue::create(1); + auto valInt2 = ParameterValue::create(2); + EXPECT_TRUE(valInt1->isEquivalentTo(valInt1.get())); + EXPECT_FALSE(valInt1->isEquivalentTo(valInt2.get())); + + auto valTrue = ParameterValue::create(true); + auto valFalse = ParameterValue::create(false); + EXPECT_TRUE(valTrue->isEquivalentTo(valTrue.get())); + EXPECT_FALSE(valTrue->isEquivalentTo(valFalse.get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, OperationParameter) { + + auto op1 = OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName")); + auto op2 = OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName2")); + EXPECT_TRUE(op1->isEquivalentTo(op1.get())); + EXPECT_FALSE(op1->isEquivalentTo(createUnrelatedObject().get())); + EXPECT_FALSE(op1->isEquivalentTo(op2.get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, OperationParameterValue) { + + auto op1 = OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName")); + auto op2 = OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName2")); + auto valStr1 = ParameterValue::create("str1"); + auto valStr2 = ParameterValue::create("str2"); + auto opv11 = OperationParameterValue::create(op1, valStr1); + EXPECT_TRUE(opv11->isEquivalentTo(opv11.get())); + EXPECT_FALSE(opv11->isEquivalentTo(createUnrelatedObject().get())); + auto opv12 = OperationParameterValue::create(op1, valStr2); + EXPECT_FALSE(opv11->isEquivalentTo(opv12.get())); + auto opv21 = OperationParameterValue::create(op2, valStr1); + EXPECT_FALSE(opv11->isEquivalentTo(opv12.get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, SingleOperation) { + + auto sop1 = Transformation::create( + PropertyMap(), nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4326), + nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4807), + static_cast<CRSPtr>(GeographicCRS::EPSG_4979.as_nullable()), + PropertyMap(), + std::vector<OperationParameterNNPtr>{OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName"))}, + std::vector<ParameterValueNNPtr>{ + ParameterValue::createFilename("foo.bin")}, + std::vector<PositionalAccuracyNNPtr>{ + PositionalAccuracy::create("0.1")}); + + EXPECT_TRUE(sop1->isEquivalentTo(sop1.get())); + EXPECT_FALSE(sop1->isEquivalentTo(createUnrelatedObject().get())); + + auto sop2 = Transformation::create( + PropertyMap(), nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4326), + nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4807), + static_cast<CRSPtr>(GeographicCRS::EPSG_4979.as_nullable()), + PropertyMap(), + std::vector<OperationParameterNNPtr>{OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName2"))}, + std::vector<ParameterValueNNPtr>{ + ParameterValue::createFilename("foo.bin")}, + std::vector<PositionalAccuracyNNPtr>{ + PositionalAccuracy::create("0.1")}); + EXPECT_FALSE(sop1->isEquivalentTo(sop2.get())); + + auto sop3 = Transformation::create( + PropertyMap(), nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4326), + nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4807), + static_cast<CRSPtr>(GeographicCRS::EPSG_4979.as_nullable()), + PropertyMap(), + std::vector<OperationParameterNNPtr>{ + OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName")), + OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName2"))}, + std::vector<ParameterValueNNPtr>{ + ParameterValue::createFilename("foo.bin"), + ParameterValue::createFilename("foo2.bin")}, + std::vector<PositionalAccuracyNNPtr>{ + PositionalAccuracy::create("0.1")}); + EXPECT_FALSE(sop1->isEquivalentTo(sop3.get())); + + auto sop4 = Transformation::create( + PropertyMap(), nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4326), + nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4807), + static_cast<CRSPtr>(GeographicCRS::EPSG_4979.as_nullable()), + PropertyMap(), + std::vector<OperationParameterNNPtr>{OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName"))}, + std::vector<ParameterValueNNPtr>{ + ParameterValue::createFilename("foo2.bin")}, + std::vector<PositionalAccuracyNNPtr>{ + PositionalAccuracy::create("0.1")}); + EXPECT_FALSE(sop1->isEquivalentTo(sop4.get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, SingleOperation_different_order) { + + auto sop1 = Transformation::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "ignored1"), + GeographicCRS::EPSG_4326, GeographicCRS::EPSG_4807, nullptr, + PropertyMap(), + std::vector<OperationParameterNNPtr>{ + OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName")), + OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName2"))}, + std::vector<ParameterValueNNPtr>{ + ParameterValue::createFilename("foo.bin"), + ParameterValue::createFilename("foo2.bin")}, + {}); + + auto sop2 = Transformation::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "ignored2"), + GeographicCRS::EPSG_4326, GeographicCRS::EPSG_4807, nullptr, + PropertyMap(), + std::vector<OperationParameterNNPtr>{ + OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName2")), + OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName"))}, + std::vector<ParameterValueNNPtr>{ + ParameterValue::createFilename("foo2.bin"), + ParameterValue::createFilename("foo.bin")}, + {}); + + auto sop3 = Transformation::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "ignored3"), + GeographicCRS::EPSG_4326, GeographicCRS::EPSG_4807, nullptr, + PropertyMap(), + std::vector<OperationParameterNNPtr>{ + OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName")), + OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName2"))}, + std::vector<ParameterValueNNPtr>{ + ParameterValue::createFilename("foo2.bin"), + ParameterValue::createFilename("foo.bin")}, + {}); + + EXPECT_FALSE(sop1->isEquivalentTo(sop2.get())); + EXPECT_TRUE( + sop1->isEquivalentTo(sop2.get(), IComparable::Criterion::EQUIVALENT)); + EXPECT_FALSE( + sop1->isEquivalentTo(sop3.get(), IComparable::Criterion::EQUIVALENT)); +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_to_wkt) { + PropertyMap propertiesTransformation; + propertiesTransformation + .set(Identifier::CODESPACE_KEY, "codeSpaceTransformation") + .set(Identifier::CODE_KEY, "codeTransformation") + .set(IdentifiedObject::NAME_KEY, "transformationName") + .set(IdentifiedObject::REMARKS_KEY, "my remarks"); + + auto transf = Transformation::create( + propertiesTransformation, + nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4326), + nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4807), + static_cast<CRSPtr>(GeographicCRS::EPSG_4979.as_nullable()), + PropertyMap() + .set(Identifier::CODESPACE_KEY, "codeSpaceOperationMethod") + .set(Identifier::CODE_KEY, "codeOperationMethod") + .set(IdentifiedObject::NAME_KEY, "operationMethodName"), + std::vector<OperationParameterNNPtr>{OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName"))}, + std::vector<ParameterValueNNPtr>{ + ParameterValue::createFilename("foo.bin")}, + std::vector<PositionalAccuracyNNPtr>{ + PositionalAccuracy::create("0.1")}); + + std::string src_wkt; + { + auto formatter = WKTFormatter::create(); + formatter->setOutputId(false); + src_wkt = GeographicCRS::EPSG_4326->exportToWKT(formatter.get()); + } + + std::string dst_wkt; + { + auto formatter = WKTFormatter::create(); + formatter->setOutputId(false); + dst_wkt = GeographicCRS::EPSG_4807->exportToWKT(formatter.get()); + } + + std::string interpolation_wkt; + { + auto formatter = WKTFormatter::create(); + formatter->setOutputId(false); + interpolation_wkt = + GeographicCRS::EPSG_4979->exportToWKT(formatter.get()); + } + + auto expected = + "COORDINATEOPERATION[\"transformationName\",\n" + " SOURCECRS[" + + src_wkt + "],\n" + " TARGETCRS[" + + dst_wkt + + "],\n" + " METHOD[\"operationMethodName\",\n" + " ID[\"codeSpaceOperationMethod\",\"codeOperationMethod\"]],\n" + " PARAMETERFILE[\"paramName\",\"foo.bin\"],\n" + " INTERPOLATIONCRS[" + + interpolation_wkt + + "],\n" + " OPERATIONACCURACY[0.1],\n" + " ID[\"codeSpaceTransformation\",\"codeTransformation\"],\n" + " REMARK[\"my remarks\"]]"; + + EXPECT_EQ( + replaceAll(replaceAll(transf->exportToWKT(WKTFormatter::create().get()), + " ", ""), + "\n", ""), + replaceAll(replaceAll(expected, " ", ""), "\n", "")); + + EXPECT_THROW( + transf->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + FormattingException); + + EXPECT_TRUE(transf->isEquivalentTo(transf.get())); + EXPECT_FALSE(transf->isEquivalentTo(createUnrelatedObject().get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, concatenated_operation) { + + PropertyMap propertiesTransformation; + propertiesTransformation + .set(Identifier::CODESPACE_KEY, "codeSpaceTransformation") + .set(Identifier::CODE_KEY, "codeTransformation") + .set(IdentifiedObject::NAME_KEY, "transformationName") + .set(IdentifiedObject::REMARKS_KEY, "my remarks"); + + auto transf_1 = Transformation::create( + propertiesTransformation, + nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4326), + nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4807), nullptr, + PropertyMap().set(IdentifiedObject::NAME_KEY, "operationMethodName"), + std::vector<OperationParameterNNPtr>{OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName"))}, + std::vector<ParameterValueNNPtr>{ + ParameterValue::createFilename("foo.bin")}, + std::vector<PositionalAccuracyNNPtr>()); + + auto transf_2 = Transformation::create( + propertiesTransformation, + nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4807), + nn_static_pointer_cast<CRS>(GeographicCRS::EPSG_4979), nullptr, + PropertyMap().set(IdentifiedObject::NAME_KEY, "operationMethodName"), + std::vector<OperationParameterNNPtr>{OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName"))}, + std::vector<ParameterValueNNPtr>{ + ParameterValue::createFilename("foo.bin")}, + std::vector<PositionalAccuracyNNPtr>()); + + auto concat = ConcatenatedOperation::create( + PropertyMap() + .set(Identifier::CODESPACE_KEY, "codeSpace") + .set(Identifier::CODE_KEY, "code") + .set(IdentifiedObject::NAME_KEY, "name") + .set(IdentifiedObject::REMARKS_KEY, "my remarks"), + std::vector<CoordinateOperationNNPtr>{transf_1, transf_2}, + std::vector<PositionalAccuracyNNPtr>{ + PositionalAccuracy::create("0.1")}); + + std::string src_wkt; + { + auto formatter = + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018); + formatter->setOutputId(false); + src_wkt = GeographicCRS::EPSG_4326->exportToWKT(formatter.get()); + } + + std::string dst_wkt; + { + auto formatter = + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018); + formatter->setOutputId(false); + dst_wkt = GeographicCRS::EPSG_4979->exportToWKT(formatter.get()); + } + + std::string step1_wkt; + { + auto formatter = + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018); + formatter->setOutputId(false); + step1_wkt = transf_1->exportToWKT(formatter.get()); + } + + std::string step2_wkt; + { + auto formatter = + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018); + formatter->setOutputId(false); + step2_wkt = transf_2->exportToWKT(formatter.get()); + } + + auto expected = "CONCATENATEDOPERATION[\"name\",\n" + " SOURCECRS[" + + src_wkt + "],\n" + " TARGETCRS[" + + dst_wkt + "],\n" + " STEP[" + + step1_wkt + "],\n" + " STEP[" + + step2_wkt + "],\n" + " ID[\"codeSpace\",\"code\"],\n" + " REMARK[\"my remarks\"]]"; + + EXPECT_EQ(replaceAll(replaceAll(concat->exportToWKT( + WKTFormatter::create( + WKTFormatter::Convention::WKT2_2018) + .get()), + " ", ""), + "\n", ""), + replaceAll(replaceAll(expected, " ", ""), "\n", "")); + + EXPECT_THROW(concat->exportToWKT(WKTFormatter::create().get()), + FormattingException); + + EXPECT_THROW(ConcatenatedOperation::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "name"), + std::vector<CoordinateOperationNNPtr>{transf_1, transf_1}, + std::vector<PositionalAccuracyNNPtr>()), + InvalidOperation); + + auto inv = concat->inverse(); + EXPECT_EQ(inv->nameStr(), "Inverse of name"); + EXPECT_EQ(inv->sourceCRS()->nameStr(), concat->targetCRS()->nameStr()); + EXPECT_EQ(inv->targetCRS()->nameStr(), concat->sourceCRS()->nameStr()); + auto inv_as_concat = nn_dynamic_pointer_cast<ConcatenatedOperation>(inv); + ASSERT_TRUE(inv_as_concat != nullptr); + + ASSERT_EQ(inv_as_concat->operations().size(), 2); + EXPECT_EQ(inv_as_concat->operations()[0]->nameStr(), + "Inverse of transformationName"); + EXPECT_EQ(inv_as_concat->operations()[1]->nameStr(), + "Inverse of transformationName"); + + EXPECT_TRUE(concat->isEquivalentTo(concat.get())); + EXPECT_FALSE(concat->isEquivalentTo(createUnrelatedObject().get())); + EXPECT_FALSE( + ConcatenatedOperation::create(PropertyMap(), + std::vector<CoordinateOperationNNPtr>{ + transf_1, transf_1->inverse()}, + std::vector<PositionalAccuracyNNPtr>()) + ->isEquivalentTo(ConcatenatedOperation::create( + PropertyMap(), + std::vector<CoordinateOperationNNPtr>{ + transf_1->inverse(), transf_1}, + std::vector<PositionalAccuracyNNPtr>()) + .get())); + EXPECT_FALSE( + ConcatenatedOperation::create(PropertyMap(), + std::vector<CoordinateOperationNNPtr>{ + transf_1, transf_1->inverse()}, + std::vector<PositionalAccuracyNNPtr>()) + ->isEquivalentTo(ConcatenatedOperation::create( + PropertyMap(), + std::vector<CoordinateOperationNNPtr>{ + transf_1, transf_1->inverse(), transf_1}, + std::vector<PositionalAccuracyNNPtr>()) + .get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_createGeocentricTranslations) { + + auto transf = Transformation::createGeocentricTranslations( + PropertyMap(), GeographicCRS::EPSG_4269, GeographicCRS::EPSG_4326, 1.0, + 2.0, 3.0, std::vector<PositionalAccuracyNNPtr>()); + + auto params = transf->getTOWGS84Parameters(); + auto expected = std::vector<double>{1.0, 2.0, 3.0, 0.0, 0.0, 0.0, 0.0}; + EXPECT_EQ(params, expected); + + auto inv_transf = transf->inverse(); + auto inv_transf_as_transf = + nn_dynamic_pointer_cast<Transformation>(inv_transf); + ASSERT_TRUE(inv_transf_as_transf != nullptr); + + EXPECT_EQ(transf->sourceCRS()->nameStr(), + inv_transf_as_transf->targetCRS()->nameStr()); + EXPECT_EQ(transf->targetCRS()->nameStr(), + inv_transf_as_transf->sourceCRS()->nameStr()); + auto expected_inv = + std::vector<double>{-1.0, -2.0, -3.0, 0.0, 0.0, 0.0, 0.0}; + EXPECT_EQ(inv_transf_as_transf->getTOWGS84Parameters(), expected_inv); + + EXPECT_EQ(transf->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart " + "+ellps=GRS80 +step +proj=helmert +x=1 +y=2 +z=3 +step +inv " + "+proj=cart +ellps=WGS84 +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +static GeodeticCRSNNPtr createGeocentricDatumWGS84() { + PropertyMap propertiesCRS; + propertiesCRS.set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 4328) + .set(IdentifiedObject::NAME_KEY, "WGS 84"); + return GeodeticCRS::create( + propertiesCRS, GeodeticReferenceFrame::EPSG_6326, + CartesianCS::createGeocentric(UnitOfMeasure::METRE)); +} + +// --------------------------------------------------------------------------- + +static GeodeticCRSNNPtr createGeocentricKM() { + PropertyMap propertiesCRS; + propertiesCRS.set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 4328) + .set(IdentifiedObject::NAME_KEY, "WGS 84"); + return GeodeticCRS::create( + propertiesCRS, GeodeticReferenceFrame::EPSG_6326, + CartesianCS::createGeocentric( + UnitOfMeasure("kilometre", 1000.0, UnitOfMeasure::Type::LINEAR))); +} + +// --------------------------------------------------------------------------- + +TEST(operation, + transformation_createGeocentricTranslations_between_geocentricCRS) { + + auto transf1 = Transformation::createGeocentricTranslations( + PropertyMap(), createGeocentricDatumWGS84(), createGeocentricKM(), 1.0, + 2.0, 3.0, std::vector<PositionalAccuracyNNPtr>()); + + EXPECT_EQ(transf1->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=helmert +x=1 +y=2 +z=3 +step " + "+proj=unitconvert +xy_in=m +z_in=m +xy_out=km +z_out=km"); + + auto transf2 = Transformation::createGeocentricTranslations( + PropertyMap(), createGeocentricKM(), createGeocentricDatumWGS84(), 1.0, + 2.0, 3.0, std::vector<PositionalAccuracyNNPtr>()); + + EXPECT_EQ(transf2->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=unitconvert +xy_in=km +z_in=km " + "+xy_out=m +z_out=m +step +proj=helmert +x=1 +y=2 +z=3"); + + auto transf3 = Transformation::createGeocentricTranslations( + PropertyMap(), createGeocentricKM(), createGeocentricKM(), 1.0, 2.0, + 3.0, std::vector<PositionalAccuracyNNPtr>()); + + EXPECT_EQ(transf3->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=unitconvert +xy_in=km +z_in=km " + "+xy_out=m +z_out=m +step +proj=helmert +x=1 +y=2 +z=3 +step " + "+proj=unitconvert +xy_in=m +z_in=m +xy_out=km +z_out=km"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_createGeocentricTranslations_null) { + + auto transf = Transformation::createGeocentricTranslations( + PropertyMap(), createGeocentricDatumWGS84(), + createGeocentricDatumWGS84(), 0.0, 0.0, 0.0, + std::vector<PositionalAccuracyNNPtr>()); + + EXPECT_EQ(transf->inverse()->exportToPROJString( + PROJStringFormatter::create().get()), + ""); +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_createGeocentricTranslations_neg_zero) { + + auto transf = Transformation::createGeocentricTranslations( + PropertyMap(), createGeocentricDatumWGS84(), + createGeocentricDatumWGS84(), 1.0, -0.0, 0.0, + std::vector<PositionalAccuracyNNPtr>()); + + EXPECT_EQ(transf->inverse()->exportToPROJString( + PROJStringFormatter::create().get()), + "+proj=helmert +x=-1 +y=0 +z=0"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_createPositionVector) { + + auto transf = Transformation::createPositionVector( + PropertyMap(), GeographicCRS::EPSG_4269, GeographicCRS::EPSG_4326, 1.0, + 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, std::vector<PositionalAccuracyNNPtr>{ + PositionalAccuracy::create("100")}); + ASSERT_EQ(transf->coordinateOperationAccuracies().size(), 1); + + auto expected = std::vector<double>{1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}; + EXPECT_EQ(transf->getTOWGS84Parameters(), expected); + + EXPECT_EQ(transf->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart " + "+ellps=GRS80 +step +proj=helmert +x=1 +y=2 +z=3 +rx=4 +ry=5 " + "+rz=6 +s=7 +convention=position_vector +step +inv +proj=cart " + "+ellps=WGS84 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap " + "+order=2,1"); + + auto inv_transf = transf->inverse(); + ASSERT_EQ(inv_transf->coordinateOperationAccuracies().size(), 1); + + EXPECT_EQ(transf->sourceCRS()->nameStr(), + inv_transf->targetCRS()->nameStr()); + EXPECT_EQ(transf->targetCRS()->nameStr(), + inv_transf->sourceCRS()->nameStr()); + +#ifdef USE_APPROXIMATE_HELMERT_INVERSE + auto inv_transf_as_transf = + nn_dynamic_pointer_cast<Transformation>(inv_transf); + ASSERT_TRUE(inv_transf_as_transf != nullptr); +#else + EXPECT_EQ( + inv_transf->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart " + "+ellps=WGS84 +step +inv +proj=helmert +x=1 +y=2 +z=3 +rx=4 " + "+ry=5 +rz=6 +s=7 +convention=position_vector +step +inv " + "+proj=cart +ellps=GRS80 +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); + + // In WKT, use approximate formula + auto wkt = inv_transf->exportToWKT(WKTFormatter::create().get()); + EXPECT_TRUE( + wkt.find("Transformation from WGS 84 to NAD83 (approx. inversion)") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("Position Vector transformation (geog2D domain)") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("ID[\"EPSG\",9606]]") != std::string::npos) << wkt; + EXPECT_TRUE(wkt.find("\"X-axis translation\",-1") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Y-axis translation\",-2") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Z-axis translation\",-3") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"X-axis rotation\",-4") != std::string::npos) << wkt; + EXPECT_TRUE(wkt.find("\"Y-axis rotation\",-5") != std::string::npos) << wkt; + EXPECT_TRUE(wkt.find("\"Z-axis rotation\",-6") != std::string::npos) << wkt; + EXPECT_TRUE(wkt.find("\"Scale difference\",-7") != std::string::npos) + << wkt; +#endif +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_createCoordinateFrameRotation) { + + auto transf = Transformation::createCoordinateFrameRotation( + PropertyMap(), GeographicCRS::EPSG_4269, GeographicCRS::EPSG_4326, 1.0, + 2.0, 3.0, -4.0, -5.0, -6.0, 7.0, + std::vector<PositionalAccuracyNNPtr>()); + + auto params = transf->getTOWGS84Parameters(); + auto expected = std::vector<double>{1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}; + EXPECT_EQ(params, expected); + + EXPECT_EQ(transf->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart " + "+ellps=GRS80 +step +proj=helmert +x=1 +y=2 +z=3 +rx=-4 +ry=-5 " + "+rz=-6 +s=7 +convention=coordinate_frame +step +inv +proj=cart " + "+ellps=WGS84 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap " + "+order=2,1"); + + auto inv_transf = transf->inverse(); + ASSERT_EQ(inv_transf->coordinateOperationAccuracies().size(), 0); + + EXPECT_EQ(transf->sourceCRS()->nameStr(), + inv_transf->targetCRS()->nameStr()); + EXPECT_EQ(transf->targetCRS()->nameStr(), + inv_transf->sourceCRS()->nameStr()); + +#ifdef USE_APPROXIMATE_HELMERT_INVERSE + auto inv_transf_as_transf = + nn_dynamic_pointer_cast<Transformation>(inv_transf); + ASSERT_TRUE(inv_transf_as_transf != nullptr); +#else + EXPECT_EQ( + inv_transf->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart " + "+ellps=WGS84 +step +inv +proj=helmert +x=1 +y=2 +z=3 +rx=-4 " + "+ry=-5 +rz=-6 +s=7 +convention=coordinate_frame +step +inv " + "+proj=cart +ellps=GRS80 +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); + + // In WKT, use approximate formula + auto wkt = inv_transf->exportToWKT(WKTFormatter::create().get()); + EXPECT_TRUE( + wkt.find("Transformation from WGS 84 to NAD83 (approx. inversion)") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("Coordinate Frame rotation (geog2D domain)") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("ID[\"EPSG\",9607]]") != std::string::npos) << wkt; + EXPECT_TRUE(wkt.find("\"X-axis translation\",-1") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Y-axis translation\",-2") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Z-axis translation\",-3") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"X-axis rotation\",4") != std::string::npos) << wkt; + EXPECT_TRUE(wkt.find("\"Y-axis rotation\",5") != std::string::npos) << wkt; + EXPECT_TRUE(wkt.find("\"Z-axis rotation\",6") != std::string::npos) << wkt; + EXPECT_TRUE(wkt.find("\"Scale difference\",-7") != std::string::npos) + << wkt; +#endif +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_createTimeDependentPositionVector) { + + auto transf = Transformation::createTimeDependentPositionVector( + PropertyMap(), GeographicCRS::EPSG_4269, GeographicCRS::EPSG_4326, 1.0, + 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 2018.5, + std::vector<PositionalAccuracyNNPtr>()); + + auto inv_transf = transf->inverse(); + + EXPECT_EQ(transf->sourceCRS()->nameStr(), + inv_transf->targetCRS()->nameStr()); + EXPECT_EQ(transf->targetCRS()->nameStr(), + inv_transf->sourceCRS()->nameStr()); + + auto projString = + inv_transf->exportToPROJString(PROJStringFormatter::create().get()); + EXPECT_TRUE(projString.find("+proj=helmert +x=1 +y=2 +z=3 +rx=4 +ry=5 " + "+rz=6 +s=7 +dx=0.1 +dy=0.2 +dz=0.3 +drx=0.4 " + "+dry=0.5 +drz=0.6 +ds=0.7 +t_epoch=2018.5 " + "+convention=position_vector") != + std::string::npos) + << projString; + + // In WKT, use approximate formula + auto wkt = inv_transf->exportToWKT(WKTFormatter::create().get()); + EXPECT_TRUE( + wkt.find("Transformation from WGS 84 to NAD83 (approx. inversion)") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("Time-dependent Position Vector tfm (geog2D)") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("ID[\"EPSG\",1054]]") != std::string::npos) << wkt; + EXPECT_TRUE(wkt.find("\"X-axis translation\",-1") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Y-axis translation\",-2") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Z-axis translation\",-3") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"X-axis rotation\",-4") != std::string::npos) << wkt; + EXPECT_TRUE(wkt.find("\"Y-axis rotation\",-5") != std::string::npos) << wkt; + EXPECT_TRUE(wkt.find("\"Z-axis rotation\",-6") != std::string::npos) << wkt; + EXPECT_TRUE(wkt.find("\"Scale difference\",-7") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Rate of change of X-axis translation\",-0.1") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Rate of change of Y-axis translation\",-0.2") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Rate of change of Z-axis translation\",-0.3") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Rate of change of X-axis rotation\",-0.4") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Rate of change of Y-axis rotation\",-0.5") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Rate of change of Z-axis rotation\",-0.6") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Rate of change of Scale difference\",-0.7") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Parameter reference epoch\",2018.5") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_createTimeDependentCoordinateFrameRotation) { + + auto transf = Transformation::createTimeDependentCoordinateFrameRotation( + PropertyMap(), GeographicCRS::EPSG_4269, GeographicCRS::EPSG_4326, 1.0, + 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 2018.5, + std::vector<PositionalAccuracyNNPtr>()); + + auto inv_transf = transf->inverse(); + + EXPECT_EQ(transf->sourceCRS()->nameStr(), + inv_transf->targetCRS()->nameStr()); + EXPECT_EQ(transf->targetCRS()->nameStr(), + inv_transf->sourceCRS()->nameStr()); + + auto projString = + inv_transf->exportToPROJString(PROJStringFormatter::create().get()); + EXPECT_TRUE(projString.find("+proj=helmert +x=1 +y=2 +z=3 +rx=4 +ry=5 " + "+rz=6 +s=7 +dx=0.1 +dy=0.2 +dz=0.3 +drx=0.4 " + "+dry=0.5 +drz=0.6 +ds=0.7 +t_epoch=2018.5 " + "+convention=coordinate_frame") != + std::string::npos) + << projString; + + // In WKT, use approximate formula + auto wkt = inv_transf->exportToWKT(WKTFormatter::create().get()); + EXPECT_TRUE( + wkt.find("Transformation from WGS 84 to NAD83 (approx. inversion)") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("Time-dependent Coordinate Frame rotation (geog2D)") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("ID[\"EPSG\",1057]]") != std::string::npos) << wkt; + EXPECT_TRUE(wkt.find("\"X-axis translation\",-1") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Y-axis translation\",-2") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Z-axis translation\",-3") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"X-axis rotation\",-4") != std::string::npos) << wkt; + EXPECT_TRUE(wkt.find("\"Y-axis rotation\",-5") != std::string::npos) << wkt; + EXPECT_TRUE(wkt.find("\"Z-axis rotation\",-6") != std::string::npos) << wkt; + EXPECT_TRUE(wkt.find("\"Scale difference\",-7") != std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Rate of change of X-axis translation\",-0.1") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Rate of change of Y-axis translation\",-0.2") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Rate of change of Z-axis translation\",-0.3") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Rate of change of X-axis rotation\",-0.4") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Rate of change of Y-axis rotation\",-0.5") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Rate of change of Z-axis rotation\",-0.6") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Rate of change of Scale difference\",-0.7") != + std::string::npos) + << wkt; + EXPECT_TRUE(wkt.find("\"Parameter reference epoch\",2018.5") != + std::string::npos) + << wkt; +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_successive_helmert_noop) { + + auto transf_1 = Transformation::createPositionVector( + PropertyMap(), GeographicCRS::EPSG_4326, GeographicCRS::EPSG_4269, 1.0, + 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, std::vector<PositionalAccuracyNNPtr>()); + auto transf_2 = Transformation::createPositionVector( + PropertyMap(), GeographicCRS::EPSG_4269, GeographicCRS::EPSG_4326, -1.0, + -2.0, -3.0, -4.0, -5.0, -6.0, -7.0, + std::vector<PositionalAccuracyNNPtr>()); + + auto concat = ConcatenatedOperation::create( + PropertyMap(), + std::vector<CoordinateOperationNNPtr>{transf_1, transf_2}, + std::vector<PositionalAccuracyNNPtr>{}); + + EXPECT_EQ(concat->exportToPROJString(PROJStringFormatter::create().get()), + ""); +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_successive_helmert_non_trivial_1) { + + auto transf_1 = Transformation::createPositionVector( + PropertyMap(), GeographicCRS::EPSG_4326, GeographicCRS::EPSG_4269, 1.0, + 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, std::vector<PositionalAccuracyNNPtr>()); + auto transf_2 = Transformation::createPositionVector( + PropertyMap(), GeographicCRS::EPSG_4269, GeographicCRS::EPSG_4326, -1.0, + -2.0, -3.0, -4.0, -5.0, -6.0, 7.0, + std::vector<PositionalAccuracyNNPtr>()); + + auto concat = ConcatenatedOperation::create( + PropertyMap(), + std::vector<CoordinateOperationNNPtr>{transf_1, transf_2}, + std::vector<PositionalAccuracyNNPtr>{}); + + EXPECT_NE(concat->exportToPROJString(PROJStringFormatter::create().get()), + ""); +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_successive_helmert_non_trivial_2) { + + auto transf_1 = Transformation::createPositionVector( + PropertyMap(), GeographicCRS::EPSG_4326, GeographicCRS::EPSG_4269, 1.0, + 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, std::vector<PositionalAccuracyNNPtr>()); + auto transf_2 = Transformation::createCoordinateFrameRotation( + PropertyMap(), GeographicCRS::EPSG_4269, GeographicCRS::EPSG_4326, -1.0, + -2.0, -3.0, -4.0, -5.0, -6.0, -7.0, + std::vector<PositionalAccuracyNNPtr>()); + + auto concat = ConcatenatedOperation::create( + PropertyMap(), + std::vector<CoordinateOperationNNPtr>{transf_1, transf_2}, + std::vector<PositionalAccuracyNNPtr>{}); + + EXPECT_NE(concat->exportToPROJString(PROJStringFormatter::create().get()), + ""); +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_createMolodensky) { + + auto transf = Transformation::createMolodensky( + PropertyMap(), GeographicCRS::EPSG_4326, GeographicCRS::EPSG_4269, 1.0, + 2.0, 3.0, 4.0, 5.0, std::vector<PositionalAccuracyNNPtr>()); + + auto wkt = transf->exportToWKT(WKTFormatter::create().get()); + EXPECT_TRUE(replaceAll(replaceAll(wkt, " ", ""), "\n", "") + .find("METHOD[\"Molodensky\",ID[\"EPSG\",9604]]") != + std::string::npos) + << wkt; + + auto inv_transf = transf->inverse(); + auto inv_transf_as_transf = + nn_dynamic_pointer_cast<Transformation>(inv_transf); + ASSERT_TRUE(inv_transf_as_transf != nullptr); + + EXPECT_EQ(transf->sourceCRS()->nameStr(), + inv_transf_as_transf->targetCRS()->nameStr()); + EXPECT_EQ(transf->targetCRS()->nameStr(), + inv_transf_as_transf->sourceCRS()->nameStr()); + + auto projString = inv_transf_as_transf->exportToPROJString( + PROJStringFormatter::create().get()); + EXPECT_EQ(projString, "+proj=pipeline +step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=molodensky +ellps=GRS80 +dx=-1 +dy=-2 " + "+dz=-3 +da=-4 +df=-5 +step +proj=unitconvert " + "+xy_in=rad +xy_out=deg +step +proj=axisswap " + "+order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_createAbridgedMolodensky) { + + auto transf = Transformation::createAbridgedMolodensky( + PropertyMap(), GeographicCRS::EPSG_4326, GeographicCRS::EPSG_4269, 1.0, + 2.0, 3.0, 4.0, 5.0, std::vector<PositionalAccuracyNNPtr>()); + + auto wkt = transf->exportToWKT(WKTFormatter::create().get()); + EXPECT_TRUE(replaceAll(replaceAll(wkt, " ", ""), "\n", "") + .find(replaceAll( + "METHOD[\"Abridged Molodensky\",ID[\"EPSG\",9605]]", + " ", "")) != std::string::npos) + << wkt; + + auto inv_transf = transf->inverse(); + auto inv_transf_as_transf = + nn_dynamic_pointer_cast<Transformation>(inv_transf); + ASSERT_TRUE(inv_transf_as_transf != nullptr); + + EXPECT_EQ(transf->sourceCRS()->nameStr(), + inv_transf_as_transf->targetCRS()->nameStr()); + EXPECT_EQ(transf->targetCRS()->nameStr(), + inv_transf_as_transf->sourceCRS()->nameStr()); + + auto projString = inv_transf_as_transf->exportToPROJString( + PROJStringFormatter::create().get()); + EXPECT_EQ(projString, "+proj=pipeline +step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=molodensky +ellps=GRS80 +dx=-1 +dy=-2 " + "+dz=-3 +da=-4 +df=-5 +abridged +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step " + "+proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_inverse) { + + auto transf = Transformation::create( + PropertyMap() + .set(IdentifiedObject::NAME_KEY, "my transformation") + .set(Identifier::CODESPACE_KEY, "my codeSpace") + .set(Identifier::CODE_KEY, "my code"), + GeographicCRS::EPSG_4326, GeographicCRS::EPSG_4269, nullptr, + PropertyMap() + .set(IdentifiedObject::NAME_KEY, "my operation") + .set(Identifier::CODESPACE_KEY, "my codeSpace") + .set(Identifier::CODE_KEY, "my code"), + std::vector<OperationParameterNNPtr>{OperationParameter::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "paramName"))}, + std::vector<ParameterValueNNPtr>{ + ParameterValue::createFilename("foo.bin")}, + std::vector<PositionalAccuracyNNPtr>{ + PositionalAccuracy::create("0.1")}); + auto inv = transf->inverse(); + EXPECT_EQ(inv->inverse(), transf); + EXPECT_EQ( + inv->exportToWKT(WKTFormatter::create().get()), + "COORDINATEOPERATION[\"Inverse of my transformation\",\n" + " SOURCECRS[\n" + " GEODCRS[\"NAD83\",\n" + " DATUM[\"North American Datum 1983\",\n" + " ELLIPSOID[\"GRS 1980\",6378137,298.257222101,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]]],\n" + " TARGETCRS[\n" + " GEODCRS[\"WGS 84\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " CS[ellipsoidal,2],\n" + " AXIS[\"latitude\",north,\n" + " ORDER[1],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " AXIS[\"longitude\",east,\n" + " ORDER[2],\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]]],\n" + " METHOD[\"Inverse of my operation\",\n" + " ID[\"INVERSE(my codeSpace)\",\"my code\"]],\n" + " PARAMETERFILE[\"paramName\",\"foo.bin\"],\n" + " OPERATIONACCURACY[0.1],\n" + " ID[\"INVERSE(my codeSpace)\",\"my code\"]]"); + + EXPECT_THROW(inv->exportToPROJString(PROJStringFormatter::create().get()), + FormattingException); +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_createTOWGS84) { + + EXPECT_THROW(Transformation::createTOWGS84(GeographicCRS::EPSG_4326, + std::vector<double>()), + InvalidOperation); + + auto crsIn = CompoundCRS::create(PropertyMap(), std::vector<CRSNNPtr>{}); + EXPECT_THROW( + Transformation::createTOWGS84(crsIn, std::vector<double>(7, 0)), + InvalidOperation); +} + +// --------------------------------------------------------------------------- + +TEST(operation, utm_export) { + auto conv = Conversion::createUTM(PropertyMap(), 1, false); + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=utm +zone=1 +south"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"UTM zone 1S\",\n" + " METHOD[\"Transverse Mercator\",\n" + " ID[\"EPSG\",9807]],\n" + " PARAMETER[\"Latitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",-177,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",0.9996,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",500000,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",10000000,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]],\n" + " ID[\"EPSG\",17001]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Transverse_Mercator\"],\n" + "PARAMETER[\"latitude_of_origin\",0],\n" + "PARAMETER[\"central_meridian\",-177],\n" + "PARAMETER[\"scale_factor\",0.9996],\n" + "PARAMETER[\"false_easting\",500000],\n" + "PARAMETER[\"false_northing\",10000000]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, tmerc_export) { + auto conv = Conversion::createTransverseMercator( + PropertyMap(), Angle(1), Angle(2), Scale(3), Length(4), Length(5)); + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=tmerc +lat_0=1 +lon_0=2 +k_0=3 +x_0=4 +y_0=5"); + + { + auto formatter = PROJStringFormatter::create(); + formatter->setUseETMercForTMerc(true); + EXPECT_EQ(conv->exportToPROJString(formatter.get()), + "+proj=etmerc +lat_0=1 +lon_0=2 +k_0=3 +x_0=4 +y_0=5"); + } + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Transverse Mercator\",\n" + " METHOD[\"Transverse Mercator\",\n" + " ID[\"EPSG\",9807]],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",3,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Transverse_Mercator\"],\n" + "PARAMETER[\"latitude_of_origin\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"scale_factor\",3],\n" + "PARAMETER[\"false_easting\",4],\n" + "PARAMETER[\"false_northing\",5]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, gstmerc_export) { + auto conv = Conversion::createGaussSchreiberTransverseMercator( + PropertyMap(), Angle(1), Angle(2), Scale(3), Length(4), Length(5)); + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=gstmerc +lat_0=1 +lon_0=2 +k_0=3 +x_0=4 +y_0=5"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Gauss Schreiber Transverse Mercator\",\n" + " METHOD[\"Gauss Schreiber Transverse Mercator\"],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",3,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Gauss_Schreiber_Transverse_Mercator\"],\n" + "PARAMETER[\"latitude_of_origin\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"scale_factor\",3],\n" + "PARAMETER[\"false_easting\",4],\n" + "PARAMETER[\"false_northing\",5]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, tmerc_south_oriented_export) { + auto conv = Conversion::createTransverseMercatorSouthOriented( + PropertyMap(), Angle(1), Angle(2), Scale(3), Length(4), Length(5)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=tmerc +axis=wsu +lat_0=1 +lon_0=2 +k_0=3 +x_0=4 +y_0=5"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Transverse Mercator (South Orientated)\",\n" + " METHOD[\"Transverse Mercator (South Orientated)\",\n" + " ID[\"EPSG\",9808]],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",3,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Transverse_Mercator_South_Orientated\"],\n" + "PARAMETER[\"latitude_of_origin\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"scale_factor\",3],\n" + "PARAMETER[\"false_easting\",4],\n" + "PARAMETER[\"false_northing\",5]"); + + auto wkt = "PROJCRS[\"Hartebeesthoek94 / Lo29\"," + " BASEGEODCRS[\"Hartebeesthoek94\"," + " DATUM[\"Hartebeesthoek94\"," + " ELLIPSOID[\"WGS " + "84\",6378137,298.257223563,LENGTHUNIT[\"metre\",1.0]]]]," + " CONVERSION[\"South African Survey Grid zone 29\"," + " METHOD[\"Transverse Mercator (South " + "Orientated)\",ID[\"EPSG\",9808]]," + " PARAMETER[\"Latitude of natural " + "origin\",0,ANGLEUNIT[\"degree\",0.01745329252]]," + " PARAMETER[\"Longitude of natural " + "origin\",29,ANGLEUNIT[\"degree\",0.01745329252]]," + " PARAMETER[\"Scale factor at natural " + "origin\",1,SCALEUNIT[\"unity\",1.0]]," + " PARAMETER[\"False easting\",0,LENGTHUNIT[\"metre\",1.0]]," + " PARAMETER[\"False northing\",0,LENGTHUNIT[\"metre\",1.0]]]," + " CS[cartesian,2]," + " AXIS[\"westing (Y)\",west,ORDER[1]]," + " AXIS[\"southing (X)\",south,ORDER[2]]," + " LENGTHUNIT[\"metre\",1.0]," + " ID[\"EPSG\",2053]]"; + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=tmerc " + "+axis=wsu +lat_0=0 +lon_0=29 +k_0=1 +x_0=0 +y_0=0 +ellps=WGS84"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, tped_export) { + auto conv = Conversion::createTwoPointEquidistant( + PropertyMap(), Angle(1), Angle(2), Angle(3), Angle(4), Length(5), + Length(6)); + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=tpeqd +lat_1=1 +lon_1=2 +lat_2=3 +lon_2=4 +x_0=5 +y_0=6"); + + auto formatter = WKTFormatter::create(); + formatter->simulCurNodeHasId(); + EXPECT_EQ(conv->exportToWKT(formatter.get()), + "CONVERSION[\"Two Point Equidistant\",\n" + " METHOD[\"Two Point Equidistant\"],\n" + " PARAMETER[\"Latitude of 1st point\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " PARAMETER[\"Longitude of 1st point\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " PARAMETER[\"Latitude of 2nd point\",3,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " PARAMETER[\"Longitude of 2nd point\",4,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " PARAMETER[\"False easting\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",6,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Two_Point_Equidistant\"],\n" + "PARAMETER[\"Latitude_Of_1st_Point\",1],\n" + "PARAMETER[\"Longitude_Of_1st_Point\",2],\n" + "PARAMETER[\"Latitude_Of_2nd_Point\",3],\n" + "PARAMETER[\"Longitude_Of_2nd_Point\",4],\n" + "PARAMETER[\"false_easting\",5],\n" + "PARAMETER[\"false_northing\",6]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, tmg_export) { + auto conv = Conversion::createTunisiaMappingGrid( + PropertyMap(), Angle(1), Angle(2), Length(3), Length(4)); + EXPECT_THROW(conv->exportToPROJString(PROJStringFormatter::create().get()), + FormattingException); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Tunisia Mapping Grid\",\n" + " METHOD[\"Tunisia Mapping Grid\",\n" + " ID[\"EPSG\",9816]],\n" + " PARAMETER[\"Latitude of false origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8821]],\n" + " PARAMETER[\"Longitude of false origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8822]],\n" + " PARAMETER[\"Easting at false origin\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8826]],\n" + " PARAMETER[\"Northing at false origin\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8827]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Tunisia_Mapping_Grid\"],\n" + "PARAMETER[\"latitude_of_origin\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"false_easting\",3],\n" + "PARAMETER[\"false_northing\",4]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, aea_export) { + auto conv = Conversion::createAlbersEqualArea(PropertyMap(), Angle(1), + Angle(2), Angle(3), Angle(4), + Length(5), Length(6)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=aea +lat_0=1 +lon_0=2 +lat_1=3 +lat_2=4 +x_0=5 +y_0=6"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Albers Equal Area\",\n" + " METHOD[\"Albers Equal Area\",\n" + " ID[\"EPSG\",9822]],\n" + " PARAMETER[\"Latitude of false origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8821]],\n" + " PARAMETER[\"Longitude of false origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8822]],\n" + " PARAMETER[\"Latitude of 1st standard parallel\",3,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8823]],\n" + " PARAMETER[\"Latitude of 2nd standard parallel\",4,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8824]],\n" + " PARAMETER[\"Easting at false origin\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8826]],\n" + " PARAMETER[\"Northing at false origin\",6,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8827]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Albers_Conic_Equal_Area\"],\n" + "PARAMETER[\"latitude_of_center\",1],\n" + "PARAMETER[\"longitude_of_center\",2],\n" + "PARAMETER[\"standard_parallel_1\",3],\n" + "PARAMETER[\"standard_parallel_2\",4],\n" + "PARAMETER[\"false_easting\",5],\n" + "PARAMETER[\"false_northing\",6]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, azimuthal_equidistant_export) { + auto conv = Conversion::createAzimuthalEquidistant( + PropertyMap(), Angle(1), Angle(2), Length(3), Length(4)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=aeqd +lat_0=1 +lon_0=2 +x_0=3 +y_0=4"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Modified Azimuthal Equidistant\",\n" + " METHOD[\"Modified Azimuthal Equidistant\",\n" + " ID[\"EPSG\",9832]],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Azimuthal_Equidistant\"],\n" + "PARAMETER[\"latitude_of_center\",1],\n" + "PARAMETER[\"longitude_of_center\",2],\n" + "PARAMETER[\"false_easting\",3],\n" + "PARAMETER[\"false_northing\",4]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, guam_projection_export) { + auto conv = Conversion::createGuamProjection( + PropertyMap(), Angle(1), Angle(2), Length(3), Length(4)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=aeqd +guam +lat_0=1 +lon_0=2 +x_0=3 +y_0=4"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Guam Projection\",\n" + " METHOD[\"Guam Projection\",\n" + " ID[\"EPSG\",9831]],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_THROW( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + FormattingException); +} + +// --------------------------------------------------------------------------- + +TEST(operation, bonne_export) { + auto conv = Conversion::createBonne(PropertyMap(), Angle(1), Angle(2), + Length(3), Length(4)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=bonne +lat_1=1 +lon_0=2 +x_0=3 +y_0=4"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Bonne\",\n" + " METHOD[\"Bonne\",\n" + " ID[\"EPSG\",9827]],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Bonne\"],\n" + "PARAMETER[\"standard_parallel_1\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"false_easting\",3],\n" + "PARAMETER[\"false_northing\",4]"); + + auto obj = WKTParser().createFromWKT( + "PROJCS[\"unnamed\"," + "GEOGCS[\"unnamed ellipse\"," + " DATUM[\"unknown\"," + " SPHEROID[\"unnamed\",6378137,298.257223563]]," + " PRIMEM[\"Greenwich\",0]," + " UNIT[\"degree\",0.0174532925199433]]," + "PROJECTION[\"Bonne\"]," + "PARAMETER[\"standard_parallel_1\",1]," + "PARAMETER[\"central_meridian\",2]," + "PARAMETER[\"false_easting\",3]," + "PARAMETER[\"false_northing\",4]," + "UNIT[\"metre\",1]]"); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=bonne +lat_1=1 +lon_0=2 +x_0=3 +y_0=4 +ellps=WGS84"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lambert_cylindrical_equal_area_spherical_export) { + auto conv = Conversion::createLambertCylindricalEqualAreaSpherical( + PropertyMap(), Angle(1), Angle(2), Length(3), Length(4)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=cea +lat_ts=1 +lon_0=2 +x_0=3 +y_0=4"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Lambert Cylindrical Equal Area (Spherical)\",\n" + " METHOD[\"Lambert Cylindrical Equal Area (Spherical)\",\n" + " ID[\"EPSG\",9834]],\n" + " PARAMETER[\"Latitude of 1st standard parallel\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8823]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Cylindrical_Equal_Area\"],\n" + "PARAMETER[\"standard_parallel_1\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"false_easting\",3],\n" + "PARAMETER[\"false_northing\",4]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lambert_cylindrical_equal_area_export) { + auto conv = Conversion::createLambertCylindricalEqualArea( + PropertyMap(), Angle(1), Angle(2), Length(3), Length(4)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=cea +lat_ts=1 +lon_0=2 +x_0=3 +y_0=4"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Lambert Cylindrical Equal Area\",\n" + " METHOD[\"Lambert Cylindrical Equal Area\",\n" + " ID[\"EPSG\",9835]],\n" + " PARAMETER[\"Latitude of 1st standard parallel\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8823]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Cylindrical_Equal_Area\"],\n" + "PARAMETER[\"standard_parallel_1\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"false_easting\",3],\n" + "PARAMETER[\"false_northing\",4]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lcc1sp_export) { + auto conv = Conversion::createLambertConicConformal_1SP( + PropertyMap(), Angle(1), Angle(2), Scale(3), Length(4), Length(5)); + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=lcc +lat_1=1 +lat_0=1 +lon_0=2 +k_0=3 +x_0=4 +y_0=5"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Lambert Conic Conformal (1SP)\",\n" + " METHOD[\"Lambert Conic Conformal (1SP)\",\n" + " ID[\"EPSG\",9801]],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",3,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Lambert_Conformal_Conic_1SP\"],\n" + "PARAMETER[\"latitude_of_origin\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"scale_factor\",3],\n" + "PARAMETER[\"false_easting\",4],\n" + "PARAMETER[\"false_northing\",5]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lcc2sp_export) { + auto conv = Conversion::createLambertConicConformal_2SP( + PropertyMap(), Angle(1), Angle(2), Angle(3), Angle(4), Length(5), + Length(6)); + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=lcc +lat_0=1 +lon_0=2 +lat_1=3 +lat_2=4 +x_0=5 +y_0=6"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Lambert Conic Conformal (2SP)\",\n" + " METHOD[\"Lambert Conic Conformal (2SP)\",\n" + " ID[\"EPSG\",9802]],\n" + " PARAMETER[\"Latitude of false origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8821]],\n" + " PARAMETER[\"Longitude of false origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8822]],\n" + " PARAMETER[\"Latitude of 1st standard parallel\",3,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8823]],\n" + " PARAMETER[\"Latitude of 2nd standard parallel\",4,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8824]],\n" + " PARAMETER[\"Easting at false origin\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8826]],\n" + " PARAMETER[\"Northing at false origin\",6,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8827]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],\n" + "PARAMETER[\"latitude_of_origin\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"standard_parallel_1\",3],\n" + "PARAMETER[\"standard_parallel_2\",4],\n" + "PARAMETER[\"false_easting\",5],\n" + "PARAMETER[\"false_northing\",6]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lcc2sp_isEquivalentTo_parallels_switched) { + auto conv1 = Conversion::createLambertConicConformal_2SP( + PropertyMap(), Angle(1), Angle(2), Angle(3), Angle(4), Length(5), + Length(6)); + auto conv2 = Conversion::createLambertConicConformal_2SP( + PropertyMap(), Angle(1), Angle(2), Angle(4), Angle(3), Length(5), + Length(6)); + + EXPECT_TRUE( + conv1->isEquivalentTo(conv2.get(), IComparable::Criterion::EQUIVALENT)); + + auto conv3 = Conversion::createLambertConicConformal_2SP( + PropertyMap(), Angle(1), Angle(2), Angle(3), Angle(3), Length(5), + Length(6)); + + EXPECT_FALSE( + conv1->isEquivalentTo(conv3.get(), IComparable::Criterion::EQUIVALENT)); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lcc2sp_michigan_export) { + auto conv = Conversion::createLambertConicConformal_2SP_Michigan( + PropertyMap(), Angle(1), Angle(2), Angle(3), Angle(4), Length(5), + Length(6), Scale(7)); + EXPECT_EQ( + conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=lcc +lat_0=1 +lon_0=2 +lat_1=3 +lat_2=4 +x_0=5 +y_0=6 +k_0=7"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Lambert Conic Conformal (2SP Michigan)\",\n" + " METHOD[\"Lambert Conic Conformal (2SP Michigan)\",\n" + " ID[\"EPSG\",1051]],\n" + " PARAMETER[\"Latitude of false origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8821]],\n" + " PARAMETER[\"Longitude of false origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8822]],\n" + " PARAMETER[\"Latitude of 1st standard parallel\",3,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8823]],\n" + " PARAMETER[\"Latitude of 2nd standard parallel\",4,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8824]],\n" + " PARAMETER[\"Easting at false origin\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8826]],\n" + " PARAMETER[\"Northing at false origin\",6,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8827]],\n" + " PARAMETER[\"Ellipsoid scaling factor\",7,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",1038]]]"); + + EXPECT_THROW( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + FormattingException); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lcc2sp_belgium_export) { + auto conv = Conversion::createLambertConicConformal_2SP_Belgium( + PropertyMap(), Angle(1), Angle(2), Angle(3), Angle(4), Length(5), + Length(6)); + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=lcc +lat_0=1 +lon_0=2 +lat_1=3 +lat_2=4 +x_0=5 +y_0=6"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Lambert Conic Conformal (2SP Belgium)\",\n" + " METHOD[\"Lambert Conic Conformal (2SP Belgium)\",\n" + " ID[\"EPSG\",9803]],\n" + " PARAMETER[\"Latitude of false origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8821]],\n" + " PARAMETER[\"Longitude of false origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8822]],\n" + " PARAMETER[\"Latitude of 1st standard parallel\",3,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8823]],\n" + " PARAMETER[\"Latitude of 2nd standard parallel\",4,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8824]],\n" + " PARAMETER[\"Easting at false origin\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8826]],\n" + " PARAMETER[\"Northing at false origin\",6,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8827]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Lambert_Conformal_Conic_2SP_Belgium\"],\n" + "PARAMETER[\"latitude_of_origin\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"standard_parallel_1\",3],\n" + "PARAMETER[\"standard_parallel_2\",4],\n" + "PARAMETER[\"false_easting\",5],\n" + "PARAMETER[\"false_northing\",6]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, cassini_soldner_export) { + auto conv = Conversion::createCassiniSoldner( + PropertyMap(), Angle(1), Angle(2), Length(4), Length(5)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=cass +lat_0=1 +lon_0=2 +x_0=4 +y_0=5"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Cassini-Soldner\",\n" + " METHOD[\"Cassini-Soldner\",\n" + " ID[\"EPSG\",9806]],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Cassini_Soldner\"],\n" + "PARAMETER[\"latitude_of_origin\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"false_easting\",4],\n" + "PARAMETER[\"false_northing\",5]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, equidistant_conic_export) { + auto conv = Conversion::createEquidistantConic(PropertyMap(), Angle(1), + Angle(2), Angle(3), Angle(4), + Length(5), Length(6)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=eqdc +lat_0=1 +lon_0=2 +lat_1=3 +lat_2=4 +x_0=5 +y_0=6"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Equidistant Conic\",\n" + " METHOD[\"Equidistant Conic\"],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Latitude of 1st standard parallel\",3,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8823]],\n" + " PARAMETER[\"Latitude of 2nd standard parallel\",4,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8824]],\n" + " PARAMETER[\"False easting\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",6,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Equidistant_Conic\"],\n" + "PARAMETER[\"latitude_of_center\",1],\n" + "PARAMETER[\"longitude_of_center\",2],\n" + "PARAMETER[\"standard_parallel_1\",3],\n" + "PARAMETER[\"standard_parallel_2\",4],\n" + "PARAMETER[\"false_easting\",5],\n" + "PARAMETER[\"false_northing\",6]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, eckert_export) { + + std::vector<std::string> numbers{"", "1", "2", "3", "4", "5", "6"}; + std::vector<std::string> latinNumbers{"", "I", "II", "III", + "IV", "V", "VI"}; + + for (int i = 1; i <= 6; i++) { + auto conv = + (i == 1) + ? Conversion::createEckertI(PropertyMap(), Angle(1), Length(2), + Length(3)) + : (i == 2) + ? Conversion::createEckertII(PropertyMap(), Angle(1), + Length(2), Length(3)) + : (i == 3) + ? Conversion::createEckertIII( + PropertyMap(), Angle(1), Length(2), Length(3)) + : (i == 4) ? Conversion::createEckertIV( + PropertyMap(), Angle(1), Length(2), + Length(3)) + : (i == 5) ? Conversion::createEckertV( + PropertyMap(), Angle(1), + Length(2), Length(3)) + : + + Conversion::createEckertVI( + PropertyMap(), Angle(1), + Length(2), Length(3)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=eck" + numbers[i] + " +lon_0=1 +x_0=2 +y_0=3"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Eckert " + latinNumbers[i] + + "\",\n" + " METHOD[\"Eckert " + + latinNumbers[i] + + "\"],\n" + " PARAMETER[\"Longitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",2,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ(conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL) + .get()), + "PROJECTION[\"Eckert_" + latinNumbers[i] + + "\"],\n" + "PARAMETER[\"central_meridian\",1],\n" + "PARAMETER[\"false_easting\",2],\n" + "PARAMETER[\"false_northing\",3]"); + } +} + +// --------------------------------------------------------------------------- + +TEST(operation, createEquidistantCylindrical) { + auto conv = Conversion::createEquidistantCylindrical( + PropertyMap(), Angle(1), Angle(2), Length(3), Length(4)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=eqc +lat_ts=1 +lon_0=2 +x_0=3 +y_0=4"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Equidistant Cylindrical\",\n" + " METHOD[\"Equidistant Cylindrical\",\n" + " ID[\"EPSG\",1028]],\n" + " PARAMETER[\"Latitude of 1st standard parallel\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8823]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Equirectangular\"],\n" + "PARAMETER[\"standard_parallel_1\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"false_easting\",3],\n" + "PARAMETER[\"false_northing\",4]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, createEquidistantCylindricalSpherical) { + auto conv = Conversion::createEquidistantCylindricalSpherical( + PropertyMap(), Angle(1), Angle(2), Length(3), Length(4)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=eqc +lat_ts=1 +lon_0=2 +x_0=3 +y_0=4"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Equidistant Cylindrical (Spherical)\",\n" + " METHOD[\"Equidistant Cylindrical (Spherical)\",\n" + " ID[\"EPSG\",1029]],\n" + " PARAMETER[\"Latitude of 1st standard parallel\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8823]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Equirectangular\"],\n" + "PARAMETER[\"standard_parallel_1\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"false_easting\",3],\n" + "PARAMETER[\"false_northing\",4]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, gall_export) { + + auto conv = + Conversion::createGall(PropertyMap(), Angle(1), Length(2), Length(3)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=gall +lon_0=1 +x_0=2 +y_0=3"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Gall Stereographic\",\n" + " METHOD[\"Gall Stereographic\"],\n" + " PARAMETER[\"Longitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",2,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Gall_Stereographic\"],\n" + "PARAMETER[\"central_meridian\",1],\n" + "PARAMETER[\"false_easting\",2],\n" + "PARAMETER[\"false_northing\",3]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, goode_homolosine_export) { + + auto conv = Conversion::createGoodeHomolosine(PropertyMap(), Angle(1), + Length(2), Length(3)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=goode +lon_0=1 +x_0=2 +y_0=3"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Goode Homolosine\",\n" + " METHOD[\"Goode Homolosine\"],\n" + " PARAMETER[\"Longitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",2,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Goode_Homolosine\"],\n" + "PARAMETER[\"central_meridian\",1],\n" + "PARAMETER[\"false_easting\",2],\n" + "PARAMETER[\"false_northing\",3]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, interrupted_goode_homolosine_export) { + + auto conv = Conversion::createInterruptedGoodeHomolosine( + PropertyMap(), Angle(1), Length(2), Length(3)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=igh +lon_0=1 +x_0=2 +y_0=3"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Interrupted Goode Homolosine\",\n" + " METHOD[\"Interrupted Goode Homolosine\"],\n" + " PARAMETER[\"Longitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",2,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Interrupted_Goode_Homolosine\"],\n" + "PARAMETER[\"central_meridian\",1],\n" + "PARAMETER[\"false_easting\",2],\n" + "PARAMETER[\"false_northing\",3]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geostationary_satellite_sweep_x_export) { + + auto conv = Conversion::createGeostationarySatelliteSweepX( + PropertyMap(), Angle(1), Length(2), Length(3), Length(4)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=geos +sweep=x +lon_0=1 +h=2 +x_0=3 +y_0=4"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Geostationary Satellite (Sweep X)\",\n" + " METHOD[\"Geostationary Satellite (Sweep X)\"],\n" + " PARAMETER[\"Longitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Satellite Height\",2,\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " PARAMETER[\"False easting\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_THROW( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + FormattingException); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geostationary_satellite_sweep_y_export) { + + auto conv = Conversion::createGeostationarySatelliteSweepY( + PropertyMap(), Angle(1), Length(2), Length(3), Length(4)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=geos +lon_0=1 +h=2 +x_0=3 +y_0=4"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Geostationary Satellite (Sweep Y)\",\n" + " METHOD[\"Geostationary Satellite (Sweep Y)\"],\n" + " PARAMETER[\"Longitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Satellite Height\",2,\n" + " LENGTHUNIT[\"metre\",1,\n" + " ID[\"EPSG\",9001]]],\n" + " PARAMETER[\"False easting\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Geostationary_Satellite\"],\n" + "PARAMETER[\"central_meridian\",1],\n" + "PARAMETER[\"satellite_height\",2],\n" + "PARAMETER[\"false_easting\",3],\n" + "PARAMETER[\"false_northing\",4]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, gnomonic_export) { + auto conv = Conversion::createGnomonic(PropertyMap(), Angle(1), Angle(2), + Length(4), Length(5)); + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=gnom +lat_0=1 +lon_0=2 +x_0=4 +y_0=5"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Gnomonic\",\n" + " METHOD[\"Gnomonic\"],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Gnomonic\"],\n" + "PARAMETER[\"latitude_of_origin\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"false_easting\",4],\n" + "PARAMETER[\"false_northing\",5]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, hotine_oblique_mercator_variant_A_export) { + auto conv = Conversion::createHotineObliqueMercatorVariantA( + PropertyMap(), Angle(1), Angle(2), Angle(3), Angle(4), Scale(5), + Length(6), Length(7)); + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=omerc +no_uoff +lat_0=1 +lonc=2 +alpha=3 +gamma=4 +k=5 " + "+x_0=6 +y_0=7"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Hotine Oblique Mercator (variant A)\",\n" + " METHOD[\"Hotine Oblique Mercator (variant A)\",\n" + " ID[\"EPSG\",9812]],\n" + " PARAMETER[\"Latitude of projection centre\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8811]],\n" + " PARAMETER[\"Longitude of projection centre\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8812]],\n" + " PARAMETER[\"Azimuth of initial line\",3,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8813]],\n" + " PARAMETER[\"Angle from Rectified to Skew Grid\",4,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8814]],\n" + " PARAMETER[\"Scale factor on initial line\",5,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8815]],\n" + " PARAMETER[\"False easting\",6,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",7,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Hotine_Oblique_Mercator\"],\n" + "PARAMETER[\"latitude_of_center\",1],\n" + "PARAMETER[\"longitude_of_center\",2],\n" + "PARAMETER[\"azimuth\",3],\n" + "PARAMETER[\"rectified_grid_angle\",4],\n" + "PARAMETER[\"scale_factor\",5],\n" + "PARAMETER[\"false_easting\",6],\n" + "PARAMETER[\"false_northing\",7]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, hotine_oblique_mercator_variant_A_export_swiss_mercator) { + auto conv = Conversion::createHotineObliqueMercatorVariantA( + PropertyMap(), Angle(1), Angle(2), Angle(90), Angle(90), Scale(5), + Length(6), Length(7)); + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=somerc +lat_0=1 +lon_0=2 +k_0=5 " + "+x_0=6 +y_0=7"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, hotine_oblique_mercator_variant_B_export) { + auto conv = Conversion::createHotineObliqueMercatorVariantB( + PropertyMap(), Angle(1), Angle(2), Angle(3), Angle(4), Scale(5), + Length(6), Length(7)); + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=omerc +lat_0=1 +lonc=2 +alpha=3 +gamma=4 +k=5 " + "+x_0=6 +y_0=7"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Hotine Oblique Mercator (variant B)\",\n" + " METHOD[\"Hotine Oblique Mercator (variant B)\",\n" + " ID[\"EPSG\",9815]],\n" + " PARAMETER[\"Latitude of projection centre\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8811]],\n" + " PARAMETER[\"Longitude of projection centre\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8812]],\n" + " PARAMETER[\"Azimuth of initial line\",3,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8813]],\n" + " PARAMETER[\"Angle from Rectified to Skew Grid\",4,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8814]],\n" + " PARAMETER[\"Scale factor on initial line\",5,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8815]],\n" + " PARAMETER[\"Easting at projection centre\",6,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8816]],\n" + " PARAMETER[\"Northing at projection centre\",7,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8817]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Hotine_Oblique_Mercator_Azimuth_Center\"],\n" + "PARAMETER[\"latitude_of_center\",1],\n" + "PARAMETER[\"longitude_of_center\",2],\n" + "PARAMETER[\"azimuth\",3],\n" + "PARAMETER[\"rectified_grid_angle\",4],\n" + "PARAMETER[\"scale_factor\",5],\n" + "PARAMETER[\"false_easting\",6],\n" + "PARAMETER[\"false_northing\",7]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, hotine_oblique_mercator_variant_B_export_swiss_mercator) { + auto conv = Conversion::createHotineObliqueMercatorVariantB( + PropertyMap(), Angle(1), Angle(2), Angle(90), Angle(90), Scale(5), + Length(6), Length(7)); + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=somerc +lat_0=1 +lon_0=2 +k_0=5 " + "+x_0=6 +y_0=7"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, hotine_oblique_mercator_two_point_natural_origin_export) { + auto conv = Conversion::createHotineObliqueMercatorTwoPointNaturalOrigin( + PropertyMap(), Angle(1), Angle(2), Angle(3), Angle(4), Angle(5), + Scale(6), Length(7), Length(8)); + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=omerc +lat_0=1 +lat_1=2 +lon_1=3 +lat_2=4 +lon_2=5 +k=6 " + "+x_0=7 +y_0=8"); + + auto formatter = WKTFormatter::create(); + formatter->simulCurNodeHasId(); + EXPECT_EQ( + conv->exportToWKT(formatter.get()), + "CONVERSION[\"Hotine Oblique Mercator Two Point Natural Origin\",\n" + " METHOD[\"Hotine Oblique Mercator Two Point Natural Origin\"],\n" + " PARAMETER[\"Latitude of projection centre\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8811]],\n" + " PARAMETER[\"Latitude of 1st point\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " PARAMETER[\"Longitude of 1st point\",3,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " PARAMETER[\"Latitude of 2nd point\",4,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " PARAMETER[\"Longitude of 2nd point\",5,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " PARAMETER[\"Scale factor on initial line\",6,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8815]],\n" + " PARAMETER[\"Easting at projection centre\",7,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8816]],\n" + " PARAMETER[\"Northing at projection centre\",8,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8817]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Hotine_Oblique_Mercator_Two_Point_Natural_Origin\"],\n" + "PARAMETER[\"latitude_of_origin\",1],\n" + "PARAMETER[\"latitude_of_point_1\",2],\n" + "PARAMETER[\"longitude_of_point_1\",3],\n" + "PARAMETER[\"latitude_of_point_2\",4],\n" + "PARAMETER[\"longitude_of_point_2\",5],\n" + "PARAMETER[\"scale_factor\",6],\n" + "PARAMETER[\"false_easting\",7],\n" + "PARAMETER[\"false_northing\",8]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, imw_polyconic_export) { + auto conv = Conversion::createInternationalMapWorldPolyconic( + PropertyMap(), Angle(1), Angle(3), Angle(4), Length(5), Length(6)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=imw_p +lon_0=1 +lat_1=3 +lat_2=4 +x_0=5 +y_0=6"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"International Map of the World Polyconic\",\n" + " METHOD[\"International Map of the World Polyconic\"],\n" + " PARAMETER[\"Longitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Latitude of 1st standard parallel\",3,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8823]],\n" + " PARAMETER[\"Latitude of 2nd standard parallel\",4,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8824]],\n" + " PARAMETER[\"False easting\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",6,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"International_Map_of_the_World_Polyconic\"],\n" + "PARAMETER[\"central_meridian\",1],\n" + "PARAMETER[\"standard_parallel_1\",3],\n" + "PARAMETER[\"standard_parallel_2\",4],\n" + "PARAMETER[\"false_easting\",5],\n" + "PARAMETER[\"false_northing\",6]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, krovak_north_oriented_export) { + auto conv = Conversion::createKrovakNorthOriented( + PropertyMap(), Angle(49.5), Angle(42.5), Angle(30.28813972222222), + Angle(78.5), Scale(0.9999), Length(5), Length(6)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=krovak +lat_0=49.5 +lon_0=42.5 +k=0.9999 +x_0=5 +y_0=6"); + + EXPECT_EQ( + conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Krovak (North Orientated)\",\n" + " METHOD[\"Krovak (North Orientated)\",\n" + " ID[\"EPSG\",1041]],\n" + " PARAMETER[\"Latitude of projection centre\",49.5,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8811]],\n" + " PARAMETER[\"Longitude of origin\",42.5,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8833]],\n" + " PARAMETER[\"Co-latitude of cone axis\",30.2881397222222,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",1036]],\n" + " PARAMETER[\"Latitude of pseudo standard parallel\",78.5,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8818]],\n" + " PARAMETER[\"Scale factor on pseudo standard parallel\",0.9999,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8819]],\n" + " PARAMETER[\"False easting\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",6,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Krovak\"],\n" + "PARAMETER[\"latitude_of_center\",49.5],\n" + "PARAMETER[\"longitude_of_center\",42.5],\n" + "PARAMETER[\"azimuth\",30.2881397222222],\n" + "PARAMETER[\"pseudo_standard_parallel_1\",78.5],\n" + "PARAMETER[\"scale_factor\",0.9999],\n" + "PARAMETER[\"false_easting\",5],\n" + "PARAMETER[\"false_northing\",6]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, krovak_export) { + auto conv = Conversion::createKrovak( + PropertyMap(), Angle(49.5), Angle(42.5), Angle(30.28813972222222), + Angle(78.5), Scale(0.9999), Length(5), Length(6)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=krovak +axis=swu +lat_0=49.5 +lon_0=42.5 +k=0.9999 +x_0=5 " + "+y_0=6"); + + EXPECT_EQ( + conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Krovak\",\n" + " METHOD[\"Krovak\",\n" + " ID[\"EPSG\",9819]],\n" + " PARAMETER[\"Latitude of projection centre\",49.5,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8811]],\n" + " PARAMETER[\"Longitude of origin\",42.5,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8833]],\n" + " PARAMETER[\"Co-latitude of cone axis\",30.2881397222222,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",1036]],\n" + " PARAMETER[\"Latitude of pseudo standard parallel\",78.5,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8818]],\n" + " PARAMETER[\"Scale factor on pseudo standard parallel\",0.9999,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8819]],\n" + " PARAMETER[\"False easting\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",6,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Krovak\"],\n" + "PARAMETER[\"latitude_of_center\",49.5],\n" + "PARAMETER[\"longitude_of_center\",42.5],\n" + "PARAMETER[\"azimuth\",30.2881397222222],\n" + "PARAMETER[\"pseudo_standard_parallel_1\",78.5],\n" + "PARAMETER[\"scale_factor\",0.9999],\n" + "PARAMETER[\"false_easting\",5],\n" + "PARAMETER[\"false_northing\",6]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lambert_azimuthal_equal_area_export) { + auto conv = Conversion::createLambertAzimuthalEqualArea( + PropertyMap(), Angle(1), Angle(2), Length(3), Length(4)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=laea +lat_0=1 +lon_0=2 +x_0=3 +y_0=4"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Lambert Azimuthal Equal Area\",\n" + " METHOD[\"Lambert Azimuthal Equal Area\",\n" + " ID[\"EPSG\",9820]],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Lambert_Azimuthal_Equal_Area\"],\n" + "PARAMETER[\"latitude_of_center\",1],\n" + "PARAMETER[\"longitude_of_center\",2],\n" + "PARAMETER[\"false_easting\",3],\n" + "PARAMETER[\"false_northing\",4]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, miller_cylindrical_export) { + auto conv = Conversion::createMillerCylindrical(PropertyMap(), Angle(2), + Length(3), Length(4)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=mill +R_A +lon_0=2 +x_0=3 +y_0=4"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Miller Cylindrical\",\n" + " METHOD[\"Miller Cylindrical\"],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Miller_Cylindrical\"],\n" + "PARAMETER[\"longitude_of_center\",2],\n" + "PARAMETER[\"false_easting\",3],\n" + "PARAMETER[\"false_northing\",4]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, mercator_variant_A_export) { + auto conv = Conversion::createMercatorVariantA( + PropertyMap(), Angle(0), Angle(1), Scale(2), Length(3), Length(4)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=merc +lon_0=1 +k=2 +x_0=3 +y_0=4"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Mercator (variant A)\",\n" + " METHOD[\"Mercator (variant A)\",\n" + " ID[\"EPSG\",9804]],\n" + " PARAMETER[\"Latitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",2,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Mercator_1SP\"],\n" + "PARAMETER[\"central_meridian\",1],\n" + "PARAMETER[\"scale_factor\",2],\n" + "PARAMETER[\"false_easting\",3],\n" + "PARAMETER[\"false_northing\",4]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, mercator_variant_A_export_latitude_origin_non_zero) { + auto conv = Conversion::createMercatorVariantA( + PropertyMap(), Angle(10), Angle(1), Scale(2), Length(3), Length(4)); + + EXPECT_THROW(conv->exportToPROJString(PROJStringFormatter::create().get()), + FormattingException); +} + +// --------------------------------------------------------------------------- + +TEST(operation, wkt1_import_mercator_variant_A) { + auto wkt = "PROJCS[\"test\",\n" + " GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS 1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563]],\n" + " PRIMEM[\"Greenwich\",0],\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " PROJECTION[\"Mercator_1SP\"],\n" + " PARAMETER[\"central_meridian\",1],\n" + " PARAMETER[\"scale_factor\",2],\n" + " PARAMETER[\"false_easting\",3],\n" + " PARAMETER[\"false_northing\",4],\n" + " UNIT[\"metre\",1]]"; + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto conversion = crs->derivingConversion(); + auto convRef = Conversion::createMercatorVariantA( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), Angle(0), + Angle(1), Scale(2), Length(3), Length(4)); + + EXPECT_EQ(conversion->exportToWKT(WKTFormatter::create().get()), + convRef->exportToWKT(WKTFormatter::create().get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, mercator_variant_B_export) { + auto conv = Conversion::createMercatorVariantB( + PropertyMap(), Angle(1), Angle(2), Length(3), Length(4)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=merc +lat_ts=1 +lon_0=2 +x_0=3 +y_0=4"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Mercator (variant B)\",\n" + " METHOD[\"Mercator (variant B)\",\n" + " ID[\"EPSG\",9805]],\n" + " PARAMETER[\"Latitude of 1st standard parallel\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8823]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Mercator_2SP\"],\n" + "PARAMETER[\"standard_parallel_1\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"false_easting\",3],\n" + "PARAMETER[\"false_northing\",4]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, webmerc_export) { + auto conv = Conversion::createPopularVisualisationPseudoMercator( + PropertyMap(), Angle(0), Angle(2), Length(3), Length(4)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=webmerc +lat_0=0 +lon_0=2 +x_0=3 +y_0=4"); + + EXPECT_THROW( + conv->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + FormattingException); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Popular Visualisation Pseudo Mercator\",\n" + " METHOD[\"Popular Visualisation Pseudo Mercator\",\n" + " ID[\"EPSG\",1024]],\n" + " PARAMETER[\"Latitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + auto projCRS = ProjectedCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Pseudo-Mercator"), + GeographicCRS::EPSG_4326, conv, + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + + EXPECT_EQ( + projCRS->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJCS[\"Pseudo-Mercator\",\n" + " GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\n" + " AUTHORITY[\"EPSG\",\"7030\"]],\n" + " AUTHORITY[\"EPSG\",\"6326\"]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " AUTHORITY[\"EPSG\",\"8901\"]],\n" + " UNIT[\"degree\",0.0174532925199433,\n" + " AUTHORITY[\"EPSG\",\"9122\"]],\n" + " AXIS[\"Latitude\",NORTH],\n" + " AXIS[\"Longitude\",EAST],\n" + " AUTHORITY[\"EPSG\",\"4326\"]],\n" + " PROJECTION[\"Mercator_1SP\"],\n" + " PARAMETER[\"central_meridian\",2],\n" + " PARAMETER[\"scale_factor\",1],\n" + " PARAMETER[\"false_easting\",3],\n" + " PARAMETER[\"false_northing\",4],\n" + " UNIT[\"metre\",1,\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" + " AXIS[\"Easting\",EAST],\n" + " AXIS[\"Northing\",NORTH],\n" + " EXTENSION[\"PROJ4\",\"+proj=merc " + "+a=6378137 +b=6378137 +lat_ts=0 +lon_0=2 " + "+x_0=3 +y_0=4 +k=1 +units=m " + "+nadgrids=@null +wktext +no_defs\"]]"); + + EXPECT_EQ( + projCRS->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_5) + .get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=webmerc " + "+lat_0=0 +lon_0=2 +x_0=3 +y_0=4 +ellps=WGS84"); + + EXPECT_EQ( + projCRS->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=2 +x_0=3 " + "+y_0=4 +k=1 +units=m +nadgrids=@null +wktext +no_defs"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, webmerc_import_from_GDAL_wkt1) { + + auto projCRS = ProjectedCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "Pseudo-Mercator"), + GeographicCRS::EPSG_4326, + Conversion::createPopularVisualisationPseudoMercator( + PropertyMap(), Angle(0), Angle(0), Length(0), Length(0)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + + auto wkt1 = projCRS->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()); + auto obj = WKTParser().createFromWKT(wkt1); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto convGot = crs->derivingConversion(); + + EXPECT_EQ(convGot->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"unnamed\",\n" + " METHOD[\"Popular Visualisation Pseudo Mercator\",\n" + " ID[\"EPSG\",1024]],\n" + " PARAMETER[\"Latitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, webmerc_import_from_GDAL_wkt1_EPSG_3785_deprecated) { + + auto wkt1 = + "PROJCS[\"Popular Visualisation CRS / Mercator (deprecated)\"," + " GEOGCS[\"Popular Visualisation CRS\"," + " DATUM[\"Popular_Visualisation_Datum\"," + " SPHEROID[\"Popular Visualisation Sphere\",6378137,0," + " AUTHORITY[\"EPSG\",\"7059\"]]," + " TOWGS84[0,0,0,0,0,0,0]," + " AUTHORITY[\"EPSG\",\"6055\"]]," + " PRIMEM[\"Greenwich\",0," + " AUTHORITY[\"EPSG\",\"8901\"]]," + " UNIT[\"degree\",0.0174532925199433," + " AUTHORITY[\"EPSG\",\"9122\"]]," + " AUTHORITY[\"EPSG\",\"4055\"]]," + " PROJECTION[\"Mercator_1SP\"]," + " PARAMETER[\"central_meridian\",0]," + " PARAMETER[\"scale_factor\",1]," + " PARAMETER[\"false_easting\",0]," + " PARAMETER[\"false_northing\",0]," + " UNIT[\"metre\",1," + " AUTHORITY[\"EPSG\",\"9001\"]]," + " AXIS[\"X\",EAST]," + " AXIS[\"Y\",NORTH]," + " EXTENSION[\"PROJ4\",\"+proj=merc +a=6378137 +b=6378137 " + "+lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m " + "+nadgrids=@null +wktext +no_defs\"]]"; + + auto obj = WKTParser().createFromWKT(wkt1); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=webmerc " + "+lat_0=0 +lon_0=0 +x_0=0 +y_0=0 " + "+ellps=WGS84"); + + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 " + "+y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"); + + auto convGot = crs->derivingConversion(); + + EXPECT_EQ(convGot->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"unnamed\",\n" + " METHOD[\"Popular Visualisation Pseudo Mercator\",\n" + " ID[\"EPSG\",1024]],\n" + " PARAMETER[\"Latitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, webmerc_import_from_WKT2_EPSG_3785_deprecated) { + auto wkt2 = + "PROJCRS[\"Popular Visualisation CRS / Mercator\",\n" + " BASEGEODCRS[\"Popular Visualisation CRS\",\n" + " DATUM[\"Popular Visualisation Datum\",\n" + " ELLIPSOID[\"Popular Visualisation Sphere\",6378137,0,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " CONVERSION[\"Popular Visualisation Mercator\",\n" + " METHOD[\"Mercator (1SP) (Spherical)\",\n" + " ID[\"EPSG\",9841]],\n" + " PARAMETER[\"Latitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",1,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",0,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"easting (X)\",east,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"northing (Y)\",north,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1]]]"; + + auto obj = WKTParser().createFromWKT(wkt2); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=webmerc " + "+ellps=WGS84"); + + EXPECT_EQ( + crs->exportToPROJString( + PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4) + .get()), + "+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 " + "+y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs"); + + EXPECT_EQ( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2015).get()), + wkt2); + + EXPECT_EQ( + crs->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJCS[\"Popular Visualisation CRS / Mercator\",\n" + " GEOGCS[\"Popular Visualisation CRS\",\n" + " DATUM[\"Popular_Visualisation_Datum\",\n" + " SPHEROID[\"Popular Visualisation Sphere\",6378137,0],\n" + " TOWGS84[0,0,0,0,0,0,0]],\n" + " PRIMEM[\"Greenwich\",0],\n" + " UNIT[\"degree\",0.0174532925199433],\n" + " AXIS[\"Latitude\",NORTH],\n" + " AXIS[\"Longitude\",EAST]],\n" + " PROJECTION[\"Mercator_1SP\"],\n" + " PARAMETER[\"central_meridian\",0],\n" + " PARAMETER[\"scale_factor\",1],\n" + " PARAMETER[\"false_easting\",0],\n" + " PARAMETER[\"false_northing\",0],\n" + " UNIT[\"metre\",1],\n" + " AXIS[\"Easting\",EAST],\n" + " AXIS[\"Northing\",NORTH],\n" + " EXTENSION[\"PROJ4\",\"+proj=merc +a=6378137 +b=6378137 +lat_ts=0 " + "+lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext " + "+no_defs\"]]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, mollweide_export) { + + auto conv = Conversion::createMollweide(PropertyMap(), Angle(1), Length(2), + Length(3)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=moll +lon_0=1 +x_0=2 +y_0=3"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Mollweide\",\n" + " METHOD[\"Mollweide\"],\n" + " PARAMETER[\"Longitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",2,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Mollweide\"],\n" + "PARAMETER[\"central_meridian\",1],\n" + "PARAMETER[\"false_easting\",2],\n" + "PARAMETER[\"false_northing\",3]"); +} +// --------------------------------------------------------------------------- + +TEST(operation, nzmg_export) { + auto conv = Conversion::createNewZealandMappingGrid( + PropertyMap(), Angle(1), Angle(2), Length(4), Length(5)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=nzmg +lat_0=1 +lon_0=2 +x_0=4 +y_0=5"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"New Zealand Map Grid\",\n" + " METHOD[\"New Zealand Map Grid\",\n" + " ID[\"EPSG\",9811]],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"New_Zealand_Map_Grid\"],\n" + "PARAMETER[\"latitude_of_origin\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"false_easting\",4],\n" + "PARAMETER[\"false_northing\",5]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, oblique_stereographic_export) { + auto conv = Conversion::createObliqueStereographic( + PropertyMap(), Angle(1), Angle(2), Scale(3), Length(4), Length(5)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=sterea +lat_0=1 +lon_0=2 +k=3 +x_0=4 +y_0=5"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Oblique Stereographic\",\n" + " METHOD[\"Oblique Stereographic\",\n" + " ID[\"EPSG\",9809]],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",3,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Oblique_Stereographic\"],\n" + "PARAMETER[\"latitude_of_origin\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"scale_factor\",3],\n" + "PARAMETER[\"false_easting\",4],\n" + "PARAMETER[\"false_northing\",5]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, orthographic_export) { + auto conv = Conversion::createOrthographic(PropertyMap(), Angle(1), + Angle(2), Length(4), Length(5)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=ortho +lat_0=1 +lon_0=2 +x_0=4 +y_0=5"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Orthographic\",\n" + " METHOD[\"Orthographic\",\n" + " ID[\"EPSG\",9840]],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Orthographic\"],\n" + "PARAMETER[\"latitude_of_origin\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"false_easting\",4],\n" + "PARAMETER[\"false_northing\",5]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, american_polyconic_export) { + auto conv = Conversion::createAmericanPolyconic( + PropertyMap(), Angle(1), Angle(2), Length(4), Length(5)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=poly +lat_0=1 +lon_0=2 +x_0=4 +y_0=5"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"American Polyconic\",\n" + " METHOD[\"American Polyconic\",\n" + " ID[\"EPSG\",9818]],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Polyconic\"],\n" + "PARAMETER[\"latitude_of_origin\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"false_easting\",4],\n" + "PARAMETER[\"false_northing\",5]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, polar_stereographic_variant_A_export) { + auto conv = Conversion::createPolarStereographicVariantA( + PropertyMap(), Angle(90), Angle(2), Scale(3), Length(4), Length(5)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=stere +lat_0=90 +lon_0=2 +k=3 +x_0=4 +y_0=5"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Polar Stereographic (variant A)\",\n" + " METHOD[\"Polar Stereographic (variant A)\",\n" + " ID[\"EPSG\",9810]],\n" + " PARAMETER[\"Latitude of natural origin\",90,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",3,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Polar_Stereographic\"],\n" + "PARAMETER[\"latitude_of_origin\",90],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"scale_factor\",3],\n" + "PARAMETER[\"false_easting\",4],\n" + "PARAMETER[\"false_northing\",5]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, polar_stereographic_variant_B_export_positive_lat) { + auto conv = Conversion::createPolarStereographicVariantB( + PropertyMap(), Angle(70), Angle(2), Length(4), Length(5)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=2 +x_0=4 +y_0=5"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Polar Stereographic (variant B)\",\n" + " METHOD[\"Polar Stereographic (variant B)\",\n" + " ID[\"EPSG\",9829]],\n" + " PARAMETER[\"Latitude of standard parallel\",70,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8832]],\n" + " PARAMETER[\"Longitude of origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8833]],\n" + " PARAMETER[\"False easting\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Polar_Stereographic\"],\n" + "PARAMETER[\"latitude_of_origin\",70],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"false_easting\",4],\n" + "PARAMETER[\"false_northing\",5]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, polar_stereographic_variant_B_export_negative_lat) { + auto conv = Conversion::createPolarStereographicVariantB( + PropertyMap(), Angle(-70), Angle(2), Length(4), Length(5)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=stere +lat_0=-90 +lat_ts=-70 +lon_0=2 +x_0=4 +y_0=5"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, wkt1_import_polar_stereographic_variantA) { + auto wkt = "PROJCS[\"test\",\n" + " GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS 1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563]],\n" + " PRIMEM[\"Greenwich\",0],\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " PROJECTION[\"Polar_Stereographic\"],\n" + " PARAMETER[\"latitude_of_origin\",-90],\n" + " PARAMETER[\"central_meridian\",2],\n" + " PARAMETER[\"scale_factor\",3],\n" + " PARAMETER[\"false_easting\",4],\n" + " PARAMETER[\"false_northing\",5]" + " UNIT[\"metre\",1]]"; + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto conversion = crs->derivingConversion(); + auto convRef = Conversion::createPolarStereographicVariantA( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), Angle(-90), + Angle(2), Scale(3), Length(4), Length(5)); + + EXPECT_EQ(conversion->exportToWKT(WKTFormatter::create().get()), + convRef->exportToWKT(WKTFormatter::create().get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, wkt1_import_polar_stereographic_variantB) { + auto wkt = "PROJCS[\"test\",\n" + " GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS 1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563]],\n" + " PRIMEM[\"Greenwich\",0],\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " PROJECTION[\"Polar_Stereographic\"],\n" + " PARAMETER[\"latitude_of_origin\",-70],\n" + " PARAMETER[\"central_meridian\",2],\n" + " PARAMETER[\"scale_factor\",1],\n" + " PARAMETER[\"false_easting\",4],\n" + " PARAMETER[\"false_northing\",5]" + " UNIT[\"metre\",1]]"; + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto conversion = crs->derivingConversion(); + auto convRef = Conversion::createPolarStereographicVariantB( + PropertyMap().set(IdentifiedObject::NAME_KEY, "unnamed"), Angle(-70), + Angle(2), Length(4), Length(5)); + + EXPECT_EQ(conversion->exportToWKT(WKTFormatter::create().get()), + convRef->exportToWKT(WKTFormatter::create().get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, wkt1_import_polar_stereographic_ambiguous) { + auto wkt = "PROJCS[\"test\",\n" + " GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS 1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563]],\n" + " PRIMEM[\"Greenwich\",0],\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " PROJECTION[\"Polar_Stereographic\"],\n" + " PARAMETER[\"latitude_of_origin\",-70],\n" + " PARAMETER[\"central_meridian\",2],\n" + " PARAMETER[\"scale_factor\",3],\n" + " PARAMETER[\"false_easting\",4],\n" + " PARAMETER[\"false_northing\",5]" + " UNIT[\"metre\",1]]"; + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto conversion = crs->derivingConversion(); + EXPECT_EQ(conversion->method()->nameStr(), "Polar_Stereographic"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, wkt1_import_equivalent_parameters) { + auto wkt = "PROJCS[\"test\",\n" + " GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS 1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563]],\n" + " PRIMEM[\"Greenwich\",0],\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " PROJECTION[\"Hotine Oblique Mercator Two Point Natural " + "Origin\"],\n" + " PARAMETER[\"latitude_of_origin\",1],\n" + " PARAMETER[\"Latitude_Of_1st_Point\",2],\n" + " PARAMETER[\"Longitude_Of_1st_Point\",3],\n" + " PARAMETER[\"Latitude_Of_2nd_Point\",4],\n" + " PARAMETER[\"Longitude_Of 2nd_Point\",5],\n" + " PARAMETER[\"scale_factor\",6],\n" + " PARAMETER[\"false_easting\",7],\n" + " PARAMETER[\"false_northing\",8],\n" + " UNIT[\"metre\",1]]"; + auto obj = WKTParser().createFromWKT(wkt); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + + auto conversion = crs->derivingConversion(); + auto convRef = Conversion::createHotineObliqueMercatorTwoPointNaturalOrigin( + PropertyMap(), Angle(1), Angle(2), Angle(3), Angle(4), Angle(5), + Scale(6), Length(7), Length(8)); + + EXPECT_EQ( + conversion->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + convRef->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, robinson_export) { + + auto conv = Conversion::createRobinson(PropertyMap(), Angle(1), Length(2), + Length(3)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=robin +lon_0=1 +x_0=2 +y_0=3"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Robinson\",\n" + " METHOD[\"Robinson\"],\n" + " PARAMETER[\"Longitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",2,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Robinson\"],\n" + "PARAMETER[\"longitude_of_center\",1],\n" + "PARAMETER[\"false_easting\",2],\n" + "PARAMETER[\"false_northing\",3]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, sinusoidal_export) { + + auto conv = Conversion::createSinusoidal(PropertyMap(), Angle(1), Length(2), + Length(3)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=sinu +lon_0=1 +x_0=2 +y_0=3"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Sinusoidal\",\n" + " METHOD[\"Sinusoidal\"],\n" + " PARAMETER[\"Longitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",2,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Sinusoidal\"],\n" + "PARAMETER[\"longitude_of_center\",1],\n" + "PARAMETER[\"false_easting\",2],\n" + "PARAMETER[\"false_northing\",3]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, stereographic_export) { + auto conv = Conversion::createStereographic( + PropertyMap(), Angle(1), Angle(2), Scale(3), Length(4), Length(5)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=stere +lat_0=1 +lon_0=2 +k=3 +x_0=4 +y_0=5"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Stereographic\",\n" + " METHOD[\"Stereographic\"],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",3,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Stereographic\"],\n" + "PARAMETER[\"latitude_of_origin\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"scale_factor\",3],\n" + "PARAMETER[\"false_easting\",4],\n" + "PARAMETER[\"false_northing\",5]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, vandergrinten_export) { + + auto conv = Conversion::createVanDerGrinten(PropertyMap(), Angle(1), + Length(2), Length(3)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=vandg +R_A +lon_0=1 +x_0=2 +y_0=3"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Van Der Grinten\",\n" + " METHOD[\"Van Der Grinten\"],\n" + " PARAMETER[\"Longitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",2,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"VanDerGrinten\"],\n" + "PARAMETER[\"central_meridian\",1],\n" + "PARAMETER[\"false_easting\",2],\n" + "PARAMETER[\"false_northing\",3]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, wagner_export) { + + std::vector<std::string> numbers{"", "1", "2", "3", "4", "5", "6", "7"}; + std::vector<std::string> latinNumbers{"", "I", "II", "III", + "IV", "V", "VI", "VII"}; + + for (int i = 1; i <= 7; i++) { + if (i == 3) + continue; + auto conv = + (i == 1) + ? Conversion::createWagnerI(PropertyMap(), Angle(1), Length(2), + Length(3)) + : (i == 2) + ? Conversion::createWagnerII(PropertyMap(), Angle(1), + Length(2), Length(3)) + : (i == 4) + ? Conversion::createWagnerIV( + PropertyMap(), Angle(1), Length(2), Length(3)) + : (i == 5) ? Conversion::createWagnerV( + PropertyMap(), Angle(1), Length(2), + Length(3)) + : (i == 6) ? + + Conversion::createWagnerVI( + PropertyMap(), Angle(1), + Length(2), Length(3)) + : + + Conversion::createWagnerVII( + PropertyMap(), Angle(1), + Length(2), Length(3)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=wag" + numbers[i] + " +lon_0=1 +x_0=2 +y_0=3"); + + auto formatter = WKTFormatter::create(); + formatter->simulCurNodeHasId(); + EXPECT_EQ(conv->exportToWKT(formatter.get()), + "CONVERSION[\"Wagner " + latinNumbers[i] + + "\",\n" + " METHOD[\"Wagner " + + latinNumbers[i] + + "\"],\n" + " PARAMETER[\"Longitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",2,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ(conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL) + .get()), + "PROJECTION[\"Wagner_" + latinNumbers[i] + + "\"],\n" + "PARAMETER[\"central_meridian\",1],\n" + "PARAMETER[\"false_easting\",2],\n" + "PARAMETER[\"false_northing\",3]"); + } +} + +// --------------------------------------------------------------------------- + +TEST(operation, wagnerIII_export) { + + auto conv = Conversion::createWagnerIII(PropertyMap(), Angle(1), Angle(2), + Length(3), Length(4)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=wag3 +lat_ts=1 +lon_0=2 +x_0=3 +y_0=4"); + + auto formatter = WKTFormatter::create(); + formatter->simulCurNodeHasId(); + EXPECT_EQ(conv->exportToWKT(formatter.get()), + "CONVERSION[\"Wagner III\",\n" + " METHOD[\"Wagner III\"],\n" + " PARAMETER[\"Latitude of true scale\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Wagner_III\"],\n" + "PARAMETER[\"latitude_of_origin\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"false_easting\",3],\n" + "PARAMETER[\"false_northing\",4]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, qsc_export) { + + auto conv = Conversion::createQuadrilateralizedSphericalCube( + PropertyMap(), Angle(1), Angle(2), Length(3), Length(4)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=qsc +lat_0=1 +lon_0=2 +x_0=3 +y_0=4"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Quadrilateralized Spherical Cube\",\n" + " METHOD[\"Quadrilateralized Spherical Cube\"],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Quadrilateralized_Spherical_Cube\"],\n" + "PARAMETER[\"latitude_of_origin\",1],\n" + "PARAMETER[\"central_meridian\",2],\n" + "PARAMETER[\"false_easting\",3],\n" + "PARAMETER[\"false_northing\",4]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, sch_export) { + + auto conv = Conversion::createSphericalCrossTrackHeight( + PropertyMap(), Angle(1), Angle(2), Angle(3), Length(4)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=sch +plat_0=1 +plon_0=2 +phdg_0=3 +h_0=4"); + + auto formatter = WKTFormatter::create(); + formatter->simulCurNodeHasId(); + EXPECT_EQ(conv->exportToWKT(formatter.get()), + "CONVERSION[\"Spherical Cross-Track Height\",\n" + " METHOD[\"Spherical Cross-Track Height\"],\n" + " PARAMETER[\"Peg point latitude\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " PARAMETER[\"Peg point longitude\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " PARAMETER[\"Peg point heading\",3,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]],\n" + " PARAMETER[\"Peg point height\",4,\n" + " LENGTHUNIT[\"metre\",1]]]"); + + EXPECT_EQ( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + "PROJECTION[\"Spherical_Cross_Track_Height\"],\n" + "PARAMETER[\"peg_point_latitude\",1],\n" + "PARAMETER[\"peg_point_longitude\",2],\n" + "PARAMETER[\"peg_point_heading\",3],\n" + "PARAMETER[\"peg_point_height\",4]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, conversion_inverse) { + auto conv = Conversion::createTransverseMercator( + PropertyMap(), Angle(1), Angle(2), Scale(3), Length(4), Length(5)); + auto inv = conv->inverse(); + EXPECT_EQ(inv->inverse(), conv); + EXPECT_EQ(inv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Inverse of Transverse Mercator\",\n" + " METHOD[\"Inverse of Transverse Mercator\",\n" + " ID[\"INVERSE(EPSG)\",9807]],\n" + " PARAMETER[\"Latitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8801]],\n" + " PARAMETER[\"Longitude of natural origin\",2,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"Scale factor at natural origin\",3,\n" + " SCALEUNIT[\"unity\",1],\n" + " ID[\"EPSG\",8805]],\n" + " PARAMETER[\"False easting\",4,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",5,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); + + EXPECT_EQ(inv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=tmerc +lat_0=1 +lon_0=2 +k_0=3 " + "+x_0=4 +y_0=5"); + + EXPECT_TRUE(inv->isEquivalentTo(inv.get())); + EXPECT_FALSE(inv->isEquivalentTo(createUnrelatedObject().get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, eqearth_export) { + + auto conv = Conversion::createEqualEarth(PropertyMap(), Angle(1), Length(2), + Length(3)); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=eqearth +lon_0=1 +x_0=2 +y_0=3"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"Equal Earth\",\n" + " METHOD[\"Equal Earth\",\n" + " ID[\"EPSG\",1078]],\n" + " PARAMETER[\"Longitude of natural origin\",1,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433],\n" + " ID[\"EPSG\",8802]],\n" + " PARAMETER[\"False easting\",2,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8806]],\n" + " PARAMETER[\"False northing\",3,\n" + " LENGTHUNIT[\"metre\",1],\n" + " ID[\"EPSG\",8807]]]"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, laborde_oblique_mercator) { + + // Content of EPSG:29701 "Tananarive (Paris) / Laborde Grid" + auto projString = "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=grad +xy_out=rad +step +inv " + "+proj=longlat +ellps=intl +pm=paris +step +proj=labrd " + "+lat_0=-18.9 +lon_0=44.1 +azi=18.9 +k=0.9995 " + "+x_0=400000 +y_0=800000 +ellps=intl +pm=paris +step " + "+proj=axisswap +order=2,1"; + auto obj = PROJStringParser().createFromPROJString(projString); + auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); + ASSERT_TRUE(crs != nullptr); + EXPECT_EQ(crs->exportToPROJString(PROJStringFormatter::create().get()), + projString); +} + +// --------------------------------------------------------------------------- + +TEST(operation, PROJ_based) { + auto conv = SingleOperation::createPROJBased(PropertyMap(), "+proj=merc", + nullptr, nullptr); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=merc"); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"PROJ-based coordinate operation\",\n" + " METHOD[\"PROJ-based operation method\"],\n" + " PARAMETER[\"PROJ string\",\"+proj=merc\"]]"); + + EXPECT_EQ(conv->inverse()->exportToPROJString( + PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=merc"); + + auto str = "+proj=pipeline +step +proj=unitconvert +xy_in=grad +xy_out=rad " + "+step +proj=axisswap +order=2,1 +step +proj=longlat " + "+ellps=clrk80ign +pm=paris +step +proj=axisswap +order=2,1"; + EXPECT_EQ( + SingleOperation::createPROJBased(PropertyMap(), str, nullptr, nullptr) + ->exportToPROJString(PROJStringFormatter::create().get()), + str); + + EXPECT_THROW(SingleOperation::createPROJBased(PropertyMap(), "+inv", + nullptr, nullptr) + ->exportToPROJString(PROJStringFormatter::create().get()), + FormattingException); + EXPECT_THROW( + SingleOperation::createPROJBased(PropertyMap(), "foo", nullptr, nullptr) + ->exportToPROJString(PROJStringFormatter::create().get()), + FormattingException); +} + +// --------------------------------------------------------------------------- + +TEST(operation, PROJ_based_empty) { + auto conv = + SingleOperation::createPROJBased(PropertyMap(), "", nullptr, nullptr); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + ""); + + EXPECT_EQ(conv->exportToWKT(WKTFormatter::create().get()), + "CONVERSION[\"PROJ-based coordinate operation\",\n" + " METHOD[\"PROJ-based operation method\"],\n" + " PARAMETER[\"PROJ string\",\"\"]]"); + + EXPECT_THROW( + conv->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()), + FormattingException); + + EXPECT_EQ(conv->inverse()->exportToPROJString( + PROJStringFormatter::create().get()), + ""); +} + +// --------------------------------------------------------------------------- + +TEST(operation, PROJ_based_with_global_parameters) { + auto conv = SingleOperation::createPROJBased( + PropertyMap(), "+proj=pipeline +ellps=WGS84 +step +proj=longlat", + nullptr, nullptr); + + EXPECT_EQ(conv->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +ellps=WGS84 +step +proj=longlat"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_geogCRS) { + + auto op = CoordinateOperationFactory::create()->createOperation( + GeographicCRS::EPSG_4807, GeographicCRS::EPSG_4326); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ( + op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=grad +xy_out=rad +step +inv +proj=longlat " + "+ellps=clrk80ign +pm=paris +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_geogCRS_context_default) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0); + ctxt->setSpatialCriterion( + CoordinateOperationContext::SpatialCriterion::PARTIAL_INTERSECTION); + ctxt->setAllowUseIntermediateCRS(false); + + // Directly found in database + { + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4179"), // Pulkovo 42 + authFactory->createCoordinateReferenceSystem("4258"), // ETRS89 + ctxt); + ASSERT_EQ(list.size(), 2); + // Romania has a larger area than Poland (given our approx formula) + EXPECT_EQ(list[0]->getEPSGCode(), 15994); // Romania - 3m + EXPECT_EQ(list[1]->getEPSGCode(), 1644); // Poland - 1m + + EXPECT_EQ( + list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart " + "+ellps=krass +step +proj=helmert +x=2.3287 +y=-147.0425 " + "+z=-92.0802 +rx=0.3092483 +ry=-0.32482185 +rz=-0.49729934 " + "+s=5.68906266 +convention=coordinate_frame +step +inv " + "+proj=cart +ellps=GRS80 +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); + } + + // Reverse case + { + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4258"), + authFactory->createCoordinateReferenceSystem("4179"), ctxt); + ASSERT_EQ(list.size(), 2); + // Romania has a larger area than Poland (given our approx formula) + EXPECT_EQ(list[0]->nameStr(), + "Inverse of Pulkovo 1942(58) to ETRS89 (4)"); // Romania - 3m + + EXPECT_EQ( + list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart " + "+ellps=GRS80 +step +inv +proj=helmert +x=2.3287 " + "+y=-147.0425 +z=-92.0802 +rx=0.3092483 +ry=-0.32482185 " + "+rz=-0.49729934 +s=5.68906266 +convention=coordinate_frame " + "+step +inv +proj=cart +ellps=krass +step +proj=unitconvert " + "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1"); + } +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_geogCRS_context_filter_accuracy) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + { + auto ctxt = + CoordinateOperationContext::create(authFactory, nullptr, 1.0); + ctxt->setSpatialCriterion( + CoordinateOperationContext::SpatialCriterion::PARTIAL_INTERSECTION); + + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4179"), + authFactory->createCoordinateReferenceSystem("4258"), ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ(list[0]->getEPSGCode(), 1644); // Poland - 1m + } + { + auto ctxt = + CoordinateOperationContext::create(authFactory, nullptr, 0.9); + ctxt->setSpatialCriterion( + CoordinateOperationContext::SpatialCriterion::PARTIAL_INTERSECTION); + + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4179"), + authFactory->createCoordinateReferenceSystem("4258"), ctxt); + ASSERT_EQ(list.size(), 0); + } +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_geogCRS_context_filter_bbox) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + // INSERT INTO "area" VALUES('EPSG','1197','Romania','Romania - onshore and + // offshore.',43.44,48.27,20.26,31.41,0); + { + auto ctxt = CoordinateOperationContext::create( + authFactory, Extent::createFromBBOX(20.26, 43.44, 31.41, 48.27), + 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4179"), + authFactory->createCoordinateReferenceSystem("4258"), ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ(list[0]->getEPSGCode(), 15994); // Romania - 3m + } + { + auto ctxt = CoordinateOperationContext::create( + authFactory, Extent::createFromBBOX(20.26 + .1, 43.44 + .1, + 31.41 - .1, 48.27 - .1), + 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4179"), + authFactory->createCoordinateReferenceSystem("4258"), ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ(list[0]->getEPSGCode(), 15994); // Romania - 3m + } + { + auto ctxt = CoordinateOperationContext::create( + authFactory, Extent::createFromBBOX(20.26 - .1, 43.44 - .1, + 31.41 + .1, 48.27 + .1), + 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4179"), + authFactory->createCoordinateReferenceSystem("4258"), ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ( + list[0]->exportToPROJString(PROJStringFormatter::create().get()), + ""); + } +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_geogCRS_context_incompatible_area) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4267"), // NAD27 + authFactory->createCoordinateReferenceSystem("4258"), // ETRS 89 + ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + ""); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_geogCRS_context_inverse_needed) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + { + auto ctxt = + CoordinateOperationContext::create(authFactory, nullptr, 0.0); + ctxt->setUsePROJAlternativeGridNames(false); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4275"), // NTF + authFactory->createCoordinateReferenceSystem("4258"), // ETRS89 + ctxt); + ASSERT_EQ(list.size(), 3); + EXPECT_EQ( + list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart " + "+ellps=clrk80ign +step +proj=helmert +x=-168 +y=-60 +z=320 " + "+step +inv +proj=cart +ellps=GRS80 +step +proj=unitconvert " + "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1"); + EXPECT_EQ(list[1]->exportToPROJString( + PROJStringFormatter::create( + PROJStringFormatter::Convention::PROJ_5, + authFactory->databaseContext()) + .get()), + ""); + EXPECT_EQ(list[2]->exportToPROJString( + PROJStringFormatter::create( + PROJStringFormatter::Convention::PROJ_5, + authFactory->databaseContext()) + .get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step " + "+proj=hgridshift +grids=ntf_r93.gsb +step +proj=unitconvert " + "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1"); + } + { + auto ctxt = + CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4275"), // NTF + authFactory->createCoordinateReferenceSystem("4258"), // ETRS89 + ctxt); + ASSERT_EQ(list.size(), 2); + EXPECT_EQ( + list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step " + "+proj=hgridshift +grids=ntf_r93.gsb +step +proj=unitconvert " + "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1"); + } + { + auto ctxt = + CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4258"), // ETRS89 + authFactory->createCoordinateReferenceSystem("4275"), // NTF + ctxt); + ASSERT_EQ(list.size(), 2); + EXPECT_EQ( + list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +inv " + "+proj=hgridshift +grids=ntf_r93.gsb +step +proj=unitconvert " + "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1"); + } +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_geogCRS_context_ntv1_ntv2_ctable2) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + ctxt->setSpatialCriterion( + CoordinateOperationContext::SpatialCriterion::PARTIAL_INTERSECTION); + ctxt->setGridAvailabilityUse( + CoordinateOperationContext::GridAvailabilityUse:: + IGNORE_GRID_AVAILABILITY); + + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4267"), // NAD27 + authFactory->createCoordinateReferenceSystem("4269"), // NAD83 + ctxt); + ASSERT_EQ(list.size(), 6); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift " + "+grids=ntv1_can.dat +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); + EXPECT_EQ(list[1]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift " + "+grids=ntv2_0.gsb +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); + EXPECT_EQ(list[2]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift " + "+grids=conus +step +proj=unitconvert +xy_in=rad +xy_out=deg " + "+step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, vertCRS_to_geogCRS_context) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + { + auto ctxt = + CoordinateOperationContext::create(authFactory, nullptr, 0.0); + ctxt->setUsePROJAlternativeGridNames(false); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem( + "3855"), // EGM2008 height + authFactory->createCoordinateReferenceSystem("4979"), // WGS 84 + ctxt); + ASSERT_EQ(list.size(), 2); + EXPECT_EQ(list[1]->exportToPROJString( + PROJStringFormatter::create( + PROJStringFormatter::Convention::PROJ_5, + authFactory->databaseContext()) + .get()), + "+proj=vgridshift +grids=egm08_25.gtx"); + } + { + auto ctxt = + CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem( + "3855"), // EGM2008 height + authFactory->createCoordinateReferenceSystem("4979"), // WGS 84 + ctxt); + ASSERT_EQ(list.size(), 2); + EXPECT_EQ( + list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=vgridshift +grids=egm08_25.gtx"); + } + { + auto ctxt = + CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4979"), // WGS 84 + authFactory->createCoordinateReferenceSystem( + "3855"), // EGM2008 height + ctxt); + ASSERT_EQ(list.size(), 2); + EXPECT_EQ( + list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=vgridshift +grids=egm08_25.gtx"); + } +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_geogCRS_noop) { + + auto op = CoordinateOperationFactory::create()->createOperation( + GeographicCRS::EPSG_4326, GeographicCRS::EPSG_4326); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->nameStr(), "Null geographic offset from WGS 84 to WGS 84"); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), ""); + EXPECT_EQ(op->inverse()->nameStr(), op->nameStr()); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_geogCRS_longitude_rotation) { + + auto src = GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "A"), + GeodeticReferenceFrame::create(PropertyMap(), Ellipsoid::WGS84, + optional<std::string>(), + PrimeMeridian::GREENWICH), + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)); + auto dest = GeographicCRS::create( + PropertyMap().set(IdentifiedObject::NAME_KEY, "B"), + GeodeticReferenceFrame::create(PropertyMap(), Ellipsoid::WGS84, + optional<std::string>(), + PrimeMeridian::PARIS), + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)); + + auto op = CoordinateOperationFactory::create()->createOperation(src, dest); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=longlat " + "+ellps=WGS84 +pm=paris +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); + EXPECT_EQ(op->inverse()->exportToWKT(WKTFormatter::create().get()), + CoordinateOperationFactory::create() + ->createOperation(dest, src) + ->exportToWKT(WKTFormatter::create().get())); + EXPECT_TRUE( + op->inverse()->isEquivalentTo(CoordinateOperationFactory::create() + ->createOperation(dest, src) + .get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_geogCRS_longitude_rotation_context) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4807"), // NTF(Paris) + authFactory->createCoordinateReferenceSystem("4275"), // NTF + ctxt); + ASSERT_EQ(list.size(), 2); + EXPECT_EQ(list[0]->nameStr(), "NTF (Paris) to NTF (1)"); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=grad +xy_out=rad +step +inv " + "+proj=longlat +ellps=clrk80ign +pm=paris +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap " + "+order=2,1"); + EXPECT_EQ(list[1]->nameStr(), "NTF (Paris) to NTF (2)"); + EXPECT_EQ(list[1]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=grad +xy_out=rad +step +inv " + "+proj=longlat +ellps=clrk80ign +pm=2.33720833333333 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap " + "+order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_geogCRS_context_concatenated_operation) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4807"), // NTF(Paris) + authFactory->createCoordinateReferenceSystem("4171"), // RGF93 + ctxt); + ASSERT_EQ(list.size(), 3); + EXPECT_EQ(list[0]->nameStr(), "NTF (Paris) to RGF93 (2)"); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=grad +xy_out=rad +step +inv " + "+proj=longlat +ellps=clrk80ign +pm=paris +step +proj=hgridshift " + "+grids=ntf_r93.gsb +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); + + EXPECT_TRUE(nn_dynamic_pointer_cast<ConcatenatedOperation>(list[0]) != + nullptr); + auto grids = list[0]->gridsNeeded(DatabaseContext::create()); + EXPECT_EQ(grids.size(), 1); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_geogCRS_context_same_grid_name) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4314"), // DHDN + authFactory->createCoordinateReferenceSystem("4258"), // ETRS89 + ctxt); + ASSERT_TRUE(!list.empty()); + EXPECT_EQ(list[0]->nameStr(), "DHDN to ETRS89 (8)"); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift " + "+grids=BETA2007.gsb +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_geogCRS_geographic_offset_context) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4120"), // NTF(Paris) + authFactory->createCoordinateReferenceSystem("4121"), // NTF + ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ(list[0]->nameStr(), "Greek to GGRS87 (1)"); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=geogoffset " + "+dlat=-5.86 +dlon=0.28 +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_geogCRS_CH1903_to_CH1903plus_context) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4149"), // CH1903 + authFactory->createCoordinateReferenceSystem("4150"), // CH1903+ + ctxt); + ASSERT_EQ(list.size(), 2); + + EXPECT_EQ(list[0]->nameStr(), + "CH1903 to ETRS89 (1) + Inverse of CH1903+ to ETRS89 (1)"); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + ""); + + EXPECT_EQ(list[1]->nameStr(), "CH1903 to CH1903+ (1)"); + EXPECT_EQ(list[1]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=hgridshift +grids=CHENyx06a.gsb " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg " + "+step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_geogCRS_3D) { + + auto geogcrs_m_obj = + PROJStringParser().createFromPROJString("+proj=longlat +vunits=m"); + auto geogcrs_m = nn_dynamic_pointer_cast<CRS>(geogcrs_m_obj); + ASSERT_TRUE(geogcrs_m != nullptr); + + auto geogcrs_ft_obj = + PROJStringParser().createFromPROJString("+proj=longlat +vunits=ft"); + auto geogcrs_ft = nn_dynamic_pointer_cast<CRS>(geogcrs_ft_obj); + ASSERT_TRUE(geogcrs_ft != nullptr); + + { + auto op = CoordinateOperationFactory::create()->createOperation( + NN_CHECK_ASSERT(geogcrs_m), NN_CHECK_ASSERT(geogcrs_ft)); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=unitconvert +z_in=m +z_out=ft"); + } + + { + auto op = CoordinateOperationFactory::create()->createOperation( + NN_CHECK_ASSERT(geogcrs_ft), NN_CHECK_ASSERT(geogcrs_m)); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=unitconvert +z_in=ft +z_out=m"); + } + + auto geogcrs_m_with_pm_obj = PROJStringParser().createFromPROJString( + "+proj=longlat +pm=paris +vunits=m"); + auto geogcrs_m_with_pm = + nn_dynamic_pointer_cast<CRS>(geogcrs_m_with_pm_obj); + ASSERT_TRUE(geogcrs_m_with_pm != nullptr); + + { + auto op = CoordinateOperationFactory::create()->createOperation( + NN_CHECK_ASSERT(geogcrs_m_with_pm), NN_CHECK_ASSERT(geogcrs_ft)); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=unitconvert +xy_in=deg +z_in=m " + "+xy_out=rad +z_out=m +step +inv +proj=longlat +ellps=WGS84 " + "+pm=paris +step +proj=unitconvert +xy_in=rad +z_in=m " + "+xy_out=deg +z_out=ft"); + } +} + +// --------------------------------------------------------------------------- + +TEST(operation, geocentricCRS_to_geogCRS_same_datum) { + + auto op = CoordinateOperationFactory::create()->createOperation( + createGeocentricDatumWGS84(), GeographicCRS::EPSG_4326); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=cart +ellps=WGS84 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap " + "+order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geocentricCRS_to_geogCRS_different_datum) { + + auto op = CoordinateOperationFactory::create()->createOperation( + createGeocentricDatumWGS84(), GeographicCRS::EPSG_4269); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->nameStr(), "Null geocentric translation from WGS 84 to NAD83 " + "(geocentric) + Conversion from NAD83 " + "(geocentric) to NAD83"); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=cart +ellps=GRS80 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap " + "+order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_geocentricCRS_different_datum) { + + auto op = CoordinateOperationFactory::create()->createOperation( + GeographicCRS::EPSG_4269, createGeocentricDatumWGS84()); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->nameStr(), "Conversion from NAD83 to NAD83 (geocentric) + " + "Null geocentric translation from NAD83 " + "(geocentric) to WGS 84"); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart " + "+ellps=GRS80"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geocentricCRS_to_geocentricCRS_noop) { + + auto op = CoordinateOperationFactory::create()->createOperation( + createGeocentricDatumWGS84(), createGeocentricDatumWGS84()); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->nameStr(), + "Null geocentric translation from WGS 84 to WGS 84"); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), ""); + EXPECT_EQ(op->inverse()->nameStr(), op->nameStr()); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geocentricCRS_to_geogCRS_same_datum_context) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4326"), + // WGS84 geocentric + authFactory->createCoordinateReferenceSystem("4978"), ctxt); + ASSERT_EQ(list.size(), 1); + + EXPECT_EQ(list[0]->nameStr(), + "Conversion from WGS 84 (geog2D) to WGS 84 (geocentric)"); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart " + "+ellps=WGS84"); + + EXPECT_EQ(list[0]->inverse()->nameStr(), + "Conversion from WGS 84 (geocentric) to WGS 84 (geog2D)"); + EXPECT_EQ(list[0]->inverse()->exportToPROJString( + PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=cart +ellps=WGS84 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap " + "+order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geocentricCRS_to_geogCRS_same_datum_context_all_auth) { + // This is to check we don't use OGC:CRS84 as a pivot + auto authFactoryEPSG = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto authFactoryAll = + AuthorityFactory::create(DatabaseContext::create(), std::string()); + auto ctxt = + CoordinateOperationContext::create(authFactoryAll, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactoryEPSG->createCoordinateReferenceSystem("4326"), + // WGS84 geocentric + authFactoryEPSG->createCoordinateReferenceSystem("4978"), ctxt); + ASSERT_EQ(list.size(), 1); + + EXPECT_EQ(list[0]->nameStr(), + "Conversion from WGS 84 (geog2D) to WGS 84 (geocentric)"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geocentricCRS_to_geocentricCRS_different_datum_context) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + // ITRF2000 (geocentric) + authFactory->createCoordinateReferenceSystem("4919"), + // ITRF2005 (geocentric) + authFactory->createCoordinateReferenceSystem("4896"), ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ(list[0]->nameStr(), "ITRF2000 to ITRF2005 (1)"); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=helmert +x=-0.0001 " + "+y=0.0008 +z=0.0058 +rx=0 +ry=0 +rz=0 +s=-0.0004 +dx=0.0002 " + "+dy=-0.0001 +dz=0.0018 +drx=0 +dry=0 +drz=0 +ds=-8e-05 " + "+t_epoch=2000 +convention=position_vector"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_geocentricCRS_same_datum_to_context) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + // WGS84 geocentric + authFactory->createCoordinateReferenceSystem("4978"), + authFactory->createCoordinateReferenceSystem("4326"), ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ(list[0]->nameStr(), + "Conversion from WGS 84 (geocentric) to WGS 84 (geog2D)"); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=cart +ellps=WGS84 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap " + "+order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, + geogCRS_to_geogCRS_different_datum_though_geocentric_transform_context) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + // ITRF2000 (geog3D) + authFactory->createCoordinateReferenceSystem("7909"), + // ITRF2005 (geog3D) + authFactory->createCoordinateReferenceSystem("7910"), ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ(list[0]->nameStr(), + "Conversion from ITRF2000 (geog3D) to ITRF2000 (geocentric) + " + "ITRF2000 to ITRF2005 (1) + " + "Conversion from ITRF2005 (geocentric) to ITRF2005 (geog3D)"); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +z_in=m +xy_out=rad +z_out=m " + "+step +proj=cart +ellps=GRS80 +step +proj=helmert +x=-0.0001 " + "+y=0.0008 +z=0.0058 +rx=0 +ry=0 +rz=0 +s=-0.0004 +dx=0.0002 " + "+dy=-0.0001 +dz=0.0018 +drx=0 +dry=0 +drz=0 +ds=-8e-05 " + "+t_epoch=2000 +convention=position_vector +step +inv " + "+proj=cart +ellps=GRS80 +step +proj=unitconvert +xy_in=rad " + "+z_in=m +xy_out=deg +z_out=m +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_geocentricCRS_different_datum_context) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + // ITRF2000 (geog3D) + authFactory->createCoordinateReferenceSystem("7909"), + // ITRF2005 (geocentric) + authFactory->createCoordinateReferenceSystem("4896"), ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ(list[0]->nameStr(), + "Conversion from ITRF2000 (geog3D) to ITRF2000 (geocentric) + " + "ITRF2000 to ITRF2005 (1)"); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +z_in=m +xy_out=rad +z_out=m " + "+step +proj=cart +ellps=GRS80 +step +proj=helmert +x=-0.0001 " + "+y=0.0008 +z=0.0058 +rx=0 +ry=0 +rz=0 +s=-0.0004 +dx=0.0002 " + "+dy=-0.0001 +dz=0.0018 +drx=0 +dry=0 +drz=0 +ds=-8e-05 " + "+t_epoch=2000 +convention=position_vector"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geocentricCRS_to_geogCRS_different_datum_context) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + // ITRF2000 (geocentric) + authFactory->createCoordinateReferenceSystem("4919"), + // ITRF2005 (geog3D) + authFactory->createCoordinateReferenceSystem("7910"), ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ(list[0]->nameStr(), + "ITRF2000 to ITRF2005 (1) + " + "Conversion from ITRF2005 (geocentric) to ITRF2005 (geog3D)"); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=helmert +x=-0.0001 " + "+y=0.0008 +z=0.0058 +rx=0 +ry=0 +rz=0 +s=-0.0004 +dx=0.0002 " + "+dy=-0.0001 +dz=0.0018 +drx=0 +dry=0 +drz=0 +ds=-8e-05 " + "+t_epoch=2000 +convention=position_vector +step +inv " + "+proj=cart +ellps=GRS80 +step +proj=unitconvert +xy_in=rad " + "+z_in=m +xy_out=deg +z_out=m +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, esri_projectedCRS_to_geogCRS_with_ITRF_intermediate_context) { + auto dbContext = DatabaseContext::create(); + auto authFactoryEPSG = AuthorityFactory::create(dbContext, "EPSG"); + auto authFactoryESRI = AuthorityFactory::create(dbContext, "ESRI"); + auto ctxt = + CoordinateOperationContext::create(authFactoryEPSG, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + // NAD_1983_CORS96_StatePlane_North_Carolina_FIPS_3200_Ft_US (projected) + authFactoryESRI->createCoordinateReferenceSystem("103501"), + // ITRF2005 (geog3D) + authFactoryEPSG->createCoordinateReferenceSystem("7910"), ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ(list[0]->nameStr(), + "Inverse of NAD_1983_CORS96_StatePlane_North_Carolina_" + "FIPS_3200_Ft_US + " + "Conversion from NAD83(CORS96) (geog2D) to NAD83(CORS96) " + "(geocentric) + Inverse of ITRF2000 to NAD83(CORS96) (1) + " + "ITRF2000 to ITRF2005 (1) + " + "Conversion from ITRF2005 (geocentric) to ITRF2005 (geog3D)"); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=unitconvert +xy_in=us-ft +z_in=us-ft " + "+xy_out=m +z_out=m +step +inv +proj=lcc +lat_0=33.75 +lon_0=-79 " + "+lat_1=34.3333333333333 +lat_2=36.1666666666667 " + "+x_0=609601.219202438 +y_0=0 +ellps=GRS80 +step +proj=cart " + "+ellps=GRS80 +step +inv +proj=helmert +x=0.9956 +y=-1.9013 " + "+z=-0.5215 +rx=0.025915 +ry=0.009426 +rz=0.011599 +s=0.00062 " + "+dx=0.0007 +dy=-0.0007 +dz=0.0005 +drx=6.7e-05 +dry=-0.000757 " + "+drz=-5.1e-05 +ds=-0.00018 +t_epoch=1997 " + "+convention=coordinate_frame +step +proj=helmert +x=-0.0001 " + "+y=0.0008 +z=0.0058 +rx=0 +ry=0 +rz=0 +s=-0.0004 +dx=0.0002 " + "+dy=-0.0001 +dz=0.0018 +drx=0 +dry=0 +drz=0 +ds=-8e-05 " + "+t_epoch=2000 +convention=position_vector +step +inv +proj=cart " + "+ellps=GRS80 +step +proj=unitconvert +xy_in=rad +z_in=m " + "+xy_out=deg +z_out=m +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +static ProjectedCRSNNPtr createUTM31_WGS84() { + return ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createUTM(PropertyMap(), 31, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); +} + +// --------------------------------------------------------------------------- + +static ProjectedCRSNNPtr createUTM32_WGS84() { + return ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createUTM(PropertyMap(), 32, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_projCRS) { + + auto op = CoordinateOperationFactory::create()->createOperation( + GeographicCRS::EPSG_4326, createUTM31_WGS84()); + ASSERT_TRUE(op != nullptr); + EXPECT_TRUE(std::dynamic_pointer_cast<Conversion>(op) != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=utm " + "+zone=31 +ellps=WGS84"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_longlat_to_geogCS_latlong) { + + auto sourceCRS = GeographicCRS::OGC_CRS84; + auto targetCRS = GeographicCRS::EPSG_4326; + auto op = CoordinateOperationFactory::create()->createOperation(sourceCRS, + targetCRS); + ASSERT_TRUE(op != nullptr); + auto conv = std::dynamic_pointer_cast<Conversion>(op); + ASSERT_TRUE(conv != nullptr); + EXPECT_TRUE(op->sourceCRS() && + op->sourceCRS()->isEquivalentTo(sourceCRS.get())); + EXPECT_TRUE(op->targetCRS() && + op->targetCRS()->isEquivalentTo(targetCRS.get())); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=axisswap +order=2,1"); + auto convInverse = nn_dynamic_pointer_cast<Conversion>(conv->inverse()); + ASSERT_TRUE(convInverse != nullptr); + EXPECT_TRUE(convInverse->sourceCRS() && + convInverse->sourceCRS()->isEquivalentTo(targetCRS.get())); + EXPECT_TRUE(convInverse->targetCRS() && + convInverse->targetCRS()->isEquivalentTo(sourceCRS.get())); + EXPECT_EQ(conv->method()->exportToWKT(WKTFormatter::create().get()), + convInverse->method()->exportToWKT(WKTFormatter::create().get())); + EXPECT_TRUE(conv->method()->isEquivalentTo(convInverse->method().get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_longlat_to_geogCS_latlong_database) { + + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), std::string()); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + AuthorityFactory::create(DatabaseContext::create(), "OGC") + ->createCoordinateReferenceSystem("CRS84"), + AuthorityFactory::create(DatabaseContext::create(), "EPSG") + ->createCoordinateReferenceSystem("4326"), + ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_longlat_to_projCRS) { + + auto op = CoordinateOperationFactory::create()->createOperation( + GeographicCRS::OGC_CRS84, createUTM31_WGS84()); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=utm +zone=31 +ellps=WGS84"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_different_from_baseCRS_to_projCRS) { + + auto op = CoordinateOperationFactory::create()->createOperation( + GeographicCRS::EPSG_4807, createUTM31_WGS84()); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ( + op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=grad +xy_out=rad +step +inv +proj=longlat " + "+ellps=clrk80ign +pm=paris +step +proj=utm +zone=31 " + "+ellps=WGS84"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, + geogCRS_different_from_baseCRS_to_projCRS_context_compatible_area) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("4807"), // NTF(Paris) + authFactory->createCoordinateReferenceSystem("32631"), // UTM31 WGS84 + ctxt); + ASSERT_EQ(list.size(), 4); + EXPECT_EQ( + list[0]->nameStr(), + "NTF (Paris) to NTF (1) + Inverse of WGS 84 to NTF (3) + UTM zone 31N"); + ASSERT_EQ(list[0]->coordinateOperationAccuracies().size(), 1); + EXPECT_EQ(list[0]->coordinateOperationAccuracies()[0]->value(), "1"); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=grad +xy_out=rad +step +inv " + "+proj=longlat +ellps=clrk80ign +pm=paris +step +proj=hgridshift " + "+grids=ntf_r93.gsb +step +proj=utm +zone=31 +ellps=WGS84"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geocentricCRS_to_projCRS) { + + auto op = CoordinateOperationFactory::create()->createOperation( + createGeocentricDatumWGS84(), createUTM31_WGS84()); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=cart +ellps=WGS84 +step " + "+proj=utm +zone=31 +ellps=WGS84"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, projCRS_to_geogCRS) { + + auto op = CoordinateOperationFactory::create()->createOperation( + createUTM31_WGS84(), GeographicCRS::EPSG_4326); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=utm +zone=31 +ellps=WGS84 +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap " + "+order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, projCRS_to_projCRS) { + + auto op = CoordinateOperationFactory::create()->createOperation( + createUTM31_WGS84(), createUTM32_WGS84()); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=utm +zone=31 +ellps=WGS84 +step " + "+proj=utm +zone=32 +ellps=WGS84"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, projCRS_to_projCRS_different_baseCRS) { + + auto utm32 = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4807, + Conversion::createUTM(PropertyMap(), 32, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + + auto op = CoordinateOperationFactory::create()->createOperation( + createUTM31_WGS84(), utm32); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=utm +zone=31 +ellps=WGS84 +step " + "+proj=utm +zone=32 +ellps=clrk80ign +pm=paris"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, projCRS_to_projCRS_context_compatible_area) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("32634"), // UTM 34 + authFactory->createCoordinateReferenceSystem( + "2171"), // Pulkovo 42 Poland I + ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ(list[0]->nameStr(), + "Inverse of UTM zone 34N + Inverse of Pulkovo 1942(58) to WGS 84 " + "(1) + Poland zone I"); + ASSERT_EQ(list[0]->coordinateOperationAccuracies().size(), 1); + EXPECT_EQ(list[0]->coordinateOperationAccuracies()[0]->value(), "1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, projCRS_to_projCRS_context_compatible_area_bis) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem( + "3844"), // Pulkovo 42 Stereo 70 (Romania) + authFactory->createCoordinateReferenceSystem("32634"), // UTM 34 + ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ(list[0]->nameStr(), "Inverse of Stereo 70 + " + "Pulkovo 1942(58) to WGS 84 " + "(19) + UTM zone 34N"); + ASSERT_EQ(list[0]->coordinateOperationAccuracies().size(), 1); + EXPECT_EQ(list[0]->coordinateOperationAccuracies()[0]->value(), "3"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, projCRS_to_projCRS_context_one_incompatible_area) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("32631"), // UTM 31 + authFactory->createCoordinateReferenceSystem( + "2171"), // Pulkovo 42 Poland I + ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ(list[0]->nameStr(), + "Inverse of UTM zone 31N + Inverse of Pulkovo 1942(58) to WGS 84 " + "(1) + Poland zone I"); + ASSERT_EQ(list[0]->coordinateOperationAccuracies().size(), 1); + EXPECT_EQ(list[0]->coordinateOperationAccuracies()[0]->value(), "1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, projCRS_to_projCRS_context_incompatible_areas) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + authFactory->createCoordinateReferenceSystem("32631"), // UTM 31 + authFactory->createCoordinateReferenceSystem("32633"), // UTM 33 + ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ(list[0]->nameStr(), "Inverse of UTM zone 31N + UTM zone 33N"); + ASSERT_EQ(list[0]->coordinateOperationAccuracies().size(), 1); + EXPECT_EQ(list[0]->coordinateOperationAccuracies()[0]->value(), "0"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, projCRS_to_projCRS_north_pole_inverted_axis) { + + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), std::string()); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + AuthorityFactory::create(DatabaseContext::create(), "EPSG") + ->createCoordinateReferenceSystem("32661"), + AuthorityFactory::create(DatabaseContext::create(), "EPSG") + ->createCoordinateReferenceSystem("5041"), + ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, projCRS_to_projCRS_south_pole_inverted_axis) { + + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), std::string()); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + AuthorityFactory::create(DatabaseContext::create(), "EPSG") + ->createCoordinateReferenceSystem("32761"), + AuthorityFactory::create(DatabaseContext::create(), "EPSG") + ->createCoordinateReferenceSystem("5042"), + ctxt); + ASSERT_EQ(list.size(), 1); + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, boundCRS_of_geogCRS_to_geogCRS) { + auto boundCRS = BoundCRS::createFromTOWGS84( + GeographicCRS::EPSG_4807, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + auto op = CoordinateOperationFactory::create()->createOperation( + boundCRS, GeographicCRS::EPSG_4326); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ( + op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=grad +xy_out=rad +step +inv +proj=longlat " + "+ellps=clrk80ign +pm=paris +step +proj=cart +ellps=clrk80ign " + "+step +proj=helmert +x=1 +y=2 +z=3 +rx=4 +ry=5 +rz=6 +s=7 " + "+convention=position_vector +step " + "+inv +proj=cart +ellps=WGS84 +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, boundCRS_of_geogCRS_to_unrelated_geogCRS) { + auto boundCRS = BoundCRS::createFromTOWGS84( + GeographicCRS::EPSG_4807, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + auto op = CoordinateOperationFactory::create()->createOperation( + boundCRS, GeographicCRS::EPSG_4269); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + CoordinateOperationFactory::create() + ->createOperation(GeographicCRS::EPSG_4807, + GeographicCRS::EPSG_4269) + ->exportToPROJString(PROJStringFormatter::create().get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, boundCRS_of_projCRS_to_geogCRS) { + auto utm31 = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4807, + Conversion::createUTM(PropertyMap(), 31, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto boundCRS = BoundCRS::createFromTOWGS84( + utm31, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + auto op = CoordinateOperationFactory::create()->createOperation( + boundCRS, GeographicCRS::EPSG_4326); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=utm +zone=31 +ellps=clrk80ign " + "+pm=paris " + "+step +proj=cart +ellps=clrk80ign +step +proj=helmert +x=1 +y=2 " + "+z=3 +rx=4 +ry=5 +rz=6 +s=7 +convention=position_vector +step " + "+inv +proj=cart +ellps=WGS84 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg +step " + "+proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, boundCRS_of_geogCRS_to_projCRS) { + auto boundCRS = BoundCRS::createFromTOWGS84( + GeographicCRS::EPSG_4807, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + auto utm31 = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createUTM(PropertyMap(), 31, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto op = + CoordinateOperationFactory::create()->createOperation(boundCRS, utm31); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ( + op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=grad +xy_out=rad +step +inv +proj=longlat " + "+ellps=clrk80ign +pm=paris +step +proj=cart +ellps=clrk80ign " + "+step +proj=helmert +x=1 +y=2 +z=3 +rx=4 +ry=5 +rz=6 +s=7 " + "+convention=position_vector +step " + "+inv +proj=cart +ellps=WGS84 +step +proj=utm +zone=31 " + "+ellps=WGS84"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, geogCRS_to_boundCRS_of_geogCRS) { + auto boundCRS = BoundCRS::createFromTOWGS84( + GeographicCRS::EPSG_4807, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + auto op = CoordinateOperationFactory::create()->createOperation( + GeographicCRS::EPSG_4326, boundCRS); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart " + "+ellps=WGS84 +step +inv +proj=helmert +x=1 +y=2 +z=3 +rx=4 " + "+ry=5 +rz=6 +s=7 +convention=position_vector +step +inv " + "+proj=cart +ellps=clrk80ign +step +proj=longlat " + "+ellps=clrk80ign +pm=paris +step +proj=unitconvert +xy_in=rad " + "+xy_out=grad +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, boundCRS_to_boundCRS) { + auto utm31 = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4807, + Conversion::createUTM(PropertyMap(), 31, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto utm32 = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4269, + Conversion::createUTM(PropertyMap(), 32, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto boundCRS1 = BoundCRS::createFromTOWGS84( + utm31, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + auto boundCRS2 = BoundCRS::createFromTOWGS84( + utm32, std::vector<double>{8, 9, 10, 11, 12, 13, 14}); + auto op = CoordinateOperationFactory::create()->createOperation(boundCRS1, + boundCRS2); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=utm +zone=31 +ellps=clrk80ign " + "+pm=paris " + "+step +proj=cart +ellps=clrk80ign +step +proj=helmert +x=1 +y=2 " + "+z=3 +rx=4 +ry=5 +rz=6 +s=7 +convention=position_vector +step " + "+inv +proj=helmert +x=8 +y=9 +z=10 +rx=11 +ry=12 +rz=13 +s=14 " + "+convention=position_vector +step +inv +proj=cart +ellps=GRS80 " + "+step +proj=utm +zone=32 +ellps=GRS80"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, boundCRS_to_boundCRS_noop_for_TOWGS84) { + auto boundCRS1 = BoundCRS::createFromTOWGS84( + GeographicCRS::EPSG_4807, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + auto boundCRS2 = BoundCRS::createFromTOWGS84( + GeographicCRS::EPSG_4269, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + auto op = CoordinateOperationFactory::create()->createOperation(boundCRS1, + boundCRS2); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ( + op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=grad +xy_out=rad +step +inv +proj=longlat " + "+ellps=clrk80ign +pm=paris +step +proj=cart +ellps=clrk80ign " + "+step +inv +proj=cart +ellps=GRS80 +step +proj=unitconvert " + "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, boundCRS_to_boundCRS_unralated_hub) { + auto boundCRS1 = BoundCRS::createFromTOWGS84( + GeographicCRS::EPSG_4807, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + auto boundCRS2 = BoundCRS::create( + GeographicCRS::EPSG_4269, GeographicCRS::EPSG_4979, + Transformation::createGeocentricTranslations( + PropertyMap(), GeographicCRS::EPSG_4269, GeographicCRS::EPSG_4979, + 1.0, 2.0, 3.0, std::vector<PositionalAccuracyNNPtr>())); + auto op = CoordinateOperationFactory::create()->createOperation(boundCRS1, + boundCRS2); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + CoordinateOperationFactory::create() + ->createOperation(boundCRS1->baseCRS(), boundCRS2->baseCRS()) + ->exportToPROJString(PROJStringFormatter::create().get())); +} + +// --------------------------------------------------------------------------- + +static VerticalCRSNNPtr createVerticalCRS() { + PropertyMap propertiesVDatum; + propertiesVDatum.set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 5101) + .set(IdentifiedObject::NAME_KEY, "Ordnance Datum Newlyn"); + auto vdatum = VerticalReferenceFrame::create(propertiesVDatum); + PropertyMap propertiesCRS; + propertiesCRS.set(Identifier::CODESPACE_KEY, "EPSG") + .set(Identifier::CODE_KEY, 5701) + .set(IdentifiedObject::NAME_KEY, "ODN height"); + return VerticalCRS::create( + propertiesCRS, vdatum, + VerticalCS::createGravityRelatedHeight(UnitOfMeasure::METRE)); +} + +// --------------------------------------------------------------------------- + +TEST(operation, compoundCRS_to_geogCRS) { + + auto compound = CompoundCRS::create( + PropertyMap(), + std::vector<CRSNNPtr>{GeographicCRS::EPSG_4326, createVerticalCRS()}); + auto op = CoordinateOperationFactory::create()->createOperation( + compound, GeographicCRS::EPSG_4807); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + CoordinateOperationFactory::create() + ->createOperation(GeographicCRS::EPSG_4326, + GeographicCRS::EPSG_4807) + ->exportToPROJString(PROJStringFormatter::create().get())); +} + +// --------------------------------------------------------------------------- + +static BoundCRSNNPtr createBoundVerticalCRS() { + auto vertCRS = createVerticalCRS(); + auto transformation = + Transformation::createGravityRelatedHeightToGeographic3D( + PropertyMap(), vertCRS, GeographicCRS::EPSG_4979, "egm08_25.gtx", + std::vector<PositionalAccuracyNNPtr>()); + return BoundCRS::create(vertCRS, GeographicCRS::EPSG_4979, transformation); +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_height_to_PROJ_string) { + auto transf = createBoundVerticalCRS()->transformation(); + EXPECT_EQ(transf->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=vgridshift +grids=egm08_25.gtx"); + + auto grids = transf->gridsNeeded(DatabaseContext::create()); + ASSERT_EQ(grids.size(), 1); + auto gridDesc = *(grids.begin()); + EXPECT_EQ(gridDesc.shortName, "egm08_25.gtx"); + EXPECT_EQ(gridDesc.packageName, "proj-datumgrid-world"); + EXPECT_TRUE(gridDesc.url.find( + "https://download.osgeo.org/proj/proj-datumgrid-world-") == + 0) + << gridDesc.url; + if (gridDesc.available) { + EXPECT_TRUE(!gridDesc.fullName.empty()) << gridDesc.fullName; + EXPECT_TRUE(gridDesc.fullName.find(gridDesc.shortName) != + std::string::npos) + << gridDesc.fullName; + } else { + EXPECT_TRUE(gridDesc.fullName.empty()) << gridDesc.fullName; + } + EXPECT_EQ(gridDesc.directDownload, true); + EXPECT_EQ(gridDesc.openLicense, true); +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_ntv2_to_PROJ_string) { + auto transformation = Transformation::createNTv2( + PropertyMap(), GeographicCRS::EPSG_4807, GeographicCRS::EPSG_4326, + "foo.gsb", std::vector<PositionalAccuracyNNPtr>()); + EXPECT_EQ( + transformation->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=grad +xy_out=rad +step " + "+proj=hgridshift +grids=foo.gsb +step +proj=unitconvert " + "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_VERTCON_to_PROJ_string) { + auto verticalCRS1 = createVerticalCRS(); + + auto verticalCRS2 = VerticalCRS::create( + PropertyMap(), VerticalReferenceFrame::create(PropertyMap()), + VerticalCS::createGravityRelatedHeight(UnitOfMeasure::METRE)); + + // Use of this type of transformation is a bit of non-sense here + // since it should normally be used with NGVD29 and NAVD88 for VerticalCRS, + // and NAD27/NAD83 as horizontal CRS... + auto vtransformation = Transformation::createVERTCON( + PropertyMap(), verticalCRS1, verticalCRS2, "bla.gtx", + std::vector<PositionalAccuracyNNPtr>()); + EXPECT_EQ(vtransformation->exportToPROJString( + PROJStringFormatter::create().get()), + "+proj=vgridshift +grids=bla.gtx +multiplier=0.001"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_longitude_rotation_to_PROJ_string) { + + auto src = GeographicCRS::create( + PropertyMap(), GeodeticReferenceFrame::create( + PropertyMap(), Ellipsoid::WGS84, + optional<std::string>(), PrimeMeridian::GREENWICH), + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)); + auto dest = GeographicCRS::create( + PropertyMap(), GeodeticReferenceFrame::create( + PropertyMap(), Ellipsoid::WGS84, + optional<std::string>(), PrimeMeridian::PARIS), + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)); + auto transformation = Transformation::createLongitudeRotation( + PropertyMap(), src, dest, Angle(10)); + EXPECT_EQ( + transformation->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +inv " + "+proj=longlat +ellps=WGS84 +pm=10 +step +proj=unitconvert " + "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1"); + EXPECT_EQ(transformation->inverse()->exportToPROJString( + PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +inv " + "+proj=longlat +ellps=WGS84 +pm=-10 +step +proj=unitconvert " + "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_Geographic2D_offsets_to_PROJ_string) { + + auto transformation = Transformation::createGeographic2DOffsets( + PropertyMap(), GeographicCRS::EPSG_4326, GeographicCRS::EPSG_4326, + Angle(0.5), Angle(-1), {}); + EXPECT_EQ( + transformation->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=geogoffset " + "+dlat=1800 +dlon=-3600 +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); + EXPECT_EQ(transformation->inverse()->exportToPROJString( + PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=geogoffset " + "+dlat=-1800 +dlon=3600 +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_Geographic3D_offsets_to_PROJ_string) { + + auto transformation = Transformation::createGeographic3DOffsets( + PropertyMap(), GeographicCRS::EPSG_4326, GeographicCRS::EPSG_4326, + Angle(0.5), Angle(-1), Length(2), {}); + EXPECT_EQ( + transformation->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=geogoffset " + "+dlat=1800 +dlon=-3600 +dh=2 +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); + EXPECT_EQ(transformation->inverse()->exportToPROJString( + PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=geogoffset " + "+dlat=-1800 +dlon=3600 +dh=-2 +step +proj=unitconvert " + "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, + transformation_Geographic2D_with_height_offsets_to_PROJ_string) { + + auto transformation = Transformation::createGeographic2DWithHeightOffsets( + PropertyMap(), + CompoundCRS::create(PropertyMap(), + {GeographicCRS::EPSG_4326, createVerticalCRS()}), + GeographicCRS::EPSG_4326, Angle(0.5), Angle(-1), Length(2), {}); + EXPECT_EQ( + transformation->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=geogoffset " + "+dlat=1800 +dlon=-3600 +dh=2 +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); + EXPECT_EQ(transformation->inverse()->exportToPROJString( + PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=geogoffset " + "+dlat=-1800 +dlon=3600 +dh=-2 +step +proj=unitconvert " + "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, transformation_vertical_offset_to_PROJ_string) { + + auto transformation = Transformation::createVerticalOffset( + PropertyMap(), createVerticalCRS(), createVerticalCRS(), Length(1), {}); + EXPECT_EQ( + transformation->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=geogoffset +dh=1"); + EXPECT_EQ(transformation->inverse()->exportToPROJString( + PROJStringFormatter::create().get()), + "+proj=geogoffset +dh=-1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, compoundCRS_with_boundVerticalCRS_to_geogCRS) { + + auto compound = CompoundCRS::create( + PropertyMap(), std::vector<CRSNNPtr>{GeographicCRS::EPSG_4326, + createBoundVerticalCRS()}); + auto op = CoordinateOperationFactory::create()->createOperation( + compound, GeographicCRS::EPSG_4979); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=vgridshift " + "+grids=egm08_25.gtx +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, compoundCRS_with_boundGeogCRS_to_geogCRS) { + + auto geogCRS = GeographicCRS::create( + PropertyMap(), GeodeticReferenceFrame::create( + PropertyMap(), Ellipsoid::WGS84, + optional<std::string>(), PrimeMeridian::GREENWICH), + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)); + auto horizBoundCRS = BoundCRS::createFromTOWGS84( + geogCRS, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + auto compound = CompoundCRS::create( + PropertyMap(), + std::vector<CRSNNPtr>{horizBoundCRS, createVerticalCRS()}); + auto op = CoordinateOperationFactory::create()->createOperation( + compound, GeographicCRS::EPSG_4979); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=cart " + "+ellps=WGS84 +step +proj=helmert +x=1 +y=2 +z=3 +rx=4 +ry=5 " + "+rz=6 +s=7 +convention=position_vector +step +inv +proj=cart " + "+ellps=WGS84 +step +proj=unitconvert +xy_in=rad +xy_out=deg " + "+step +proj=axisswap +order=2,1"); +} + +// --------------------------------------------------------------------------- + +TEST(operation, compoundCRS_with_boundGeogCRS_and_boundVerticalCRS_to_geogCRS) { + + auto horizBoundCRS = BoundCRS::createFromTOWGS84( + GeographicCRS::EPSG_4807, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + auto compound = CompoundCRS::create( + PropertyMap(), + std::vector<CRSNNPtr>{horizBoundCRS, createBoundVerticalCRS()}); + auto op = CoordinateOperationFactory::create()->createOperation( + compound, GeographicCRS::EPSG_4979); + ASSERT_TRUE(op != nullptr); + // Not completely sure the order of horizontal and vertical operations + // makes sense + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=grad +xy_out=rad +step +inv " + "+proj=longlat +ellps=clrk80ign +pm=paris +step +proj=cart " + "+ellps=clrk80ign +step +proj=helmert +x=1 +y=2 +z=3 +rx=4 +ry=5 " + "+rz=6 +s=7 +convention=position_vector +step +inv +proj=cart " + "+ellps=WGS84 +step +proj=vgridshift +grids=egm08_25.gtx +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step " + "+proj=axisswap +order=2,1"); + + auto grids = op->gridsNeeded(DatabaseContext::create()); + EXPECT_EQ(grids.size(), 1); + + auto opInverse = CoordinateOperationFactory::create()->createOperation( + GeographicCRS::EPSG_4979, compound); + ASSERT_TRUE(opInverse != nullptr); + EXPECT_TRUE(opInverse->inverse()->isEquivalentTo(op.get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, compoundCRS_with_boundProjCRS_and_boundVerticalCRS_to_geogCRS) { + + auto horizBoundCRS = BoundCRS::createFromTOWGS84( + ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4807, + Conversion::createUTM(PropertyMap(), 31, true), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)), + std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + auto compound = CompoundCRS::create( + PropertyMap(), + std::vector<CRSNNPtr>{horizBoundCRS, createBoundVerticalCRS()}); + auto op = CoordinateOperationFactory::create()->createOperation( + compound, GeographicCRS::EPSG_4979); + ASSERT_TRUE(op != nullptr); + // Not completely sure the order of horizontal and vertical operations + // makes sense + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=utm +zone=31 +ellps=clrk80ign " + "+pm=paris +step +proj=cart +ellps=clrk80ign +step +proj=helmert " + "+x=1 +y=2 +z=3 +rx=4 +ry=5 +rz=6 +s=7 " + "+convention=position_vector +step +inv +proj=cart +ellps=WGS84 " + "+step +proj=vgridshift +grids=egm08_25.gtx +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step " + "+proj=axisswap +order=2,1"); + + auto opInverse = CoordinateOperationFactory::create()->createOperation( + GeographicCRS::EPSG_4979, compound); + ASSERT_TRUE(opInverse != nullptr); + EXPECT_TRUE(opInverse->inverse()->isEquivalentTo(op.get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, compoundCRS_to_compoundCRS) { + auto compound1 = CompoundCRS::create( + PropertyMap(), + std::vector<CRSNNPtr>{createUTM31_WGS84(), createVerticalCRS()}); + auto compound2 = CompoundCRS::create( + PropertyMap(), + std::vector<CRSNNPtr>{createUTM32_WGS84(), createVerticalCRS()}); + auto op = CoordinateOperationFactory::create()->createOperation(compound1, + compound2); + ASSERT_TRUE(op != nullptr); + auto opRef = CoordinateOperationFactory::create()->createOperation( + createUTM31_WGS84(), createUTM32_WGS84()); + ASSERT_TRUE(opRef != nullptr); + EXPECT_TRUE(op->isEquivalentTo(opRef.get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, compoundCRS_to_compoundCRS_with_vertical_transform) { + auto verticalCRS1 = createVerticalCRS(); + + auto verticalCRS2 = VerticalCRS::create( + PropertyMap(), VerticalReferenceFrame::create(PropertyMap()), + VerticalCS::createGravityRelatedHeight(UnitOfMeasure::METRE)); + + // Use of this type of transformation is a bit of non-sense here + // since it should normally be used with NGVD29 and NAVD88 for VerticalCRS, + // and NAD27/NAD83 as horizontal CRS... + auto vtransformation = Transformation::createVERTCON( + PropertyMap(), verticalCRS1, verticalCRS2, "bla.gtx", + std::vector<PositionalAccuracyNNPtr>()); + + auto compound1 = CompoundCRS::create( + PropertyMap(), + std::vector<CRSNNPtr>{ + ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createTransverseMercator(PropertyMap(), Angle(1), + Angle(2), Scale(3), + Length(4), Length(5)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)), + BoundCRS::create(verticalCRS1, verticalCRS2, vtransformation)}); + auto compound2 = CompoundCRS::create( + PropertyMap(), + std::vector<CRSNNPtr>{createUTM32_WGS84(), verticalCRS2}); + + auto op = CoordinateOperationFactory::create()->createOperation(compound1, + compound2); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=tmerc +lat_0=1 +lon_0=2 +k_0=3 " + "+x_0=4 +y_0=5 +ellps=WGS84 +step " + "+proj=vgridshift +grids=bla.gtx +multiplier=0.001 +step " + "+proj=utm +zone=32 " + "+ellps=WGS84"); + { + auto formatter = PROJStringFormatter::create(); + formatter->setUseETMercForTMerc(true); + EXPECT_EQ(op->exportToPROJString(formatter.get()), + "+proj=pipeline +step +inv +proj=etmerc +lat_0=1 +lon_0=2 " + "+k_0=3 +x_0=4 +y_0=5 +ellps=WGS84 +step " + "+proj=vgridshift +grids=bla.gtx +multiplier=0.001 +step " + "+proj=utm +zone=32 " + "+ellps=WGS84"); + } + { + auto formatter = PROJStringFormatter::create(); + formatter->setUseETMercForTMerc(true); + EXPECT_EQ(op->inverse()->exportToPROJString(formatter.get()), + "+proj=pipeline +step +inv +proj=utm +zone=32 +ellps=WGS84 " + "+step +inv +proj=vgridshift +grids=bla.gtx " + "+multiplier=0.001 +step +proj=etmerc +lat_0=1 +lon_0=2 " + "+k_0=3 +x_0=4 +y_0=5 +ellps=WGS84"); + } + + auto opInverse = CoordinateOperationFactory::create()->createOperation( + compound2, compound1); + ASSERT_TRUE(opInverse != nullptr); + { + auto formatter = PROJStringFormatter::create(); + auto formatter2 = PROJStringFormatter::create(); + EXPECT_EQ(opInverse->inverse()->exportToPROJString(formatter.get()), + op->exportToPROJString(formatter2.get())); + } +} + +// --------------------------------------------------------------------------- + +TEST(operation, vertCRS_to_vertCRS) { + + auto vertcrs_m_obj = PROJStringParser().createFromPROJString("+vunits=m"); + auto vertcrs_m = nn_dynamic_pointer_cast<VerticalCRS>(vertcrs_m_obj); + ASSERT_TRUE(vertcrs_m != nullptr); + + auto vertcrs_ft_obj = PROJStringParser().createFromPROJString("+vunits=ft"); + auto vertcrs_ft = nn_dynamic_pointer_cast<VerticalCRS>(vertcrs_ft_obj); + ASSERT_TRUE(vertcrs_ft != nullptr); + + auto vertcrs_us_ft_obj = + PROJStringParser().createFromPROJString("+vunits=us-ft"); + auto vertcrs_us_ft = + nn_dynamic_pointer_cast<VerticalCRS>(vertcrs_us_ft_obj); + ASSERT_TRUE(vertcrs_us_ft != nullptr); + + { + auto op = CoordinateOperationFactory::create()->createOperation( + NN_CHECK_ASSERT(vertcrs_m), NN_CHECK_ASSERT(vertcrs_ft)); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=unitconvert +z_in=m +z_out=ft"); + } + { + auto op = CoordinateOperationFactory::create()->createOperation( + NN_CHECK_ASSERT(vertcrs_m), NN_CHECK_ASSERT(vertcrs_ft)); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->inverse()->exportToPROJString( + PROJStringFormatter::create().get()), + "+proj=unitconvert +z_in=ft +z_out=m"); + } + { + auto op = CoordinateOperationFactory::create()->createOperation( + NN_CHECK_ASSERT(vertcrs_ft), NN_CHECK_ASSERT(vertcrs_m)); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=unitconvert +z_in=ft +z_out=m"); + } + { + auto op = CoordinateOperationFactory::create()->createOperation( + NN_CHECK_ASSERT(vertcrs_ft), NN_CHECK_ASSERT(vertcrs_us_ft)); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=affine +s33=0.999998"); + } +} + +// --------------------------------------------------------------------------- + +TEST(operation, compoundCRS_to_geogCRS_3D) { + + auto compoundcrs_ft_obj = + PROJStringParser().createFromPROJString("+proj=merc +vunits=ft"); + auto compoundcrs_ft = nn_dynamic_pointer_cast<CRS>(compoundcrs_ft_obj); + ASSERT_TRUE(compoundcrs_ft != nullptr); + + auto geogcrs_m_obj = + PROJStringParser().createFromPROJString("+proj=longlat +vunits=m"); + auto geogcrs_m = nn_dynamic_pointer_cast<CRS>(geogcrs_m_obj); + ASSERT_TRUE(geogcrs_m != nullptr); + + { + auto op = CoordinateOperationFactory::create()->createOperation( + NN_CHECK_ASSERT(compoundcrs_ft), NN_CHECK_ASSERT(geogcrs_m)); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=merc +lon_0=0 +k=1 +x_0=0 " + "+y_0=0 +ellps=WGS84 +step +proj=unitconvert +xy_in=rad " + "+z_in=ft +xy_out=deg +z_out=m"); + } + + { + auto op = CoordinateOperationFactory::create()->createOperation( + NN_CHECK_ASSERT(geogcrs_m), NN_CHECK_ASSERT(compoundcrs_ft)); + ASSERT_TRUE(op != nullptr); + EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=unitconvert +xy_in=deg +z_in=m " + "+xy_out=rad +z_out=ft +step +proj=merc +lon_0=0 +k=1 +x_0=0 " + "+y_0=0 +ellps=WGS84"); + } +} + +// --------------------------------------------------------------------------- + +TEST(operation, IGNF_LAMB1_TO_EPSG_4326) { + auto authFactory = + AuthorityFactory::create(DatabaseContext::create(), std::string()); + auto ctxt = CoordinateOperationContext::create(authFactory, nullptr, 0.0); + auto list = CoordinateOperationFactory::create()->createOperations( + AuthorityFactory::create(DatabaseContext::create(), "IGNF") + ->createCoordinateReferenceSystem("LAMB1"), + AuthorityFactory::create(DatabaseContext::create(), "EPSG") + ->createCoordinateReferenceSystem("4326"), + ctxt); + ASSERT_EQ(list.size(), 2); + + EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=lcc +lat_1=49.5 +lat_0=49.5 " + "+lon_0=0 +k_0=0.99987734 +x_0=600000 +y_0=200000 " + "+ellps=clrk80ign +pm=paris +step +proj=hgridshift " + "+grids=ntf_r93.gsb +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); + + EXPECT_EQ(list[1]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +inv +proj=lcc +lat_1=49.5 +lat_0=49.5 " + "+lon_0=0 +k_0=0.99987734 +x_0=600000 +y_0=200000 " + "+ellps=clrk80ign +pm=paris +step +proj=cart +ellps=clrk80ign " + "+step +proj=helmert +x=-168 +y=-60 +z=320 +step +inv +proj=cart " + "+ellps=WGS84 +step +proj=unitconvert +xy_in=rad +xy_out=deg " + "+step +proj=axisswap +order=2,1"); + + auto list2 = CoordinateOperationFactory::create()->createOperations( + AuthorityFactory::create(DatabaseContext::create(), "EPSG") + // NTF (Paris) / Lambert Nord France equivalent to IGNF:LAMB1 + ->createCoordinateReferenceSystem("27561"), + AuthorityFactory::create(DatabaseContext::create(), "EPSG") + ->createCoordinateReferenceSystem("4326"), + ctxt); + ASSERT_GE(list2.size(), 4U); + + EXPECT_EQ(replaceAll(list2[0]->exportToPROJString( + PROJStringFormatter::create().get()), + "0.999877341", "0.99987734"), + list[0]->exportToPROJString(PROJStringFormatter::create().get())); + + // The second entry in list2 (list2[1]) uses the + // weird +pm=2.33720833333333 from "NTF (Paris) to NTF (2)" + // and the third one uses the ESRI geographic offset method with another + // value + // so skip to the 4th method + EXPECT_EQ(replaceAll(list2[3]->exportToPROJString( + PROJStringFormatter::create().get()), + "0.999877341", "0.99987734"), + list[1]->exportToPROJString(PROJStringFormatter::create().get())); +} + +// --------------------------------------------------------------------------- + +TEST(operation, isPROJInstanciable) { + + { + auto transformation = Transformation::createGeocentricTranslations( + PropertyMap(), GeographicCRS::EPSG_4269, GeographicCRS::EPSG_4326, + 1.0, 2.0, 3.0, {}); + EXPECT_TRUE( + transformation->isPROJInstanciable(DatabaseContext::create())); + } + + // Missing grid + { + auto transformation = Transformation::createNTv2( + PropertyMap(), GeographicCRS::EPSG_4807, GeographicCRS::EPSG_4326, + "foo.gsb", std::vector<PositionalAccuracyNNPtr>()); + EXPECT_FALSE( + transformation->isPROJInstanciable(DatabaseContext::create())); + } + + // Unsupported method + { + auto transformation = Transformation::create( + PropertyMap(), GeographicCRS::EPSG_4269, GeographicCRS::EPSG_4326, + nullptr, OperationMethod::create( + PropertyMap(), std::vector<OperationParameterNNPtr>{}), + std::vector<GeneralParameterValueNNPtr>{}, + std::vector<PositionalAccuracyNNPtr>{}); + EXPECT_FALSE( + transformation->isPROJInstanciable(DatabaseContext::create())); + } +} + +// --------------------------------------------------------------------------- + +TEST(operation, createOperation_on_crs_with_canonical_bound_crs) { + auto boundCRS = BoundCRS::createFromTOWGS84( + GeographicCRS::EPSG_4267, std::vector<double>{1, 2, 3, 4, 5, 6, 7}); + auto crs = boundCRS->baseCRSWithCanonicalBoundCRS(); + { + auto op = CoordinateOperationFactory::create()->createOperation( + crs, GeographicCRS::EPSG_4326); + ASSERT_TRUE(op != nullptr); + EXPECT_TRUE(op->isEquivalentTo(boundCRS->transformation().get())); + { + auto wkt1 = op->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018) + .get()); + auto wkt2 = boundCRS->transformation()->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018) + .get()); + EXPECT_EQ(wkt1, wkt2); + } + } + { + auto op = CoordinateOperationFactory::create()->createOperation( + GeographicCRS::EPSG_4326, crs); + ASSERT_TRUE(op != nullptr); + EXPECT_TRUE( + op->isEquivalentTo(boundCRS->transformation()->inverse().get())); + { + auto wkt1 = op->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018) + .get()); + auto wkt2 = boundCRS->transformation()->inverse()->exportToWKT( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2018) + .get()); + EXPECT_EQ(wkt1, wkt2); + } + } +} + +// --------------------------------------------------------------------------- + +TEST(operation, mercator_variant_A_to_variant_B) { + auto projCRS = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createMercatorVariantA(PropertyMap(), Angle(0), Angle(1), + Scale(0.9), Length(3), Length(4)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + + auto conv = projCRS->derivingConversion(); + auto sameConv = + conv->convertToOtherMethod(EPSG_CODE_METHOD_MERCATOR_VARIANT_A); + ASSERT_TRUE(sameConv); + EXPECT_TRUE(sameConv->isEquivalentTo(conv.get())); + + auto targetConv = + conv->convertToOtherMethod(EPSG_CODE_METHOD_MERCATOR_VARIANT_B); + ASSERT_TRUE(targetConv); + + auto lat_1 = targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, UnitOfMeasure::DEGREE); + EXPECT_EQ(lat_1, 25.917499691810534) << lat_1; + + EXPECT_EQ(targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + UnitOfMeasure::DEGREE), + 1); + + EXPECT_EQ(targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_FALSE_EASTING, UnitOfMeasure::METRE), + 3); + + EXPECT_EQ(targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_FALSE_NORTHING, UnitOfMeasure::METRE), + 4); + + EXPECT_FALSE( + conv->isEquivalentTo(targetConv.get(), IComparable::Criterion::STRICT)); + EXPECT_TRUE(conv->isEquivalentTo(targetConv.get(), + IComparable::Criterion::EQUIVALENT)); + EXPECT_TRUE(targetConv->isEquivalentTo(conv.get(), + IComparable::Criterion::EQUIVALENT)); +} + +// --------------------------------------------------------------------------- + +TEST(operation, mercator_variant_A_to_variant_B_scale_1) { + auto projCRS = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createMercatorVariantA(PropertyMap(), Angle(0), Angle(1), + Scale(1.0), Length(3), Length(4)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + + auto targetConv = projCRS->derivingConversion()->convertToOtherMethod( + EPSG_CODE_METHOD_MERCATOR_VARIANT_B); + ASSERT_TRUE(targetConv); + + auto lat_1 = targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, UnitOfMeasure::DEGREE); + EXPECT_EQ(lat_1, 0.0) << lat_1; +} + +// --------------------------------------------------------------------------- + +TEST(operation, mercator_variant_A_to_variant_B_no_crs) { + auto targetConv = + Conversion::createMercatorVariantA(PropertyMap(), Angle(0), Angle(1), + Scale(1.0), Length(3), Length(4)) + ->convertToOtherMethod(EPSG_CODE_METHOD_MERCATOR_VARIANT_B); + EXPECT_FALSE(targetConv != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(operation, mercator_variant_A_to_variant_B_invalid_scale) { + auto projCRS = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createMercatorVariantA(PropertyMap(), Angle(0), Angle(1), + Scale(0.0), Length(3), Length(4)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + + auto targetConv = projCRS->derivingConversion()->convertToOtherMethod( + EPSG_CODE_METHOD_MERCATOR_VARIANT_B); + EXPECT_FALSE(targetConv != nullptr); +} + +// --------------------------------------------------------------------------- + +static GeographicCRSNNPtr geographicCRSInvalidEccentricity() { + return GeographicCRS::create( + PropertyMap(), + GeodeticReferenceFrame::create( + PropertyMap(), Ellipsoid::createFlattenedSphere( + PropertyMap(), Length(6378137), Scale(0.1)), + optional<std::string>(), PrimeMeridian::GREENWICH), + EllipsoidalCS::createLatitudeLongitude(UnitOfMeasure::DEGREE)); +} + +// --------------------------------------------------------------------------- + +TEST(operation, mercator_variant_A_to_variant_B_invalid_eccentricity) { + auto projCRS = ProjectedCRS::create( + PropertyMap(), geographicCRSInvalidEccentricity(), + Conversion::createMercatorVariantA(PropertyMap(), Angle(0), Angle(1), + Scale(1.0), Length(3), Length(4)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + + auto targetConv = projCRS->derivingConversion()->convertToOtherMethod( + EPSG_CODE_METHOD_MERCATOR_VARIANT_B); + EXPECT_FALSE(targetConv != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(operation, mercator_variant_B_to_variant_A) { + auto projCRS = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createMercatorVariantB(PropertyMap(), + Angle(25.917499691810534), Angle(1), + Length(3), Length(4)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto targetConv = projCRS->derivingConversion()->convertToOtherMethod( + EPSG_CODE_METHOD_MERCATOR_VARIANT_A); + ASSERT_TRUE(targetConv); + + EXPECT_EQ(targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + UnitOfMeasure::DEGREE), + 0); + + EXPECT_EQ(targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + UnitOfMeasure::DEGREE), + 1); + + auto k_0 = targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN, + UnitOfMeasure::SCALE_UNITY); + EXPECT_EQ(k_0, 0.9) << k_0; + + EXPECT_EQ(targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_FALSE_EASTING, UnitOfMeasure::METRE), + 3); + + EXPECT_EQ(targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_FALSE_NORTHING, UnitOfMeasure::METRE), + 4); +} + +// --------------------------------------------------------------------------- + +TEST(operation, mercator_variant_B_to_variant_A_invalid_std1) { + auto projCRS = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createMercatorVariantB(PropertyMap(), Angle(100), Angle(1), + Length(3), Length(4)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto targetConv = projCRS->derivingConversion()->convertToOtherMethod( + EPSG_CODE_METHOD_MERCATOR_VARIANT_A); + EXPECT_FALSE(targetConv != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(operation, mercator_variant_B_to_variant_A_invalid_eccentricity) { + auto projCRS = ProjectedCRS::create( + PropertyMap(), geographicCRSInvalidEccentricity(), + Conversion::createMercatorVariantB(PropertyMap(), Angle(0), Angle(1), + Length(3), Length(4)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto targetConv = projCRS->derivingConversion()->convertToOtherMethod( + EPSG_CODE_METHOD_MERCATOR_VARIANT_A); + EXPECT_FALSE(targetConv != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lcc2sp_to_lcc1sp) { + // equivalent to EPSG:2154 + auto projCRS = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4269, // something using GRS80 + Conversion::createLambertConicConformal_2SP( + PropertyMap(), Angle(46.5), Angle(3), Angle(49), Angle(44), + Length(700000), Length(6600000)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + + auto conv = projCRS->derivingConversion(); + auto targetConv = conv->convertToOtherMethod( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP); + ASSERT_TRUE(targetConv); + + { + auto lat_0 = targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + UnitOfMeasure::DEGREE); + EXPECT_NEAR(lat_0, 46.519430223986866, 1e-12) << lat_0; + + auto lon_0 = targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + UnitOfMeasure::DEGREE); + EXPECT_NEAR(lon_0, 3.0, 1e-15) << lon_0; + + auto k_0 = targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN, + UnitOfMeasure::SCALE_UNITY); + EXPECT_NEAR(k_0, 0.9990510286374692, 1e-15) << k_0; + + auto x_0 = targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_FALSE_EASTING, UnitOfMeasure::METRE); + EXPECT_NEAR(x_0, 700000, 1e-15) << x_0; + + auto y_0 = targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_FALSE_NORTHING, UnitOfMeasure::METRE); + EXPECT_NEAR(y_0, 6602157.8388103368, 1e-7) << y_0; + } + + auto _2sp_from_1sp = targetConv->convertToOtherMethod( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP); + ASSERT_TRUE(_2sp_from_1sp); + + { + auto lat_0 = _2sp_from_1sp->parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_FALSE_ORIGIN, UnitOfMeasure::DEGREE); + EXPECT_NEAR(lat_0, 46.5, 1e-15) << lat_0; + + auto lon_0 = _2sp_from_1sp->parameterValueNumeric( + EPSG_CODE_PARAMETER_LONGITUDE_FALSE_ORIGIN, UnitOfMeasure::DEGREE); + EXPECT_NEAR(lon_0, 3, 1e-15) << lon_0; + + auto lat_1 = _2sp_from_1sp->parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, + UnitOfMeasure::DEGREE); + EXPECT_NEAR(lat_1, 49, 1e-15) << lat_1; + + auto lat_2 = _2sp_from_1sp->parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_2ND_STD_PARALLEL, + UnitOfMeasure::DEGREE); + EXPECT_NEAR(lat_2, 44, 1e-15) << lat_2; + + auto x_0 = _2sp_from_1sp->parameterValueNumeric( + EPSG_CODE_PARAMETER_EASTING_FALSE_ORIGIN, UnitOfMeasure::METRE); + EXPECT_NEAR(x_0, 700000, 1e-15) << x_0; + + auto y_0 = _2sp_from_1sp->parameterValueNumeric( + EPSG_CODE_PARAMETER_NORTHING_FALSE_ORIGIN, UnitOfMeasure::METRE); + EXPECT_NEAR(y_0, 6600000, 1e-15) << y_0; + } + + EXPECT_FALSE( + conv->isEquivalentTo(targetConv.get(), IComparable::Criterion::STRICT)); + EXPECT_TRUE(conv->isEquivalentTo(targetConv.get(), + IComparable::Criterion::EQUIVALENT)); + EXPECT_TRUE(targetConv->isEquivalentTo(conv.get(), + IComparable::Criterion::EQUIVALENT)); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lcc2sp_to_lcc1sp_phi0_eq_phi1_eq_phi2) { + auto projCRS = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4269, // something using GRS80 + Conversion::createLambertConicConformal_2SP( + PropertyMap(), Angle(46.5), Angle(3), Angle(46.5), Angle(46.5), + Length(700000), Length(6600000)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + + auto conv = projCRS->derivingConversion(); + auto targetConv = conv->convertToOtherMethod( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP); + ASSERT_TRUE(targetConv); + + { + auto lat_0 = targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + UnitOfMeasure::DEGREE); + EXPECT_NEAR(lat_0, 46.5, 1e-15) << lat_0; + + auto lon_0 = targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + UnitOfMeasure::DEGREE); + EXPECT_NEAR(lon_0, 3.0, 1e-15) << lon_0; + + auto k_0 = targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN, + UnitOfMeasure::SCALE_UNITY); + EXPECT_NEAR(k_0, 1.0, 1e-15) << k_0; + + auto x_0 = targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_FALSE_EASTING, UnitOfMeasure::METRE); + EXPECT_NEAR(x_0, 700000, 1e-15) << x_0; + + auto y_0 = targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_FALSE_NORTHING, UnitOfMeasure::METRE); + EXPECT_NEAR(y_0, 6600000, 1e-15) << y_0; + } + + auto _2sp_from_1sp = targetConv->convertToOtherMethod( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP); + ASSERT_TRUE(_2sp_from_1sp); + + { + auto lat_0 = _2sp_from_1sp->parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_FALSE_ORIGIN, UnitOfMeasure::DEGREE); + EXPECT_NEAR(lat_0, 46.5, 1e-15) << lat_0; + + auto lon_0 = _2sp_from_1sp->parameterValueNumeric( + EPSG_CODE_PARAMETER_LONGITUDE_FALSE_ORIGIN, UnitOfMeasure::DEGREE); + EXPECT_NEAR(lon_0, 3, 1e-15) << lon_0; + + auto lat_1 = _2sp_from_1sp->parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, + UnitOfMeasure::DEGREE); + EXPECT_NEAR(lat_1, 46.5, 1e-15) << lat_1; + + auto lat_2 = _2sp_from_1sp->parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_2ND_STD_PARALLEL, + UnitOfMeasure::DEGREE); + EXPECT_NEAR(lat_2, 46.5, 1e-15) << lat_2; + + auto x_0 = _2sp_from_1sp->parameterValueNumeric( + EPSG_CODE_PARAMETER_EASTING_FALSE_ORIGIN, UnitOfMeasure::METRE); + EXPECT_NEAR(x_0, 700000, 1e-15) << x_0; + + auto y_0 = _2sp_from_1sp->parameterValueNumeric( + EPSG_CODE_PARAMETER_NORTHING_FALSE_ORIGIN, UnitOfMeasure::METRE); + EXPECT_NEAR(y_0, 6600000, 1e-15) << y_0; + } + + EXPECT_TRUE(conv->isEquivalentTo(targetConv.get(), + IComparable::Criterion::EQUIVALENT)); + EXPECT_TRUE(targetConv->isEquivalentTo(conv.get(), + IComparable::Criterion::EQUIVALENT)); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lcc2sp_to_lcc1sp_phi0_diff_phi1_and_phi1_eq_phi2) { + + auto projCRS = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4269, // something using GRS80 + Conversion::createLambertConicConformal_2SP( + PropertyMap(), Angle(46.123), Angle(3), Angle(46.4567), + Angle(46.4567), Length(700000), Length(6600000)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + + auto conv = projCRS->derivingConversion(); + auto targetConv = conv->convertToOtherMethod( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP); + ASSERT_TRUE(targetConv); + + { + auto lat_0 = targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_OF_NATURAL_ORIGIN, + UnitOfMeasure::DEGREE); + EXPECT_NEAR(lat_0, 46.4567, 1e-14) << lat_0; + + auto lon_0 = targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_LONGITUDE_OF_NATURAL_ORIGIN, + UnitOfMeasure::DEGREE); + EXPECT_NEAR(lon_0, 3.0, 1e-15) << lon_0; + + auto k_0 = targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_SCALE_FACTOR_AT_NATURAL_ORIGIN, + UnitOfMeasure::SCALE_UNITY); + EXPECT_NEAR(k_0, 1.0, 1e-15) << k_0; + + auto x_0 = targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_FALSE_EASTING, UnitOfMeasure::METRE); + EXPECT_NEAR(x_0, 700000, 1e-15) << x_0; + + auto y_0 = targetConv->parameterValueNumeric( + EPSG_CODE_PARAMETER_FALSE_NORTHING, UnitOfMeasure::METRE); + EXPECT_NEAR(y_0, 6637093.292952879, 1e-8) << y_0; + } + + auto _2sp_from_1sp = targetConv->convertToOtherMethod( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP); + ASSERT_TRUE(_2sp_from_1sp); + + { + auto lat_0 = _2sp_from_1sp->parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_FALSE_ORIGIN, UnitOfMeasure::DEGREE); + EXPECT_NEAR(lat_0, 46.4567, 1e-14) << lat_0; + + auto lon_0 = _2sp_from_1sp->parameterValueNumeric( + EPSG_CODE_PARAMETER_LONGITUDE_FALSE_ORIGIN, UnitOfMeasure::DEGREE); + EXPECT_NEAR(lon_0, 3, 1e-15) << lon_0; + + auto lat_1 = _2sp_from_1sp->parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_1ST_STD_PARALLEL, + UnitOfMeasure::DEGREE); + EXPECT_NEAR(lat_1, 46.4567, 1e-14) << lat_1; + + auto lat_2 = _2sp_from_1sp->parameterValueNumeric( + EPSG_CODE_PARAMETER_LATITUDE_2ND_STD_PARALLEL, + UnitOfMeasure::DEGREE); + EXPECT_NEAR(lat_2, 46.4567, 1e-14) << lat_2; + + auto x_0 = _2sp_from_1sp->parameterValueNumeric( + EPSG_CODE_PARAMETER_EASTING_FALSE_ORIGIN, UnitOfMeasure::METRE); + EXPECT_NEAR(x_0, 700000, 1e-15) << x_0; + + auto y_0 = _2sp_from_1sp->parameterValueNumeric( + EPSG_CODE_PARAMETER_NORTHING_FALSE_ORIGIN, UnitOfMeasure::METRE); + EXPECT_NEAR(y_0, 6637093.292952879, 1e-8) << y_0; + } + + EXPECT_TRUE(conv->isEquivalentTo(targetConv.get(), + IComparable::Criterion::EQUIVALENT)); + EXPECT_TRUE(targetConv->isEquivalentTo(conv.get(), + IComparable::Criterion::EQUIVALENT)); + + EXPECT_TRUE(_2sp_from_1sp->isEquivalentTo( + targetConv.get(), IComparable::Criterion::EQUIVALENT)); + EXPECT_TRUE(targetConv->isEquivalentTo(_2sp_from_1sp.get(), + IComparable::Criterion::EQUIVALENT)); + + EXPECT_TRUE(conv->isEquivalentTo(_2sp_from_1sp.get(), + IComparable::Criterion::EQUIVALENT)); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lcc1sp_to_lcc2sp_invalid_eccentricity) { + auto projCRS = ProjectedCRS::create( + PropertyMap(), geographicCRSInvalidEccentricity(), + Conversion::createLambertConicConformal_1SP(PropertyMap(), Angle(40), + Angle(1), Scale(0.99), + Length(3), Length(4)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto targetConv = projCRS->derivingConversion()->convertToOtherMethod( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP); + EXPECT_FALSE(targetConv != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lcc1sp_to_lcc2sp_invalid_scale) { + auto projCRS = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createLambertConicConformal_1SP( + PropertyMap(), Angle(40), Angle(1), Scale(0), Length(3), Length(4)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto targetConv = projCRS->derivingConversion()->convertToOtherMethod( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP); + EXPECT_FALSE(targetConv != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lcc1sp_to_lcc2sp_invalid_lat0) { + auto projCRS = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createLambertConicConformal_1SP(PropertyMap(), Angle(100), + Angle(1), Scale(0.99), + Length(3), Length(4)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto targetConv = projCRS->derivingConversion()->convertToOtherMethod( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP); + EXPECT_FALSE(targetConv != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lcc1sp_to_lcc2sp_null_lat0) { + auto projCRS = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createLambertConicConformal_1SP(PropertyMap(), Angle(0), + Angle(1), Scale(0.99), + Length(3), Length(4)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto targetConv = projCRS->derivingConversion()->convertToOtherMethod( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_2SP); + EXPECT_FALSE(targetConv != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lcc2sp_to_lcc1sp_invalid_lat0) { + auto projCRS = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createLambertConicConformal_2SP( + PropertyMap(), Angle(100), Angle(3), Angle(44), Angle(49), + Length(700000), Length(6600000)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto targetConv = projCRS->derivingConversion()->convertToOtherMethod( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP); + EXPECT_FALSE(targetConv != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lcc2sp_to_lcc1sp_invalid_lat1) { + auto projCRS = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createLambertConicConformal_2SP( + PropertyMap(), Angle(46.5), Angle(3), Angle(100), Angle(49), + Length(700000), Length(6600000)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto targetConv = projCRS->derivingConversion()->convertToOtherMethod( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP); + EXPECT_FALSE(targetConv != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lcc2sp_to_lcc1sp_invalid_lat2) { + auto projCRS = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createLambertConicConformal_2SP( + PropertyMap(), Angle(46.5), Angle(3), Angle(44), Angle(100), + Length(700000), Length(6600000)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto targetConv = projCRS->derivingConversion()->convertToOtherMethod( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP); + EXPECT_FALSE(targetConv != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lcc2sp_to_lcc1sp_invalid_lat1_opposite_lat2) { + auto projCRS = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createLambertConicConformal_2SP( + PropertyMap(), Angle(46.5), Angle(3), Angle(-49), Angle(49), + Length(700000), Length(6600000)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto targetConv = projCRS->derivingConversion()->convertToOtherMethod( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP); + EXPECT_FALSE(targetConv != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lcc2sp_to_lcc1sp_invalid_lat1_and_lat2_close_to_zero) { + auto projCRS = ProjectedCRS::create( + PropertyMap(), GeographicCRS::EPSG_4326, + Conversion::createLambertConicConformal_2SP( + PropertyMap(), Angle(46.5), Angle(3), Angle(.0000000000000001), + Angle(.0000000000000002), Length(700000), Length(6600000)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto targetConv = projCRS->derivingConversion()->convertToOtherMethod( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP); + EXPECT_FALSE(targetConv != nullptr); +} + +// --------------------------------------------------------------------------- + +TEST(operation, lcc2sp_to_lcc1sp_invalid_eccentricity) { + auto projCRS = ProjectedCRS::create( + PropertyMap(), geographicCRSInvalidEccentricity(), + Conversion::createLambertConicConformal_2SP( + PropertyMap(), Angle(46.5), Angle(3), Angle(44), Angle(49), + Length(700000), Length(6600000)), + CartesianCS::createEastingNorthing(UnitOfMeasure::METRE)); + auto targetConv = projCRS->derivingConversion()->convertToOtherMethod( + EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP); + EXPECT_FALSE(targetConv != nullptr); +} diff --git a/test/unit/test_util.cpp b/test/unit/test_util.cpp new file mode 100644 index 00000000..67c7da52 --- /dev/null +++ b/test/unit/test_util.cpp @@ -0,0 +1,63 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: Test ISO19111:2018 implementation + * Author: Even Rouault <even dot rouault at spatialys dot com> + * + ****************************************************************************** + * Copyright (c) 2018, Even Rouault <even dot rouault at spatialys dot 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. + ****************************************************************************/ + +#include "gtest_include.h" + +#include "proj/util.hpp" + +#include <iostream> + +using namespace osgeo::proj::util; + +// --------------------------------------------------------------------------- + +TEST(util, NameFactory) { + LocalNameNNPtr localname(NameFactory::createLocalName(nullptr, "foo")); + auto ns = localname->scope(); + EXPECT_EQ(ns->isGlobal(), true); + EXPECT_EQ(ns->name()->toFullyQualifiedName()->toString(), "global"); + EXPECT_EQ(localname->toFullyQualifiedName()->toString(), "foo"); +} + +// --------------------------------------------------------------------------- + +TEST(util, NameFactory2) { + PropertyMap map; + map.set("separator", "/"); + NameSpaceNNPtr nsIn(NameFactory::createNameSpace( + NameFactory::createLocalName(nullptr, std::string("bar")), map)); + LocalNameNNPtr localname( + NameFactory::createLocalName(nsIn, std::string("foo"))); + auto ns = localname->scope(); + EXPECT_EQ(ns->isGlobal(), false); + auto fullyqualifiedNS = ns->name()->toFullyQualifiedName(); + EXPECT_EQ(fullyqualifiedNS->toString(), "bar"); + EXPECT_EQ(fullyqualifiedNS->scope()->isGlobal(), true); + EXPECT_EQ(fullyqualifiedNS->scope()->name()->scope()->isGlobal(), true); + EXPECT_EQ(localname->toFullyQualifiedName()->toString(), "bar/foo"); +} diff --git a/travis/after_success.sh b/travis/after_success.sh index 8a230693..2ae34bc8 100755 --- a/travis/after_success.sh +++ b/travis/after_success.sh @@ -2,8 +2,12 @@ set -e -# coveralls falsely reports .c-files in the build directories as having 100% coverage so we exclude them -coveralls --extension .c --exclude build_autoconf --exclude build_cmake + +if [ "$BUILD_NAME" != "linux_clang" ]; then + # coveralls falsely reports .c-files in the build directories as having 100% coverage so we exclude them + coveralls --extension .c --exclude build_autoconf --exclude build_cmake +fi + echo "$TRAVIS_SECURE_ENV_VARS" ./travis/build_docs.sh # Only build and publish docs when changes are made on most recent maintenance branch diff --git a/travis/csa/before_install.sh b/travis/csa/before_install.sh index b8c7260b..d93d8bec 100755 --- a/travis/csa/before_install.sh +++ b/travis/csa/before_install.sh @@ -4,5 +4,8 @@ set -e ./travis/before_install.sh +sudo apt-get update -qq +sudo apt-get install -qq sqlite3 libsqlite3-dev + wget http://releases.llvm.org/6.0.0/clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz tar xJf clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz diff --git a/travis/install.sh b/travis/install.sh index 98072d8a..6931986c 100755 --- a/travis/install.sh +++ b/travis/install.sh @@ -59,11 +59,16 @@ make install find /tmp/proj_autoconf_install_grids cd .. -# autoconf build with grids and coverage -if [ $TRAVIS_OS_NAME == "osx" ]; then - CFLAGS="--coverage" ./configure; +# There's an issue with the clang on Travis + coverage + cpp code +if [ "$BUILD_NAME" != "linux_clang" ]; then + # autoconf build with grids and coverage + if [ $TRAVIS_OS_NAME == "osx" ]; then + CFLAGS="--coverage" CXXFLAGS="--coverage" ./configure; + else + CFLAGS="$CFLAGS --coverage" CXXFLAGS="$CXXCFLAGS --coverage" LDFLAGS="$LDFLAGS -lgcov" ./configure; + fi else - CFLAGS="--coverage" LDFLAGS="-lgcov" ./configure; + ./configure fi make -j3 make check @@ -72,4 +77,6 @@ make check rm -v data/egm96_15.gtx make check -mv src/.libs/*.gc* src +if [ "$BUILD_NAME" != "linux_clang" ]; then + mv src/.libs/*.gc* src +fi diff --git a/travis/linux_clang/before_install.sh b/travis/linux_clang/before_install.sh index f6e21076..bd544710 100755 --- a/travis/linux_clang/before_install.sh +++ b/travis/linux_clang/before_install.sh @@ -3,4 +3,6 @@ set -e ./travis/before_install.sh -# do nothing + +sudo apt-get update -qq +sudo apt-get install -qq sqlite3 libsqlite3-dev
\ No newline at end of file diff --git a/travis/linux_clang/install.sh b/travis/linux_clang/install.sh index a2ad9337..f4b1ad12 100755 --- a/travis/linux_clang/install.sh +++ b/travis/linux_clang/install.sh @@ -4,4 +4,5 @@ set -e export CCACHE_CPP2=yes -CC="ccache clang" CXX="ccache clang++" CFLAGS="-std=c89 -Werror -fsanitize=address" CXXFLAGS="-Werror -fsanitize=address" LDFLAGS="-fsanitize=address" ./travis/install.sh +# -fno-use-cxa-atexit is needed to build with -coverage +CC="ccache clang" CXX="ccache clang++" CFLAGS="-Werror -fsanitize=address -fno-use-cxa-atexit" CXXFLAGS="-Werror -fsanitize=address -fno-use-cxa-atexit" LDFLAGS="-fsanitize=address" ./travis/install.sh diff --git a/travis/linux_gcc/before_install.sh b/travis/linux_gcc/before_install.sh index 6946fbd0..06213515 100755 --- a/travis/linux_gcc/before_install.sh +++ b/travis/linux_gcc/before_install.sh @@ -7,8 +7,11 @@ set -e sudo apt-get update -qq sudo apt-get install -y cppcheck sudo apt-get install -qq lcov +sudo apt-get install -qq doxygen graphviz +sudo apt-get install -qq sqlite3 libsqlite3-dev scripts/cppcheck.sh +scripts/doxygen.sh pip install --user sphinxcontrib-bibtex pip install --user cpp-coveralls diff --git a/travis/mingw32/before_install.sh b/travis/mingw32/before_install.sh index d335bb3a..d2bbe3ec 100755 --- a/travis/mingw32/before_install.sh +++ b/travis/mingw32/before_install.sh @@ -5,9 +5,11 @@ set -e ./travis/before_install.sh sudo apt-get update -qq +sudo apt-get install wget sudo apt-get install binutils-mingw-w64-x86-64 sudo apt-get install gcc-mingw-w64-x86-64 sudo apt-get install g++-mingw-w64-x86-64 sudo apt-get install g++-mingw-w64 sudo apt-get install mingw-w64-tools sudo apt-get install -y wine1.4-amd64 +sudo apt-get install sqlite3
\ No newline at end of file diff --git a/travis/mingw32/install.sh b/travis/mingw32/install.sh index 8abc98ac..6d388156 100755 --- a/travis/mingw32/install.sh +++ b/travis/mingw32/install.sh @@ -4,17 +4,30 @@ set -e export CCACHE_CPP2=yes +# prepare wine environment +wine64 cmd /c dir +ln -s /usr/lib/gcc/x86_64-w64-mingw32/4.8/libstdc++-6.dll $HOME/.wine/drive_c/windows +ln -s /usr/lib/gcc/x86_64-w64-mingw32/4.8/libgcc_s_sjlj-1.dll $HOME/.wine/drive_c/windows +ln -s /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll $HOME/.wine/drive_c/windows + +# build sqlite3 +wget https://sqlite.org/2018/sqlite-autoconf-3250100.tar.gz +tar xzf sqlite-autoconf-3250100.tar.gz +(cd sqlite-autoconf-3250100 && CC="ccache x86_64-w64-mingw32-gcc" CXX="ccache x86_64-w64-mingw32-g++" LD=x86_64-w64-mingw32-ld ./configure --host=x86_64-w64-mingw32 --prefix=/tmp/proj_autoconf_install && make -j3 && make install) +ln -s /tmp/proj_autoconf_install/bin/libsqlite3-0.dll $HOME/.wine/drive_c/windows + # prepare build files ./autogen.sh # autoconf build mkdir build_autoconf cd build_autoconf -CC="ccache x86_64-w64-mingw32-gcc" CXX="ccache x86_64-w64-mingw32-g++" LD=x86_64-w64-mingw32-ld ../configure --host=x86_64-w64-mingw32 --prefix=/tmp/proj_autoconf_install +CC="ccache x86_64-w64-mingw32-gcc" CXX="ccache x86_64-w64-mingw32-g++" LD=x86_64-w64-mingw32-ld ../configure --host=x86_64-w64-mingw32 --with-sqlite3_include=/tmp/proj_autoconf_install/include --with-sqlite3_ldflags="-L/tmp/proj_autoconf_install/lib -lsqlite3" --prefix=/tmp/proj_autoconf_install make -j3 make install make dist-all find /tmp/proj_autoconf_install #make check +test/unit/test_cpp_api.exe cd .. # Now with grids wget http://download.osgeo.org/proj/proj-datumgrid-1.5.zip @@ -24,7 +37,7 @@ cd .. # autoconf build with grids mkdir build_autoconf_grids cd build_autoconf_grids -CC="ccache x86_64-w64-mingw32-gcc" CXX="ccache x86_64-w64-mingw32-g++" LD=x86_64-w64-mingw32-ld ../configure --host=x86_64-w64-mingw32 --prefix=/tmp/proj_autoconf_install_nad +CC="ccache x86_64-w64-mingw32-gcc" CXX="ccache x86_64-w64-mingw32-g++" LD=x86_64-w64-mingw32-ld ../configure --host=x86_64-w64-mingw32 --with-sqlite3_include=/tmp/proj_autoconf_install/include --with-sqlite3_ldflags="-L/tmp/proj_autoconf_install/lib -lsqlite3" --prefix=/tmp/proj_autoconf_install_nad make -j3 make install find /tmp/proj_autoconf_install_nad diff --git a/travis/osx/before_install.sh b/travis/osx/before_install.sh index 17c0e141..3e9d8d46 100755 --- a/travis/osx/before_install.sh +++ b/travis/osx/before_install.sh @@ -6,3 +6,10 @@ set -e brew update brew install ccache +brew install sqlite3 +brew install doxygen + +export PATH=$HOME/Library/Python/2.7/bin:$PATH +pip install --user sphinx sphinx-rtd-theme sphinxcontrib-bibtex breathe +which sphinx-build +(cd docs; make html) |
